Start · Sprachen · PHP · Referenz · ps_findfont

ps_findfont

Funktion

Lädt eine Schriftart für die Verwendung in einem PostScript-Dokument und gibt einen Schriftart-Handle zurück.

Kategorie: misc

Signatur

ps_findfont(resource $psdoc, string $fontname, string $encoding, bool $embed = false): int

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

Typ
int
Beschreibung
Gibt einen Integer-Handle für die geladene Schriftart zurück, der mit 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.';
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.';
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.