Печать по русски из-под Linux.
Модератор: Модераторы
И кстати разобрались с печатью по русски из по линукса?
Вот у меня такая ситуация
вывожу на принтер через Printer. и получается очень интересная ситуация
Когда даю на печать из программы комп входит в стопор тормозит ужасно
даю на печать всего одно слово из 5 букв
Печатается страница примерно через 2-3 минуты а комп продолжает ужасно тормозить пока не перезагружу XServer
Какие идеи есть могу выложить программу
http://linuxforum.ru/index.php?act=atta ... st&id=9744
http://linuxforum.ru/index.php?act=atta ... st&id=9745
Вот у меня такая ситуация
вывожу на принтер через Printer. и получается очень интересная ситуация
Когда даю на печать из программы комп входит в стопор тормозит ужасно
даю на печать всего одно слово из 5 букв
Печатается страница примерно через 2-3 минуты а комп продолжает ужасно тормозить пока не перезагружу XServer
Какие идеи есть могу выложить программу
http://linuxforum.ru/index.php?act=atta ... st&id=9744
http://linuxforum.ru/index.php?act=atta ... st&id=9745
вот накатал патчик. главное условие - текст, передаваемый на принтер, должен быть в utf-8.
патчится файл lcl/postscriptcanvas.pas.
чтобы обойти ограничения в 256 символов в postscript-овской таблице encodings, выводятся непосредственно имена glyph-ов.
командой glyphshow, а не show, как обычно.
выливается это в разрастание самой программы, в которой приходится хранить имена распространенных glyph-ов.
взяты эти имена, кстати, отсюда - http://www.adobe.com/devnet/opentype/ar ... phlist.txt
включается логика конструкцией
{$DEFINE PS_UNI}
убрав этот define, возвращаемся к обычной логике работы.
ах да, по ходу разборок выяснилась опечаточка (упоминается undefline вместо underline), выливающаяся в невозможность печати подчеркнутого текста.
тут в патче это учтено. как безусловная правка.
патчится файл lcl/postscriptcanvas.pas.
чтобы обойти ограничения в 256 символов в postscript-овской таблице encodings, выводятся непосредственно имена glyph-ов.
командой glyphshow, а не show, как обычно.
выливается это в разрастание самой программы, в которой приходится хранить имена распространенных glyph-ов.
взяты эти имена, кстати, отсюда - http://www.adobe.com/devnet/opentype/ar ... phlist.txt
включается логика конструкцией
{$DEFINE PS_UNI}
убрав этот define, возвращаемся к обычной логике работы.
ах да, по ходу разборок выяснилась опечаточка (упоминается undefline вместо underline), выливающаяся в невозможность печати подчеркнутого текста.
тут в патче это учтено. как безусловная правка.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
в этом файлике много чего "not implemented". увы, кроме вышеизложенного, я других правок не делал. задачи у меня другие...alexs писал(а):В postscriptcanvas.pas всё безусловно приводится к 4-м шрифтам. Ты это ограничение не переделывал?
кстати, кто-нибудь сможет протолкнуть этот патч разработчикам? я не владею английским в достаточной мере. а патч не только для славян полезен. насколько я понимаю, адобовцами тут большая часть популярных алфавитов учтена (которые в начале юникодной таблицы помещаются). если в шрифте глифы соответствующие имеются, то можно печатать хоть иврит, хоть грузинский, хоть кану...
???alexs писал(а):размер плавает
формируемый postscript содержит несанкционированные переназначения размера шрифта?
можно взглянуть на этот сформированный ps?
ну, и неплохо бы посмотреть на фрагмент картинки, которая отрисовывается этим ps-ом. или "размер плавает" только при печати на бумагу?
посмотрел. как я и предполагал, ничего "военного" не увидел.alexs писал(а):Личкой отправил файл.
все вполне себе аккуратно.
код, собственно, и подтверждает. никаких "вкраплений" чего-либо постороннего. просто буквы выводятся:
Код: Выделить всё
/afii10018
/afii10074
/afii10066
/afii10077
/afii10074
/afii10080
/afii10084
/afii10070
/afii10076
/afii10065
/space
/afii10029
/afii10065
/afii10068
/afii10085
/afii10079
/afii10080
/afii10067
/afii10093
/afii10087приложите, наверно, все-таки, кусочек экранного снимка, из которого было бы понятно, _что_ и _куда_ у Вас "плывет".
а то есть подозрение на Ваш gs | шрифт...
p.s. прилагаю снимок одной из надписей в Вашем файле. или я чего-то не вижу, или надпись вполне себе ровная.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аналогично в Ubuntu 7.10 - латинские буквы значительно крупнее кириллицы при одинаковых настройках шрифта (LazReport на PDF-Printer)
2 alexs
дело, скорее, в разном понимании "размера шрифта" у экрана и postscript-а.
в разных единицах они его меряют, что ли...
но не в шрифте дело, это точно.
посмотрите в текст ps-файла. например, для надписи "Архив..." (/afii10017/afii10082/afii10087/afii10074/afii10067...) устанавливается размер шрифта 11 (строчкой выше: "...11 scalefont...").
и если такого размера (Font.Size=11) шрифт сделать, например, на форме в lazarus, то выглядят буквы там значительно крупнее...
может быть, в ps предусмотрен какой-нибудь scaling для размера шрифта. черт его знает. я так глубоко не вникал.
2 v-t-l
>латинские буквы значительно крупнее кириллицы
пожалуйста, выведите на печать (точнее, в ps-файл) одну строчку "ABCDEF АБВГДЕ".
что, неужели буквы получаются разной высоты? тогда загляните в сам файл:
латиница и кириллица выводятся одним куском, начинающимся с выбора шрифта, или разными кусками?
p.s. если совсем уж по-тупому, то в строчке
Write(Format('/%s findfont %d scalefont setfont',[MappedFontName,Font.Size]));
можно просто Font.Size на чего-нибудь домножить...
но это не поможет в случае, если существует таки эта паранормальная проблема "кириллица мельче, чем латиница". жду вестей от v-t-l
Добавлено спустя 9 минут 28 секунд:
о! мысль возникла! а что за шрифт выбирается у вас, alexs и v-t-l, в реальности?
просмотрите-ка вывод gs-а, когда он рендерит ваши ps-файлики:
$ gs some.ps
он там много чего интересного про шрифты может написать.
дело, скорее, в разном понимании "размера шрифта" у экрана и postscript-а.
в разных единицах они его меряют, что ли...
но не в шрифте дело, это точно.
посмотрите в текст ps-файла. например, для надписи "Архив..." (/afii10017/afii10082/afii10087/afii10074/afii10067...) устанавливается размер шрифта 11 (строчкой выше: "...11 scalefont...").
и если такого размера (Font.Size=11) шрифт сделать, например, на форме в lazarus, то выглядят буквы там значительно крупнее...
может быть, в ps предусмотрен какой-нибудь scaling для размера шрифта. черт его знает. я так глубоко не вникал.
2 v-t-l
>латинские буквы значительно крупнее кириллицы
пожалуйста, выведите на печать (точнее, в ps-файл) одну строчку "ABCDEF АБВГДЕ".
что, неужели буквы получаются разной высоты? тогда загляните в сам файл:
латиница и кириллица выводятся одним куском, начинающимся с выбора шрифта, или разными кусками?
p.s. если совсем уж по-тупому, то в строчке
Write(Format('/%s findfont %d scalefont setfont',[MappedFontName,Font.Size]));
можно просто Font.Size на чего-нибудь домножить...
но это не поможет в случае, если существует таки эта паранормальная проблема "кириллица мельче, чем латиница". жду вестей от v-t-l
Добавлено спустя 9 минут 28 секунд:
о! мысль возникла! а что за шрифт выбирается у вас, alexs и v-t-l, в реальности?
просмотрите-ка вывод gs-а, когда он рендерит ваши ps-файлики:
$ gs some.ps
он там много чего интересного про шрифты может написать.
Похоже, это LazReport бредит. При прямом выводе на Canvas принтера - все красиво.
Serif, Sans, Times New Roman, Arial - Utf-8.
Добавлено спустя 6 минут 31 секунду:
LazReport печатает по-русски (в последних svn lazarus работает в utf8 по умолчанию), но бредит при вычислении размеров текста и зачем-то меняет размер шрифта при выводе на канву принтера (в дизайнере периодически выдает Invalid Floatig Point Operation).
Добавлено спустя 6 минут 31 секунду:
LazReport печатает по-русски (в последних svn lazarus работает в utf8 по умолчанию), но бредит при вычислении размеров текста и зачем-то меняет размер шрифта при выводе на канву принтера (в дизайнере периодически выдает Invalid Floatig Point Operation).
