Einführung
In diesem Lab lernst du über die Attribute eines .FT2Font-Objekts, die globale Schriftarten-Eigenschaften beschreiben. Du wirst auch lernen, wie du individuelle Zeichenmaße mit dem .Glyph-Objekt verwenden, das von .load_char zurückgegeben wird.
VM-Tipps
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Importiere erforderliche Bibliotheken
In diesem Schritt importieren wir die erforderlichen Bibliotheken.
import os
import matplotlib
import matplotlib.ft2font as ft
Lade Schriftart
In diesem Schritt laden wir die Schriftart, mit der wir arbeiten werden. Wir werden eine Schriftart verwenden, die mit Matplotlib mitgeliefert wird.
font = ft.FT2Font(
os.path.join(matplotlib.get_data_path(),
'fonts/ttf/DejaVuSans-Oblique.ttf'))
Drucke Schriftarteigenschaften
In diesem Schritt werden wir die Eigenschaften der Schriftart ausdrucken.
print('Anzahl von Gesichtern: ', font.num_faces) ## Anzahl der Gesichter in der Datei
print('Anzahl von Glyphen: ', font.num_glyphs) ## Anzahl der Glyphen im Gesicht
print('Familienname: ', font.family_name) ## Familienname des Gesichts
print('Stilname: ', font.style_name) ## Stilname des Gesichts
print('PS-Name: ', font.postscript_name) ## der PostScript-Name
print('Anzahl fixer Größen: ', font.num_fixed_sizes) ## Anzahl der eingebetteten Bitmaps
Drucke zusätzliche Schriftarteigenschaften
In diesem Schritt werden wir zusätzliche Schriftarteigenschaften ausdrucken, die nur verfügbar sind, wenn das Gesicht skalierbar ist.
if font.scalable:
## die globale Begrenzung des Gesichts (xmin, ymin, xmax, ymax)
print('Bbox: ', font.bbox)
## Anzahl der Schriftarteinheiten, die von der EM abgedeckt werden
print('EM: ', font.units_per_EM)
## der Aufsteiger in 26,6 Einheiten
print('Ascender: ', font.ascender)
## der Absteiger in 26,6 Einheiten
print('Descender: ', font.descender)
## die Höhe in 26,6 Einheiten
print('Height: ', font.height)
## maximale horizontale Cursor-Vorwärtsschritt
print('Max adv width: ', font.max_advance_width)
## dasselbe für die vertikale Layoutierung
print('Max adv height: ', font.max_advance_height)
## vertikale Position der Unterstreichung
print('Underline pos: ', font.underline_position)
## vertikale Dicke der Unterstreichung
print('Underline thickness:', font.underline_thickness)
Drucke Schriftstil
In diesem Schritt werden wir die Schriftstile ausdrucken.
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)))
Zusammenfassung
In diesem Lab haben Sie die Attribute eines .FT2Font-Objekts kennengelernt, die globale Schriftarteigenschaften beschreiben. Sie haben auch gelernt, wie Sie individuelle Zeichensmaße mit dem .Glyph-Objekt verwenden, das von .load_char zurückgegeben wird.