Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Метрика шрифта TeX ( TFM ) - это формат файла шрифта , используемый системой набора текста TeX . Это метрический формат шрифта, а не формат шрифта контура, такой как TrueType , поскольку он предоставляет только информацию, необходимую для набора шрифта, такую ​​как ширина, высота и глубина каждого символа. Фактические глифы хранятся в другом месте. Это не уникально для TeX; Файлы Adobe AFM и файлы PFM Windows ( NTF в современном драйвере Windows PostScript ) используют ту же технику.

Файлы TFM содержат всю информацию, необходимую TeX для создания своего устройства-независимого ( DVI ) вывода. Фактические глифы затем вставляются конечным драйвером вывода DVI или средством предварительного просмотра, используя, например, шрифты TrueType или шрифты в формате PK растрового изображения , полученные из источника METAFONT . Формат разработан так, чтобы быть чрезвычайно компактным: в исходном дистрибутиве Computer Modern размер TFM-файла каждого шрифта меньше 2 КБ. [1]

Спецификация [ править ]

Каноническая спецификация формата TFM встроена в исходный код программы TFtoPL . [2]

Файл TFM разбит на серию четырехбайтовых слов , которые могут содержать поля данных различной длины. Любые поля данных длиной более одного байта хранятся в порядке прямого байта . (Будет создан один и тот же файл, независимо от архитектуры компьютера, на котором он создается.)


Заголовок файла из шести слов (24 байта) содержит двенадцать беззнаковых 16-битных целых чисел, которые описывают длину файла, диапазон кодов символов, содержащихся в шрифте, и размер каждой из таблиц. Один файл TFM описывает от 0 до 256 символов включительно.


Тело файла TFM состоит из серии из десяти таблиц, каждая, за исключением первой, представлена ​​в виде массива полей фиксированной длины. 32-битное число с фиксированной точкой со знаком и 12 битами слева от десятичной точки, называемое a fix_word, широко используется. Первая таблица headerсодержит контрольную сумму, предназначенную для предотвращения печати документа, скомпилированного в DVI с одним набором шрифтов, с другим набором, а также описания ASCII схемы кодирования символов (например, ASCIIили TeX text) и семейства шрифтов. Он также содержит размер шрифта; все следующие fix_wordзначения интерпретируются как коэффициенты умножения для этого.

Следующая таблица char_infoсостоит из одного слова на символ и содержит индексы в таблицах ширины, высоты, глубины и курсивной коррекции. Это устройство для экономии места, потому что, например, значения ширины часто дублируются. Поскольку значения высоты и глубины дублируются чаще, чтобы вместить все эти значения в одно слово, индексы ограничены четырьмя битами. Из-за этого существует ограничение в шестнадцать различных высот символов и шестнадцать различных значений глубины символов в любом заданном файле TFM. Кроме того, существует не более шестидесяти четырех различных курсивных исправлений. Также есть еще один индекс, который может указывать на lig_kernтаблицу или на информацию о расширяемых символах, в зависимости от двухбитовогоtagценить. Расширяемые символы используют серию повторяющихся символов для создания одного большого символа произвольного размера, обычно это большие разделители, такие как круглые или квадратные скобки.

Там затем следует четыре стола width, height, depthи italic, которые содержат значение (в fix_wordформате) называют индексами в char_info.

Лигатуры и кернинг представлены с помощью простого языка программирования, состоящего из четырехбайтовых операций фиксированной длины в lig_kernтаблице; он использует значения кернинга (указанные как fix_words) в следующей за ним kernтаблице.

Расширяемые символы указываются в extenтаблице с использованием серии четырехбайтовых слов, определяющих верхнюю, среднюю, нижнюю и повторяющиеся части расширяемого символа. Например, символ слева под будут получены путем установки ( top, mid, bot, rep) для кодов символов для ( / , < , \ , | ). Первые три кода символа могут быть установлены на ноль. Например, если midв предыдущем примере было установлено значение 0, результат изменится с скобки, нарисованной слева, на скобку, нарисованную справа.

/ /| || |<|| || |\ \

Конечно, шрифт будет использовать специально разработанные символы для этого вместо повторного использования существующих, но принцип тот же.

В итоговой таблице paramсодержится ряд специально определенных fix_wordзначений, включая высоту шрифта по оси x и величину наклона курсивом (чтобы определить, насколько далеко нужно сместить акценты). Некоторые схемы кодирования, такие как TeX math symbolsи, TeX math extensionопределяют дополнительные параметры, которые появляются после них.

Списки собственности [ править ]

Существует удобочитаемый эквивалент формата TFM, называемый PL , для списка свойств. Существует точное соответствие между файлом TFM и файл PL: один может быть свободно конвертированы в другую и обратно без потери информации с использованием tftoplи pltotfпрограмм. Формат PL, оптимизированный для удобства использования вместо использования пространства, не использует те же ссылки, что и формат TFM. Например, многие символы в шрифте могут использовать одинаковую ширину символа, которая будет представлена ​​только один раз в формате TFM, и на это значение будет ссылаться каждый символ, поскольку индекс будет значительно меньше, чем числовое значение полной точности. . Однако в формате PL полное значение записывается каждый раз, когда оно появляется.

Например, это код для заглавной буквы Y в Computer Modern Roman , десять пунктов:

(ХАРАКТЕР CY (CHARWD 0,750002) (CHARHT R 0.683332) (CHARIC R 0,025) (КОММЕНТАРИЙ (КРН Ц е Р -0,083334) (KRN C o R -0.083334) (КРН Ц р Р -0.083334) (КРН Ц и Р -0,083334) (КРН АВТО -0.083334) (КРН ТУ Р -0.083334) ) )

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

Заметки [ править ]

  1. ^ "CTAN: / tex-archive / fonts / cm / tfm /" . Комплексная сеть архивов TeX . 1996-07-08 . Проверено 30 июля 2006 .
  2. ^ Кнут, Дональд Э. (февраль 2008 г.). "TFtoPL" ( исходный WEB- код; извлеките полную документацию с помощью WEAVE ) . Версия 3.2 . Проверено 31 октября 2010 . Цитировать журнал требует |journal=( помощь )

Ссылки [ править ]

  • Фукс, Дэвид (февраль 1981). «Файлы TeX Font Metric» (PDF) . ТУГбоат . 2 (1): 12–16 . Проверено 20 августа 2009 .

Внешние ссылки [ править ]

  • Описание формата файла TFM