Introdução
Este laboratório irá guiá-lo através de um exemplo de como as tabelas de fontes se relacionam entre si, utilizando a biblioteca Matplotlib do Python.
Dicas da 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ê.
Carregar a Fonte
Primeiramente, precisamos carregar um arquivo de fonte. Neste exemplo, usaremos o arquivo de fonte DejaVuSans.ttf.
import os
import matplotlib
from matplotlib.ft2font import FT2Font
font = FT2Font(os.path.join(matplotlib.get_data_path(), 'fonts/ttf/DejaVuSans.ttf'))
Definir o Mapa de Caracteres
Em seguida, definimos o mapa de caracteres para o mapa de caracteres Unicode padrão.
font.set_charmap(0)
Obter Códigos de Caracteres e Glifos
Obteremos os códigos de caracteres e os glifos correspondentes na fonte e os armazenaremos em dois dicionários, coded e glyphd.
codes = font.get_charmap().items()
coded = {}
glyphd = {}
for ccode, glyphind in codes:
name = font.get_glyph_name(glyphind)
coded[name] = ccode
glyphd[name] = glyphind
Carregar um Glifo
Agora, carregaremos um glifo, a letra 'A', da fonte e imprimiremos sua caixa delimitadora (bounding box) usando o atributo glyph.bbox.
code = coded['A']
glyph = font.load_char(code)
print(glyph.bbox)
Obter Valores de Kerning
Podemos obter os valores de kerning entre dois glifos usando o método font.get_kerning(). Neste exemplo, obteremos o valor de kerning entre os glifos para 'A' e 'V' e os glifos para 'A' e 'T'.
## kerning values for 'AV'
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_DEFAULT))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNFITTED))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNSCALED))
## kerning value for 'AT'
print('AT', font.get_kerning(glyphd['A'], glyphd['T'], KERNING_UNSCALED))
Resumo
Neste laboratório, aprendemos como carregar um arquivo de fonte, definir o mapa de caracteres, obter códigos de caracteres e glifos, carregar um glifo e obter valores de kerning entre glifos. Estas são técnicas úteis para qualquer pessoa que queira trabalhar com fontes e texto em seus projetos Python.