Introducción
En este laboratorio, aprenderá sobre los atributos de un objeto .FT2Font que describen las propiedades globales de la fuente. También aprenderá a usar las métricas de carácter individuales usando el objeto .Glyph, devuelto por .load_char.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Importar las bibliotecas necesarias
En este paso, importaremos las bibliotecas necesarias.
import os
import matplotlib
import matplotlib.ft2font as ft
Cargar la fuente
En este paso, cargaremos la fuente con la que trabajaremos. Usaremos una fuente que viene con Matplotlib.
font = ft.FT2Font(
os.path.join(matplotlib.get_data_path(),
'fonts/ttf/DejaVuSans-Oblique.ttf'))
Imprimir propiedades de la fuente
En este paso, imprimiremos las propiedades de la fuente.
print('Num faces: ', font.num_faces) ## número de caras en el archivo
print('Num glyphs: ', font.num_glyphs) ## número de glifos en la cara
print('Family name:', font.family_name) ## nombre de la familia de la cara
print('Style name: ', font.style_name) ## nombre de estilo de la cara
print('PS name: ', font.postscript_name) ## el nombre PostScript
print('Num fixed: ', font.num_fixed_sizes) ## número de mapas de bits incrustados
Imprimir propiedades adicionales de la fuente
En este paso, imprimiremos propiedades adicionales de la fuente que solo están disponibles si la cara es escalable.
if font.scalable:
## el cuadro delimitador global de la cara (xmin, ymin, xmax, ymax)
print('Bbox: ', font.bbox)
## número de unidades de fuente cubiertas por la EM
print('EM: ', font.units_per_EM)
## el ascensor en 26,6 unidades
print('Ascender: ', font.ascender)
## el descensor en 26,6 unidades
print('Descender: ', font.descender)
## la altura en 26,6 unidades
print('Height: ', font.height)
## avance horizontal máximo del cursor
print('Max adv width: ', font.max_advance_width)
## lo mismo para el diseño vertical
print('Max adv height: ', font.max_advance_height)
## posición vertical de la barra de subrayado
print('Underline pos: ', font.underline_position)
## grosor vertical del subrayado
print('Underline thickness:', font.underline_thickness)
Imprimir estilos de fuente
En este paso, imprimiremos los estilos de fuente.
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)))
Resumen
En este laboratorio, aprendiste sobre los atributos de un objeto .FT2Font que describen las propiedades globales de la fuente. También aprendiste cómo usar las métricas de carácter individuales usando el objeto .Glyph, devuelto por .load_char.