我正在尝试渲染默认情况下已在文件中着色的图释。
我正在使用“Segoe UI Emoji” SHA-256: 9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed
问题在于FT_HAS_COLOR()始终返回false,因此我无法使用FT_LOAD_COLOR将位图加载到纹理中。

我已经在“通用字符映射”中打开了文件,并看到了以下内容-
c++ - 用FreeType加载彩色字体-LMLPHP

这是光栅化字形的代码片段

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;

结果在
c++ - 用FreeType加载彩色字体-LMLPHP

我将不胜感激,我已经坚持了一段时间,并尝试了该字体/其他字体的不同版本。

注意:我看过this,但好像没有得到回答

谢谢。

最佳答案

从FreeType文档中:



显然,FreeType仅支持彩色位图图像。 Segoe使用COLR / CPAL vector 格式,也许这就是为什么它返回负数并呈现常规的“黑白”字形的原因?

关于c++ - 用FreeType加载彩色字体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54781525/

10-13 03:37