Re: xemacs и псевдографика.
[email protected] (Nickolay Pakoulin)
| Newsgroups | gmane.emacs.xemacs.user.russian |
|---|---|
| Message-ID | <[email protected]> |
Примерно понятно, что происходит. Все дело в Муле.
Если посмотреть на таблицу перекодировки для koi8-r в cyrillic.el, то можно
обнаружить, что коды, соответствующие псевдографике, переводятся в какие-то
странные крякозябры стандарта iso-2022-7, причем из области japanese-jisx0208,
или китайского BIG5, которые в тексте отображаются тильдами из-за отсутствия
шрифтов. То есть, до кириллических шрифтов дело даже не доходит. Если бы в
системе были установлены шрифты для японского языка, то псевдографика
рисовалась бы по-японски :)
Самое простое решение -- расковырять перекодировку, и коды (codepoints)
псевдографики (рамки и кирпичики) заменять на палоки ( | + - ) и
решётки ( # ).
Тут есть один большой недостаток -- у данного преобразования нет обратного.
При сохранении файла с псевдографикой на том месте, где были значки
псевдографики, будут соответствующие заменители ( плюсики - минусики ).
Возможны и другие решения, но мне пока не удалось сделать так, чтобы при
сохранении файла с псевдографикой псевдографика сохранялась корректно.
К письму приложен снимок с экрана эталонного файла с псевдографикой.
Коля.
(defvar koi8-pgraph-range-table nil)
(unless koi8-pgraph-range-table
(setq koi8-pgraph-range-table
(let ((table (make-range-table)))
(put-range-table 128 128 ?- table)
(put-range-table 129 129 ?| table)
(put-range-table 130 138 ?+ table)
(put-range-table 139 146 ?# table)
(put-range-table 147 147 ?+ table)
(put-range-table 148 149 ?# table)
(put-range-table 155 155 ?+ table)
(put-range-table 160 160 ?- table)
(put-range-table 161 161 ?| table)
(put-range-table 162 162 ?+ table)
(put-range-table 164 178 ?+ table)
(put-range-table 180 190 ?+ table)
table)))
(defun koi8-pgraph-remap-table (table &optional save-data)
(loop for i from 128 to 190 do
(if (get-range-table i koi8-pgraph-range-table)
(aset table i (if save-data (get-range-table i koi8-pgraph-range-table)
i))))
table)
(koi8-pgraph-remap-table koi8-pgraph-decode-table t)
(define-ccl-program ccl-decode-koi8
`(3
((read r0)
(loop
(write-read-repeat r0 ,koi8-pgraph-decode-table))))
"CCL program to decode KOI8.")
intro: "SS" == Sergey Sholokhov <[email protected]> writes:
SS> ## On Mon, 20 Oct 2003 13:59:35 +0400
SS> ## you wrote:
NP> Пришли, пожалуйста, кусок текста с указанной псевдографикой, номер версии
NP> и платформу для GNU Emacs и XEmacs, в которых ты делал снимок с экрана.
NP> Я попробую разобраться, но не обещаю сделать это скоро :(.
NP> Коля.
SS> Версии такие GNU Emacs 21.3.50.2 из CVS XEmacs 21.5 (beta16) "celeriac"
SS> (+CVS-20031013) [Lucid] (i686-pc-linux, Mule) XEmacs 21.4 (patch 14)
SS> "Reasonable Discussion" [Lucid] (i686-pc-linux, Mule)
SS> на xemacs'ах что на том что 4-ом что на 5-ом все одинаково.
SS> вот кусок текста:
SS> -- WBR, Sergey Sholokhov ( X A H 7 E P ) np -> (null)
hack.png
(image/png, 2.7 KB) - not displayed