"Güzel" zevk meselesidir; "okunaklı" ölçülebilir. Soluk gri bir yazı iyi bir monitörde hoş görünür ve gün ışığındaki bir telefonda kaybolur — göz kararı seçmek bunu er ya da geç garanti eder.
python3 addons/gohud/tools/check_contrast.py
| Ne | Gereken |
|---|---|
| Gövde metni | 4.5 : 1 |
| Büyük metin (24px ve üzeri) | 3 : 1 |
| Vurgu kenarlıkları ve simgeler | 3 : 1 |
| Süs amaçlı kenarlıklar | 2 : 1 — WCAG, 3:1 kuralını süse uygulamaz |
| Komşu yüzeyler | 1.12 : 1 — bir kartın arka planından ayrı okunmasına yetecek kadar |
Aynı tondaki bir yazı, aynı tondaki bir renk katmanı üstünde
Bu tuzak bu kod tabanında üç kez ortaya çıktı — basılı düğmeler (vurgu paneli, vurgu etiketi), tehlike düğmeleri ve chip'ler. Bir renk örneğinde iyi görünür ve ölçüldüğü anda çöker, çünkü ikisi aynı renk tonunu paylaşır ve dolayısıyla aralarında açıklık farkı yoktur.
Bu yüzden etiket renkleri elle seçilmez. Tema üreticisi ile GoSkin, yazının gerçekte
üstünde durduğu panelde eşik geçilene kadar açıklığı — yalnızca açıklığı — iter. Renk tonu ve doygunluk
hayatta kalır; böylece palet karakterini korur ve onu değiştirmek kontrastını da korur.
Yazı olarak okunan renk ile alan olarak boyanan renk zıt şeyler ister
Açık bir temada bir uyarı rengi yazı olarak okunaklı kalmak için koyulaşmak zorundadır
(#96500A). Çubuk dolgusu bunu devraldığında deneyim çubuğu kahverengiye döner. Bunu
tek başına renk çözemez: sarı doğası gereği parlaktır, yani hiç gri olmayan bir oluk üstünde 3:1'i geçer
ve oluğu koyulaştırmak durumu daha da kötüleştirir (1.52 → 1.06).
Bu yüzden ikisi ayrılmıştır. Renk canlı kalır — palet, warning_vivid gibi yalnızca
dolguya özgü renkler taşır. Kontrastı kenar taşır — GoSkin, oluğuna karşı 3:1'e
ulaşamayan her dolguya 1dp'lik bir kenarlık çizer; böylece "ne kadar dolu" sorusu okunaklı kalır.
MY_LIGHT = dict(
warning=hexc("9A5407"), # yazı olarak okunur
warning_vivid=hexc("F2A007"), # çubuğa boyanır
)
*_vivid olmadan, koyu çıkan bir dolgu üreticinin
the bar looks drab — add warning_vivid to the palette (çubuk soluk kaldı — palete
warning_vivid ekleyin) satırını yazdırmasına yol açar. Eskiden sessizce bozulan bir yer artık bunu
söylüyor.
Yüzen bir panel arkasında ne olduğunu bilemez
Bir HUD, oyunun üstüne çizilir — bir kar tarlasının ya da bir mağaranın. Paneli yarı saydamsa,
arkasındaki her şey sızar ve panelin rengini değiştirir, yazı kontrastını da beraberinde aşağı
çeker. %82 saydamsızlıkta koyu temaların soluk yazısı parlak bir arka plan üstünde 3.74:1
değerine düştü — en düşük sınırın altına.
Bu yüzden yarı saydam paneller arkalarına saf beyaz ve saf siyah konarak ölçülür; bir oyun sahnesinin sunabileceği en kötü durum bunlardır. Pakete dahil temaların HUD paneli, camsı görünümü korurken geçmeye yetecek kadar (%92) donuktur.
Aynı nedenle simge renkleri de sabit değildir. Hızlı slotun sembolü koda beyaz olarak gömülmüştü ve
açık bir temada 1.11:1 ölçüldü — artık tam olarak etiketler gibi, üstünde durduğu paneli izliyor.
check_contrast.py tema dosyalarını okur; bir
kaplamanın çalışma anında karıştırdığı renkler (chip'ler, slotlar) ise test paketinin Godot içindeki
skin contrast bölümünde ölçülür.