Sebesség

Betűtípusok betöltése: font-display, előtöltés és a villanó szöveg

A font-display, a preload és a helyi WOFF2 betűtípus beállítása lépésről lépésre: így tűnik el a villanó szöveg és a betűcsere okozta elrendezés-elmozdulás.

Scheo · · Frissítve: · olvasási idő ~10 perc · Szerző: Schmidt Péter

Összefoglalva: A betűtípus a magyar kkv-oldalak leggyakoribb rejtett sebesség-adóssága: kevés betűvastagság, helyben tárolt WOFF2, tudatos font-display érték és méretben hangolt tartalék betű nélkül a szöveg vagy késve jelenik meg, vagy ugrik egyet az olvasó szeme előtt. A latin-ext részhalmaz kihagyása ráadásul pont az ő és ű betűket löki ki a szövegből.

A legtöbb magyar kkv-oldalon a lassúság okát a képeknél keresik, pedig a betűtípus sokkal alattomosabb. A nagy kép legalább látszik, hogy nagy. A betűfájl nem. Egy igényes arculatú oldal kényelmesen elvisz hat-nyolc betűfájlt úgy, hogy senkinek nem tűnik fel, és közben pont a legfontosabb dolgot késlelteti: hogy megjelenjen a szöveg. Ez a cikk végigveszi, mi történik betöltés közben, mit lehet állítani rajta, és hogyan méred meg, hogy tényleg jobb lett. A megállapítások mellett jelölöm, mi hivatalosan igazolt (specifikáció vagy gyártói dokumentáció), mi saját tapasztalat (ügyfélmunkából) és mi szakmai feltételezés.

Betűtípusok betöltése: font-display, előtöltés és a villanó szöveg
Betűtípusok betöltése: font-display, előtöltés és a villanó szöveg

Mi történik a szöveggel, amíg a betűtípus letöltődik?

Rövid válasz: a böngésző vagy elrejti a szöveget, amíg megérkezik a betűfájl (ez a FOIT), vagy azonnal kiírja rendszerbetűvel és később lecseréli (ez a FOUT). Harmadik út nincs, csak az a kérdés, melyiket választod tudatosan.

Tovább a témában: CLS-hibák felkutatása és javítása

A FOIT a Flash of Invisible Text, vagyis a láthatatlan szöveg villanása: a hely megvan, a doboz megvan, de a betűk hiányoznak. A FOUT a Flash of Unstyled Text: a szöveg olvasható rendszerbetűvel, aztán egyszer csak átvált a márkabetűre. Hivatalosan igazolt: a CSS Fonts Module Level 4 három szakaszt ír le a betű betöltésére. Az első a blokkolási szakasz, amikor a szöveg láthatatlan. A második a csereszakasz, amikor tartalék betűvel látszik, de még kicserélhető. A harmadik a hibaszakasz, amikor a böngésző lemond a letöltésről és marad a tartalék.

Saját tapasztalat: a mai motorok alapértelmezésben nagyjából három másodperc blokkolást engednek meg, ami jó kapcsolaton észrevehetetlen, gyenge mobilneten viszont pontosan az a három másodperc, amikor a látogató visszalép. A hazai kkv-oldalak forgalmának nagy része mobilról jön, ezért ezt nem érdemes a böngészőre bízni.

Melyik font-display értéket érdemes választani?

Rövid válasz: a legtöbb oldalon a swap a helyes alapértelmezés, ha mellé rendes tartalék betűt is beállítasz. Ha nem állítasz be, az optional biztonságosabb.

Szakmai feltételezés: ha a márkabetű valóban hordozza az arculatot (például egyedi licencelt fejlécbetű), a swap plusz hangolt tartalék a jobb üzlet. Ha csak egy sokadik ingyenes talpatlan betűről van szó, amit a látogató úgysem különböztet meg, az optional gyakorlatilag ingyen sebesség.

Miért mozdul el az elrendezés a betűcserétől?

Rövid válasz: mert a tartalék betű és a márkabetű nem egyforma széles és nem egyforma magas, így a szöveg más helyen tördelődik, és a doboz magassága megváltozik.

Vegyünk egy tipikus esetet. A hero szekció főcíme rendszerbetűvel három sorba tördelődik, a márkabetű megérkezése után kettőbe. A különbség egyetlen sormagasság, mondjuk ötven képpont, csakhogy alatta ott van a bevezető, a gomb és minden más szekció, tehát az egész oldal feljebb ugrik. Ezt méri a Cumulative Layout Shift, és hivatalosan igazolt, hogy ez a Core Web Vitals egyik mutatója. A látogató szempontjából ennél is rosszabb, hogy pont akkor rándul meg az oldal, amikor a hüvelykujja már a gomb fölött van.

Saját tapasztalat: a betűből eredő elmozdulás a legnehezebben azonosítható CLS-forrás, mert gyors gépen, meleg gyorsítótárral soha nem reprodukálódik. Csak lassított hálózaton és üres gyorsítótárral jön elő.

Hány betűvastagságra van valóban szükséged?

Rövid válasz: kettő vagy három, ennél többre a magyar kkv-oldalak elsöprő többségének nincs szüksége.

A gyakorlatban egy normál törzsszöveg-vastagság (400) és egy kiemelés (700) mindent lefed, amit a szöveg tartalmilag igényel. Ha a fejléc külön karaktert kap, jöhet egy harmadik (600). Innentől minden további letöltendő fájl. Fontos, amit sokan kihagynak a számolásból: minden vastagság és minden dőlt változat külön fájl. Négy vastagság dőlttel együtt nyolc fájl. Ha ezt megszorzod a latin és latin-ext részhalmazzal, tizenhat kérés.

Nyiss egy táblázatot és írd össze, melyik vastagságot használja ténylegesen a CSS-ed. Amelyikre nincs szabály, az felesleges. Saját tapasztalat: weboldal-átvételeknél rendszeresen találunk hat-nyolc betöltött vastagságot, amiből az oldal ténylegesen kettőt használ, mert a témabeállító felület alapból mindent behúz. Ez egyetlen legördülő menü átállításával megszűnik.

A variábilis betű (variable font) alternatíva: egyetlen fájl, amely folyamatosan állítható vastagságokat ad. Cserébe nagyobb, mint egy statikus vágat. Szakmai feltételezés: ha háromnál több vastagságra tényleg szükség van, a variábilis változat jó eséllyel kisebb összméretet ad, három alatt viszont általában a statikus vágatok nyernek.

Hogyan válts Google Fonts CDN-ről helyben tárolt WOFF2-re?

Rövid válasz: letöltöd a szükséges WOFF2 fájlokat, felteszed a saját domainedre hosszú gyorsítótár-beállítással, megírod a saját @font-face szabályaidat, és kiirtod az összes külső hivatkozást.

Ez sebességben azért nyer, mert megszűnik egy külső domain DNS-feloldása és TLS-kézfogása, ráadásul a betűfájl ugyanazon a kapcsolaton érkezik, mint a HTML. Adatvédelmi oldalról is számít: a CDN-es beágyazásnál a látogató böngészője kérést küld egy külső szolgáltatóhoz, amely látja az IP-címét. Hivatalosan igazolt: a müncheni tartományi bíróság 2022-ben (3 O 17493/20 ügyszám) egy konkrét ügyben megállapította, hogy a Google Fonts CDN-es beágyazása hozzájárulás nélkül jogsértő volt. Szakmai feltételezés: ez egyedi német ítélet, nem magyar hatósági gyakorlat, de a mögötte lévő logika (hozzájárulás nélküli adattovábbítás) a hazai adatvédelmi keretben is védhető érv, ezért a helyi tárolás a kockázatmentesebb út. Jogi minősítést ez a cikk nem ad.

A lépéssor:

  1. Nyisd meg a fejlesztői eszközök hálózati fülét, szűrj a betűfájlokra, és írd fel, mi töltődik le ténylegesen.
  2. Szerezd be a szükséges vágatokat WOFF2 formátumban, latin és latin-ext részhalmazzal. WOFF2-n kívül másra ma már nincs szükség.
  3. Tedd a fájlokat a saját kiszolgálóra, például /fonts/ mappába, és állíts be hosszú gyorsítótárat: Cache-Control: public, max-age=31536000, immutable.
  4. Írd meg a szabályt: @font-face { font-family: 'Sajat'; src: url('/fonts/sajat-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
  5. Töröld az összes fonts.googleapis.com és fonts.gstatic.com hivatkozást. WordPressen ez általában több helyen van: a téma beállításai, az oldalépítő tipográfiája, egy ikonkészlet és néha egy bővítmény is behúzza.
  6. Frissítsd üres gyorsítótárral, és ellenőrizd a hálózati fülön, hogy egyetlen Google-domain sem szerepel a listában.

Melyik betűfájlt töltsd elő, és melyiket ne?

Rövid válasz: pontosan azt az egyet, amelyik a képernyő tetején elsőként látszó szöveget rajzolja, jellemzően a törzsszöveg normál vastagságát vagy a főcím vágatát.

A betűfájl felfedezése láncban történik: a böngésző letölti a HTML-t, abból a CSS-t, a CSS-t értelmezve derül ki, hogy kell egy betű, és csak akkor indul a letöltés. A preload ezt a láncot rövidíti le:

<link rel='preload' href='/fonts/sajat-400.woff2' as='font' type='font/woff2' crossorigin>

A crossorigin attribútum akkor is kötelező, ha a fájl a saját domainen van. Hivatalosan igazolt: a betűk letöltése névtelen CORS-módban történik, és enélkül a böngésző kétszer tölti le ugyanazt a fájlt. Ez az egyik leggyakoribb hiba.

Az előtöltés nem ingyenes: elveszi a sávszélességet a hero képtől és a CSS-től. Egy fájl, kivételes esetben kettő. Ha négy betűfájlt töltesz elő, valószínűleg lassítottál.

Hogyan hangold a tartalék betűt, hogy ne ugorjon a szöveg?

Rövid válasz: készíts egy külön @font-face szabályt, amely egy rendszerbetűt csomagol be, és méret-leírókkal közelíti a márkabetűd arányait.

Hivatalosan igazolt: a CSS Fonts Module Level 5 négy leírót ad erre: size-adjust, ascent-override, descent-override és line-gap-override. A minta így néz ki:

@font-face { font-family: 'Sajat Tartalek'; src: local('Arial'); size-adjust: 107%; ascent-override: 90%; descent-override: 22%; line-gap-override: 0%; }

Utána a családot így add meg: body { font-family: 'Sajat', 'Sajat Tartalek', system-ui, sans-serif; }

A százalékokat nem kell fejből tudni, létező kalkulátorok kiszámolják a két betű metrikáiból. A cél nem a tökéletes egyezés, hanem hogy a sortörések ugyanoda essenek. Saját tapasztalat: a betűből eredő elmozdulás nagy része már attól eltűnik, hogy a size-adjust értéket egy-két százalékos lépésekben addig állítod, amíg a főcím sortörése nem változik meg a cserekor.

Miért tűnik el az ő és az ű a részhalmazolásnál?

Rövid válasz: mert az ő, Ő, ű és Ű nem a latin, hanem a latin-ext készletben van, így aki csak latin részhalmazt tölt be, pont ezt a négy karaktert veszíti el.

Az á, é, í, ó, ú, ö és ü karakterek a Latin-1 kiegészítő tartományban vannak, ezért a szokásos latin részhalmaz tartalmazza őket. A kettős hosszú ékezetes betűk viszont a Latin Extended-A blokkba esnek (U+0150, U+0151, U+0170, U+0171), amit csak a latin-ext hoz magával. Az eredmény jellegzetes: a szöveg nagy része a márkabetűvel jelenik meg, de minden ő és ű helyén egy másik betűtípus karaktere ül, más vastagsággal és más szélességgel. Ez a magyar szövegben nem ritka kivétel, hanem szinte minden bekezdésben előfordul.

Ha saját részhalmazt gyártasz betűvágó eszközzel, add meg kézzel a unicode-range értékben a U+0100-017F tartományt, vagy legalább a négy karaktert. Az ellenőrzés viszont sokkal egyszerűbb: írd be tesztszövegnek az Árvíztűrő tükörfúrógép kifejezést, és nagyítsd fel. Ha bármelyik betű kilóg a sorból, hiányos a részhalmazod.

Hogyan méred meg, mit nyertél?

Rövid válasz: ugyanazon az URL-en, ugyanolyan körülmények között mérsz előtte és utána, laborban azonnal, terepen néhány hét múlva.

  1. Kiindulás rögzítése. Futtass Lighthouse mérést mobil beállítással, háromszor, és a mediánt jegyezd fel. Írd le a LCP, CLS és TBT értéket, valamint a betűfájlok számát és összméretét a hálózati fülről, kikapcsolt gyorsítótárral.
  2. Egy változtatás egyszerre. Előbb a vastagságok ritkítása, mérés. Aztán a helyi tárolás, mérés. Aztán a font-display és a tartalék hangolása, mérés. Ha egyszerre nyúlsz mindenhez, nem tudod, mi hatott.
  3. Nézd meg filmszalagon. A Performance panel vagy a WebPageTest képkockái megmutatják, hányadik másodpercben jelenik meg először olvasható szöveg. Ez a szám mond többet, mint a pontszám.
  4. Terepadat. A Search Console Core Web Vitals jelentése és a valós felhasználói adat huszonnyolc napos ablakkal dolgozik, tehát a tényleges hatás csak hetekkel később látszik. Ezt előre kommunikáld, különben a második napon jön a kérdés, hogy miért nem javult.

Saját tapasztalat: tipikus kkv-oldalon hat-nyolc betűfájl és nagyjából 150-300 kB betűforgalom szokott lecsökkenni két-három fájlra és 60-90 kB-ra. Ez mobilon érzékelhető javulást hoz a szöveg megjelenésének idejében, de konkrét számot vagy keresési helyezést senki nem ígérhet, mert a mérés az adott oldal, sablon és kiszolgáló függvénye.

Mi legyen az ellenőrzőlistán?

A betűtípus azért marad ilyen sokáig észrevétlen adósság, mert a hibája nem hibaüzenet, hanem egy fél másodperc kellemetlenség, amit a tulajdonos a saját gépén, meleg gyorsítótárral soha nem tapasztal meg. Az itt leírt lépések többsége egyszeri munka, és utána évekig dolgozik.

Források és további olvasnivalók

Amit érdemes megjegyezni
  • A FOIT (láthatatlan szöveg) és a FOUT (villanó betűcsere) között a font-display értékével te döntesz, nem a böngésző.
  • Két-három betűvastagság szinte minden kkv-oldalnak elég; minden további vastagság és dőlt változat külön letöltendő fájl.
  • A Google Fonts CDN-ről helyi WOFF2-re váltás sebességben és adatvédelmi kockázatban is javít, mert nem megy ki látogatói IP-cím külső szolgáltatóhoz.
  • A latin részhalmaz nem tartalmazza az ő és ű betűket, azokhoz latin-ext (U+0100-017F) kell.
  • Az elrendezés-elmozdulás nagy részét a tartalék betű size-adjust és ascent-override hangolása szünteti meg, nem a preload.

Gyakori kérdések

Melyik font-display értéket állítsam be, ha nem akarok sokat foglalkozni vele?

Ha csak egy értéket állítasz be és mást nem, válaszd az optional értéket: ez zárja ki teljesen a betűcseréből eredő elrendezés-elmozdulást, cserébe lassú kapcsolaton az adott oldalletöltésen rendszerbetűvel látszik a szöveg. Ha viszont hajlandó vagy a tartalék betűt is méretben hangolni, a swap ad jobb élményt, mert a márkabetű így is megjelenik, csak nem ugrik tőle az oldal.

Tényleg tilos a Google Fonts CDN-ről betölteni a betűtípust?

Hivatalosan nincs általános tiltás, és magyar hatósági döntést erről nem ismerünk. Van viszont egy német tartományi bírósági ítélet (Landgericht München I, 3 O 17493/20), amely egy konkrét ügyben jogsértőnek találta a hozzájárulás nélküli beágyazást, mert a látogató IP-címe kikerül egy külső szolgáltatóhoz. Mivel a helyi tárolás sebességben is jobb, és néhány óra munka, a kockázatmentesebb utat érdemes választani. Jogi minősítést ez nem helyettesít.

Miért tűnik el pont az ő és az ű betű, a többi ékezetes viszont jó?

Mert az á, é, í, ó, ú, ö és ü a latin részhalmazban van, az ő, Ő, ű és Ű viszont a Latin Extended-A tartományba esik (U+0150, U+0151, U+0170, U+0171), amit csak a latin-ext részhalmaz tartalmaz. Ha csak latin készletet töltesz be, ezt a négy karaktert a böngésző más betűtípusból rajzolja ki, ami vegyes, hullámzó szöveget eredményez. Gyors teszt: írd be az Árvíztűrő tükörfúrógép szöveget és nagyítsd fel.

Miért kell a crossorigin attribútum a preload sorba, ha a fájl a saját szerveremen van?

Mert a böngésző a betűfájlokat névtelen CORS-módban tölti le, függetlenül attól, hogy azonos vagy külső domainről jönnek. Ha a preload sorból hiányzik a crossorigin, az előtöltött fájl nem párosul a CSS által kért fájllal, és a böngésző kétszer tölti le ugyanazt. Ez a leggyakoribb preload-hiba.

Hány betűfájl az elfogadható egy kkv-weboldalon?

Két-három fájl a reális cél: egy normál törzsszöveg-vastagság, egy félkövér, és legfeljebb egy külön fejlécvágat. Ha dőlt változatot is használsz, számold hozzá. A gyakorlatban ritkán találkozunk olyan oldallal, ahol négynél több vastagság látható különbséget hozna, viszont minden fájl külön letöltés.

Mennyivel lesz gyorsabb az oldalam ezektől a beállításoktól?

Ezt nem lehet előre megmondani, mert a sablontól, a kiszolgálótól és a mostani állapottól függ. Tipikus induló helyzetből a betűforgalom jelentős csökkenése és a szöveg korábbi megjelenése reális várakozás, de garantált számot vagy keresési helyezést senki nem ígérhet. Mérd meg előtte és utána ugyanazon az URL-en, mobil beállítással, három futás mediánjával, a valós felhasználói adatot pedig néhány hét múlva nézd vissza.

Források és további olvasnivalók

Ezen az oldalon a hivatalosan igazolt információt elsődleges forrásokból építjük fel; a saját tapasztalatot és a szakmai becslést mindig külön jelöljük a szövegben.

A cikk szerzője

Schmidt Péter, online marketing szakértő, a Scheo Tanácsadó Kft. alapítója. Székesfehérvárról, országosan dolgozó csapattal végzünk keresőoptimalizálást, AI-láthatóság mérést, Google és Meta hirdetéskezelést, weboldalkészítést. Amit itt leírunk, azt ügyfélmunkában is használjuk. Rólunk bővebben · Szolgáltatásaink

Kapcsolódó olvasnivaló

Kapcsolódó

Ügynöki (agentic) böngészés: amikor nem ember nyitja meg az oldalad

Kapcsolódó

Az AI-ból érkező látogató más: mit várjon el tőle a céloldalad

Kapcsolódó

Amikor az AI-botok megterhelik a szervert: mit tegyél

Kapcsolódó

CLS-hibák felkutatása és javítása: miért ugrál az oldalad betöltés közben

Helyi szolgáltatás a környékeden

Országosan dolgozunk, online és személyesen. Válaszd ki a városodat, és nézd meg, hogyan segítünk helyben:

Online marketing & AI SEO VeszprémOnline marketing & AI SEO DunaújvárosOnline marketing & AI SEO GyőrOnline marketing & AI SEO DebrecenOnline marketing & AI SEO SzegedOnline marketing & AI SEO Miskolc

Weboldalkészítés városra bontva

Ha először a honlap kell, itt városonként arról írtunk:

Weboldalkészítés KecskemétWeboldalkészítés NyíregyházaWeboldalkészítés SzombathelyWeboldalkészítés SzolnokWeboldalkészítés TatabányaWeboldalkészítés Kaposvár

Mind a 20 városunk és az összes szolgáltatás →

15 perces AI-láthatósági gyorselemzés - díjmentesen

Megnézzük három, számodra fontos keresőkérdésnél, hogy megjelenik-e a céged a ChatGPT, a Gemini és a Google AI-válaszaiban, mely versenytársakat ajánlják helyetted, és melyik három területen érdemes először javítani. A weboldaladat előzetesen átnézzük, tehát nem sablonos, automata riportot kapsz.

Adataidat kizárólag a kapcsolatfelvételhez használjuk. Kapcsolat: m@rketinges.hu
💬 Konzultáció