如何使用freetype在iOS上呈现表情符号?

如何使用freetype在iOS上呈现表情符号?,ios,opengl,emoji,freetype,Ios,Opengl,Emoji,Freetype,自2.5版以来,FreeType支持表情符号。我想通过FreeType呈现表情符号,然后在OpenGL中使用它,所以这里不会使用UIKITAPI。但是,我不想,也没有许可证,在我的应用程序中附带一个“Apple Color Emoji.ttf”文件 因此,问题是: 有没有办法在iOS设备上加载系统表情符号字体文件? 是否有Objective-c或c/c++API可以访问系统表情字体文件?首先,让我们澄清一个误解。您不必使用iOS上的系统库使用UIKit呈现字体。您可以使用核心文本(它有一个常规的

自2.5版以来,FreeType支持表情符号。我想通过FreeType呈现表情符号,然后在OpenGL中使用它,所以这里不会使用UIKITAPI。但是,我不想,也没有许可证,在我的应用程序中附带一个“Apple Color Emoji.ttf”文件

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

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

  • 字符编码

  • 文本成形

  • 断线

  • 紧缺

  • 字形替换

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

  • 等等

核心文本实际上是FreeType+HarfBuzz+Pango+ICU的替代品。如果我想做一些核心文本无法轻松完成的事情,比如将字形渲染到精灵工作表并使用它来绘制文本,或者如果我想跨平台共享代码,我只会直接使用FreeType


现在,如果您确信自己花额外的几周时间做这件事是值得的,那么您必须解析
/System/Library/Fonts/CGFontCache.plist
文件以找到所需字体的位置。请参阅:

回答得很好!事实上,我使用FreeType是因为我需要将我的字形排列到精灵表中。因此,总之,我应该尝试表情符号的核心文本,我可以得到纹理数据,这些数据将在以后的OpenGL中使用。