font_test.c

来自「如何使用Freetype2.0渲染字体在linux环境下」· C语言 代码 · 共 135 行

C
135
字号
#include <zvCommon.h>#include <2d.h>enum{    TEXT0,    TEXT1};ZV_TEXT_MODIFIER_DESC    _text_modifier_descs[] = {    {ZV_TEXT_ENG, 18, 24, "./font/ERASBD.TTF"},    {ZV_TEXT_CHS, 18, 24, "./font/SIMKAI.TTF"}};#if 0uint16  _text0_eng[] = {0x004d,0x0061,0x0067,0x006e,0x0075,0x006d,0x0020,0x0053,0x0065,0x006d,0x0069,0x0063,0x006f,0x006e,0x0064,0x0075,0x0063,0x0074,0x006f,0x0072,0x0020,0x0028,0x0053,0x0068,0x0061,0x006e,0x0067,0x0068,0x0061,0x0069,0x0029, 0}; //"Magnum  Semiconductor (Shanghai)"uint16  _text0_chs[] = {0x4e0a, 0x6d77, 0x8fc8, 0x56fe, 0x534a, 0x5bfc, 0x4f53, 0}; // 上海迈图半导体uint16  *_text0[] ={    _text0_eng,    _text0_chs};uint16  _text1_eng[] = {0x0049,0x0020,0x006c,0x006f,0x0076,0x0065,0x0020,0x0043,0x0061,0x006e,0x0064,0x0079,0x0066,0x006c,0x006f,0x0073,0x0073,0x0021,0}; //"I love Candyfloss!"uint16  _text1_chs[] = {0x6211, 0x7231, 0x5c0f, 0x767d, 0xff01, 0}; // 我爱小白uint16  *_text1[] ={    _text1_eng,    _text1_chs};uint16 **_texts[] ={    _text0,    _text1};#endifint main(){    errCode ec;    zv_handle   gui_texture = NULL;    zv_handle   objects = NULL;    char        *str0;    uint16      *ucsStr0 = NULL;    uint16      ucsStr1[] = {0x4e0a, 0x6d77, 0x8fc8, 0x56fe, 0x534a, 0x5bfc, 0x4f53, 0x000d, 0x000a, 0};    zv_handle   font0, font1;    ec = zvRenderer3D_Create();    ec = zvRenderer3D_Start();    ec = Init_2d(NULL);    ec = Display_RenderBitmap(g_pDisplay, 0, 0, -2.0f, 1.0, "./bmp/bg01.bmp", &gui_texture, &objects);    ec = zvInitFontLibrary();    ec = zvCreateFont(&font0, "./font/ERASBD.TTF");    ec = zvSetFontPixelSize(font0, 48, 64);    str0 = "Magnum LZPF";    ucsStr0 = (uint16 *)ZV_MALLOC(ZV_STRLEN(str0) * 2 + 2);    ec = zvUTF8ToUnicode(str0, ucsStr0);    ec = zvRenderText(gui_texture, 10, 10, ucsStr0, Z_MAKE_COLOR_ABGR1555(0, 64, 64, 255), font0);    ec = zvCreateFont(&font1, "./font/SIMKAI.TTF");    ec = zvSetFontPixelSize(font1, 36, 48);    ec = zvRenderText(gui_texture, 10, 100, ucsStr1, Z_MAKE_COLOR_ABGR1555(0, 64, 255, 255), font1);    {        Z_RECT  rect = {400, 150, 799, 449};         ec = zvRenderTextAligned(gui_texture, &rect,  ZV_TEXT_ALIGN_X_LEFT | ZV_TEXT_ALIGN_Y_CENTER, 0, 17, ucsStr1, Z_MAKE_COLOR_ABGR1555(0, 180, 180, 180), font1);    }    ec = zvDestroyFont(font1);    ec = zvDestroyFont(font0);#if 1    {        zv_handle ml_text_modifier;        uint16 x, width;        Z_RECT rect = {0, 300, 799, 599};        //uint32 id0;        //uint32 id1;        ec = zvCreateMlTextModifier(_text_modifier_descs, LENGTH_OF(_text_modifier_descs), &ml_text_modifier);                //ec = zvCreateMlText(_text0, LENGTH_OF(_text0), ml_text_modifier, &id0);        //ec = zvCreateMlText(_text1, LENGTH_OF(_text1), ml_text_modifier, &id1);        ec = zvLoadMlText("./text/text.txt", ml_text_modifier);        x = 10;        ec = zvSetMlTextCurrentLanguage(ZV_TEXT_CHS);        ec = zvMlTextOut(gui_texture, x, 200, 0, Z_MAKE_COLOR_ABGR1555(0, 128, 0, 0));        ec = zvGetMlTextWidth(0, &width);        x += width + 10;        ec = zvSetMlTextCurrentLanguage(ZV_TEXT_ENG);        ec = zvMlTextOut(gui_texture, x, 200, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 128, 0));        x = 10;        ec = zvSetMlTextCurrentLanguage(ZV_TEXT_CHS);        ec = zvMlTextOut(gui_texture, x, 250, 1, Z_MAKE_COLOR_ABGR1555(0, 128, 0, 0));        ec = zvGetMlTextWidth(1, &width);        x += width + 10;        ec = zvSetMlTextCurrentLanguage(ZV_TEXT_ENG);        ec = zvMlTextOut(gui_texture, x, 250, 1, Z_MAKE_COLOR_ABGR1555(0, 0, 128, 0));        // test aligned textout        ec = zvSetMlTextCurrentLanguage(ZV_TEXT_CHS);        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_LEFT | ZV_TEXT_ALIGN_Y_TOP, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 128, 0, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_CENTER | ZV_TEXT_ALIGN_Y_TOP, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 128, 0, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_RIGHT | ZV_TEXT_ALIGN_Y_TOP, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 128, 0, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_LEFT | ZV_TEXT_ALIGN_Y_CENTER, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 128, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_CENTER | ZV_TEXT_ALIGN_Y_CENTER, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 128, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_RIGHT | ZV_TEXT_ALIGN_Y_CENTER, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 128, 0));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_LEFT | ZV_TEXT_ALIGN_Y_BOTTOM, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 0, 128));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_CENTER | ZV_TEXT_ALIGN_Y_BOTTOM, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 0, 128));        ec = zvMlTextOutAligned(gui_texture, &rect, ZV_TEXT_ALIGN_X_RIGHT | ZV_TEXT_ALIGN_Y_BOTTOM, 0, 0, 0, Z_MAKE_COLOR_ABGR1555(0, 0, 0, 128));        zvDestroyMlTextModifier(ml_text_modifier);    }    //zvDestrotyText();#endif    zvDeinitFontLibrary();    Deinit_2d();    ThreadSleep(2000);    ec = zvRenderer3D_Destory();    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?