UPT Programming Tool - Vektor-Zeichensätze

 

Bei der Erstellung dieses Dokuments (2018-07-19) wurden Vektor-Zeichensätze zwar im Programmiertool und in der Firmware vom MKT-View IV unterstützt, es fand sich aber leider noch nicht die Zeit, dies in dieser Beschreibung zu dokumentieren.

Inhalt

  1. Vektor-Zeichensätze
    1. Einleitung: Vektor-Zeichensätze im MKT-View und ähnlichen Geräten
    2. Verwendung von Vektor-Zeichensätzen im Programmiertool
    3. Anzeige von gedrehtem Text
    4. Anzeige von Sonderzeichen als Unicode-Sequenz

1.1 Einleitung: Vektor-Zeichensätze im MKT-View und ähnlichen Geräten

Alle Anerkennung für die im MKT-View (und ähnlichen Geräten) verwendeten Vektor-Zeichensätze gebührt Dr. Allen Vincent Hershey, der diese Zeichensätze in den 1960er-Jahren (!) während seiner Arbeit am Naval Weapons Laboratory in Dahlgren, Virginia kreierte. Anno 2018 warem Details zur Entstehungsgeschichte bei en.wikipedia.org/wiki/Hershey_fonts zu finden.
Jedes Bildzeichen besteht aus einem Array mit Koordinaten für Start- und Endpunkten von Linien, aus denen ein Zeichen bei der Ausgabe auf einem Grafikbildschirm, Plotter, Printer, oder (wie in Dr. Hershey's ursprünglicher Verwendung) auf einer Kathodenstrahlröhre als Vektor-Grafik zusammengesetzt wird.

Im Vergleich mit den im MKT-View verwendeten (alten, aber weiterhin verfügbaren) Bitmap-Fonts haben Vektor-Fonts viele Vorteile, aber auch Nachteile.
Vorteile von Vektor-Zeichensätzen:
Nachteile von Vektor-Zeichensätzen:


Anzeige des Zeichensatzes 'Hershey Simplex' auf einem MKT-View IV (mit 800 * 480 Pixeln),
z.T. 'fett gedruckt' mit dem HTML-Tag <b> im Format-String.


Bei der Erstellung dieser Beschreibung waren Vektor-Zeichensätze nur in Geräten mit Cortex-CPU verfügbar, da in älteren Geräten (mit 8051-Derivaten, C167, und LPC2xxx) zu wenig Speicher oder zu wenig Rechenleistung vorhanden war. Zu den Geräten mit Vektor-Zeichensätzen zählen bis dato:

1.2 Verwendung von Vektor-Zeichensätzen im Programmiertool

Aus der Sicht des Applikations-Entwicklers gibt es keinen großen Unterschied zwischen der Verwendung von Vektor- oder Bitmap-Fonts bei der Anzeige von beliebigen Anzeigeelementen. Beide können im Programmiertool aus einer Drop-Down-Liste ('Font') auf dem Panel Eigenschaften einer Anzeigezeile, oder im entsprechden Dialogfenster 'Alphanumerische Anzeige' des grafischen Editors.


Zoomfaktoren mit Nachkommastellen bei Anzeige mit Vektor-Zeichensatz

Nach der Auswahl eines Vektor-Zeichensatzes (z.B. 'Hershey Simplex') akzeptieren die Eingabefelder für horizontalen und vertikalen Zoom-Faktor ('X-Zoom','Y-Zoom') auch Zahlen mit Nachkommastellen, und die 'Up/Down'-Buttons direkt daneben verwenden eine Schrittweite von 0.1 (statt, wie bei Bitmap-Fonts, nur Einerschritte zuzulassen).

Zusätzlich zum bekannten HTML-Tag <b> tag (d.h. 'bold' für Fettschrift) kann bei Vektor-Zeichen die Schriftstärke (font weight) per Format-String auch 'fein dosiert' werden. Der numerische Parameter 'N' in der Sequenz <wN> setzt die 'Dicke' (Strichstärke) in Pixeln, die bei der Ausgabe des danach folgenden Textes auf dem Bildschirm verwendet wird. Ohne diese explizitie Angabe wird die Strichstärke automatisch an die Zeichengröße (d.h. die beiden Zoom-Faktoren) angepasst.
<w1> .. text .. </w>
Definiert die Schriftstärke in 'Pixeln'. w1 ist die dünnste, auf dem Bildschirm zeichenbare Linie (mit einer Stärke von einem Pixel).
</w> schaltet wieder zum vorher verwendeten Wert zurück.

<w0> .. text ..
Schaltet wieder zur automatischen Linienstärke zurück, d.h. abhängig von 'X-Zoom' und 'Y-Zoom' für die Textausgabe.

Wie bei den meisten HTML-ähnlichen Tags im Format-String kann auch die Schriftstärke durch eine Variable gesteuert werden. Die Demo-Applikation programs/HersheyFont.cvt enthält ein Beispiel, wie die Schriftstärke zur Laufzeit (d.h. 'programmgesteuert') geändert werden kann:

  <w(v)>Dieser Text erscheint mit variabler Stärke, durch 'v' gesteuert.</w>
Hinweis: v dient als Platzhalter für "den in der aktuellen Zeile darzustellenden Wert (value)".

Um zu kontrollieren, ob ein bestimmtes Sonderzeichen im Zeichensatz vorhanden ist, bietet sich die Zeichen-Auswahl-Tabelle an (die ursprünglich entwickelt wurde, um aus dem aktuellen Zeichensatz den hexadezimalen Code eines Sonderzeichens zu ermitten).


(Zeichen-Auswahl-Tabelle, zu öffnen per Button im
Dialog für alphanumerische Anzeigeelemente
oder per Klick auf das unterstrichene Label 'Font'
auf dem Panel Eigenschaften einer Anzeigezeile)


1.3 Anzeige von gedrehtem Text per Vektor-Font

Normale Anzeige-Elemente (wie Texte, Buttons, etc) können nicht um beliebige Winkel gedreht werden.
Die Funktion zum Zeichnen von Linienzüge oder Polygonen (Backslash-Sequenz '\li' im Format-String) kann allerdings seit 2018 auch Text (Zeichenketten) um beliebige Winkel drehen, sofern für die Ausgabe ein Vektor-Zeichensatz verwendet wird.
Bei der Erstellung dieser Beschreibung (09/2018) wurde die Syntax für die Drehung von Polygonen und Text noch nicht vom grafischen Editor unterstützt. Die Sequenz zur Anzeige von gedrehtem Text muss(te?) daher manuell als Text im Dialog für alphanumerischen Anzeigeelemente, oder auf dem entsprechenden Panel 'Eigenschaften' eingegeben werden.

Der folgende Screenshot der Anzeigeseite 'RotateText' aus programs/HersheyFont.cvt verdeutlicht das zur Rotation von Text verwendete Winkelsystem (in dem 0° für 'normalen', von links nach rechts laufenden Text steht):

Zum Erzeugen der oben gezeigten Grafik verwendete Backslash-Sequenzen:


     X    Y    W    H     Display command (format string)   
    256   48  152   80    \li(w=2,0,55;rot=-25,"rot=-25°") 
    256  128  152   48    \li(w=2;10,10;"rot=0°")
    256  176  152   80    \li(w=2;12,2;rot=25,"rot=+25°")
    208   48   48  208    \li(w=2;40,2;rot=90,"rot=+90°")
    160   48   48  208    \li(w=2;12,200;rot=-90,"rot=-90°")
      8  176  152   80    \li(w=2;152,25;rot=155,"rot=155°")
      8  128  152   48    \li(w=2;150,40;rot=180,"rot=180°")
      8   48  152   80    \li(w=2;140,80;rot=205,"rot=205°")
Erläuterungen:

1.4 Anzeige von Sonderzeichen als Unicode-Sequenz

Zum Zeichensatz 'Hershey Simplex' wurden einige Glypen hinzugefügt, die im Original-Zeichensatz nicht vorhanden waren. Diese können im Format-String per Backslash-U gefolgt von "+" und dem hexadezimalen Code (Unicode-Zeichen) eingebettet werden. Beispiel aus programs/HersheyFont.cvt :