@font-face

O @font-face CSS at-rule especifica uma fonte customizada com a qual exibe o texto; a fonte pode ser carregada de um servidor remoto ou de uma fonte instalada localmente no computador do usuário. Se a função local() for fornecida, a especificação do nome da fonte a ser procurada no computador do usuário, e a user agent (en-US) encontrar uma correspondência, essa fonte local será usada. Caso contrário, o recurso de fonte especificado usando a função url() é baixado e usado.

Ao permitir que os autores forneçam suas próprias fontes, @font-face torna possível projetar conteúdo sem se limitar às chamadas fontes "seguras para a web" (ou seja, as fontes que são tão comuns que são consideradas como universalmente disponível). A capacidade de especificar o nome de uma fonte instalada localmente a ser procurada e usada permite personalizar a fonte além do básico, ao mesmo tempo em que é possível fazê-lo sem depender de uma conexão com a Internet.

É comum usar url() e local() juntos, para que a cópia instalada da fonte do usuário seja usada, se disponível, voltando ao download de uma cópia da fonte, caso ela não seja encontrada no dispositivo do usuário.

A regra de CSS @font-face pode ser usada não apenas no nível superior de um CSS, mas também dentro de qualquer CSS conditional-group at-rule.

@font-face {
  font-family: "Open Sans";
  src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2"),
       url("/fonts/OpenSans-Regular-webfont.woff") format("woff");
}

Sintaxe

Descritores

font-display (en-US)
Determina como uma fonte é exibida, com base em se e quando é baixada e pronta para uso.
font-family (en-US)
Especifica um nome que será usado como o valor nominal da fonte para as propriedades da fonte.
font-stretch (en-US)
Um valor font-stretch (en-US). Desde o Firefox 61 (e em outros navegadores modernos), isso também aceita dois valores para especificar um intervalo suportado por uma fonte, por exemplo, extensão de fonte: font-stretch: 50% 200%;
font-style (en-US)
Um valor font-style (en-US). Desde o Firefox 61 (e em outros navegadores modernos), isso também aceita dois valores para especificar um intervalo suportado por uma fonte, por exemplo font-style: oblique 20deg 50deg;
font-weight (en-US)
Um valor de font-weight. Desde o Firefox 61 (e em outros navegadores modernos), isso também aceita dois valores para especificar um intervalo suportado por uma fonte, por exemplo font-weight: 100 400;
font-variant (en-US)
Um valor font-variant (en-US).
font-feature-settings
Permite o controle sobre recursos tipográficos avançados em fontes OpenType.
font-variation-settings (en-US)
Permite o controle de baixo nível sobre as variações de fonte OpenType ou TrueType, especificando os nomes dos quatro eixos das letras dos recursos para variar, juntamente com seus valores de variação.
src (en-US)

Especifica o recurso que contém os dados da fonte. Pode ser um URL para um local de arquivo de fonte remota ou o nome de uma fonte no computador do usuário.

Para fornecer ao navegador uma dica sobre o formato de um recurso de fonte - para que ele possa selecionar um adequado - é possível incluir um tipo de formato dentro de uma função format():

src: url(ideal-sans-serif.woff) format("woff"),
     url(basic-sans-serif.ttf) format("truetype");

Os tipos disponíveis são: "woff", "woff2", "truetype", "opentype", "embedded-opentype", e "svg".

unicode-range (en-US)
O intervalo de pontos de código Unicode a serem usados na fonte.

Sintaxe formal

@font-face {
  [ (en-US) font-family: <family-name>; ] (en-US) || (en-US)
  [ (en-US) src: <src>; ] (en-US) || (en-US)
  [ (en-US) unicode-range: <unicode-range>; ] (en-US) || (en-US)
  [ (en-US) font-variant: <font-variant>; ] (en-US) || (en-US)
  [ (en-US) font-feature-settings: <font-feature-settings>; ] (en-US) || (en-US)
  [ (en-US) font-variation-settings: <font-variation-settings>; ] (en-US) || (en-US)
  [ (en-US) font-stretch: <font-stretch>; ] (en-US) || (en-US)
  [ (en-US) font-weight: <font-weight>; ] (en-US) || (en-US)
  [ (en-US) font-style: <font-style>; ] (en-US)
}

where
<family-name> = <string> (en-US) | (en-US) <custom-ident> (en-US)+ (en-US)

Exemplos

Este exemplo simplesmente especifica uma fonte para download a ser usada, aplicando-a a todo o corpo do documento:

Veja este exemplo

<html>
<head>
  <title>Web Font Sample</title>
  <style type="text/css" media="screen, print">
    @font-face {
      font-family: "Bitstream Vera Serif Bold";
      src: url("https://mdn.mozillademos.org/files/2468/VeraSeBd.ttf");
    }

    body { font-family: "Bitstream Vera Serif Bold", serif }
  </style>
</head>
<body>
  This is Bitstream Vera Serif Bold.
</body>
</html>

Neste exemplo, a cópia local do usuário "Helvetica Neue Bold" é usada; se o usuário não tiver essa fonte instalada (dois nomes diferentes são tentados), a fonte para download denominada "MgOpenModernaBold.ttf" será usada:

@font-face {
  font-family: MyHelvetica;
  src: local("Helvetica Neue Bold"),
       local("HelveticaNeue-Bold"),
       url(MgOpenModernaBold.ttf);
  font-weight: bold;
}

Font MIME Types

Formato MIME type
TrueType font/ttf
OpenType font/otf
Web Open File Format font/woff
Web Open File Format 2 font/woff2

Notes

  • As fontes da Web estão sujeitas à mesma restrição de domínio (os arquivos de fonte devem estar no mesmo domínio da página que os utiliza), a menos que os Controles de Acessos HTTP sejam usados para relaxar essa restrição.
  • @font-face não pode ser declarado dentro de um seletor CSS. Por exemplo, o seguinte não funcionará:
    .className {
      @font-face {
        font-family: MyHelvetica;
        src: local("Helvetica Neue Bold"),
             local("HelveticaNeue-Bold"),
             url(MgOpenModernaBold.ttf);
        font-weight: bold;
      }
    }

Especificações

Especificação Status Comentário
WOFF File Format 2.0
The definition of 'WOFF2 font format' in that specification.
Recomendação Especificação de formato de fonte com novo algoritmo de compactação.
WOFF File Format 1.0
The definition of 'WOFF font format' in that specification.
Recomendação Especificação de formato
CSS Fonts Module Level 3
The definition of '@font-face' in that specification.
Recomendação Definição Inicial

Compatibilidade do navegador

BCD tables only load in the browser

Veja Também