爱笑的姑娘|使用 freetype 显示单个文字( 二 )
③ 根据编码值 , 从文件头部中通过 charmap 找到对应的关键点(glyph) , 它会根据字体大小调整关键点;
④ 把关键点转换为位图点阵;
⑤ 在 LCD 上显示出来
下载到“freetype-doc-2.10.2.tar.xz” , 下图中的文件就是官方文档:
参照上图中 step1 , step2 , step3 里的内容 , 可以学习如何使用 freetype 库 , 总结出下列步骤:
① 初始化:FT_InitFreetype
② 加载(打开)字体 Face:FT_New_Face
③ 设置字体大小:FT_Set_Char_Sizes 或 FT_Set_Pixel_Sizes
④ 选择 charmap:FT_Select_Charmap
⑤ 根据编码值 charcode 找到 glyph_index:glyph_index = FT_Get_Char_Index(face , charcode)
⑥ 根据 glyph_index 取出 glyph:FT_Load_Glyph(face , glyph_index)
⑦ 转为位图:FT_Render_Glyph
⑧ 移动或旋转:FT_Set_Transform
⑨ 最后显示出来 。
上面的⑤⑥⑦可以使用一个函数代替:FT_Load_Char(face, charcode, FT_LOAD_RENDER) , 它就可以得到位图 。
3、在 LCD 上显示一个矢量字体1. 使用 wchar_t 获得字符的 UNICODE 值
要显示一个字符 , 首先要确定它的编码值 。 常用的是 UNICODE 编码 , 在程序里使用这样的语句定义字符串时 , str 中保存的要么是 GB2312 编码值 , 要么是 UTF-8 格式的编码值 , 即使编译时使用“-fexec-charset=UTF-8” , str 中保存的也不是直接能使用的 UNICODE 值:
char *str = “中”;如果想在代码中能直接使用 UNICODE 值 , 需要使用 wchar_t , 宽字符 , 示例代码如下:
01 #include 02 #include 03 #include 以 UTF-8 格式保存 test_wchar.c , 编译、测试命令如下:
book@book-virtual-machine:~/10_freetype/01_wchar$ gcc -o test_wchar test_wchar.cbook@book-virtual-machine:~/10_freetype/01_wchar$ ./test_wcharsizeof(wchar_t) = 4, str's Uniocde:0x4e2d 0x67 0x69 0x66每个 wchar_t 占据 4 字节 , 可执行程序里 wchar_t 中保存的就是字符的 UNICODE 值 。
注意:如果 test_wchar.c 是以 ANSI(GB2312)格式保存 , 那么需要使用以下命令来编译:
gcc -finput-charset=GB2312 -fexec-charset=UTF-8 -o test_wchar test_wchar.c2. 使用 freetype 得到位图
参考“freetype-doc-2.10.2\freetype-2.10.2\docs\tutorial\image.c” , 使用 freetype 显示一个字
符并不难 。
使用 GIT 下载所有源码后 , 本节源码位于如下目录:
01_all_series_quickstart\04_嵌入式 Linux 应用开发基础知识\source\10_freetype\02_freetype_show_font\freetype_show_font.c要使用 freetype 得到一个字符的位图 , 只需要 4 个步骤 , 代码先贴出来再分析:
① 初始化 freetype 库
158 error = FT_Init_FreeType(/* initialize library */
推荐阅读
- 东方网综合|又一大牌扛不住了!关店3000家,裁员6000人!很多姑娘都爱买
- 美食工坊|而有一个很唯美的名字,日本仍保留使用,古代的苹果不叫“苹果”
- 航天器|中国可重复使用航天器刚发射成功,美媒就来乱弹琴:或是太空武器
- 深夜的微微|逗比姑娘不怕多,就怕他们凑一窝!,搞笑GIF趣图说实话
- 钱江晚报|小区保安突发疾病,刚上完夜班的白衣小姑娘跪地急救,累到虚脱
- 皮肤|CSGO:最贵皮肤无一入选?这几款手感满分,更适合USP使用
- 军事|外媒关注中国发射“可重复使用试验航天器”:保密程度高于常规
- 医保基金|山东通报16起医保基金违规使用或欺诈骗保典型案例 涉违规收费等问题
- 央视新闻客户端|支持世界田联反兴奋剂新计划 肯尼亚拟定使用兴奋剂违法
- 客货运输|中国民航局拟批准东方航空独资筹建一二三航空 使用ARJ21-700飞机
