From 8db15debbdb79540314e4052c22911338a7355a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Thu, 4 Jul 2013 20:22:28 +0200 Subject: [PATCH] Issue #198 Fixed DefineFont2Tag on zero numGlyphs --- .../decompiler/flash/tags/DefineFont2Tag.java | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java index aa4c32f0c..2bf0f7b07 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java @@ -120,19 +120,21 @@ public class DefineFont2Tag extends CharacterTag implements FontTag { } byte ba3[] = baos3.toByteArray(); sos.write(ba2); - long offset = ba2.length + ba3.length; - if (fontFlagsWideOffsets) { - sos.writeUI32(offset + 4); - } else { - sos.writeUI16((int) (offset + 2)); - } - sos.write(ba3); - - for (int i = 0; i < numGlyphs; i++) { - if (fontFlagsWideCodes) { - sos.writeUI16(codeTable.get(i)); + if (numGlyphs > 0) { + long offset = ba2.length + ba3.length; + if (fontFlagsWideOffsets) { + sos.writeUI32(offset + 4); } else { - sos.writeUI8(codeTable.get(i)); + sos.writeUI16((int) (offset + 2)); + } + sos.write(ba3); + + for (int i = 0; i < numGlyphs; i++) { + if (fontFlagsWideCodes) { + sos.writeUI16(codeTable.get(i)); + } else { + sos.writeUI8(codeTable.get(i)); + } } } if (fontFlagsHasLayout) { @@ -187,11 +189,13 @@ public class DefineFont2Tag extends CharacterTag implements FontTag { offsetTable[i] = sis.readUI16(); } } - long codeTableOffset; - if (fontFlagsWideOffsets) { - codeTableOffset = sis.readUI32(); - } else { - codeTableOffset = sis.readUI16(); + long codeTableOffset = 0; + if (numGlyphs > 0) { + if (fontFlagsWideOffsets) { + codeTableOffset = sis.readUI32(); + } else { + codeTableOffset = sis.readUI16(); + } } glyphShapeTable = new SHAPE[numGlyphs];