Загрузка цветных шрифтов с помощью FreeType - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь отобразить в файле смайлики, которые уже окрашены по умолчанию.Я использую 'Segoe UI Emoji' SHA-256: 9e5a8c7e6c1e9096918a490798f4177107f0522870c8ad0227d5f02be407e0ed

Проблема в том, что FT_HAS_COLOR() всегда возвращает false, поэтому я не могу использовать FT_LOAD_COLOR для загрузки растрового изображения в мою текстуру.

Я открыл файл в Universal Character Map и увидел это - Segoe UI Emoji

Вот фрагмент кода, который растрирует глифы

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;

Результатыв этом result

Я был бы признателен за любую помощь, я застрял на этом в течение некоторого времени и пробовал различные версии этого шрифта / других шрифтов.

Примечание: я видел это , но не похоже, что на него ответили

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Решено, @PeterT упомянул, что FreeType 2.10 поддерживает Segoe UI Emoji и аналогичные шрифты, использующие CPAL, 2.9.1 - нет.

Спасибо!

0 голосов
/ 20 февраля 2019

Из документов FreeType:

[Начиная с версии 2.5] Загрузка встроенных цветных растровых изображений .Результирующие цветные растровые изображения, если они доступны, будут иметь формат FT_PIXEL_MODE_BGRA.Если флаг не установлен и цветовые растровые изображения найдены, они прозрачно преобразуются в серые растровые изображения с 256 уровнями, используя формат FT_PIXEL_MODE_GRAY.

Очевидно, FreeType поддерживает только цветные растровые изображения.Segoe использует векторный формат COLR / CPAL, может, поэтому он возвращает отрицательный знак и отображает обычные «черно-белые» глифы?

...