При попытке приспособить систему TeX для набора математической литературы с соблюдением отечественных стандартов возникает ряд проблем, часть из которых возможно решить на уровне изменения стилей, однако некоторые требуют изменения логики самого компилятора TeXа. В рамках проекта ARTeX, поддерживаемого грантом РФФИ 96-7-89406, который посвящен вышеупомянутой задаче, уже создан усовершенствованный компилятор TeXа [1].
Так как проект ARTeX начал развиваться на базе VTeXа (М. Вулис, фирма MicroPress), то помимо включения поддержки основных требований российских полиграфических стандартов ARTeX-компилятор обладает следующим свойством - он поддерживает масштабируемые шрифты в формате VTeXа
К достоинствам данного подхода следует отнести:
Шрифты в формате VTeXа задаются следующим образом. Если не рассматривать способы сжатия информации (шрифты в формате .if4 занимают примерно вдвое меньше, чем их аналоги в .if3-формате), то символ шрифта состоит из нескольких замкнутых контуров, задаваемых кривыми Безье третьего порядка или, в простейшем случае, отрезками. Эти контура могут как пересекаться друг с другом, так и самопересекаться. Направление обхода задает внутренность контура - если обходить по часовой стрелке, то внутренние точки будут справа по ходу (правило правой реки). Область, граница которой состоит из кусков контуров считается внутренней, если найдется хотя бы один кусок, направление обхода которого по часовой стрелке.
Формат представления очень напоминает Type1-шрифты за одним исключением: у Type1-шрифта не может быть пересекающихся контуров. Казалось бы, достаточно выделить точки пересечения контуров и собрать Type1-шрифты из непресекающихся контуров. Но если искать численное решение, то в результате ошибок, связанным с погрешностями вычисления или представления данных, могут немного измениться контрольные точки сплайнов, что может привести к пересечению получившихся контуров. Символьное же вычисление точек пересечения в общем случае невозможно, так как приходиться искать корни многочлена 9 степени.
Однако для визуализации и печати достаточно следующего подхода: на целочисленной сетке, которая представляет собой растр выходного устройства, необходимо найти след контуров, которые задаются кривыми Безье, выделить из них следы, составляющие границы контуров, подлежащих закраске и закрасить их. Таким образом строится процесс растеризации для векторных шрифтов, не использующих при этом перевод шрифтов в формат PS.
Растеризатор для шрифтов в формате VTeXа позволит использовать эти шрифты
при помощи стандартных драйверов TeXа (например, драйверов EmTeXа под MS-DOS),
так как полученный растр легко конвертируется в PK-формат [2], который
уже можно использовать.