Start · Sprachen · PHP · Referenz · ps_symbol

ps_symbol

Funktion

Gibt ein einzelnes Glyph (Symbol) aus dem aktuellen PostScript-Font an der aktuellen Position im PostScript-Dokument aus.

Kategorie: misc

Signatur

ps_symbol(resource $psdoc, int $ord): bool

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: true bei Erfolg, false bei 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

Typ
bool
Beschreibung
Gibt 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.';
?>
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.';
?>
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.