Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=7635894&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 15:45:53 2016
Кодировка: Windows-1251
Библиотека С/С++ для создания PostScript файлов - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
muff
old hand

Рег.: 07.06.2004
Сообщений: 721
Рейтинг: 144
  Библиотека С/С++ для создания PostScript файлов
      20.06.2008 19:31
-1

Необходимо сохранять графики в формате PostScript. Графики, помимо всяких примитивов, содержат подписи на русском языке.
Подскажите пожалуйста библиотеку на С/С++ для создания файлов PostScript с поддержкой кирилицы, платформа - windows.

Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13749
Из: Москва
Рейтинг: 3476
  Re: Библиотека С/С++ для создания PostScript файлов [re: muff]
      20.06.2008 22:16
 

metapost не проканает?

основная проблема с PostScript - это русские шрифты. и ее по-хорошему на коленке не решить. разве что свои собственные..

muff
old hand

Рег.: 07.06.2004
Сообщений: 721
Рейтинг: 144
  Re: Библиотека С/С++ для создания PostScript файлов [re: Basilio]
      21.06.2008 10:31
 

Я так понял, что вся прелесть metapost заключается в том, чтобы потом использовать LaTeX для внедрения необходимых шрифтов. Не хотелось бы таскать вместе с прогой заодно и дистрибутив LaTeX. Что ж придется найти какой-нибудь шрифт и научиться самому его внедрять.

Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13749
Из: Москва
Рейтинг: 3476
  Re: Библиотека С/С++ для создания PostScript файлов [re: muff]
      21.06.2008 12:05
 

Можно пойти по более трудному пути: взять какой-нибудь Type1 кириллический шрифт и его использовать.

Я всегда EPS руками генерил, там синтаксис тривиальный:
code:
%!PS %%Creator: Basilio 0 0 moveto 10 10 lineto 20 0 lineto stroke showpage


для экономии места можно делать так:
code:
... /m {moveto} def /l {lineto} def /s {stroke} def /n {newpath} def n 0 0 m 10 10 l 20 0 l s showpage


С английскими шрифтами там тривиально:
code:
/Times-Roman findfont 18 scalefont setfont 100 100 moveto (Preved) show showpage

с русскими сложнее - надо их встраивать, я так глубоко в PLRM не заглядывал.
можно конечно перевести их и вручную отрисовывать - но это возни много..



muff
old hand

Рег.: 07.06.2004
Сообщений: 721
Рейтинг: 144
  Re: Библиотека С/С++ для создания PostScript файлов [re: Basilio]
      22.06.2008 14:07
 

Спасибо за советы. Пока решил попробовать по такой схеме. Сделал в LaTeX'е простенький файл
code:
\documentclass{article} \usepackage[russian]{babel} \begin{document} абвгдежзийклмнопрстуфхцчшщъыьэюя \end{document}

Потом с помощью DviPS сделал файл PS. Теперь разбираюсь что получилось.

Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13749
Из: Москва
Рейтинг: 3476
  Re: Библиотека С/С++ для создания PostScript файлов [re: muff]
      22.06.2008 14:11
 

в такой конфигурации тех цепляет растровые шрифты, это не тру.
попробуй прикрутить пакет pscyr. в этом случае у тебя буду векторные шрифты.
вот тут например, инструкция: http://tex.imm.uran.ru/texserver/fonts/pscyr/pscyr4c/



Редактировал Basilio (22.06.2008 14:22)
Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13749
Из: Москва
Рейтинг: 3476
  Re: Библиотека С/С++ для создания PostScript файлов [re: muff]
      22.06.2008 18:48
 

В общем, essential часть вот тут:
code:
TeXDict 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
итого, это можно преобразовать в:
code:
TeXDict 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 :cool: или любой друго кириллический из pscyr, кодировку угадать нетрудно.

под твои нужды это будет примерно так (на кернинг забиваем):
code:
TeXDict 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


muff
old hand

Рег.: 07.06.2004
Сообщений: 721
Рейтинг: 144
  Re: Библиотека С/С++ для создания PostScript файлов [re: Basilio]
      01.07.2008 16:51
 

Наконец разобрался как самому внедрить нужный шрифт, без всякого TeX'a. Оказалось это очень просто.
Я взял, как ты и посоветовал, шрифт из pscyr. С помощью утилиты PfbToPfa перевел шрифт из бинарного формата в текстовый. Вставил его в файл PS сразу после заголовка и все заработало.

Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 1 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в