Signatur
Beschreibung
ps_symbol() ist Teil der PS-Bibliothek (PostScript-Erweiterung für PHP) und ermöglicht die Ausgabe eines einzelnen Zeichens (Glyphs) anhand seines Ordinalwerts (Zeichencode) in einem PostScript-Dokument. Dabei wird der aktuell gesetzte Font und die aktuelle Schriftgröße verwendet.
Im Gegensatz zu ps_show(), das eine ganze Zeichenkette ausgibt, adressiert ps_symbol() ein einzelnes Zeichen direkt über seinen numerischen Code. Das ist besonders nützlich, wenn spezielle Zeichen oder Symbole aus Symbol-Fonts (z. B. ZapfDingbats, Symbol) ausgegeben werden sollen, die über normale Texteingabe nicht einfach erreichbar sind.
Die Funktion erfordert, dass zuvor ein gültiger Font mit ps_setfont() gesetzt und eine Schriftgröße definiert wurde. Die Ausgabeposition wird durch die aktuelle Zeichenposition im PostScript-Kontext bestimmt, die mit ps_moveto() gesetzt werden kann.
- Rückgabe:
truebei Erfolg,falsebei Fehler. - Die Funktion ist nur verfügbar, wenn die ps-Extension installiert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine gültige PostScript-Dokumentressource, die zuvor mit ps_new() erzeugt und mit ps_open_file() geöffnet wurde. |
|
| $ord Pflicht | int | Der Ordinalwert (Zeichencode, 0–255) des auszugebenden Glyphs im aktuell gesetzten Font. Welches Zeichen erscheint, hängt von der Zeichenkodierung des verwendeten Fonts ab. |
Rückgabewert
true zurück, wenn das Glyph erfolgreich ausgegeben wurde. Bei einem Fehler (z. B. ungültige Ressource oder kein gesetzter Font) wird false zurückgegeben.Beispiele
Symbol aus dem Symbol-Font ausgeben
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/symbol_example.ps')) {
die('Datei konnte nicht geöffnet werden.');
}
ps_begin_page($ps, 596, 842);
// Symbol-Font laden und setzen
$font = ps_findfont($ps, 'Symbol', '', 0);
ps_setfont($ps, $font, 24.0);
// An eine Position wechseln
ps_moveto($ps, 100, 700);
// Ordinalwert 97 im Symbol-Font entspricht einem griechischen Alpha (α)
ps_symbol($ps, 97);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit Symbol erfolgreich erstellt.';
?>
Mehrere Symbole aus ZapfDingbats ausgeben
<?php
$ps = ps_new();
if (!ps_open_file($ps, '/tmp/dingbats.ps')) {
die('Datei konnte nicht geöffnet werden.');
}
ps_begin_page($ps, 596, 842);
$font = ps_findfont($ps, 'ZapfDingbats', '', 0);
ps_setfont($ps, $font, 30.0);
$x = 50;
// Glyphs mit Ordinalwerten 33 bis 40 ausgeben
for ($ord = 33; $ord <= 40; $ord++) {
ps_moveto($ps, $x, 700);
ps_symbol($ps, $ord);
$x += 40;
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'ZapfDingbats-Symbole erfolgreich ausgegeben.';
?>
// Wichtig · Fallstricke
Hinweis zur Extension: Die ps_*-Funktionen sind Teil der PECL-Erweiterung ps (auch bekannt als pslib). Diese ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install ps). Unter manchen Systemen ist sie möglicherweise nicht verfügbar.
Zeichenkodierung: Welches Zeichen bei einem bestimmten Ordinalwert erscheint, ist fontabhängig. Besonders bei Symbol-Fonts wie Symbol oder ZapfDingbats stimmt die Zuordnung nicht mit ASCII oder Latin-1 überein. Schlagen Sie daher stets in der Font-Zeichentabelle nach.
Alternative: Für die Ausgabe von Textstrings bietet sich ps_show() an; für die Ausgabe eines Glyphs anhand seines Namens steht ps_symbol_name() zur Verfügung.