gohud

Okunaklılık ölçülür

← Tema

"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
NeGereken
Gövde metni4.5 : 1
Büyük metin (24px ve üzeri)3 : 1
Vurgu kenarlıkları ve simgeler3 : 1
Süs amaçlı kenarlıklar2 : 1 — WCAG, 3:1 kuralını süse uygulamaz
Komşu yüzeyler1.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şırGoSkin, 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
)
Eksik bırakmak bildirilir. *_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.

İki denetleyici, iki erişim alanı. 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.