Você escolhe uma fonte, escreve o livro, gera o PDF e ele parece certo. Mas "parece" não é prova.
Em um livro nosso, uma lista com marcadores trouxe, sem ninguém pedir, uma terceira família de fonte para dentro do PDF. O marcador era um triângulo cheio. Nem a serifa do corpo nem a fonte dos títulos tinham esse símbolo. O compilador procurou em outro lugar, achou, e seguiu em frente. O PDF passou a ter três famílias em vez de duas. A regra da casa proíbe isso, e nenhum aviso apareceu.
Em outro livro, uma fonte de títulos simplesmente não existia no servidor. O livro inteiro saiu com uma fonte de reserva, sem que alguém visse.
Este artigo mostra como escolher fontes para um livro, o que a licença permite, como instalar e, principalmente, como provar quais fontes o PDF realmente usou.
O que fazer na escolha
Um livro de texto corrido costuma funcionar com duas famílias: uma serifa para o corpo e uma sem serifa para títulos, legendas e rótulos. Na nossa casa, a serifa do corpo é a Crimson Pro e a sem serifa é a Inter. Em 36 modelos de diagramação, a Crimson Pro aparece em 816 usos e a Inter em 139.
Quatro critérios, nesta ordem:
- Licença que permite embutir no PDF. A fonte vai dentro do arquivo. A licença precisa permitir isso.
- Arquivos estáticos dos pesos que você usa. Normal, itálico, negrito e negrito itálico, no mínimo.
- Cobertura do português. Acentos, cedilha, aspas curvas, travessões e os símbolos que o seu livro usa, como o marcador de lista.
- Uma serifa legível em corpo 10 a 11 pontos. Isto é critério de projeto, e não de medição: imprima uma página de prova.
O que a licença diz
As duas famílias que usamos têm a licença SIL Open Font License 1.1, segundo as páginas oficiais dos projetos. Na prática, essa licença permite usar a fonte, embutir no PDF e redistribuir junto com o texto da licença. Ela não permite vender a fonte sozinha. Confirme sempre o arquivo OFL.txt que vem com cada família, porque o texto exato é o que vale.
Outras famílias aparecem em alguns modelos nossos: Barlow, Archivo e Bebas Neue. A licença costuma ser a mesma, mas nós ainda não confirmamos família por família. Antes de redistribuir qualquer arquivo de fonte, abra o OFL.txt da fonte oficial.
O compilador também traz fontes embutidas: Libertinus Serif, New Computer Modern, New Computer Modern Math e DejaVu Sans Mono, segundo a documentação oficial. A Libertinus Serif é a padrão quando você não define nada, e por isso é a que aparece quando algo dá errado.
Passo a passo: instalar e conferir
- Baixe as famílias da fonte oficial de cada uma, junto com o
OFL.txt. - Guarde os arquivos em uma pasta do projeto, por exemplo
fontes/, ao lado do livro. O projeto passa a abrir igual em qualquer máquina. - Liste o que o compilador enxerga:
typst fonts --font-path fontes --ignore-system-fonts
O --ignore-system-fonts esconde as fontes instaladas na sua máquina. Assim, o que aparece é só o que o projeto tem, e você descobre cedo se algo faltou.
- Compile do mesmo jeito, e trate o aviso como erro:
typst compile --font-path fontes --ignore-system-fonts livro.typ livro.pdf 2> aviso.txt
if grep -q "^warning" aviso.txt; then echo "REPROVADO"; head -3 aviso.txt; exit 1; fi
Testamos com uma família que não existe. O compilador respondeu warning: unknown font family e gerou o PDF mesmo assim, usando a Libertinus Serif no lugar. Quem só olha se o PDF saiu aprova o arquivo errado.
- Prove as famílias que entraram no PDF:
pdffonts livro.pdf | awk 'NR>2{print $1}' | sed 's/^[A-Z]*+//; s/-.*//' | sort -u
O resultado é uma lista de famílias. No nosso miolo de teste, saiu uma só: CrimsonProRoman. Se aparecer uma família que você não escolheu, ela entrou por reserva. A coluna emb do pdffonts, sem filtro, deve dizer yes em todas as linhas: fonte não embutida é defeito.
O marcador que puxou a terceira fonte
Reproduzimos o caso do triângulo. Com a Crimson Pro como fonte do texto, escrevemos uma linha com o símbolo ▶. O compilador não deu aviso, e o pdffonts listou duas famílias: a Crimson Pro e a Libertinus Serif. Só a prova no PDF mostrou.
A correção foi trocar o triângulo por um ponto simples, que as duas famílias têm. Ninguém tinha visto o problema antes, porque nenhum dos livros publicados até então usava lista com marcador.
Fonte variável: o negrito some, e o nome engana
Fontes variáveis, que guardam todos os pesos em um arquivo, são mal suportadas por alguns compiladores. No log do nosso serviço aparece o aviso de que fontes variáveis não são suportadas e que os pesos intermediários podem sair imperfeitos. Em um registro nosso, a fonte variável fez sumir todo o negrito.
A saída é usar arquivos estáticos. Se a família só existe como variável, gere os estáticos com a biblioteca fontTools:
from fontTools.ttLib import TTFont
from fontTools.varLib import instancer
vf = TTFont("FamiliaVariavel.ttf")
f = instancer.instantiateVariableFont(vf, {"wght": 700})
nome = f["name"]
for nid, valor in ((1, "Minha Familia"), (2, "Bold"), (4, "Minha Familia Bold"),
(6, "MinhaFamilia-Bold"), (16, "Minha Familia"), (17, "Bold")):
nome.setName(valor, nid, 3, 1, 0x409)
nome.setName(valor, nid, 1, 0, 0)
f["OS/2"].usWeightClass = 700
f.save("MinhaFamilia-Bold.ttf")
Repare nas linhas do nome. Sem elas, a instância herda o nome da família do ponto padrão do eixo, e o compilador não sabe qual peso usar. Testamos o procedimento com uma família variável. Geramos o peso 400 e o 700 com um nome novo, e o pdffonts listou as duas, Regular e Bold, embutidas.
Algumas licenças reservam o nome da fonte. Nesse caso, mude o nome da família gerada. E não redistribua o arquivo derivado sem ler o OFL.txt.
O erro que custa caro
Escolher a fonte e nunca ler o que o compilador respondeu. As duas histórias do começo tiveram o mesmo erro: o aviso existia, ou a prova existia, e ninguém olhou. A defesa é automática: aviso vira erro, e a lista de famílias do PDF é conferida contra a lista esperada.
Quando NÃO usar estas fontes
A escolha das fontes é decisão de projeto. Se o livro tem alfabeto, símbolos ou matemática que as duas famílias não cobrem, escolha outras e repita a prova. Se a marca exigir uma fonte comercial, verifique se a licença permite embutir no PDF para impressão. Nem toda licença de uso em tela permite.
Alternativa sem o nosso ambiente
No aplicativo web do Typst, você envia os arquivos .ttf ou .otf para o projeto, e eles são descobertos sozinhos. A documentação diz que as fontes do projeto têm prioridade sobre as do servidor. Na linha de comando, a prioridade é --font-path, depois as fontes do sistema, depois as embutidas. Em qualquer caso, a prova com pdffonts vale: ela lê o PDF, e não o seu projeto.
O que o Claude faz hoje, e como fazer sem ele
Hoje o Claude lista as famílias do PDF depois de cada compilação, compara com a lista esperada e avisa de qualquer família estranha. Sem ele, use o comando do passo 5. Os dois são o mesmo teste.
Onde entra na operação
As fontes entram na diagramação do miolo, e a prova de famílias é uma das conferências do arquivo final. O guia completo da esteira é Como produzimos o miolo de um livro profissional sem InDesign. A instalação do ambiente está em instalar o ambiente para diagramar livro, e o compilador, em Typst no lugar do InDesign. A conferência do arquivo para a gráfica está no checklist de preflight.
Versões usadas neste artigo: veja a matriz de versões.



