Raspberry PiとopenFrameworksで日本語TrueTypeFont
ofxTrueTypeFontUCを使ってRaspberryPi+openFrameworksで日本語を描画しようとしてみたけどうまく表示されず。
drawString内でconvToUTF32を使ってUTF-8から変換してるところを置き換えたら表示されたから、convToUTF32関数の問題っぽい。
ofxTrueTypeFontUC.cpp
void ofxTrueTypeFontUC::drawString(const string &src, float x, float y){
if (!mImpl->bLoadedOk_) {
ofLog(OF_LOG_ERROR,"ofxTrueTypeFontUC::drawString - Error : font not allocated -- line %d in %s", __LINE__,__FILE__);
return;
}
GLint index = 0;
GLfloat X = x;
GLfloat Y = y;
basic_string<unsigned int> utf32_src;//convToUTF32(src);
utf32_src += 0x00003042;//あ
utf32_src += 0x00003042;//あ
utf32_src += 0x00003042;//あ
int len = (int)utf32_src.length();
int c, cy;
while (index < len) {
(...)
convToUTF32で受け取ってる文字列を試しに出力してみたら、なんとShift_JIS。
ofxTrueTypeFontUC.cpp
static const basic_string<unsigned int> convToUTF32(const string &utf8_src){
basic_string<unsigned int> dst;
// convert UTF-8 -> UTF-32 (UCS-4)
int size = utf8_src.size();
int index = 0;
for (int i = 0; i < size; i++) {
wchar_t c = (unsigned char)utf8_src[i];
printf("convToUTF32,%d: 0x%04x\n", i, c);
}
while (index < size) {
(...)
ofApp.cpp
void ofApp::draw(){
mainFont.drawString("hogeあぁい", 900, 100);
}
出力
convToUTF32,0: 0x0068
convToUTF32,1: 0x006f
convToUTF32,2: 0x0067
convToUTF32,3: 0x0065
convToUTF32,4: 0x0082
convToUTF32,5: 0x00a0
convToUTF32,6: 0x0082
convToUTF32,7: 0x009f
convToUTF32,8: 0x0082
convToUTF32,9: 0x00a2
ofApp.cppをUTF-8で保存してあげるとうまくいきました。
Visual Studioでは、「名前を付けて保存」->「上書き保存」の右の小さい三角->「エンコード付きで保存」です。
Author And Source
この問題について(Raspberry PiとopenFrameworksで日本語TrueTypeFont), 我々は、より多くの情報をここで見つけました https://qiita.com/wararyo/items/73fc0828ec66f29a10e8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .