Web Fonts preset
Používajte webové fonty z Google Fonts, FontShare jednoduchým poskytnutím názvov fontov.
Pozrite si všetkých podporovaných poskytovateľov.
Inštalácia
bash
pnpm add -D @unocss/preset-web-fontsbash
yarn add -D @unocss/preset-web-fontsbash
npm install -D @unocss/preset-web-fontsbash
bun add -D @unocss/preset-web-fontsts
import presetWebFonts from '@unocss/preset-web-fonts'
import presetWind3 from '@unocss/preset-wind3'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind3(),
presetWebFonts({ /* možnosti */ }),
],
})TIP
Tento preset je zahrnutý v balíku unocss, môžete ho tiež importovať odtiaľ:
ts
import { presetWebFonts } from 'unocss'Poskytovatelia
Aktuálne podporovaní poskytovatelia:
none- nerobí nič, zaobchádza s fontom ako so systémovým fontomgoogle- Google Fontsbunny- Privacy-Friendly Google Fontsfontshare- Quality Font Service by ITF
INFO
PR vítané na pridanie ďalších poskytovateľov. 🙌
Vlastná funkcia fetch
Použite vlastnú funkciu na získanie zdroja fontu.
ts
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({
// použitie axios s https proxy
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'],
},
}),
],
})Možnosti
provider
- Type:
WebFontsProviders - Default:
google
Poskytovateľ služby webových fontov.
ts
type WebFontsProviders = 'google' | 'bunny' | 'fontshare' | 'none'fonts
- Type:
Record<string, WebFontMeta | string | (WebFontMeta | string)[]>
Fonty. Pozrite si príklad pre viac detailov.
ts
interface WebFontMeta {
name: string
weights?: (string | number)[]
italic?: boolean
/**
* Prepísať poskytovateľa
* @default <zhoduje sa s root konfiguráciou>
*/
provider?: WebFontsProviders
}extendTheme
- Type:
boolean - Default:
true
Rozšíriť objekt témy.
themeKey
- Type:
string - Default:
fontFamily
Kľúč pre objekt témy.
inlineImports
- Type:
boolean - Default:
true
Inline CSS @import().
customFetch
- Type:
(url: string) => Promise<string> - Default:
undefined
Použite vlastnú funkciu na získanie zdroja fontu. Pozrite Vlastná funkcia fetch.
Príklad
ts
presetWebFonts({
provider: 'google', // predvolený poskytovateľ
fonts: {
// tieto rozšíria predvolenú tému
sans: 'Roboto',
mono: ['Fira Code', 'Fira Mono:400,700'],
// vlastné
lobster: 'Lobster',
lato: [
{
name: 'Lato',
weights: ['400', '700'],
italic: true,
},
{
name: 'sans-serif',
provider: 'none',
},
],
},
})Nasledujúce CSS bude vygenerované automaticky:
css
@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";
}Lokálne servírovanie fontov
Predvolene tento preset bude sťahovať fonty z CDN poskytovateľa. Ak chcete servírovať fonty lokálne, môžete si stiahnuť fonty a servírovať ich z vášho vlastného servera pomocou procesora z @unocss/preset-web-fonts/local.
ts
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',
},
// Toto stiahne fonty a bude ich servírovať lokálne
processors: createLocalFontProcessor({
// Adresár na cachovanie fontov
cacheDir: 'node_modules/.cache/unocss/fonts',
// Adresár na uloženie assetov fontov
fontAssetsDir: 'public/assets/fonts',
// Base URL na servírovanie fontov z klienta
fontServeBaseUrl: '/assets/fonts'
})
}),
],
})Toto stiahne assety fontov do public/assets/fonts a bude ich servírovať z /assets/fonts na klientovi. Keď toto robíte, uistite sa, že licencia fontov vám umožňuje redistribúciu, nástroj nezodpovedá za žiadne právne problémy.
INFO
Táto funkcia je špecifická pre Node.js a nebude fungovať v prehliadači.