You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Minden subset betöltődik. A @fontsource/<család>/<vágás>.css az összes elérhető subsetre (latin, latin-ext, cyrillic, greek, vietnamese — családtól függően) kiírja a @font-face szabályt. A böngésző csak azt tölti le, amire tényleg szükség van a unicode-range alapján, tehát a bájtok nagy része nem töltődik le — de a szabályok a kritikus CSS-t hizlalják, és a magyar szövegnek elég a latin + latin-ext.
Hét vágás sok. Öt vágás egy szövegtörzs-családból ritkán indokolt; minden tényleg használt vágás egy külön letöltés a kritikus úton. Ellenőrizni kell, melyik font-weight érték szerepel valóban a stílusokban (400, 500, 600, 700, és van-e egyáltalán dőlt szöveg).
Nincs preload a first paintben biztosan használt vágásokra (törzsszöveg 400, a hero mono felirata), tehát a betűfájl letöltése csak a CSS feldolgozása után indul.
Javaslat
A tényleg használt vágások összeírása (grep a font-weight-ekre mindkét stíluslapban és a komponensekben), és a nem használtak eltávolítása. Ha a dőlt szöveg nem szerepel, a 400-italic elhagyható.
Subset-specifikus importra váltás: @fontsource/instrument-sans/latin-400.css (és latin-ext, ha a hosszú ő/ű miatt kell — ezt ellenőrizni kell, mert magyar szövegnél pont ez a két karakter a kérdés).
<link rel="preload" as="font" type="font/woff2" crossorigin> a két legfontosabb vágásra az index.html-ben. A fájlnév hashelt, tehát a preload vagy a build kimenetéből generálódik, vagy a SpaShell írja be — érdemes a MapStaticAssets fingerprintjével összehangolni.
font-display: swap ellenőrzése — a @fontsource csomagok ezt alapból beállítják, de a base.css-ben érdemes explicit ellenőrizni, hogy nem íródik-e felül.
A --sans és --mono fallback lánc ma system-ui, sans-serif, illetve monospace — ez rendben van, de érdemes a metrikára közelebbi fallbackot választani (size-adjust), hogy a betűcsere ne okozzon elrendezés-ugrást (CLS).
Jelenség
A publikus app hét betűkészlet-CSS-t importál a belépési pontban (
portfoliocms.client/src/main.ts):Két probléma van ezzel:
@fontsource/<család>/<vágás>.cssaz összes elérhető subsetre (latin, latin-ext, cyrillic, greek, vietnamese — családtól függően) kiírja a@font-faceszabályt. A böngésző csak azt tölti le, amire tényleg szükség van aunicode-rangealapján, tehát a bájtok nagy része nem töltődik le — de a szabályok a kritikus CSS-t hizlalják, és a magyar szövegnek elég alatin+latin-ext.font-weightérték szerepel valóban a stílusokban (400,500,600,700, és van-e egyáltalán dőlt szöveg).preloada first paintben biztosan használt vágásokra (törzsszöveg 400, a hero mono felirata), tehát a betűfájl letöltése csak a CSS feldolgozása után indul.Javaslat
grepafont-weight-ekre mindkét stíluslapban és a komponensekben), és a nem használtak eltávolítása. Ha a dőlt szöveg nem szerepel, a400-italicelhagyható.@fontsource/instrument-sans/latin-400.css(éslatin-ext, ha a hosszú ő/ű miatt kell — ezt ellenőrizni kell, mert magyar szövegnél pont ez a két karakter a kérdés).<link rel="preload" as="font" type="font/woff2" crossorigin>a két legfontosabb vágásra azindex.html-ben. A fájlnév hashelt, tehát a preload vagy a build kimenetéből generálódik, vagy aSpaShellírja be — érdemes aMapStaticAssetsfingerprintjével összehangolni.font-display: swapellenőrzése — a@fontsourcecsomagok ezt alapból beállítják, de abase.css-ben érdemes explicit ellenőrizni, hogy nem íródik-e felül.--sansés--monofallback lánc masystem-ui, sans-serif, illetvemonospace— ez rendben van, de érdemes a metrikára közelebbi fallbackot választani (size-adjust), hogy a betűcsere ne okozzon elrendezés-ugrást (CLS).Érintett fájlok
portfoliocms.client/src/main.ts,portfoliocms.admin.client/src/main.tsportfoliocms.client/index.htmlportfoliocms.shared/assets/base.cssportfoliocms.client/package.json,portfoliocms.admin.client/package.json(ha vágás kerül ki)