C++ 如何从“渲染”中渲染彩色图示符;Segoe UI表情符号“;用freetype?

C++ 如何从“渲染”中渲染彩色图示符;Segoe UI表情符号“;用freetype?,c++,windows,opengl,fonts,freetype,C++,Windows,Opengl,Fonts,Freetype,我正在尝试使用最新的freetype 2.8.1(我从没有单线程或多线程的源代码编译了x64调试版本)和OpenGL渲染Windows“Segoe UI表情符号”(Segoe UI Emoji)字体中的彩色图示符。因此,我使用了Windows\font目录中的seguiemj.ttf(SHA256=D6771A6FE84E21BC580443ADD16EC920E6988CA067041D0461C641F75074A8C),但FT_HAS_COLOR总是返回false。 我也用by试过了,结果

我正在尝试使用最新的freetype 2.8.1(我从没有单线程或多线程的源代码编译了x64调试版本)和OpenGL渲染Windows“Segoe UI表情符号”(Segoe UI Emoji)字体中的彩色图示符。因此,我使用了
Windows\font
目录中的
seguiemj.ttf
(SHA256=
D6771A6FE84E21BC580443ADD16EC920E6988CA067041D0461C641F75074A8C
),但FT_HAS_COLOR总是返回false。 我也用by试过了,结果也一样

使用android文件时,
FT_HAS_COLOR
返回true,并且位图槽不会被填充

FT_图书馆;
面部;
FT_Init_FreeType(&library);
FT_New_Face(库,“resources/fonts/seguiemj.ttf”,0和Face);
bool has_color=FT_has_color(面部);
调试(日志信息,0,“字体有颜色:%s”,有颜色?“是”:“否”);

std::u32string s=U“FT_Load_Glyph with FT_Load_COLOR将字体的位图版本加载到Glyph槽中。之后,您的代码调用FT_Render_Glyph并根据轮廓渲染Glyph,有效地替换以前加载的位图


如果跳过FT_Render_Glyph,您应该不会有问题。

在a中编辑。另外,在您尝试的Microsoft字体的md5sum/sha256中链接Github字体并编辑。Is
face−>字形−>格式
FT\u加载\u GLYPH()之后设置为
FT\u GLYPH\u格式\u位图
call?这两种字体都设置为
FT\u GLYPH\u FORMAT\u OUTLINE
。嘿,你还有生成彩色表情的所有代码吗?你是对的。但只有当我将FT\u LOAD\u RENDER添加到FT\u LOAD\u GLYPH函数时,我才能跳过FT\u RENDER\u GLYPH调用,位图缓冲区会被填满。可能是因为没有可用的颜色。@code_hunter等待。运行FT_Load_图示符(…,FT_Load_COLOR)时未填充位图?将FT_LOAD_RENDER放入其中相当于在加载后运行FT_RENDER_Glyph,这正是您不想做的。这是我的猜测。如果我错了,我将收回答案您完全正确。FT_RENDER_Glyph仅在您不需要不同的渲染模式时才是必需的。仅使用FT_LOAD_颜色应该是正确的。