Explorando Atributos de Fonte e Métricas de Glifos

Beginner

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

Introdução

Neste laboratório, você aprenderá sobre os atributos de um objeto .FT2Font que descrevem as propriedades globais da fonte. Você também aprenderá como usar métricas de caracteres individuais usando o objeto .Glyph, conforme retornado por .load_char.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Nesta etapa, importaremos as bibliotecas necessárias.

import os
import matplotlib
import matplotlib.ft2font as ft

Carregar a Fonte

Nesta etapa, carregaremos a fonte com a qual trabalharemos. Usaremos uma fonte fornecida com o Matplotlib.

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

Imprimir as Propriedades da Fonte

Nesta etapa, imprimiremos as propriedades da fonte.

print('Num faces:  ', font.num_faces)        ## number of faces in file
print('Num glyphs: ', font.num_glyphs)       ## number of glyphs in the face
print('Family name:', font.family_name)      ## face family name
print('Style name: ', font.style_name)       ## face style name
print('PS name:    ', font.postscript_name)  ## the postscript name
print('Num fixed:  ', font.num_fixed_sizes)  ## number of embedded bitmaps

Imprimir Propriedades Adicionais da Fonte

Nesta etapa, imprimiremos propriedades adicionais da fonte que estão disponíveis apenas se a face for escalável (scalable).

if font.scalable:
    ## the face global bounding box (xmin, ymin, xmax, ymax)
    print('Bbox:               ', font.bbox)
    ## number of font units covered by the EM
    print('EM:                 ', font.units_per_EM)
    ## the ascender in 26.6 units
    print('Ascender:           ', font.ascender)
    ## the descender in 26.6 units
    print('Descender:          ', font.descender)
    ## the height in 26.6 units
    print('Height:             ', font.height)
    ## maximum horizontal cursor advance
    print('Max adv width:      ', font.max_advance_width)
    ## same for vertical layout
    print('Max adv height:     ', font.max_advance_height)
    ## vertical position of the underline bar
    print('Underline pos:      ', font.underline_position)
    ## vertical thickness of the underline
    print('Underline thickness:', font.underline_thickness)

Imprimir Estilos de Fonte

Nesta etapa, imprimiremos os estilos da fonte.

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

Resumo

Neste laboratório, você aprendeu sobre os atributos de um objeto .FT2Font que descrevem as propriedades globais da fonte. Você também aprendeu como usar métricas de caracteres individuais usando o objeto .Glyph, conforme retornado por .load_char.