マイ文字オブジェクト

守岡知彦 / MORIOKA Tomohiko tomo @ kanji.zinbun.kyoto-u.ac.jp
2003年 2月 3日 (月) 18:40:25 JST


>>>>> In [chise-ja : No.00153] 
>>>>>	"藤原さん" = Yoshi Fujiwara <yfujiwar @ atr.co.jp> wrote:

藤原さん> さて,私がやりたい「マイ部品」作成なのですが,今日江渡さんと
藤原さん> 話していて疑問に上がったことを質問させて下さい.例がよくない
藤原さん> かも知れませんが,例えば「験」「倹」「検」などの形声文字の右
藤原さん> 側にあらわれる部品を「マイ部品」として新しく定義したいと仮に
藤原さん> します.

藤原さん> ruby/chise では define-char に相当することが
藤原さん>   char = Character.new( 0xe0000000 )
藤原さん>   char.my-attribute = "Ken"
藤原さん> という形でできるらしいです.この番号0xe0000000ですが,諸橋第
藤原さん> 0巻の,つまり空いている番号を使うということでとりあえず使え
藤原さん> るようなのです.でももっとたくさん「マイ文字」を定義したい人
藤原さん> は,どの番号を使えばよいのでしょうか.もちろんそんなには造り
藤原さん> ません.

主な空き地としては、

U+E000 〜 U+F8FF	(でも呪われるかも)
00群0F面
63群〜7F群

です。

先日の『2次会』で江渡さん、上地さんと話して、使用済文字オブジェクト回
収機構を実装する前でもとりあえずワイルドに system-char-id 自動割り当て
領域を設定してはどうかということになりました。どのぐらいの個数を用意す
れば良いのかは判らないのですが、とりあえず、7F群 (2^24 個) をそのため
の領域とするのはいかがでしょうか?


藤原さん> またXEmacs/chise では,define-char はユーザがどんどん使える
藤原さん> のでしょうか.使えるとすると超簡単な例を教えていただけません
藤原さん> か.

はい。但し、現状では CCS 属性も =>ucs 属性もない場合には define-char 
は nil を返すというひどい実装になっているので、現状では

(define-char
  `((ucs . ,(+ (lsh #x7F 24)
	       1))
    (foo . hoge)
    (bar . geho)))

みたいに嘘の ucs 属性を付けるか

(let ((char-obj (int-char (+ (lsh #x7F 24) 1))))
  (put-char-attribute char-obj 'foo 'hoge)
  (put-char-attribute char-obj 'var 'geho)
  char-obj)

みたいに put-char-attribute を使って自前で作るかになります。

とはいえ、近日中に system-char-id 自動割り当て機構(但し、ゴミ回収無し)
を入れます。その場合は、

(define-char
  `((foo . hoge)
    (bar . geho)))

でいけるようになる予定です。

-- 
===『幾千億の分子に分かれても ========================================
     決して忘れない。    
     この宇宙が終るまで』              守岡 知彦 (MORIOKA Tomohiko)
====================== Email: <tomo @ kanji.zinbun.kyoto-u.ac.jp> ======




More information about the CHISE-ja mailing list