1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
from gftools.instancer import gen_static_font
from fontTools.ttLib import TTFont
import pytest
import os
TEST_DATA = os.path.join("data", "test")
@pytest.fixture
def var_font():
"""VF family consisting of a single font with two axes, wdth, wght"""
return TTFont(os.path.join(TEST_DATA, "Inconsolata[wdth,wght].ttf"))
def _name_record(ttFont, nameID):
nametable = ttFont["name"]
record = nametable.getName(nameID, 3, 1, 0x409)
if record:
return record.toUnicode()
return None
def test_gen_static_font(var_font):
static_font = gen_static_font(var_font, {"wght": 600, "wdth": 75})
assert _name_record(static_font, 1) == "Inconsolata Condensed SemiBold"
assert _name_record(static_font, 2) == "Regular"
assert _name_record(static_font, 16) == "Inconsolata Condensed"
assert _name_record(static_font, 17) == "SemiBold"
assert static_font["OS/2"].usWeightClass == 600
assert static_font["OS/2"].usWidthClass == 5
assert static_font["OS/2"].fsSelection & (1 << 6)
assert static_font["head"].macStyle == 0
def test_gen_static_font_custom_names(var_font):
static_font = gen_static_font(var_font, {"wght": 900}, "Custom Family", "Black")
assert _name_record(static_font, 1) == "Custom Family Black"
assert _name_record(static_font, 2) == "Regular"
assert _name_record(static_font, 16) == "Custom Family"
assert _name_record(static_font, 17) == "Black"
def test_gen_static_font_custom_names_without_declaring_wght(var_font):
static_font = gen_static_font(
var_font, {"wght": 900}, "Custom Family", "8pt SemiCondensed"
)
assert _name_record(static_font, 1) == "Custom Family 8pt SemiCondensed"
assert _name_record(static_font, 2) == "Regular"
assert _name_record(static_font, 16) == None
assert _name_record(static_font, 17) == None
def test_gen_static_font_custom_names_ribbi(var_font):
static_font = gen_static_font(
var_font, {"wght": 900}, "Custom Family", "8pt SemiCondensed Bold Italic"
)
assert _name_record(static_font, 1) == "Custom Family 8pt SemiCondensed"
assert _name_record(static_font, 2) == "Bold Italic"
assert _name_record(static_font, 16) == None
assert _name_record(static_font, 17) == None
def test_gen_static_font_custom_names_non_ribbi(var_font):
static_font = gen_static_font(
var_font, {"wght": 900}, "Custom Family", "8pt SemiCondensed Medium"
)
assert _name_record(static_font, 1) == "Custom Family 8pt SemiCondensed Medium"
assert _name_record(static_font, 2) == "Regular"
assert _name_record(static_font, 16) == "Custom Family 8pt SemiCondensed"
assert _name_record(static_font, 17) == "Medium"
|