From 1f3032334b676352ad5d6513448e45ae79c39a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 21 Oct 2024 17:58:06 +0200 Subject: [PATCH] Fixed: Text display - Alpha channel should not be supported for texts using device fonts --- CHANGELOG.md | 1 + .../src/com/jpexs/decompiler/flash/tags/base/TextTag.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6da35dafb..7c5a2b4b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. - [#2345] items smaller than 20 twips were not drawn - caused PDF problems - now ceil is used - [#2341] FLA export - DefineEditText - use its default text color on HTML enabled inputs - FLA export - DefineEditText default text color alpha +- Text display - Alpha channel should not be supported for texts using device fonts ## [21.1.1] - 2024-10-13 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java index b901f6d9a..9c8cb8747 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/TextTag.java @@ -621,7 +621,9 @@ public abstract class TextTag extends DrawableTag { double rat = textHeight / 1024.0 / divider; Matrix matScale = Matrix.getScaleInstance(rat); - Color textColor2 = new Color(textColor, true); + Color textColor2 = new Color(textColor, true); + Color textColor3 = textColor2; + Color noAlphaTextColor = new Color(textColor2.getRed(), textColor2.getGreen(), textColor2.getBlue()); for (GLYPHENTRY entry : rec.glyphEntries) { matScale.translateX = x; matScale.translateY = y; @@ -637,14 +639,16 @@ public abstract class TextTag extends DrawableTag { FontTag fnt = swf.getFontByName(dynamicEntry.fontFace); if (fnt != null && entry.glyphIndex != -1) { shape = fnt.getGlyphShapeTable().get(entry.glyphIndex); + textColor3 = textColor2; } else { shape = SHAPERECORD.fontCharacterToSHAPE(new Font(dynamicEntry.fontFace, dynamicEntry.fontStyle, 12), (int) Math.round(divider * 1024), dynamicEntry.character); + textColor3 = noAlphaTextColor; } } } if (shape != null) { - BitmapExporter.export(ShapeTag.WIND_EVEN_ODD, 1, swf, shape, textColor2, image, 1 /*FIXME??*/, mat, mat, colorTransform, true, false); + BitmapExporter.export(ShapeTag.WIND_EVEN_ODD, 1, swf, shape, textColor3, image, 1 /*FIXME??*/, mat, mat, colorTransform, true, false); if (SHAPERECORD.DRAW_BOUNDING_BOX) { RGB borderColor = new RGBA(Color.black); RGB fillColor = new RGBA(new Color(255, 255, 255, 0));