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.
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
Gelesene Fonts werden in der Map TTF.FONTS abgelegt. Die Map weist folgende Struktur auf.
| Komponente | Typ | Beschreibung |
TTF.FONTS.<fontname> | map | Pro gelesenen Font fontname ein
Eintrag. |
TTF.FONTS.<fontname>.NAME | string | Name des Fonts. |
TTF.FONTS.<fontname>.STYLE | string | Style des Fonts. |
TTF.FONTS.<fontname>.TYPE | string | Type des Fonts. TEXT oder
SYMBOL . |
TTF.FONTS.<fontname>.SIZE | int | Pointgrösse des Fonts. |
TTF.FONTS.<fontname>.CHARACTERS | map | Map mit Characters des Fonts als ASCII-Code. |
TTF.FONTS.<fontname>.CHARACTERS.<char> | list | Liste der Geometrien des Characters. |
| Methode | TTF.READ_FONT [s fontname, s style, i pointsize] [b status] |
| Beschreibung | Liest 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 | |
| Methode | TTF.READ_FONT2 [s fontname, s style, i pointsize, r offsetx, r offsety] [b status] |
| Beschreibung | Wie 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 | |
| Methode | TTF.READ_CHARACTER_GEOMETRY [s fontname, s style, i|s character] [li geometries] |
| Beschreibung | Diese 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 | |
| Methode | TTF.WRITE_FONT_OBJECT_FILE [s fontname, s style, s file] [b status] |
| Beschreibung | Schreibt einen mit
TTF.READ_FONT oder
TTF_READ_FONT2 gelesenen Font als Object in ein
File. |
| Beispiel | |
| Methode | TTF.READ_FONT_OBJECT_FILE [s file] [s style, s fontname, b status] |
| Beschreibung | Liest 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 | |
| Methode | TTF.DISPLAY_FONT [] [] |
| Beschreibung | Zeigt alle gelesenen Fonts an. |
| Beispiel | |
|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