Entdecken von Schriftarteigenschaften und Glyphenmaßen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.