Seite 1 von 1

Farben aus Zeichen

Verfasst: 14.06.2023, 20:49
von focus0941
Als ich einen einfachen Raycaster in Python programmierte, fiel mir auf, dass beim Runterskalieren des Outputs (In diesem Fall Buchtaben und Satzzeichen) verschiedene Farben entstanden. Das fand ich ganz interessant, aber ich konnte nichts dazu im Internet finden, also wollte ich mal fragen, ob jemand das schon einmal gesehen hat. Gibt es dabei eine Regelmäßigkeit?

Diese Farben habe ich bereits gefunden:
# "-" -> rot
# "O" -> gelb
# "'" -> grün
# "*" -> türkis
# "#" -> hellblau
# "´" -> blau
# "/" -> lila
# "$" -> weiß
So sieht es aus wenn man es verkleinert.
So sieht es aus wenn man es verkleinert.
Farben.PNG (4.66 KiB) 3564 mal betrachtet

Re: Farben aus Zeichen

Verfasst: 14.06.2023, 22:54
von TomasRiker
Das müsste vom Subpixel-Rendering kommen (nutzt aus, dass in Bildschirmen ein Pixel aus nebeneinander angeordneten roten, grünen und blauen Subpixeln besteht, um Anti-Aliasing bei Schriftzeichen zu realisieren) - kombiniert mit dem Algorithmus, der zum Herunterskalieren benutzt wird. Beim Herunterskalieren wird jedes Zeichen auf wenige Pixel reduziert, und je nach Zeichen kriegst du dann eine andere Farbe, weil die Subpixel mit reinspielen.

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 07:05
von focus0941
Also den Algorithmus kenne ich icht. Das ist einfach nur die Python Commadzeile, wo der Output ausgedruckt wird.

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 07:56
von TomasRiker
Ja, und beim Darstellen der Zeichen nutzt Windows Subpixel-Rendering, wodurch Farben ins Spiel kommen. Bei der Herunterskalierung oder beim Rendering mit sehr kleiner Schriftgröße werden die Farben deutlicher sichtbar.

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 08:41
von focus0941
Ok, das habe ich jetzt verstanden, aber kann man auch irgendwie vorraussagen, welche Farbe ein bestimmtes Zeichen kriegt?

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 09:32
von TomasRiker
Realistisch nur durch Ausprobieren. Wahrscheinlich klappt das auch nicht auf jedem System gleich - es ist wahrscheinlich, dass man auf einem anderen Rechner (anderer Monitor, andere Grafikkarte, andere Windows-Version, andere Schriftart oder -größe ...) andere Farben sieht.

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 10:07
von Schrompf
Man kann doch aber auch die Zeichen der Konsole einfach einfärben, oder? Also absichtlich Farben anzeigen, nicht nur durch SubPixel-Effekte im Monitor. Konsole-Farben kriegst Du, indem Du taktische Sonderzeichen ausprintest. Die tauchen dann nicht als Zeichen in der Anzeige auf, sondern konfigurieren nur die nachfolgende Textausgabe. Auf die Schnelle habe ich StackOverflow gefunden: https://stackoverflow.com/questions/484 ... -sequences

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 10:31
von Jonathan
Insgesamt ist der Effekt hier wohl eher als Bug zu betrachten. Also als Bug in deinem Programm:

"Worte dürfen nicht als einzelne Buchstaben gerendert werden, es entstehen sonst bei leicht überlappenden Buchstaben Fehler."

Du renderst wohl sehr viele sehr kleine Buchstaben unabhängig. Python versucht jeden einzelnen Buchstaben möglichst exakt darzustellen, und zwar alle in weiß, aber da du Buchstaben einzeln renderst verletzt du die Spezifikation des Buchstabenrenderings, also bekommst du ein falsches Ergebnis (Farben die nicht da sein sollten). (Damit Subpixelrendering korrekt funktionieren kann muss es ja auf die Subpixelanordnung im Bildschirm abgestimmt sein. Wird ein anderer Bildschirm verwendet oder ist Subpixelrendering falsch konfiguriert, würdest du andere Farben bekommen).

Um das zu korrigieren, müsstest du entweder alles gleichzeitig rendern (weiß nicht, ob das hier überhaupt möglich ist), oder Subpixelrendering explizit deaktivieren. Wenn du Farben sehen will, solltest du die gemäß Spezifikation setzen (also z.B. so wie von Schrompf vorgeschlagen), dann sollte es auch auf jedem System funktionieren und gleich aussehen.

Der Englische Wikipediaartikel zum Thema ist übrigens auch recht gut. Die Idee dahinter ist auch echt clever, es lohnt sich, das man anzuschauen (3 mal höhere räumliche Auflösung, bei gleicher Anzahl Pixel, yay!) auch wenn man es danach im Alltag nie wieder bewusst verwendet.

Ich wäre btw. nicht so schnell darauf gekommen, dass es hier um Subpixelrendering geht, aber es macht natürlich total Sinn.

Re: Farben aus Zeichen

Verfasst: 15.06.2023, 10:50
von TomasRiker
@Jonathan: Er rendert nichts, das ist eine ganz normale Windows-Konsole.