Explorer les attributs des polices et les mesures des glyphes

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez découvrir les attributs d'un objet .FT2Font qui décrivent les propriétés globales de la police. Vous allez également apprendre à utiliser les métriques de caractères individuels à l'aide de l'objet .Glyph, renvoyé par .load_char.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Dans cette étape, nous allons importer les bibliothèques nécessaires.

import os
import matplotlib
import matplotlib.ft2font as ft

Charger une police

Dans cette étape, nous allons charger la police avec laquelle nous allons travailler. Nous utiliserons une police livrée avec Matplotlib.

font = ft.FT2Font(
    os.path.join(matplotlib.get_data_path(),
                 'fonts/ttf/DejaVuSans-Oblique.ttf'))

Afficher les propriétés de la police

Dans cette étape, nous allons afficher les propriétés de la police.

print('Num faces:  ', font.num_faces)        ## nombre de faces dans le fichier
print('Num glyphs: ', font.num_glyphs)       ## nombre de glyphes dans la face
print('Family name:', font.family_name)      ## nom de la famille de la face
print('Style name: ', font.style_name)       ## nom du style de la face
print('PS name:    ', font.postscript_name)  ## le nom PostScript
print('Num fixed:  ', font.num_fixed_sizes)  ## nombre de bitmaps incorporés

Afficher les propriétés supplémentaires de la police

Dans cette étape, nous allons afficher les propriétés supplémentaires de la police qui ne sont disponibles que si la face est scalable.

if font.scalable:
    ## la boîte englobante globale de la face (xmin, ymin, xmax, ymax)
    print('Bbox:               ', font.bbox)
    ## nombre d'unités de police couvertes par l'EM
    print('EM:                 ', font.units_per_EM)
    ## l'ascenseur en 26,6 unités
    print('Ascender:           ', font.ascender)
    ## le descendueur en 26,6 unités
    print('Descender:          ', font.descender)
    ## la hauteur en 26,6 unités
    print('Height:             ', font.height)
    ## avance horizontale maximale du curseur
    print('Max adv width:      ', font.max_advance_width)
    ## pareil pour la mise en page verticale
    print('Max adv height:     ', font.max_advance_height)
    ## position verticale de la barre de soulignement
    print('Underline pos:      ', font.underline_position)
    ## épaisseur verticale du soulignement
    print('Underline thickness:', font.underline_thickness)

Afficher les styles de police

Dans cette étape, nous allons afficher les styles de police.

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)))

Sommaire

Dans ce laboratoire, vous avez appris les attributs d'un objet .FT2Font qui décrivent les propriétés globales de la police. Vous avez également appris à utiliser les mesures de caractères individuels à l'aide de l'objet .Glyph, renvoyé par .load_char.