Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用FreeType加载彩色字体_C++_Fonts_Emoji_Freetype - Fatal编程技术网

C++ 使用FreeType加载彩色字体

C++ 使用FreeType加载彩色字体,c++,fonts,emoji,freetype,C++,Fonts,Emoji,Freetype,我正在尝试渲染文件中默认已上色的表情符号。 我正在使用“Segoe UI表情符号”SHA-256:9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed 问题是FT\u HAS\u COLOR()总是返回false,因此我无法使用FT\u LOAD\u COLOR将位图加载到纹理中 我在通用字符映射中打开了文件,看到了这个- 下面是光栅化图示符的代码片段 FT_Int32 flags = FT_LOAD_FORCE_AU

我正在尝试渲染文件中默认已上色的表情符号。 我正在使用“Segoe UI表情符号”
SHA-256:9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed

问题是
FT\u HAS\u COLOR()
总是返回false,因此我无法使用FT\u LOAD\u COLOR将位图加载到纹理中

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

下面是光栅化图示符的代码片段

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;
结果是

我将感谢任何帮助,我已经在这个问题上坚持了很长一段时间,并尝试了不同版本的这种字体/其他字体

注意:我看到了,但似乎没有得到回答


谢谢。

来自FreeType文档:

[自2.5]加载嵌入的彩色位图图像。生成的颜色位图(如果可用)将采用FT_PIXEL_MODE_BGRA格式。如果未设置标志且找到彩色位图,则使用FT_像素_模式_灰度格式将其透明地转换为256级灰度位图


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

已解决,@PeterT提到FreeType 2.10支持Segoe UI表情符号和使用CPAL的类似字体,2.9.1不支持


谢谢

如果您正在寻找一种使用彩色位图的表情字体,那么您可以使用emojione androidI。我已经尝试过,FT_Set_Char_Size每次都会失败,FT_Err_Invalid_Pixel_Size,位图永远不会填充。使用位图时,您需要使用
FT_Select_Size(face,0)设置一个广告大小例如。第二个参数是数组中列出的索引可用大小
available\u size
你有没有一个例子可以用Freetype/pango来呈现彩色表情,而不仅仅是一个片段?这部分是正确的,从Freetype 2.10开始,实际上有CPAL支持,它应该以同样的方式工作。看,似乎2.10还没有标记,因此,签出开发分支现在似乎是必要的,所以它在2.10中受支持,而不是我正在使用的2.9.1版本?@Mike是的,2.10支持呈现Segoe UI表情符号使用的彩色字体格式,我测试了它,它工作正常