[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: unicode font
- X-ml-count: 6766
- Subject: Re: unicode font
- From: YAGI Tatsuya <ynyaaa@xxxxxxxxx>
- Date: Mon, 31 Oct 2005 22:39:33 +0900
- User-agent: T-gnus/6.17.3 (based on No Gnus v0.3) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.3 Emacs/21.4 (i386-mingw-nt5.1.2600) MULE/5.0 (SAKAKI) Meadow/2.11-pre (ASAGAO)
矢木です。
>unicode の bdf を使って iso-8859-* などの文字を表示したいのですが、
>どうすればいいのでしょうか?
>そもそも mule-ucs は必要なのでしょうか?
バージョンを書くのを忘れましたが、一応 meadow3 を念頭に置いています。
もっとも、meadow2 でも meadow3 でも同じ状況ですが。
自分で色々と試行錯誤してみて、末尾の式を評価すれば
ascii, latin-iso8859-1, latin-iso8859-2, mule-unicode-0100-24ff
が表示できるはずだと思うのですが、どうもうまくいきません。
問題点は二つあって
・latin-iso8859-2, mule-unicode-0100-24ff の一方のエンコーダが
他方にも使われてしまう。
例えば ascii 以外の文字を一度も表示していない状態で
latin-iso8859-2 の文字を表示してから mule-unicode-0100-24ff
の文字を表示させると mule-unicode-0100-24ff の文字が 第一バイト目
だけを見て latin-iso8859-2 と同じ文字を表示するようになります。
逆に mule-unicode-0100-24ff を先に表示させると
mule-unicode-0100-24ff は正常に表示されますが、
latin-iso8859-2 の文字は ((encoding . encode-unicode-font))
を指定した時と同じような化け方をした表示になります。
・latin-iso8859-2 の文字が一部しか表示されない。
(list-charset-chars 'latin-iso8859-2) を評価すると文字の一覧が
見られますが、latin-iso8859-1 と共通する文字が表示されません。
おわり
(let ((bdf1 "c:/app/fonts/bdf/efont-unicode-bdf-0.4.2/h16.bdf")
(name "test1-uni16"))
(define-ccl-program ccl-encode-8859-2-to-ucs-font
`(0
((r1 = r1 [
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
160 260 728 321 164 317 346 167 168 352 350 356 377 173 381 379
176 261 731 322 180 318 347 711 184 353 351 357 378 733 382 380
340 193 194 258 196 313 262 199 268 201 280 203 282 205 206 270
272 323 327 211 212 336 214 215 344 366 218 368 220 221 354 223
341 225 226 259 228 314 263 231 269 233 281 235 283 237 238 271
273 324 328 243 244 337 246 247 345 367 250 369 252 253 355 729
])
(r1 >8= 0)
(r2 = r7)
)))
(w32-regist-font-encoder 'encode-8859-2-to-ucs-font
'ccl-encode-8859-2-to-ucs-font 2)
(w32-regist-font-encoder 'encode-unicode-font 'ccl-encode-unicode-font 2)
(w32-add-font
name
`((spec
((:char-spec ascii :height any) strict (bdf-font ,bdf1))
((:char-spec latin-iso8859-1 :height any) strict (bdf-font ,bdf1)
((encoding . 1-byte-set-msb)))
((:char-spec latin-iso8859-2 :height any) strict (bdf-font ,bdf1)
((encoding . encode-8859-2-to-ucs-font)))
((:char-spec mule-unicode-0100-24ff :height any) strict (bdf-font ,bdf1)
((encoding . encode-unicode-font)))
)))
(set-frame-font name))