Подробности
[В начало]
Проблема в реализации № V0020
Краткое описание
FT_Bitmap_Convert не обрабатывает pixel mode FT_PIXEL_MODE_LCD и FT_PIXEL_MODE_LCD_V
Подробное описание
В описании функции FT_Bitmap_Convert указано:
FT_Bitmap_Convert FT_EXPORT( FT_Error ) FT_Bitmap_Convert( FT_Library library, const FT_Bitmap *source, FT_Bitmap *target, FT_Int alignment );This function converts a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a bitmap object with depth 8bpp., making the number of used bytes per line (a.k.a. the `pitch') a multiple of `alignment'.
Возвращаемое значение данной функции описано следующим образом:
return
FreeType error code. 0 means success.
Допустимые значения pixel mode перечислены в enum:
typedef enum FT_Pixel_Mode_ { FT_PIXEL_MODE_NONE = 0, FT_PIXEL_MODE_MONO, FT_PIXEL_MODE_GRAY, FT_PIXEL_MODE_GRAY2, FT_PIXEL_MODE_GRAY4, FT_PIXEL_MODE_LCD, FT_PIXEL_MODE_LCD_V, FT_PIXEL_MODE_MAX /* do not remove */ } FT_Pixel_Mode;
Тем не менее, при вызове данной функции для преобразования bitmap'а с pixel mode FT_PIXEL_MODE_LCD или FT_PIXEL_MODE_LCD_V возвращается код 6 (FT_Err_Invalid_Argument).
Похоже, что функция FT_Bitmap_Convert() не обрабатывает pixel mode FT_PIXEL_MODE_LCD и FT_PIXEL_MODE_LCD_V.
Раздел стандарта
Linux Standard Base Desktop Specification 3.2, Chapter 12. Libraries, 12.1 Interfaces for libfreetype, который ссылается на FreeType-2.1.10 API Reference, section "Bitmap Handling"
Способ воспроизведения
- Распакуйте прикреплённый архив
- Скомпилируйте и скомпонуйте программу-пример, которая в нём содержится
- Запустите программу-пример:
./bitmap_convert fonts/FreeMono.ttf M FT_RENDER_MODE_LCD 4
./bitmap_convert fonts/FreeMono.ttf M FT_RENDER_MODE_LCD_V 4
Компонент
freetype 2.1.10 or later
Принято
freetype-devel mailing list, #2, 2009.01
Статус
Исправлено в freetype 2.3.8
[В начало]