Подробности
[В начало]
Проблема в реализации № V0028
Краткое описание
FT_Get_MM_Var возвращает неверные значения по умолчанию для design coordinate
Подробное описание
Согласно FreeType2 API reference, FT_Get_MM_Var возвращает дескриптор, соответствующий данному Multiple Master шрифту. Также в описании структуры FT_Var_Axis указано следующее:
FreeType computes meaningful default values for MM; it is then an integer value, not in 16.16 format.Из этого следует, что значение по умолчанию для design coordinate должно быть, по крайней мере, не меньше минимального и не больше максимального значения для данной design coordinate.
Например, для первой design coordinate шрифта 'ZX______.PFB' (см. прикреплённый архив), минимальное и максимальное значения равны 50 и 1450 (0x00320000 и 0x05AA0000 в формате 16.16 с фиксированной запятой), соответственно.
FT_Get_MM_Var, однако, выбирает для этой design coordinate в качестве значения по умолчанию число вне допустимого интервала: 0xFBD20000 и 0x000001A3FBD20000 на 32-битных и 64-битных системах, соответственно.
Кроме того, в случаях, когда FT_Get_MM_Var всё-таки возвращает значение из нужного интервала, оно представляет собой число в формате 16.16 с фиксированной запятой, в отличие от того, что сказано в документации:
it is then an integer value, not in 16.16 formatРаздел стандарта
Linux Standard Base Desktop Specification 3.2, Chapter 12. Libraries, 12.1 Interfaces for libfreetype, который ссылается на FreeType-2.1.10 API Reference, section "Multiple Masters"
Способ воспроизведения
- Распакуйте прикреплённый архив
- Скомпилируйте и скомпонуйте программу-пример, которая в нём хранится
- Запустите программу-пример, указав в командной строке в качестве аргумента имя файла шрифта:
./multiple_masters ZX______.PFB
./multiple_masters ZY______.PFB
Компонент
freetype 2.1.10 or later
Принято
freetype-devel mailing list, #26, 2008.11
Статус
Исправлено в freetype 2.3.8
[В начало]