Preset Font Web
Usa font web da Google Fonts, FontShare semplicemente fornendo i nomi dei font.
Vedi tutti i provider supportati.
Installazione
pnpm add -D @unocss/preset-web-fontsyarn add -D @unocss/preset-web-fontsnpm install -D @unocss/preset-web-fontsbun add -D @unocss/preset-web-fontsimport presetWebFonts from '@unocss/preset-web-fonts'
import presetWind3 from '@unocss/preset-wind3'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind3(),
presetWebFonts({ /* opzioni */ }),
],
})TIP
Questo preset è incluso nel pacchetto unocss, puoi anche importarlo da lì:
import { presetWebFonts } from 'unocss'Provider
Provider attualmente supportati:
none- non fare nulla, tratta il font come font di sistemagoogle- Google Fontsbunny- Google Fonts rispettosi della privacyfontshare- Servizio font di qualità di ITF
INFO
PR benvenuti per aggiungere più provider. 🙌
Funzione fetch personalizzata
Usa la tua funzione per recuperare la sorgente del font.
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({
// usa axios con un 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'],
},
}),
],
})Opzioni
provider
- Tipo:
WebFontsProviders - Predefinito:
google
Servizio provider dei font web.
type WebFontsProviders = 'google' | 'bunny' | 'fontshare' | 'none'fonts
- Tipo:
Record<string, WebFontMeta | string | (WebFontMeta | string)[]>
I font. Vedi esempio per maggiori dettagli.
interface WebFontMeta {
name: string
weights?: (string | number)[]
italic?: boolean
/**
* Sostituisce il provider
* @default <corrisponde alla configurazione root>
*/
provider?: WebFontsProviders
}extendTheme
- Tipo:
boolean - Predefinito:
true
Estende l'oggetto tema.
themeKey
- Tipo:
string - Predefinito:
fontFamily
Chiave per l'oggetto tema.
inlineImports
- Tipo:
boolean - Predefinito:
true
Inserisci inline CSS @import().
customFetch
- Tipo:
(url: string) => Promise<string> - Predefinito:
undefined
Usa la tua funzione per recuperare la sorgente del font. Vedi Funzione fetch personalizzata.
Esempio
presetWebFonts({
provider: 'google', // provider predefinito
fonts: {
// questi estenderanno il tema predefinito
sans: 'Roboto',
mono: ['Fira Code', 'Fira Mono:400,700'],
// personalizzati
lobster: 'Lobster',
lato: [
{
name: 'Lato',
weights: ['400', '700'],
italic: true,
},
{
name: 'sans-serif',
provider: 'none',
},
],
},
})Il seguente CSS verrà generato 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";
}Servire i font localmente
Per impostazione predefinita il preset recupererà i font dal CDN del provider. Se vuoi servire i font localmente, puoi scaricare i font e servirli dal tuo server usando il processore da @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',
},
// Questo scaricherà i font e li servirà localmente
processors: createLocalFontProcessor({
// Directory per memorizzare nella cache i font
cacheDir: 'node_modules/.cache/unocss/fonts',
// Directory per salvare gli asset dei font
fontAssetsDir: 'public/assets/fonts',
// URL base per servire i font dal client
fontServeBaseUrl: '/assets/fonts'
})
}),
],
})Questo scaricherà gli asset dei font in public/assets/fonts e li servirà da /assets/fonts sul client. Quando fai questo, assicurati che la licenza dei font ti permetta di ridistribuirli, lo strumento non è responsabile di problemi legali.
INFO
Questa funzionalità è specifica per Node.js e non funzionerà nel browser.