特定のキャラクターがWindowsでひどく、ひどく間違って描画するのはなぜですか?


16

奇数文字:

ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้

質問: Windows *でこれらの文字を見ると、なぜこれらの文字が奇妙に描画されますか?

Windowsを使用することを強制されていない幸運な野郎のためのOutlookのスニペットを以下に示します。

もの

関連: 使用されている文字エンコーディングは何ですか?

* OSと同様のWindows。GTK +などを使用してテキストを描画するアプリケーションは、これらがLSDトリップから何か間違っているように見えません。


Windowsマシンでは、質問に入力した文字が画像の文字のように見えると言っていますか?入力した文字は、私のWindowsマシンではきれいに見えるからです。
-dsolimano

1
あなたの質問には根拠のない主張が含まれています-Windowsはそれらを「間違っている」と主張します。それらをどのように描くべきか、そしてWindowsがそれらを描く方法の何が特に間違っているかを述べれば助けになるでしょう。
デビッドシュワルツ

2
他のOSがこれをどのように処理するかを知りたいと思います。Windowsがそれをどのように処理するかだけを見て、それは「正しい」ように思えます。
木梅


回答:


10

私は、Windowsが「それを正しくやっている」と考えて少しヒットしたように思えるので、自分の立場を正当化するために答えを投稿すべきだと感じています。

問題の事実は、あなたが持っているテキストがオペレーティングシステムに非常に多くの結合文字をレンダリングするように指示しているということです。あるオペレーティングシステムが実際にそれらをレンダリングする一方で、別のオペレーティングシステムがレンダリングしないという問題は、多くの問題が原因です。これらの問題の1つは、プログラマーがレンダリングするコードを作成したときの徹底度です。もう1つは、プログラマーが怠laすぎて適切に実装できないためです。

基本的に、書き言葉は流動的なものであり、特定の言語の多くのキャラクターは、キャラクターの発音を修正するために適用される複数の異なる発音区別記号を持つという考えに帰着します。どのように我々は、これらすべての特殊記号を処理しない、我々は(新しいとほとんど同一の文字の多くの1本の経糸につながる)発音区別符号新しい文字で各文字を与えないか、我々は、特に文字のセットを作成しないために特殊記号と私たちを削減します全体的なアルファベット?

ユニコードは両方を行う範囲を提供しますが、そうすることで、これらの発音区別符号をレンダリングする必要があるプログラマーは、実際には複数の発音区別符号を持っているいくつかの文字が存在するという事実に対処する必要があります。いつ停止するのかという質問をします。彼らはそれを2つに制限し、ほとんどの人を満足させることができますが、自分の言語で正式に書くために3つの発音区別符を必要とする人を無視します。

マイクロソフトは、正しいか間違っているかにかかわらず、ユーザーが使用する追加マークの数をユーザーに決定させることにしました。この道を進むには、かなり優れたプログラマーといくつかの厳しい合理化が必要です。これ可能にすることと彼らがうまくやっているという事実の両方で彼らを完全にサポートします

一方、それらの文字が欠落している場合、それらが欠落している理由だけを知りたいと思います。それは「x発音区別記号の後にこれを床に落とす」決定でしたか、それともプログラマーが怠けていて適切に実行できず、発音区別記号に隠されたコードが実行されるためにバッファオーバーフローにさらされる可能性があったためですか?システム?

ここでの簡単な問題は、これらのキャラクターを実際にレンダリングすることにより、システムが正しいと考えていること、さらに悪いことに潜在的に有害なことをするのではなく、指示されたとおりに実行していることを確認できることです。


11
または:なぜWindowsがひどく、ひどく間違った文字をうまく描画するのですか?
-mtone

他の誰かのテキストをカバーすることは、私の本の「潜在的に有害」の基準を満たしています。(おそらく、隠されているメッセージが重要です。)ちなみに、私の好みの解決策は、発音区別記号の数の制限ではなく、何らかの形式のクリッピングです。(実際に隣接する行の文字と重複する文字を使用する言語がある場合、私はそれについて気にしない!)
ハリージョンストン

さらに、MSがすぐにこの動作を変更する可能性は低いため、Facebookやユーザーデータを受け入れる他のサイトは、いたずらがこの「機能」を誤用することを防ぐために、キャラクターセット自体をサニタイズしようとする可能性があります。残念ながら、消毒プロセスには望ましくない副作用がある可能性があります。Windowsが出力をクリップした場合、これは必要ありません。
ハリージョンストン

4

Windows *でこれらの文字を見ると、なぜこれらの文字が非常に奇妙に描画されるのですか?

実際のスクリプトがそのような多くのマークを結合することはありませんが、Windowsはテキストに文字が含まれている場合、文字を結合する Unicode 多数レンダリングしようとするためです。


おそらく、それは、使用できる結合文字の数に制限を課すのではなく、Windowsが実際に求められているとおりに「正しく実行している」ことを意味します。
木梅

superuser.com/questions/389333 / ...も参照してください。これは、そのようなトリックがFacebookで人気を得ていることを示しているようです。
ユッカK.コルペラ

@Mokubai:問題は、これは信頼できないデータ-インターネットからのデータです。Windowsは、ユーザーの最善の利益にならない可能性がある場合、信頼できないデータが要求することを必ずしも行うべきではありません。
ハリージョンストン

1
@HarryJohnston すべての発音区別符号が表示されない場合もっと心配になるでしょう。私の答えをご覧ください。
木梅
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.