Criar uma declaração CSS @font-face com arquivos de fonte
Informe o nome da família, os arquivos com o formato, o peso e o estilo e receba uma regra @font-face pronta: Inter com um WOFF2 primeiro e um WOFF de reserva, peso 400, estilo normal. A ordem dos arquivos é mantida. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Família de fontes
- Inter
- Peso da fonte
- 400
- Estilo da fonte
- normal
- Quantidade de fontes
- 2
Crie uma declaração CSS @font-face completa sem conferir repetidamente pontuação, aspas ou ordem dos descritores. Informe a família, um ou mais arquivos de fonte com seus formatos, além do peso e do estilo. O resultado é determinístico, pronto para copiar e mantém a ordem escolhida para que formatos modernos venham antes dos arquivos alternativos.
Descreva os arquivos na ordem em que o navegador deve testá-los
Comece pelo nome público da família que será usado na propriedade font-family do aplicativo. Em seguida, adicione cada origem como um registro separado, com caminho e indicação de formato. A ordem importa: o navegador percorre a lista src da esquerda para a direita e escolhe o primeiro recurso compatível.
Uma configuração comum coloca um WOFF2 compacto primeiro e um WOFF alternativo depois. O gerador preserva exatamente essa sequência; ele não ordena, deduz, baixa nem inspeciona arquivos. Os caminhos podem ser URL relativas, como /fonts/newsreader.woff2, ou endereços completos.
O valor format é emitido como indicação CSS explícita e deve corresponder ao arquivo real. Aspas e barras invertidas em nomes, caminhos e formatos são escapadas nas strings CSS. Valores vazios e caracteres que poderiam romper um descritor são recusados, em vez de gerar uma regra aparentemente válida que falha ao ser colada.
Pelo menos uma origem é obrigatória, pois uma regra @font-face sem um src utilizável não consegue carregar uma fonte.
Defina peso e estilo compatíveis com o arquivo
Os descritores font-weight e font-style informam ao navegador quais solicitações essa fonte pode atender. Eles devem representar os dados do arquivo, e não um efeito visual que o navegador precisaria sintetizar. Para uma fonte estática regular, peso 400 e estilo normal são escolhas comuns.
Um arquivo itálico geralmente mantém o peso e usa italic, enquanto um negrito pode usar 700. Fontes variáveis aceitam intervalos suportados, como 100 900, quando o arquivo realmente contém esse eixo. O gerador recebe texto de descritor CSS em vez de limitar esses campos a um menu curto, permitindo valores tradicionais e sintaxe válida para fontes variáveis.
Espaços externos são removidos; quebras de linha, chaves e ponto e vírgula capazes de escapar do descritor são rejeitados. A ferramenta não verifica se o binário contém o peso ou estilo declarado. Crie uma regra para cada variante estática e mantenha o mesmo nome de família nos arquivos relacionados.
Assim, a correspondência normal do CSS seleciona a variante correta sem exigir alterações nas declarações do site inteiro.
Copie o resultado ou gere-o durante a compilação
A saída traz uma regra CSS formatada e também família normalizada, quantidade de origens, peso e estilo. Copie o valor css para uma folha de estilos antes dos seletores que usam a família ou chame o serviço em um script que reúne os ativos tipográficos. A regra gerada se concentra em família, origem, peso e estilo.
Ela não tenta adivinhar propriedades opcionais como font-display, unicode-range, size-adjust, ascent-override, descent-override ou recursos tipográficos, pois essas escolhas dependem da política de carregamento, cobertura de glifos e compatibilidade métrica. Acrescente esses descritores depois, se necessário. A ferramenta não acessa a rede nem confirma se o caminho existe; teste a folha final nos navegadores atendidos e consulte o painel de rede para encontrar ativos ausentes ou MIME incorreto.
A serialização determinística ajuda equipes que publicam fontes: entradas iguais sempre produzem a mesma saída, a prioridade fica clara para revisão e listas vazias falham cedo.
Casos de uso
Registrar uma família web
Transforme caminhos WOFF2 e WOFF em uma regra pronta para copiar, com formatos explícitos.
Declarar variantes estáticas
Gere regras consistentes para regular, itálico, negrito e negrito itálico sob uma família.
Automatizar folhas de estilos
Crie declarações determinísticas a partir de metadados durante a compilação de um site.
Perguntas frequentes
O que acontece se eu não informar arquivos?
A solicitação falha por entrada inválida, pois uma declaração @font-face útil exige pelo menos uma origem.
A ferramenta verifica se o arquivo existe?
Não. Ela não acessa a rede; apenas valida e serializa os valores informados.
Qual origem deve vir primeiro?
Coloque primeiro o formato moderno preferido, geralmente WOFF2, e depois os formatos alternativos exigidos pela compatibilidade.
A regra inclui font-display ou unicode-range?
Não. Ela inclui somente família, origem, peso e estilo; as políticas opcionais ficam sob seu controle.
Preciso de uma regra para cada arquivo de fonte?
Você precisa de uma regra para cada variação estática, como regular, itálico ou negrito, todas com o mesmo nome de família. Os arquivos de uma mesma variação, como WOFF2 e WOFF, vão juntos e em ordem dentro de uma só regra.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/web/font-face-declaration-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"font_family":"Inter","sources":[{"path":"/fonts/inter-regular.woff2","format":"woff2"},{"path":"/fonts/inter-regular.woff","format":"woff"}],"font_weight":"400","font_style":"normal"}'const res = await fetch("https://api.kit.forhosting.com/web/font-face-declaration-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"font_family": "Inter",
"sources": [
{
"path": "/fonts/inter-regular.woff2",
"format": "woff2"
},
{
"path": "/fonts/inter-regular.woff",
"format": "woff"
}
],
"font_weight": "400",
"font_style": "normal"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/font-face-declaration-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"font_family": "Inter",
"sources": [
{
"path": "/fonts/inter-regular.woff2",
"format": "woff2"
},
{
"path": "/fonts/inter-regular.woff",
"format": "woff"
}
],
"font_weight": "400",
"font_style": "normal"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/font-face-declaration-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"font_family":"Inter","sources":[{"path":"/fonts/inter-regular.woff2","format":"woff2"},{"path":"/fonts/inter-regular.woff","format":"woff"}],"font_weight":"400","font_style":"normal"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"font_family":"Inter","sources":[{"path":"/fonts/inter-regular.woff2","format":"woff2"},{"path":"/fonts/inter-regular.woff","format":"woff"}],"font_weight":"400","font_style":"normal"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/font-face-declaration-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"font_family": "Inter",
"sources": [
{
"path": "/fonts/inter-regular.woff2",
"format": "woff2"
},
{
"path": "/fonts/inter-regular.woff",
"format": "woff"
}
],
"font_weight": "400",
"font_style": "normal"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.font_face_declaration_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Copie o resultado ou gere-o durante a compilação
O uso no navegador é gratuito; uma solicitação automatizada via API custa US$ 0,002.
Perguntas técnicas
Posso declarar um intervalo de peso variável?
Sim. font_weight aceita texto como 100 900, desde que não contenha caracteres que quebrem a regra.
Quanto custa usar a API?
Cada solicitação via API usa o preço-base exibido como US$ 0,002; a ferramenta no navegador é gratuita.