Explorando atributos de fuentes y métricas de glifos

Beginner

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

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.