From 9a5361e8e318c8107458e32057d2a1b18112c45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 26 Oct 2014 15:40:57 +0100 Subject: [PATCH] font style add character fix --- .../decompiler/flash/tags/DefineFont2Tag.java | 2 +- .../decompiler/flash/tags/DefineFont3Tag.java | 2 +- .../jpexs/decompiler/flash/tags/DefineFontTag.java | 2 +- .../flash/tags/gfx/DefineCompactedFont.java | 4 ++-- .../flash/types/shaperecords/SHAPERECORD.java | 14 +++++++------- 5 files changed, 12 insertions(+), 12 deletions(-) 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 c6af468fd..8225cee0c 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 @@ -377,7 +377,7 @@ public class DefineFont2Tag extends FontTag { public void addCharacter(char character, Font font) { int fontStyle = getFontStyle(); - SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, fontStyle, (int) Math.round(getDivider() * 1024), character); + SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, (int) Math.round(getDivider() * 1024), character); int code = (int) character; int pos = -1; 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 9e6bff510..f05b6dd9b 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 @@ -376,7 +376,7 @@ public class DefineFont3Tag extends FontTag { } } int fontStyle = getFontStyle(); - SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, fontStyle, (int) Math.round(getDivider() * 1024), character); + SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, (int) Math.round(getDivider() * 1024), character); int code = (int) character; int pos = -1; boolean exists = false; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java index 941b0dca6..51edd0906 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java @@ -267,7 +267,7 @@ public class DefineFontTag extends FontTag { @Override public void addCharacter(char character, Font font) { - SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, getFontStyle(), (int) Math.round(getDivider() * 1024), character); + SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(font, (int) Math.round(getDivider() * 1024), character); List codeTable = new ArrayList<>(); ensureFontInfo(); if (fontInfoTag != null) { 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 850a2e07f..289bf73ed 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 @@ -148,8 +148,8 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { int fontStyle = getFontStyle(); FontType font = fonts.get(0); - double d = 1; //1024/font.nominalSize; - SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(cfont, fontStyle, (int) (font.nominalSize * d), character); + double d = 1; + SHAPE shp = SHAPERECORD.fontCharacterToSHAPE(cfont, (int) (font.nominalSize * d), character); int code = (int) character; int pos = -1; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java index a2cd0494c..e591c29a3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/shaperecords/SHAPERECORD.java @@ -225,26 +225,26 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali public abstract boolean isMove(); - public static List systemFontCharactersToSHAPES(String fontName, int fontStyle, int fontSize, String characters) { + public static List systemFontCharactersToSHAPES(Font font, int fontSize, String characters) { List ret = new ArrayList<>(); for (int i = 0; i < characters.length(); i++) { - ret.add(systemFontCharacterToSHAPE(fontName, fontStyle, fontSize, characters.charAt(i))); + ret.add(systemFontCharacterToSHAPE(font, fontSize, characters.charAt(i))); } return ret; } - public static SHAPE systemFontCharacterToSHAPE(final String fontName, final int fontStyle, int fontSize, char character) { - return fontCharacterToSHAPE(new Font(FontTag.getFontNameWithFallback(fontName), Font.PLAIN, 10), fontStyle, fontSize, character); + public static SHAPE systemFontCharacterToSHAPE(Font font, int fontSize, char character) { + return fontCharacterToSHAPE(font,fontSize, character); } - public static SHAPE fontCharacterToSHAPE(final Font font, final int fontStyle, int fontSize, char character) { + public static SHAPE fontCharacterToSHAPE(final Font font, float fontSize, char character) { int multiplier = 1; if (fontSize > 1024) { - multiplier = fontSize / 1024; + multiplier = (int)(fontSize / 1024); fontSize = 1024; } List retList = new ArrayList<>(); - Font f = font.deriveFont(fontStyle, fontSize); + Font f = font.deriveFont(fontSize); GlyphVector v = f.createGlyphVector((new JPanel()).getFontMetrics(f).getFontRenderContext(), "" + character); Shape shp = v.getOutline(); double[] points = new double[6];