Die FT_New_Face Funktion scheint die eine zu sein, die ich suche, aber es erfordert einen Pfad zur Schriftart-Datei. Ich möchte eine Schriftart wie "Times New Roman" öffnen, ohne einen Pfad anzugeben. Wie kann ich das machen?Muss ich Pfad zu Schriftarten verwenden?
4
A
Antwort
5
Die meist Unix-basierte Systeme verwenden Fontconfig dafür am besten passende Font-Datei aus Reihe von Suchparametern (Namen, Variationen, Gewicht usw.)
Fontconfig ist eine Bibliothek für die Konfiguration und Anpassung von Font-Zugang zu bekommen.
Fontconfig können:
- entdecken neue Schriftarten, wenn automatisch installiert, eine gemeinsame Quelle der Konfigurationsprobleme zu entfernen.
- führen Sie die Substitution der Schriftartnamen aus, so dass geeignete alternative Schriftarten ausgewählt werden können, wenn Schriftarten fehlen.
- Identifizieren Sie den Satz von Schriftarten benötigt, um eine Menge der Sprachen vollständig abzudecken.
- haben GUI-Konfigurationstools erstellt, wie es eine XML-basierte Konfigurationsdatei verwendet (obwohl mit Autodiscovery glauben wir, diese Notwendigkeit minimiert ist).
- effizient und schnell finden Sie die Schriftarten Sie benötigen unter den Schriftarten, die Sie installiert haben, auch wenn Sie Tausende von Schriftarten installiert haben, während Speicherverbrauch zu minimieren.
- können zusammen mit der X Render Extension und FreeType verwendet werden, um qualitativ hochwertigen, geglätteten und subpixel-gerenderten Text auf einem Display zu implementieren.
Fontconfig nicht:
- macht die Fonts selbst (dies wird von links nach Freetype oder anderen Rendering-Mechanismen)
- hängen von dem X-Window-System in irgendeiner Art und Weise, so dass Nur Druckeranwendungen haben solche Abhängigkeiten nicht
Fontconfig ist relativ beweglich und auf einer Vielzahl von Systemen verwendet, aber OSX hat CoreText, die eine ähnliche Funktionalität hat und Windows hat DirectWrite
Siehe this Frage für Hilfe, wie Fontconfig zu verwenden.
Sie könnten FT_New_Face in eine Funktion integrieren, die den Namen der Schriftart und nicht den Pfad akzeptiert. Der Pfad (oder die Pfade) dieser Funktion würde aus einer Einstellungsdatei lesen, die die Suchpfade angibt, in denen Schriftarten gefunden werden können. Da Sie Ihre Pfade nicht immer wieder lesen möchten, machen Sie es zu einem Funktor (Objekt mit überladenem()) oder einem Verfahren von z. eine FontFinder-Klasse. –
"Times New Roman" ist die Schriftart * name *, aber es ist nicht der Name der Schriftart * Datei *. Die Namenszeichenfolge befindet sich in der Schriftartdatei. Also, wie würde FreeType wissen, welche Schriftart-Datei auszuwählen, wenn Sie nur einen Namen geben? Sie benötigen eine Übersetzung vom Schriftnamen zur Schriftdatei * irgendwo * in Ihrem Code. – usr2564301
@JacquesdeHooge: Wie finde ich die Schriftart auf der Festplatte? Ich sehe einige Schriftarten in '/ usr/share/fonts' in meiner Ubuntu-Installation, sollte ich in allen Distributionen suchen? Wie finde ich die Systemstandardschriftarten heraus? –