Web Performance

Ang mga web font pa rin ang pinakamadaling panalo sa performance sa karamihan ng site

Limang taon matapos ilabas ang variable fonts at sampung taon matapos maging pangkalahatan ang WOFF2, mali pa rin ang pag-load ng fonts ng karaniwang site. Narito ang maikling bersyon kung paano ito gawin nang tama.

The Wux Webtools Team The Wux Webtools Team 4 min basahin
Editorial illustration of a single bold letter glyph with subtle weight axis lines, soft green palette
Talaan ng nilalaman
  1. Ang pattern na paulit-ulit lumilitaw
  2. Gumamit ng isang variable font sa halip na anim na static
  3. Magtakda ng makatwirang `font-display`
  4. Itugma ang iyong fallback metrics
  5. Mag-self-host
  6. Kailan dapat laktawan nang buo ang custom fonts
  7. Ang tapat na buod

Ang pattern na paulit-ulit lumilitaw

Kung mag-audit ka ngayon ng sampung random na production website, makikita mo ang halos parehong sitwasyon sa font sa karamihan sa kanila:

  • Anim hanggang sampung font file ang nilo-load sa home page
  • Lahat ay nasa WOFF2 (maganda) pero walang font-display strategy (hindi maganda)
  • Ilang weight at style na hindi ginagamit kahit saan sa page
  • Ang buong stack ay sine-serve mula sa third-party domain (karaniwan, Google Fonts) kasama ang lahat ng DNS, TLS at privacy cost na kaakibat nito
  • Walang unicode-range subsetting, kaya dina-download ng bawat visitor ang Cyrillic at Greek glyphs kahit nasa English ang page

Hindi lang ito problema ng maliliit na site. Maraming marketing page na may maayos na pondo ang naglo-load pa rin ng 600 KB ng fonts bago maging paintable ang unang talata. Kapag napansin mo na ang pattern, hindi mo na ito maaalis sa paningin.

Hindi exotic ang solusyon. Ilang teknik lang ito na matagal nang naiintindihan at ilang taon nang nasa browsers.

Gumamit ng isang variable font sa halip na anim na static

Kung nilo-load mo ang Inter Regular, Inter Medium, Inter SemiBold, Inter Bold at ang kanilang italics, nagda-download ka ng halos anim na beses na mas maraming bytes kaysa kailangan mo. Saklaw ng isang Inter variable font ang buong weight axis (at slant, sa ilang build) sa isang file na bahagya lang na mas malaki kaysa dalawang static weight.

Matagal nang settled ang kuwento ng browser support — gumagana ang variable fonts saanman mahalaga. Ang natitirang pag-aalinlangan ay kadalasang minanang muscle memory mula sa static-font era.

Praktikal na rule of thumb: isang variable font file bawat script, bawat family. Latin sa isang file, Cyrillic sa isa pa, Greek sa ikatlo, na nilo-load nang conditional gamit ang unicode-range. Iyon lang.

Magtakda ng makatwirang font-display

Ang default na kilos kapag naglo-load pa ang custom font ay magpakita ng wala — invisible text — nang hanggang tatlong segundo. Ito ang pinakamasamang posibleng default. Nakakakita ang users ng blank page at inaakalang may sira.

Idagdag ito sa bawat @font-face rule:

@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter-var.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-display: swap;
}

Ipinapakita ng swap ang fallback font agad at ipinapalit ang custom font kapag na-load ito. Mababasa ng user ang page mula millisecond zero. Ang kapalit ay isang maikling layout shift kapag nangyari ang swap, na mababawasan mo gamit ang susunod na teknik.

Itugma ang iyong fallback metrics

Nagiging nakakagulat lang ang flash of unstyled text kapag magkaibang-magkaiba ang metrics ng fallback at custom font. Inaayos ito ng modernong CSS gamit ang size-adjust, ascent-override at mga kaugnay nito:

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

Kapag naka-tune ang fallback metrics, halos hindi napapansin ang swap — pareho ang horizontal space na kinukuha ng mga salita bago at pagkatapos dumating ang custom font.

Ang gawain ng Google sa --allow-fallback-font-metrics ay bahagi na ngayon ng baseline browser support, at may tooling pipeline (ang fontaine library at mga katulad nito) na kumakalkula ng tamang mga numero para sa iyo sa loob ng ilang segundo.

Mag-self-host

Maginhawa at libre ang Google Fonts, at may dala itong dalawang tunay na gastos:

  1. Isang pangalawang TLS handshake. Kahit may HTTP/3 at connection coalescing, bihirang libre ang dagdag na origin.
  2. Isang tanong sa privacy at compliance. Ilang korte sa Europe ang nagpasya na ang pag-load ng Google Fonts mula sa fonts.gstatic.com ay nangangahulugang pagpapadala ng personal data (ang IP address) sa third party. Ganap na inaalis ng self-hosting ang tanong.

Ang download-and-host pipeline ay:

  1. Kunin ang WOFF2 file (variable build kung mayroon)
  2. I-subset ito sa mga script na aktuwal na ginagamit ng audience mo
  3. I-serve ito mula sa parehong origin ng natitirang bahagi ng site mo, gamit ang mahabang Cache-Control: max-age=31536000, immutable
  4. I-preload ang pinakamahalagang weight: <link rel="preload" as="font" type="font/woff2" href="/fonts/inter-var.woff2" crossorigin>

Iyan ang buong pipeline. Kailangan nito ng isang hapon para sa kasalukuyang site, at halos hindi ka na babalik.

Kailan dapat laktawan nang buo ang custom fonts

Sulit sabihin nang malinaw: hindi lahat ng site ay nangangailangan ng custom font. Tunay nang maganda ang system font stack sa bawat operating system:

font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Inter, sans-serif;

Tama ang weight, tama ang metrics, naka-tune ang rendering para sa device, at eksaktong zero ang bytes-on-the-wire cost. Para sa tools site, internal app, portfolio na inuuna ang content, o anumang nakatuon sa users na nasa mababagal na network, ang system stack ang tamang sagot.

<!-- tool-cta:start -->

💡 Subukan ito: I-convert ang iyong mga TTF o OTF file sa modernong WOFF2 na may handa nang gamiting CSS gamit ang Webfont Generator, na siyang format swap na inirerekomenda ng post.

<!-- tool-cta:end -->

Ang tapat na buod

Para sa tipikal na maliit na site, apat na hakbang ang sumasaklaw sa buong kuwento ng web-font performance:

  1. Isang variable font bawat family bawat script
  2. font-display: swap na may tugmang fallback metrics
  3. Self-hosted na may mahahabang cache header at preload para sa critical weight
  4. O laktawan nang buo ang fonts at gamitin ang system stack

Gawin ito nang isang beses at mababawi mo ang ilang daang kilobyte mula sa home page, makakakuha ng ilang daang millisecond ng perceived performance, at maaalis ang isang third-party dependency habang ginagawa ito. Kakaunti ang mga pagbabago na may mas magandang effort-to-payoff ratio.

Four-step checklist for faster web fonts: variable font, font-display swap with matched fallback metrics, self-host with cache and preload, or use system stack
InfographicThe 4-step web font performance fix — A compact playbook for reclaiming several hundred kilobytes and improving perceived performance
Comparison of six static font files versus one variable font file with script-based subsetting for Latin, Cyrillic, and Greek
InfographicFrom six static font files to one variable font — One variable file can replace a pile of weights and italics with far fewer bytes
Four-step self-hosted font pipeline: get WOFF2 variable file, subset by script, serve from same origin with immutable cache, preload critical weight
InfographicSelf-hosting web fonts: the simple delivery pipeline — A same-origin font pipeline cuts extra origin cost and removes the privacy question

Mga madalas itanong

Supported ba ang variable fonts saanman?
Oo — ilang taon nang may variable font support ang bawat browser na mahalaga. Ang pag-aalinlangang naririnig mo paminsan-minsan ay muscle memory mula sa static-font era; hindi ito tunay na compatibility concern sa 2026.
Dapat ko bang i-subset nang manual ang fonts ko?
Para sa Latin-only na mga site, oo — ang Latin subset ay halos kalahati ng laki ng buong multilingual file. Para sa multilingual na mga site, gamitin ang `unicode-range` para i-load ang bawat script bilang hiwalay na file, para ang dina-download lang ng visitors ay ang aktuwal na kailangan ng kanilang content.
Bakit minsan nagdudulot ang font-display: swap ng pangit na flash?
Dahil iba ang metrics ng fallback font sa custom font, kaya nagre-reflow ang mga salita kapag nangyari ang swap. Gamitin ang `size-adjust`, `ascent-override` at `descent-override` sa fallback para itugma sa metrics ng custom font — halos hindi na makikita ang flash.
Talaga bang privacy issue ang Google Fonts?
Ilang desisyon ng korte sa Europe ang nagpasya na ang pag-load mula sa `fonts.gstatic.com` ay nagpapadala ng IP ng visitor sa third party nang walang consent, na isang paglabag sa GDPR sa ilang interpretasyon. Ganap na inaalis ng self-hosting ang tanong at kadalasan ay mas mabilis pa rin.

Mga mapagkukunan at karagdagang pagbabasa

  1. MDN — `@font-face` and `font-display`
  2. MDN — Variable fonts guide
  3. web.dev — Reduce web font size
Tungkol sa may-akda
The Wux Webtools Team

Huling na-update:

Patuloy na magbasa