mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-16 02:09:09 +00:00
kerning fixes / improvements
This commit is contained in:
@@ -84,7 +84,7 @@ public class DefineFont2Tag extends FontTag {
|
||||
@Conditional("fontFlagsHasLayout")
|
||||
public List<RECT> fontBoundsTable;
|
||||
|
||||
public KERNINGRECORD[] fontKerningTable;
|
||||
public List<KERNINGRECORD> 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<KERNINGRECORD>();
|
||||
for (int i = 0; i < kerningCount; i++) {
|
||||
fontKerningTable[i] = sis.readKERNINGRECORD(fontFlagsWideCodes, "record");
|
||||
fontKerningTable.add(sis.readKERNINGRECORD(fontFlagsWideCodes, "record"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public class DefineFont3Tag extends FontTag {
|
||||
|
||||
public List<Integer> fontAdvanceTable;
|
||||
public List<RECT> fontBoundsTable;
|
||||
public KERNINGRECORD[] fontKerningTable;
|
||||
public List<KERNINGRECORD> 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<KERNINGRECORD>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -368,5 +368,5 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable
|
||||
|
||||
public FontTag toClassicFont() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<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[i] = kr;
|
||||
}*/
|
||||
ret.fontKerningTable = new ArrayList<>();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user