ios - 如何在 iOS 上使用 freetype 渲染 emoji 字符?

标签 ios opengl emoji freetype

FreeType 从 2.5 版本开始支持 emoji 字符。我想通过 FreeType 渲染表情符号,然后在 OpenGL 中使用它,所以这里不会使用 UIKit API。但是,我不想,也没有许可证,在我的应用程序中发送“Apple Color Emoji.ttf”文件。

那么问题来了: 有没有办法在iOS设备上加载系统表情符号字体文件? 是否有任何 Objective-c 或 c/c++ API 可以访问系统表情符号字体文件?

最佳答案

首先,让我们澄清一个误解。您不必使用 UIKit 在 iOS 上使用系统库来呈现字体。您可以使用 Core Text(它具有常规的旧 C 接口(interface))将文本直接渲染到屏幕外缓冲区中,并使用该缓冲区作为 OpenGL 的纹理。这将自动处理非常庞大的工作,否则您将自己完成这些工作:

  • 字符编码

  • 文字整形

  • 断行

  • 字距调整

  • 字形替换

  • 字体选择(粗体、斜体等)

  • 等等

Core Text 确实是 FreeType + HarfBuzz + Pango + ICU 的替代品。只有当我想做一些 Core Text 做不到的事情时,我才会直接使用 FreeType,比如将字形渲染到 sprite 表中并使用它来绘制文本,或者如果我想跨平台共享代码。

现在,如果您确信自己花额外的几周时间来完成它是值得的,那么您将不得不解析 /System/Library/Fonts/CGFontCache.plist 文件以找到位置你想要的字体。请参阅:Location of the fonts on the iPhone?

关于ios - 如何在 iOS 上使用 freetype 渲染 emoji 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29445603/

相关文章:

ios - 自定义 TableViewCell 与新关联的 .xib 单元冲突

c++ - 在 Window 中的 NetBeans 上设置 OpenGL

OpenGL 3.3、GLSL 1.5 : How to setup a Texture Buffer Object containing various texture2D?

sql - 用于查找表情符号的 Postgresql 查询

javascript - 自定义 react 表情符号不和谐 js : "Client undefined"

iphone - 关闭当前模态视图 Controller 的最优雅方式?

ios - Titanium:向 listView 添加一个 ActivityIndi​​cator?

ios - 推送通知列表

c++ - 为什么 glDrawElements 给我 GL_OUT_OF_MEMORY?

javascript - 如何让我的表情符号在 emoji-mart 中看起来更漂亮?