アカウント名:
パスワード:
これまでJISX0208では、ギリシャ文字(Α,Β,Γ,...)や ロシア文字(А,Б,В,..)は全角文字として扱われていましたが、 Unicodeではこれを半角として扱わなくてはいけないことになっています。
(OS Xの文字パレットを見て…本当だ。Full-Width Formsにはローマ字と記号しか入ってない)
ncursesについてはGoogleで調べて画面表示用の関数だとしか分からなかったのですが、UTF-8を使っているときもギリシャ・ロシア文字を「全角」のフォントを使って表示するだけじゃ駄目ですか?
そもそも互換用に一部「全角」文字がある以外はUnicodeには「半角」「全角」の概念は無いはずです。互換維持のために必要なら、ギリシャ・ロシア文字を「全角」で表示しようが「半角」で表示しようがUnicodeの知ったことじゃないと思うのですが。
「全角」のロシア・ギリシャ文字と「半角」のロシア・ギリシャ文字を区別したいと言われると困りますがそもそもJISX0208でもその区別はできなかったわけですし。
Unicodeは現状の各文字コードの上位互換になるように作られてますけど、「半角」のロシア文字と「全角」のロシア文字を両方マッピングした文字セットが一つもないためにこの違いがUnicode上は消えてしまったわけですな。(推測ですが。全角ロ?マ字はUnicodeにあることからすれば正しいと思います。さらに個人的には、そもそもJISはロシア文字が全角だと言っていたのかと言う疑問があります。日本のメーカーがたまたまロシア文字等を全角にしただけだったりしないでしょうか。)
以上はUnicode派としてのなんで全角ロシア等文字がないのかの言い訳ですが、問題の解決にはつながりませんね。
まず、Unicodeの立場としては利用者側でどんな幅で表示しようが知ったことじゃありません。でも、等角フォントを前提に複雑な表示を行うncursesアプリケーション等ではそれは困るので…
…結局Unicodeからすれば文字コードに期待していることが多すぎると言うしかないと思います。
付け加えればエンコーディングの問題以前に現状の日本語フォントには半角のロシア文字は含まれていないし、欧文フォントには全角のロシア文字には含まれていないと言う問題もあります。
プログラマから、ターミナルに「こういう文字は全角で表示したい」あるいは「こういう文字は半角で表示したい」と伝えられる方法を作って、シェルが複数のフォントを組み合わせて(場合によっては半角と空白等を組み合わせて)対応するか、利用者の使用しているフォントの種類に合わせて個別アプリケーションが対応するしかないのでしょう。
Unicodeに悩んでいる作者さんはこんなことは、こんなことは百も承知でもっと進んだところで悩んでいるのでしょうが、そう言う問題があると知ったのは大変に個人的に参考になりました。
libcにあったりするようで。 # ちゃんと実装されてれば、 引数としてあたえたワイド文字の tty 様表示環境で期待されるカラム数が得られる
きちんと setlocale(LC_ALL, "") するという前提ならば、 何とかなりそうな気が。
コードポイントのみならず、 ロケールの国・地域情報を加味した有意義なデータが得られそうな気がします。 # たとえば、同じキリル文字(当然同一のコードポイントね)でも、 LANG が日本語圏では2カラム、 ロシアなどでは1カラムと評価されるとかね
それよりも、もはや 構成バイト数 = 占有カラム数 は成立しないということを、 プログラマはちゃんと意識しなければならないのでは、 などと思ったり。 # もっとも、 EUC-JP の半角カナだって昔からそうだった訳ですが。
― 普段は FreeBSD 使いなので AC
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
UTF-8 (スコア:1, 興味深い)
ってお願いすることはできないのでしょうか?
あんな無茶苦茶な文字コードを表に出してくるなんて
いったいどういう神経してるのかわかりません。
日本ではWin、Mac、Sunでコードに互換性がないし、
将来日本や中国が文字の定義を変更し
Re:UTF-8 (スコア:1, 参考になる)
これはUTF-8 の互換性?
UCSとかUTF-7とか諸々を unicodeで同じものだ!と勘違いして、
互換が無いとか嘆いてるって話?
> 将来日本や中国が文字の定義を変更したらどうするのかとか。
> unicodeには問題が多すぎるのはみんな知ってるはず。
そんなこと言ってる人がいるの?
将来変更したいなら、unicodeの新バージョンで対応するのでは?
協調がなければ勝手に変更できないのがunicodeであって、
変更する側も勝手に変えても幸せにはな
Re:UTF-8 (スコア:0)
ことをぜんぜん考慮してない点ですよ。例をあげると、
これまでJISX0208では、ギリシャ文字(Α,Β,Γ,...)や
ロシア文字(А,Б,В,..)は全角文字として扱われていましたが、
Unicodeではこれを半角として扱わなくてはいけないことになっています。
そうすると、例えばncursesアプリなんかは今までEUCで表示していて
上手く表示されてたプロ
Re:UTF-8 (スコア:1)
(OS Xの文字パレットを見て…本当だ。Full-Width Formsにはローマ字と記号しか入ってない)
ncursesについてはGoogleで調べて画面表示用の関数だとしか分からなかったのですが、UTF-8を使っているときもギリシャ・ロシア文字を「全角」のフォントを使って表示するだけじゃ駄目ですか?
そもそも互換用に一部「全角」文字がある以外はUnicodeには「半角」「全角」の概念は無いはずです。互換維持のために必要なら、ギリシャ・ロシア文字を「全角」で表示しようが「半角」で表示しようがUnicodeの知ったことじゃないと思うのですが。
「全角」のロシア・ギリシャ文字と「半角」のロシア・ギリシャ文字を区別したいと言われると困りますがそもそもJISX0208でもその区別はできなかったわけですし。
# For man might be free./人は自由になれるかもしれないから。
Re:UTF-8 (スコア:1, 興味深い)
> UTF-8を使っているときもギリシャ・ロシア文字を「全角」のフォントを
使って表示するだけじゃ駄目ですか?
そうするとncursesアプリケーションのプログラムの内部で、アジア圏と
非アジア圏でそれぞれ別な処理を行わなくてはいけないのでしょうか。
たしか以前、国際化XTermのトピックでこういった場合にどう表示を
するべきかについてkubotaさんという方がかなり悩ましげにしていた
記憶があります。そのために今のXTermではUTF-8の表示モードを
いくつか用意し、互換性のためにmediumモードという
アジア圏localeを特別視したモードが作られました。
アジア圏の後方互換性を重視した結果、XtermのUTF-8表示モードの
違いによって、同じUTF-8の文字列を表示した結果が異なることに
なりました。その結果、プログラマはあるUTF-8文字を全角で表示
するのか、半角で表示するのかを知ることはできないので、
なんとなく泥臭い処理を行わなくてはいけなくなりました。
アジア圏で使われるコンソールアプリケーションを作ってる人達が
こういう状況をヒイヒイいいながら何とか自前で吸収している姿を
想像すると、ほんとうにUTF-8化に未来なんてあるのかなって思います。
Re:UTF-8 (スコア:3, 参考になる)
Unicodeは現状の各文字コードの上位互換になるように作られてますけど、「半角」のロシア文字と「全角」のロシア文字を両方マッピングした文字セットが一つもないためにこの違いがUnicode上は消えてしまったわけですな。(推測ですが。全角ロ?マ字はUnicodeにあることからすれば正しいと思います。さらに個人的には、そもそもJISはロシア文字が全角だと言っていたのかと言う疑問があります。日本のメーカーがたまたまロシア文字等を全角にしただけだったりしないでしょうか。)
以上はUnicode派としてのなんで全角ロシア等文字がないのかの言い訳ですが、問題の解決にはつながりませんね。
まず、Unicodeの立場としては利用者側でどんな幅で表示しようが知ったことじゃありません。でも、等角フォントを前提に複雑な表示を行うncursesアプリケーション等ではそれは困るので…
…結局Unicodeからすれば文字コードに期待していることが多すぎると言うしかないと思います。
付け加えればエンコーディングの問題以前に現状の日本語フォントには半角のロシア文字は含まれていないし、欧文フォントには全角のロシア文字には含まれていないと言う問題もあります。
プログラマから、ターミナルに「こういう文字は全角で表示したい」あるいは「こういう文字は半角で表示したい」と伝えられる方法を作って、シェルが複数のフォントを組み合わせて(場合によっては半角と空白等を組み合わせて)対応するか、利用者の使用しているフォントの種類に合わせて個別アプリケーションが対応するしかないのでしょう。
Unicodeに悩んでいる作者さんはこんなことは、こんなことは百も承知でもっと進んだところで悩んでいるのでしょうが、そう言う問題があると知ったのは大変に個人的に参考になりました。
# For man might be free./人は自由になれるかもしれないから。
wcwidth() なる関数が (スコア:2, 参考になる)
libcにあったりするようで。
# ちゃんと実装されてれば、 引数としてあたえたワイド文字の tty 様表示環境で期待されるカラム数が得られる
きちんと setlocale(LC_ALL, "") するという前提ならば、 何とかなりそうな気が。
コードポイントのみならず、 ロケールの国・地域情報を加味した有意義なデータが得られそうな気がします。
# たとえば、同じキリル文字(当然同一のコードポイントね)でも、 LANG が日本語圏では2カラム、 ロシアなどでは1カラムと評価されるとかね
それよりも、もはや 構成バイト数 = 占有カラム数 は成立しないということを、 プログラマはちゃんと意識しなければならないのでは、 などと思ったり。
# もっとも、 EUC-JP の半角カナだって昔からそうだった訳ですが。
― 普段は FreeBSD 使いなので AC