New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Win32: 異体字が正しく表示されない #1106

Closed
k-takata opened this Issue Oct 12, 2017 · 8 comments

Comments

Projects
None yet
2 participants
@k-takata
Member

k-takata commented Oct 12, 2017

質問・報告の内容

Windows 10 にて IVS (異体字セレクタ) を使った異体字が正しく表示されません。

サンプルテキスト (ivs_test.txt):

葛 (U+845B)
葛󠄀 (U+845B E0100)
葛󠄁 (U+845B E0101)

実行方法:

gvim -N -u NONE -i NONE --cmd "set enc=utf-8 gfn=MS_Gothic:h20" ivs_test.txt

表示結果:

ivs_before_fix

字形が3つとも変化が無い上に、IVSが四角い枠で表示されてしまっています。

パッチ:
https://bitbucket.org/k_takata/vim-ktakata-mq/src/d71a28fb36b97a57c58d5df31ca475b8acbab680/win32-fix-composing-chars.patch?at=default&fileviewer=file-view-default

パッチ適用後:

ivs_after_fix

2つめの字形が残りと違うことが確認できます。

Vimのバージョン

8.0.1185

OSの種類/ディストリ/バージョン

  • Windows 10 Pro 64bit (10.0.15063)

関連パッチ

#293 (7.3.781)

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Oct 12, 2017

Member

Windows版の文字表示は、合成文字が見つかると、ベースの文字の上に合成文字を重ね合わせて描画する処理になっていました。それをまとめて1回で描画するように変更しています。

Member

k-takata commented Oct 12, 2017

Windows版の文字表示は、合成文字が見つかると、ベースの文字の上に合成文字を重ね合わせて描画する処理になっていました。それをまとめて1回で描画するように変更しています。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Oct 13, 2017

Member

よく考えたら、今までは IVS だけでなく、合成用濁点・半濁点もダメでした。

が (U+304C)
が (U+304B 3099)
か゚ (U+304B 309A)

ば (U+3070)
ば (U+306F 3099)
ぱ (U+3071)
ぱ (U+306F 309A)
Member

k-takata commented Oct 13, 2017

よく考えたら、今までは IVS だけでなく、合成用濁点・半濁点もダメでした。

が (U+304C)
が (U+304B 3099)
か゚ (U+304B 309A)

ば (U+3070)
ば (U+306F 3099)
ぱ (U+3071)
ぱ (U+306F 309A)
@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Oct 13, 2017

Member

ちなみに一番下で ga した時の表示もおかしい気がする。

異体

Member

mattn commented Oct 13, 2017

ちなみに一番下で ga した時の表示もおかしい気がする。

異体

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Oct 13, 2017

Member

ga は合成用文字もばらして1文字ずつ表示させますから、ある意味仕方がない気がしますね。
対策するとしたら、合成用文字は表示しないようにするか、1個または2個の半角スペースあるいは全角スペースと合成させて表示するか…。

Member

k-takata commented Oct 13, 2017

ga は合成用文字もばらして1文字ずつ表示させますから、ある意味仕方がない気がしますね。
対策するとしたら、合成用文字は表示しないようにするか、1個または2個の半角スペースあるいは全角スペースと合成させて表示するか…。

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Oct 13, 2017

Member

あ、いえ。ここ、こうじゃないかなと。

異体

Member

mattn commented Oct 13, 2017

あ、いえ。ここ、こうじゃないかなと。

異体

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Oct 13, 2017

Member

合成用文字をつけるべきものではないものにつけているせいで、レンダラーの特性上、表示位置がずれているだけだと思います。GDIとDirectWriteを切り替えたり、フォントを変更すると表示が変わったりしますし。
半角スペースあるいは全角スペースと合成させてもあまりうまくいかないようです。

Member

k-takata commented Oct 13, 2017

合成用文字をつけるべきものではないものにつけているせいで、レンダラーの特性上、表示位置がずれているだけだと思います。GDIとDirectWriteを切り替えたり、フォントを変更すると表示が変わったりしますし。
半角スペースあるいは全角スペースと合成させてもあまりうまくいかないようです。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata
Member

k-takata commented Oct 14, 2017

Posted: vim/vim#2206

@k-takata

This comment has been minimized.

Show comment
Hide comment
Member

k-takata commented Oct 28, 2017

@k-takata k-takata closed this Oct 28, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment