-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Expand file tree
/
Copy pathftface_props.py
More file actions
64 lines (56 loc) · 2.23 KB
/
ftface_props.py
File metadata and controls
64 lines (56 loc) · 2.23 KB
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
"""
===============
Font properties
===============
This example lists the attributes of an ``FT2Font`` object, which describe
global font properties. For individual character metrics, use the ``Glyph``
object, as returned by ``load_char``.
"""
import os
import matplotlib
import matplotlib.ft2font as ft
font = ft.FT2Font(
# Use a font shipped with Matplotlib.
os.path.join(matplotlib.get_data_path(),
'fonts/ttf/DejaVuSans-Oblique.ttf'))
print('Num faces: ', font.num_faces) # number of faces in file
print('Num glyphs: ', font.num_glyphs) # number of glyphs in the face
print('Family name:', font.family_name) # face family name
print('Style name: ', font.style_name) # face style name
print('PS name: ', font.postscript_name) # the postscript name
print('Num fixed: ', font.num_fixed_sizes) # number of embedded bitmaps
# the following are only available if font.scalable
if font.scalable:
# the font global bounding box (xmin, ymin, xmax, ymax)
print('Bbox: ', font.bbox)
# number of font units covered by the EM
print('EM: ', font.units_per_EM)
# the ascender in 26.6 units
print('Ascender: ', font.ascender)
# the descender in 26.6 units
print('Descender: ', font.descender)
# the height in 26.6 units
print('Height: ', font.height)
# maximum horizontal cursor advance
print('Max adv width: ', font.max_advance_width)
# same for vertical layout
print('Max adv height: ', font.max_advance_height)
# vertical position of the underline bar
print('Underline pos: ', font.underline_position)
# vertical thickness of the underline
print('Underline thickness:', font.underline_thickness)
for style in ('Italic',
'Bold',
'Scalable',
'Fixed sizes',
'Fixed width',
'SFNT',
'Horizontal',
'Vertical',
'Kerning',
'Fast glyphs',
'Multiple masters',
'Glyph names',
'External stream'):
bitpos = getattr(ft, style.replace(' ', '_').upper()) - 1
print(f"{style+':':17}", bool(font.style_flags & (1 << bitpos)))