チラ裏品質
とりあえず気になる問題
この動作がちと気に入らなかった。
まず、実はiTerm2においてもFAQレベルの問題である。
Q: I'm a Chinese, Japanese, or Korean user and some characters don't line up because they are not rendered in double-width.
A: Go to Preferences->Profiles->Text and change the setting of "Treat ambiguous-width characters as double-width."
で、これをやろうとすると……最近のバージョン(筆者環境: Build 3.0.15)ではこれが「Not recommended」になっている。
追記(2019-10-31): 3.3.4 ではPreferencesの構成が変わって見た目には「not recommended」が消えたが、チェック非推奨という点では差はない。
実際、効果があると同時に頂けない副作用がある。
これは良い結果。ところが履歴をたどると
明らかにバグっている。
説明が非常にめんどくさいので端折るが「…」で扱いがおかしくなる。上のチェックを外すと半角として扱われ、一貫性がある。
上はたまたまPythonだが (そもそもUnicodeの別のことを調べてた)、 echo ★
で遊んでいても酷いことは起こるものだ。
オプションチェックなしだと、表示がおかしいだけで動作は一貫していて予測はできる。一方全体としてカーソルの動作に一貫性がなくなる。
どちらでも100%まともに動作しているように見えない点は変わらないが「なぜ」かは分からない(今のところ興味もない)。
東アジアの文字幅
こんなのがある。
Unicode® Standard Annex #11 EAST ASIAN WIDTH
Unicode 10.0.0
2017-05-14
...
Revision 33
Reissued for Unicode 10.0.0.
Annexとは「付録」の意味だ。
A Unicode Standard Annex (UAX) forms an integral part of the Unicode Standard, but is published online as a separate document. The Unicode Standard may require conformance to normative content in a Unicode Standard Annex, if so specified in the Conformance chapter of that version of the Unicode Standard. The version number of a UAX document corresponds to the version of the Unicode Standard of which it forms a part.
いやーつまりだいぶややこしい話だな? (バカ
「プロポーショナルフォントとかそういう世界で全角と半角の二種類に綺麗にぶった切れるなどとついぞ思いなさんな」みたいなオーラがある。
おそらくiTerm2に欧米圏的に重要度が低いambiguous-widthな文字の扱いにバグがある。また、「Monacoフォントの★が本来半角であって欲しいところで堂々と全角を出してくる」という問題にも同時に思える。
正確な原因は結局よく分からんが、そもそも本でちら見して調べたにしてちょっとややこしすぎるのでここでおしまいにする。少なくとも「例によってUnicodeは複雑だなぁ」と思い直すに至る。
とりあえず、カーソルの動作があまりにもすんごく異様になるのでこのオプションは当座は付けないことにした。どうせ見た目だけの問題だ。
ターミナルそれぞれで設定があることが多いようだ。まともに動作するかは分からないが他のターミナルソフトウェアでも、気になったらプリファレンスあたりを確認してみると良い (「曖昧幅の文字」とかそういう表現をしているようだ)