Merge pull request #1797 from anthrotype/fix-split-mark-base-pos
splitMarkBasePos should update MarkRecord.Class values after splitting
This commit is contained in:
commit
be1aba59b0
@ -1415,6 +1415,7 @@ def splitMarkBasePos(oldSubTable, newSubTable, overflowRecord):
|
|||||||
oldMarkCoverage.append(glyphName)
|
oldMarkCoverage.append(glyphName)
|
||||||
oldMarkRecords.append(markRecord)
|
oldMarkRecords.append(markRecord)
|
||||||
else:
|
else:
|
||||||
|
markRecord.Class -= oldClassCount
|
||||||
newMarkCoverage.append(glyphName)
|
newMarkCoverage.append(glyphName)
|
||||||
newMarkRecords.append(markRecord)
|
newMarkRecords.append(markRecord)
|
||||||
|
|
||||||
|
@ -605,20 +605,87 @@ def test_splitMarkBasePos():
|
|||||||
ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
|
ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
|
||||||
|
|
||||||
assert ok
|
assert ok
|
||||||
assert oldSubTable.Format == newSubTable.Format
|
|
||||||
assert oldSubTable.MarkCoverage.glyphs == [
|
assert getXML(oldSubTable.toXML) == [
|
||||||
"acutecomb", "gravecomb"
|
'<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__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user