文字コード総合スレ Part12at TECH文字コード総合スレ Part12 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト856:デフォルトの名無しさん 20/02/05 10:24:42 MS9bo9CR.net 固定フォントじゃなくて等幅フォントでした 857:デフォルトの名無しさん 20/02/05 16:23:36 2rKdW1Ec.net てすと ☸ 858:デフォルトの名無しさん 20/02/05 16:24:56 2rKdW1Ec.net >>844 うちのChromeはちゃんと出てる ffでも問題なし 859:デフォルトの名無しさん 20/02/05 16:28:36 2rKdW1Ec.net >>847 前にpythonで書いたときは unicodedata.east_asian_width() 使ったと思う Win32APIだと表示前に文字列全体の描画幅を求める方法があったと思う 860:デフォルトの名無しさん 20/02/05 16:30:38 So1jciyU.net ☸ 法輪ラブ ☸ 861:デフォルトの名無しさん 20/02/05 18:34:07 qBm/0cTb.net >>847 ・Unicodeでは文字幅は 0(結合文字)、1(いわゆる半角)、2(いわゆる全角)、1か2(曖昧幅) のいずれかに決まっている ・1か2になるのはαや☆などであり、東アジアの環境で2、それ以外で1 ・wcwidthで調べるとその値を返すが、曖昧幅への対応がどうなっているかは分からない ・linuxのglibcは、データを自分で修正しない限り曖昧幅は1扱い(LANG=ja_JP.eucJPすれば2にはなる) ・CLIでのカーソル位置はカーネルのttyドライバが担当しており、そもそもフォン卜の情報を持っていない ・linuxカーネルでは全ての文字が(全角も)幅1扱い ・行編集もtty担当なので、catをそのまま実行して全角文字を入力後backspaceするとカーソルがずれる ・多くのシェルはwcwidthで入力/削除された文字やプロンプトに表示する文字の幅を調べ、必要に応じてカーソルを移動させる ・ターミナルはwcwidthまたは同等の独自関数(曖昧幅の設定ができることが多い)で文字幅を調べて、実際に表示させる ・等幅フォントでも曖昧幅の文字がどちらで実装されているかそれぞれ異なる上、ターミナルはフォントの文字幅情報を使わないことが多い(プロポーショナルでないことのみ確認) ・↑により、文字が重なったり変な隙間ができたりすることがある ・一部のターミナルはwcwidthの結果に従うように文字を潰したり引きのばしたりして表示する(minttyとか) ・アプリ(シェルとか)、ライブラリ(ncursesとか)、端末マルチプレクサ(tmuxとか)、端末エミュレータ、カーネル(tty)、フォント全てで想定する幅がそろっていないとうまく動かない ・日本語フォントの多くは曖昧幅2なので、linuxのCLIではαや☆がおかしくなることが多い(wcwidthが1を返すせい) ・Unicodeを作った西洋人は馬鹿だから、罫線素片の幅も曖昧で、ncursesがバグる ・絵文字は文字幅1だが、フォン卜の多くは2で実装されているのでおかしくなる 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch