Windows "Segoe UI Emoji"에서 색칠 한 글자를 렌더링하려고합니다. 최신 freetype 2.8.1 (단일 또는 다중 스레드없이 소스 코드에서 x64 디버그 버전을 컴파일했습니다) 및 OpenGL을 사용합니다. 그래서 seguiemj.ttf
을 Windows\Fonts
디렉토리 (SHA256 = d67717a6fe84e21bc580443add16ec920e6988ca067041d0461c641f75074a8c
)에서 사용하지만 FT_HAS_COLOR는 항상 false를 반환합니다. 나는 또한 EmojiOneColor-SVGinOT.ttf
에 의해 eosrei from github으로 시도해 본 결과 같은 결과가 나왔습니다.프리 형식으로 "Segoe UI Emoji"에서 색칠 된 글리프를 렌더링하는 방법은 무엇입니까?
android에 this 파일을 사용하는 경우 FT_HAS_COLOR
이 true를 반환하고 비트 맵 슬롯이 채워지지 않습니다.
FT_Library library;
FT_Face face;
FT_Init_FreeType(&library);
FT_New_Face(library, "resources/fonts/seguiemj.ttf", 0, &face);
bool has_color = FT_HAS_COLOR(face);
debug(LOG_INFO, 0, "font has colors: %s", has_color ? "yes" : "no");
std::u32string s = U" ";
FT_GlyphSlot slot = face->glyph;
for (auto c : s)
{
int glyph_index = FT_Get_Char_Index(face, c);
FT_Error error = FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT|FT_LOAD_COLOR);
if (error)
continue;
error = FT_Render_Glyph(slot, FT_RENDER_MODE_NORMAL);
if (error)
continue;
if (slot->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA)
debug(LOG_INFO, 0, "glyph is colored");
...
}
은 기본적으로 내가 위의 코드를 사용하는 경우에만 해당 글꼴 파일의 단색 비트 맵을받을 수 있으며, 픽셀 모드는 항상 FT_PIXEL_MODE_GRAY입니다. 내 applicaton
에서 Word에서
이모티콘/
이모티콘, 파이어 폭스
는 그것을 수정하거나 내가 뭔가 잘못했는지 뭔가가 있나요?
[mcve]에서 편집하십시오. 또한 Github 글꼴을 연결하고 시도한 Microsoft 글꼴의 md5sum/sha256에서 편집하십시오. – genpfault
감사합니다. 편집했습니다. github의 글꼴은 [여기] (https://github.com/eosrei/EmojiOne-Color-Font)에서 찾을 수 있습니다. (제한 때문에 내 게시물에 추가 할 수 없음) –
걱정할 필요없이 편집했습니다. – genpfault