Farb- und Fontnamen
In den vorhergehenden Beispielen wurde schon reichlich von Farbnamen
Gebrauch gemacht. So legt der Kommandozeilen-Parameter -bg
LightYellow2 beim Xterm und vielen andern
X-Applikationen die Hintergrundfarbe ("Background")
auf einen dezent
gelb-bräunlichen Ton fest.
Diese Farben werden immer vom X-Client angefordert; der X-Server ist
nur Ausführender und hat keinen direkten Einfluss auf die Farbgebung
einzelner Fensterelemente. Mit Hilfe von RGB-Werten ("Rot-Grün-Blau")
kann der
X-Server drei 8-bit-Zahlenwerten (dh. jeweils zwischen 0 und 256 bzw.
00 und ff in hexadezimaler Darstellung) jeden für das menschliche Auge
unterscheidbarden Farbwert identifizieren und - soweit dies Grafikkarte
und Monitor zulassen - anzeigen.
Die Abb. links zeigt das Fenster zur Farbauswahl des mächtigen
Graphikprogramms gimp, das im Linux-Umfeld entwickelt wurde. Man sieht
die RGB-Werte in dezimaler Darstellung und als "HTML-Form" die
hexadezimale Darstellung, die auch für X11 verwendet werden kann.
Auflösung der Farbnamen
Wie geht nun
der X-Server mit Farbname wie LightYellow2
um? Recht simpel:
Unter /usr/share/X11/ - in älteren Distributionen und einigen
UNIX-Varianten unter /usr/lib/X11/ - findet man eine Datei namens rgb.txt .
Dort sind sämtliche
möglichen Farbnamen mit ihren RGB-Werten gelistet. Der Anfang dieser
umfangreichen Datei ist in der Spalte rechts gelistet.
Fordert also ein X-Client einen bestimmten Farbnamen an, so ermittelt
der X-Server über die entsprechende Zeile in der rgb.txt den
zugehörigen RGB-Wert und verwendet diesen für die Darstellung.
Für LightYellow2 ist das übrigens 238
238 209.
Farbnamen, die man
hier nicht vorfindet, könenen vom X-Server auch nicht korekt
dargestellt werden. Diese Gefahr ist allerdings gering, da der Bestand
von rgb.txt über die meisten Linux- und UNIX-Varianten idenntisch ist.
Natürlich ist es auch möglich direkt mit RGB-Werten zu arbeiten. Dazu
wird die oben erwähnte hexadezimale Form verwendet, und zwar angeführt
von einem #-Zeichen. Da # für die Shell ein Kommentarzeichen ist, muss
das Ganze noch in Anführungszeichen.
Ein Xterm mit dem reizenden Violett, das in der Abb. oben ausgewählt
ist, starte man also versuchsweise
xterm -bg "#b55fbd"
Es hängt natürlich von den Sehgewohnheiten und vom Geschmack jedes
Einzelnen ab, ob er nun diese Farbe zum individuellen Standard für alle
seine X-Fenster macht oder doch besser schnell mit exit
oder noch schneller mit Ctrl-D das psychodelische Xterm schließt.
|
!$Xorg: rgb.txt,v 1.3
2000/08/17 19:54:00 cpqbld Exp $
255 250
250
snow
248 248
255
ghost white
248 248
255
GhostWhite
245 245
245
white smoke
245 245
245
WhiteSmoke
220 220
220
gainsboro
255 250
240
floral white
255 250
240
FloralWhite
253 245
230
old lace
253 245
230
OldLace
250 240
230
linen
250 235
215
antique white
250 235
215
AntiqueWhite
255 239
213
papaya whip
255 239
213
PapayaWhip
255 235
205
blanched almond
255 235
205
BlanchedAlmond
255 228
196
bisque
255 218
185
peach puff
255 218
185
PeachPuff
255 222
173
navajo white
255 222
173
NavajoWhite
255 228
181
moccasin
255 248
220
cornsilk
255 255
240
ivory
255 250
205
lemon chiffon
255 250
205
LemonChiffon
255 245
238
seashell
240 255
240
honeydew
245 255
250
mint cream
245 255
250
MintCream
240 255
255
azure
240 248
255
alice blue
240 248
255
AliceBlue
230 230
250
lavender
255 240
245
lavender blush
255 240
245
LavenderBlush
255 228
225
misty rose
255 228
225
MistyRose
255 255
255
white
...
|
Es soll hier nicht verschwiegen werden, dass man sich trotz der
Eindeutigkeit der RGB-Werte aber nicht darauf verlassen kann, dass die
Farben immer so angezeigt werden, wie auf dem eignenen Bildschirm. Zum
einen stehen dem X-Server u.U. nicht die volle Farbtiefe von 24bit
("TrueColor") zur Verfügung, so dass für die Darstellung eine möglichst
ähnliche Ersatzfarbe gewählt wird; zum anderen fallen Farben auf
verschiedenen Bildschirmen oft sehr unterschiedlich aus - besonders
deutlich sind hier die Qualitätsschwankungen von TFT- bzw.
Notebook-Displays.
Zum Schluss noch ein Tip zur Umrechnung von dezimalen in hexadezimalen
Werten, hier als Beispiel wieder LightYellow2 ,
also dezimal 238 238 209. Auf jedem Linux sollte man mit bc
den
mächtigen Kommandozeilenrechner aufrufen können.
Dort setzt man mit
obase=16
das Ausgabeformat auf Hexadezimal und gibt dann die
3 Dezimalwerte folgendermaßen ein:
238;238;206
und
erhält als Ergebnis
EE
EE
CE
Ein Ctrl-D bendet den Rechner. Die umgekehrte Richtung funktioniert
übrigens mit ibase=16 .
Man vergleiche nun
xterm -bg LightYellow2 und
xterm -bg "#eeeece" .
Fontnamen
Ähnlich verhält es sich mit Fontnamen. Bei den Xterms der
vorhergehenden Beispiele wurde die Schrift mit -fn 9x15 auf
eine gut lesbare Größe eingestellt. Auch hier gilt, dass der
Font immer vom X-Client angefordert wird und der X-Server
sein Bestes tut, diesen zur Darstellung zu bringen. Die Fonts selbst
hält der X-Server vor.
Allerdings ist das Thema "Schriftarten" bzw. "Fonts" um Kategorien
komplexer als das Thema "Farben", da
- die Fontnamen meist einem komplizierten Schema
folgen, das in der üblichen abgekürzten Form zu Verwechslungen führen
kann - insbeondere dann, wenn X11 über Plattformgrenzen hinweg
betrieben wird - und
- kein X-Server sämtliche möglichen Fonts vorrätig hat.
Die Zeichensätze verschiedener Sprachen, die Phantasie der
Font-Designer und der technische Fortschritt erweitern das
Font-Reservoir ständig. Darüber hinaus installieren einige
X-Applikationen eigene, herstellerspezifische Fonts, die dann einem
X-Server auf einem anderen Host nicht automatisch zur Verfügung stehen.
Mit dem Aufruf xlsfonts in einem Xterm erhält man die Liste sämtlicher
Fonts, die der X-Server kennt - und einen ersten Eindruck vom Umfang
dieses Gebiets. Anstatt die Details hier im Grundlagenteil auszuwälzen,
ist dem Thema X11-Fonts ein eigenes Kapitel gewidmet.
Als Abschluss des Grundlagenteils folgen ein paar Erklärungen zur Fensterpositionierung.
|