Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 720aed0

Browse files
committed
TST: Add tests for FT2Font attributes
1 parent 2c3cae2 commit 720aed0

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

lib/matplotlib/tests/test_ft2font.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,102 @@ def test_ft2image_draw_rect_filled():
2929
assert np.sum(a) == 255 * filled
3030

3131

32+
def test_ft2font_dejavu_attrs():
33+
file = fm.findfont('DejaVu Sans')
34+
font = ft2font.FT2Font(file)
35+
assert font.fname == file
36+
# Names extracted from FontForge: Font Information → PS Names tab.
37+
assert font.postscript_name == 'DejaVuSans'
38+
assert font.family_name == 'DejaVu Sans'
39+
assert font.style_name == 'Book'
40+
assert font.num_faces == 1 # Single TTF.
41+
assert font.num_glyphs == 6241 # From compact encoding view in FontForge.
42+
assert font.num_fixed_sizes == 0 # All glyphs are scalable.
43+
assert font.num_charmaps == 5
44+
# Other internal flags are set, so only check the ones we're allowed to test.
45+
expected_flags = (ft2font.SCALABLE | ft2font.SFNT | ft2font.HORIZONTAL |
46+
ft2font.KERNING | ft2font.GLYPH_NAMES)
47+
assert (font.face_flags & expected_flags) == expected_flags
48+
assert font.style_flags == 0 # Not italic or bold.
49+
assert font.scalable
50+
# From FontForge: Font Information → General tab → entry name below.
51+
assert font.units_per_EM == 2048 # Em Size.
52+
assert font.underline_position == -175 # Underline position.
53+
assert font.underline_thickness == 90 # Underline height.
54+
# From FontForge: Font Information → OS/2 tab → Metrics tab → entry name below.
55+
assert font.ascender == 1901 # HHead Ascent.
56+
assert font.descender == -483 # HHead Descent.
57+
# Unconfirmed values.
58+
assert font.height == 2384
59+
assert font.max_advance_width == 3838
60+
assert font.max_advance_height == 2384
61+
assert font.bbox == (-2090, -948, 3673, 2524)
62+
63+
64+
def test_ft2font_cm_attrs():
65+
file = fm.findfont('cmtt10')
66+
font = ft2font.FT2Font(file)
67+
assert font.fname == file
68+
# Names extracted from FontForge: Font Information → PS Names tab.
69+
assert font.postscript_name == 'Cmtt10'
70+
assert font.family_name == 'cmtt10'
71+
assert font.style_name == 'Regular'
72+
assert font.num_faces == 1 # Single TTF.
73+
assert font.num_glyphs == 133 # From compact encoding view in FontForge.
74+
assert font.num_fixed_sizes == 0 # All glyphs are scalable.
75+
assert font.num_charmaps == 2
76+
# Other internal flags are set, so only check the ones we're allowed to test.
77+
expected_flags = (ft2font.SCALABLE | ft2font.SFNT | ft2font.HORIZONTAL |
78+
ft2font.GLYPH_NAMES)
79+
assert (font.face_flags & expected_flags) == expected_flags, font.face_flags
80+
assert font.style_flags == 0 # Not italic or bold.
81+
assert font.scalable
82+
# From FontForge: Font Information → General tab → entry name below.
83+
assert font.units_per_EM == 2048 # Em Size.
84+
assert font.underline_position == -143 # Underline position.
85+
assert font.underline_thickness == 20 # Underline height.
86+
# From FontForge: Font Information → OS/2 tab → Metrics tab → entry name below.
87+
assert font.ascender == 1276 # HHead Ascent.
88+
assert font.descender == -489 # HHead Descent.
89+
# Unconfirmed values.
90+
assert font.height == 1765
91+
assert font.max_advance_width == 1536
92+
assert font.max_advance_height == 1765
93+
assert font.bbox == (-12, -477, 1280, 1430)
94+
95+
96+
def test_ft2font_stix_bold_attrs():
97+
file = fm.findfont('STIXSizeTwoSym:bold')
98+
font = ft2font.FT2Font(file)
99+
assert font.fname == file
100+
# Names extracted from FontForge: Font Information → PS Names tab.
101+
assert font.postscript_name == 'STIXSizeTwoSym-Bold'
102+
assert font.family_name == 'STIXSizeTwoSym'
103+
assert font.style_name == 'Bold'
104+
assert font.num_faces == 1 # Single TTF.
105+
assert font.num_glyphs == 20 # From compact encoding view in FontForge.
106+
assert font.num_fixed_sizes == 0 # All glyphs are scalable.
107+
assert font.num_charmaps == 3
108+
# Other internal flags are set, so only check the ones we're allowed to test.
109+
expected_flags = (ft2font.SCALABLE | ft2font.SFNT | ft2font.HORIZONTAL |
110+
ft2font.GLYPH_NAMES)
111+
assert (font.face_flags & expected_flags) == expected_flags, font.face_flags
112+
assert font.style_flags == ft2font.BOLD
113+
assert font.scalable
114+
# From FontForge: Font Information → General tab → entry name below.
115+
assert font.units_per_EM == 1000 # Em Size.
116+
assert font.underline_position == -133 # Underline position.
117+
assert font.underline_thickness == 20 # Underline height.
118+
# From FontForge: Font Information → OS/2 tab → Metrics tab → entry name below.
119+
assert font.ascender == 2095 # HHead Ascent.
120+
assert font.descender == -404 # HHead Descent.
121+
# Unconfirmed values.
122+
assert font.height == 2499
123+
assert font.max_advance_width == 1130
124+
assert font.max_advance_height == 2499
125+
assert font.bbox == (4, -355, 1185, 2095)
126+
127+
32128
def test_fallback_errors():
33129
file_name = fm.findfont('DejaVu Sans')
34130

0 commit comments

Comments
 (0)