Signatur
Beschreibung
ps_findfont() ist Teil der PS-Erweiterung (pslib) und lädt eine Schriftart, die anschließend mit ps_setfont() aktiviert und in einem PostScript-Dokument verwendet werden kann. Die Funktion sucht die Schriftart anhand ihres Namens und des angegebenen Zeichensatzes.
Der Parameter encoding gibt die Zeichenkodierung der Schriftart an, zum Beispiel ISOLatin1Encoding, WinAnsiEncoding oder einen Pfad zu einer eigenen Encoding-Datei. Dies ist wichtig für die korrekte Darstellung von Sonderzeichen und Umlauten.
Wird embed auf true gesetzt, wird die Schriftart in das PostScript-Dokument eingebettet. Dies erhöht die Portabilität des Dokuments erheblich, da der Empfänger die Schriftart nicht lokal installiert haben muss – allerdings vergrößert sich dadurch die Dateigröße.
Der zurückgegebene Integer-Wert ist ein Handle auf die geladene Schriftart und muss an ps_setfont() übergeben werden, bevor Text mit dieser Schriftart gezeichnet wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, die durch ps_new() erzeugt wurde. |
|
| $fontname Pflicht | string | Der Name der Schriftart, z. B. Helvetica, Times-Roman oder Courier. Der Name muss dem Dateinamen der Schriftart-Metrik-Datei (.afm) entsprechen. |
|
| $encoding Pflicht | string | Die Zeichenkodierung der Schriftart, z. B. ISOLatin1Encoding oder WinAnsiEncoding. Es kann auch ein Pfad zu einer eigenen .enc-Datei angegeben werden. |
|
| $embed | bool | false | Gibt an, ob die Schriftart in das PostScript-Dokument eingebettet werden soll (true) oder nicht (false). Eingebettete Schriftarten erhöhen die Portabilität des Dokuments. |
Rückgabewert
ps_setfont() verwendet werden kann. Bei einem Fehler wird 0 zurückgegeben.Beispiele
Helvetica laden und Text ausgeben
<?php
$ps = ps_new();
if (!$ps) {
die('Konnte PostScript-Ressource nicht erstellen');
}
ps_open_file($ps, '/tmp/ausgabe.ps');
ps_begin_page($ps, 595, 842); // A4-Seite
// Schriftart laden
$font = ps_findfont($ps, 'Helvetica', 'ISOLatin1Encoding', false);
if ($font === 0) {
die('Schriftart konnte nicht geladen werden');
}
// Schriftart aktivieren und Text ausgeben
ps_setfont($ps, $font, 14.0);
ps_show_xy($ps, 'Hallo Welt!', 100, 700);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Dokument wurde erfolgreich erstellt.';
Schriftart einbetten für portables Dokument
<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/mit_eingebetteter_schrift.ps');
ps_begin_page($ps, 595, 842);
// Schriftart mit embed = true einbetten
$font = ps_findfont($ps, 'Times-Roman', 'WinAnsiEncoding', true);
if ($font > 0) {
ps_setfont($ps, $font, 12.0);
ps_show_xy($ps, 'Eingebettete Schrift: Umlaute ä, ö, ü', 50, 750);
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Dokument mit eingebetteter Schriftart erstellt.';
// Wichtig · Fallstricke
Voraussetzung: Die PS-Erweiterung muss zusammen mit der pslib-Bibliothek kompiliert worden sein. In vielen Standard-PHP-Paketen ist diese Erweiterung nicht enthalten.
Schriftart-Metriken: Für jede Schriftart muss eine .afm-Datei (Adobe Font Metrics) im konfigurierten Pfad vorhanden sein. Ohne diese Datei kann die Schriftart nicht geladen werden und die Funktion gibt 0 zurück.
Kodierung und Umlaute: Für die Darstellung deutscher Umlaute (ä, ö, ü) empfiehlt sich ISOLatin1Encoding oder WinAnsiEncoding. Eine falsche Kodierung führt zu fehlerhafter Zeichendarstellung.
Die PS-Erweiterung gilt als weitgehend veraltet. Für neue Projekte sollten Alternativen wie fpdf, tcpdf oder dompdf für PDF-Ausgaben in Betracht gezogen werden.