2011-01-07 5 views
1

特定のルックアップテーブルエスクフォントを使用してユニコード文字列の表示が必要なアプリケーションがあります。テキストボックスでUnicode文字列が殺されるVisual C#(ディスプレイではなく、実際の文字列)

このフォントには、U + 0000〜U + 0020という文字の実際の記号があります。

文字列から文字列を作成するのに問題はありません。問題は、この文字列をテキストボックスに設定しようとするときです。

私が "TextBox1.Text = mycrazystring"を実行したときに、テキストボックス(特殊フォントなど)を選択したフォントに関係なく、TextBox1(私が設定した)のTextプロパティをチェックすると、 "、何もない。

これはユニコード文字U + 0000〜U + 0020がサポートされていないためですか? 改行、タブ、またはバックスペースのような機能にアクセスしますか?テキストボックスに置かれたときにはそうすると思いますか?

0000から0023までの文字を含む文字列を作成すると、文字列が割り当てられた後に少なくとも1つの感嘆符がTextBox1.Textプロパティに表示されますが、サイコロは表示されません。

現在のフォントを0020に移動するカスタムフォントを作成する必要はありますか?

+0

リッチテキストボックスで同じ文字列を試しましたか? – curtisk

+3

通常のWindowsテキストボックスの場合、U + 0000は文字列の最後を示します。それ以外のもので置き換えてください。 U + 2400(␀)。 – Philipp

+0

それはヌル文字のためですか?まあそれは確かに事を説明します。ありがとう! –

答えて

2

無関係なグリフへのUnicode文字のマッピングは行わないでください。あなたは、不適切なことをしているテキストレイアウトアルゴリズムで多くの問題に終わることができます。 制御文字をカスタムグリフにマッピングすることは狂っています。 UIウィジェットと他の多くのツールを混乱させてしまいます。

現在のフォントを0020に変更するカスタムフォントを作成する必要がありますか?

いいえ、+ E000以上で、Private Use Areaにシフトする必要があります。

+1

または、U + 2400からU + 2420(http://www.unicode.org/charts/PDF/U2400.pdf)を使用してください。これらは制御文字の記号として使用することを特に意図しています。 –

+0

私的利用エリアです!それは物事を整理した。これらの制御文字は確かに無為に動いていた。 –