2019独角兽企业重金招聘Python工程师标准>>>
在ucgui中移植汉字库,我使用的是网上下载的字体转换工具:UCGUIFontTool
他可以将pc的字库转换成ucgui使用的字库,假如使用的字体是“迷你彩云”。
以一个汉字举例:你
转换后的编码是:
1 GUI_FLASH const unsigned char acFontHZMiniCaiYun_64_c4e3[ 632 ] = { /* 你 0xc4e3 */ 2 ________,________,________,________,________,________,________,________, 3 ________,________,________,________,________,________,________,________, 4 ________,________,________,________,________,________,________,________, 5 ________,________,________,________,________,________,________,________, 6 ________,________,________,________,________,________,________,________, 7 ________,________,________,________,________,________,________,________, 8 ________,________,________,________,________,________,________,________, 9 ________,________,________,________,________,________,________,________, 10 ________,________,________,________,________,________,________,________, 11 ________,________,________,________,________,________,________,________, 12 ________,________,________,________,________,________,________,________, 13 ________,________,___XXXXX,________,XXXXX___,________,________,________, 14 ________,________,_XXXXXXX,XXX___XX,XXXXXXXX,________,________,________, 15 ________,________,XXXXXXXX,XXXXXXXX,XXXXXXXX,X_______,________,________, 16 ________,_______X,XXX_____,__XXXXX_,______XX,XX______,________,________, 17 ________,______XX,XX______,___XXX__,________,XXX_____,________,________, 18 ________,______XX,X_______,___XXX__,________,XXXX____,________,________, 19 ________,_____XXX,________,__XXX___,________,_XXX____,________,________, 20 ________,_____XXX,________,__XXX___,________,_XXX____,________,________, 21 ________,_____XXX,________,__XXX___,________,_XXXXXXX,XXXXXXXX,XXXXX___, 22 ________,____XXX_,________,_XXX____,________,XXXXXXXX,XXXXXXXX,XXXXXXX_, 23 ________,____XXX_,________,_XXX____,________,________,________,____XXXX, 24 ________,___XXX__,________,XXX_____,________,________,________,_____XXX, 25 ________,___XXX__,________,XXX_____,________,________,________,______XX, 26 ________,___XXX__,_______X,XX______,________,________,________,______XX, 27 ________,__XXX___,_______X,XX______,________,________,________,_______X, 28 ________,__XXX___,______XX,X_______,________,________,________,_______X, 29 ________,_XXX____,______XX,X_______,________,________,________,_______X, 30 ________,_XXX____,_____XXX,________,________,________,________,______XX, 31 ________,XXX_____,_____XXX,________,________,________,________,______XX, 32 ________,XXX_____,_____XXX,________,________,________,________,______XX, 33 _______X,XX______,____XXX_,________,________,________,XX______,_____XXX, 34 _______X,XX______,____XXX_,________,___XXXX_,_______X,XX______,_____XXX, 35 ______XX,X_______,____XXXX,________,___XXXX_,_______X,XX______,____XXX_, 36 ______XX,X_______,_____XXX,________,__XXXXX_,_______X,XX______,____XXX_, 37 _____XXX,________,______XX,X_______,_XXXXXX_,_______X,XX______,___XXX__, 38 _____XXX,________,_______X,XXXX____,XXX_XXXX,______XX,XXXX____,__XXXX__, 39 ____XXX_,________,________,XXXXXXXX,XXX__XXX,X_____XX,XXXXXXXX,XXXXX___, 40 ____XXX_,________,________,_XXXXXXX,X_____XX,XX___XXX,___XXXXX,XXXXX___, 41 ____XXX_,________,________,_XXX____,_______X,XX___XXX,______XX,X_XXX___, 42 ____XXX_,________,________,XXXX____,_______X,XX___XXX,________,___XX___, 43 ____XXX_,________,________,XXX_____,_______X,XX___XXX,________,___XXX__, 44 ____XXX_,________,________,XXX_____,_______X,XX___XXX,________,___XXX__, 45 ____XXX_,________,_______X,XX______,_______X,X____XXX,________,___XXX__, 46 _____XXX,________,_______X,XX______,______XX,X_____XX,________,____XXX_, 47 _____XXX,X_______,_______X,XX______,______XX,X_____XX,X_______,____XXX_, 48 ______XX,XXX_____,______XX,X_______,______XX,X_____XX,X_______,____XXX_, 49 _______X,XXXXX___,______XX,X_______,_____XXX,______XX,X_______,_____XXX, 50 ________,_XXXX___,_____XXX,________,_____XXX,_______X,X_______,_____XXX, 51 ________,__XXX___,_____XXX,________,____XXX_,_______X,XX______,______XX, 52 ________,__XXX___,_____XXX,________,____XXX_,_______X,XX______,______XX, 53 ________,__XXX___,____XXX_,________,____XXX_,________,XX______,______XX, 54 ________,__XXX___,____XXX_,________,___XXXX_,________,XXX_____,_______X, 55 ________,__XXX___,____XXX_,________,___XXXX_,________,XXX_____,_______X, 56 ________,__XXX___,____XXX_,________,__XXXXX_,________,_XXX____,_______X, 57 ________,__XXX___,_____XXX,________,__XXXXX_,________,_XXX____,_______X, 58 ________,__XXX___,_____XXX,X_______,_XXXXXX_,________,_XXX____,______XX, 59 ________,__XXX___,______XX,XX______,XXXXXX__,________,__XXX___,_____XXX, 60 ________,__XXX___,_______X,XXXXXXXX,XX______,________,__XXXX__,___XXXXX, 61 ________,__XXX___,________,_XXXXXXX,X_______,________,__XXXXXX,XXXXXXX_, 62 ________,__XXX___,________,_XX__XXX,________,________,__XXXXXX,XXXXX___, 63 ________,__XXX___,________,_XX__XXX,________,________,__XXX___,________, 64 ________,__XXX___,________,_XX__XXX,________,________,__XXX___,________, 65 ________,__XXX___,________,_XX__XXX,________,________,__XXX___,________, 66 ________,__XXX___,________,_XX__XXX,________,________,__XXX___,________, 67 ________,__XXX___,________,_XX__XXX,________,________,__XXX___,________, 68 ________,___XX___,________,_XX___XX,________,________,_XXX____,________, 69 ________,___XXX__,________,XXX___XX,X_______,________,XXXX____,________, 70 ________,___XXXX_,______XX,XX_____X,XXX_____,_____XXX,XXX_____,________, 71 ________,____XXXX,XXXXXXXX,X_______,XXXXXXXX,XXXXXXXX,XX______,________, 72 ________,______XX,XXXXXXXX,________,__XXXXXX,XXXXXXX_,________,________, 73 ________,________,________,________,________,________,________,________, 74 ________,________,________,________,________,________,________,________, 75 ________,________,________,________,________,________,________,________, 76 ________,________,________,________,________,________,________,________, 77 ________,________,________,________,________,________,________,________, 78 ________,________,________,________,________,________,________,________, 79 ________,________,________,________,________,________,________,________, 80 ________,________,________,________,________,________,________,________, 81 };
从上面的代码中就可以看出来:
一行是8byte*8 = 64
一共是79行
下面的结构体是转换后的字体c文件中描述字体信息的结构:
默认的描述是字体高为64
1 GUI_FLASH const GUI_FONT GUI_FontHZ_MiniCaiYun_64 = { 2 GUI_FONTTYPE_PROP_SJIS, /* type of font */ 3 64 , /* height of font */ 4 64 , /* space of font y */ 5 1 , /* magnification x */ 6 1 , /* magnification y */ 7 ( void GUI_FLASH * ) & GUI_FontHZMiniCaiYun_64_Prop0020 8 }; 9
显示的效果如下:
汉字的底部被截去了一段。
这样的情况得修改上面的结构体中描述字体的高度那个参数:
从“你”字的编码中可以看到,这个汉字的高度是79,而不是上面结构体中所说的64,
所以我们得修正一下,将默认的那个64,修改成79,修改结果如下所示:
1 GUI_FLASH const GUI_FONT GUI_FontHZ_MiniCaiYun_64 = { 2 GUI_FONTTYPE_PROP_SJIS, /* type of font */ 3 79 , /* height of font */ 4 79 , /* space of font y */ 5 1 , /* magnification x */ 6 1 , /* magnification y */ 7 ( void GUI_FLASH * ) & GUI_FontHZMiniCaiYun_64_Prop0020 8 }; 9
再运行显示效果: