2016-05-18 15 views
0

Ich habe eine eigene TrueTypeFont definiert. Der Grund dafür ist, dass ich die nicht druckbaren Zeichen (0x00 .. 0x1f) visualisieren möchte. UsedLanguage ist C#C# mit selbstdefinierten TrueTypeFont in Textfeld macht Probleme

Diese Zeichen auf diese Weise definiert sind: Chars definition starting with zero

Ich möchte mit diesem Code in einer Textbox dieses Zeichen angezeigt werden

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); 
     } 
    } 

Das Ergebnis in der Textbox ist dies. Output (a part of it)

Warum erscheinen die Definitionen für den Wert 13 und die Werte größer als 15 nicht im Textfeld?

Antwort

0

Technisch gesehen ist das Verhalten von Leerzeichen in OpenType-Schriftarten undefined. Die meisten OTF-Schriftarten verwenden eine Unicode-Zuordnung. und diese niedrigeren Codes sind nicht so definiert, dass sie eine Glyphe haben. Außerdem kann Ihr Textzeichnungsrahmen störend sein: Wenn Sie ihm den Code für einen Zeilenumbruch senden, erhalten Sie wahrscheinlich eine neue Zeile als Ihren eigenen Charakter.

Auch der Wert 0 bedeutet "Ende der Zeichenfolge" in vielen Textfunktionen.

Ich empfehle das Hinzufügen einer großen Konstante sowohl zur Schriftkodierung Ihrer Glyphen als auch zu den Zeichen, die Sie zeichnen. Dazu können Sie die PUA ab U + E000 verwenden oder Ihre Symbolschrift an den Unicode-Standard anpassen und bei U + 2400: CONTROL PICTURES beginnen. Dieser Unicode-Bereich weist den Steuercodes 00 bis 1F sowie den Leerzeichen (U + 2420) und DELETE (U + 2421) ausdrücklich "sichtbare Zeichen" zu.

Link zu der entsprechenden PDF auf Unicode.org: http://unicode.org/charts/PDF/U2400.pdf