Конвертер файлов из ChiWriter в Microsoft Word

Скачать конвертер (62 KB, ZIP archive)


Инструкция к программе

0. Общие замечания
1. Что программа делает
2. Что программа умеет и чего не умеет
    2.1. Что программа умеет
    2.2. Чего программа не умеет
3. Описание шрифтов
    3.1. Общие замечания
    3.2. Описание формата файлов *.WIN
4. Комплект поставки
5. Разное

0. Общие замечания

0.1. Программа писалась для себя. Этим объясняются убогость диагностики и скудость комментариев в исходном тексте. C'est la vie.

0.2. Как все кайрайтерное, программа требует муторной настройки на шрифты. Cоветую не лениться: даже если в полученной Вами пачке файлов есть описания для шрифтов с Вашими именами - проверить еще раз, те ли это шрифты. В шрифтах от ChiWriter стандартности столько же, сколько в осколках от чашки: если не от одной и той же - никогда не подойдут, как бы похожи ни были.

0.3. Программа делалась для применения в конкретной задаче: перевод в приличный вид очень большого массива текстов по лингвистике. Отсюда - внимание к текстовому оформлению и небрежная работа со сложными индексами. Это несложно исправить; желающие - читайте исходный код.

0.4. Все замечания, предложения и т.п. просьба направлять мне - Николаю Григорьеву по адресу grig@iitp.ru. Вправду, не стесняйтесь, обращайтесь - буду рад. Ну а если кто-то вдруг решится добавить недостающие функции (обработку таблиц, составных символов и т.п.) - большая просьба поделиться исходным текстом.

0.5. (disclaimer). Вот Вам программа, вот Вам текст, делайте со всем этим что хотите. Но если что-нибудь случится - я не виноват! Единственная просьба: будете кому-нибудь ее давать - обязательно отдайте исходный текст и эту вот инструкцию.

1. Что программа делает

Программа по мере сил переводит файлы из формата ChiWriter 3.1* в формат RTF (в варианте Word 6.0 / Word 95 / Word 97). У командной строки - два аргумента: имя файла ChiWriter (обязательный) и имя выходного файла (необязательный). Никакого расширения по умолчанию для входного имени нет, так что расширение тоже надо указывать. Если имя выходного файла не задано, то оно делается из имени входного заменой его расширения на .RTF.

Для работы программы сам ChiWriter не нужен, но нужно описание используемых ChiWriter'ных шрифтов. Как его составить и куда положить - см. п. 3.

2. Что программа умеет и чего не умеет

2.1. Программа умеет:

2.2. Программа не умеет:

3. Описание шрифтов

3.1. Для шрифта с именем ABCXYZ файл описания должен называться ABCXYZ.WIN (т.е. приделывается расширение .WIN) и располагаться либо в текущей директории, либо в директории ChiWriter (т.е. обозначенной в переменной окружения CHIFILES). Если Вам надо просто перекодировать много файлов в одном месте - удобнее первое (поскольку в директории ChiWriter эти файлы потом не найдешь); если это постоянно надо делать в разных директориях - второе. По переменной PATH программа и не думает что-либо искать: если Вам надо - добавьте сами. Кроме того, нужно обязательно определить два вспомогательных файла описания шрифта: STANDARD.WIN (он же по совместительству файл стандартного шрифта) и LACKING.WIN (файл отсутствующего шрифта). Они нужны для аварийной работы.

STANDARD.WIN используется для борьбы с ошибкой ChiWriter'а, состоящей в том, что шрифт используется, а имя его в файл не записывается. Это довольно распространенное явление, хотя его трудно заметить, когда сидишь все время на одной машине с одним и тем же CONFIG.PAR. Если в ходе работы программы Вы получаете сообщение типа "Font F49 has no name; using STANDARD instead", то это как раз ваш случай. Если в Вашем тексте символов из F49 мало, можете проигнорировать сообщение; тогда вместо F49 подставится STANDARD. Если вам не все равно, чините Ваш ChiWriter'ный файл: откройте его ASCII-редактором и найдите в его начале строчки типа "\U! STANDARD". Просмотрите все строчки, начинающиеся на \U: нет ли среди них строчки, в которой не хватает имени шрифта. Если такое есть - впишите. (Номер шрифта можно выяснить самой программой перекодировки: она жалуется на такие случаи в порядке их появления в файле).

LACKING.WIN используется для борьбы с неописанными шрифтами (т.е. если ABCXYZ.WIN не найден). Сделайте его таким, чтобы потом легко найти все вхождения его результатов в готовом файле Word: см. имеющийся LACKING.WIN.

3.2. Формат файлов *.WIN

Файл описания шрифта - обычный ASCII файл. В нем бывает три типа строк:

Комментарий - любая строка, начинающаяся с двух диезов (##).

Параметр - строка, имеющая вид: <имя> = <значение> Пробелов в начале строки быть не должно. Строчные и заглавные буквы не различаются.

Допустимые параметры и их возможные значения:

FONT=<имя шрифта Windows> [, <номер набора символов>]
Задает шрифт Windows, которым будут передаваться символы данного шрифта ChiWriter. После имени шрифта через запятую можно приписать номер символьного набора (charset); для русских шрифтов Windows номер набора = 204. Если charset не указан, то используется 0 (он же Western).

В Word 6.0/95 можно было не указывать номер набора для шрифтов типа Arial Cyr (т.е. определенных через Font Substitutes). К сожалению, Word 97 в этом месте содержит ошибку (игнорирует Font Substitutes), и обойтись без явного указания charset не удается. Поэтому рекомендуется приписывать 204 ко всем именам русских шрифтов.

ATTR=none
ATTR=Bold
ATTR=Italic
ATTR=Underline
ATTR=Shadow
ATTR=Outline
ATTR=Strike
Атрибуты шрифта Windows (кажется, ясно, какой где). Можно писать сразу несколько через запятую.

SIZE=<кегль шрифта Windows>
Размер шрифта (тот, который возникнет в Word)

INDEX_SIZE=<кегль шрифта Windows>
Размер шрифта для случая, когда символ возникает не в основной строчке, а в индексе. В ChiWriter сплошь и рядом индексы того же размера, что и основной текст; при переносе их можно сделать поменьше.

DEFSYMBOL=<символ>
Символ, используемый для всего, что не упомянуто в таблице перекодировки (см. ниже). Формат - тот же, что и для выходных символов в этой таблице.

Любая строка, не начинающаяся со знака комментария или ключевого слова-параметра, считается относящейся к таблице перекодировки. В ней должно быть записано одна или несколько пар перекодировки. Пара состоит из входного символа (того, который в ChiWriter) и выходного символа. Входной символ задается сам собой. Выходной можно написать либо прямо, либо в виде кода. Код должен содержать ровно три цифры, интерпретируемые как десятичное число (так, как это принято в файле описания принтера для ChiWriter). Есть также два специальных символа - пробел (SP или SPACE) и неразрывный пробел (NBSP или NONBREAK-SPACE).

Способ интерпретации файла описания следующий:

Рекомендуется посмотреть, как сделаны файлы STANDARD.WIN (обычный латинский шрифт), BOLD__R.WIN (полужирная кириллица) и MATH.WIN (спецсимволы); многое станет ясно. Полезно также глянуть (и, если надо, переделать) LACKING.WIN.

Просматривать и редактировать эти файлы проще под Windows - через Notepad (Блокнот): под DOS'ом таблица перекодировки кириллицы читается с трудом, а под Windows имеет вполне прозрачную структуру. Кроме того, опыт показывает, что при составлении новых описаний приходится часто лазить в Character Map (Таблицу Символов).

4. Комплект поставки

В архиве Chi2Word.zip содержатся следующие файлы:

5. Разное

5.1. Если Вам часто приходится перекодировать файлы и Вы составили приличное описание Ваших шрифтов, то под Windows 95/NT 4.0 удобно бывает добавить конвертирование в контекстное меню Explorer (Проводника) для файлов ChiWriter, так чтобы вызывать конвертер правой кнопкой мышки. Те, кто не знает, как это делается - могут спросить у меня.

5.2. Программа написана на чистейшем С и откомпилирована Visual C++ 5.0 как консольное приложение Win32. Страдальцы, сидящие на 286 машинах под DOS, могут перекомпилировать его в Turbo C 2.0 (на котором эта программа во время оно и была создана): работать будет, я проверял. Не забудьте только раскомментировать #include <alloc.h>.