diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java index 675cfc99f..c6af468fd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java @@ -84,7 +84,7 @@ public class DefineFont2Tag extends FontTag { @Conditional("fontFlagsHasLayout") public List fontBoundsTable; - public KERNINGRECORD[] fontKerningTable; + public List fontKerningTable; public static final int ID = 48; @Override @@ -179,9 +179,9 @@ public class DefineFont2Tag extends FontTag { for (int i = 0; i < numGlyphs; i++) { sos.writeRECT(fontBoundsTable.get(i)); } - sos.writeUI16(fontKerningTable.length); - for (int k = 0; k < fontKerningTable.length; k++) { - sos.writeKERNINGRECORD(fontKerningTable[k], fontFlagsWideCodes); + sos.writeUI16(fontKerningTable.size()); + for (int k = 0; k < fontKerningTable.size(); k++) { + sos.writeKERNINGRECORD(fontKerningTable.get(k), fontFlagsWideCodes); } } @@ -263,9 +263,9 @@ public class DefineFont2Tag extends FontTag { fontBoundsTable.add(sis.readRECT("rect")); } int kerningCount = sis.readUI16("kerningCount"); - fontKerningTable = new KERNINGRECORD[kerningCount]; + fontKerningTable = new ArrayList(); for (int i = 0; i < kerningCount; i++) { - fontKerningTable[i] = sis.readKERNINGRECORD(fontFlagsWideCodes, "record"); + fontKerningTable.add(sis.readKERNINGRECORD(fontFlagsWideCodes, "record")); } } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java index 5f1ba4f71..9e6bff510 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java @@ -78,7 +78,7 @@ public class DefineFont3Tag extends FontTag { public List fontAdvanceTable; public List fontBoundsTable; - public KERNINGRECORD[] fontKerningTable; + public List fontKerningTable; public static final int ID = 75; @Override @@ -168,9 +168,9 @@ public class DefineFont3Tag extends FontTag { fontBoundsTable.add(sis.readRECT("rect")); } int kerningCount = sis.readUI16("kerningCount"); - fontKerningTable = new KERNINGRECORD[kerningCount]; + fontKerningTable = new ArrayList(); for (int i = 0; i < kerningCount; i++) { - fontKerningTable[i] = sis.readKERNINGRECORD(fontFlagsWideCodes, "record"); + fontKerningTable.add(sis.readKERNINGRECORD(fontFlagsWideCodes, "record")); } } } @@ -256,9 +256,9 @@ public class DefineFont3Tag extends FontTag { for (int i = 0; i < numGlyphs; i++) { sos.writeRECT(fontBoundsTable.get(i)); } - sos.writeUI16(fontKerningTable.length); - for (int k = 0; k < fontKerningTable.length; k++) { - sos.writeKERNINGRECORD(fontKerningTable[k], fontFlagsWideCodes); + sos.writeUI16(fontKerningTable.size()); + for (int k = 0; k < fontKerningTable.size(); k++) { + sos.writeKERNINGRECORD(fontKerningTable.get(k), fontFlagsWideCodes); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java index 8c4b4cc26..3af72df65 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java @@ -395,7 +395,7 @@ public class DefineTextTag extends TextTag { if (nextChar != null) { kerningAdjustment = font.getGlyphKerningAdjustment(tr.glyphEntries[i].glyphIndex, font.charToGlyph(nextChar)); } - advance = (int) Math.round(((double) textHeight * (font.getGlyphAdvance(tr.glyphEntries[i].glyphIndex + kerningAdjustment))) / (font.getDivider() * 1024.0)); + advance = (int) Math.round(((double) textHeight * (font.getGlyphAdvance(tr.glyphEntries[i].glyphIndex) + kerningAdjustment)) / (font.getDivider() * 1024.0)); } else { advance = (int) Math.round(SWF.unitDivisor * FontTag.getSystemFontAdvance(fontName, font.getFontStyle(), (int) (textHeight / SWF.unitDivisor), c, nextChar)); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java index b8a895610..df118cd19 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/FontTag.java @@ -368,5 +368,5 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable public FontTag toClassicFont() { return this; - } + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java index fb573d9af..850a2e07f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java @@ -205,7 +205,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { @Override public double getGlyphAdvance(int glyphIndex) { - return fonts.get(0).glyphInfo.get(glyphIndex).advanceX; + return resize(fonts.get(0).glyphInfo.get(glyphIndex).advanceX); } @Override @@ -214,7 +214,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { int char2 = glyphToChar(nextGlyphIndex); for (KerningPairType kp : fonts.get(0).kerning) { if (kp.char1 == char1 && kp.char2 == char2) { - return kp.advance; + return resize(kp.advance); } } return 0; @@ -222,7 +222,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { @Override public int getGlyphWidth(int glyphIndex) { - return getGlyphShapeTable().get(glyphIndex).getBounds().getWidth(); + return resize(getGlyphShapeTable().get(glyphIndex).getBounds().getWidth()); } @Override @@ -382,14 +382,16 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { } ret.fontName = getFontNameIntag(); ret.languageCode = new LANGCODE(1); - ret.fontKerningTable = new KERNINGRECORD[0];/*new KERNINGRECORD[ft.kerning.size()]; - for(int i=0;i(); + + FontType ft = fonts.get(0); + for (int i = 0; i < ft.kerning.size(); i++) { + KERNINGRECORD kr = new KERNINGRECORD(); + kr.fontKerningAdjustment = resize(ft.kerning.get(i).advance); + kr.fontKerningCode1 = ft.kerning.get(i).char1; + kr.fontKerningCode2 = ft.kerning.get(i).char2; + ret.fontKerningTable.add(kr); + } return ret; } catch (IOException ex) { @@ -397,4 +399,11 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { } return null; } + + @Override + public boolean hasLayout() { + return true; + } + + }