一段使用 FreeType 在控制台打印字符的 C++ 代码
来源:互联网 发布:网络带来的弊端 编辑:程序博客网 时间:2024/05/22 12:47
#include <ft2build.h>#include FT_FREETYPE_H#include FT_GLYPH_H#include FT_BITMAP_H#include <iostream>int main(){ FT_Library library; FT_Face face; FT_Init_FreeType(&library); FT_New_Face(library, "XXX.ttf", 0, &face); FT_Select_Charmap(face, FT_ENCODING_UNICODE); FT_Set_Char_Size(face, 0, 12 * 64, 96, 96); FT_ULong charcode = 0x7F8E; FT_UInt index = FT_Get_Char_Index(face, charcode); FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO); FT_Bitmap bitmap; FT_Bitmap_New(&bitmap); FT_Bitmap_Convert(library, &face->glyph->bitmap, &bitmap, 1); for (int y = 0; y < bitmap.rows; y++) { for (int x = 0; x < bitmap.width; x++) { unsigned char c = bitmap.buffer[y * bitmap.width + x]; if (c) { std::cout << '@'; } else { std::cout << ' '; } } std::cout << '\n'; } FT_Bitmap_Done(library, &bitmap); FT_Done_Face(face); FT_Done_FreeType(library); return 0;}
FT_New_Face 函数用来读取某个字体文件
FT_ULong charcode 字符的 UTF-32 的编码,如 0x7F8E 是 U+7F8E 就是美丽的"美"字
FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO); 渲染图片,FT_RENDER_MODE_MONO 是渲染只有黑白两色的位图。
FT_Bitmap_Convert 由于渲染模式的不同,分析起来比较麻烦,使用这个函数可以转换成统一的位深为 8bpp 的位图。
0 0
- 一段使用 FreeType 在控制台打印字符的 C++ 代码
- freetype->example1.c代码的注释
- UTF8二进制数据在控制台打印成字符(C/C++)
- log4j的使用以及mybatis在控制台打印sql语句
- log4j的使用以及mybatis在控制台打印sql语句
- 关于控制台打印Unicode字符的测试
- msdn中一段打印的代码
- 一段调用底层打印的代码
- 记事本打印功能的一段代码
- 一段打印调试的代码收集
- 一段经典的c代码
- 打印自己的一段漂亮C程序
- 一段自己打印自己的c程序
- 一段自己打印自己的c程序
- 一段自己打印自己的c程序
- 一段自己打印自己的c程序
- 转一段使用C与wpa设置wifi的代码
- 一段打印代码
- 笑过后值得思考的一些编程语录----------搞笑却真实
- 鸟哥私房菜之Linux 文件和目录管理 - 4
- 半像素引起的那些坑
- 【android,20】广播接收者
- 看到部分 行业发展的精华文章,节选一段,转载
- 一段使用 FreeType 在控制台打印字符的 C++ 代码
- 【android,21】Process进程 与线程之间的关系
- 【android,22】屏幕的适配
- 【android,23】手势识别的开发
- Celery 分发任务
- 120 - Stacks of Flapjacks
- 【Node】node启动过程
- ubuntu 13.04 初探笔记
- OCP-1Z0-新051-61题版本-34