FreeType

редактировать
FreeType
Логотип freetype new.svg
Разработчики) Дэвид Тернер, Роберт Вильгельм, Вернер Лемберг и участники FreeType
Первый выпуск 1996 ; 25 лет назад ( 1996)
Стабильный выпуск 2.11 / 19 июля 2021 г. ; 2 месяца назад ( 2021-07-19)
Репозиторий
Написано в C
Операционная система Кроссплатформенность
Тип Библиотека разработки программного обеспечения : растеризация шрифтов
Лицензия Стандартная общественная лицензия GNU / Лицензия FreeType
Веб-сайт www.freetype.org
Строчная e Нижний регистр Строчная буква w Строчные буквы 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 пользователя
    • 3.1 Другие пользователи
  • 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, программа для редактирования шрифтов (шрифтов)
использованная литература
внешние ссылки
Последняя правка сделана 2023-04-16 06:20:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте