Подробности

[В начало]

Проблема в реализации № 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"

Способ воспроизведения

  1. Распакуйте прикреплённый архив
  2. Скомпилируйте и скомпонуйте программу-пример, которая в нём содержится
  3. Запустите программу-пример:
    ./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

[В начало]