判断 ttf 字体文件是否包含某个字
来源:互联网 发布:鞋子价格,淘宝 编辑:程序博客网 时间:2024/06/06 02:29
在Unity中,如果指定的字体不包含某个字,Unity就会从 自带的 Arial 中读取字形来创建这个字,本意是好的,但是总是会有问题。
在我们游戏中就有这样的问题,自己制作的微软雅黑字库不包含繁体字,Unity 就会用 Arial 来补全显示。这样看起来很怪。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
我一开始是猜测 我们字库不包含繁体字的。想起来之前做过 Freetype ,于是拿起 Freetype 来做一个验证,通过 Freetype 返回的数据 是否为空,来判断这个 字 在字库中是否存在。
主要是这段代码
//读取一个字,创建Character;bool getCharacter(wchar_t ch){if (m_character[ch].x0 == 0 &&m_character[ch].y0 == 0 &&m_character[ch].x1 == 0 &&m_character[ch].y1 == 0){//Glyph:字形,图形字符 [glif];//加载这个字的字形,加载到 m_FTFace上面去;FT_Load_Glyph(m_FTFace, FT_Get_Char_Index(m_FTFace, ch), FT_LOAD_DEFAULT);//从 m_FTFace上面读取这个字形 到 glyph 变量;FT_Glyph glyph;FT_Get_Glyph(m_FTFace->glyph, &glyph);//根据字体大小决定是否启用反锯齿;//字体较小建议使用FT_Render_Mode_Mono;//>12建议使用FT_Render_Mode_Normal; if (!(ch >= L'0' && ch <= L'9')){FT_Glyph_To_Bitmap(&glyph, ft_render_mode_normal, 0, 1);}else{FT_Glyph_To_Bitmap(&glyph, ft_render_mode_mono, 0, 1);}FT_BitmapGlyph bitmapGlyph = (FT_BitmapGlyph)glyph;//返回引用;FT_Bitmap& bitmap = bitmapGlyph->bitmap;FT_Bitmap targetBitmap;//创建了新的 FT_Bitmap;FT_Bitmap_New(&targetBitmap);if (bitmap.pixel_mode == FT_PIXEL_MODE_MONO){//如果Convert成功;if (FT_Bitmap_Convert(m_FTLibrary, &bitmap, &targetBitmap, 1) == 0){for (unsigned char* p = targetBitmap.buffer, *endP = p + targetBitmap.width*targetBitmap.rows; p != endP;++p){*p ^= -*p ^ *p;}bitmap = targetBitmap;}}//如果没有数据;if (bitmap.width == 0 || bitmap.rows == 0){return false;}else{return true;}}}
工程打包下载:
http://pan.baidu.com/s/1jHyJirO
0 0
- 判断 ttf 字体文件是否包含某个字
- 判断 ttf 字体文件是否包含某个字
- 判断NSBundle本地是否包含有某个文件
- 如何判断某个文件里是否包含指定的字符?
- cocos2dx判断TTF字体库是否有不支持的字体
- TTF字体文件结构
- TTF字体文件结构
- TTF字体文件结构
- 精简ttf字体文件
- javascript 判断string是否包含某个字符串
- 如何判断NSDictionary是否包含某个键
- json对象判断是否包含某个键
- 判断NSDictionary是否包含某个key
- 如何判断NSDictionary是否包含某个键
- 判断sqlite是否包含某个字段
- 判断NSDictionary是否包含某个键
- 判断NSString中是否包含某个字符
- IOS判断字符串是否包含某个字符串
- 做软件测试的节操和底线
- 利用python进行word_count
- bzoj3123 森林 主席树&启发式合并
- x265-1.8版本-common/wavefront.cpp注释
- x265-1.8版本-common/wavefront.h注释
- 判断 ttf 字体文件是否包含某个字
- x265-1.8版本-common/yuv.h注释
- HDU-1016-Prime Ring Problem( C && 经典DFS题 )
- 深拷贝与浅拷贝
- 个人关于对KVC和KVO
- when the android meet dagger2
- 1965: [Ahoi2005]SHUFFLE 洗牌 快速幂+扩展欧几里得算法
- leetcode326题 题解 翻译 C语言版 Python版
- 【PA2014】【BZOJ3711】Druzyny