我正在尝试渲染默认情况下已在文件中着色的图释。
我正在使用“ Segoe UI表情符号” SHA-256: 9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed
问题在于FT_HAS_COLOR()
始终返回false,因此我无法使用FT_LOAD_COLOR将位图加载到纹理中。
我已经在Universal Character Map中打开了文件,并看到了-
在其中对字形进行栅格化的代码片段
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,但似乎并没有得到回答
谢谢。
答案 0 :(得分:1)
从FreeType文档中:
[自2.5开始]加载嵌入的彩色位图图像。生成的颜色位图(如果可用)将具有FT_PIXEL_MODE_BGRA格式。如果未设置该标志并且找到了颜色位图,则使用FT_PIXEL_MODE_GRAY格式将它们透明转换为256级灰度位图。
显然,FreeType仅支持彩色位图图像。 Segoe使用COLR / CPAL矢量格式,也许这就是为什么它返回负数并呈现常规的“黑白”字形的原因?
答案 1 :(得分:1)
已解决,@ PeterT提到FreeType 2.10支持Segoe UI Emoji和使用CPAL的类似字体,而2.9.1不支持。
谢谢!