| 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() |