Signatur
Beschreibung
ps_symbol_name() ist Teil der ps-Erweiterung (pslib) für PHP und liefert den Namen eines Glyphs, also eines einzelnen grafischen Zeichens, das in einem PostScript-Font definiert ist. PostScript-Fonts besitzen für jedes Zeichen einen internen Glyphnamen (z. B. A, space oder copyright), der sich vom numerischen Zeichencode unterscheidet.
Die Funktion ist dann nützlich, wenn man beim Erstellen oder Analysieren von PostScript-Dokumenten mit pslib wissen möchte, welcher Glyph-Name einem bestimmten Zeichencode im aktiven Font entspricht. Damit lassen sich z. B. spezifische Glyphen gezielt ansprechen oder Kodierungsinformationen auslesen.
Als erstes Argument erwartet die Funktion eine gültige PostScript-Dokument-Ressource, die zuvor mit ps_new() erzeugt wurde. Der identifier ist der numerische Zeichencode (z. B. ASCII-Wert), und font ist der Font-Handle, der zuvor mit ps_findfont() oder ps_setfont() geöffnet wurde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die PostScript-Dokument-Ressource, die mit ps_new() erzeugt wurde. |
|
| $identifier Pflicht | int | Der numerische Zeichencode (z. B. ASCII-Wert), für den der Glyph-Name ermittelt werden soll. | |
| $font Pflicht | int | Der Font-Handle, der zuvor mit ps_findfont() geöffnet wurde und den zu untersuchenden Font repräsentiert. |
Rückgabewert
string zurück, z. B. "A" oder "copyright". Im Fehlerfall (ungültige Ressource, unbekannter Zeichencode oder Font) wird false zurückgegeben.Beispiele
Glyph-Namen eines Zeichencodes ermitteln
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
if (!$ps) {
die('Fehler beim Erstellen des PS-Dokuments');
}
ps_open_file($ps, '/tmp/beispiel.ps');
ps_begin_page($ps, 595, 842);
// Font laden (Helvetica, Größe 12, ohne Kodierungsanpassung)
$font = ps_findfont($ps, 'Helvetica', '', 0);
if ($font) {
// Glyph-Namen für ASCII-Code 65 ('A') ermitteln
$glyphName = ps_symbol_name($ps, 65, $font);
if ($glyphName !== false) {
echo "Glyph-Name für Zeichencode 65: " . $glyphName . PHP_EOL;
} else {
echo "Kein Glyph-Name gefunden." . PHP_EOL;
}
// Glyph-Namen für ASCII-Code 32 (Leerzeichen) ermitteln
$glyphSpace = ps_symbol_name($ps, 32, $font);
echo "Glyph-Name für Zeichencode 32: " . $glyphSpace . PHP_EOL;
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
Alle druckbaren ASCII-Glyphen eines Fonts auflisten
<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/glyphen.ps');
ps_begin_page($ps, 595, 842);
$font = ps_findfont($ps, 'Times-Roman', '', 0);
if ($font) {
echo "Glyph-Namen für Zeichencodes 33–126 in Times-Roman:" . PHP_EOL;
for ($code = 33; $code <= 126; $code++) {
$name = ps_symbol_name($ps, $code, $font);
if ($name !== false) {
echo sprintf(" Code %3d => %s", $code, $name) . PHP_EOL;
}
}
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>
// Wichtig · Fallstricke
Verfügbarkeit: ps_symbol_name() setzt die ps-PECL-Erweiterung voraus, die auf der pslib-Bibliothek basiert. Diese Erweiterung ist nicht in einer Standard-PHP-Installation enthalten und muss separat installiert werden.
Zeichenkodierung: Der zurückgegebene Glyph-Name hängt von der Kodierungstabelle des jeweiligen Fonts ab. Sonderzeichen oder Fonts mit benutzerdefinierten Kodierungen können abweichende Namen liefern. Bei Fonts, die mit einer spezifischen Kodierung geladen wurden, können sich die Glyph-Namen vom Standard-PostScript-Glyph-Namensraum unterscheiden.
Fehlerbehandlung: Prüfe den Rückgabewert stets auf false, da ungültige Font-Handles oder Zeichencodes außerhalb des gültigen Bereichs zu einem Fehler führen können.