~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ CA92FBF534EAC7B8CEA40B712CB15A13__1715107140 ✰
Заголовок документа оригинал.:
✰ Metafont - Wikipedia ✰
Заголовок документа перевод.:
✰ Метафонт — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Metafont ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ca/13/ca92fbf534eac7b8cea40b712cb15a13.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ca/13/ca92fbf534eac7b8cea40b712cb15a13__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 23:02:15 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 7 May 2024, at 21:39 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Метафонт — Википедия Jump to content

Метафонт

Из Википедии, бесплатной энциклопедии
Метафонт
Разработчики) Дональд Кнут
Стабильная версия
2.71828182 / январь 2021 г .; 3 года назад ( 2021-01 )
Операционная система Кросс-платформенный
Тип Компьютерный язык
Лицензия Разрешительный

Метафонт — это язык описания, используемый для определения растровых шрифтов . Это также имя интерпретатора , который выполняет код Metafont, генерируя растровые шрифты, которые можно встроить, например, в PostScript . Metafont был разработан Дональдом Кнутом как дополнение к его TeX системе набора текста .

Одной из особенностей Metafont является то, что точки, определяющие форму глифов например, вершина основы или пересечение основы и перекладины — определяются с помощью геометрических уравнений; намерение, чтобы три основы буквы «м» были расположены на одинаковом расстоянии друг от друга по горизонтали, можно выразить как если точки 1, 2 и 3 находятся на нижних концах трех стеблей, тогда как намерение, чтобы все они заканчивались в одном и том же вертикальном положении, было бы .

Метафонт — это язык макросов , в котором такие операции, как «нарисовать верхнюю часть засечки в нижнем регистре в точке 4», могут отображаться как одна макрокоманда (с точкой в ​​качестве аргумента) в программе для буквы. Для описания фигур в Metafont имеется богатый набор операций построения траекторий , которые в основном избавляют пользователя от необходимости рассчитывать контрольные точки.

Многие семейства шрифтов Metafont настроены так, что основной исходный файл шрифта определяет только небольшое количество параметров дизайна ( высота x , ширина em, наклон, ширина вертикального штриха и т. д.), а затем вызывается отдельный исходный файл common. для целого ряда шрифтов для фактического рисования отдельных глифов; это метааспект системы.

Режимы работы [ править ]

Metafont чаще всего запускается как помощник для драйверов устройств вывода (принтер, экран); в этих случаях его работа состоит в том, чтобы генерировать растровые изображения для шрифта для определенной комбинации устройства вывода (называемого режимом в Metafont) и разрешения (видимого в имени выходного файла, см. ниже). Эти растровые изображения обычно сохраняются для последующего повторного использования, так что Metafont не нужно запускать каждый раз, когда отображается документ, но, с другой стороны, дистрибутивы TeX с компонентом Metafont обычно не включают какие-либо заранее созданные растровые шрифты, поскольку они были бы скорее велики по сравнению с источниками, из которых они могли быть созданы. Поскольку шрифты Metafont традиционно были шрифтами TeX по умолчанию, из которых другие форматы шрифтов были исключениями, неполная установка шрифта, отличного от Metafont, иногда может привести к вызову Metafont и выдаче сбивающего с толку сообщения об ошибке « somefont .mf not Found».

Не менее важно, хотя и не так часто, использовать Metafont для создания файла метрики шрифта (TFM); Файл TFM создается только в том случае, если переменная создания шрифтов положительна. Традиционно дистрибутивы TeX часто поставляются со всеми заранее созданными файлами TFM (поскольку они довольно малы), но тот, кто устанавливает шрифт Metafont из исходных кодов, должен будет сгенерировать файл TFM, прежде чем TeX сможет его использовать.

Третий способ работы с Metafont — режим проверки : если переменная проверки положительна, то файл растрового шрифта также содержит дополнительную информацию, предоставляемую через specialкоманды, в частности позиции и названия точек, которые дизайнер шрифтов считал важными для дизайна. Если использовать отдельный gftodviутилита для генерации увеличенных изображений глифов шрифта, эта информация из спец. включена; Позиции точек не ограничиваются разрешением пикселей.

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

Metafont может отображать любой графический вывод, а не только глифы. Однако MetaPost и Asymptote для математических иллюстраций предпочтительны . Metafont чаще всего вызывается без прямого запроса пользователя. Файлы DVI могут содержать только ссылки на гарнитуры, а не наборы растровых или векторных глифов, которые допускают другие форматы, такие как PostScript. Следовательно, к глифам в шрифтах необходимо обращаться каждый раз, когда делается запрос на просмотр, печать или преобразование файла DVI.

Выходные файлы [ править ]

Metafont выводит несколько типов файлов: для файла с именем NAME.mf он может выводить:

  • NAME.NNNNgf – Файл с растровым выводом с разрешением NNNN (по умолчанию 2602).
  • NAME.tfm — файл с информацией о метрике шрифта TeX , которая необходима TeX. Обычно метафонту нужно указать, чтобы он сгенерировал этот файл.
  • NAME.log – вывод файла журнала обработки.

После запуска Metafont обычно используется программа gftopk для преобразования файлов NNNNgf в формат pk (упакованный) (.NNNNpk). Формат pk был в первую очередь введен для уменьшения размера файла (примерно до половины), но ожидалось, что он также ускорит обработку, поскольку потребуется вводить/выводить меньше данных . Форматы GF и PK используют кодирование растровых изображений по длинам серий , но выполняют разные двоичные кодировки длин серий. Формат PK также выполняет некоторую предварительную обработку растровых изображений (ограничивающую рамку, исключение повторяющихся строк) и кодирует все строки символа как одну длинную битовую последовательность. [1]

В стандарте структуры каталогов TeX имена файлов ограничены 8+3 символами, поэтому файлы GF и PK будут иметь только расширения. .gf и .pk. Файлы для разных разрешений хранятся отдельно, помещаясь в отдельные каталоги с именами dpiНННН, например dpi300/cmr10.pk.

Язык [ править ]

Язык Метафонт — это интерпретируемый язык для программ, которые по своей сути являются скорее декларативными , чем императивными . [2]

Переменные и уравнения [ править ]

Переменные в Metafont могут быть восьми разных типов:

  • Числовые: фиксированной точкой числа со знаком с и эпсилоном . , ограниченное значением менее 4096 ( Q12.16 ). Это значение по умолчанию для переменных, не объявленных как относящиеся к другому типу.
  • Пара: пара чисел, используемая в основном для представления точек на плоскости.
  • Путь: как в PostScript / PDF / SVG , параметрическая кривая на плоскости, координатные функции которой представляют собой кусочные кубические полиномы. Как и в других системах, сегменты пути кодируются как кривые Безье с точки зрения узлов и контрольных точек.
  • Преобразование: аффинное преобразование плоскости, эквивалентное «матрице (преобразования)» в PostScript/PDF.
  • Перо: выпуклый многоугольник, представляющий форму «пера», используемого для рисования.
  • Изображение: растровое изображение с целочисленным значением со знаком для каждого пикселя.
  • логическое значение
  • Строка (из 8-битных символов)

Metapost добавляет цвет (тройку цифр) в качестве девятого типа и имеет совершенно другую (не растровую) модель для изображений; последнее является основным пунктом расхождения между двумя программами. Макросы Metafont vardef также живут в том же пространстве имен, что и переменные, и в некотором смысле могут рассматриваться как девятый тип переменных, хотя макросы не существуют как значения первого класса в Metafont.

Необычно то, что имена переменных представляют собой не простые лексемы, а последовательности символьных лексем и числовых индексов; имя переменной x2r Таким образом, это не один буквенно-цифровой токен, а последовательность трех токенов. x (символический), 2 (числовой) и r(символично). Типы записей и массивов можно моделировать с помощью коллекций переменных, которые имеют общий префикс имени - идиома, поддерживаемая системой объявления типов, предоставляющая всем переменным, имена которых различаются только числовыми индексами, одного и того же типа (как и ожидалось для массивов), сохраняя при этом переменные целыми. name отличаются некоторым символическим токеном (как и ожидалось для записей).

Отличительной особенностью Метафонта является использование уравнений для определения переменных. Числовая переменная (или компонент пары или переменной преобразования) может находиться в трех состояниях: известное (установлено), неизвестное независимое (не задано) и неизвестное зависимое (не задано, но задается линейным выражением одного или нескольких независимых переменных). . Когда Metafont выполняет оператор уравнения, он превращает одну из задействованных независимых зависимостей в зависимую и исключает ее из выражений для всех остальных зависимых; когда в выражении для зависимой переменной не остается независимых переменных, эта переменная становится известной. Таким образом, решение линейных систем уравнений является встроенной функцией языка Metafont, и рекомендуемый метод присвоения большинства переменных (особенно тех, значения которых имеют геометрическое значение) состоит в формулировании уравнений, определяющих их значения. В системах уравнений часто числовые (скалярные) уравнения смешиваются с парными (векторными) уравнениями.

Исключением из вышесказанного является класс внутренних количественных переменных. Они имеют имена, состоящие всего из одного символического токена, всегда числовые и всегда известны. Они имеют более прямое внутреннее представление, чем обычные переменные, что позволяет примитивным операциям в Metafont (или его расширениях) использовать их неявно.

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

В Metafont есть числовые и строковые постоянные токены с общепринятым синтаксисом; строки разделяются "кавычки, числовые константы могут иметь десятичные дроби, но не экспонентную часть . Все остальные токены классифицируются как символические и могут быть переопределены произвольно; нет никаких ограничений на то, что токены с определенным значением должны иметь имена, состоящие из определенных символов. Во время выполнения могут дополнительно существовать капсульные токены, которые по сути являются токенами с постоянным значением произвольного типа; в исходном коде они отображаются как символические токены.

За исключением случаев, когда символы участвуют в числовых или строковых константах, размер токена, содержащего определенный символ, зависит от того, к какому классу принадлежит этот символ; в отличие от TeX , Metafont имеет фиксированные классы символов. Персонажи ,, ;, (, и )являются «одиночками» и образуют только односимвольные токены. Для классов персонажей <=>:|, ‘’ (одинарные кавычки), +-, /*\, !?, #&@$, ^~, [, ], {}, и ., а также класс подчеркивания вместе с прописными и строчными буквами A–Z, токен состоит из самой длинной последовательной последовательности символов из одного и того же класса. Пробельные символы не вносят токенов. % запускает комментарий, продолжающийся до конца строки.

Примечательным применением этих правил является то, что # часто появляется как часть имен переменных в коде Metafont, например em# и pt#.

Разделители (например, круглые скобки) не имеют встроенного значения, вместо этого есть команда, которая превращает два символических токена в пару совпадающих разделителей, но обычно программы Metafont используют только обычные круглые скобки. Помимо переопределения приоритетов в выражениях, вокруг определенных типов макроаргументов также требуются разделители.

Графика [ править ]

Кривые в Metafont определяются как кубические сплайны , а не квадратичные, для большей универсальности за счет более сложной арифметики. [3]

В отличие от более распространенных форматов контурных шрифтов (таких как TrueType или PostScript Type 1 ), шрифт Metafont в основном состоит из штрихов с «перьями» конечной ширины и заполненных областей. Таким образом, вместо непосредственного описания контура глифа файл Metafont описывает пути пера. Некоторые более простые шрифты Metafont, такие как каллиграфические математические шрифты семейства Computer Modern , используют один штрих относительно большого пера для определения каждого визуального «штриха» глифов. В более сложных шрифтах, таких как латинские текстовые шрифты семейства Computer Modern, используется маленькая ручка, чтобы обвести контур визуальных «штрихов», которые затем заполняются; результат очень похож на контурный шрифт, но со слегка смягченными углами, определяемыми формой пера.

Поскольку формы шрифтов определяются уравнениями, а не напрямую закодированными числами, можно рассматривать такие параметры, как соотношение сторон, наклон шрифта, ширина штриха, размер засечек и т. д., как входные параметры в каждом определении глифа (которые затем определяют не один шрифт, а мета -шрифт). Таким образом, изменив значение одного из этих параметров в одном месте файла Metafont, можно произвести последовательное изменение во всем шрифте. Computer Modern Roman иллюстрирует множество вариантов использования этой функции; Типичная установка TeX включает в себя несколько версий шрифта с шагом от 5 до 17 символов на дюйм, с одинаковой шириной штриха для всех размеров (а не увеличением по мере увеличения шрифта). Кроме того, шрифты Computer Modern пишущая машинка и шрифты без засечек определяются с использованием по существу того же файла Metafont, что и шрифт Roman, но с другими глобальными параметрами.

Используйте [ править ]

Хотя известные дизайнеры шрифтов, такие как Герман Цапф , сотрудничали с Кнутом для создания новых шрифтов с использованием Metafont, система не получила широкого распространения среди профессиональных дизайнеров шрифтов. Кнут объясняет это тем, что «Просить художника стать математиком настолько, чтобы понять, как написать шрифт с 60 параметрами, — это слишком». [4] Джонатан Хефлер отметил, что система Metafont в конечном итоге стала «технологией, лежащей в основе отсутствия ваших любимых шрифтов… Идея Кнута о том, что буквы начинаются со скелетных форм, ошибочна». [5] [ нужен лучший источник ]

Система Metafont позволяет обрабатывать шрифты необычными способами; в 1982 году Кнут показал, как его можно использовать для преобразования шрифтов: шрифт с засечками постепенно переходит в дизайн без засечек по ходу текста. [6]

История [ править ]

Дональд Кнут начал работу над программным обеспечением для создания шрифтов в 1977 году и выпустил первую версию Metafont в 1979 году. Из-за недостатков исходного языка Metafont Кнут разработал совершенно новую систему Metafont в 1984 году, и именно эта пересмотренная система используется сегодня. ; В Metafont есть система управления версиями, аналогичная системе TeX , где число асимптотически приближается к e с каждой ревизией. [7]

Пример [ править ]

В следующем примере создается замкнутая бобовидная форма для символа «B» шрифта:

%имя файла: beta.mf 
 %mode_setup; 
  % Определить бобовидную форму для символа Bbeginchar 
 (  "  B"  ,  11  pt  #  ,  11  pt  #  ,  0  ); 
    % Настройка координат в виде системы уравнений 
   y1  =  y2  =  y3  =  0  ; 
    у4  =  у5  =  у6  =  час  ; 
    х1  =  х4  =  0  ; 
    х2  =  х5  =  ш  ; 
    х3  =  х6  =  2  *  ш  ; 

    % Определить 
   для захвата   круг пера   пера xscaled   0  .   2  w   масштабирован   0  .   04  w   повернуто   45  ; 

    % Нарисовать кривую символа 
   % z1 то же самое, что (x1, y1) 
   draw   z1  ..  z3  ..  z6  {  z2  -  z6  }..  z5  ..{  z4  -  z2  }  z4  ..  цикл  ; 
  конецчар  ; 

  конец 

В результате получается следующий глиф:

Приведенный выше пример будет обработан с помощью командной строки, например: [8]

мф   '\mode=ljfour;   режим_настройки;   введите beta.mf'  ; 
  gftopk   бета.600gf   бета.600pk 
 

Затем его можно использовать в файле LaTeX, например [8] (все файлы должны находиться в одном каталоге или система TeX должна быть проинформирована о них соответствующими методами):

\documentclass  {  статья  } 

 \newfont  {  \letterbeta  }{  beta  } 
 \newcommand  {  \otherbeta  }{{  \letterbeta  B  }} 

 \begin  {  document  } 
  Давайте попробуем создать здесь странную  \otherbeta\  . 
  \конец  {  документ  } 

Полученный PDF-файл должен выглядеть следующим образом:

шрифтов PostScript Type Создание 1

Существует несколько инструментов для преобразования программ Metafont в PostScript Type 1 шрифты . Большинство из них используют способность MetaPost конвертировать подмножество языка Metafont в контуры EPS , которые впоследствии можно преобразовать в шрифты PostScript Type 1. Создание векторных контуров штрихов пером Metafont нетривиально, поскольку модель глифа Metafont представляет собой растровое изображение, а точные контуры большинства штрихов не являются кривыми Безье . [примечание 1]

  • Польская команда JNS разработала METATYPE1. [9] (на основе MetaPost) для создания шрифтов PostScript Type 1. Его большим недостатком является то, что нельзя использовать перья, что значительно снижает возможности языка Metafont. Первоначально инструмент использовался польской фабрикой шрифтов GUST для создания модернизированного и расширенного варианта Computer Modern , названного Latin Modern .
  • мф2пт1 , [10] который также основан на Metapost, был разработан Скоттом Пакином при участии Вернера Лемберга . Он также имеет несколько ограничений, подробно описанных в руководстве, наиболее существенным из которых является ограничение, заключающееся в том, что каждый глиф должен быть полностью нарисован из закрытых путей. Чтобы преодолеть ограничения mf2pt1, вывод EPS Metapost может быть подвергнут постобработке с помощью FontForge , который способен интерпретировать сложные пути PostScript, сгенерированные Metapost из эллиптических перьев Metafont, а также способен удалять перекрытия контуров. Поскольку FontForge поддерживает создание сценариев, этот этап постобработки также можно автоматизировать. Этот подход использовался для создания контуров типа 1 для математического шрифта MnSymbol , разработанного Ахимом Блюменсатом; MnSymbol был разработан как дополнение к Minion Pro .
  • МетаФог [11] — это запатентованный конвертер, который может аналитически преобразовывать штрихи пера, но для исключения вырожденных случаев он требует ручной постобработки и не доступен публично. Он может обрабатывать только вывод Metapost. [12]

Распространенным подходом к созданию шрифтов Type 1 с помощью штрихов пером остается создание растрового изображения высокого разрешения, а затем использование автотрассировки , реализуемой такими пакетами, как mftrace. [13] и TeXtrace [14]

См. также [ править ]

Примечания [ править ]

  1. ^ Технически, Metafont генерирует векторные контуры как промежуточный этап растрирования штриха, но эти промежуточные контуры адаптированы к текущему разрешению растра и не являются простыми как кривые, поэтому их очень далеко от использования в качестве контуров типа 1. Эффектом сложности являются ложные пиксели на вогнутой стороне штриха, которым присваивается значение 2, а не 1, однако автоматическая отбраковка изображений, отправляемых в виде глифов в шрифте, обычно предотвращает это от отображения в окончательном варианте. битовая карта.

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

  1. ^ Рокицки, Томас (1985). «Формат файла шрифта упакованного (PK)» (PDF) . БУКСИР . 6 (3): 115–120. Архивировано (PDF) из оригинала 6 ноября 2011 г. Проверено 9 августа 2019 г.
  2. ^ Кнут, Дональд (1986). Книга МЕТАФОНТ . Эддисон Уэсли. ISBN  0-201-13445-4 .
  3. ^ Кнут, Дональд (25 января 2000 г.). «Интервью: Дональд Э. Кнут» (Интервью). Беседовал Адвокат. Архивировано из оригинала 22 января 2009 года . Проверено 13 января 2016 г. ...математика квадратичного уравнения действительно проста. Соответствующая вещь для куба в шесть раз сложнее...
  4. ^ CSTUG, Карлов университет, Прага, март 1996 г., Вопросы и ответы с профессором Дональдом Э. Кнутом, воспроизведено в TUGboat 17 (4) (1996), 355–67. Цитирование со страницы 361. Доступно в Интернете по адресу [1].
  5. ^ Хефлер, Джонатан. «Идея Кнута о том, что буквы начинаются со скелетных форм, ошибочна. Но его работа важна и имела длительное влияние» . Твиттер . Проверено 18 августа 2018 г.
  6. ^ Knuth, Donald (1982). "The Concept of a Meta-Font" (PDF). Visible Language. 16 (1): 3–27. Archived from the original (PDF) on 2020-07-07.
  7. ^ «Кнут: Компьютеры и набор текста» .
  8. ^ Перейти обратно: а б Кристоф Грансир. «Урок МЕТАФОНТ» .
  9. ^ «CTAN: tex-archive/fonts/utilities/metatype1» .
  10. ^ «CTAN: tex-archive/support/mf2pt1» .
  11. ^ «Р. Дж. Кинч, «MetaFog: преобразование форм Metafont в контуры», TUGboat 16 (3) , 233–43 (1995)» (PDF) . Архивировано (PDF) из оригинала 5 октября 2000 г.
  12. ^ К. Пишка, 2004 г.
  13. ^ mftrace — небольшая программа на Python, которая позволяет преобразовать растровый шрифт TeX в шрифт PFA или PFB (масштабируемый шрифт PostScript Type1) или шрифт TTF (TrueType). Он распространяется под лицензией GNU GPL. Создатель Хан-Вэнь Ниенхейс. Версии до 1.0.5 назывались «pktrace».
  14. ^ TeXtrace - набор скриптов для UNIX, которые преобразуют любой шрифт TeX в контурный шрифт Type1 .pfb, сразу пригодный для использования с dvips, pdftex, acroread (и многими другими программами). Создатель Питер Сабо.

Источники [ править ]

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

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: CA92FBF534EAC7B8CEA40B712CB15A13__1715107140
URL1:https://en.wikipedia.org/wiki/Metafont
Заголовок, (Title) документа по адресу, URL1:
Metafont - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)