mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-04 15:14:49 +00:00
Font editing - font name, ascent, descent, leading
DefineCompactedFont (GFX) kerning import
This commit is contained in:
@@ -658,4 +658,30 @@ public class DefineFont2Tag extends FontTag {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFontNameIntag(String name) {
|
||||
fontName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFontNameInTagEditable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAscentEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDescentEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeadingEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -675,4 +675,29 @@ public class DefineFont3Tag extends FontTag {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFontNameIntag(String name) {
|
||||
fontName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFontNameInTagEditable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAscentEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDescentEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeadingEditable() {
|
||||
return hasLayout();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,4 +395,30 @@ public class DefineFontTag extends FontTag {
|
||||
public void setHasLayout(boolean hasLayout) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFontNameIntag(String name) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFontNameInTagEditable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAscentEditable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDescentEditable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeadingEditable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -85,6 +85,8 @@ public abstract class FontTag extends DrawableTag implements AloneTag {
|
||||
|
||||
public abstract String getFontNameIntag();
|
||||
|
||||
public abstract void setFontNameIntag(String name);
|
||||
|
||||
public abstract boolean isSmall();
|
||||
|
||||
public abstract boolean isBold();
|
||||
@@ -97,6 +99,14 @@ public abstract class FontTag extends DrawableTag implements AloneTag {
|
||||
|
||||
public abstract boolean isItalicEditable();
|
||||
|
||||
public abstract boolean isFontNameInTagEditable();
|
||||
|
||||
public abstract boolean isAscentEditable();
|
||||
|
||||
public abstract boolean isDescentEditable();
|
||||
|
||||
public abstract boolean isLeadingEditable();
|
||||
|
||||
public abstract void setSmall(boolean value);
|
||||
|
||||
public abstract void setBold(boolean value);
|
||||
|
||||
@@ -129,14 +129,7 @@ public final class DefineCompactedFont extends FontTag {
|
||||
|
||||
@Override
|
||||
public String getFontNameIntag() {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
for (int i = 0; i < fonts.size(); i++) {
|
||||
if (i > 0) {
|
||||
ret.append(", ");
|
||||
}
|
||||
ret.append(fonts.get(i).fontName);
|
||||
}
|
||||
return ret.toString();
|
||||
return fonts.get(0).fontName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -194,6 +187,33 @@ public final class DefineCompactedFont extends FontTag {
|
||||
shapeCache.set(pos, font.glyphs.get(pos).toSHAPE());
|
||||
}
|
||||
|
||||
for (int k = 0; k < font.kerning.size(); k++) {
|
||||
if (font.kerning.get(k).char1 == character
|
||||
|| font.kerning.get(k).char2 == character) {
|
||||
font.kerning.remove(k);
|
||||
k--;
|
||||
}
|
||||
}
|
||||
List<FontHelper.KerningPair> kerning = getFontKerningPairs(cfont, (int) (getDivider() * 1024));
|
||||
for (FontHelper.KerningPair pair : kerning) {
|
||||
if (pair.char1 != character && pair.char2 != character) {
|
||||
continue;
|
||||
}
|
||||
int glyph1 = charToGlyph(pair.char1);
|
||||
if (pair.char1 == character) {
|
||||
|
||||
} else if (glyph1 == -1) {
|
||||
continue;
|
||||
}
|
||||
int glyph2 = charToGlyph(pair.char2);
|
||||
if (pair.char2 == character) {
|
||||
|
||||
} else if (glyph2 == -1) {
|
||||
continue;
|
||||
}
|
||||
font.kerning.add(new KerningPairType(pair.char1, pair.char2, pair.kerning));
|
||||
}
|
||||
|
||||
setModified(true);
|
||||
getSwf().clearImageCache();
|
||||
}
|
||||
@@ -222,6 +242,15 @@ public final class DefineCompactedFont extends FontTag {
|
||||
font.glyphInfo.remove(pos);
|
||||
font.glyphs.remove(pos);
|
||||
shapeCache.remove(pos);
|
||||
|
||||
for (int k = 0; k < font.kerning.size(); k++) {
|
||||
if (font.kerning.get(k).char1 == character
|
||||
|| font.kerning.get(k).char2 == character) {
|
||||
font.kerning.remove(k);
|
||||
k--;
|
||||
}
|
||||
}
|
||||
|
||||
shiftGlyphIndices(fontId, pos + 1, false);
|
||||
|
||||
setModified(true);
|
||||
@@ -475,4 +504,29 @@ public final class DefineCompactedFont extends FontTag {
|
||||
@Override
|
||||
public void setHasLayout(boolean hasLayout) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFontNameIntag(String name) {
|
||||
fonts.get(0).fontName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFontNameInTagEditable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAscentEditable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDescentEditable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeadingEditable() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user