2016-05-18 2 views
0

私は独自のTrueTypeFontを定義しています。その理由は、印刷可能でない文字(0x00 .. 0x1f)を視覚化したいからです。 Chars definition starting with zeroC#を使ってテキストボックスにTrueTypeFontを定義すると問題が発生する

私はテキストボックスにこのコード

private void button1_Click(object sender, EventArgs e) 
    { 

     TextBoxResult.Text = ""; 
     for (uint i = 0; i < 32; i++) 
     { 
      char c = Convert.ToChar(i); 
      TextBoxResult.Text += String.Format("{0}: {1}\r\n", i, c); 
     } 
    } 

結果をテキストボックスにこの文字を表示するには、このです:UsedLanguageは、これらの文字は、このように定義されているC#の

です。 Output (a part of it)

テキストボックスに値13の定義と15を超える値が表示されないのはなぜですか?

答えて

0

技術的には、OpenTypeフォントのスペースより小さい文字の動作は、は未定義です。ほとんどのOTFフォントはUnicodeマッピングを使用します。それらの下位コードはグリフを持つと定義されていません。また、テキスト描画フレームワークが干渉している可能性があります。改行コードを送信すると、自分の文字よりも新しい行が得られる可能性が高くなります。

また、0という値は、多くのテキスト機能で「文字列の終わり」を意味します。

グリフのフォントエンコーディングと描画している文字の両方に大きな定数を追加することをお勧めします。 U + E000から始まるPUAを使用するか、またはUnicode標準に準拠したシンボルフォントを作成し、U + 2400:CONTROL PICTURESで始めることができます。このUnicode範囲は、制御コード00〜1Fに加えて、SPACE(U + 2420)とDELETE(U + 2421)に "可視文字"を割り当てます。

ユニコードで関連するPDFへのリンク:http://unicode.org/charts/PDF/U2400.pdf

関連する問題