Строчные буквы e, is и w субпикселей, отображаемых с помощью FreeType
FreeType - популярная библиотека для разработки программного обеспечения, используемая для визуализации текста на растровых изображениях и обеспечивающая поддержку других операций, связанных со шрифтами. Механизм растеризации шрифтов FreeType - это бесплатное программное обеспечение с открытым исходным кодом, исходный код которого имеет двойную лицензию по BSD-подобной лицензии и GPL. FreeType поддерживает ряд форматов шрифтов, в том числе TrueType, Type 1 и OpenType, и «спроектирован таким образом, чтобы быть маленьким, эффективным, легко настраиваемым и переносимым, но при этом способным производить высококачественный вывод (изображения глифов)».
СОДЕРЖАНИЕ
- 1 Особенности
- 1.1 Намек
- 1.2 Форматы файлов
- 1.3 Загрузчик
- 1.4 Платформы
- 1.5 Лицензирование
- 2 История
- 2.1 Основное переписывание 2.0
- 2.2 Патентные конфликты
- 2.3 Пожертвование двигателя CFF
- 3 пользователя
- 4 См. Также
- 5 ссылки
- 6 Внешние ссылки
Функции
Возможность доступа к информации об ограничениях встраивания и поднабора шрифтов была добавлена в 2.3.8.
Намек
Поддержка применения специального фильтра к растровым изображениям, сгенерированным 'FT_Render_Glyph', если был выбран один из FT_RENDER_MODE_LCD и FT_RENDER_MODE_LCD_V, была добавлена в 2.3.0, в то время как рендеринг, оптимизированный для ЖК-дисплея, был отключен во всех сборках библиотеки по умолчанию. ЖК-фильтр стал нормализованным и сбалансированным по цвету в 2.6.2. Метод хинтинга «Гармония», который воспроизводит результат хинтинга субпикселей ClearType с легким трехконтактным фильтром без использования методов ClearType, стал методом хинтинга субпикселей по умолчанию в 2.8.1. Поскольку срок действия патентов, связанных с ClearType, истек, ClearType доступен для использования в версии 2.10.3.
- TrueType
- Интерпретатор байт-кода TrueType был отключен в версии 2.0 Beta 8, а затем снова отключен в версии 2.0.2. Интерпретатор байт-кода TrueType был исправлен, чтобы выдавать точно такой же результат, как FreeType 1.x в 2.1.0. Незапатентованный хинтер стал по умолчанию в 2.3.0, который определяет необходимость хинтера по имени шрифта. Возможность обнаруживать запатентованные инструкции байт-кода и переключение непатентованного хинтера были добавлены в 2.3.5. Интерпретатор байт-кода TrueType включен по умолчанию в версии 2.4.0. Поддержка субпиксельного хинтинга TrueType реализована в версии 2.4.11. Режим субпиксельной подсказки в версии 40 механизма байт-кода был добавлен в 2.6.4 и был отключен в 2.6.5, а затем включен по умолчанию в 2.7. Оператор байт-кода GETVARIATION был реализован в 2.7.
- PostScript
- Хинтер PostScript был удален в 2.0.5. В версии 2.0.6 был представлен новый хинтер PostScript для поддержки собственных подсказок в PostScript Type 1, PostScript CID и CFF / CEF. Движок хинтинга обновлен в версии 2.1.3. Новый движок парсинга и хинтинга CFF от Дэйва Арнольда был представлен в версии 2.4.12. 2.5.0.1 включает это по умолчанию. Старый движок CFF был отключен по умолчанию. Затемнение ствола CFF можно настроить с помощью свойства darkening-parameters. CFF Поведение затемнения стержня стало настраиваемым во время сборки в 2.5.4. Оператор CFF 'random' поддерживается в 2.8, завершая поддержку всех кодов операций CFF. Возможность управления генерацией псевдослучайных чисел для «случайного» оператора была добавлена в 2.8. Поддержка шрифта Type 1 с использованием движка Adobe CFF была добавлена в 2.9. Начиная с версии 2.9, имена PostScript для именованных экземпляров в вариационном шрифте по умолчанию заменяются на имена PostScript, полученные с помощью алгоритмов, если для именованного экземпляра не задано значение «FT_Set_Named_Instance» и для шрифта есть соответствующие записи в его таблице «fvar».
- Авто-хинтер
- Новый модуль авто-хинтинга был добавлен в 2.0 Beta 8. Движок хинтинга был обновлен в 2.1.3. В 2.1.8 автохинтинг отключен для глифов, которые вертикально искажены или зеркально отражены. Auto-hinter был заменен на auto-fitter в FreeType 2.1.10. В FreeType 2.2 был представлен новый алгоритм для шрифтов CJK, основанный на патче Акито Хираи. Он работает только для шрифтов с картой символов Unicode. В 2.3.2 была введена улучшенная поддержка шрифтов с засечками, углов и интервалов. При вычислении синих зон одноточечные контуры игнорируются в 2.3.3. В 2.3.5 хинтер по умолчанию для нелатинских скриптов был переключен на модуль хинтинга CJK. В версии 2.4.5, если автоматическая подсказка не отключена явно, используется авто-подсказка, если шрифт на основе TrueType не содержит собственных подсказок. В версии 2.5.1 улучшен рендеринг Auto-hinter для шрифтов TrueType, особенно в диапазоне 20–40 ppem. Поддержка библиотеки HarfBuzz 0.9.19 или новее была добавлена в 2.5.3. Авто-хинтинг был добавлен в сценарии деванагари и телугу (экспериментальные) в версии 2.5.4. Авто-хинтинг был добавлен в арабский и тайский скрипты в версии 2.6. Авто-подсказка была добавлена в лаосский алфавит, а поддержка арабского алфавита была улучшена в версии 2.6.1. Затемнение ствола было добавлено в 2.6.2, но по умолчанию отключено. Авто-хинтинг был добавлен в армянский, чероки, эфиопский, грузинский, гуджарати, гурмукский, малаялам, сингальский, тамильский скрипты в версии 2.6.4. Добавлен авто-хинтинг для адлам, авестийский, бамум, бухид, карийский, чакма, коптский, кипрский, десеретский, глаголический, готический, каях, лису, н'ко, ол-чики, древнетюркский, осейдж, османья, саураштра, шавиан, Сунданский язык, тайвьет, тифинаг, унифицированная канадская слоговая буква, вай в 2.8. Отключен режим авто-хинтинга «Light» с использованием показателей TrueType для шрифтов TrueType по умолчанию в версии 2.8. В ftdiff в 2.8 был добавлен режим отображения световых автоподсказок с субпиксельным позиционированием. В 2.9.1 диапазоны скриптов авто-хинтера были обновлены для Unicode 11, добавлены новые скрипты для грузинского языка Мтаврули.
Форматы файлов
Скриншот окна конфигурации MacType, интерфейса FreeType
Новый формат Adobe SING Glyphlet был представлен в FreeType 2.2.
- BDF
- Поддержка формата BDF была добавлена в 2.1.1, включая поддержку растровых изображений со сглаживанием. Добавлена поддержка получения свойств BDF в 2.1.4-rc1. Добавлена поддержка свойств SETWIDTH_NAME и ADD_STYLE_NAME в 2.1.8. В 2.1.9 свойство DEFAULT_CHAR (если доступно) используется для выбора формы глифа для неопределенного глифа. В 2.1.10 FT_Set_Pixel_Sizes и FT_Set_Char_Size были изменены для выбора фактических размеров шрифта и «номинального» размера шрифта соответственно, при этом параметр ширины игнорировался; Драйвер BDF больше не преобразует все возвращенные растровые изображения с глубиной 2 или 4 бит на пиксель в глубину 8 бит на пиксель. Поддержка всего диапазона кодировки Unicode была добавлена в 2.4.9. Возможность использования значений ключевого слова «SIZE» для обработки шрифтов без свойств «POINT_SIZE», «RESOLUTION_X» или «RESOLUTION_Y» была добавлена в 2.8.1.
- PCF
- Встроенная поддержка файлов шрифтов, сжатых с помощью gzip, была добавлена в 2.1.3. Добавлена поддержка получения свойств PCF в 2.1.4-rc1. В 2.2.8 добавлена поддержка свойств SETWIDTH_NAME и ADD_STYLE_NAME, а также растровых шрифтов, сжатых с помощью алгоритма LZW. В 2.1.10 FT_Set_Pixel_Sizes и FT_Set_Char_Size были изменены, чтобы выбрать фактические размеры шрифта и «номинальный» размер шрифта соответственно, при этом параметр ширины игнорировался. Поддержка отображения более «красочных» фамилий была добавлена в 2.7.1, а в 2.8 эта функция сделана необязательной.
- Ресурс переносимых шрифтов (PFR)
- Встроенные растровые изображения поддерживаются и возвращают правильные метрики кернинга для всех глифов в 2.1.3. Возможность возвращать имена семейств шрифтов и стилей, когда они доступны, была добавлена в 2.1.4-rc2.
- PostScript
- Драйверы CID и CFF / Type2 / CEF были добавлены в 2.0 Beta 8. Улучшенная поддержка синтетических (преобразованных) шрифтов была добавлена в 2.0.2. Драйвер шрифта Type 42 был добавлен в 2.1.1. Поддержка шрифтов CFF, содержащих подмножество их эталонной кодировки, была добавлена в 2.1.4-rc1. В 2.1.8 добавлена поддержка шестнадцатеричного формата данных после команды `StartData 'в шрифтах Type 1 с ключом CID и встроенных растровых изображений в шрифтах CFF на основе SFNT. Доступ к дополнению для заказа реестра CID был добавлен в 2.3.6. Доступ к шрифтам CFF с CID-ключом через значения CID через FT_Get_CID_Is_Internal_CID_keyed и FT_Get_CID_From_Glyph_Index были добавлены в 2.3.9. Получение ключей словаря в шрифтах Type 1 через новый API FT_Get_PS_Font_Value было добавлено в 2.4.8. Механизм CFF поддерживает все операторы типа 2, кроме "random" в 2.6.3. Поддержка кернинга треков для файла AFM добавлена в FreeType 2.2.
- TrueType / OpenType
- Поддержка форматов OpenType 1.3 8, 10, 12 была добавлена в 2.0.5. Поддержка шрифтов TrueType или OpenType, встроенных в PDF-документы без cmap, post и name, была добавлена в 2.0.8. Поддержка шрифтов с неработающими таблицами имен с недопустимыми записями и дикими смещениями была добавлена в 2.0.9. Поддержка некоторых «битых» шрифтов, которые без проблем загружаются под Windows в версии 2.1.3. Поддержка таблиц TrueType без таблицы hmtx при использовании инкрементного интерфейса была добавлена в 2.1.4-rc1, а глубина составных глифов ограничена. Поддержка таблиц avar, cvar, fvar и gvar была добавлена в 2.1.9. Установка семейства и стиля в шрифтах SFNT обрабатывается строками TT_NAME_ID_PREFERRED_FAMILY и TT_NAME_ID_PREFERRED_SUBFAMILY в 2.1.10. В 2.1.10 был добавлен API FT_Sfnt_Table_Info для получения информации об имени и размере таблиц SFNT, а API FT_OpenType_Validate был добавлен для проверки таблиц OpenType (BASE, GDEF, GPOS, GSUB, JSTF). Бит 1 в «головной» таблице шрифтов TrueType поддерживается в FreeType 2.2. Поддержка загрузки имени TrueType в кодировке UTF-16 была добавлена в 2.3.0, а валидатор TrueTypeGX (gxvalid) начал проверять порядок идентификаторов глифов в таблице ядра. Команды Microsoft Unicode в шрифтах TrueType стали предпочтительнее, чем командные файлы Apple по умолчанию в 2.3.6. Проверка таблицы «MATH» OpenType и поддержка cmap 14 были добавлены в 2.3.6. Возможность передачи режима отсева в растеризатор Ч / Б была добавлена в 2.3.7. Экспериментальные шрифты Тип 1 и Тип 1 с ключом CID в оболочке SFNT были добавлены в 2.3.8 (таблицы TYP1 и CID передаются в драйверы шрифтов PS Type 1 и CID с ключом). Поддержка формата таблицы SFNT cmap 13 была добавлена в 2.3.10. Поддержка шрифтов TrueType без имени семейства посредством определения длины и контрольных сумм постоянных подтаблиц Type42 ('cvt', 'fpgm' и 'prepare') была добавлена в 2.4.4, а также надлежащая поддержка UVS (TrueType / OpenType формат cmap 14). Поддержка коллекций OpenType и шрифтов CFF в оболочке SFNT добавлена в 2.4.11. Поддержка таблиц CBDT, CBLC (встроенные цветные растровые изображения) была добавлена в 2.5.0. Поддержка формата цветного растрового изображения Apple sbix и таблицы SFNT версии 5 «OS / 2» была добавлена в 2.5.1. В версии 2.6 расширенная ширина и значения боковых опор в CFF (завернутых в структуру SFNT) теперь всегда берутся из таблицы 'hmtx', а имя шрифта PostScript для шрифта CFF (завернутого в структуру SFNT) теперь всегда берется из таблицы таблица name. Поддержка формата шрифтов CFF2 из OpenType 1.8 была добавлена в 2.7.1. Поддержка таблиц 'VVAR' и 'MVAR' (также включена поддержка шрифтов OpenType Variation), таблица 'Format 1' SFNT 'name', OpenType версии 1.8.1 были добавлены в 2.8. В 2.8.1 была добавлена возможность доступа к полю 'flags' оси вариации, синтезируя отсутствующий cmap Unicode для шрифтов TrueType, если имена глифов доступны.
- Растровый шрифт Windows (.FON)
- Драйвер Windows FNT / FON был добавлен в 2.0 Beta 8. Специфический API для Windows FNT был добавлен в 2.1.4-rc1. Поддержка файлов растровых шрифтов Windows в исполняемом формате PE была добавлена в 2.3.5.
- WOFF
- Поддержка формата шрифтов WOFF была добавлена в 2.5.1.
Загрузчик
Загрузчик таблицы имен TrueType поддерживает «глючные» азиатские шрифты, которые были добавлены в 2.1.1, который игнорирует пустые записи имен, недопустимые смещения указателей и некоторые другие неправильные тонкости. Кроме того, строки имен теперь загружаются по запросу, что снижает нагрузку на память для многих лиц. Поддержка управления кодами символов UCS-4 в кэше CMap была добавлена в 2.1.4-rc2. В 2.1.8 поддерживается деинсталляция лиц, удаляются все «неактивные» узлы, соответствующие заданному FTC_FaceID. В загрузчике типа 1 словари верхнего уровня были правильно пропущены в 2.3.0. Возможность использовать дробные размеры пикселей в кэше была добавлена в 2.3.5. Возможность извлекать предварительные значения глифов без загрузки их контуров была добавлена в 2.3.8. Добавочная загрузка шрифтов включена по умолчанию в 2.3.12.
Платформы
- AIX
- Автоматическая сборка в системах AIX была добавлена в 2.0.4.
- Амига
- Поддержка Amiga была добавлена в 2.0.5.
- BeOS
- Файлы, специфичные для BeOS, были добавлены в 2.0.3.
- Atari
- Поддержка построения FreeType на 16-битном Atari с использованием компилятора PureC была добавлена в 2.1.8.
- EPOC
- Поддержка EPOC была повторно добавлена в 2.0.2.
- Symbian
- Поддержка Symbian была добавлена в 2.3.6.
- Окна
- Поддержка драйвера PFR с Visual C ++ была добавлена в 2.1.2.
Лицензирование
- В версии 2.1.0 лицензия FreeType была обновлена, чтобы включить предложенный предпочтительный отказ от ответственности.
- Исходники ftvalid, используемые кодом ftlayout, были переданы на лицензию MIT «старого стиля» в 2008-01-03.
История
Работа над движком рендеринга FreeType была начата в 1995 году Дэвидом Тернером с намерением обеспечить поддержку шрифтов TrueType для операционной системы OS / 2, включая интерпретатор для обработки байт-кода TrueType. Первоначально написанный на языке программирования Pascal, он был перенесен в 1997 году Робертом Вильгельмом на C. Позже к команде присоединился Вернер Лемберг, который до сих пор поддерживает Freetype.
FreeType 1 поддерживает только формат шрифта TrueType, но включает расширение для поддержки функций макета текста OpenType.
Существенная переработка 2.0
Версия 2.0 FreeType была анонсирована еще в 1998 году, выпуск для разработки был выпущен в 1999 году, а окончательный выпуск - в 2000 году, что позволило полностью переписать его и сделать его модульным. FreeType 2 обеспечил поддержку большего количества форматов шрифтов и усовершенствовал исходный код, который, по заявлению разработчиков, был «проще и мощнее». FreeType 2 не имеет обратной совместимости с FreeType 1, но разработчики заявляют, что переход от FreeType 1 к FreeType 2 не представляет особых трудностей. Однако, поскольку обработка макета текста не была целью FreeType 2, функциональность макета текста OpenType FreeType 1 была удалена в FreeType 2. Очень развитая форма функциональности макета текста OpenType FreeType 1 используется в библиотеке макета текста Pango. Проект HarfBuzz продолжает развивать эту функциональность с полной переработкой, предлагаемой как отдельная библиотека с менее жесткой лицензией, чем лицензия Pango.
Патентные конфликты
В 1999 году Apple Incorporated проинформировала проект Freetype о том, что FreeType нарушает патенты, связанные с хинтингом шрифтов TrueType. После этого Freetype отключился по умолчанию или работал в обход технологий, связанных с патентами. Поэтому в несколько проектов с открытым исходным кодом, таких как FreeBSD или Linux, FreeType был включен с отключенной или сниженной функциональностью хинтинга шрифтов, чтобы избежать проблемы патентов на программное обеспечение, принадлежащих Apple Inc.
С мая 2010 года истек срок действия всех конфликтующих патентов на программное обеспечение, связанных с хинтингом шрифтов, что позволяет использовать хинтер шрифта FreeType TrueType с открытым исходным кодом. Многие операционные системы, которые отключили средство визуализации, теперь предоставляют пользователю возможность включить его. В Fedora freetype-freeworld был переведен из проприетарного репозитория yum в бесплатный репозиторий.
С августа 2019 года истек срок действия всех конфликтующих патентов на программное обеспечение, связанных с цветовой фильтрацией ClearType, что позволяет FreeType использовать метод цветовой фильтрации ClearType в 2.10.3.
Пожертвование двигателя CFF
В 2013 году Adobe пожертвовала движок рендеринга CFF проекту FreeType, который интегрировал его и сделал его версией 2.5 по умолчанию.
Пользователи
- Android
- FreeType используется в качестве средства визуализации шрифтов в Android.
- яблоко
- Apple использует FreeType в iOS и macOS рядом с Apple Advanced Typography.
- Джава
- В 2007 году Sun Microsystems перешла от использования проприетарного растеризатора шрифтов к использованию FreeType в пакете разработки OpenJDK Java.
- Игровая приставка
- Sony поставляет FreeType со своими консолями PlayStation 3, PlayStation 4 и PlayStation Vita.
- ReactOS
- FreeType используется как средство визуализации шрифтов ReactOS.
Другие пользователи
FreeType не только используется в основных настольных системах с бесплатным программным обеспечением, но и в качестве механизма растеризации для современных видеоигр, а Opera для Wii.
В Windows такие проекты, как gdipp и MacType, стремятся переопределить системный рендерер с помощью FreeType.
Смотрите также
- HarfBuzz, библиотека для формирования текста Unicode
- Pango, многоязычный движок отрисовки текста
- FontForge, программа для редактирования шрифтов (шрифтов)
использованная литература
внешние ссылки