2012-06-12 15 views
7

Ich habe versucht, eine Schrift in meinem WPF-Anwendung zu installieren und zu verwenden, aber alles, was ich diese bekommen, ist wie: enter image description hereWarum bekomme ich anstelle von Text Quadrate?

Hier ist der Code ich die Schriftart zu verwenden versucht:

richtext1.FontFamily = "SH_Roq'a"; 

Das erwartete Ergebnis ist: (von MS Word Schuss Snap) enter image description here

Wenn ich versuche, die Font-Datei in den Projektordner, hinzufügen und es als eine Ressource, wie folgt verwenden:

richtext1.FontFamily = "./#SH_Roq'a"; 

Ich werde nicht die quadratischen Ergebnisse erhalten, aber ich werde auch nicht die erwartete Schriftart haben! Was ich erhalte, ist Tahoma font:

enter image description here

, die nicht die gezielte Schriftart, laden Sie bitte die gezielte Font-Datei here für Experimente

Jede Hilfe ist willkommen!

EDIT

Der Klartext für den Text oben eingefangen ist:

تفاح احمر 

Also für diejenigen, die Experten bei der Verwendung von Schriften sind, können sie experimentieren mit.

+0

Ist die Wortversion fett? Die Schriftart sieht sehr ähnlich aus. Wenn Sie die .ttf Ihrer Schriftart anzeigen, enthält sie die angegebenen Zeichen? – Tejs

+0

Mein persönlicher Eindruck ist, dass die Wortversion kaum mehr vom aktuellen WPF-Ergebnis abweichen kann (Gehrungen statt eckige Kappen, ein kalligraphischer Stift statt fester Strichstärke etc.), aber das OP könnte den Text bitte im Klartext schreiben Auch in seiner Frage? Dies würde denjenigen von uns, die über Schriftarten, Unicode und ähnliche Probleme wissen, aber nicht wissen, wie man Arabisch schreiben kann, eine Chance geben, genau das zu reproduzieren, was Sie sehen. –

+0

Meine Vermutung ist, dass der Font-Renderer in Word Kerning-Hinweisen in der Font-Datei folgen kann, die der Renderer in WPF nicht ausführen kann. Haben Sie gesehen, dass die Schriftart im Browser korrekt verwendet wurde? – antlersoft

Antwort

2

Es gibt mehrere Probleme mit der Schrift:

  1. es ist nicht Unicode-codierte: Es verwendet eine Plattform ID 3, Encoding ID 0 cmap untergeordnete Tabelle, die auch als "Symbol" Tabelle bekannt. Diese funktionieren im Allgemeinen nicht gut außerhalb der alten Windows-Desktop-Anwendungen.

  2. Es gibt keine OpenType-Layout-Funktionen (GSUB, GPOS usw.), die für die korrekte Formgebung (initial, medial, final, isolierte Formen; Lam-Alef-Ligaturen usw.) von Arabisch/Urdu/Farsi-Schrift erforderlich sind .

  3. es verwendet eine sehr, sehr alte OS/2-Tabelle (Version 0). Einige Microsoft-Technologien erfordern mindestens die Version 1. Es gibt auch reservierte Bits, die im Feld fsSelection dieser Tabelle und einer Anzahl anderer verdächtiger Einstellungen gesetzt sind.

Ich hörte auf, dort zu suchen. Diese Schriftart scheint mit sehr alten Tools erstellt worden zu sein, die veraltetes Wissen über die Schriftkonstruktion verwenden. Es muss erheblich aktualisiert werden, damit es in modernen Umgebungen korrekt funktioniert.

+0

Vielen Dank viel für eine detaillierte Antwort, können Sie uns bitte sagen, ob es ein Werkzeug gibt, mit dem wir solch eine alte Schriftart polieren können? ein Werkzeug, das die Schriftdatei migriert, um in modernen Umgebungen zu funktionieren? – simo

+0

Es gibt einige Font-Tools (zum Beispiel FontForge), aber ein Tool alleine wird Ihnen wahrscheinlich nicht viel helfen. Die Schrift braucht die Aufmerksamkeit von jemandem, der dieses Schriftsystem versteht und Kenntnisse in der modernen Schriftgestaltung/-bearbeitung/-entwicklung besitzt. – djangodude

Verwandte Themen