
Web font formatları ve alt kümeleme: WOFF2 ve Türkçe
TTF, OTF ve WOFF2 arasındaki gerçek fark, alt kümelemenin neden en büyük kazanç olduğu ve Türkçe harflerin Latin-1 alt kümesinde nasıl kaybolduğu.

İsim alanına yapıştırdığınız süslü harfler kurulu bir yazı tipinden gelmez; matematik ve daire içi harf bloklarından gelir. Bunun nerede çalıştığı, nerede sessizce bozulduğu belli kurallara bağlı.
"Adopt Me fontu" ya da "Roblox fontu" diye aranıp bulunan kutulardan kopyalanan metin, cihazınıza kurulan bir yazı tipi dosyası değildir. Unicode karakterleri kodlar, glifleri değil: bir harfin ekranda nasıl çizildiği fonta aittir, ama o harfin hangi karakter olduğu dosyaya yazılan kod noktasında durur. Süslü görünen harfler, alfabenin normal harfleri değildir; bambaşka kod noktalarıdır.
Fark pratikte şuraya oturur: başkasının oyununa font kuramazsınız. Adopt Me ve Roblox kendi arayüz yazı tipini kullanır, sizin bilgisayarınızda ne yüklü olduğuyla ilgilenmez. İsim kutusuna yazdığınız şey sunucuya karakter dizisi olarak gider. Yani isimde "font değiştirmenin" tek mekanizması, harflerin yerine görsel olarak onlara benzeyen başka karakterler koymaktır. Unicode metin stilleri aracı tam olarak bunu yapar ve dönüşümü tarayıcıda, tablo üzerinden yürütür: yazdığınız metin sunucuya gitmez.
Bu stillerin neredeyse tamamı beş bloktan çıkar. Blok adlarını bilmek işe yarar, çünkü bir stilin nerede çalışıp nerede bozulacağını büyük ölçüde blok belirler.
| Blok | Aralık | Verdiği görünüm |
|---|---|---|
| Mathematical Alphanumeric Symbols | U+1D400–U+1D7FF | Kalın, italik, el yazısı, fraktur, çift çizgili, sans, daktilo |
| Halfwidth and Fullwidth Forms | U+FF00–U+FFEF | A B C: geniş aralıklı "vaporwave" görünümü |
| Enclosed Alphanumerics | U+2460–U+24FF | Ⓐ ⓐ ①: daire içine alınmış harf ve rakamlar |
| Enclosed Alphanumeric Supplement | U+1F100–U+1F1FF | 🄰 🅐: kare ve dolu daire içi harfler |
| Phonetic Extensions | U+1D00–U+1D7F | ᴀ ʙ ᴄ: küçük büyük harf (small caps) |
Altı çizili, üstü çizili ve "zalgo" türü stiller ayrı bir mekanizmaya dayanır: Combining Diacritical Marks bloğundaki (U+0300–U+036F) birleşen işaretler normal harfin arkasına eklenir. Harf yine normal harftir, üzerine bir işaret binmiştir. Bu yüzden altı çizili isimlerde karakter sayısı iki katına çıkar. Tek tek karakter aramak isterseniz Unicode sembol tarayıcısı her kod noktasının bloğunu ve gösterimini listeler.

Dört hızlı test ayrımı kesin olarak yapar.
Bu blokların hiçbiri tam alfabe değildir. Eksik olan yerlerde dönüştürücü karakteri olduğu gibi bırakır ve isim yarı stilli çıkar. Türkçe konuşan bir oyuncunun ilk çarpacağı duvar da budur.
Kuralı tersinden okumak daha kolay: bir stil ne kadar egzotik görünüyorsa alfabesi o kadar eksiktir. Kalın sans seti 26 büyük harf, 26 küçük harf ve 10 rakamın tamamını kapsar. İtalik setlerde rakam yoktur, çünkü Unicode'da italik rakam diye bir şey hiç kodlanmamıştır; dekoratif setlerde boşluk çok daha geniştir.
Aynı metin her alanda aynı davranmaz. Kullanıcı adı alanları genelde dar bir karakter listesine izin verir; görünen ad (display name) alanları daha esnektir. Bir stil reddediliyorsa sorun stilin kendisinde değil, o alanın doğrulama kuralındadır.
| Alan | Beklenti |
|---|---|
| Oyun içi kullanıcı adı | Çoğunlukla reddedilir; kayıt sırasında karakter listesi dar tutulur |
| Görünen ad, evcil hayvan adı, takas notu | Genelde çalışır, ama filtreye takılabilir |
| Sohbet ve durum metni | Çalışır; moderasyon filtreleri agresifse silinebilir |
| Instagram ve Discord biyografisi | Çalışır, en güvenli kullanım alanı burasıdır |
| Word, e-posta, form alanı | Görünür ama arama, sıralama ve otomatik tamamlamayı bozar |
Platforma göre hangi stillerin ayakta kaldığını görmek için Adopt Me isim stüdyosu, Roblox yazı stilleri, Discord ve Instagram sayfalarında setler o alanın karakter sınırına göre ayıklanmıştır. Yine de tek güvenilir yöntem, ismi gerçekten kaydetmeyi denemektir.
Kod noktalarının resmi adı burada belirleyici oluyor. U+1D5D4 karakterinin Unicode'daki adı "MATHEMATICAL SANS-SERIF BOLD CAPITAL A"dır. Bu karakter A harfinin kalın hali değildir; matematik notasyonu için ayrılmış, ayrı kimliği olan bir semboldür.
Ekran okuyucular metni karakter kimliğine göre seslendirir. Bir kelimeyi tanıyamadığında karakterleri tek tek adlarıyla okur ya da hiç okumaz. Matematiksel alfabeyle yazılmış bir isim bu yüzden ya bir dizi sembol adı olarak, ya "bilinmeyen karakter" tekrarları olarak, ya da hiç okunmaz. Ekran okuyucu kullanan bir oyuncu sizin isminizi öğrenemez. Birleşen işaretli stiller daha da kötüdür: her harfin ardından ek bir işaret geldiği için okuma tamamen parçalanır.
Bu, kozmetik bir sorun değil. WCAG'in okunabilirlik başlığı metnin makine tarafından anlaşılabilir olmasını ister; harflerin yerine sembol koymak tam olarak bu katmanı bozar. Aynı sebeple isim, sıralamada yanlış yere düşer, etiketleme ve arama kutusunda bulunamaz, otomatik tamamlamaya hiç girmez.
Platformların bu karakterleri filtrelemesinin sebebi de aynı yerden gelir: küfür ve taciz filtreleri normal harflere bakar, matematiksel alfabeyle yazılmış aynı kelime filtreden geçer. Bu yüzden birçok oyun ve sosyal ağ bu blokları kullanıcı adında baştan yasaklar.
Unicode'un normalleştirme biçimlerinden NFKC, uyumluluk eşlemesi yapar: matematiksel alfabeleri, tam genişlikli formları ve daire içi harfleri düz ASCII karşılıklarına geri çevirir. Kullanıcı adını NFKC ile normalleştiren bir sistemde 𝗔𝗕𝗖 kaydedilirken sessizce ABC olur. Kayıt kabul edilir, süs kaybolur ve neden kaybolduğu hiçbir yerde yazmaz. Bir isim "bir yerde çalışıp başka yerde çalışmıyorsa" sebebi genelde budur.
İki ayrı iş olduğunu kabul etmek çözümü kolaylaştırır. Küçük resim, afiş, kanal görseli gibi yerlerde gerçekten font kullanırsınız: lisansını aldığınız bir .ttf veya .otf dosyasını bir grafik programında yükler, istediğiniz kalınlığı ve kerningi elde edersiniz. Orada Unicode numarasına ihtiyacınız yoktur, çünkü çıktı bir görseldir.
İsim, biyografi ve sohbet gibi metin alanlarında ise tek mekanizma Unicode'dur, ama seçici olmanız gerekir. Alfabesi tam olan bir set seçin, sonucu kopyalamadan önce rakamlarınızın ve Türkçe harflerinizin yerinde durduğunu görün, süslemeyi bir iki karakterle sınırlayın. Ayırıcı ve çerçeve için emoji genelde daha güvenli bir seçimdir, çünkü emoji filtrelenmez ve ekran okuyucuda gerçek bir adı vardır; emoji seçici kod noktasıyla birlikte kopyalamanıza izin verir.
Oyunun kendi arayüzünde kullandığı bir yazı tipi var, ama onu isim alanına uygulayamazsınız. İsim kutusuna yazdığınız şey sunucuya karakter olarak gider; oyun sizin cihazınızdaki fontlara bakmaz. Dışarıda 'Adopt Me fontu' diye anlatılan şey, matematiksel ve daire içi harf bloklarından gelen Unicode karakterleridir.
Kullandığınız blok tam bir alfabe içermiyor. Türkçe harfler (ç, ğ, ı, ö, ş, ü) bu blokların hiçbirinde yok; kare ve dolu daire içi setlerde rakam yok; small caps setinde x yok; alt simge setinde dokuz harf eksik. Eksik karakterler olduğu gibi geçer ve isim yarı stilli görünür.
Kullanıcı adı alanları genelde dar bir karakter listesiyle doğrulanır ve bu bloklar listede yoktur. Ayrıca küfür filtreleri normal harflere baktığı için bu karakterler filtre atlatma yöntemi sayılır ve baştan engellenir. Görünen ad, evcil hayvan adı ve durum metni alanları çoğunlukla daha esnektir.
Çoğu durumda hayır. U+1D5D4 karakterinin adı 'MATHEMATICAL SANS-SERIF BOLD CAPITAL A'dır, yani A harfi değil ayrı bir semboldür. Ekran okuyucu ya sembol adlarını tek tek okur, ya 'bilinmeyen karakter' der, ya da atlar. Birleşen işaretli stillerde okuma tamamen parçalanır.
İki sebep var. Birincisi cihazda o kod noktasını kapsayan bir font yoksa boş kutu çıkar. İkincisi sistem girdiyi NFKC ile normalleştiriyorsa matematiksel ve tam genişlikli harfler otomatik olarak düz ASCII'ye döner; kayıt kabul edilir ama süs kaybolur.

TTF, OTF ve WOFF2 arasındaki gerçek fark, alt kümelemenin neden en büyük kazanç olduğu ve Türkçe harflerin Latin-1 alt kümesinde nasıl kaybolduğu.