METAFONT

Поделись знанием:
Перейти к: навигация, поиск
METAFONT
Тип

Язык программирования

Разработчик

Дональд Кнут

Операционная система

Кроссплатформенное ПО

Последняя версия

2.718281 (март 2008)

Лицензия

Пермиссивная

К:Википедия:Статьи без изображений (тип: не указан)

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

Этот язык программирования был разработан Дональдом Кнутом как дополнение к его типографской системе 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

Напишите отзыв о статье "METAFONT"

Литература

Ссылки

  • mirror.ctan.org/systems/knuth/dist/mf/mfbook.tex — книга Дональда Кнута 'Всё про METAFONT' (METAFONTbook) в формате TeX (англ.).
  • [metafont.tutorial.free.fr/ The METAFONT Tutorial: an online guide to using METAFONT.]

Отрывок, характеризующий METAFONT

Слышались вопросы и ответы. Целовальник, воспользовавшись увеличением толпы, отстал от народа и вернулся к своему кабаку.
Высокий малый, не замечая исчезновения своего врага целовальника, размахивая оголенной рукой, не переставал говорить, обращая тем на себя общее внимание. На него то преимущественно жался народ, предполагая от него получить разрешение занимавших всех вопросов.
– Он покажи порядок, закон покажи, на то начальство поставлено! Так ли я говорю, православные? – говорил высокий малый, чуть заметно улыбаясь.
– Он думает, и начальства нет? Разве без начальства можно? А то грабить то мало ли их.
– Что пустое говорить! – отзывалось в толпе. – Как же, так и бросят Москву то! Тебе на смех сказали, а ты и поверил. Мало ли войсков наших идет. Так его и пустили! На то начальство. Вон послушай, что народ то бает, – говорили, указывая на высокого малого.
У стены Китай города другая небольшая кучка людей окружала человека в фризовой шинели, держащего в руках бумагу.
– Указ, указ читают! Указ читают! – послышалось в толпе, и народ хлынул к чтецу.
Человек в фризовой шинели читал афишку от 31 го августа. Когда толпа окружила его, он как бы смутился, но на требование высокого малого, протеснившегося до него, он с легким дрожанием в голосе начал читать афишку сначала.
«Я завтра рано еду к светлейшему князю, – читал он (светлеющему! – торжественно, улыбаясь ртом и хмуря брови, повторил высокий малый), – чтобы с ним переговорить, действовать и помогать войскам истреблять злодеев; станем и мы из них дух… – продолжал чтец и остановился („Видал?“ – победоносно прокричал малый. – Он тебе всю дистанцию развяжет…»)… – искоренять и этих гостей к черту отправлять; я приеду назад к обеду, и примемся за дело, сделаем, доделаем и злодеев отделаем».
Последние слова были прочтены чтецом в совершенном молчании. Высокий малый грустно опустил голову. Очевидно было, что никто не понял этих последних слов. В особенности слова: «я приеду завтра к обеду», видимо, даже огорчили и чтеца и слушателей. Понимание народа было настроено на высокий лад, а это было слишком просто и ненужно понятно; это было то самое, что каждый из них мог бы сказать и что поэтому не мог говорить указ, исходящий от высшей власти.
Все стояли в унылом молчании. Высокий малый водил губами и пошатывался.
– У него спросить бы!.. Это сам и есть?.. Как же, успросил!.. А то что ж… Он укажет… – вдруг послышалось в задних рядах толпы, и общее внимание обратилось на выезжавшие на площадь дрожки полицеймейстера, сопутствуемого двумя конными драгунами.
Полицеймейстер, ездивший в это утро по приказанию графа сжигать барки и, по случаю этого поручения, выручивший большую сумму денег, находившуюся у него в эту минуту в кармане, увидав двинувшуюся к нему толпу людей, приказал кучеру остановиться.
– Что за народ? – крикнул он на людей, разрозненно и робко приближавшихся к дрожкам. – Что за народ? Я вас спрашиваю? – повторил полицеймейстер, не получавший ответа.
– Они, ваше благородие, – сказал приказный во фризовой шинели, – они, ваше высокородие, по объявлению сиятельнейшего графа, не щадя живота, желали послужить, а не то чтобы бунт какой, как сказано от сиятельнейшего графа…