hns - 日記自動生成システム - Version 2.19.9

先月 2008年03月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2008年03月26日(水) 旧暦 [n年日記] [更新:"2008/03/26 11:02:42"]

#1 [Emacs] tcode

最近
列 + 台 = 殆 
が合成されないとか、いくつか合成されない文字があって 何故かなと思っている。 bushu.rev には次の行はある
殆歹台
これもある。
列歹リ

22.0.50:

22.0.50 ( = 22.1) でも合成しないが、 ~/T-Code2 を消して、mkdir ~/T-Code2 してから だと合成してくれる。(消さなくても大丈夫のような気がする)。

23.0.60:

/usr/local/share/tc/bushu.index2 も見えなくしてあったので
ファイル /usr/local/share/tc/bushu.index2 が存在しません。
と言われる 2007/12/24 の日記 を見て入直し。
   105  9:17    tar zxf /e/tera/j/distfiles/tc-2.3.1.tar.gz
   106  9:17    cd tc-2.3.1/
   107  9:18    patch -s -p1 < ~/Mail/ml/tcode/1545
   108  9:18    patch -s -p1 < ~/Mail/ml/tcode/1528
   109  9:18    cd etc
   110  9:18    mv bushu.rev bushu.rev-orig
   111  9:18    cat bushu.rev-orig symbol.rev | sort > bushu.rev
   112  9:18    cd ..
   113  9:18    ./configure --with-lispdir=/usr/share/emacs/site-lisp/tc-2.3.1
   114  9:19    make
   115  9:20    sudo make install
   116  9:20    emacs .
   117  9:21    mkdir ~/T-Code2
まだだめだな ..... こんな字が出ているが:
config.status: WARNING: etc/Makefile.in seems to ignore the --datarootdir setting
これは多分関係ないとして、文字を指す処理に何か変更があったと思われる。
列 + 列 = 歹
となるか、ならないのか、が違う。今回はならない。でも、考えたら
誠 + 誠 = 言
となるのだから、データ依存で、単純な論理の問題ではない。でも一応 見るのは、その辺からかな tc-bushu.el:
(defun tcode-bushu-convert-preceding-chars (&optional arg)
  "ポイントの前の2文字を合成する。"
...
		      (tcode-bushu-compose-two-chars prev-prev-char
						     prev-char)))

tcode-bushu-compose-two-chars:

;;;
;;; 部首合成変換用インタフェース
;;;

;;;###autoload
(defun tcode-bushu-compose-two-chars (char1 char2)
  "CHAR1とCHAR2を合成する。"
  (tcode-bushu-load-dictionary)
  (let* ((str (concat (char-to-string char1)
		      (char-to-string char2)))
	 (cache (get (intern-soft str tcode-stroke-table) 'compose)))
    (or (and tcode-bushu-use-cache
	     cache)
	(let ((selected-char (tcode-bushu-compose (list char1 char2))))
	  (when selected-char
	    (put (intern str tcode-stroke-table) 'compose selected-char)
	    selected-char)))))
(defun tcode-bushu-compose (char-list)
  "Compose a character from characters in CHAR-LIST.
See also `tcode-bushu-functions'."
  (catch 'found
    (mapcar
     (lambda (function)
       (let ((r (funcall function char-list)))
	 (if r
	     (throw 'found (car r)))))
     tcode-bushu-functions)
    nil))
これはちょっと分り難い :-) が、多分 tcode-bushu-functions にある関数を 順に試して行く、ということらしい:
(defvar tcode-bushu-functions
  '(tcode-bushu-compose-explicitly
    tcode-bushu-complete-compose-set
    tcode-bushu-complete-diff-set
    tcode-bushu-strong-compose-set
    tcode-bushu-strong-diff-set
    tcode-bushu-weak-diff-set
    tcode-bushu-weak-compose-set)
  "* A list of functions to apply to characters for a character composition.")
データ依存なのだから、○と×を挙げていく、というのも一つの方法か。

22.0.50 では○で、23.0.60 ではだめなもの:

階 + ア = 皆
屋 + 由 = 届
広 + 車 = 庫
列 + 台 = 殆
列 + 列 = 歹
どちらも○なもの
比 + 白 = 皆
局 + 由 = 届
応 + 車 = 庫
残 + 台 = 殆
結果の違うもの
            22.0.50  23.0.60
残 + 残 =   戔       歹



最近の日記
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
2024年02月29日
opendkim and senmail
2024年01月24日
chat/iam 0.0.8
2024年01月21日
uselocale vs setlocale (textproc/R-readxl)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)