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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.