Merge pull request #1797 from anthrotype/fix-split-mark-base-pos

splitMarkBasePos should update MarkRecord.Class values after splitting
This commit is contained in:
Cosimo Lupo 2020-01-07 15:02:05 +00:00 committed by GitHub
commit be1aba59b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 81 additions and 13 deletions

View File

@ -1415,6 +1415,7 @@ def splitMarkBasePos(oldSubTable, newSubTable, overflowRecord):
oldMarkCoverage.append(glyphName)
oldMarkRecords.append(markRecord)
else:
markRecord.Class -= oldClassCount
newMarkCoverage.append(glyphName)
newMarkRecords.append(markRecord)

View File

@ -605,20 +605,87 @@ def test_splitMarkBasePos():
ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
assert ok
assert oldSubTable.Format == newSubTable.Format
assert oldSubTable.MarkCoverage.glyphs == [
"acutecomb", "gravecomb"
assert getXML(oldSubTable.toXML) == [
'<MarkBasePos Format="1">',
' <MarkCoverage Format="1">',
' <Glyph value="acutecomb"/>',
' <Glyph value="gravecomb"/>',
' </MarkCoverage>',
' <BaseCoverage Format="1">',
' <Glyph value="a"/>',
' <Glyph value="c"/>',
' </BaseCoverage>',
' <!-- ClassCount=1 -->',
' <MarkArray>',
' <!-- MarkCount=2 -->',
' <MarkRecord index="0">',
' <Class value="0"/>',
' <MarkAnchor Format="1">',
' <XCoordinate value="0"/>',
' <YCoordinate value="600"/>',
' </MarkAnchor>',
' </MarkRecord>',
' <MarkRecord index="1">',
' <Class value="0"/>',
' <MarkAnchor Format="1">',
' <XCoordinate value="0"/>',
' <YCoordinate value="590"/>',
' </MarkAnchor>',
' </MarkRecord>',
' </MarkArray>',
' <BaseArray>',
' <!-- BaseCount=2 -->',
' <BaseRecord index="0">',
' <BaseAnchor index="0" Format="1">',
' <XCoordinate value="350"/>',
' <YCoordinate value="500"/>',
' </BaseAnchor>',
' </BaseRecord>',
' <BaseRecord index="1">',
' <BaseAnchor index="0" Format="1">',
' <XCoordinate value="300"/>',
' <YCoordinate value="700"/>',
' </BaseAnchor>',
' </BaseRecord>',
' </BaseArray>',
'</MarkBasePos>',
]
assert getXML(newSubTable.toXML) == [
'<MarkBasePos Format="1">',
' <MarkCoverage Format="1">',
' <Glyph value="cedillacomb"/>',
' </MarkCoverage>',
' <BaseCoverage Format="1">',
' <Glyph value="a"/>',
' <Glyph value="c"/>',
' </BaseCoverage>',
' <!-- ClassCount=1 -->',
' <MarkArray>',
' <!-- MarkCount=1 -->',
' <MarkRecord index="0">',
' <Class value="0"/>',
' <MarkAnchor Format="1">',
' <XCoordinate value="0"/>',
' <YCoordinate value="0"/>',
' </MarkAnchor>',
' </MarkRecord>',
' </MarkArray>',
' <BaseArray>',
' <!-- BaseCount=2 -->',
' <BaseRecord index="0">',
' <BaseAnchor index="0" empty="1"/>',
' </BaseRecord>',
' <BaseRecord index="1">',
' <BaseAnchor index="0" Format="1">',
' <XCoordinate value="300"/>',
' <YCoordinate value="0"/>',
' </BaseAnchor>',
' </BaseRecord>',
' </BaseArray>',
'</MarkBasePos>',
]
assert newSubTable.MarkCoverage.glyphs == ["cedillacomb"]
assert newSubTable.MarkCoverage.Format == 1
assert oldSubTable.BaseCoverage.glyphs == newSubTable.BaseCoverage.glyphs
assert newSubTable.BaseCoverage.Format == 1
assert oldSubTable.ClassCount == newSubTable.ClassCount == 1
assert oldSubTable.MarkArray.MarkCount == 2
assert newSubTable.MarkArray.MarkCount == 1
assert oldSubTable.BaseArray.BaseCount == newSubTable.BaseArray.BaseCount
assert newSubTable.BaseArray.BaseRecord[0].BaseAnchor[0] is None
assert newSubTable.BaseArray.BaseRecord[1].BaseAnchor[0] == buildAnchor(300, 0)
if __name__ == "__main__":