Библиотека С/С++ для создания PostScript файлов
основная проблема с PostScript - это русские шрифты. и её по-хорошему на коленке не решить. разве что свои собственные..
Я так понял, что вся прелесть metapost заключается в том, чтобы потом использовать LaTeX для внедрения необходимых шрифтов. Не хотелось бы таскать вместе с прогой заодно и дистрибутив LaTeX. Что ж придется найти какой-нибудь шрифт и научиться самому его внедрять.
Я всегда EPS руками генерил, там синтаксис тривиальный:
%!PS
%%Creator:
0 0 moveto
10 10 lineto
20 0 lineto
stroke
showpage
для экономии места можно делать так:
...
/m {moveto} def
/l {lineto} def
/s {stroke} def
/n {newpath} def
n 0 0 m 10 10 l 20 0 l s
showpage
С английскими шрифтами там тривиально:
/Times-Roman findfont 18 scalefont setfont
100 100 moveto
(Preved) show
showpage
с русскими сложнее - надо их встраивать, я так глубоко в PLRM не заглядывал.
можно конечно перевести их и вручную отрисовывать - но это возни много..
\documentclass{article}
\usepackage[russian]{babel}
\begin{document}
абвгдежзийклмнопрстуфхцчшщъыьэюя
\end{document}
Потом с помощью DviPS сделал файл PS. Теперь разбираюсь что получилось.
попробуй прикрутить пакет pscyr. в этом случае у тебя буду векторные шрифты.
вот тут например, инструкция: http://tex.imm.uran.ru/texserver/fonts/pscyr/pscyr4c/
Teict begin 1 0 bop 639 523 a Fa(\340\341\342\343)n
(\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364)n
(\365\366\367\370\371\372\373\374\375\376)n(\377)1926
5255 y(1)p eop end
Анализ библиотеки показал примерно следующее:
bop - begin of page
eop - end of page
a - moveto
Fa - преобразование fontencoding
n - show, сдвиг позиции на -2, применение n видимо из-за кернинга. можно на него забить.
p - show
итого, это можно преобразовать в:
Teict
begin
1 0 bop %begin of page
639 523 a % moveto
Fa(\340\341\342\343)n % кернинг между г и д
(\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364)n % ещё кернинг
(\365\366\367\370\371\372\373\374\375\376)n % кернинг между ю и я
(\377) % буква я
1926 5255 y % moveto - это уже позиция номера страницы "1"
(1) % собственно, номер страницы
p % отрисовка номера и буквы я видимо
eop
end
соответственно, можно стырить шрифт computer modern или любой друго кириллический из pscyr, кодировку угадать нетрудно.
под твои нужды это будет примерно так (на кернинг забиваем):
Teict
begin
1 0 bop %begin of page
639 523 a % moveto - первая надпись
Fa(здесь кодированная строка что-то типа \354\374\362...) p
329 423 a % moveto - вторая надпись
Fa(здесь кодированная строка что-то типа \354\374\362...) p
%%%% ну а здесь пошёл рисунок:
0 0 moveto
200 200 lineto
400 0 lineto
stroke
eop % end of page
end
Я взял, как ты и посоветовал, шрифт из pscyr. С помощью утилиты PfbToPfa перевел шрифт из бинарного формата в текстовый. Вставил его в файл PS сразу после заголовка и все заработало.
Оставить комментарий
nawok
Необходимо сохранять графики в формате PostScript. Графики, помимо всяких примитивов, содержат подписи на русском языке.Подскажите пожалуйста библиотеку на С/С++ для создания файлов PostScript с поддержкой кирилицы, платформа - windows.