До сих пор я использовал текстуру (bitmapfont) для рендеринга шрифтов, но я пытаюсь заставить работать freetype2. Все мои строки в кодировке SHIFT_JIS, и моя единственная проблема теперь состоит в том, чтобы получить от свободного типа правильный глиф до правильной битовой последовательности SHIFT_JIS. Но это кажется сложнее, чем я ожидал. Например, «亜» имеет код «0x889F» (байт 1 установлен на 136, а байт 2 на 159) - это соответствует кодировке SHIFT_JIS. Поэтому я назвал функцию:
FT_Select_Charmap(face, FT_ENCODING_SJIS);
и попробуйте загрузить глиф с этим кодом:
FT_Load_Char(face, 0x889F, FT_LOAD_RENDER );
Но я получаю некоторый случайный глиф. Это не может быть проблемой, связанной со шрифтом, потому что я пробовал уже разные шрифты с одинаковым результатом (и да, они предоставляют карту shift-jis). К примеру, «0» (ноль) должен быть в позиции 0x0030, но на самом деле это 0x002D. Не все символы имеют постоянное смещение 3, иначе проблем не было бы ... Я думаю, что мой вызов "FT_Load_Char" передает параметр charcode неверным образом - но не могу догадаться, как это будет правильно. Уже пробовал:
FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER );
Но тогда я получаю еще один случайный глиф.
Итак, как я могу передать код в FT_Load_Char, если не выбрана карта по умолчанию?
Любой совет был бы очень полезен. Спасибо.