Showing
2 changed files
with
14 additions
and
3 deletions
@@ -417,9 +417,12 @@ class TtfParser { | @@ -417,9 +417,12 @@ class TtfParser { | ||
417 | } | 417 | } |
418 | 418 | ||
419 | TtfGlyphInfo _readCompoundGlyph(int glyph, int start, int offset) { | 419 | TtfGlyphInfo _readCompoundGlyph(int glyph, int start, int offset) { |
420 | - const ARG_1_AND_2_ARE_WORDS = 1; | ||
421 | - const MORE_COMPONENTS = 32; | ||
422 | - const WE_HAVE_INSTRUCTIONS = 256; | 420 | + const ARG_1_AND_2_ARE_WORDS = 0x0001; |
421 | + const HAS_SCALE = 0x008; | ||
422 | + const MORE_COMPONENTS = 0x0020; | ||
423 | + const HAS_X_Y_SCALE = 0x0040; | ||
424 | + const HAS_TRANFORMATION_MATRIX = 0x0080; | ||
425 | + const WE_HAVE_INSTRUCTIONS = 0x0100; | ||
423 | 426 | ||
424 | final components = <int>[]; | 427 | final components = <int>[]; |
425 | var hasInstructions = false; | 428 | var hasInstructions = false; |
@@ -429,6 +432,13 @@ class TtfParser { | @@ -429,6 +432,13 @@ class TtfParser { | ||
429 | flags = bytes.getUint16(offset); | 432 | flags = bytes.getUint16(offset); |
430 | final glyphIndex = bytes.getUint16(offset + 2); | 433 | final glyphIndex = bytes.getUint16(offset + 2); |
431 | offset += (flags & ARG_1_AND_2_ARE_WORDS != 0) ? 8 : 6; | 434 | offset += (flags & ARG_1_AND_2_ARE_WORDS != 0) ? 8 : 6; |
435 | + if (flags & HAS_SCALE != 0) { | ||
436 | + offset += 2; | ||
437 | + } else if (flags & HAS_X_Y_SCALE != 0) { | ||
438 | + offset += 4; | ||
439 | + } else if (flags & HAS_TRANFORMATION_MATRIX != 0) { | ||
440 | + offset += 8; | ||
441 | + } | ||
432 | 442 | ||
433 | components.add(glyphIndex); | 443 | components.add(glyphIndex); |
434 | if (flags & WE_HAVE_INSTRUCTIONS != 0) { | 444 | if (flags & WE_HAVE_INSTRUCTIONS != 0) { |
-
Please register or login to post a comment