Ich habe eine Anwendung, die eine separate Bibliothek Assembly für Ressourcen verwendet (aber keine Nur-Ressourcen-Assembly ohne Code), und ich möchte eine benutzerdefinierte Schriftart in die Bibliothek aufnehmen.Wie kann ich in WPF auf eine Schriftart in einer Ressourcenbibliothek im Code verweisen?
Ich kann die Schriftart, die eine Open Type Font
ist, laden, wenn ich seine .otf-Datei als Ressource zum Projekt für die ausführende Assembly hinzufügen (anstatt zum Ressourcenbibliotheksprojekt), mit Eigenschaften als gesetzt bauen Action = ‚Resource‘ und kopieren Output = ‚nicht kopieren‘, indem Sie den folgenden Code:
FontFamily font = new FontFamily(new Uri("pack://application:,,,/"),
"./Resources/#CustomFont")); // Resources is a subfolder
Wenn ich versuche, die Schriftart auf die Ressource-Bibliothek Projekt hinzuzufügen, jedoch die Schriftart nicht geladen werden . Ich habe versucht, mit dem folgenden Code zu laden (auch der Anmerkung: Ich habe nicht viel Erfahrung mit Paket-URIs):
FontFamily font = new FontFamily(new Uri("pack://application:,,,/MyLibrary"),
"./Resources/#CustomFont"));
// there is a Resources subfolder in my library as well
// not sure about whether I need the .
Die Bibliothek funktioniert für andere Ressourcen wie Bilder.
Ich habe auch eine Reihe von anderen Permutationen für den URI mit keinem Erfolg versucht (es wirft auch keine Ausnahmen, zeigt nur mit der Standardschrift, nicht sicher, ob dies ein separates Problem ist).
Ich habe von Packaging Fonts with Applications auf MSDN gearbeitet, die ein Beispiel zum Erstellen einer Font-Ressource-Bibliothek, aber keine Beispiele mit Code hinter hat (ich bin gezwungen, Code dahinter zu verwenden).
Irgendwelche Ideen über was ich tun muss? Bin ich aus der Spur?
Das ist für mich nicht funktioniert hat, was ich habe einige andere schlägt vor, Problem, da es für Sie arbeitet. – Pysul
Danke, für mich hat es geklappt ... hat mir eine Menge Versuch und Irrtum erspart! – yvesonline
Ich kann bestätigen, es funktioniert perfekt und bevor ich viel zu viele Kombinationen von Laden ohne Erfolg versuchte !!! Ich dachte, ein relativer Zugriff auf Ressourcen von innerhalb dll wäre genug, aber offensichtlich Hinzufügen von Assembly-Namen ist erforderlich, auch wenn Schriften sollten von der gleichen Baugruppe zugegriffen werden! – too