aboutsummaryrefslogtreecommitdiff
path: root/Tests/ttLib/tables/otTables_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ttLib/tables/otTables_test.py')
-rw-r--r--Tests/ttLib/tables/otTables_test.py254
1 files changed, 112 insertions, 142 deletions
diff --git a/Tests/ttLib/tables/otTables_test.py b/Tests/ttLib/tables/otTables_test.py
index 3f74b7a9..9202aa55 100644
--- a/Tests/ttLib/tables/otTables_test.py
+++ b/Tests/ttLib/tables/otTables_test.py
@@ -1,4 +1,4 @@
-from fontTools.misc.testTools import getXML, parseXML, parseXmlInto, FakeFont
+from fontTools.misc.testTools import getXML, parseXML, FakeFont
from fontTools.misc.textTools import deHexStr, hexStr
from fontTools.misc.xmlWriter import XMLWriter
from fontTools.ttLib.tables.otBase import OTTableReader, OTTableWriter
@@ -512,11 +512,8 @@ class InsertionMorphActionTest(unittest.TestCase):
for name, attrs, content in parseXML(self.MORPH_ACTION_XML):
a.fromXML(name, attrs, content, self.font)
writer = OTTableWriter()
- a.compile(
- writer,
- self.font,
- actionIndex={('B', 'C'): 9, ('B', 'A', 'D'): 7},
- )
+ a.compile(writer, self.font,
+ actionIndex={('B', 'C'): 9, ('B', 'A', 'D'): 7})
self.assertEqual(hexStr(writer.getAllData()), "1234fc4300090007")
def testCompileActions_empty(self):
@@ -554,11 +551,13 @@ class SplitMultipleSubstTest:
from fontTools.ttLib.tables.otBase import OverflowErrorRecord
oldSubTable = buildMultipleSubstSubtable({'e': 1, 'a': 2, 'b': 3, 'c': 4, 'd': 5})
+ oldSubTable.Format = 1
newSubTable = otTables.MultipleSubst()
ok = otTables.splitMultipleSubst(oldSubTable, newSubTable, OverflowErrorRecord((None, None, None, itemName, itemRecord)))
assert ok
+ assert oldSubTable.Format == newSubTable.Format
return oldSubTable.mapping, newSubTable.mapping
def test_Coverage(self):
@@ -578,142 +577,113 @@ class SplitMultipleSubstTest:
def test_splitMarkBasePos():
- from fontTools.otlLib.builder import buildAnchor, buildMarkBasePosSubtable
-
- marks = {
- "acutecomb": (0, buildAnchor(0, 600)),
- "gravecomb": (0, buildAnchor(0, 590)),
- "cedillacomb": (1, buildAnchor(0, 0)),
- }
- bases = {
- "a": {
- 0: buildAnchor(350, 500),
- 1: None,
- },
- "c": {
- 0: buildAnchor(300, 700),
- 1: buildAnchor(300, 0),
- },
- }
- glyphOrder = ["a", "c", "acutecomb", "gravecomb", "cedillacomb"]
- glyphMap = {g: i for i, g in enumerate(glyphOrder)}
-
- oldSubTable = buildMarkBasePosSubtable(marks, bases, glyphMap)
- newSubTable = otTables.MarkBasePos()
-
- ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
-
- assert ok
-
- assert getXML(oldSubTable.toXML) == [
- '<MarkBasePos Format="1">',
- ' <MarkCoverage>',
- ' <Glyph value="acutecomb"/>',
- ' <Glyph value="gravecomb"/>',
- ' </MarkCoverage>',
- ' <BaseCoverage>',
- ' <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>',
- ' <Glyph value="cedillacomb"/>',
- ' </MarkCoverage>',
- ' <BaseCoverage>',
- ' <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>',
- ]
-
-
-class ColrV1Test(unittest.TestCase):
- def setUp(self):
- self.font = FakeFont(['.notdef', 'meh'])
-
- def test_traverseEmptyPaintColrLayersNeedsNoLayerList(self):
- colr = parseXmlInto(
- self.font,
- otTables.COLR(),
- '''
- <Version value="1"/>
- <BaseGlyphList>
- <BaseGlyphPaintRecord index="0">
- <BaseGlyph value="meh"/>
- <Paint Format="1"><!-- PaintColrLayers -->
- <NumLayers value="0"/>
- <FirstLayerIndex value="42"/>
- </Paint>
- </BaseGlyphPaintRecord>
- </BaseGlyphList>
- ''',
- )
- paint = colr.BaseGlyphList.BaseGlyphPaintRecord[0].Paint
-
- # Just want to confirm we don't crash
- visited = []
- paint.traverse(colr, lambda p: visited.append(p))
- assert len(visited) == 1
+ from fontTools.otlLib.builder import buildAnchor, buildMarkBasePosSubtable
+
+ marks = {
+ "acutecomb": (0, buildAnchor(0, 600)),
+ "gravecomb": (0, buildAnchor(0, 590)),
+ "cedillacomb": (1, buildAnchor(0, 0)),
+ }
+ bases = {
+ "a": {
+ 0: buildAnchor(350, 500),
+ 1: None,
+ },
+ "c": {
+ 0: buildAnchor(300, 700),
+ 1: buildAnchor(300, 0),
+ },
+ }
+ glyphOrder = ["a", "c", "acutecomb", "gravecomb", "cedillacomb"]
+ glyphMap = {g: i for i, g in enumerate(glyphOrder)}
+
+ oldSubTable = buildMarkBasePosSubtable(marks, bases, glyphMap)
+ newSubTable = otTables.MarkBasePos()
+
+ ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
+
+ assert ok
+
+ assert getXML(oldSubTable.toXML) == [
+ '<MarkBasePos Format="1">',
+ ' <MarkCoverage>',
+ ' <Glyph value="acutecomb"/>',
+ ' <Glyph value="gravecomb"/>',
+ ' </MarkCoverage>',
+ ' <BaseCoverage>',
+ ' <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>',
+ ' <Glyph value="cedillacomb"/>',
+ ' </MarkCoverage>',
+ ' <BaseCoverage>',
+ ' <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>',
+ ]
if __name__ == "__main__":