HomeSharpStack
mobile-performance5 min

Fontes Web em Dispositivos Móveis: Estratégias de Carregamento e Desempenho

Fontes Web em Dispositivos Móveis: Estratégias de Carregamento e Desempenho

O Problema das Fontes Web em Celulares

Imagine que você está lendo um livro, mas o livreiro demora para entregar as páginas. Enquanto espera, você vê apenas espaços em branco. Depois que as páginas chegam, o texto finalmente aparece. Isso é exatamente o que acontece com fontes web em celulares!

Fontes web são arquivos que seu navegador precisa baixar da internet para exibir textos com estilos personalizados. Em dispositivos móveis, essa espera pode ser longa porque:

  • A conexão é mais lenta que em computadores
  • Os arquivos de fonte são pesados (podem ter centenas de kilobytes)
  • O navegador precisa baixar, processar e renderizar a fonte antes de mostrar o texto

Três Estratégias Principais de Carregamento

1. Font Display: Controlar o Que Mostrar Enquanto Espera

A propriedade font-display é como um plano de contingência. Ela diz ao navegador: "Se a fonte não chegar a tempo, mostre isso enquanto espera".

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

As opções principais são:

  • swap: Mostra uma fonte padrão imediatamente, depois troca quando a fonte web chega (melhor para textos importantes)
  • fallback: Espera um pouco (100ms), depois mostra a fonte padrão. Se a fonte web chegar, troca depois
  • optional: Mostra a fonte padrão e só usa a web se ela chegar rápido (bom para conexões lentas)
2. Escolher Formatos Eficientes

Diferentes formatos de fonte têm tamanhos diferentes. Em celulares, cada kilobyte importa!

@font-face {
  font-family: 'MinhaFonte';
  src: url('fonte.woff2') format('woff2'),
       url('fonte.woff') format('woff');
}

Ranking de eficiência:

  • WOFF2: Mais comprimido, ideal para mobile (use sempre que possível)
  • WOFF: Comprimido, compatível com navegadores antigos
  • TTF/OTF: Não comprimidos, muito pesados para mobile
3. Subsetting: Carregar Apenas o Necessário

Você não precisa de todas as letras do alfabeto em um celular. Se seu site só usa português, por que baixar caracteres chineses?

@font-face {
  font-family: 'MinhaFonte';
  src: url('fonte-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF;
}

O unicode-range diz ao navegador: "Use esta fonte apenas para estes caracteres". Isso reduz o tamanho do arquivo em até 70%!

Medindo o Impacto no Desempenho

Como saber se suas fontes estão prejudicando a experiência? Existem duas métricas importantes:

  • FOUT (Flash of Unstyled Text): O texto aparece em fonte padrão, depois muda para a web font
  • FOIT (Flash of Invisible Text): O texto fica invisível enquanto a fonte carrega

Em celulares, FOUT é melhor que FOIT porque o usuário vê algo imediatamente.

Exemplo Prático Completo

/* Estratégia otimizada para mobile */
@font-face {
  font-family: 'Roboto';
  src: url('roboto-latin.woff2') format('woff2');
  font-display: swap;
  unicode-range: U+0000-00FF;
  font-weight: 400;
  font-style: normal;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

Este código:

  • Usa WOFF2 (mais eficiente)
  • Aplica swap para mostrar texto rapidamente
  • Carrega apenas caracteres latinos
  • Tem uma fonte padrão como fallback

Dicas Finais para Mobile

  • Limite a 2-3 fontes web por página
  • Prefira fontes do sistema (mais rápidas) quando possível
  • Use font-display: swap para textos críticos
  • Comprima e faça subset de todas as fontes
  • Teste em conexões 4G lentas, não apenas WiFi

Key Takeaways

  • Fontes web são arquivos pesados que atrasam a renderização em celulares; use font-display: swap para mostrar texto imediatamente com uma fonte padrão enquanto a fonte web carrega
  • Escolha o formato WOFF2 (mais comprimido) e aplique subsetting com unicode-range para carregar apenas os caracteres necessários, reduzindo o tamanho do arquivo em até 70%
  • Meça o impacto usando métricas como FOUT e FOIT; em mobile, é melhor mostrar texto rapidamente em uma fonte padrão (FOUT) do que deixá-lo invisível enquanto carrega (FOIT)

Enjoyed this reading?

SharpStack delivers personalized tech readings every day, calibrated to your skill level. 5 minutes a day to stay sharp.

“Stay sharp. At your pace. Everyday.”