CSS font-family önerileri
(chrismorgan.info)- Web’de belirli bir font adına güvenerek tasarım yaparsanız, platform, ağ ve güvenlik ayarlarına bağlı olarak bozulabilir; bu yüzden
font-familygenel aile fallback varsayımıyla kurgulanmalı - Sabit genişlikli gösterim gerektiren kod, artwork ve düzenlerde
monospacemutlaka yer almalı;serifvesans-serifiçin de istenen aileyi garantiye almak istiyorsanız birlikte belirtmek daha güvenlidir - Yerelde bulunması muhtemel fontları uzun uzun sıralayan stack’ler çoğu zaman pek fayda sağlamaz; tarayıcının genel aile varsayılanları daha iyi bir seçim yapabilir
- Web fontları, hiç web fontu olmamasına göre daha yavaştır ve yükleme hataları ile
font-displayödünleşimleri yaratır; bu yüzden içerikte kullanıcının varsayılan fontunu olduğu gibi kullanmak da gerçekçi bir tercihtir system-uiveui-*, kısa UI metinlerine yönelik olma eğilimindedir; uzun içerik ve dil desteğiyle uyumlu olmayabilir, bu yüzden içerik için varsayılan font alternatifi olarak kullanmak risklidir
Font adlarına güvenmeyin
- Tüm büyük platformlarda ortak olarak sunulan web-safe font yoktur; bu nedenle belirli bir font adının her zaman çalışacağını varsaymamak gerekir
- Web fontları da kesin bir çözüm değildir
- Inline edilmeyen alt kaynaklar çeşitli ağ nedenleriyle yüklenemeyebilir
- Font yükleme, güvenlik kaygıları olan bir alandır; bazı ortamlarda engellenebilir
- uBlock Origin’de uzak fontları devre dışı bırakmak için özel bir düğme vardır
- Bazı tarayıcıların veri tasarrufu modu font yüklemeyi engelleyebilir; engellemediği durumlarda da engellemesi gerektiği görüşü vardır
- Kullanıcı web sitesinin kendi font seçimine izin vermezse yalnızca genel aileler çalışır
- JavaScript’te
document.fonts.load("1em my-web-font")kullanılırsa dönen Promise reject olabilir- 2020–2025 arasındaki 6 yılda bu yüzden bozulan yaklaşık 4 örnek gördüm; bunlardan 2’si 2025’te yaşandı
Yedek aileyi mutlaka belirtin
- Sabit genişlikli metin gerekiyorsa
font-familyiçinde mutlakamonospacebulunmalımonospaceeksikliği birçok kullanıcıya görünmez, ancak bazı ortamlarda düzeni veya eserin niyetini bozabilir- Örneğin Adel Faure’un ASCII might fly? çalışmasında, yazıldığı sırada
monospaceeksikti ve sabit genişlikli olmayan bir biçimde görünebilir
- İstenen font ailesi için fallback gerekiyorsa
serifveyasans-serifde eklemek iyi olur- Örnek:
font-family: Arial, sans-serif; - Örnek:
font-family: Times New Roman, serif; - Eklenmezse varsayılan font kullanılır; varsayılan font serif olabilir ama tamamen başka bir şey de olabilir
- Örnek:
Kurulu olması muhtemel font listelerini azaltın
Arial,Helvetica,Helvetica Neue,Liberation Sans,Noto Sansgibi sistemde bulunması muhtemel fontları uzun uzun listelemek genelde yardımcı olmaz- Özellikle Arial’ın
sans-seriften daha iyi bir seçim olacağı bir durum olmadığını düşünüyorum sans-serif, belirtilen fontlardan daha kötü olmayan bir font olarak yorumlanabilir; hatta daha iyi bir fontun seçilme ihtimali de vardır- Gerçekte gördüğüm bir sabit genişlik bildirimi örneği aşırı uzun bir listedir
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif- Bu bildirim,
font-family: monospace, monospaceten kesin olarak daha kötüdür;monospace, bu listedekilerden daha kötü olmayan bir font olarak yorumlanabilir
- Adı verilmiş web dışı fontları tamamen yasaklamak gerekmez, ancak en fazla bir tane uygun olur
- Georgia) ve Times New Roman, ikisi de Microsoft’un Core fonts for the Web paketindeki serif fontlardır, ancak karakterleri farklıdır
- Georgia, Times New Roman’dan çok daha geniştir; stil açısından bu özellik gerekiyorsa
font-family: Georgia, serifkabul edilebilir bir tercihtir
- modernfontstacks.com ve deposu, platforma göre font seçimi fikirleri içerir
- Ancak adlandırılmış fontları fazlasıyla reçete eder; birçoğunun kaldırılmasının daha iyi olacağı değerlendiriliyor
- Courier New işlemesi ciddi biçimde yanlıştır ve görüntüler macOS Courier ile oluşturulmuş gibi görünür
Yalnızca genel aileleri kullanma tercihi
- Yerel kurulu font listelerini azalttıysanız, web fontunun gerçekten gerekli olup olmadığını yeniden değerlendirebilirsiniz
- Web fontları, web fontu olmamasına göre daha yavaştır ve yükleme sorunları yaratabilir
- Bu nedenle
font-displayvardır - Ancak block/swap süreleri, yeniden çizim ve reflow arasındaki ödünleşimlerle uğraşmak yerine kullanıcının sahip olduğu fontu olduğu gibi kullanmak da mümkündür
- Bu nedenle
monospaceiçin de yalnızca genel aileyi kullanma tercihi mümkündür- Geçmişte
monospacevarsayılanı iyi değildi; özellikle Microsoft’un Courier New#Courier_New) fontu hatalı dijitalleştirildiği için 400 değil, fiilen 200–250 weight gibi görünüyordu - Daha sonra Apple Menlo)yu tanıttı; tarayıcıların varsayılan
monospacedeğerlerinin güncellenmediği dönemde insanlar font stack’lerine Menlo eklemeye başladı - Günümüzde tarayıcı varsayılanlarının hepsi daha iyi hale geldi; her durumda harika olmasalar da artık kötü değiller
- Geçmişte
Menlo, Monaco, Consolas, Bitstream Vera Sans Mono, Courier, Courier Newgibi listeleri bırakıp yalnızcamonospacebırakmayı tercih edebilirsinizCourier New’ü bilinçli olarak font stack’ine koymak güçlü biçimde olumsuz değerlendiriliyor
monospace, monospace ve tarayıcı davranışı
font-family: monospace;açık veya örtük biçimde kullanılırsafont-sizevarsayılan olarak 100% değil, muhtemelen 81.25% ayarlanabilir- Kullanıcılar genel aile fontunu, varsayılan yazı boyutunu ve varsayılan sabit genişlikli yazı boyutunu değiştirebilir
- Listede ikinci bir family varsa bu davranış gerçekleşmez
font-family: my-web-font, monospace;uygundurfont-family: monospace, monospace;de uygundur- Doğrudan
font-sizebelirtmek de mümkündür
- Lightning CSS’in
monospace, monospacei bozan bir sorunu var- İlgili issue: parcel-bundler/lightningcss#1221
- Geçici olarak
monospace, mkullanılıyor
- Bu sorun yalnızca
monospacei etkiler - Tarayıcıların
monospaceboyutu davranışını bırakmaya ve muhtemelen 13px olan değeri muhtemelen 16px’e çıkarmaya ikna edilmesi gerektiği görüşü var- Öneri yeri CSSWG olabilir
İçerikte system-ui ve ui-* kullanmayın
- UI fontları uzun içerik için değil, kısa UI metinleri içindir
- UI fontları içerik dilini iyi desteklemeyebilir
- macOS bu konuda iyi, ancak Windows’un iyi olmadığı düşünülüyor
- Sonuç olarak CJK kullanıcılarının kötü sabit genişlikli font görmesi gibi örnekler ortaya çıkabilir
- Bazı kullanıcılar kasıtlı olarak gülünç sistem UI fontları seçmiş olabilir; bunun bazı Android topluluklarında oldukça yaygın olduğu söyleniyor
system-uikullanılırsa içeriğin de öyle görünebileceği endişesi var
- w3c/csswg-drafts issue #3658,
system-uinin çeşitli sorunlarını tartıştı vesystem-uinin yaygın biçimde kötüye kullanıldığı sonucunu içeriyor - mdn/content issue #41244, MDN’e aşırı kullanıma karşı uyarı veren bir note ekledi
system-uiveui-*, daha iyi varsayılan font elde etmek için proxy gibi kullanılageldi; ancak bu kullanım iyi değildirsystem-uinin bir hata olduğu görüşü var- Yalnızca
-apple-systembırakılmalı veBlinkMacSystemFontun ona dönüşmesi sağlanmalıydı görüşü var - Standartlaştırma sırasında diğer platformlarda yararlı bir eşdeğer kavram yoktu; bugün bazı platformlarda ortaya çıktığı düşünülüyor
- Mevcut genel ailelerin eskimiş varsayılanlarını tarayıcıların güncellememesi sorununu aşmak için çoğunlukla kötüye kullanıldığı düşünülüyor
- Yalnızca
ui-serif,ui-sans-serif,ui-monospaceve özellikleui-roundedın kaldırılması gereken açık hatalar olduğu görüşü var- Apple dışı ortamlarda herhangi bir fonta eşlenmesi beklenmez
- Kavramın kendisi yalnızca Apple platformlarında bulunduğu için standarda dahil edilmemeliydi
- Apple sağlamış olsaydı
-apple-systemgibi-appleönekli bir biçimde olmalıydı görüşü var
- Web uygulamalarında
system-uiiçin meşru kullanım örnekleri vardır, ancak gerçekte neredeyse tamamen kötüye kullanıldığı izlenimi var; kaldırmaya yönelik müdahale de kötü olmayabilir
1 yorum
Lobste.rs yorumları
https://lindenii.org, font-family’yi hiç belirtmeme yaklaşımını seçerek kullanıcının tarayıcıda belirlediği varsayılan yazı tipine saygı duyuyor.
Ben şahsen sans-serif tercih ediyorum ama kullanıcı serif’i varsayılan olarak kullanıyorsa bunu özellikle ezmenin bir nedeni yok gibi görünüyor.
Ancak https://runxiyu.org/soc/ta/ örneğinde olduğu gibi çoğu yazı tipinde bulunmayan karakterleri kullanmak gerektiğinde web font eklemekten başka çare kalmamış ve bunun sonucu olarak metnin geri kalanı da kullanıcının varsayılanı yerine sans-serif’e zorlanmış.
Tuhaf karakterlerin her birini
<unusual-character>gibi bir şeyle sarmalamadıkça daha iyi bir yöntem var mı bilmiyorum; ayrıca “kullanıcının tercih ettiği kod yazı tipi” gibi bir şeyi belirtmenin bir yolu da olsa iyi olurdu.monospace, monospacehilesi hoşuma gitti; boyut farkı gerçekten epey kafa karıştırıcıymış.Unicode karakter listesi siteleri bunu bu şekilde yapıyor.
monospacekullanıyorum.Site tasarımı için övgü aldığım oldu ama aslında yaptığım şey bir Zola temasını alıp CSS ve özel öğeleri azaltmaktan ibaret; özellikle kişisel sayfalar için yazının ana fikrine oldukça katılıyorum.
font-familybelirtmeme tarafında olan biri olarak, tarayıcının varsayılan varsayılan yazı tipinin serif’ten sans-serif’e değişmesinin kullanıcı için daha iyi olabileceğini düşünüyorum.Kullanıcıların büyük çoğunluğu yazı tipini kendisi seçmiyor; dolayısıyla “kullanıcının seçtiği yazı tipi” ile “tarayıcının varsayılan yazı tipi”ni ayırmanın bir yolu yok.
Serif sevsem de bugün çoğu kişinin sans-serif’i tercih etme ihtimali daha yüksek.
Kendi ortamımda sayfaların yazı tipi belirtmesini engelledim ve düzgün CJK yazı tipleri de kurmadım.
Çünkü Çince karakterler yerine “4E2D” gibi kutular görünse bile, o ideografın kendisi kadar bana anlamsız geliyor diye düşündüm.
Bu tür fallback font işleyişi iyi yapılmış ama ne yazık ki varsayılan yazı tipinin adını doğrudan belirtmenin bir yolu yok.
Bunun yerine JavaScript ile boş bir belgede
getComputedStyle(document.documentElement).fontFamilysonucuna bakarsanız, gelişmiş yazı tipi ayarlarıma bağlı olarak"serif"veya"sans-serif"çıktığını görürsünüz.“Kod için tercih edilen yazı tipi”nden tam olarak ne kastedildiğini bilmiyorum; anladığım kadarıyla
monospacedışında bir şey düşünülüyor.Bu yazı hâlâ taslak olduğu için oldukça eksik ve iki üç farklı biçimdeki parça birbirine karışmış durumda; bu yüzden biraz dağınık.
Muhtemelen sonunda bir sayfadan uzun olacak, şu ankinden oldukça farklı bir şekle bürünecek ve bazı bölümleri el yazısı, el çizimi ya da elle yerleştirilmiş düzen olabilir.
Şu sıralar bunun yerine hafif bir markup dili implementasyonuna odaklanıyorum; artık neredeyse kullanılabilir durumda, son %90 bir türlü bitmiyormuş gibi geliyor.
Sonra yeniden yazıp yayımlamayı planlıyorum.
font-family: monospace;kullanıldığındafont-sizevarsayılan olarak %100 yerine %81.25 olabiliyormuş; ama listede ikinci bir yazı tipi varsa bunun olmaması gerçekten çok ilginç.Yani
font-family: my-web-font, monospace;ya dafont-family: monospace, monospace;sorun çıkarmıyor; fakat MDN’de bunun şu anda belgelenmediği anlaşılıyor.Bunun neden olduğunu ve neden belgelenmediğini açıklayabilecek biri var mı merak ediyorum.
Bu yüzden tarayıcılar arası tutarsızlığın nedenlerinden biri de bu.
Taslak olduğu söylenmiş olsa da, yazının içinde bir bölümün ikinci kez aynen kopyalanıp yapıştırılmış gibi duran garip bir tekrar var.
Özellikle de sevdiğim monospace yazı tipinin pek iyi olmadığı ima edildiği için daha da rahatsız edici geldi.
Dikkatli okunursa, kesin öneri olarak bırakılacak şeylerle daha nüanslı ele alınması gereken noktaları ayırmaya çalıştığım için hafif çelişkiler de var.
Sevdiğiniz monospace yazı tipinin hangisi olduğunu merak ettim.
Sadece
serifvesans-serifkullanmaktan kaçınmanın nedenlerinden biri, varsayılan serif yazı tipinin çoğu zaman pek hoş bulunmayan Times olması.Bu yüzden gövde yazı tipini serif’ten sans-serif’e taşıyorum.
“Sistemde kurulu olabilecek yazı tiplerini listelemeyin” ve “monospace için de mümkünse yalnızca genel aileyi kullanın” tavsiyeleriyle ilgili olarak, kendi web sitemde bunu şöyle ayarladım:
--sans-serif: Adwaita Sans, Adwaita Sans Bundled, Inter, sans-serif;ve--monospace: Iosevka, Iosevka Web, Cascadia Code, monospace;kullanıyorum.Amaç şu: GNOME’da Adwaita Sans kuruluysa sistem yazı tipi kullanılsın ve web font indirilmesin; yoksa
Adwaita Sans Bundledweb fontu kullanılsın ve yüklenirken metrikleri benzer olan Inter ilesans-seriffallback olsun.Monospace tarafında da aynı şekilde, sistemde Iosevka varsa o kullanılsın; yoksa
Iosevka Webweb fontu kullanılsın; yükleme sırasında ise Cascadia Code vemonospacefallback olsun.Windows’taki
monospacein Consolas olması ve bunun pek iyi olmaması, ayrıca yeni Windows sürümlerinde Cascadia Code’un kurulu gelmesi de hesaba katıldı.Cascadia Code’un metriklerinin Iosevka’dan epey farklı olmasının iyi bir şey olmadığını biliyorum ama bu yaklaşım hakkında ne düşünüyorsunuz?
Derli toplu bir yazı;
monospace, monospacehilesini hiç bilmiyordum.Küçük bir biçimlendirme sorunu olarak, benim tarayıcımda
.unimportantparagrafının metni sarı arka planın önünde ama sabit.statusçubuğunun metninin arkasında kalıyor; bu yüzden.unimportantbölümünün üzerinden kaydırınca tuhaf görünüyor.Diyagonal DRAFT filigranında da benzer bir durum var gibi görünüyor.