忍者ブログ
Home > LXQt > qterminal における East Asian Ambiguous の取扱いについて(あるいは、封印されたコードについて)

rago1975の部屋

このブログは管理人が個人的に興味がある事項を書き留めておくメモみたいなものです。当面は、Manjaro Linux関係の記事が中心になります。

qterminal における East Asian Ambiguous の取扱いについて(あるいは、封印されたコードについて)

先日、qterminalを使いこなす。という記事を書いて、そこで、qtermwidgetのソースコードに変更を加えることによって、qterminal で「※」「☆」といった全角記号を表示させる方法を書きました。この方法を使えば、vimでambiwidthを設定することができます。しかし、前回書いた方法は、ちょっと泥縄的だったと思います。今回、もう少し筋の通ったやり方にします。

qtermwidget のソースコードはgithub上にあるのですが、実際に文字の種類による文字幅を定義しているのは lib/konsole_wcwidth.cppというファイルです。前回の記事では、このファイルの130〜138行目のところに色々な文字を追加していました。今回はこの場所はそのままにしておきます。

実は、このファイルの142行目から216行目にかけて、「#if 0」でコメントアウトされた部分があります。この部分が上述の「※」「☆」等を含むいわゆるEast Asian Ambiguous カテゴリー(wikipediaの記述)に属する文字の幅を全角として処理するコードになります。わざわざコードを書いたうえで、「#if 0」で封印している事情は、詳細は分からないのですが、東アジア以外ではこれらの文字は半角扱いされるので敢えて適用しない、という事なのだと思います。
「#if 0」を外して、他のファイルも一部修正してビルドすると、きちんと全角文字が表示され、vimのambiwidthを設定することができるようになりました。修正箇所はこの通り

それはさておき、わざわざ手動でビルドするのは大変です。上記の経緯を考えると、「#if 0」を外す形でPull request を出すのも、通らなさそうです。

やり方としては、今回の変更を含むソースコードを「qtermwidget-cjk-patched-git」みたいな適当な名前でパッケージ化して、AURに掲載して配布するのが、多分一番手っ取り早いと思います。(AURへの掲載については、私がこれから勉強しなければならないので、ちょっと時間がかかると思いますが。。)


PR

コメント
お名前
タイトル
メールアドレス
URL
コメント
パスワード

プロフィール

HN:
rago1975 (Takefumi Nagata)
HP:
性別:
男性
自己紹介:
熊本在住の一般人です。Manjaro Linux関係の翻訳などを少々やっています。
twitter: https://twitter.com/rago1975

カレンダー

06 2017/07 08
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

P R