Türkçenin altı özel harfinden üçü, ç, ö ve ü, Fransızca ve Almancada da kullanıldığı için Google Fonts’un temel “latin” parçasında bulunur. Noktasız ı da bu parçaya eklenmiştir. Geri kalan ğ, ş ve noktalı büyük İ ise “latin-ext”, yani genişletilmiş Latin parçasında durur. Bir sayfada “yağmur” yazdığınızda tarayıcının iki ayrı font dosyası indirmesinin nedeni budur.
Bu yazıda latin-ext’in ne olduğunu, eski temalarda görülen subset=latin-ext parametresinin bugün ne işe yaradığını ve bir fontun latin-ext desteklemesinin neden Türkçeyi desteklediği anlamına gelmediğini anlatıyoruz.
Alt küme ne demek?
Google Fonts bir yazı tipini tek büyük dosya olarak göndermez. Dosyayı alfabelere ve karakter gruplarına göre parçalara böler. Bu parçalara alt küme (subset) denir: latin, latin-ext, cyrillic, greek, vietnamese gibi. Google’ın CSS dosyasında her parça ayrı bir @font-face kuralıyla tanımlanır ve her kuralın yanında hangi karakterleri kapsadığını söyleyen bir unicode-range satırı bulunur.
MDN’in unicode-range açıklaması mekanizmayı tek cümlede anlatıyor: sayfa bu aralıktaki karakterlerden hiçbirini kullanmıyorsa font indirilmez, en az birini kullanıyorsa dosyanın tamamı indirilir. Türkçe bir sayfada hem “çiçek” (latin parçası) hem “şehir” (latin-ext parçası) geçtiği için tarayıcı iki dosyayı da ister. Yalnızca İngilizce bir sayfa ise latin-ext dosyasını hiç indirmez.
Ölçümümüzde ayrıntılı sayfası olan 200 fontun Türkçe için gereken iki parçasının ortanca boyutu temel Latin için yaklaşık 27,6 KB, genişletilmiş Latin için 18,3 KB çıktı. Bu ortanca değerlerle Türkçe bir sayfa, yalnız temel Latin parçasını indiren İngilizce bir sayfaya göre aynı font için kabaca üçte iki daha fazla veri indiriyor. Bu bir sorun değil, ama boyutların fonttan fonta çok değiştiğini bilmekte yarar var. Noto Sans değişken dosyasının genişletilmiş Latin parçası 164 KB tutarken Lora için aynı parça 19,6 KB.
subset=latin-ext parametresi bugün ne işe yarıyor?
2013–2016 arasında yazılmış Türkçe forum cevaplarının çoğu “bağlantıya &subset=latin-ext ekleyin” der. O yıllarda bu, Türkçe harflerin görünmesi için gerçekten gerekiyordu. Google’ın güncel belgesi ise durumu şöyle açıklıyor: Latin parçası mevcutsa her zaman eklenir; tarayıcı unicode-range destekliyorsa subset parametresi yok sayılır ve tarayıcı fontun desteklediği parçalar arasından kendisi seçer.
Bugün kullanılan tarayıcıların hepsi unicode-range desteklediği için bu parametre pratikte etkisizdir. Google’ın CSS dosyası zaten latin-ext parçasını tanımlar ve sayfada ğ geçtiği anda o parça yüklenir. Parametreyi bağlantıda bırakmanın zararı yoktur. Sorunu çözdüğünü düşünmek ise yanıltıcıdır, çünkü asıl sorun başka yerdedir.
text= parametresi ve Türkçe
Aynı belge text= parametresinden de söz ediyor: logo ya da tek bir başlık gibi hangi karakterlerin kullanılacağı belli olan yerlerde yalnız o karakterleri içeren küçük bir dosya istenebilir. Belgeye göre bu dosyayı yüzde 90’a kadar küçültebilir ve UTF-8 karakterlerle de çalışır. Türkçe bir başlık için bu parametreye “Güneşli Ağaçlar” yazdığınızda ğ, ş ve ü de URL kodlamasıyla gönderilmelidir. Font o harfleri çizmiyorsa Google eksik karakteri ekleyemez; dosya küçülür ama harf yine başka bir fonttan gelir.
latin-ext var, Türkçe yok
Asıl tuzak şu: Google Fonts’un bir fontu “Latin Extended” destekli göstermesi, o fontun genişletilmiş Latin bloğundaki her harfi çizdiği anlamına gelmez. latin-ext parçası, fontun o aralıkta çizdiği karakterlerden oluşur. Bir tasarımcı Lehçe ve Çekçe harfleri çizip Türkçe harfleri atlamışsa font yine latin-ext parçasına sahip olur.
20 Ekim verisinde Türkçe harflerden en az birini çizmeyen 566 aile saydık. Bunların 303’ünde latin-ext parçası hiç yok; bu aileler zaten Türkçe için uygun görünmüyor. Kalan 263 ailede ise latin-ext parçası var ama Türkçe harflerden en az biri eksik. Bu ikinci grup, Google Fonts arayüzünde Türkçe destekli gibi görünen ve en çok şaşırtan grup.
En çarpıcı örnek, Google Fonts popülerlik sıralamasında 9. olan Lato. Google’ın Lato için yayımladığı karakter listesinde latin-ext parçası Ą, Ę, Ł, Ń, Ś, Š, Ź, Ż, Ž gibi Lehçe ve Çekçe harfleri içeriyor; Ğ, ğ, İ, Ş ve ş ise yok. Lato ile yazılmış “Şişli’de bir İskele” başlığında Ş, ş ve İ başka bir fonttan gelir. Ayrıntısını Lato yazımızda anlattık.
Hangi harfler en sık eksik?
Türkçesi eksik 566 ailede her harfin kaç ailede bulunmadığı:
| Harf | Bulunmayan aile |
|---|---|
| İ (noktalı büyük i) | 553 |
| Ğ / ğ | 546 / 545 |
| Ş / ş | 545 / 545 |
| ı (noktasız küçük ı) | 148 |
| ç, ö, ü ve büyükleri | 92–99 |
En sık görülen eksik deseni “Ğ ğ İ Ş ş” beşlisi; 395 ailede tam olarak bu beş harf yok. Yani bu fontların tasarımcıları ç, ö, ü ve ı’yı çizmiş ama genişletilmiş Latin bloğundaki Türkçe harfleri atlamış. ç, ö ve ü’nün de eksik olduğu 98 ailenin 82’si ise asıl olarak Japonca, Korece, Arapça ya da Hint alfabeleri için çizilmiş ve Latin harflerini yalnız İngilizce düzeyinde taşıyan fontlar; geri kalanlar barkod fontları ve Avustralya okulları için hazırlanmış el yazısı aileleri.
Şapkalı â, î ve û hiçbir ailede eksik çıkmadı. Bu harfler temel Latin bloğunda olduğu için Batı Avrupa dillerini destekleyen her font onları çiziyor. TDK’nin “kâğıt”, “hâlâ” ya da “resmî” gibi yazımlar için kullandığı düzeltme işaretinden bu açıdan endişe etmenize gerek yok.
Yalnız İ eksik olanlar
Bir grup font Türkçenin bütün harflerini çiziyor ama yalnızca noktalı büyük İ’yi ya da noktasız ı’yı atlıyor. Atkinson Hyperlegible, Titan One ve Radley yalnız İ’yi çizmeyen ailelerden. Bu fontlarla küçük harfli metin çoğunlukla sorunsuz görünür; sorun “İSTANBUL” gibi büyük harfli başlıklarda ya da cümle başındaki “İlk” sözcüğünde çıkar. Bir fontu yalnız küçük harfli örnek metinle denediyseniz bu eksik gözden kaçabilir.
Neden Google’ın dil listesine bakmak yetmiyor?
Google Fonts her aile için desteklediğini düşündüğü dillerin bir listesini de yayımlıyor. Türkçe tam bulduğumuz 1.263 ailenin 1.083’ünde bu listede Türkçe yazılı. Listede Türkçe yazıp harfi eksik olan aileye rastlamadık; bu açıdan liste güvenilir. Ama tersi geçerli değil: harflerin hepsini çizdiği hâlde listede Türkçe görünmeyen 180 aile var. Bunların büyük kısmı Noto Sans Arabic ya da Noto Sans Thai gibi, Latin harflerini yan alfabe olarak taşıyan aileler. Google’ın arayüzünde “Türkçe” filtresiyle arama yaparsanız bu aileleri görmezsiniz.
CLDR’nin Türkçe için tanımladığı temel harf listesi de ilginç bir ayrıntı veriyor: listede ç, ğ, ı, İ, ö, ş, ü var; â, î, û ise yardımcı harfler arasında. Bizim ölçümümüz TDK yazım kurallarında geçtikleri için şapkalı harfleri de zorunlu sayıyor.
Kendi fontunuzu nasıl kontrol edersiniz?
- Fontun adını font listemizde aratın. Satırda “Türkçe eksik” yazıyorsa hangi harflerin eksik olduğu da yanında görünür.
- Kendi sayfanızda büyük harfli bir sınama satırı kullanın: “IĞDIR’DA ŞİŞLİ’YE ÇIKIŞ”. Bu satır İ, I, Ğ, Ş, Ç ve ’ işaretini birlikte gösterir.
- Tarayıcı geliştirici araçlarında metni seçip “Rendered fonts” (işlenen fontlar) bölümüne bakın. Orada iki font adı görüyorsanız bazı harfler yedek fonttan geliyordur.
Popüler ama Türkçesi eksik fontların toplu listesi ve aynı gruptan Türkçe tam seçenekler Türkçesi eksik fontlar sayfasında. Ölçümün nasıl yapıldığını veri ve yöntem sayfasında okuyabilirsiniz.