2.5 font (Zeichensatz)

Alle Zeichensätze, die verwendet werden sollen, müssen als Ressource deklariert werden. Die darstellbaren Zeichensätze sind von dem verwendeten Fenstersystem abhängig. Die Deklaration eines Zeichensatzes beginnt mit dem Schlüsselwort font, anschließend steht ein Identifikator, der den Zeichensatz innerhalb des DM beschreibt. Es folgt die Definition des Zeichensatzes.

Definition

{ export | reexport } font <Bezeichner> <fontSpec> | <variantDef> ;
fontSpec ::=
  "<fontName>" { , <size> { , <modifier> } } |
  "<Vordefinierte UI-Font>" |
  "<X Logical Font Description (XLFD)>" |                          // Motif, Qt
  "<fontName> [ , <parameter> ]" { , <modifier> } |                // Qt
  "<fontName>" { , <size> { , <modifier> { + <modifier> } } } |
  "<size>.<fontName>" | "<systemFont>"                             // Windows
  { x:= * <xscale> % + <xoffset> | / <xdivider>} { y:= * <yscale> % 
         + <yoffset> | / <ydivider>}
  { propscale }
  { r:= "<RefString >" } ;
variantDef ::=
{
           0 : <fontSpec>
  [ <Nummer> : <fontSpec> ]
}

Innerhalb der Zeichensatz-Definition wird der durch das Fenstersystem bestimmte Identifikator sowie die Größe und die Attribute des Zeichensatzes angegeben.

Abhängig von Ihrem Grafiksystem ist es eventuell nicht möglich, die Größe und/oder die Zeichensatzattribute unabhängig vom ausgewählten Zeichensatz zu definieren. In diesem Fall ist nur die erste Variante der Zeichensatzdefinition möglich, eventuell folgende Größen- oder Zeichensatzattribute werden ignoriert.

Neben den vom jeweiligen System bereitgestellten Möglichkeiten die verfügbaren Zeichensätze einzusehen, kann die Liste der Zeichensätze auch im IDM Editor eingesehen werden. Dort besteht - je nach System - die Möglichkeit die Liste der Zeichensätze nach UI Fonts, XFT und XLFD zu filtern.

Beispiele

Nicht variant

font BIG          "white_shadow-48";
font KilterBold   "-adobe-courier-bold-r-normal*";
font KilterItalic "kilter 12i";
font UI "UI_FONT";
// Definiert den Zeichensatz vtsingle des Fenstersystems X
// auf den Namen NORMAL im IDM
font NORMAL "vtsingle";
// Definiert den Zeichensatz Courier in der Größe 12 als Ressource Courier
font Courier "Courier", 12;
// Wie die vorhergehende Definition; zusätzlich wird das Attribut bold
// für fette Darstellung definiert
font Bold "Courier", 12, bold;
// Definiert den Zeichensatz mit der Schriftart, die standardmäßig 
// vom System für Oberflächenelemente verwendet wird; zusätzlich wird das
// Attribut propscale für die Steuerung des Font-Rasters gesetzt
font UIpropscale "UI_FONT" propscale;
// Definiert einen XFT Zeichensatz (bspw. auf einem Ubuntu System); 
// zusätzlich wird die Größe 12 und das Attribut bold für fette Darstellung 
// definiert
font XFT "DejaVu Sans", 12, bold;

Variant

font BIG
{
  0: "white_shadow-48";
  1: "walla_walla-12";
  2: "helvetica", 24, bold;
  3: "harakiri",  48, roman;
}

2.5.1 Berechnung der Rastergröße aus einem Referenzfont

Bei der Berechnung der Rastergröße aus einem Referenzfont kann der Benutzer bei der Definition des Zeichensatzes Korrekturfaktoren angeben und kann so die aus dem Zeichensatz ermittelte Berechnungsgrundlage für das Raster beliebig ändern.

Außerdem ist es möglich, einen Referenzstring anzugeben, aus dem die Rasterbreite berechnet wird. Die Rasterbreite errechnet sich dann aus der Breite des gesamten Strings, dividiert durch die Anzahl der Zeichen (mit mathematischer Rundung). Die Angabe eines Referenzstrings macht die Breitenberechnung unabhängig von der mittleren und maximalen Zeichenbreite der Fontbeschreibung, die von System zu System unterschiedlich sein kann. Der Referenzstring wird durch den Zusatz r:="<RefString>" bei der Fontdefinition angegeben.

Ausgehend von dieser Zeichensatz-Definition, werden die Rastergrößen wie folgt berechnet:

xraster = ((Breite des Fonts) * xscale) / 100 + xoffset
yraster = ((Höhe des edittextes mit diesem Font) * yscale) / 100
          + yoffset

Das heißt die Zeichensatzgröße wird mit dem angegebenen Faktor versehen und dann um die angegebene Konstante vergrößert.

 

Der <xdivider>/<ydivider> erlaubt die Teilung eines Raster ohne Abrundungseffekte. Der IDM sorgt dafür, dass ein Raster in der vollen Teilergroße mindesten genaus gross ist wie das Raster ohne Teiler. Hiermit wird eine vollstaendige Objektdarstellung gewährleistet.

xraster = ((Breite des Fonts) + (xdivider - 1 )) / xdivider
yraster = ((Höhe des edittextes mit diesem Font) + (ydivider - 1))) / ydivider

Beispiel

font Font "6x13" x:=*150%+2 y:=*200%+10;

In diesem Fall berechnet sich die aus diesem Zeichensatz resultierende Rastergröße wie folgt:

xraster = (6 * 150) / 100 + 2
        = 11
yraster = (13 * 200) / 100 + 10
        = 36

Wichtig: veränderte Berechnung der Rasterbreite unter Windows

Mit der IDM-Version A.06.03.a wurde die Berechnung der Rasterbreite grundlegend umgestellt. Wenn kein Referenzstring angegeben ist, wird die Rasterbreite jetzt aus einem internen Referenzstring (M) berechnet, um ein übermäßiges Breitenwachstum durch überbreite Buchstaben innerhalb einer Schriftart zu vermeiden.

Aus Kompatibilitätsgründen kann jedoch durch die Option opt_fontraster_compat, die Startoption ‑IDMfontraster_compat oder die Umgebungsvariable IDM_FONTRASTER_COMPAT vorübergehend die veraltete Berechnung der Rasterbreite wieder reaktivieren werden (verbunden mit dem Nachteil, dass es wieder zu übermäßiges Breitenwachstum kommen kann).
Bei Verwendung der Option opt_fontraster_compat basiert die Größenberechnung zum Teil auf dem Systemfont, der nicht High DPI fähig ist, daher sollten High DPI fähige Anwendungen, die mit IDM für Windows 11 erstellt wurden, dies Option nicht verwenden.

2.5.2 Vordefinierte UI-Fonts

Die UI-Fontressourcen sind WSI-unabhängige vordefinierte Schriftarten, die auf allen Systemen in ähnlicher Ausprägung bzw. Bedeutung verfügbar sind. Herangezogen werden hierzu die Default-Schriftarten, die vom aktuellen Desktop/Window Manager oder Theme verwendet werden. Die einheitlichen FONT-Ressourcen sind wie folgt definiert:

Eine Liste der auf dem jeweiligen System zur Verfügung stehenden Schriftarten kann über das Attribut .fontname[integer] am setup Objekt erfragt werden.

2.5.3 Zeichensatz-Definition

Es gibt folgende Definitionsmethoden für einen Zeichensatz:

Hinweis:

Es ist zu beachten, dass es vom gewählten Zeichensatz abhängt ob und in welcher Umfang die ausgewählten Modifikatoren angewendet werden.

2.5.4 Zeichensatz-Definition für Microsoft Windows

Hier gibt es folgende Definitionsmethoden für einen Zeichensatz:

Anmerkung

Wenn der spezifizierte Zeichensatz nicht verfügbar ist, wird der Systemzeichensatz ausgewählt.

Warnung

Bei der Zeichensatzauswahl wird keine Beschränkung der Codepage vorgenommen, daher können alle im System verfügbaren Zeichensätze verwendet werden.

Dies kann jedoch dazu führen, dass Zeichensätze mit einer falschen Codepage ausgewählt werden, so dass falsche Zeichen dargestellt werden. Der IDM hat unter Microsoft Windows keine Möglichkeit, eine Codepage-Konvertierung durchzuführen, da nur die WINANSI-Codepage definiert ist.

Siehe auch

Kapitel „Hinweis zur Verwendung von Symbol-Schriftarten unter Microsoft Windows“

2.5.5 Zeichensatz-Definition für Qt

Schriftarten können auf folgende Arten definiert werden:

Qt-Stil mit kommaseparierter Parameterliste

Family, PointSize, PixelSize, QFont::StyleHint, QFont::Weight, QFont::Style,
Flag underline, Flag strikeout, Flag pixedPitch, Flag rawMode
"Helvetica, 12, -1, 5, 75, 1, 0, 0, 0, 0"

Es müssen nicht alle Parameter angegeben werden, "Helvetica, 12" reicht zum Beispiel.

Schriftart mit unabhängigen Darstellungsattributen (Größe und Stil)

"Helvetica", 12, bold

Die Stile bold, italic und oblique werden unterstützt.

Angaben im Qt-Stil können mit unabhängigen Darstellungsattributen kombiniert werden:

"Helvetica, 12", bold

X Logical Font Description (XLFD)

"-adobe-helvetica-medium-r-normal--12-*-*-*-p-*-iso8859-1"
"*adobe-helvetica-bold-r-normal-*-100-*-iso8859-1"

Hinweise

Achtung

2.5.6 Dynamisch änderbare Attribute

Bei Zeichensätzen können folgende Attribute zur Laufzeit dynamisch gesetzt und abgefragt werden:

Tabelle 24-3: Änderbare Attribute der font-Ressource

Attribut

Datentyp

Indexbereich

Beschreibung

.face enum

face_default,
face_italic,

face_oblique,
face_roman,

Schriftbild

.height[enum] integer scale_factor,
scale_offset

Y-Skalierung und Offset

.name

string

Fontname

.refstring

string

Referenzstring für die Berechnung der Rasterbreite

.propscale boolean

Rastersteuerung

.size

integer

Schriftgröße

.style

enum

face_default,
face_light,
face_normal,
face_medium,
face_demibold,
face_bold,
face_black
face_italic,

face_oblique
face_roman,

Schriftart

.weight enum

face_default,

face_light,
face_normal,
face_medium,
face_demibold,
face_bold,
face_black

Schriftstärke

.width[enum]

integer

scale_factor,
scale_offset

X-Skalierung und Offset