Start · Sprachen · PHP · Referenz · ps_symbol_name

ps_symbol_name

Funktion

Gibt den Namen eines Glyphs (Symbols) für den angegebenen Zeichencode und Font in einem PostScript-Dokument zurück.

Kategorie: misc

Signatur

ps_symbol_name(resource $psdoc, int $identifier, int $font): string|false

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

Typ
string|false
Beschreibung
Gibt den Namen des Glyphs als 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);
?>
Glyph-Name für Zeichencode 65: A Glyph-Name für Zeichencode 32: space

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);
?>
Glyph-Namen für Zeichencodes 33–126 in Times-Roman: Code 33 => exclam Code 34 => quotedbl Code 65 => A Code 66 => B ...

// 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.