На ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/ выложены Type1 ps-фонты в koi8 и koi8-r кодировках, предназначенные для печати в gs-эмуляторе postscript-принтера. С их помощью мне удалось добиться вывода на печать кириллицы из Netscape Navigator/Communicator и русифицировать StarOffice. Впрочем, можно не ограничиваться русификацией только этих приложений (см. пп.5-6). Файл gs-type1_koi8_fonts.tgz содержит: - ERKurier KOI8-R фонты, конвертированные из ttf-формата ((c) Gavin Helf, 1995. Changes (c) 1996 by Andrey A. Chernov). - 3 семейства фонтов ArialCyrMT, CourierCyrPS и TimesNRCyrMT ((c) Monotype Corporation 1990-1992), полученные конвертированием соответствующих ttf- фонтов. Псевдографика отсутствует. ERKurier и CurierCyr являются monospaced фонтами. ERKurier включает в себя псевдографику в соответствии с RFC 1489. ArialCyr (который imho допустимо использовать в качестве замены Helvetica) и TimesNRCyr - proportional фонты. 1.Русификация Ghostscript ========================= Чтобы установить данные шрифты в ghostscript - следует, забрав файлы gs-type1_koi8_fonts.tgz и gs-Fontmap.add.gz, проделать следующее (с привилегиями root): $: cd {gs_path}/fonts/ $: tar xzf {путь_к_файлу}/gs-type1_koi8_fonts.tgz $: cd ../{номер_версии_gs}/ $: cp Fontmap Fontmap.orig $: zcat {путь_к_файлу}/gs-Fontmap.add.gz >> Fontmap ({gs_path} определяется во время генерации ghostscript, обычно это /usr/local/share/ghostscript). Фонты были сгенерены в pfb-формате, метрика - в pfm-формате. Если для работы каких-либо приложений Вам необходимо иметь метрику в afm-формате, Вам следует забрать файл gs-type1_koi8_afm.tgz и также разархивировать его в {gs_path}/fonts/. Фонты в формате pfa, если это необходимо, можно получить из соответствующих pfb-файлов с помощью утилиты pfb2pfa либо pfbtops. Для того, чтобы иметь возможность работать в ghostscript с фонтами Courier, Times и Helvetica в koi8 кодировке, необходимо в Fontmap поменять алиасы на них: закомментировать стоящие по умолчанию и раскомментировать добавленные из gs-Fontmap.add. Какой из двух monospaced фонтов будет у Вас называться Courier - решайте сами. Во избежание подмены ghostscript'ом установленных koi8-фонтов другими (нескалируемыми X-фонтами), gs следует запускать с ключем -dNOPLATFONTS. В качестве примера ниже приводятся проверенные в работе фильтры эмуляции postscript-принтера для epson lq-100 и hp laserjet (фильтр должен быть прописан в printcap как опция "if" в entry для postcript-печати) ---cut here (begin lq100-ps filter)--- #!/bin/sh # # EPSON LQ-100 Postscript emulation for Netscape # exec /usr/local/bin/gs -q -sDEVICE=epson -r360x180 -sPAPERSIZE=a4\ -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=- - ---cut here (end lq100-ps filter)--- ---cut here (begin hplj-ps filter)--- #!/bin/sh # # HP LaserJet 5L Postscript emulation # exec /usr/local/bin/gs -q -sDEVICE=ljet4 -r600x600 -sPAPERSIZE=a4\ -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=- - ---cut here (end hplj-ps filter)--- Для предварительного просмотра на экране распечатки с кириллицей (например, перенаправленного в файл вывода печати из X-приложения), утилиту ghostview (либо gv) необходимо запускать с ключами "-arguments -dNOPLATFONTS". Или завести переменную среды GS_OPTIONS со значением -dNOPLATFONTS. 2.Установка Type1-фонтов в XFree86 ================================== Забрав файл XFree86-Type1_fonts.dir.scale.gz, проделайте следующую процедуру (с привилегиями root): $: cd /usr/X11R6/lib/X11/fonts/Type1/ $: mv fonts.dir fonts.dir.orig $: mv fonts.scale fonts.scale.orig $: zcat {путь_к_файлу}/XFree86-Type1_fonts.dir.scale.gz > fonts.dir $: cp fonts.dir fonts.scale По сравнению с оригинальными fonts.*, здесь добавлены описания koi8 фонтов и изменена первая строка (количество доступных фонтов). Сами описанные в fonts.dir файлы *.pfb также должны находиться в этом каталоге (можно их слинковать из {gs_path}/fonts/). Проведя необходимые манипуляции, введите команду 'xset fp rehash' (с правами авторизованного пользователя x-консоли). После этого фонты "kurier cyr", "arial cyr", "courier cyr" и "times cyr" станут доступны в X11- приложениях, запущенных из этого же окна xterm. (Для того, чтобы изменения в fontpath стали постоянно доступны из любого приложения, следует перезапустить xdm или startx). К сожалению, не все X-приложения могут полноценно использовать скалируемые Type1-фонты. Кроме того, даже те из них (например StarOffice), которые способны производить масштабирование отображаемых шрифтов, затрачивают на это заметное время. Поэтому, возможно, Вы найдете полезным установить в XFree86 также нескалируемые фонты, которые можно сгенерить после того, как установленные pfb-фонты станут доступны в XWindow. Для этого, забрав файл XFree86-xfonts.unscaled.tgz и запустив (с правами root) 'xfs&', проделайте следующее: $: tar xzvf XFree86-xfonts.unscaled.tgz $: cd xfonts.unscaled/75dpi $: ../create_fonts < fonts.dir $: cd ../100dpi $: ../create_fonts < fonts.dir Скрипт create_fonts использует утилиты fstobdf и bdftopcf, проверьте предварительно их наличие на Вашей системе. Возможно, перед тем, как сгенерить нескалируемые фонты, Вы сочтете необходимым отредактировать файлы xfonts.unscaled/*/fonts.dir, добавив или убрав какие-либо размеры или фонты. Не забудьте при этом изменить первую строку в соответствующем fonts.dir (количество фонтов), которую использует скрипт create_fonts. Полученные файлы - xfonts.unscaled/*dpi/*.pcf.Z - следует перенести в каталоги /usr/X11R6/lib/X11/fonts/cyrillic/*dpi/ и добавить соответствующие строки в файлы fonts.dir. Если каталогов cyrillic/*dpi/ в Вашей системе нет, то создайте их, перенесите туда файлы fonts.dir и *.pcf.Z и добавьте соответствующие пути в файл /etc/XF86Config. В остальном действия аналогичны тем, что уже были проделаны при установке фонтов в /usr/X11R6/lib/X11/fonts/Type1/. ПРИМЕЧАНИЕ. Сам я от использования сгенеренных таким образом нескалируемых фонтов отказался, так их качество, увы, все равно оставляет желать лучшего. Надеюсь, в дальнейшем я найду возможность сгенерить качественные bdf/pcf фонты и выложить их отдельными файлами. 3.Русификация печати из Netscape Navigator/Communicator ======================================================= Для этого достаточно русифицировать gs (п.1). Полный WYSIWYG установкой соответствующих koi8-шрифтов в X11 все равно получить не удастся. Независимо от выбранных Вами фонтов и их размеров для отображения текста в окне Мозиллы, NN/NC всегда использует для вывода на postscript-принтер только два шрифта: Courier в качестве monospaced шрифта и Times - в качестве proportional. Размер шрифтов при этом также жестко задан. Кроме того, мне так и не удалось найти возможность подсунуть Мозилле метрику используемых в gs фонтов. Netscape использует "зашитые" в него метрики для Times и Courier, и в результате "промахивается" при расстановке символов. Особенно это заметно при печати таблиц или текста с выделенными (как bold и/или italic) словами. ПРИМЕЧАНИЕ. Ares изготовил патч к бинарникам Мозиллы для замены прошитых в ней метрик ps-фонтов на метрики фонтов CourierCyrPS и TimesNRCyrMT и любезно согласился с моим предложением выложить этот патч на ftp.kapella.gpi.ru. Дистрибутив netscape-cyrps-patch.tgz содержит README с инструкциями и, похоже, действительно применим ко всем версиям Netscape. 4.Русификация StarOffice ======================== Здесь не обязательно русифицировать gs (п.1), так как при выводе на печать нестандартные фонты инкапсулируются в postscript-текст. Более того, если Вы хотите иметь возможность распечатывать из StarOffice как кириллическими шрифтами, так и "стандартными", поставляемыми с gs, (например, выбирая в swrite3 фонт "times cyr" либо "times"), то стоящие по умолчанию алиасы в Fontmap (см. п.1) без необходимости менять не стоит. Однако Вам необходимо предварительно выполнить п.2. Кроме того, следует - Положить pfb-файлы из gs-type1_koi8_fonts.tgz в $XPPATH/pssoftfonts/ (можно слинковать их из /usr/X11R6/lib/X11/fonts/Type1/) - Положить afm-файлы из gs-type1_koi8_afm.tgz в $XPPATH/fontmetrics/afm/ - Добавить в файл $XPPATH/psstd.fonts описания фонтов (файл so-psstd.fonts.add.gz) командой 'zcat so-psstd.fonts.add.gz >> $XPPATH/psstd.fonts' (Переменная XPPATH у Вас, вероятно, есть /usr/local/StarOffice-3.1/xp3). После этого, при выборе в StarOffice-приложении в качестве принтера по умолчанию какого-либо postscript-принтера, Вам станут доступными шрифты "kurier cyr", "arial cyr", "courier cyr" и "times cyr". 5.Русификация ApplixWare ======================== Метод предложен by David J. Coffin . Я это дело не проверял по причине отсутствия под рукой ApplixWare. Необходимо проделать п.1 (Русификация Ghostscript), п.2 (Установка Type1-фонтов в XFree86) и заменить файл /opt/applix/axdata/fontmetrics/fontmap.dir, разархивировав из ftp.kapella.gpi.ru/pub/cyrillic/psfonts/ файл aw-fontmap.dir.gz от David J. Coffin, и переименовав его в fontmap.dir. При создании fontmap.dir предполагалось, что метрика фонтов (afm-файлы из дистрибутива type1_koi8_afm.tgz) лежит в каталоге /usr/share/ghostscript/fonts. Если в Вашем случае это не так, отредактируйте соответствующим образом fontmap.dir, заменив "/usr/share/ghostscript/fonts" на "/usr/local/share/ghostscript/fonts" либо другой каталог, куда Вы положили afm-файлы. 6.Русификация всего остального, использующего ps-фонты ====================================================== Принципиальных трудностей здесь быть не должно. Главное - определиться с тем, куда класть сами фонты и их метрику. Возможно, потребуется также отредактировать специфические для данного приложения файлы с описаниями фонтов. ============ Описанные в пп.1-4 процедуры были проверены на системах: FreeBSD (начиная с 2.1.5-R) XFree86 (начиная с 3.1.2) Ghostscript (начиная с 4.03) Netscape Navigator (начиная с 3.01 Gold), Netscape Communicator 4.* StarOffice 3.1 for Linux, с эмуляцией Linux под FreeBSD (начиная с 2.2.2-R) Замеченные недостатки: ===================== - Символы 0x80-0x9f в X-приложениях не отображаются, а расположение символов в диапазоне 0xa1-0xdf не полностью соответствует заданному в фонтах. Символ 0xa0 в некоторых X-приложениях отображается как пробел. К счастью, это касается только символов псевдографики в koi8-r (и, соответственно, семейства ERKurier). При выводе на печать из Netscape ситуация с псевдографикой аналогичная. :-( - В фонтах из gs-type1_koi8_fonts.tgz отсутствуют символы "endash", "quotedblleft", "quotedblright", "fi", "fl", которые используются в некоторых приложениях обработки postscript-документов. Последние два символа попросту отсутствовали в исходных TTF-фонтах. Остальные были исключены мной по причине того, что для них не нашлось места в koi8-r. :-) - FamilyName фонтов из gs-type1_koi8_fonts.tgz не совпадают со стандартными именами Times, Courier etc., что затрудняет их использование в некоторых приложениях (thanx за подсказку Дмитрию Безгодову ). К сожалению, доработка фонтов может выполняться мной только урывками. Дело осложняется также тем, что конвертирование фонтов приходится выполнять в несколько этапов и на разных платформах. Однако, я надеюсь, когда-нибудь доведу это дело до логического конца. В идеале хотелось бы сделать некий "джентельменский набор" фонтов (возможно, в нескольких кодировках) на все случаи жизни и для разных unix-платформ. Хронология ========== 12.02.97 Выложена первая редакция gs-type1_koi8_fonts.tgz, gs-Fontmap.add.gz и XFree86-Type1_fonts.dir.scale.gz. Первый блин, как водится, вышел комом, в фонтах тут же было обнаружено изрядное количество багов. 15.04.97 Выложена исправленная редакция gs-type1_koi8_fonts.tgz и gs-Fontmap.add.gz. 17.06.97 Добавлена метрика в afm-формате - файл gs-type1_koi8_afm.tgz. 08.08.97 Добавлены файлы XFree86-xfonts.unscaled.tgz и so-psstd.fonts.add.gz, а также обновлены XFree86-Type1_fonts.dir.scale.gz и gs-type1_koi8_afm.tgz. Причина изменения XFree86-Type1_fonts.dir.scale.gz - необходимость модифицировать имена X-фонтов, чтобы в StarOffice можно было различать кириллические и некириллические фонты (например, "times cyr" и "times"). В gs-type1_koi8_afm.tgz все файлы *.afm были слегка подредактированы, так как в их первозданном виде swriter3 не хотел их признавать. 24.09.97 Обновлен файл XFree86-xfonts.unscaled.tgz. Причина - досадная ошибка, допущенная в скрипте create_fonts (спасибо за подсказку Евгению Кузакову ). 28.08.98 Добавлен патч netscape-cyrps-patch.tgz от Ares для замены метрик фонтов, прошитых в Мозилле. 02.10.98 Обновлен патч netscape-cyrps-patch.tgz, "он теперь должен без проблем собираться под linux'ом" (c) Ares . 06.10.98 Добавлен файл aw-fontmap.dir.gz от David J. Coffin для русификации ApplixWare. ============ Просьба все замечания, предложения и пожелания по поводу выложенных ps-фонтов и данного README направлять Евгению Демидову