Введение
Файловый формат
TrueType — это стандарт шрифтов, разработанный компанией Apple в конце 1980-х годов как конкурент шрифтам Adobe Type 1, используемым в PostScript. Он стал самым распространенным форматом шрифтов для классических операционных систем Mac OS, macOS и Microsoft Windows. Изначально основным преимуществом TrueType был высокий уровень контроля, который он предоставлял разработчикам шрифтов над тем, как отображаются их шрифты, вплоть до отдельных пикселей при различных размерах шрифта. Однако, с учетом широкого разнообразия технологий рендеринга, используемых сегодня, точный контроль на уровне пикселей больше не гарантируется в шрифтах TrueType.
История
TrueType был известен в процессе разработки сначала под кодовым названием "Bass", а затем под кодовым названием "Royal". Система была разработана и в конечном итоге выпущена как TrueType вместе с выходом Mac System 7 в мае 1991 года. Первые шрифты TrueType – четыре гарнитуры Times Roman, Helvetica, Courier и пи-шрифт "Symbol" – воспроизводили оригинальные шрифты PostScript для Apple LaserWriter. Apple также заменила некоторые из своих растровых шрифтов, использовавшихся в графическом интерфейсе предыдущих версий Macintosh System (включая Geneva, Monaco и New York), на масштабируемые шрифты TrueType. Для обеспечения совместимости со старыми системами Apple поставляла эти шрифты, расширение TrueType и версию Font/DA Mover для System 6. Для совместимости с Laserwriter II Apple разработала шрифты ITC Bookman и ITC Chancery в формате TrueType. Теперь все эти шрифты могли масштабироваться до любого размера на экране и принтере, что сделало Macintosh System 7 первой операционной системой, работающей без растровых шрифтов. Ранние системы TrueType, будучи все еще частью графической подсистемы Apple QuickDraw, не отображали шрифты Type 1 на экране так, как это делается сегодня. В то время многие пользователи уже вложили значительные средства в проприетарные шрифты Adobe Type 1. В рамках стратегии Apple по открытию формата шрифтов, в противовес стремлению Adobe сохранить его закрытым для всех, кроме лицензиатов Adobe, Apple лицензировала TrueType компании Microsoft. Когда было объявлено о TrueType и лицензии для Microsoft, Джон Уорнок, соучредитель и тогдашний генеральный директор Adobe, произнес эмоциональную речь, в которой заявил, что Apple и Microsoft продают "змеиное масло", а затем объявил, что формат Type 1 открыт для использования всем желающим. В свою очередь, в обмен на TrueType, Apple получила лицензию на TrueImage – язык описания страниц, совместимый с PostScript, принадлежащий Microsoft, который Apple могла использовать для лазерной печати. Однако это так и не было включено ни в один из продуктов Apple, когда позже было заключено соглашение между Apple и Adobe, по которому Adobe обязалась добавить интерпретатор TrueType в свои платы для принтеров PostScript. Apple продлила свои соглашения с Adobe об использовании PostScript в своих принтерах, что привело к снижению роялти, выплачиваемых Adobe, которая начала лицензировать контроллеры принтеров, способных напрямую конкурировать с принтерами Apple LaserWriter. В ответ на информацию о разработке TrueType, Adobe создала программное обеспечение Adobe Type Manager для масштабирования шрифтов Type 1 с использованием сглаживания (anti-aliasing) для вывода на экран. Хотя ATM изначально стоил денег, а не поставлялся бесплатно с операционной системой, он стал де-факто стандартом для всех, кто занимался версткой. Сглаживание, в сочетании с возможностью приложений Adobe увеличивать масштаб для чтения мелкого текста, а также с открытым форматом шрифтов PostScript Type 1, дало толчок взрывному росту в дизайне шрифтов и в верстке газет и журналов. Apple расширила TrueType с выпуском TrueType GX в 1994 году, добавив дополнительные таблицы в sfnt, которые стали частью QuickDraw GX. Это обеспечило мощные расширения в двух основных областях. Во-первых, это были оси шрифтов (сейчас известные как вариации), например, позволяющие плавно изменять шрифты от светлого к жирному или от узкого к широкому – конкуренция технологии "Multiple Master" от Adobe. Во-вторых, это был Line Layout Manager, позволяющий кодировать определенные последовательности символов для переключения на различные варианты написания в определенных обстоятельствах, например, для предоставления лигатур для "fi", "ffi", "ct" и т.д., сохраняя при этом хранилище символов, необходимое для проверки орфографии и поиска текста. Однако отсутствие удобных инструментов для создания шрифтов TrueType GX привело к тому, что шрифтов GX было немного. Большая часть технологий TrueType GX, включая вариации и замены, продолжает существовать в виде AAT (Apple Advanced Typography) в macOS. Мало разработчиков шрифтов за пределами Apple пытаются создавать шрифты AAT; вместо этого OpenType стал доминирующим форматом sfnt, а вся технология вариаций шрифтов сегодня является фактическим стандартом в OpenType Variations.
Принятие Microsoft
Чтобы обеспечить широкое распространение, Apple предоставила Microsoft лицензию на TrueType бесплатно. Microsoft включила TrueType в операционную среду Windows 3.1. В сотрудничестве со своими подрядчиками, Monotype Imaging, Microsoft приложила значительные усилия для создания набора высококачественных шрифтов TrueType, совместимых с основными шрифтами, поставляемыми с оборудованием PostScript того времени. В этот набор вошли шрифты, которые остаются стандартными для Windows и по сей день: Times New Roman (совместимый с Times Roman), Arial (совместимый с Helvetica) и Courier New (совместимый с Courier). В данном контексте "совместимость" подразумевает два аспекта. С эстетической точки зрения, это означает визуальное сходство шрифтов. С функциональной точки зрения – одинаковую ширину символов. Это позволяет переводить документы, набранные одним шрифтом, в другой без изменения разметки. Инженеры Microsoft и Monotype использовали технологию намеков TrueType, чтобы избежать проблемы нечитаемости при низких разрешениях, которая ранее вынуждала использовать растровые шрифты для отображения на экране. Последующие технологические усовершенствования привели к появлению сначала сглаживания (антиалиасинга), которое сглаживает края шрифтов ценой незначительного размытия, а затем и субпиксельного рендеринга (реализация Microsoft известна как ClearType), использующего структуру пикселей ЖК-дисплеев для повышения воспринимаемого разрешения текста. Microsoft активно продвигала ClearType, и методы субпиксельного рендеринга текста теперь широко применяются на всех платформах. Microsoft также разработала технологию "умных шрифтов" под названием TrueType Open в 1994 году, которая позднее, в 1996 году, была переименована в OpenType после объединения поддержки контуров глифов Adobe Type 1. OpenType теперь включает в себя всю функциональность Apple TrueType и Apple TrueType GX.
Macintosh и Microsoft Windows
TrueType долгое время был самым распространенным форматом шрифтов для классических Mac OS, Mac OS X и Microsoft Windows, хотя Mac OS X и Microsoft Windows также поддерживают формат Adobe Type 1 и расширение OpenType для TrueType (начиная с Mac OS X 10.0 и Windows 2000). В то время как некоторые шрифты, поставляемые с новыми операционными системами, теперь представлены в формате OpenType, большинство бесплатных или недорогих шрифтов сторонних разработчиков используют обычный TrueType. Увеличение разрешения и новые методы экранной отрисовки снизили необходимость в сложной настройке TrueType (hinting). Подход Apple к отрисовке в macOS игнорирует почти все настройки шрифта TrueType, а технология ClearType от Microsoft игнорирует многие из них и, по утверждению Microsoft, лучше всего работает со шрифтами, имеющими минимальную настройку.
Linux и другие платформы
Проект FreeType, созданный Дэвидом Тернером, представляет собой независимую реализацию стандарта TrueType (а также других стандартов шрифтов в FreeType 2). FreeType включен во многие дистрибутивы Linux. До мая 2010 года в FreeType 1 существовали потенциальные нарушения патентных прав, поскольку некоторые части виртуальной машины подсказок TrueType были запатентованы компанией Apple, о чем не было указано в стандартах TrueType. (Владельцы патентов, участвующие в разработке стандартов, публикуемых крупными организациями по стандартизации, такими как ISO, обязаны раскрывать объем своих патентных прав, но TrueType не являлся таким стандартом.) FreeType 2 включал в себя опциональный автоматический механизм для создания подсказок, чтобы избежать использования запатентованной технологии, но срок действия этих патентов истек, поэтому в FreeType 2.4 эти функции теперь включены по умолчанию.
Контуры
Контуры символов (или глифов) в шрифтах TrueType состоят из отрезков прямых линий и квадратичных кривых Безье. Эти кривые математически проще и быстрее обрабатываются, чем кубические кривые Безье, которые используются как в мире графического дизайна, ориентированном на PostScript, так и в шрифтах Type 1. Однако для описания большинства форм с помощью квадратичных кривых требуется больше точек, чем с помощью кубических. Эта разница также означает, что невозможно выполнить без потерь преобразование из формата Type 1 в формат TrueType, хотя на практике часто удается выполнить без потерь преобразование из TrueType в формат Type 1.
Язык намеков
Системы TrueType включают виртуальную машину, которая выполняет программы внутри шрифта, обрабатывая "подсказки" глифов, в TrueType называемые инструкциями. Они искажают опорные точки, определяющие контур, с целью добиться того, чтобы растризатор создавал меньше нежелательных артефактов на глифе. Набор инструкций каждого глифа учитывает размер (в пикселях), при котором глиф должен быть отображен, а также другие, менее значимые факторы среды отображения. Хотя язык инструкций TrueType не способен принимать входные данные и выдавать результаты в том смысле, в котором это понимается в программировании, он предоставляет другие необходимые компоненты языков программирования: условные переходы (операторы IF), циклы с произвольным количеством повторений (операторы типа FOR и WHILE), переменные (хотя это всего лишь пронумерованные ячейки в области памяти, зарезервированной шрифтом) и инкапсуляцию кода в функции. Специальные инструкции, называемые дельта-инструкциями, обеспечивают управление на самом низком уровне, перемещая опорную точку всего на один размер пикселя. Характерной чертой эффективного программирования глифов TrueType является стремление выполнить как можно больше операций, используя переменные, определенные лишь однажды для всего шрифта (например, ширину штриха, высоту заглавных букв, высоту строчных букв). Это означает, что следует избегать дельта-инструкций, насколько это возможно. Это позволяет разработчику шрифта вносить существенные изменения (например, точку, в которой основные штрихи всего шрифта переходят с 1 до 2 пикселей в ширину) на большей части этапа разработки. Создание хорошо проработанного шрифта TrueType по-прежнему требует значительных усилий, несмотря на возросшую удобность программ для добавления инструкций к шрифтам. Поэтому многие шрифты TrueType имеют лишь базовые инструкции или инструкции, автоматически применяемые редактором шрифтов, что приводит к результатам разного качества.
Защита от встраивания
Формат TrueType предусматривает самый простой тип управления цифровыми правами – поле флага, которое можно встроить и которое указывает, разрешает ли автор встраивать файл шрифта в такие объекты, как PDF-файлы и веб-сайты. Любой, у кого есть доступ к файлу шрифта, может напрямую изменить это поле, и существуют простые инструменты, облегчающие это изменение (очевидно, что изменение этого поля не меняет лицензию шрифта и не предоставляет дополнительных юридических прав). Эти инструменты стали предметом споров из-за возможных проблем с авторским правом.
Эмоджи
Apple внедрила проприетарное расширение для поддержки цветных TTF-файлов в своем шрифте эмодзи Apple Color Emoji.
Основные
Базовый шрифт состоит из нескольких таблиц, указанных в его заголовке. Имя таблицы может содержать до 4 символов. Расширение ttf указывает на обычный шрифт TrueType или шрифт OpenType с TrueType-контурами. Редактор символов, определяемый конечным пользователем Windows (EUDCEDIT.EXE) создает шрифт TrueType с именем EUDC.TTE. Шрифт OpenType с PostScript-контурами должен иметь расширение otf. В принципе, шрифт OpenType с TrueType-контурами может иметь расширение otf, но на практике это встречается редко. В классической Mac OS и macOS OpenType является одним из нескольких форматов, известных как шрифты Data Fork, поскольку им не хватает классического Mac resource fork.
Коллекция
TrueType Collection (TTC) — это расширение формата TrueType, позволяющее объединять несколько шрифтов в один файл, что значительно экономит место для набора шрифтов, имеющих много общих глифов. Они впервые появились в китайских, японских и корейских версиях Windows и поддерживались во всех регионах, начиная с Windows 2000. Классическая Mac OS включила поддержку TTC, начиная с версии Mac OS 8.5. Файл TrueType Collection начинается с таблицы ttcf, которая обеспечивает доступ к шрифтам внутри коллекции, указывая на отдельные заголовки для каждого включенного шрифта. Шрифты в коллекции используют общую таблицу контуров глифов, однако каждый шрифт может ссылаться на подмножества этих контуров по-своему, посредством своих таблиц cmap, name и loca. Файлы коллекций имеют расширение ttc. В классической Mac OS и macOS, TTC имеет файловый тип ttcf.
Чемодан
Формат "чемодана" для TrueType используется в классических Mac OS и macOS. Он добавляет дополнительную информацию, специфичную для Apple. Как и TTC, он может содержать несколько шрифтов в одном файле. Но в отличие от TTC, эти шрифты не обязательно должны принадлежать одному семейству. "Чемоданы" бывают в формате ресурсной вилки и форка данных. Версия с ресурсной вилкой была оригинальным форматом "чемодана". "Чемоданы", содержащие данные только в форке данных (в котором содержимое ресурсной вилки помещено в форк данных), впервые были поддержаны в macOS. "Чемодан", упакованный только в формат форка данных, имеет расширение dfont.
Почтовый текст
В языке PostScript контуры TrueType обрабатываются с использованием обертки PostScript в формате Type 42 для шрифтов, индексированных по именам, или Type 11 для шрифтов, индексированных по CID.