Start · Sprachen · PHP · Referenz · UI\Draw\Text\Font\fontFamilies

UI\Draw\Text\Font\fontFamilies

Funktion

Gibt ein Array aller auf dem System verfügbaren Schriftfamilien-Namen zurück.

seit PHP 0.9.9 Kategorie: misc

Signatur

UI\Draw\Text\Font\fontFamilies(): array

Beschreibung

UI\Draw\Text\Font\fontFamilies() ist eine prozedurale Funktion der UI-Erweiterung (php-ui / libui), die alle auf dem jeweiligen Betriebssystem installierten Schriftfamilien als einfaches Array von Strings liefert. Dies entspricht dem, was der darunter liegende Font-Renderer (z. B. DirectWrite unter Windows, CoreText unter macOS oder Pango unter Linux) als verfügbar meldet.

Die Funktion ist besonders nützlich, wenn ein Benutzer in einer nativen GUI-Anwendung eine Schrift auswählen soll: Man kann die zurückgegebene Liste direkt in eine Auswahlbox (UI\Controls\Combobox) füllen und den gewählten Namen anschließend an new UI\Draw\Text\Font\Descriptor() übergeben.

Da die Verfügbarkeit von Schriften vom jeweiligen System abhängt, sollte man nie davon ausgehen, dass eine bestimmte Familie vorhanden ist. Prüfe vor der Verwendung, ob der gewünschte Name in der zurückgegebenen Liste enthalten ist, oder biete einen sinnvollen Fallback an.

  • Die Funktion ist nicht objektgebunden – sie wird ohne Instanz aufgerufen.
  • Das Ergebnis ist unsortiert; für eine alphabetische Anzeige empfiehlt sich sort() oder natcasesort().

Rückgabewert

Typ
array
Beschreibung
Ein indiziertes Array von Strings, wobei jeder Eintrag den Namen einer auf dem System verfügbaren Schriftfamilie darstellt (z. B. 'Arial', 'DejaVu Sans'). Das Array ist niemals false; auf einem System ohne installierte Schriften wäre es leer.

Beispiele

Alle verfügbaren Schriftfamilien ausgeben

<?php
use UI\Draw\Text\Font;

$families = Font\fontFamilies();
natcasesort($families);

foreach ($families as $family) {
    echo $family . PHP_EOL;
}
Arial Courier New DejaVu Sans Times New Roman ...

Schriftfamilien in eine Combobox einer GUI-Anwendung laden

<?php
use UI\App;
use UI\Window;
use UI\Controls\Combobox;
use UI\Draw\Text\Font;

$app = new App();
$win = new Window('Schriftwähler', 300, 100, false);

$combo = new Combobox();

$families = Font\fontFamilies();
natcasesort($families);

foreach ($families as $family) {
    $combo->append($family);
}

// Standard-Auswahl: erste verfügbare Familie
$combo->setSelected(0);

$win->add($combo);
$win->show();

$app->run();

// Wichtig · Fallstricke

Abhängigkeit: Die Funktion ist nur verfügbar, wenn die php-ui-Erweiterung installiert und gegen libui kompiliert ist. Ohne diese Erweiterung wirft der Aufruf einen fatalen Fehler (Call to undefined function).

Plattformunterschiede: Die zurückgegebenen Familiennamen sind plattformabhängig. Schriften wie 'Segoe UI' existieren nur unter Windows, 'San Francisco' nur unter macOS. Portabler Code sollte stets überprüfen, ob eine gewünschte Familie vorhanden ist: in_array('Arial', Font\fontFamilies(), true).

Performance: Da die Systemabfrage je nach Anzahl installierten Fonts aufwändig sein kann, empfiehlt es sich, das Ergebnis zu cachen und nicht in engen Schleifen wiederholt aufzurufen.