equal
deleted
inserted
replaced
49 } |
49 } |
50 |
50 |
51 return 0xFFFF; |
51 return 0xFFFF; |
52 } |
52 } |
53 |
53 |
54 le_int32 MarkToMarkPositioningSubtable::process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const |
54 le_int32 MarkToMarkPositioningSubtable::process(const LETableReference &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const |
55 { |
55 { |
56 LEGlyphID markGlyph = glyphIterator->getCurrGlyphID(); |
56 LEGlyphID markGlyph = glyphIterator->getCurrGlyphID(); |
57 le_int32 markCoverage = getGlyphCoverage((LEGlyphID) markGlyph); |
57 le_int32 markCoverage = getGlyphCoverage(base, (LEGlyphID) markGlyph, success); |
58 |
58 |
59 if (markCoverage < 0) { |
59 if (markCoverage < 0) { |
60 // markGlyph isn't a covered mark glyph |
60 // markGlyph isn't a covered mark glyph |
61 return 0; |
61 return 0; |
62 } |
62 } |
72 return 0; |
72 return 0; |
73 } |
73 } |
74 |
74 |
75 GlyphIterator mark2Iterator(*glyphIterator); |
75 GlyphIterator mark2Iterator(*glyphIterator); |
76 LEGlyphID mark2Glyph = findMark2Glyph(&mark2Iterator); |
76 LEGlyphID mark2Glyph = findMark2Glyph(&mark2Iterator); |
77 le_int32 mark2Coverage = getBaseCoverage((LEGlyphID) mark2Glyph); |
77 le_int32 mark2Coverage = getBaseCoverage(base, (LEGlyphID) mark2Glyph, success); |
78 const Mark2Array *mark2Array = (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset)); |
78 const Mark2Array *mark2Array = (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset)); |
79 le_uint16 mark2Count = SWAPW(mark2Array->mark2RecordCount); |
79 le_uint16 mark2Count = SWAPW(mark2Array->mark2RecordCount); |
80 |
80 |
81 if (mark2Coverage < 0 || mark2Coverage >= mark2Count) { |
81 if (mark2Coverage < 0 || mark2Coverage >= mark2Count) { |
82 // The mark2 glyph isn't covered, or the coverage |
82 // The mark2 glyph isn't covered, or the coverage |