Marcio Cunha

Como eliminar o Layout Shift no carregamento de fontes com CSS

Descubra como ajustar o font-display e otimizar o carregamento de fontes web para eliminar saltos visuais e melhorar as métricas de Core Web Vitals.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • O carregamento assíncrono de fontes sem controle gera saltos visuais conhecidos como Cumulative Layout Shift.
  • A propriedade font-display permite controlar o comportamento de exibição durante o download dos arquivos tipográficos.
  • O uso de fallbacks métricos redimensiona o texto genérico para aproximá-lo da tipografia final personalizada.
  • Ajustar tamanhos e espaçamentos no CSS evita que o conteúdo mude de lugar após a renderização da fonte principal.
  • O monitoramento contínuo das métricas de desempenho garante uma experiência fluida para os usuários em dispositivos móveis.

Por que o texto pula quando a página carrega?

Quando abrimos um site moderno, é comum notar que o texto da página inteira sofre um salto repentino logo nos primeiros segundos de navegação. Esse comportamento incômodo acontece porque o navegador precisa baixar os arquivos de fontes personalizadas da internet antes de desenhar o texto na tela com o estilo correto. Na prática, isso significa que o navegador primeiro exibe o texto usando uma fonte padrão do sistema operacional, como Arial ou Times New Roman, que costuma ter tamanhos e larguras completamente diferentes da fonte final desejada.

Esse deslocamento indesejado afeta diretamente uma métrica de desempenho muito importante avaliada pelo Google chamada de Cumulative Layout Shift, ou simplesmente CLS. Em como acelerar o Next.js com React 19 e gargalos, discutimos como pequenas mudanças na renderização salvam milissegundos preciosos na tela do usuário. Quando os blocos de texto mudam de lugar no último segundo, o usuário frequentemente clica no botão errado porque ele acabou de se mover, gerando frustração imediata e prejudicando a reputação da aplicação web perante os mecanismos de busca.

Entendendo o comportamento do font-display no CSS

Para resolver esse problema na raiz, a especificação do CSS moderna introduziu a propriedade font-display, que serve para instruir o navegador sobre como ele deve se comportar enquanto a fonte personalizada ainda está sendo baixada do servidor. Existem vários valores possíveis para essa propriedade, como block, swap, fallback e optional, cada um com uma estratégia específica de trade-off entre velocidade de exibição e estabilidade visual.

Quando utilizamos o valor swap, por exemplo, o navegador exibe imediatamente o texto usando a fonte de reserva disponível no computador do usuário, trocando para a fonte personalizada assim que o download for concluído. Embora isso impeça que o texto fique invisível esperando o arquivo chegar, ainda pode causar um salto visual perceptível se os tamanhos das duas fontes forem muito diferentes. O segredo para uma experiência perfeita reside em combinar essas diretrizes com ajustes avançados de métricas locais, garantindo que a transição ocorra de forma imperceptível.

Como criar fallbacks métricos para evitar saltos visuais

A melhor arma contra o salto de layout é o conceito de fallbacks métricos personalizados, que envolve manipular as propriedades do CSS para esticar ou encolher a fonte padrão do sistema até que ela ocupe exatamente o mesmo espaço que a fonte final. Para implementar essa técnica, precisamos declarar regras adicionais no bloco de configuração do `@font-face` usando propriedades como size-adjust, ascent-override e descent-override.

Essas propriedades permitem recalibrar milimetricamente as métricas internas da fonte de reserva diretamente no código CSS, fazendo com que o navegador reserve o espaço exato necessário desde o primeiro milissegundo de renderização. Veja abaixo um exemplo prático de como estruturar essa configuração em sua folha de estilos:

@font-face {
font-family: 'MinhaFontePersonalizada';
src: url('/fonts/minha-fonte.woff2') format('woff2');
font-display: swap;
}

@font-face {
font-family: 'FonteFallbackPersonalizada';
src: local('Arial');
size-adjust: 95%;
ascent-override: 90%;
descent-override: 20%;
}

Ao aplicar a regra de size-adjust, reduzimos o tamanho padrão do Arial em cinco porcento para coincidir com a geometria da nossa tipografia principal, eliminando por completo a oscilação de pixels na tela.

Testando e validando o CLS nas ferramentas de desenvolvimento

Após aplicar as correções de CSS, o próximo passo obrigatório é medir o impacto real dessas alterações no desempenho da aplicação web usando ferramentas automatizadas e manuais. O painel de desempenho das Ferramentas do Desenvolvedor do navegador e o relatório do Lighthouse são aliados indispensáveis nessa etapa de auditoria e validação contínua.

Durante os testes em laboratório, verifique se a métrica de Cumulative Layout Shift caiu para zero ou para valores extremamente próximos no momento em que o documento é carregado pela primeira vez. Caso ainda note algum tremor sutil, analise se existem outros elementos estáticos, como imagens sem dimensões definidas ou banners publicitários, que também possam estar contribuindo para a instabilidade visual da página. Para complementar essa implementação em produção, vale conferir também nossas análises técnicas sobre Como proteger APIs contra DoS usando rate limiting com Redis e Como criar microsserviços resilientes com circuit breaker.

Considerações finais sobre performance tipográfica

Eliminar o Layout Shift provocado pelo carregamento de fontes personalizadas é uma etapa fundamental para elevar a qualidade técnica e a usabilidade de qualquer projeto web moderno. Ao dominar o uso do font-display e aplicar fallbacks métricos ajustados com precisão cirúrgica, você protege a experiência do usuário e melhora consideravelmente o posicionamento do seu site nos motores de busca. A busca incessante por uma interface estável e rápida diferencia aplicações amadoras de produtos digitais verdadeiramente profissionais e resilientes.