Главная
Новости
Строительство
Ремонт
Каркасный дом
Несущие конструкции
Металлические конструкции
Прочность дорог
Дорожные материалы
Стальные конструкции
Грунтовые основания
Опорные сооружения




02.10.2022


02.10.2022


30.09.2022


30.09.2022


30.09.2022


29.09.2022


29.09.2022





Яндекс.Метрика

TrueType

26.07.2022

TrueType («трутайп») — формат компьютерных шрифтов, разработанный фирмой Apple в конце 1980-х годов.

Шрифты в данном формате используются во многих современных операционных системах. Файлы с такими шрифтами имеют расширение имени «ttf». В зависимости от версии формата максимальное количество хранимых символов может ограничиваться значениями 28 (256), 216 (65 536) или 232 (4 294 967 296).

Свободное ПО

В ОС на основе свободного ПО для работы с данными шрифтами используется свободная библиотека FreeType, поддерживающая этот и другие форматы шрифтов.

Apple принадлежат три патента, имеющие отношение к некоторым способам обработки контуров шрифтов TrueType для вывода при малом размере. Так как эти патенты могут препятствовать свободному использованию таких способов, FreeType по умолчанию распространяется с отключённой их поддержкой, и обрабатывает контуры по-другому.

Принцип хранения информации о символе

TrueType: формат создан для хранения информации o контуре символа (векторное изображение). В отличие от растрового символа, векторный легко масштабируется. Но и у векторного способа хранения есть свои недостатки. Для того, чтобы однозначно понимать (интерпретировать) записанную информацию, пользуются следующими правилами:

рисунок 1 Построение прямой по двум точкам
  • информация о линии контура хранится в виде точек;
  • прямая линия контура строится по двум точкам: начальной и конечной (рисунок 1);
  • элемент дуги строится методом Безье: начало и конец кривой описываются точками, которые лежат на самой кривой; остальные точки, не принадлежащие кривой, служат для построения дуг (рисунок 2).

Для построения кривой, которая идёт из точки P0 в точку P2 (рисунок 2), требуется три точки: P0, P1 и P2. P1 не лежит на кривой и служит для определения её кривизны. Для расчёта каждой точки кривой воспользуемся формулой 1:

P ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 , t ∈ [ 0 , 1 ] {displaystyle mathbf {P} (t)=(1-t)^{2}mathbf {P} _{0}+2t(1-t)mathbf {P} _{1}+t^{2}mathbf {P} _{2},quad tin [0,1]} (формула 1) рисунок 3 Построение более сложной кривой, состоящей из двух кривых Безье

На рисунке 3 приведён пример сложной кривой, которая состоит из двух простых.

На рисунке 4 та же самая кривая, но точка P2 отсутствует. Её координаты восстанавливают. Например в данном случае точка P2 лежит посередине отрезка P1P3. Подробнее об этом можно почитать в описании построения кривой Безье, квадратичный метод.

Итак, для построения контура используется два вида точек. Один тип — это точка, лежащая на контуре, является началом одной кривой или отрезка и концом другой. Другой вид точек — это точки, не лежащие на контуре и являющиеся контрольными точками для построения кривой. Между двумя кривыми может отсутствовать координатная точка и её придётся восстанавливать.

Следующее правило:

  • первая и последняя точка контура замыкаются. То есть контур не может быть незамкнутым. Обязательно строится отрезок или кривая из последней точки в первую.

На рисунке 5 показан приём построения одноконтурного символа «С». Контур состоит как из отрезков, так и из кривых. Или, говоря дословно, для построения этого символа использовались точки, лежащие на контуре (on-curve), и контрольные точки (не лежащие на кривой, off-curve). 25-я точка смыкается с 0-й. 26-я и 27-я точки являются контрольными (off-curve) и служат для построения кривой 25-0.

рисунок 6 Построение трёхконтурного символа «B»

На рисунке 6 показан символ, состоящий из 3 контуров. Для того, чтобы различать контуры, существуют следующие правила:

  • для каждого символа хранится информация о том, из скольких контуров его строить, а также указывается номер последней точки для каждого контура; как видно из примера 5, контур не обязан завершаться точкой on-curve;
  • для того, чтобы строить контур, каждая точка имеет свой индекс, и линии (кривые) рисуются в порядке следования индексов; первый индекс 0; информация о количестве точек ограничена 16-битным числом, то есть теоретически символ может строиться из 65536 точек (точек может быть и больше).

Для того, чтобы узнать количество точек, из которого строится символ, нужно посмотреть информацию о последнем индексе последнего контура. Также необходимо просмотреть флаги всех точек. Допускается повтор точек с одними и теми же флагами несколько раз. Количество точек — номер последнего индекса + 1, так как нумерация начинается с 0, плюс сумма всех повторяющихся точек.

Заливка символа. Из рисунков 5, 6 видно, что только контуров для построения символов недостаточно. Пространство внутри контура требуется закрасить. Как это сделать, если например, символ «B» (рисунок 6) имеет три контура и требуется закрасить только то, что находится между 1-м контуром и 2-м, а также 1-м и 3-м, а то, что внутри 2-го и 3-го — не закрашивать? Для этого ввели ещё правила:

  • внешний контур всегда закрашивается внутри независимо от обхода.
  • внутренний контур закрашивается в зависимости от обхода внешнего контура: если порядок обхода точек совпадает, то внутренняя область закрашивается, если не совпадает, то не закрашивается (рисунок 7).
  • двумя внешними контурами может быть сформирован внутренний: если обход точек двух контуров совпадает, то эта область закрашивается, если не совпадает, то не закрашивается (рисунок 7).

Точки p1 и p4 лежат внутри внешних (наружных) контуров и эта область всегда закрашивается, независимо от обхода точек.

Точка p2 попадает в область между двумя внешними контурами с разными проходами, и эта область не закрашивается.

Точки p3 и p5 попадают в области внутренних контуров и закрашивание происходит в зависимости от обхода точек. Точка P3 получается внутри контура с обходом точек против часовой стрелки, в то время как внешний контур имеет обход в другую сторону, и из-за этого область 3 не закрашивается. Точка p5 попадает в область с обходом по часовой стрелке, такое же направление обхода, что и у внешнего контура, поэтому область закрашивается.

С точки зрения построения шрифта область точки p5 избыточна. Данный внутренний объём будет закрашен в любом случае.

Составной символ

Для сокращения числа хранения похожих символов придумали комбинировать два символа в один. Например буква Ё — это буква Е с двумя точками над ней. Точки и Е могут храниться отдельно, а при построении символа «Ё» берётся информация из двух источников.

ЁÄÜÃÑÕÝÚÐØ

Рисунок 8. Пример символов, которые можно сделать комбинированными

Хинтинг

Несмотря на то, что шрифты в формате TrueType описаны в векторном виде и, казалось бы, должны легко масштабироваться, при отображении символов в низком разрешении могут возникать проблемы. Например, если требуется вписать векторный символ в квадрат размером 16х16 пикселей, значительная часть символа может лишь частично попасть на один пиксель. Возникает неоднозначность: следует ли закрашивать данный пиксель или оставить его незакрашенным. Для устранения данной неоднозначности в шрифты включают команды-подсказки растеризатору, которые и называют инструкциями хинтинга (хинтования). Формат TrueType позволяет хранить шрифты как с инструкциями хинтинга, так и без них. Но без этих инструкций шрифты считаются некачественными (недобросовестно исполненными), и их стараются не использовать.

Единица измерения шрифта

Единица измерения величины шрифта — point (англо-американский пункт), которая обычно переводится как пункт, и полиграфическая единица измерения величины шрифта (французский пункт), на самом деле не совпадают. Компьютерный пункт равен 0,353 мм, а полиграфический пункт — 0,376 мм. Разница составляет около 7 %. Поэтому при указании кегля обязательно нужно уточнить, какой пункт имеет в виду заказчик, а какой заложен в верстке.

Форматы файлов

Basic

Основной шрифт состоит из нескольких таблиц, указанных в заголовке. Имя таблицы может иметь до четырёх букв.

Файл TrueType Collection начинается с таблицы "ttcf", которая обеспечивает доступ к шрифтам в коллекции, указывая на отдельные заголовки для каждого включенного шрифта. Все шрифты коллекции разделяют одну и ту же таблицу контуров глифов, хотя каждый шрифт может ссылаться на свои подмножества очертаний, используя свои таблицы «cmap», «name» и «loca».

Расширение ".ttf" указывает на обычный TrueType-шрифт или OpenType-шрифт с TrueType-очерчиванием, в то время как расширение ".ttc" зарезервированo для TTC-шрифтов. OpenType-шрифт с очерчиванием PostScript должен иметь расширение .otf. В принципе, OpenType-шрифт с TrueType-очерчиванием может иметь расширение .otf, но это редко делается на практике.

Suitcase

Формат suitcase для TrueType используется в классической MacOS. Он добавляет дополнительную Apple-специфическую информацию.

PostScript

В языке PostScript TrueType-очерчивание фигурирует как PostScript-тип 42 для шрифтов, где глифы имеют имена, или как тип 11 для CID-шрифтов, где глифы адресуются индексом.


Имя:*
E-Mail:
Комментарий: