From 4fe999bd47679e8f73a16f22a44828b267ccd537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 17 Mar 2024 22:06:24 +0100 Subject: [PATCH] Fixed #2211 PDF export, Font export - glyphs with no contours (advance only) --- CHANGELOG.md | 2 ++ lib/gnujpdf.jar | Bin 211845 -> 211845 bytes lib/ttf.jar | Bin 745625 -> 745556 bytes libsrc/ffdec_lib/lib/gnujpdf.jar | Bin 211845 -> 211845 bytes libsrc/ffdec_lib/lib/ttf.jar | Bin 745625 -> 745556 bytes .../flash/exporters/DualPdfGraphics2D.java | 7 ++----- .../org/doubletype/ossa/module/GlyphFile.java | 6 ++---- .../doubletype/ossa/module/TypefaceFile.java | 7 ++++++- .../doubletype/ossa/truetype/PostWriter.java | 2 +- 9 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8ad111a9..4f5758e06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ All notable changes to this project will be documented in this file. - [#2207] AS - Index -2 out of bounds for some of the switches - [#2190] AS1/2 - for..in inside switch before break - Raw edit of fonts - shape table was not visible +- [#2211] PDF export, Font export - glyphs with no contours (advance only) ### Changed - [#2185] MochiCrypt no longer offered for auto decrypt, user needs to choose variant from "Use unpacker" menu @@ -3396,6 +3397,7 @@ Major version of SWF to XML export changed to 2. [#2203]: https://www.free-decompiler.com/flash/issues/2203 [#2207]: https://www.free-decompiler.com/flash/issues/2207 [#2190]: https://www.free-decompiler.com/flash/issues/2190 +[#2211]: https://www.free-decompiler.com/flash/issues/2211 [#2206]: https://www.free-decompiler.com/flash/issues/2206 [#2100]: https://www.free-decompiler.com/flash/issues/2100 [#2123]: https://www.free-decompiler.com/flash/issues/2123 diff --git a/lib/gnujpdf.jar b/lib/gnujpdf.jar index 093be79f3cfd7bee069f2212cd21c0332cda8954..ec095f311ff8d5f9ba595ad0a0d9e0787481314e 100644 GIT binary patch delta 408 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 0) { - drawText(x, y, trans, textColor, existingFonts, font, text.toString(), textHeight, pdfGraphics); - } - drawText(x + deltaX, y, trans, textColor, existingFonts, font, "" + currentChar, textHeight, pdfGraphics); - + text.append(currentChar); + drawText(x, y, trans, textColor, existingFonts, font, text.toString(), textHeight, pdfGraphics); text = new StringBuilder(); x = x + deltaX + entry.glyphAdvance; deltaX = 0; diff --git a/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java b/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java index 5271989dc..dd5b69a33 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java +++ b/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java @@ -267,14 +267,12 @@ public class GlyphFile { public TTGlyph toSimpleGlyph() { // convert the file into array of contours EContour[] contours = toContours(); - if ((contours == null) && (!isRequiredGlyph())) { - return null; - } - + TTGlyph retval = new TTGlyph(); retval.setSimple(true); retval.setAdvanceWidth(getAdvanceWidth()); + //JPEXS if (contours == null) { return retval; } diff --git a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java index cdf30fa66..31d4d0e13 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java +++ b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java @@ -474,13 +474,18 @@ public class TypefaceFile extends GlyphFile { glyph = createCompoundGlyph(a_glyphFile, a_writer); } - if (glyph == null && a_glyphFile.isWhiteSpace()) { + /*if (glyph == null && a_glyphFile.isWhiteSpace()) { glyph = new TTGlyph(); } if (glyph == null) { return; + }*/ + //JPEXS + if (glyph == null) { + glyph = new TTGlyph(); } + int glyphIndex = a_writer.addGlyph(glyph); long unicode = a_glyphFile.getUnicode(); diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java index e7eee79ab..1eb98ba25 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/PostWriter.java @@ -49,7 +49,7 @@ public class PostWriter extends FontFormatWriter { public void write() throws IOException { // table version number - writeFixed32(1.0); + writeFixed32(3.0); //JPEXS - 3.0 = no postscript table set writeFixed32(10.0); // italic angle writeFWord(0); // underline pos writeFWord(60); // underline thickness