İletişim

Web Fontu Nedir?

Kısa tanım

Web fontu, kullanıcının cihazında yüklü olması gerekmeden CSS'teki @font-face kuralıyla sunucudan indirilip sayfada kullanılan yazı tipi dosyasıdır; günümüzde standart format WOFF2'dir. Web fontları markaya uygun, tutarlı bir tipografi sağlar, ancak her biri ek bir indirmedir: geç gelen font metnin bir süre görünmez kalmasına (FOIT) veya font değişirken sayfanın kaymasına (FOUT) yol açabilir. font-display, preload ve alt kümeleme bu etkiyi yönetir.

Diğer adları: Web Font, @font-face, WOFF2, özel yazı tipi

Web fontu yüklenene kadar metnin yedek sistem fontuyla gösterildiği ve WOFF2 dosyası gelince fontun değiştirildiği zaman çizelgesi

Font neden geç keşfedilir?

Bir web fontu CSS'te şöyle tanımlanır:

@font-face {
  font-family: "Kurum Sans";
  src: url("/fonts/kurum-sans-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-display: swap;
}

Bu tanım tek başına indirme başlatmaz. Tarayıcı fontu ancak HTML'i ayrıştırıp CSS'i indirdikten, render ağacını kurduktan ve bu fonta ihtiyaç duyan görünür bir metin bulduktan sonra ister. Font, kritik render yolunun en sonunda keşfedilen kaynaklardan biridir; harici bir font servisinin CSS'i kullanılıyorsa zincire bir halka daha eklenir.

FOIT, FOUT ve font-display

Font gelene kadar tarayıcının iki seçeneği vardır: metni gizlemek (FOIT, flash of invisible text) veya önce yedek fontla gösterip font gelince değiştirmek (FOUT, flash of unstyled text). font-display bu davranışı belirler:

DeğerMetin gizli kalırFont gelirse değiştirilirUygun kullanım
blockYaklaşık 2–3 saniyeHer zamanİkon fontları gibi yedeğin anlamsız olduğu durumlar
swapHiçHer zamanMarka kimliği için fontun mutlaka görünmesi gereken başlıklar
fallbackYaklaşık 100 msYaklaşık 3 saniye içinde gelirseGövde metni için dengeli seçenek
optionalYaklaşık 100 msHayır; gecikirse o ziyarette yedek font kalırPerformansın öncelikli olduğu gövde metni

swap metni hemen gösterir ama değişim anında satırlar kayabilir; optional kaymayı önler ama yavaş bağlantıda markanın fontu hiç görünmeyebilir.

Değişimin yarattığı kaymayı azaltmak

Yedek font ile web fontunun harf genişlikleri ve satır yükseklikleri farklıysa değişim anında paragraflar yeniden akar ve bu CLS değerine yansır. @font-face içindeki size-adjust, ascent-override ve descent-override tanımlayıcılarıyla yerel bir yedek font, web fontunun ölçülerine yaklaştırılabilir. Bazı framework'ler bu ayarları derleme sırasında otomatik hesaplar.

Daha az bayt: WOFF2, alt kümeleme, değişken fontlar

  • WOFF2: Bugünün tarayıcılarında evrensel desteğe sahiptir ve WOFF'tan yaklaşık %30 daha iyi sıkıştırır. TTF veya EOT gibi eski formatları sunmaya genellikle gerek kalmaz.
  • Alt kümeleme (subsetting): Bir font binlerce karakter içerebilir; unicode-range ile her dil grubu ayrı dosyaya bölünür ve tarayıcı yalnızca sayfada geçen karakterlerin dosyasını indirir. Türkçe için dikkat edilmesi gereken nokta şudur: ç, ö ve ü temel Latin-1 aralığındayken ğ, ş, ı ve İ Latin Extended-A aralığındadır. Sadece “latin” alt kümesi yüklenirse bu harfler yedek fontla çizilir ve kelimelerin içinde farklı görünen harfler oluşur.
  • Değişken fontlar: Normal, kalın ve yarı kalın gibi ağırlıkları tek dosyada taşır. Üç dört ağırlık kullanan sitelerde ayrı dosyalardan daha hafif olabilir; tek ağırlık kullanılıyorsa gereksiz büyük olabilir.

Preload ve barındırma kararı

İlk ekranda kullanılan bir veya iki font için preload, tarayıcının fontu CSS'i beklemeden istemesini sağlar:

<link rel="preload" href="/fonts/kurum-sans-latin.woff2"
      as="font" type="font/woff2" crossorigin>

Fontlar CORS kipinde istendiği için crossorigin niteliği aynı alan adında bile gereklidir; unutulursa dosya iki kez indirilir. Preload'u gereğinden fazla font için kullanmak ise bant genişliğini daha kritik kaynaklardan çalar.

Fontları üçüncü taraf bir servisten almak ile kendi sunucunuzda barındırmak arasındaki performans farkı tek yönlü değildir. Tarayıcıların önbelleği siteye göre bölmesiyle “kullanıcıda zaten vardır” avantajı ortadan kalktı; harici servis ise ek bir bağlantı gerektirir ve bunun maliyeti preconnect ile ancak kısmen azaltılabilir. Kendi sunucusunda barındırmak, önbellek başlıklarını ve alt kümeleri kontrol etme imkânı verir ve ziyaretçinin IP adresinin üçüncü bir tarafa iletilmesini de önler. Font seçiminin okunabilirlik tarafı ise tipografi maddesinde ele alınıyor.

İlgili terimler

← Sözlüğe dön