xref: /aosp_15_r20/external/fonttools/Tests/tfmLib/tfmLib_test.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughesimport glob
2*e1fe3e4aSElliott Hughesimport os
3*e1fe3e4aSElliott Hughes
4*e1fe3e4aSElliott Hughesimport pytest
5*e1fe3e4aSElliott Hughes
6*e1fe3e4aSElliott Hughesfrom fontTools import tfmLib
7*e1fe3e4aSElliott Hughes
8*e1fe3e4aSElliott HughesDATA_DIR = os.path.join(os.path.dirname(__file__), "data")
9*e1fe3e4aSElliott Hughes
10*e1fe3e4aSElliott Hughes
11*e1fe3e4aSElliott Hughes@pytest.mark.parametrize("path", glob.glob(f"{DATA_DIR}/cm*.tfm"))
12*e1fe3e4aSElliott Hughesdef test_read(path):
13*e1fe3e4aSElliott Hughes    tfm = tfmLib.TFM(path)
14*e1fe3e4aSElliott Hughes    assert tfm.designsize == 10.0
15*e1fe3e4aSElliott Hughes    assert tfm.fontdimens
16*e1fe3e4aSElliott Hughes    assert len(tfm.fontdimens) >= 7
17*e1fe3e4aSElliott Hughes    assert tfm.extraheader == {}
18*e1fe3e4aSElliott Hughes    assert tfm.right_boundary_char is None
19*e1fe3e4aSElliott Hughes    assert tfm.left_boundary_char is None
20*e1fe3e4aSElliott Hughes    assert len(tfm.chars) == 128
21*e1fe3e4aSElliott Hughes
22*e1fe3e4aSElliott Hughes
23*e1fe3e4aSElliott Hughesdef test_read_boundary_char():
24*e1fe3e4aSElliott Hughes    path = os.path.join(DATA_DIR, "dummy-space.tfm")
25*e1fe3e4aSElliott Hughes    tfm = tfmLib.TFM(path)
26*e1fe3e4aSElliott Hughes    assert tfm.right_boundary_char == 1
27*e1fe3e4aSElliott Hughes    assert tfm.left_boundary_char == 256
28*e1fe3e4aSElliott Hughes
29*e1fe3e4aSElliott Hughes
30*e1fe3e4aSElliott Hughesdef test_read_fontdimens_vanilla():
31*e1fe3e4aSElliott Hughes    path = os.path.join(DATA_DIR, "cmr10.tfm")
32*e1fe3e4aSElliott Hughes    tfm = tfmLib.TFM(path)
33*e1fe3e4aSElliott Hughes    assert tfm.fontdimens == {
34*e1fe3e4aSElliott Hughes        "SLANT": 0.0,
35*e1fe3e4aSElliott Hughes        "SPACE": 0.33333396911621094,
36*e1fe3e4aSElliott Hughes        "STRETCH": 0.16666698455810547,
37*e1fe3e4aSElliott Hughes        "SHRINK": 0.11111164093017578,
38*e1fe3e4aSElliott Hughes        "XHEIGHT": 0.4305553436279297,
39*e1fe3e4aSElliott Hughes        "QUAD": 1.0000028610229492,
40*e1fe3e4aSElliott Hughes        "EXTRASPACE": 0.11111164093017578,
41*e1fe3e4aSElliott Hughes    }
42*e1fe3e4aSElliott Hughes
43*e1fe3e4aSElliott Hughes
44*e1fe3e4aSElliott Hughesdef test_read_fontdimens_mathex():
45*e1fe3e4aSElliott Hughes    path = os.path.join(DATA_DIR, "cmex10.tfm")
46*e1fe3e4aSElliott Hughes    tfm = tfmLib.TFM(path)
47*e1fe3e4aSElliott Hughes    assert tfm.fontdimens == {
48*e1fe3e4aSElliott Hughes        "SLANT": 0.0,
49*e1fe3e4aSElliott Hughes        "SPACE": 0.0,
50*e1fe3e4aSElliott Hughes        "STRETCH": 0.0,
51*e1fe3e4aSElliott Hughes        "SHRINK": 0.0,
52*e1fe3e4aSElliott Hughes        "XHEIGHT": 0.4305553436279297,
53*e1fe3e4aSElliott Hughes        "QUAD": 1.0000028610229492,
54*e1fe3e4aSElliott Hughes        "EXTRASPACE": 0.0,
55*e1fe3e4aSElliott Hughes        "DEFAULTRULETHICKNESS": 0.03999900817871094,
56*e1fe3e4aSElliott Hughes        "BIGOPSPACING1": 0.11111164093017578,
57*e1fe3e4aSElliott Hughes        "BIGOPSPACING2": 0.16666698455810547,
58*e1fe3e4aSElliott Hughes        "BIGOPSPACING3": 0.19999980926513672,
59*e1fe3e4aSElliott Hughes        "BIGOPSPACING4": 0.6000003814697266,
60*e1fe3e4aSElliott Hughes        "BIGOPSPACING5": 0.10000038146972656,
61*e1fe3e4aSElliott Hughes    }
62*e1fe3e4aSElliott Hughes
63*e1fe3e4aSElliott Hughes
64*e1fe3e4aSElliott Hughesdef test_read_fontdimens_mathsy():
65*e1fe3e4aSElliott Hughes    path = os.path.join(DATA_DIR, "cmsy10.tfm")
66*e1fe3e4aSElliott Hughes    tfm = tfmLib.TFM(path)
67*e1fe3e4aSElliott Hughes    assert tfm.fontdimens == {
68*e1fe3e4aSElliott Hughes        "SLANT": 0.25,
69*e1fe3e4aSElliott Hughes        "SPACE": 0.0,
70*e1fe3e4aSElliott Hughes        "STRETCH": 0.0,
71*e1fe3e4aSElliott Hughes        "SHRINK": 0.0,
72*e1fe3e4aSElliott Hughes        "XHEIGHT": 0.4305553436279297,
73*e1fe3e4aSElliott Hughes        "QUAD": 1.0000028610229492,
74*e1fe3e4aSElliott Hughes        "EXTRASPACE": 0.0,
75*e1fe3e4aSElliott Hughes        "NUM1": 0.6765079498291016,
76*e1fe3e4aSElliott Hughes        "NUM2": 0.39373207092285156,
77*e1fe3e4aSElliott Hughes        "NUM3": 0.44373130798339844,
78*e1fe3e4aSElliott Hughes        "DENOM1": 0.6859512329101562,
79*e1fe3e4aSElliott Hughes        "DENOM2": 0.34484100341796875,
80*e1fe3e4aSElliott Hughes        "SUP1": 0.41289234161376953,
81*e1fe3e4aSElliott Hughes        "SUP2": 0.36289215087890625,
82*e1fe3e4aSElliott Hughes        "SUP3": 0.28888893127441406,
83*e1fe3e4aSElliott Hughes        "SUB1": 0.14999961853027344,
84*e1fe3e4aSElliott Hughes        "SUB2": 0.24721717834472656,
85*e1fe3e4aSElliott Hughes        "SUBDROP": 0.05000019073486328,
86*e1fe3e4aSElliott Hughes        "SUPDROP": 0.3861083984375,
87*e1fe3e4aSElliott Hughes        "DELIM1": 2.3899993896484375,
88*e1fe3e4aSElliott Hughes        "DELIM2": 1.010000228881836,
89*e1fe3e4aSElliott Hughes        "AXISHEIGHT": 0.25,
90*e1fe3e4aSElliott Hughes    }
91