fonttools/Tests/ttLib/tables/T_S_I__0_test.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

106 lines
2.7 KiB
Python
Raw Permalink Normal View History

from types import SimpleNamespace
from fontTools.misc.textTools import deHexStr
from fontTools.misc.testTools import getXML
from fontTools.ttLib.tables.T_S_I__0 import table_T_S_I__0
import pytest
# (gid, length, offset) for glyph programs
TSI0_INDICES = [(0, 1, 0), (1, 5, 1), (2, 0, 1), (3, 0, 1), (4, 8, 6)]
# (type, length, offset) for 'extra' programs
TSI0_EXTRA_INDICES = [
(0xFFFA, 2, 14), # ppgm
(0xFFFB, 4, 16), # cvt
(0xFFFC, 6, 20), # reserved
(0xFFFD, 10, 26),
] # fpgm
# compiled TSI0 table from data above
TSI0_DATA = deHexStr(
"0000 0001 00000000"
"0001 0005 00000001"
"0002 0000 00000001"
"0003 0000 00000001"
"0004 0008 00000006"
"FFFE 0000 ABFC1F34" # 'magic' separates glyph from extra programs
"FFFA 0002 0000000E"
"FFFB 0004 00000010"
"FFFC 0006 00000014"
"FFFD 000A 0000001A"
)
# empty font has no glyph programs but 4 extra programs are always present
EMPTY_TSI0_EXTRA_INDICES = [
(0xFFFA, 0, 0),
(0xFFFB, 0, 0),
(0xFFFC, 0, 0),
(0xFFFD, 0, 0),
]
EMPTY_TSI0_DATA = deHexStr(
"FFFE 0000 ABFC1F34"
"FFFA 0000 00000000"
"FFFB 0000 00000000"
"FFFC 0000 00000000"
"FFFD 0000 00000000"
)
@pytest.fixture
def table():
return table_T_S_I__0()
@pytest.mark.parametrize(
"numGlyphs, data, expected_indices, expected_extra_indices",
[
(5, TSI0_DATA, TSI0_INDICES, TSI0_EXTRA_INDICES),
(0, EMPTY_TSI0_DATA, [], EMPTY_TSI0_EXTRA_INDICES),
],
ids=["simple", "empty"],
)
def test_decompile(table, numGlyphs, data, expected_indices, expected_extra_indices):
font = {"maxp": SimpleNamespace(numGlyphs=numGlyphs)}
table.decompile(data, font)
assert len(table.indices) == numGlyphs
assert table.indices == expected_indices
assert len(table.extra_indices) == 4
assert table.extra_indices == expected_extra_indices
@pytest.mark.parametrize(
"numGlyphs, indices, extra_indices, expected_data",
[
(5, TSI0_INDICES, TSI0_EXTRA_INDICES, TSI0_DATA),
(0, [], EMPTY_TSI0_EXTRA_INDICES, EMPTY_TSI0_DATA),
],
ids=["simple", "empty"],
)
def test_compile(table, numGlyphs, indices, extra_indices, expected_data):
assert table.compile(ttFont=None) == b""
table.set(indices, extra_indices)
data = table.compile(ttFont=None)
assert data == expected_data
def test_set(table):
table.set(TSI0_INDICES, TSI0_EXTRA_INDICES)
assert table.indices == TSI0_INDICES
assert table.extra_indices == TSI0_EXTRA_INDICES
def test_toXML(table):
assert getXML(table.toXML, ttFont=None) == [
"<!-- This table will be calculated by the compiler -->"
]
if __name__ == "__main__":
import sys
2022-12-13 11:26:36 +00:00
sys.exit(pytest.main(sys.argv))