blob: d97f3c9476f1431737507311595ff7a88f2c46c8 [file] [log] [blame]
import subprocess
import sys
import tempfile
from pathlib import Path
from fontTools.ttLib import __main__, TTFont, TTCollection
import pytest
TEST_DATA = Path(__file__).parent / "data"
@pytest.fixture
def ttfont_path():
font = TTFont()
font.importXML(TEST_DATA / "TestTTF-Regular.ttx")
with tempfile.NamedTemporaryFile(suffix=".ttf", delete=False) as fp:
font_path = Path(fp.name)
font.save(font_path)
yield font_path
font_path.unlink()
@pytest.fixture
def ttcollection_path():
font1 = TTFont()
font1.importXML(TEST_DATA / "TestTTF-Regular.ttx")
font2 = TTFont()
font2.importXML(TEST_DATA / "TestTTF-Regular.ttx")
coll = TTCollection()
coll.fonts = [font1, font2]
with tempfile.NamedTemporaryFile(suffix=".ttf", delete=False) as fp:
collection_path = Path(fp.name)
coll.save(collection_path)
yield collection_path
collection_path.unlink()
@pytest.fixture(params=[None, "woff"])
def flavor(request):
return request.param
def test_ttLib_main_as_subprocess(ttfont_path):
subprocess.run(
[sys.executable, "-m", "fontTools.ttLib", str(ttfont_path)], check=True
)
def test_ttLib_open_ttfont(ttfont_path):
__main__.main([str(ttfont_path)])
def test_ttLib_open_save_ttfont(tmp_path, ttfont_path, flavor):
output_path = tmp_path / "TestTTF-Regular.ttf"
args = ["-o", str(output_path), str(ttfont_path)]
if flavor is not None:
args.extend(["--flavor", flavor])
__main__.main(args)
assert output_path.exists()
assert TTFont(output_path).getGlyphOrder() == TTFont(ttfont_path).getGlyphOrder()
def test_ttLib_open_ttcollection(ttcollection_path):
__main__.main(["-y", "0", str(ttcollection_path)])
def test_ttLib_open_ttcollection_save_single_font(tmp_path, ttcollection_path, flavor):
for i in range(2):
output_path = tmp_path / f"TestTTF-Regular#{i}.ttf"
args = ["-y", str(i), "-o", str(output_path), str(ttcollection_path)]
if flavor is not None:
args.extend(["--flavor", flavor])
__main__.main(args)
assert output_path.exists()
assert (
TTFont(output_path).getGlyphOrder()
== TTCollection(ttcollection_path)[i].getGlyphOrder()
)
def test_ttLib_open_ttcollection_save_ttcollection(tmp_path, ttcollection_path):
output_path = tmp_path / "TestTTF.ttc"
__main__.main(["-o", str(output_path), str(ttcollection_path)])
assert output_path.exists()
assert len(TTCollection(output_path)) == len(TTCollection(ttcollection_path))
def test_ttLib_open_multiple_fonts_save_ttcollection(tmp_path, ttfont_path):
output_path = tmp_path / "TestTTF.ttc"
__main__.main(["-o", str(output_path), str(ttfont_path), str(ttfont_path)])
assert output_path.exists()
coll = TTCollection(output_path)
assert len(coll) == 2
assert coll[0].getGlyphOrder() == coll[1].getGlyphOrder()