前回作ったプログラムでラテン系の文字や絵文字を描いてみる。
int main() { FT_Library library; FT_Error error; error = FT_Init_FreeType(&library); if (error) return -1; ///////////////////////////////////////////// FT_Face* face_jp = my_LoadFonts(library, "C:\\Windows\\Fonts\\Times.ttf"); //////////////////////// hb_font_t* hbfont; hb_buffer_t* hbbuf; //////////////////////// std::u32string text = U"àbâáăã"; //////////////////////// hbbuf = hb_buffer_create(); hb_buffer_add_utf32(hbbuf, (const std::uint32_t*)text.data(), -1, 0, -1); hb_buffer_set_direction(hbbuf, HB_DIRECTION_LTR); hb_buffer_set_script(hbbuf, HB_SCRIPT_LATIN); hb_buffer_set_language(hbbuf, hb_language_from_string("en", -1)); //////////////////////// hbfont = hb_ft_font_create(*face_jp, nullptr); hb_shape(hbfont, hbbuf, NULL, 0); //////////////////////// my_FaceDraw(hbbuf, face_jp); //////////////////////// hb_buffer_destroy(hbbuf); hb_font_destroy(hbfont); //////////////////////// FT_Done_Face(*face_jp); pbmP1_Write("C:\\test\\freetypetest_mgl.pbm", imageWidth, imageHeight, &image[0]); ///////////////////////////////////////////// // FreeType2の解放 FT_Done_FreeType(library); }
int main() { FT_Library library; FT_Error error; error = FT_Init_FreeType(&library); if (error) return -1; ///////////////////////////////////////////// FT_Face* face_jp = my_LoadFonts(library, "C:\\Windows\\Fonts\\seguiemj.ttf"); //////////////////////// hb_font_t* hbfont; hb_buffer_t* hbbuf; //////////////////////// std::u32string text = U"👨👨👧👦";//FreeType2だけだと5つの絵文字になる //////////////////////// hbbuf = hb_buffer_create(); hb_buffer_add_utf32(hbbuf, (const std::uint32_t*)text.data(), -1, 0, -1); hb_buffer_set_direction(hbbuf, HB_DIRECTION_LTR); hb_buffer_set_script(hbbuf, HB_SCRIPT_LATIN);//一応LATIN指定しておく hb_buffer_set_language(hbbuf, hb_language_from_string("en", -1));//一応en指定しておく //////////////////////// hbfont = hb_ft_font_create(*face_jp, nullptr); hb_shape(hbfont, hbbuf, NULL, 0); //////////////////////// my_FaceDraw(hbbuf, face_jp); //////////////////////// hb_buffer_destroy(hbbuf); hb_font_destroy(hbfont); //////////////////////// FT_Done_Face(*face_jp); pbmP1_Write("C:\\test\\freetypetest_mge.pbm", imageWidth, imageHeight, &image[0]); ///////////////////////////////////////////// // FreeType2の解放 FT_Done_FreeType(library); }