From 0af8763efc773d11a1c63c1ab2001981ad6937f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 16 Feb 2026 08:21:50 +0100 Subject: [PATCH] Added: TTF export - setting italic / bold flags in the font Fixed: #2632 TTF export - non-zero italic angle --- CHANGELOG.md | 3 ++ lib/ttf.jar | Bin 140325 -> 142030 bytes libsrc/ffdec_lib/lib/ttf.jar | Bin 140325 -> 142030 bytes .../flash/exporters/FontExporter.java | 7 ++++ libsrc/ttf/nbproject/project.properties | 8 +++-- libsrc/ttf/src/fontastic/Fontastic.java | 10 ++++++ .../doubletype/ossa/module/TypefaceFile.java | 17 +++++++++ .../ossa/truetype/FontFileWriter.java | 34 +++++++++++++++++- .../doubletype/ossa/truetype/HeadWriter.java | 14 +++++++- .../doubletype/ossa/truetype/HheaWriter.java | 7 ++-- .../doubletype/ossa/truetype/OS2Writer.java | 14 ++++++++ .../doubletype/ossa/truetype/PostWriter.java | 2 +- 12 files changed, 107 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36bcabc2a..d6c61a8bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,11 @@ All notable changes to this project will be documented in this file. ### Added - [#1209], [#1850], [#2619] Debugging SWF in the web browser (Debug listening capability - only for SWFs previously prepared by FFDec) +- TTF export - setting italic / bold flags in the font ### Fixed - Metadata formatting +- [#2632] TTF export - non-zero italic angle ## [25.0.0] - 2026-02-10 ### Added @@ -4119,6 +4121,7 @@ Major version of SWF to XML export changed to 2. [#1209]: https://www.free-decompiler.com/flash/issues/1209 [#1850]: https://www.free-decompiler.com/flash/issues/1850 [#2619]: https://www.free-decompiler.com/flash/issues/2619 +[#2632]: https://www.free-decompiler.com/flash/issues/2632 [#2610]: https://www.free-decompiler.com/flash/issues/2610 [#2603]: https://www.free-decompiler.com/flash/issues/2603 [#2626]: https://www.free-decompiler.com/flash/issues/2626 diff --git a/lib/ttf.jar b/lib/ttf.jar index 81ac3e4efd138834207360f7c433e6671fdd211e..93c24c3a00a5588d24e3cf198bc86e4c421d0db1 100644 GIT binary patch delta 25589 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 delta 23780 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 diff --git a/libsrc/ffdec_lib/lib/ttf.jar b/libsrc/ffdec_lib/lib/ttf.jar index 81ac3e4efd138834207360f7c433e6671fdd211e..93c24c3a00a5588d24e3cf198bc86e4c421d0db1 100644 GIT binary patch delta 25589 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 delta 23780 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 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java index adfd878f0..3595cab50 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java @@ -209,6 +209,13 @@ public class FontExporter { value = Math.min(value, 1024); f.setDescender(value); } + + if (ft.isBold()) { + f.setBold(true); + } + if (ft.isItalic()) { + f.setItalic(true); + } List reallyExportedGlyphs = new ArrayList<>(); Set processedCharacters = new HashSet<>(); diff --git a/libsrc/ttf/nbproject/project.properties b/libsrc/ttf/nbproject/project.properties index 84837aad0..ab1765eae 100644 --- a/libsrc/ttf/nbproject/project.properties +++ b/libsrc/ttf/nbproject/project.properties @@ -39,12 +39,13 @@ javac.classpath= # Space-separated list of extra javac options javac.compilerargs=-Xlint:unchecked -Xlint:deprecation javac.deprecation=false +javac.external.vm=false javac.modulepath= javac.processormodulepath= javac.processorpath=\ ${javac.classpath} -javac.source=1.7 -javac.target=1.7 +javac.source=1.8 +javac.target=1.8 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir} @@ -55,6 +56,7 @@ javac.test.processorpath=\ javadoc.additionalparam= javadoc.author=false javadoc.encoding=${source.encoding} +javadoc.html5=false javadoc.noindex=false javadoc.nonavbar=false javadoc.notree=false @@ -63,6 +65,8 @@ javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= +jlink.launcher=false +jlink.launcher.name=ttf main.class=fontatest.FontaTest manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF diff --git a/libsrc/ttf/src/fontastic/Fontastic.java b/libsrc/ttf/src/fontastic/Fontastic.java index 59f6d236b..745a6915f 100644 --- a/libsrc/ttf/src/fontastic/Fontastic.java +++ b/libsrc/ttf/src/fontastic/Fontastic.java @@ -291,6 +291,16 @@ public class Fontastic { e.printStackTrace(); } } + + //JPEXS + public void setBold(boolean bold) { + m_engine.getTypeface().setBold(bold); + } + + //JPEXS + public void setItalic(boolean italic) { + m_engine.getTypeface().setItalic(italic); + } public void setAscender(float ascender) { try { diff --git a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java index 31d4d0e13..77a6f3bf9 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java +++ b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java @@ -97,6 +97,12 @@ public class TypefaceFile extends GlyphFile { private Double m_bottomSideBearing = null; private String m_name; + + //JPEXS + private boolean bold = false; + + //JPEXS + private boolean italic = false; public TypefaceFile(String a_name, File a_dir) throws FileNotFoundException { super(a_dir); @@ -115,6 +121,16 @@ public class TypefaceFile extends GlyphFile { initFileName(); } + //JPEXS + public void setBold(boolean bold) { + this.bold = bold; + } + + //JPEXS + public void setItalic(boolean italic) { + this.italic = italic; + } + private void initFileName() { String fileName = m_name + k_dotTtf; @@ -397,6 +413,7 @@ public class TypefaceFile extends GlyphFile { writer.setXHeight((int) getXHeight()); writer.setDescent((int) getDescender()); writer.setLineGap((int) (getTopSideBearing() + getBottomSideBearing())); + writer.setFontStyle(bold, italic); loadCodePages(writer); loadUnicodeRanges(writer); diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java index 2b6e41a2d..0c5335f8e 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java @@ -246,7 +246,7 @@ public class FontFileWriter extends FontFormatWriter { } public long getCharacterMapping(long a_unicode) { - return m_cmap.getGlyfIndex(new Long(a_unicode)); + return m_cmap.getGlyfIndex(a_unicode); } /** @@ -308,4 +308,36 @@ public class FontFileWriter extends FontFormatWriter { = (int) Math.floor(Math.log(a_value) / Math.log(2)); return retval; } + + //JPEXS + public void setFontStyle(boolean bold, boolean italic) { + int fsSelection = 0; + if (!bold && !italic) { + fsSelection = m_os2.k_regular; + } else { + if (bold) { + fsSelection |= m_os2.k_bold; + } + if (italic) { + fsSelection |= m_os2.k_italic; + } + } + m_os2.setFsSelection(fsSelection); + + if (bold) { + m_os2.setUsWeightClass(m_os2.FW_BOLD); + } else { + m_os2.setUsWeightClass(m_os2.FW_NORMAL); + } + + int macStyle = 0; + if (bold) { + macStyle |= HeadWriter.k_bold; + } + if (italic) { + macStyle |= HeadWriter.k_italic; + } + + m_head.setMacStyle(macStyle); + } } diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java index 2f18831ae..89255e9f8 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java @@ -66,6 +66,11 @@ public class HeadWriter extends FontFormatWriter { static public final int k_indicRearrangement = 0x400; + //JPEXS + static public final int k_bold = 0x01; + //JPEXS + static public final int k_italic = 0x02; + private final long k_magicNumber = 0x5f0f3cf5; private long m_checkSumAdjustment = 0; @@ -77,6 +82,8 @@ public class HeadWriter extends FontFormatWriter { private Date m_creationDate = new Date(); private Date m_modificationDate = m_creationDate; + + private int m_macStyle = 0; //JPEXS public HeadWriter() { super(); @@ -122,6 +129,11 @@ public class HeadWriter extends FontFormatWriter { m_modificationDate = a_date; } + //JPEXS + public void setMacStyle(int macStyle) { + this.m_macStyle = macStyle; + } + public void write() throws IOException { // table version number writeFixed32(1.0); @@ -151,7 +163,7 @@ public class HeadWriter extends FontFormatWriter { writeFWord(m_max.y); // macStyle - writeUInt16(0); + writeUInt16(m_macStyle); // lowestRecPPEM writeUInt16(11); diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/HheaWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/HheaWriter.java index 9b96b71e5..ee92378bb 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/HheaWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/HheaWriter.java @@ -88,10 +88,9 @@ public class HheaWriter extends FontFormatWriter { int xMaxExtent = m_head.getMax().x - m_head.getMin().x; writeFWord(xMaxExtent); - // caratSlopeRise - writeInt16(1); - writeInt16(0); - + writeInt16(1); // caretSlopeRise + writeInt16(0); //caretSlopeRun + // reserved for (int i = 0; i < 5; i++) { writeInt16(0); diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/OS2Writer.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/OS2Writer.java index a1f7e3c20..5944b49dd 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/OS2Writer.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/OS2Writer.java @@ -70,6 +70,10 @@ public class OS2Writer extends FontFormatWriter { final int k_latin1Supplement = 0x0002; + final int k_italic = 0x01; + + final int k_bold = 0x20; + final int k_regular = 0x40; final int k_basicLatinStart = 0x0020; @@ -220,6 +224,16 @@ public class OS2Writer extends FontFormatWriter { } // switch } + //JPEXS + public void setFsSelection(int fsSelection) { + this.m_fsSelection = fsSelection; + } + + //JPEXS + public void setUsWeightClass(int usWeightClass) { + this.m_usWeightClass = usWeightClass; + } + public void write() throws IOException { m_usWinAscent = m_head.getMax().y; m_usWinDescent = 0; diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java index 1eb98ba25..2952c3525 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java @@ -50,7 +50,7 @@ public class PostWriter extends FontFormatWriter { public void write() throws IOException { // table version number writeFixed32(3.0); //JPEXS - 3.0 = no postscript table set - writeFixed32(10.0); // italic angle + writeFixed32(0.0);//JPEXS - original was 10.0 // italic angle writeFWord(0); // underline pos writeFWord(60); // underline thickness