88 lines
2.4 KiB
Python
88 lines
2.4 KiB
Python
|
from fontTools.ttLib import TTFont
|
||
|
from io import StringIO, BytesIO
|
||
|
import pytest
|
||
|
import os
|
||
|
import unittest
|
||
|
|
||
|
CURR_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
|
||
|
DATA_DIR = os.path.join(CURR_DIR, "data")
|
||
|
|
||
|
|
||
|
class VarCompositeTest(unittest.TestCase):
|
||
|
def test_trim_varComposite_glyph(self):
|
||
|
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-ac00-ac01.ttf")
|
||
|
font = TTFont(font_path)
|
||
|
varc = font["VARC"]
|
||
|
|
||
|
assert varc.table.Coverage.glyphs == [
|
||
|
"uniAC00",
|
||
|
"uniAC01",
|
||
|
"glyph00003",
|
||
|
"glyph00004",
|
||
|
"glyph00005",
|
||
|
"glyph00006",
|
||
|
"glyph00007",
|
||
|
]
|
||
|
|
||
|
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-6868.ttf")
|
||
|
font = TTFont(font_path)
|
||
|
varc = font["VARC"]
|
||
|
|
||
|
assert varc.table.Coverage.glyphs == [
|
||
|
"uni6868",
|
||
|
"glyph00002",
|
||
|
"glyph00003",
|
||
|
"glyph00004",
|
||
|
]
|
||
|
|
||
|
def test_varComposite_basic(self):
|
||
|
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-ac00-ac01.ttf")
|
||
|
font = TTFont(font_path)
|
||
|
tables = [
|
||
|
table_tag
|
||
|
for table_tag in font.keys()
|
||
|
if table_tag not in {"head", "maxp", "hhea"}
|
||
|
]
|
||
|
xml = StringIO()
|
||
|
font.saveXML(xml)
|
||
|
xml1 = StringIO()
|
||
|
font.saveXML(xml1, tables=tables)
|
||
|
xml.seek(0)
|
||
|
font = TTFont()
|
||
|
font.importXML(xml)
|
||
|
ttf = BytesIO()
|
||
|
font.save(ttf)
|
||
|
ttf.seek(0)
|
||
|
font = TTFont(ttf)
|
||
|
xml2 = StringIO()
|
||
|
font.saveXML(xml2, tables=tables)
|
||
|
assert xml1.getvalue() == xml2.getvalue()
|
||
|
|
||
|
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-6868.ttf")
|
||
|
font = TTFont(font_path)
|
||
|
tables = [
|
||
|
table_tag
|
||
|
for table_tag in font.keys()
|
||
|
if table_tag not in {"head", "maxp", "hhea", "name", "fvar"}
|
||
|
]
|
||
|
xml = StringIO()
|
||
|
font.saveXML(xml)
|
||
|
xml1 = StringIO()
|
||
|
font.saveXML(xml1, tables=tables)
|
||
|
xml.seek(0)
|
||
|
font = TTFont()
|
||
|
font.importXML(xml)
|
||
|
ttf = BytesIO()
|
||
|
font.save(ttf)
|
||
|
ttf.seek(0)
|
||
|
font = TTFont(ttf)
|
||
|
xml2 = StringIO()
|
||
|
font.saveXML(xml2, tables=tables)
|
||
|
assert xml1.getvalue() == xml2.getvalue()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
import sys
|
||
|
|
||
|
sys.exit(unittest.main())
|