在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

判断 ttf 字体文件是否包含某个字相关推荐

  1. LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)

    前言   在学习lvgl中,在英文字体上很多人都用过,但是中文字体往往需要靠取模去实现.那么我就在想,如何像windows那样加载动态的字体呢,这样想做多大字体都行.于是就开始了字体的移植. 什么是t ...

  2. java 解析ttf字体文件

    要了解ttf字体文件的原理更方便对代码的理解 package com.maoyan.movie.ttf.encode;public class PostTableHeader {public long ...

  3. 【Flutter】Icons 组件 ( FlutterIcon 下载图标 | 自定义 svg 图标生成 ttf 字体文件 | 使用下载的 ttf 图标文件 )

    文章目录 一.FlutterIcon 下载图标 二.自定义 svg 图标生成 ttf 字体文件 三.使用下载的 ttf 图标文件 四.完整代码示例 五.相关资源 一.FlutterIcon 下载图标 ...

  4. 如何编辑ttf字体文件

    libfreetype的目标是以最小的内存最快的速度,读取和渲染字体.因此libfreetype并不适宜用来编辑ttf字体文件. 编辑字体文件,可以用FontCreator.微软fonttools.f ...

  5. ttf文件 python 打开_[译]JS解析TTF字体文件

    把字体拖到下边的方框,获取其中的奥妙!点此获取示例ttf字体文件. TTF文件拖到这里 在这篇文章,我们计划操作如下: 将字体文件拖入网页,并读取之 尽管ttf文件是为C语言读取设计的,但我们仍试图解 ...

  6. .ttf字体文件引入vue项目及使用

    出自文章:.ttf字体文件引入vue项目及使用 UED要求使用非系统自带字体 1.在项目的assets文件夹中创建fonts文件夹,将下载好的.ttf字体文件放进去,并创建font.css文件 2.在 ...

  7. win7使用android字体文件,处置win7系统安装TTF字体文件的详细步骤

    技术小编发觉操作系统在使用途中会有win7系统安装TTF字体文件的问题,但是很多朋友还不了解win7系统安装TTF字体文件的情况该怎么操作,今天我就来将win7系统安装TTF字体文件的方法分享给你们, ...

  8. css如何引用.ttf字体文件|@font-face

    这里复习一下如何在css文件里引用.ttf字体文件. 如下图,红色圈起来的标题需要使用productsans字体,绿色圈起来的小标题需要使用roboto字体,字体文件已下载到fonts文件夹里,接下来 ...

  9. 小程序引入ttf字体文件

    首先要把我们需要使用的TTF字体文件上传到服务器上,拿到一个网络路径,如下图引入到wxss文件内: 然后直接使用上面我们定义的名称就可以.

最新文章

  1. 压缩 20M 文件从 30 秒到 1 秒的优化过程!
  2. LeetCode 961 N-Repeated Element in Size 2N Array --python,java解法
  3. Python 实现图片质量比较之PSNR和SSIM
  4. python丢失api-ms-win-crt-process_api-ms-win-crt-process-l1-1-0.dll 丢失的处理,遇到问题和完美解决...
  5. WPF定时刷新UI界面
  6. Deep learning with python notebooks 笔记 第一章 深度学习基础
  7. 语言用pad流程图求和例题_易编玩初级课解析:如何用编程玩转流程图?
  8. 团队博客作业-Week3
  9. java判断map是否为空_Java自定义Exception
  10. 如何批量从Excel文件中导入数据到数据库(二)
  11. cad打印本计算机未配置,为什么CAD点打印的时候会警告无法使用此绘图仪配置?...
  12. 区别: @Secured(), @PreAuthorize() 及 @RolesAllowed()
  13. 什么是数据可视化技术
  14. Win10只读文件夹怎么删除
  15. ictclas包 java_Java通过JNI调用ICTCLAS中文分词包的方法
  16. 人话版GPL 2.0协议
  17. 2014 IT互联网公司校招应届生待遇大全
  18. 自定义 ZuulFilter抛出异常
  19. php 开源产品,PHP免费开源企业产品建站系统含手机站
  20. 从零开始的博客建站之旅——搭建

热门文章

  1. 苹果笔买原装的还是随便买?类似apple pencil的笔推荐
  2. git出现错误:fatal: unable to access 'https://github.com/ory/hydra.git/'
  3. 晶振的基本单位是什么?
  4. [渝粤教育] 天津市大学软件学院 职熵 参考 资料
  5. VMware中win10安装谷歌浏览器显示空白异常解决
  6. 单字双字三字_有深厚寓意的单字名及双字名,最适合给宝宝起名了
  7. CATIA CAA 创建投影视图
  8. Anaconda更新最新版本、下载慢问题及更新conda版本
  9. 世界上最遥远的距离 可能我们之间“隔着”VLAN
  10. 华为怎么分屏操作技巧_第五人格怎么正确操控机械师 机械师操作技巧介绍