mule-ja
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mule-ja:43] bug report


From: ynyaaa
Subject: [mule-ja:43] bug report
Date: Sun, 07 Jun 2015 00:32:47 +0900
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (windows-nt)

矢木です。

バグレポートなどをいくつか。
実行環境は以下の通りです。

GNU Emacs 24.5.1 (i686-pc-mingw32) of 2015-04-11 on LEG570
Microsoft Windows [Version 6.0.6002]

■■■■■■■■■■■■■■■■
1. fringe の表示について

define-fringe-bitmap に渡すデータは左詰めで指定しなければ
正しく表示されません。
また、9ドット幅以上の場合は上位バイトと下位バイトを
入れ替えないと期待通りに表示されません。

以下の式では14x14の正方形を指定する場合のサンプルです。

(let ((w 14) (h 14)
      ;; 同心正方形
      (v [
          #b11111111111111
          #b10000000000001
          #b10111111111101
          #b10100000000101
          #b10101111110101
          #b10101000010101
          #b10101011010101
          #b10101011010101
          #b10101000010101
          #b10101111110101
          #b10100000000101
          #b10111111111101
          #b10000000000001
          #b11111111111111
          ]))
  (if (<= w 8)
      ;; 8ビット幅で左詰めにする
      (setq v (apply #'vector (mapcar (lambda (x) (lsh x (- 8 w))) v)))
    (setq v (apply #'vector
                   ;; 16ビット幅で左詰めにして、バイトを上下入れ替え
                   (mapcar (lambda (x)
                             (logior (logand (lsh x (+ (- 16 w) 8)) #xFF00)
                                     (logand (lsh x (- (- 16 w) 8)) #x00FF)))
                           v))))
  (define-fringe-bitmap 'test v h w)
  (set-window-fringes nil w w)
  (insert "<" (propertize "x" 'display '(left-fringe test)) ">\n")
  )

■■■■■■■■■■■■■■■■
2. set-char-table-range で値が破壊される

set-char-table-range で大きい範囲を指定すると終了値を超えた値が
変更されてしまう場合があります。

(let ((tab (make-char-table nil)))
  (set-char-table-range tab (cons #x10000 #x20000) 'test)
  (aref tab #x20001))
=>test

■■■■■■■■■■■■■■■■
3. char-script-table に値を持たない文字

以下の範囲の文字に対して char-script-table の値が nil です。

03F4-03FF ; GREEK
1A01-1A1F ; BUGINESE
9FB0-9FCC ; CJK
FE00-FE0F ; VARIATION SELECTOR
FE10-FE19 ; PRESENTATION FORM FOR VERTICAL
FE50-FE6B ; SMALL FORM VARIANTS
FF60      ; FULLWIDTH RIGHT WHITE PARENTHESIS
FFA0-FFDC ; HALFWIDTH HANGUL
FFE8-FFEE ; HALFWIDTH
FFF9      ; INTERLINEAR ANNOTATION ANCHOR
FFFA      ; INTERLINEAR ANNOTATION SEPARATOR
FFFB      ; INTERLINEAR ANNOTATION TERMINATOR
FFFC      ; OBJECT REPLACEMENT CHARACTER
FFFD      ; REPLACEMENT CHARACTER
106C0-10767 ; LINEAR A
E0000-E007F ; TAG
E0100-E01EF ; VARIATION SELECTOR

■■■■■■■■■■■■■■■■
4. char-script-table の値が han の文字について

以下の文字に対しては char-script-table の値が han となっていますが、
symbol または cjk-misc が適当だと思います。

3200-32FF ; Enclosed CJK Letters and Months
3300-33FF ; CJK Compatibility
4DC0-4DFF ; Yijing Hexagram Symbols
FE30-FE4F ; CJK Compatibility Forms
1F200-1F2FF ; Enclosed Ideographic Supplement

■■■■■■■■■■■■■■■■
5. char-script-table の値のシンボル名について

Unicode で Myanmar とされる文字に対するシンボルが
burmese になっていてわかりにくいと思います。

1000-109F ; Myanmar
A9E0-A9FF ; Myanmar Extended-B
AA60-AA7F ; Myanmar Extended-A

Old Italic に対応するシンボルが olt-italic になっています。

10300-1032F ; Old Italic

■■■■■■■■■■■■■■■■
6. Google Noto Fonts の利用について

Google Noto Fonts での表示を試みたのですが、以下の文字については
表示できませんでした。
上4つについてはブロック全体が表示できていません。
Ethiopic については ETHIOPIC DIGIT のみ表示できませんでした。

Nko       07C0-07FA
Samaritan 0800-082D 0830-083E
Mandaic   0840-085B 085E
Mongolian 1800-180E 1810-1819 1820-1877 1880-18AA
Ethiopic  1369-137C

Old Italic については
(set-fontset-font nil 'olt-italic "Noto Sans Old Italic")
ではダメで
(set-fontset-font nil 'olt-italic
 "-*-Noto Sans Old italic-*-*-*-*-*-*-*-*-*-*-*-*")
で指定する必要がありました。
("Noto Sans Old" の italic 体と解釈されてしまうため)

10300-1032F ; Old Italic

■■■■■■■■■■■■■■■■
7. \ce での検索

次の範囲について char-categoy e(Ethiopic) が設定されていません。

AB00-AB2F ; Ethiopic Extended-A

探せば類例はもっとあると思います。

■■■■■■■■■■■■■■■■
8. format-string の text-property がずれる

書式指定文字列に text-property が付与されていて、
書式指定によってスペースが追加される場合に
返り値の text-property の位置がおかしくなります。

(let ((form "%8s:X"))
  (put-text-property (- (length form) 2) (- (length form) 1) 'test "TEST" form)
  (format form 1))
=> #("       1:X" 0 1 (test "TEST"))

■■■■■■■■■■■■■■■■

おわり



reply via email to

[Prev in Thread] Current Thread [Next in Thread]