Kontrastverhältnis von Farbcodes
capuzza
- html
Moin, moin!
Ich möchte ein Script errechnen lassen, welche Textfarben auf welchen Hintergrundfarben nur unzureichend erkennbar sind, weil das Kontrastverhältnis der Farben zu gering ist.
Beispiel helles Gelb (FFFFCC) ist auf einem weißen Hintergrund (FFFFFF) kaum erkennbar.
Hat jemand für diesen Problem evtl. eine mathematische Lösung oder einen Ansatz?
Die vollständige Problemstellung findet ihr unter dem URL Link bzw. unter: http://www.zeek.org/farbcodes.pdf
Gruß,
Zeek
Hallo Capuzza,
da Dir noch keiner geantwortet hat, bekommst Du jetzt eine Tip von jemandem, der sich nicht wirklich damit auskennt.
Die Farbangaben sind ja bekanntlich 3 X 256 Helligkeitsstufen in Hexadezimalcode. Vielleicht addierst Du einfach die drei Differenzen und sagt bei Unterschreiten eines gewissen Wertes: zu wenig Kontrast. Sag mit bitte nachher, ob es zu gewünschten Ergebnissen führt.
Bessere Tips solltest Du aber im Netz finden.
Gruß
Eidgenosse
Hallo capuzza,
Ich möchte ein Script errechnen lassen, welche Textfarben auf welchen Hintergrundfarben nur unzureichend erkennbar sind, weil das Kontrastverhältnis der Farben zu gering ist.
*aaarrrgg* ;-)
Du gehst stillschweigend von der Annahme aus, dass der Farbkontrast für die Lesbarkeit der Schrift relevant ist. Das ist er nicht. Das chromatische System, also die Photorezeptoren auf unserer Netzhaut, die Farben differenzieren können, ist viel zu schlecht aufgelöst, um bei normalgroßen Buchstaben viel erkennen zu können.
Was zählt ist der achromatische Kontrast, also hell/dunkel Unterschiede zwischen Text- und Hintergrundfarbe. Denn für Helligkeiten haben wir ein zweites System auf unserer Netzhaut, das um einiges höher aufgelöst ist (lokal und temporal). Und mit diesem System können wir Buchstaben ordentlich erkennen, wenn sie genug (Helligkeits-)Kontrast zum Hintergrund aufweisen.
Beispiel: Dunkelroter Text auf dunkelblauem Hintergrund liest sich schlecht, obwohl die Farbunterschiede groß sind. Dunkelblauer Text auf hellblauem Hintergrund oder hellblauer Text auf dunkelblauem Hintergrund liest sich um einiges besser, obwohl sich die Farben nur in der Helligkeit unterscheiden.
siehe: http://www.ergogero.com/FAQ/Part6/cfaqPart6.html#p6.3
und http://www.bamler.de/robert/v4/textfarben/index.htm#test (meine eigene - bitte nicht als Werbung auffassen...)
Du müsstest also den Helligkeitsunterschied der beiden Farben ausrechnen. Dazu musst du zuerst die Hexadezimale Schreibweise in drei Integer umrechnen (schau dir am besten mal an, wie das bei http://selfhtml.teamone.de/helferlein/dezhex.htm realisiert wurde). Dann kannst du beispielsweise diese drei Zahlen zusammenzählen.
Was 'rauskommt, ist ein *imaginärer* Helligkeitswert. Dieser Wert gibt weder an, wie hell die Farben wirklich auf dem Bildschirm erscheinen, noch, wie sie vom menschlichen Auge wahrgenommen werden. Auch wenn du die Differenz der beiden imaginären Helligkeitswerte errechnest (also auf gut Deutsch die beiden Werte voneinander abziehst), bekommst du sicher kein Maß dafür, wie gut das menschliche Auge die beiden Helligkeiten unterscheiden kann. Ich halte es für eher unwahrscheinlich, dass die Rezeptoren Helligkeitsdifferenzen wirklich "linear" wahrnehmen, d.h. dass die tatsächliche Helligkeit zu der wahrgenommenen Helligkeit proportional ist. Beim Hören ist das ja auch nicht anders: Bei sehr lauter Musik hört man die mittleren Frequenzen relativ schwach, bei leiser Musik hört man sie im Vergleich zu den Bässen und Höhen stärker. Auch doppelte Lautstärke allgemein wird nicht doppelt so laut wahrgenommen - die Skala ist annähernd logarithmisch. Wie die Skala beim Sehen aufgeteilt ist, weiß ich leider nicht, aber ich glaube nicht, dass sie linear ist.
Wenn du die "Lesbarkeit" also wirklich errechnen möchtest, müsstest du schon ein komplexeres mathematisches Modell der Systeme (Monitor, Auge) erstellen, indem du z.B. hundert Versuchspersonen einlädst und vor verschiedenen Monitoren in Räumen mit verschiedenen Lichtverhältnissen verschiedene Schriften lessen lässt. Oder du suchst nach einer ähnlichen Studie und wertest die dort erforschten Zahlen aus, was billiger ist ;-)
Aber das ist dann doch wohl eher etwas überproportioniert für deinen Zweck.
Dir bleiben also zwei Möglichkeiten:
a) Du errechnest wie oben beschrieben durch Addition der drei Farbwerte pro Farbe einen
Helligkeitswert und bildest die Differenz beider Werte. Dadurch erhältst du eine
"Faustregel", die vielleicht ein ganz guter Anhaltspunkt ist, aber hinten und vorne nicht
stimmt.
b) Du machst die Augen auf und schaust hin, ob man den Text lesen kann.
Ich glaube, b) ist die bessere Wahl ;-)
Viel Erfolg,
Robert