NAME
Quiq::Gd::Font - GD- oder TrueType-Font
BASE CLASS
DESCRIPTION
Abstraktion für GD- und TrueType-Fonts, die von GD nicht gemacht wird.
Geometrie der (monospaced) GD-Fonts
Name Breite Höhe
---------------- ------ ----
gdTinyFont 5 8
gdSmallFont 6 13
gdMediumBoldFont 7 13
gdLargeFont 8 16
gdGiantFont 9 15
EXAMPLES
GD-Font instantiieren
$fnt = Quiq::Gd::Font->new('gdSmallFont');
TrueType-Font instantiieren
$fnt = Quiq::Gd::Font->new('/opt/fonts/pala.ttf',20);
METHODS
Konstruktor
new() - Instantiiere GD- oder TrueType-Font
Synopsis
$fnt = $class->new($name);
$fnt = $class->new($name,$pt);
$fnt = $class->new("$name,$pt");
$fnt = $class->new($fnt);
Description
Instantiiere GD- oder TrueType-Font und liefere eine Referenz auf dieses Objekt zurück. Wird bei einem TrueType-Font keine Fontgröße angegeben, wird 10pt angenommen.
Ein TrueType-Font kann auch mit einem einzigen Argument - als Arrayreferenz [$name,$pt] - angegeben werden.
Wird ein bereits instantiiertes Font-Objekt als Parameter übergeben, wird dieses einfach zurückgeliefert.
Primitive Operationen
name() - Name des Font
Synopsis
$name = $fnt->name;
Description
Liefere den Namen des Font. Bei einem GD-Font ist dies der Name, wie er beim Konstruktor angegeben wurde. Bei einem TrueType-Font ist es der Grundname der Datei, also ohne Pfad und Endung .ttf
.
pt() - Größe des Font
Synopsis
$pt = $fnt->pt;
Description
Liefere die Größe des Font. Bei einem GD-Font undef
, bei einem TrueType-Font die Größe in pt.
isTrueType() - Prüfe auf TrueType-Font
Synopsis
$bool = $fnt->isTrueType;
Description
Liefere 1 wenn der Font ein TrueType-Font ist, liefere 0, wenn er ein GD-Font ist.
stringGeometry() - Liefere den Platzbedarf einer Zeichenkette
Synopsis
($width,$height,$xOffset,$yOffset) = $fnt->stringGeometry($str,@opt);
Options
- -up => $bool (Default: 0)
-
Schreibe den Text aufrecht.
- -debug => $bool (Default: 0)
-
Gib Informationen auf STDDER aus.
Description
Liefere den Platzbedarf (Breite, Höhe) und den x- und y-Offset der Zeichenkette $str.
Geometrie
TrueType-Fonts können um einen beliebigen Winkel gedreht werden.
4,5
/\
/ \
/ T \ 2,3
/ X /
6,7 / E /
\ T /
\ /
\/
0,1
$width = $bounds[2]-$bounds[6]
$height = $bounds[1]-$bounds[5]
$xOffset = -$bounds[6]
$yOffset = $up? 0: -$bounds[5]
Von dieser Möglichkeit machen wir allerdings keinen Gebrauch. Wir lassen lediglich 0 und 90 Grad zu. Das sind die Möglichkeiten, die die GD-Fonts erlauben.
charWidth() - Liefere (maximale) Breite eines Fontzeichens
Synopsis
$width = $fnt->charWidth(@opt);
Alias
width()
Options
Description
Liefere die maximale Breite eines Fontzeichens.
Da die GD-Fonts fixed/monospaced Fonts sind, ist die Breite aller Zeichen gleich.
Bei TrueType-Fonts wird die Breite der Zeichenkette "M" ermittelt.
charHeight() - Liefere (maximale) Höhe eines Fontzeichens
Synopsis
$height = $fnt->charHeight(@opt);
Alias
height()
Options
Description
Liefere die maximale Höhe eines Fontzeichnes.
Da die GD-Fonts fixed/monospaced Fonts sind, ist die Höhe aller Zeichen gleich.
Ist der Font ein TrueType-Font wird die Höhe der Zeichenkette "Xy" bestimmt.
digitWidth() - Liefere Breite einer Ziffer
Synopsis
$width = $fnt->digitWidth(@opt);
Options
Description
Liefere die Breite einer Ziffer. Alle Ziffern eines Font sollten dieselbe Breite haben. Für GD-Fonts ist dies ohnehin der Fall. Bei TrueType-Fonts ermitteln wir die Breite der "0".
digitHeight() - Liefere Höhe einer Ziffer
Synopsis
$height = $fnt->digitHeight(@opt);
Options
Description
Liefere die Höhe einer Ziffer. Alle Ziffern eines Font sollten dieselbe Höhe haben. Für GD-Fonts ist dies ohnehin der Fall. Bei TrueType-Fonts ermitteln wir die Höhe der "0".
stringWidth() - Horizontaler Platzbedarf einer Zeichenkette
Synopsis
$n = $fnt->stringWidth($str,@opt);
Options
Description
Liefere den horizontalen Platzbedarf der Zeichenkette $str.
stringHeight() - Vertikaler Platzbedarf einer Zeichenkette
Synopsis
$n = $fnt->stringHeight($str,@opt);
Options
Description
Liefere den horizontalen Platzbedarf der Zeichenkette $str.
Alignment
Die folgenden Methoden liefern den Offset, der benötigt wird, wenn ein Text eng an eine rechte oder obere Grenze ausgerichtet werden soll, wie z.B. bei der Beschriftung einer X- oder Y-Achse.
Die Offsets sind Font-abhängig. Für die GD-Fonts und den TrueType-Font pala bis 20pt ist der Offset ausgearbeitet. Für andere TrueType-Fonts und Fontgrößen müssen die Methoden u.U. erweitert werden.
alignRightOffset() - Korrektur-Offset für Ausrichtung an rechten Rand
Synopsis
$n = $g->alignRightOffset;
Description
Der Korrektur-Offset ist so bemessen, dass der Text möglichst dicht an einen rechten Rand angrenzt, z.B. das Label an den Tick einer Y-Achse.
alignLeftOffset() - Korrektur-Offset für Ausrichtung an linkem Rand
Synopsis
$n = $g->alignLeftOffset;
Description
Der Korrektur-Offset ist so bemessen, dass der Text möglichst dicht an einen linken Rand angrenzt, z.B. das Label an den Tick einer Y-Achse auf der rechten Seite.
alignTopOffset() - Korrektur-Offset für Ausrichtung an oberen Rand
Synopsis
$n = $g->alignTopOffset;
Description
Der Korrektur-Offset ist so bemessen, dass der Text möglichst dicht an einen oberen Rand angrenzt, z.B. das Label an den Tick einer X-Achse.
hCenterOffset() - Korrektur für horizontal zentrierten Text
Synopsis
$n = $fnt->hCenterOffset;
Description
Bei horizontal zentriertem Text ist manchmal eine Korrektur nötig, die diese Methode liefert.
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.