О квазирусификации StarOffice

Rate this post

Поскольку StarOffice ныне — один из наиболее развитых офисных комплектов из существующих для Linux, естественным желанием русскоязычного (вне зависимости от пункта пятого) пользователя является пользование его совместно с языком межнационального общения нашей постсоветской Родины. Проблема эта решаема, чему посвящены материалы на сайте Леонида Кантера.

Я в своей заметке также останавливался некогда на этой теме. Однако за прошедшее время получил несколько писем. С одной стороны, авторы ряда из них не сталкивались с теми проблемами, которые имели место быть у меня. С другой — не у всех в итоге получалось как-то научить StarOffice русским буквам. Из чего я заключил, что вопрос этот сохраняет свою актуальность. Почему и решил написать эту заметку.

В ней — исключительно мой личный опыт, полученный на одном-единственном дистрибутиве (Linux Mandrake версий 6 и 7 в русской редакции). Потому я и не рискну давать рекомендации на все случаи жизни. Тем не менее, надеюсь, что кое-что из написанного ниже может быть полезным.

Все сказанное относится к версиям 5.1a и 5.2. Применимо, насколько я знаю, и версии 5.0. С более ранними версиями я дела не имел, но, по слухам, порядок манипуляций там схож.

Разумеется, речь не идет о русификации StarOffice: для текстового процессора это понятие включает в себя и проверку орфографии, и переносы слов. Задача скромнее — просто научить StarOffice воспроизводить на экране и понимать с клавиатуры русские буквы.

Первое, что для этого требуется — наличие русских шрифтов Type 1 в кодировке KOI8 и (для пущей совместимости с Windows) cp1251. Последние необходимы только для версий старше 5.2. В последней русские тексты в windows-кодировке автоматом перекодируются при считывании файла в KOI8.

Мне известно три малых джентльменских комплекта шрифтов (то есть содержащих аналоги микрософтовских Arial, Courier, Times New Roman), работоспособных в StarOffice. Во первых, это шрифты с упомянутого выше сайта, где, кроме того, имеется и пара шрифтов в кодировке cp1251. Во вторых, это шрифты Дмитрия Сорокина и в третьих — Сергея Шарашкина. Ссылки на оригиналы двух последних дать затрудняюсь, но их можно найти, например, через opennet.ru.

Кроме того, они имеются на дистрибутиве Linux Mandrake 7.0/RE. И на сайте «Пингвин при галстуке» есть несколько ссылок на коллекции кириллических шрифтов.

Шрифты Type 1 можно изготовить и самостоятельно, из шрифтов True Type. Для этого пригодны программы типа Fontographer. Я пользовался старой, еще под Windows 3.1, программой FontLabs Rus, которая позволяет (хотя и не самым удачным образом) изменить также кодировку (например, с cp1251 на KOI8).

Разумеется, изготовленные кустарным способом шрифты хуже оригинальных. Однако лучше, чем никакие. Но кардинально проблема исправится, только если производством настоящих кириллических Type 1 шрифтов займется кто-нибудь из профессиональных фонт-дизайнеров. Если кто такие работы ведет или о них знает — сообщите, пожалуйста, благодарность моя не будет знать границ.

Далее, шрифты эти (то есть файлы с расширениями *.pfa или *.pfb) следует установить в нужное место. То есть или в каталог ../office52/share/fonts/type1 (для версии 5.2), ../Office51/fonts/type1 (для версии 5.1) или в систему непосредственно — /usr/lib/X11/fonts/Type1; в последнем случае они будут доступны для всех X-приложений, в принципе знающих о существовании кириллицы. Разумеется, список новых шрифтов должен быть внесен в файлы fonts.dir и fonts.scale (соответствующие add-файлы имеются для всех трех комплектов) и количество шрифтов (первая строка обоих файлов) должно быть приведено в соответствие с новыми реалиями.

Сделать это можно стандартными командами cat:

cat fonts.dir.scale.add >> /usr/X11R6/lib/X11/fonts/Type1/fonts.dir; \ 
cat fonts.dir.scale.add >> /usr/X11R6/lib/X11/fonts/Type1/fonts.scale

или в любом текстовом редакторе. Только не забудьте отключить перенос строк, иначе StarOffice вылетит при первом же обращении к шрифтам.

После этого StarOffice в принципе уже способен воспринимать русские буквы. Однако для пущего эффекта (и тем более для вывода на печать) нужно проделать еще одну операцию: поместить метрики шрифтов в каталог ../soffice52/share/xp3/fontmetrics или ../Soffice51/xp3/fontmetrics (для версий 5.2 и 5.1, соответственно). Ну и должным образом модифицировать файл ../xp3/psstd.fonts, то есть внести туда описания добавленных шрифтов.

До сего времени я пребывал в убеждении (уже не помню, на чем основанном), что StarOffice не работает со шрифтами True Type. Однако в процессе знакомства с версией 5.2 выяснилось, что это не так. Сперва я было решил, что это — новшество, но проверил на версии 5.1 — и оказалось, что и она True Type вполне воспринимает.

Чтобы воспользоваться этим, нужны, естественно, шрифты True Type, причем — в кодировке Unicode (у меня, по крайней мере, ttf в cp1251 он понимать отказался). Малый джентльменский набор таковых, имени Микрософта, включающий Arial, Courier New и Tymes New Roman, виде самораспаковывающегося архива (*.exe) можно взять (бесплатно и вполне легально) с их сайта; ну, и со всяких других мест, о которых сами знаете. Шрифты распаковываются, скажем, на Windows-машине или через wine (говорят, он с этим справиться в состоянии). И записываются в каталог, например, /usr/X11 R6/lib/X11/fonts/ttf.

После этого нужно создать файл fonts.dir. Это можно сделать командой mkttfdir (требуется пакет perlftlib), запущенной из вышеупомянутого каталога со шрифтами. В описании каждого из шрифтов в этом файле будет указана кодировка — iso859-1, например:

arial.ttf -Monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1

Она заменяется на koi8-r вручную или в любом текстовом редакторе (с отключенными переносами слов!)

arial.ttf -Monotype-Arial-medium-r-normal--0-0-0-0-p-0-koi8-r

Затем, шрифты подключаются к системе — в ручную, прописыванием пути к ним в файле /etc/X11/XF86Config и затем, если есть необходимость, через Font Manager делаются доступными для KDE. Или можно воспользоваться командой

chkfontpath --аdd /usr/X11 R6/lib/X11/fonts/ttf

После этого ttf-шрифты видны в списке шрифтов XWindow и KDE. И ими можно пользоваться во всех приложениях, способных работать с кириллицей: в Netscape Navigator, текстовых и html-редакторах и прочих. Здорово облегчает жизнь…

Все, русские буквы на экране StarOffice можно видеть. Однако в списках доступных шрифтов они будут далеко не во всех случаях. Так, ни один из новообретенных шрифтов нельзя установить по умолчанию в StarWriter.

Чтобы решить эту проблему, требуется прибегнуть к Font Substitution из раздела меню Options — General. Что интересно — в списке заменяющих шрифтов можно видеть все доступное системе хозяйство, включая и шрифты True Type, тогда как шрифты заменяемые — только фиксированный набор из поставки (русских среди них, разумеется, нет).

Это неудобство, разумеется, обходимо: достаточно приписать подстановки шрифта в KOI8 вместо, скажем, Times (принятого по умолчанию) и Windows-1251 шрифта (для той же совместимости с MS Office) — вместо чего-нибудь другого штатного, — и все в порядке. Приходится только все время помнить, что говоря Palatino — подразумеваем Times ET, а подразумевая Arial KOI8 — говорим Helvetica. Но к этому — нам не привыкать стать.

При этом в качестве заменяющих шрифтов можно применить не только Type 1, но и True Type, что, повторяю, явилось для меня неожиданностью. Не знаю, будут ли они выводиться на печать (за отсутствием принтера пока не проверял), но уж на экране они видны точно.

Более неприятно, что шрифты русские (Type 1) в StarOffice ведут себя весьма странным образом. Кернинг их принимает совершенно немыслимые формы (вне зависимости от того, включен ли он как таковой или нет). Иные буквы разбегаются на всю строку, а иные — наползают друг на друга, как танки на окопы. В версии 5.1 это было просто стихийным бедствием, проявляясь для всех пропорциональных шрифтов. В результате практически можно было пользоваться только мноширинными шрифтами семейства Courier.

В версии 5.2 положение исправилось ровно на одну треть: прилично стали вести себя и Sans Serife шрифты семейства Helvetica (то есть Arial в терминологии Microsoft). Однако для шрифтов Serife (применяемых обычно в длинных документах) безобразие сохранилось.

Причину этого явления я не знаю. Судя по письмам, с этой проблемой сталкивались далеко не все, кто пытался русифицировать StarOffice. Я грешил и на шрифты Type 1 собственного производства, и на видеокарту (ASUS на TNT2). Однако то же явление отмечалось и на некоторых шрифтах из штатного комплекта StarOffice (разумеется, без намека на кириллицу). И не исчезло со сменой карты на Matrox G400. Можно подозревать, что корень зла где-то в метриках шрифтов, но где конкретно — для меня так и осталось загадкой. Кто разобрался — напишите, пожалуйста, буду весьма признателен.

Справедливости ради нужно сказать, что для русских шрифтов True Type в StarWriter такого эффекта не наблюдается: и Serife, и Sans Serife ведут себя абсолютно пристойно (не говоря уже о моноширинном Courier New). Однако, например, в StarDraw шрифты семейства Times (вне зависимости, Type 1 и True Type), по прежнему смотрятся коряво. Так что проблема в общем виде далека от разрешения…

Хотя только что появилась надежда на ее разрешение — посредством утилиты ttf2pt1. Изготовленные с ее помощью шрифты Type 1 нормально, наконец, смотрятся во всех приложениях. В доказательство чего и привожу следующий скриншот:

Осталось только обучить StarOffice воспринимать русские буквы с клавиатуры. Стандартной русской раскладки для XWindow он не понимает: требуется так называемая «хакерская» раскладка. Обеспечить переключение раскладок можно с помощью программы kkb, входящей в комплект русской редакции Linux Mandrake. Доступна она и отдельно.

Замечу, что если установлена та самая русская редакция Linux Mandrake 7-й версии, необходимости в переключении раскладок нет: при загрузке «неправильного» приложения (кроме StarOffice, это, например, Klyx и, говорят, Applix), такое переключение происходит автоматически, незаметно для пользователя.

Таким образом, StarOffice научился работать с русскими буквами в кодировке KOI8. С cp1251 — немного сложнее. Версия 5.2 в состоянии понять документ, например, из Word, в этой кодировке, но при записи он все равно превратится в KOI8.

Однако, ежели запустить StarOffice с некоторыми параметрами, он прекрасно воспринимает cp1251 с клавиатуры, воспроизводит на экране и пишет в файл. Параметры эти таковы:

LANG=ru_RU.CP1251 _XKB_CHARSET=MICROSOFT-CP1251 /staroffice_path/soffice

Можно оформить это в виде скрипта и при необходимости запускать в свое удовольствие. Работает и с 5.1a, и с 5.2. Конечно, не предел удобства, но — лучше, чем никак.

Попутное наблюдение: StarOffice не воспринимает данных с FAT32-раздела. Даже если тот и монтируется автоматически. Нужно скопировать файл в раздел ext2fs и только потом считывать. Но — тоже не смертельно.

Вот и все, что нужно. Разумеется, настоящей русификацией это назвать нельзя. Но делать русские подписи к картинкам в StarDraw — можно вполне. Правда, повторяю, не могу ручаться, что всего перечисленного достаточно в любом другом дистрибутиве. Но думаю, что для RedHat и его клонов это должно действовать.

admin

Практика работы с залогами на http://allbank.com.ua/ Проверка запретов, истории ДТП по VIN.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *