Preset Web Fonts
Use fontes web do Google Fonts, FontShare simplesmente fornecendo os nomes das fontes.
Veja todos os provedores suportados.
Instalação
pnpm add -D @unocss/preset-web-fonts
yarn add -D @unocss/preset-web-fonts
npm install -D @unocss/preset-web-fonts
bun add -D @unocss/preset-web-fonts
import presetWebFonts from '@unocss/preset-web-fonts'
import presetWind3 from '@unocss/preset-wind3'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind3(),
presetWebFonts({ /* opções */ }),
],
})
TIP
Este preset está incluído no pacote unocss
, você também pode importá-lo de lá:
import { presetWebFonts } from 'unocss'
Provedores
Provedores atualmente suportados:
none
- não faz nada, trata a fonte como fonte do sistemagoogle
- Google Fontsbunny
- Google Fonts Amigável à Privacidadefontshare
- Serviço de Fontes de Qualidade por ITF
INFO
PRs são bem-vindos para adicionar mais provedores. 🙌
Função de busca personalizada
Use sua própria função para buscar a fonte.
import presetWebFonts from '@unocss/preset-web-fonts'
import presetWind3 from '@unocss/preset-wind3'
import axios from 'axios'
import ProxyAgent from 'proxy-agent'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind3(),
presetWebFonts({
// use axios com um proxy https
customFetch: (url: string) => axios.get(url, { httpsAgent: new ProxyAgent('https://localhost:7890') }).then(it => it.data),
provider: 'google',
fonts: {
sans: 'Roboto',
mono: ['Fira Code', 'Fira Mono:400,700'],
},
}),
],
})
Opções
provider
- Tipo:
WebFontsProviders
- Padrão:
google
Serviço provedor das fontes web.
type WebFontsProviders = 'google' | 'bunny' | 'fontshare' | 'none'
fonts
- Tipo:
Record<string, WebFontMeta | string | (WebFontMeta | string)[]>
As fontes. Veja exemplo para mais detalhes.
interface WebFontMeta {
name: string
weights?: (string | number)[]
italic?: boolean
/**
* Sobrescreve o provedor
* @default <corresponde à configuração raiz>
*/
provider?: WebFontsProviders
}
extendTheme
- Tipo:
boolean
- Padrão:
true
Estende o objeto de tema.
themeKey
- Tipo:
string
- Padrão:
fontFamily
Chave para o objeto de tema.
inlineImports
- Tipo:
boolean
- Padrão:
true
Inclui CSS @import()
.
customFetch
- Tipo:
(url: string) => Promise<string>
- Padrão:
undefined
Use sua própria função para buscar a fonte. Veja Função de busca personalizada.
Exemplo
presetWebFonts({
provider: 'google', // provedor padrão
fonts: {
// estes irão estender o tema padrão
sans: 'Roboto',
mono: ['Fira Code', 'Fira Mono:400,700'],
// personalizados
lobster: 'Lobster',
lato: [
{
name: 'Lato',
weights: ['400', '700'],
italic: true,
},
{
name: 'sans-serif',
provider: 'none',
},
],
},
})
O seguinte CSS será gerado automaticamente:
@import url('https://fonts.googleapis.com/css2?family=Roboto&family=Fira+Code&family=Fira+Mono:wght@400;700&family=Lobster&family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap');
/* layer: default */
.font-lato {
font-family: "Lato", sans-serif;
}
.font-lobster {
font-family: "Lobster";
}
.font-mono {
font-family: "Fira Code", "Fira Mono", ui-monospace, SFMono-Regular, Menlo,
Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
.font-sans {
font-family: "Roboto", ui-sans-serif, system-ui, -apple-system,
BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans",
sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
"Noto Color Emoji";
}
Servir Fontes Localmente
Por padrão o preset irá buscar as fontes do CDN do provedor. Se você quiser servir as fontes localmente, você pode baixar as fontes e servi-las do seu próprio servidor usando o processador de @unocss/preset-web-fonts/local
.
import presetWebFonts from '@unocss/preset-web-fonts'
import { createLocalFontProcessor } from '@unocss/preset-web-fonts/local'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWebFonts({
provider: 'none',
fonts: {
sans: 'Roboto',
mono: 'Fira Code',
},
// Isso irá baixar as fontes e servi-las localmente
processors: createLocalFontProcessor({
// Diretório para cache das fontes
cacheDir: 'node_modules/.cache/unocss/fonts',
// Diretório para salvar os assets das fontes
fontAssetsDir: 'public/assets/fonts',
// URL base para servir as fontes do cliente
fontServeBaseUrl: '/assets/fonts'
})
}),
],
})
Isso irá baixar os assets das fontes para public/assets/fonts
e servi-los de /assets/fonts
no cliente. Ao fazer isso, por favor certifique-se de que a licença das fontes permite que você as redistribua, a ferramenta não é responsável por quaisquer questões legais.
INFO
Este recurso é específico para Node.js e não funcionará no navegador.