Frage

Bis jetzt habe ich eine Textur (bitmapfont) für Schriftwiedergabe, aber ich versuche, freetype2 zum Laufen zu bringen. Alle meine Saiten sind SHIFT_JIS codiert und mein einziges Problem ist jetzt von Freetype die richtigen Glyphe zu einer richtigen SHIFT_JIS Bitsequenz zu bekommen. Aber es scheint schwieriger, als ich erwartet hatte. Beispiel „?“ hat die charCode „0x889F“ (Byte 1 wird auf 136 und das Byte 2 159) -, die zur Kodierung nach SHIFT_JIS wird.

: Also ich die Funktion aufgerufen
FT_Select_Charmap(face, FT_ENCODING_SJIS);

und versuchen Sie dann eine Glyphe mit dem charCode zu laden:

FT_Load_Char(face, 0x889F, FT_LOAD_RENDER ); 

Aber ich erhalten einige zufällige Glyphe. Es kann nicht ein font-spezifisches Problem sein, weil ich schon verschiedene Schriftarten mit dem gleichen Ergebnis versucht (und ja, sie bieten einen shift-jis charmap). Zum Beispiel „0“ (Null) sollte in der Position seine 0x0030 - aber seine in der Tat bei 0x002D. Nicht alle Zeichen haben einen konstanten Versatz von 3, sonst wäre es kein Problem sein ... Ich glaube, mein „FT_Load_Char“ Anruf übergeben Sie den charCode Parameter in einer falschen Weise - aber kann nicht erraten, wie es richtig wäre. Bereits versucht:

FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER ); 

Aber dann erhalte ich eine andere zufällige Glyphe. Also, wie kann ich die charCode zu FT_Load_Char passieren, wenn nicht der Standard charmap ausgewählt ist?

Jede mögliche Beratung sehr hilfreich sein. Danke.

War es hilfreich?

Lösung

If anyone will find this later with a similiar problem: I ended up with converting the character codes on the fly to unicode (using icu4c). It seems like there`s a problem with a lot of japanese SJIS font headers (they can not selected via the freetype enums - only if you list all available charsets of one of these fonts and then choose the right manually - platform ID & encoding ID aren't identical for all of these fonts too). But that wasn't a proper solution for my needings (because using different fonts), so I finally decided to use Icu4c.

Hopefully this will be helpful to someone.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top