18. Klasse TTF

18.1. Allgemeines

Mit den Methoden der Klasse TFF können Geometrien von True Type Fonts gelesen werden. Die Klasse TTF muss mit |LOAD geladen werden. Die Methoden eignen sich insbesonder um Geometrien von True Type Fonts vom Typ Symbol zu lesen.

18.2. Spezielles

Die True Type Fonts werden durch die Klasse TTF über folgendes Java-Programm gelesen.

ICS_DIR\system\bin\ttf2itf.jar

Informationen zu diesen Java-Program werden angezeigt mit:

java -jar ttf2itf.jar

18.3. TTF.FONTS

Gelesene Fonts werden in der Map TTF.FONTS abgelegt. Die Map weist folgende Struktur auf.

KomponenteTypBeschreibung
TTF.FONTS.<fontname>mapPro gelesenen Font fontname ein Eintrag.
TTF.FONTS.<fontname>.NAMEstringName des Fonts.
TTF.FONTS.<fontname>.STYLEstringStyle des Fonts.
TTF.FONTS.<fontname>.TYPEstringType des Fonts. TEXT oder SYMBOL .
TTF.FONTS.<fontname>.SIZEintPointgrösse des Fonts.
TTF.FONTS.<fontname>.CHARACTERSmapMap mit Characters des Fonts als ASCII-Code.
TTF.FONTS.<fontname>.CHARACTERS.<char>listListe der Geometrien des Characters.

18.4. TTF

MethodeTTF.READ_FONT [s fontname, s style, i pointsize] [b status]
BeschreibungLiest den True Type Font fontname im Style style mit der Pointgrüsse pointsize. Kann der Font gelesen werden, gibt die Methode TRUE zurück, ansonsten FALSE. Als style werden folgende Werte unterstützt: plain|italic|bold|bold,italic|symbol. Für Symbol-Fonts sollte symbol verwendet werden.
Beispiel
'Wingdings_Standard' 'symbol' 10 TTF.READ_FONT [TRUE] 
MethodeTTF.READ_FONT2 [s fontname, s style, i pointsize, r offsetx, r offsety] [b status]
BeschreibungWie TTF.READ_FONT . Zusätzlich kann ein Offset offsetx offsety definert werden, um den das Zentrum - der Origin - der Geometrien verschoben wird. offsetx offsety sind Faktoren bezogen auf die Fontbox des Fonts.
Beispiel
'Wingdings_Standard' 'symbol' 10 -0.5 -0.5 TTF.READ_FONT2 [TRUE]
MethodeTTF.READ_CHARACTER_GEOMETRY [s fontname, s style, i|s character] [li geometries]
BeschreibungDiese Methode liest die Geometry eines Characters character eines Fonts. Der Character kann als String oder als Integer des ASCII-Codes übergeben werden. Die Methode bring eine Liste der Geometrien des Characters zurück oder NULL, falls der Character nicht gelsen werden kann. Der Font muss vorgängig einmal mit TTF.READ_FONT oder TTF.READ_FONT2 gelesen werden.
Beispiel
'Wingdings_Standard' 'symbol' 'A' TTF.READ_CHARACTER_GEOMETRY [list]
MethodeTTF.WRITE_FONT_OBJECT_FILE [s fontname, s style, s file] [b status]
BeschreibungSchreibt einen mit TTF.READ_FONT oder TTF_READ_FONT2 gelesenen Font als Object in ein File.
Beispiel
'Wingdings_Standard' 'symbol' '\iltools\user\font\myfont.obj' TTF.WRITE_FONT_OBJECT_FILE [TRUE]
MethodeTTF.READ_FONT_OBJECT_FILE [s file] [s style, s fontname, b status]
BeschreibungLiest einen mit TTF.WRITE_FONT_OBJECT_FILE geschriebenen Font. Wenn der Status TRUE ist, wird zusätzlich der Fontname und der Style zurückgegeben. TTF.READ_FONT_OBJECT_FILE ist schneller als TTF.READ_FONT oder TTF.READ_FONT2 . Zusammen mit TTF.WRITE_FONT_OBJECT_FILE eignet sich die Methode um einmal gelesene Fonts in einem File abzuspeichern und wiederholt schneller zu lesen.
Beispiel
'\iltools\user\font\myfont.obj' TTF.READ_FONT_OBJECT_FILE ['symbol','Wingdings_Standard',TRUE]
MethodeTTF.DISPLAY_FONT [] []
BeschreibungZeigt alle gelesenen Fonts an.
Beispiel
TTF.DISPLAY_FONTS [] 

18.5. Skriptbeispiel

|LOAD TTF

! read font
!----------
'Wingdings_Standard' 'symbol' 10 -0.5 -0.5 TTF.READ_FONT2 => VAR.STATUS
IF VAR.STATUS NOT THEN
   ERROR 'could not read font'
   HALT
END_IF

! display font
!-------------

! display fonts
DISPLAY TTF.FONTS

! display font Wingdings_Standard
DISPLAY TTF.FONTS.Wingdings_Standard

! display font Wingdings_Standard characters
DISPLAY TTF.FONTS.Wingdings_Standard.CHARACTERS

! display font Wingdings_Standard character geometries
&TTF.FONTS.Wingdings_Standard.CHARACTERS MAPRESET
WHILE &TTF.FONTS.Wingdings_Standard.CHARACTERS MAPSCAN DO
   => VAR.CHAR
   => VAR.LIST

   DISPLAY 'Geometry if character:,VAR.CHAR

   &VAR.LIST RESET_READ
   WHILE &VAR.LIST READ_NEXT DO
      => VAR.GEOM
      VAR.GEOM DISP
   END_WHILE      
END_WHILE


! reading character A by character
!---------------------------------
'Wingdings_Standard' 'symbol' 'A' TTF.READ_CHARACTER_GEOMETRY => VAR.LIST
IF &VAR.LIST IS_NOT_NULL THEN
   VAR.LIST DISP
END_IF

! reading character A by character ASCII code 65
!-----------------------------------------------
'Wingdings_Standard' 'symbol' 65 TTF.READ_CHARACTER_GEOMETRY => VAR.LIST
IF &VAR.LIST IS_NOT_NULL THEN
   VAR.LIST DISP
END_IF