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.