首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用FreeType加载彩色字体

用FreeType加载彩色字体
EN

Stack Overflow用户
提问于 2019-02-20 16:07:16
回答 2查看 3.3K关注 0票数 3

我正在尝试渲染文件中已经默认着色的表情图标。我用的是“Segoe UI Emoji”SHA-256: 9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed

问题是FT_HAS_COLOR()总是返回false,因此我不能使用FT_LOAD_COLOR将位图加载到我的纹理中。

我在通用字符映射表中打开了这个文件,看到了这个-

下面是光栅化字形的代码片段

代码语言:javascript
复制
FT_Int32 flags = FT_LOAD_FORCE_AUTOHINT | ( m_bAntiAliasing ? FT_LOAD_TARGET_NORMAL : FT_LOAD_TARGET_MONO );
if ( FT_HAS_COLOR( m_face ) )
    flags |= FT_LOAD_COLOR;
else
    flags |= FT_LOAD_RENDER;         

if ( FT_Load_Char( m_face, glyphit->first, flags ) )
    continue;

结果如下

我非常感谢任何人的帮助,我已经坚持了很长一段时间,并尝试了该字体/其他字体的不同版本。

注意:我看过this,但似乎没有人回答

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-02-20 18:08:01

从FreeType文档中:

从2.5开始加载嵌入式彩色位图图像。生成的彩色位图(如果可用)将采用FT_PIXEL_MODE_BGRA格式。如果未设置该标志,但找到彩色位图,则会使用FT_PIXEL_MODE_GRAY格式将它们透明地转换为256级灰度位图。

显然,FreeType只支持彩色位图图像。Segoe使用COLR/CPAL矢量格式,也许这就是它返回负数并渲染常规“黑白”字形的原因?

票数 2
EN

Stack Overflow用户

发布于 2019-02-21 01:48:59

解决了,@PeterT提到,CPAL2.10支持Segoe UI Emoji和类似的使用FreeType的字体,2.9.1不支持。

谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54781525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档