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

METAFONT
Логотип программы METAFONT
Тип Язык программирования
Разработчик Дональд Кнут
Операционная система Кроссплатформенное ПО
Первый выпуск 1979
Последняя версия 2.718281 (март 2008)
Лицензия Пермиссивная
Логотип Викисклада Медиафайлы на Викискладе

Этот язык программирования был разработан Дональдом Кнутом как дополнение к его типографской системе TeX. Одной из особенностей METAFONT является то, что все очертания символов определяются с помощью развитых геометрических описаний, например, возможно определить какую-либо точку как пересечение отрезка и кривой Безье.

Кнут начал разработку METAFONT в 1977 и выпустил первую версию в 1979. Из-за недостатков в оригинальном языке METAFONT Кнут полностью переработал METAFONT и выпустил исправленную версию в 1984, которая используется по сей день.

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

METAFONT чаще всего запускается без непосредственного участия пользователя. Файлы DVI содержат лишь ссылки на соответствующие гарнитуры шрифтов, а не сами растровые или векторные шрифты, что возможно, например, в PostScript. Следовательно, когда требуется просмотреть, распечатать или сконвертировать файл DVI, необходим доступ непосредственно к изображениям символов в гарнитурах. Большинство дистрибутивов TeX сконфигурированы таким образом, что недоступные шрифты с необходимым разрешением автоматически генерируются вызовами METAFONT. Гарнитуры затем сохраняются для последующего использования.

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

Пример

править
mode_setup;

% Define a beanlike shape for the character B
beginchar("B",11pt#,11pt#,0);
  % Setup coordinates as an equation system
  y1=y2=y3=0;
  y4=y5=y6=h;
  x1=x4=0;
  x2=x5=w;
  x3=x6=2*w;

  % Define pen
  pickup pencircle xscaled 0.2w yscaled 0.04w rotated 45;

  % Draw the character curve
  draw z1..z3..z6{z2-z6}..z5..{z4-z2}z4..cycle;
endchar;

end

Литература

править
  • Дональд Кнут. Все про TEX = The TEXBook. — М.: «Вильямс», 2003. — С. 560. — ISBN 5-8459-0382-3.
  • Дональд Кнут. Все про METAFONT = The METAFONTbook. — М.: «Вильямс», 2003. — С. 384. — ISBN 5-8459-0442-0.
  • Graham Douglas. Typeset the source code documentation for MetaFont[1].

Примечания

править
  1. Typeset the source code documentation for MetaFont. ru.overleaf.com. Дата обращения: 2 августа 2022.

Ссылки

править