[過去ログ] 文字コード総合スレ Part12 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
848: デフォルトの名無しさん [sage] 2020/02/05(水) 10:24:42.24 ID:MS9bo9CR(2/2) AAS
固定フォントじゃなくて等幅フォントでした
849: デフォルトの名無しさん [] 2020/02/05(水) 16:23:36.59 ID:2rKdW1Ec(1/3) AAS
てすと

850: デフォルトの名無しさん [] 2020/02/05(水) 16:24:56.28 ID:2rKdW1Ec(2/3) AAS
>>844
844(2): デフォルトの名無しさん [sage] 2020/02/04(火) 21:29:49.71 ID:t1/0lpTx(1) AAS
絵文字ってここにどう書き込めばいいんです?
☸️


専ブラでは絵文字として読めるがWebブラウザー(Chrome/旧Edge/IE11@Win10)で見ても◆◆状態でうまく表示されない…
うちのChromeはちゃんと出てる
ffでも問題なし
851: デフォルトの名無しさん [] 2020/02/05(水) 16:28:36.97 ID:2rKdW1Ec(3/3) AAS
>>847
847(2): デフォルトの名無しさん [sage] 2020/02/05(水) 10:23:19.19 ID:MS9bo9CR(1/2) AAS
固定フォントのターミナルのような環境である文字のフォントの幅が全幅か半幅か判別する確実な方法ってありますか?
Unicode前提です
Unicode的にアジアンなんとかというドキュメントでそれに触れられているのを見つけましたが
結局のところ使用されているフォントで決まるような気がします
となるとCLIアプリが表示する前に判別する方法はないような
表示したあとならターミナルにカーソル位置問い合わせればわかりそうだと思いましたが
前にpythonで書いたときは
unicodedata.east_asian_width()
使ったと思う
Win32APIだと表示前に文字列全体の描画幅を求める方法があったと思う
852: デフォルトの名無しさん [sage] 2020/02/05(水) 16:30:38.68 ID:So1jciyU(2/2) AAS
☸ 法輪ラブ ☸
853
(2): デフォルトの名無しさん [sage] 2020/02/05(水) 18:34:07.02 ID:qBm/0cTb(1) AAS
>>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で実装されているのでおかしくなる
854: デフォルトの名無しさん [sage] 2020/02/05(水) 20:43:09.91 ID:f5dE3Mu+(1) AAS
>>853
詳しい解説サンクス
855: デフォルトの名無しさん [sage] 2020/02/05(水) 23:12:39.17 ID:zWcxLf4u(1) AAS
>>853
あざす
やっぱり混沌としてるのですね
とりあえず一度ターミナルの中を追ってみようかな
856: デフォルトの名無しさん [sage] 2020/02/06(木) 00:00:39.94 ID:SQAVqXtr(1) AAS
>>844うちでも見れた
857: デフォルトの名無しさん [sage] 2020/02/07(金) 22:23:32.71 ID:DCA95dh2(1) AAS
継ぎ接ぎだらけの一貫してない仕様だからな
858
(1): デフォルトの名無しさん [sage] 2020/02/08(土) 17:47:47.28 ID:hv0txQ7A(1/2) AAS
Unicodeの時代に今更だけど、
シフトJISの第2バイトがA0〜FFでなく
40〜FCにしたのは何でだろう
859: デフォルトの名無しさん [sage] 2020/02/08(土) 17:48:29.82 ID:hv0txQ7A(2/2) AAS
訂正
×A0〜FF
〇80〜FF
860: デフォルトの名無しさん [sage] 2020/02/08(土) 18:36:07.73 ID:zjMP9HD4(1) AAS
JISの区点は1区あたり94点
0x40開始で0x7Fを避けて2区分取ると0xFCになる
861: デフォルトの名無しさん [sage] 2020/02/09(日) 12:59:57.61 ID:tCetl5aZ(1/3) AAS
やっぱ漢字1文字は2バイトの方がいい
862: デフォルトの名無しさん [sage] 2020/02/09(日) 15:51:09.68 ID:gml78nRc(1) AAS
>>858
半角カナのせいで80〜FFでは足りないから
863
(1): デフォルトの名無しさん [sage] 2020/02/09(日) 19:30:21.11 ID:tCetl5aZ(2/3) AAS
シフトJISはもう少し工夫すれば
JISコードの変換式もより簡単にでき
2バイト目もASCII領域を使わずにダメ文字も発生せず
補助漢字も全て入れられた
864: デフォルトの名無しさん [sage] 2020/02/09(日) 19:32:13.43 ID:tCetl5aZ(3/3) AAS
補助漢字は半角カナと排他だけど
865: デフォルトの名無しさん [] 2020/02/10(月) 16:27:01.61 ID:TGcYvj29(1) AAS
EUCで良かったんよ
866: デフォルトの名無しさん [sage] 2020/02/10(月) 19:14:50.21 ID:hRmPfOYI(1) AAS
EUCだと半角カナも補助漢字もバイト数が増えるからな...
867: ◆QZaw55cn4c [sage] 2020/02/10(月) 21:20:39.00 ID:3bnN/FFY(1) AAS
>>863
あのスペースの狭さでは、それは無理だったのでは?
どうするのがよかったのですか?具体的にいってみてよ
868
(1): デフォルトの名無しさん [sage] 2020/02/11(火) 08:36:25.76 ID:K5Jxm44G(1/2) AAS
非漢字_:[81-98] [80-9F]
第1水準:[80-9F] [A1-FE]
第2水準:[E0-FF] [A1-FE],[E0-EB] [80-9F]
補助漢字:[A0-DD] [A1-FE],[A4-C1] [80-9F]
補助漢字は半角カナと排他利用
869
(1): ◆QZaw55cn4c [sage] 2020/02/11(火) 17:40:51.63 ID:Sh/x76Zj(1/2) AAS
>>868
それは結局半角カナを潰しただけのことでは?
870
(1): デフォルトの名無しさん [sage] 2020/02/11(火) 18:51:44.66 ID:K5Jxm44G(2/2) AAS
>>869
補助漢字6000字近くを使えるというメリットがあれば
半角カナをフェードアウトするには十分な機会になっただろう
補助漢字(JIS X 0212)が制定されたのは1990年だから
その翌年の1991年に発売されたMS-DOS 5.0あたりで
KANA ON/OFFコマンドを追加し、半角カナ/補助漢字の切り替えが出来れば
従来のテキストファイルの読み込みなども対応できる
871
(1): ◆QZaw55cn4c [sage] 2020/02/11(火) 19:27:04.32 ID:Sh/x76Zj(2/2) AAS
>>870
文字コードのマップ切り替えはコンテンツ側で指示するべきことであって、OS/アプリ側で切り替えて対応するとか、発想が変だとおもいますね
872: デフォルトの名無しさん [sage] 2020/02/12(水) 01:19:59.31 ID:l8Pmdafn(1) AAS
いっその事1byte=32bitにすればサロゲートペアもBOMも要らなくなるし多バイト文字という概念もなくなる
1-
あと 130 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s