1

Ich kann nicht scheinen, um Informationen darüber in der Dokumentation zu finden, die Funktion, die die ganze Zeit verwendet wird, ist FT_Get_Char_Index (ftFace, i) ;, und es dauert nur 1 Unicode-Codepunkt. Aber wie wäre es mit kombinierten Charakteren, die mehr als einen Codepunkt benötigen?Wie kombiniere Unicode-Zeichen in Freetype?

Ich verstehe, dass einige dieser Zeichen einfach Unicode-normalisiert werden könnten, um als ein anderer (einzelner) Codepunkt dargestellt zu werden, aber es gibt einige Zeichen, die nicht können, richtig? Wie gehen wir damit um?

Ich mache eine allgemeine Textbearbeitungssoftware und möchte, dass sie alle Unicode unterstützt. Aber vielleicht ist dieses Problem mit Multi-Code-Point-Zeichen so klein, dass es sich die Mühe nicht lohnt? Sind solche Charaktere in einigen asiatischen Sprachen nicht üblich?

Wenn es mit Freetype nicht richtig gemacht werden kann, wie sollte man es tun?

Antwort

2

Wenn ich richtig verstehe, werden Sie nicht in der Lage sein zu tun, was Sie wollen, ohne zusätzlich irgendeine Art von Layout-Bibliothek zu verwenden. Eine Layout-Bibliothek verwendet ergänzende Informationen in OpenType-Schriften zur Positionierung von Kombinationsmarken (neben vielen anderen Dingen). Nehmen wir zum Beispiel an, Sie haben die Sequenz U + 0041, U + 0301 (lateinischer Großbuchstabe A, Kombination akuter Markierung). Im Allgemeinen können Sie diese beiden nicht zusammen mit ihrer Standardpositionierung innerhalb des Rendering-Raums schlagen, da die Akutmarkierung mit der Form des "A" kollidiert.

Eine Layout-Bibliothek analysiert die OpenType-Layouttabellen der Schriftart für diese Sequenz und gibt Positionierungsinformationen zurück, die zur korrekten Positionierung jedes Elements der Sequenz verwendet werden können. Zum Beispiel gibt man ihm die Sequenz, man könnte sagen: "Lass das, A 'wo es ist; verschiebe die akuten 50 Einheiten nach rechts und 90 Einheiten nach oben" (es ist wesentlich komplizierter, aber hoffentlich gibt es dir die Idee).