Signatur
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()odernatcasesort().
Rückgabewert
'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;
}
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.