AMIGA-Magazin · Ausgabe 2/03 · Kurs: Schriften und Amiga (Folge 2)

Aktuelles Heft 2/03

Das Font-ABC

TrueType-Fonts sind durch ihren Einsatz in MS-Windows in großer Anzahl ­ u.a. im PD- Bereich ­ anzutreffen. Höchste Zeit also, dass auch Ihr Amiga sich mit diesen Schriften versteht. Damit können Sie auf einen großen Schriftpool zurückgreifen.

von Michael Christoph

Fremde Fonts:
Der "ttfmanager" erlaubt die Installation von TruType-Fonts auf dem Amiga
Vorab:
Eine Vorschau wie im "ttfmanager" der gewählten Schriftart ist immer hilfreich.
Optionen:
Umfangreiche Einstellungen sind beim Import der TTF-Schriften möglich.
Einblendung:
Alle Zeichen einer neu installierten Schrift im Überblick und zur Kontrolle.
Bereits 1990 legte Commodore mit Einführung von »AmigaOS 2.0« den Grundstein, auch andere Schriften am Amiga zu verwenden. Trotzdem sollte es noch viele Jahre dauern, bis tatsächlich davon Gebrauch gemacht wurde.
Richard Griffith machte es sich zur Aufgabe, dass auch die viel verbreiteten TrueType-Schriften (Windows und Linux) auch am Amiga benutzt werden können. Dabei bediente er sich der offenen Schnittstellen im AmigaOS und integrierte die Unterstützung völlig transparent. Dadurch muss sich kein anderer Programmierer um diesen Schrifttyp kümmern, sondern kann sie wie eine ganz normale Amiga-Schrift verwenden. Vor allem wenn die Schrift zum ersten Mal in den Speicher geladen wird, kümmert sich die ttf.library um die Konvertierung vom TrueType-Format in das interne Amiga-BitMap-Format.

Die Installation
Vor der Nutzung muss noch die TTF-Font-Engine installiert werden. Die Archive hierzu sind im AmiNet zu finden (s. Kasten »Bezugsquellen«). Das Lha-Archiv ist noch selber zu entpacken, den Rest erledigt dann das Installations-Programm. Dieses und der ttfmanager liegen bisher nur in englischer Sprache vor, sollte aber trotzdem keinem Schwierigkeiten bereiten.
Bevor TrueType-Fonts am Amiga benutzt werden können, müssen sie installiert werden (was auch unter anderen Betriebssystemen notwendig ist). Hierzu wird der ttfmanager mitgeliefert. Nach der Installation des ttfArchives ist dieser im Sys- tem-Verzeichnis zu finden. Seine Aufgabe besteht darin, die für den Amiga notwendigen .font- und .otag-Dateien zu erzeugen. Achtung: die Orginal-ttf-Schrift-Datei wird dabei nicht kopiert. Sie muss also zuerst (von Hand oder per Directory-Tools) an die gewünschte Stelle auf der Festplatte kopiert werden. Analog zu den Agfa-Fonts ist es empfehlenswert, ein Unterverzeichnis ttf in der Fonts-Schublade anzulegen. Dort hinein sollten dann alle .ttf-Schriftdateien kopiert werden. Gehen Sie nach folgendem Muster zu Installtion der ttf-Engine vor:

TTF-Programmierung
In diesem Kurs-Teil sollen aber auch die Programmierer voll auf ihre Kosten kommen. Hierzu soll das Beispielprogramm »myViewFont« dienen, dass alle Arten von skalierbaren Schriften anzeigen kann. Voraussetzung: Die entsprechende Font-Engine ist im System vorhand oder wird installiert.

Die Möglichkeiten:
freie Fontauswahl per ASL-FileRequester.
Zeichenauswahl (unter dem Vorschaufeld).
Größenauswahl (5 bis 150 Pixel).
Drehwinkel (0 bis 359 Grad).
frei skalierbare und lokalisierte Reaction-Oberfläche für AmigaOS 3.5.

In der Datei »myViewFont.c« ist die komplette Oberfläche (über Reaction) und das MessageHandling zu finden. Das Programm ist auch gleich mehrsprachig ausgelegt. Die internen Texte sind in der Datei »VF_locale.c« zu finden. Interessant ist jedoch die Datei »VF_engine.c«, die die komplette Fontbehandlung beinhaltet. Alle Dateien sollten mit ausreichend Kommentaren versehen sein, damit Sie Änderungen und Erweiterungen nach eigenem Geschmack vornehmen kann. Trotzdem soll hier eine kurze Übersichtsbeschreibung erfolgen.

Nach dem Programmstart (wahlweise Shell oder Workbench) erfolgt die Auswertung der übergebenen Argumente. Danach wird überprüft, ob mindestens AmigaOS 3.5 vorliegt. Ist eine ältere OS-Version installiert, gibt das Programm eine Fehlermeldung aus und wird beendet. Dann werden die benötigten Libraries (runprogramm()) und Gadget-Klassen OpenClasses() geöffnet und die Reaction-Gadgets erzeugt CreateAllObjects()). Zusätzlich wird noch eine Bitmap allokiert, in die später die gerenderten Zeichen umkopiert werden. Danach verbringt das Programm die meiste Zeit in MsgLoop() und wartet auf Benutzeraktionen.

Die Vorschau des Zeichens erfolgt über ein space.gadget. Obwohl der Name eher auf seine Bedeutung als (dynamischer) Platzhalter hinweist, erlaubt dieses Gadget eine eigene Render-Funktion einzuhängen. Das heißt, jedesmal wenn ein Neuzeichnen des Inhaltes notwendig ist, wird statt dessen die Render-Funktion aufgerufen (als RenderHookFunc() benannt). Da diese Funktion im Kontext des input.devices läuft, sind nur eingeschränkte Möglichkeiten vorhanden und die Funktion muss schnellstmöglich abgearbeitet werden. Die Render-Funktion liest zuerst die aktuelle Größe aus und löscht diesen kompletten Bereich. Danach wird nur noch die pivate Bitmap in das Fenster umkopiert (dies erfolgt zentriert, wenn möglich).

Bezugsquellen
Die TTF-FontEngine liegt zur Zeit in der Version 0.8.5 vor.
Homepage http://ragriffi.home.sprynet.com/ttflib.htm
AmiNet-Verzeichnis: /util/libs/ttflib680x0.lha
Das x im Namen müssen Sie durch 0, 2, 3, 4 oder 6 ersetzen ­ das hängt vom Prozessor in Ihrem Amiga ab.
TTF-Schriften im Internet http://www.fontpool.de/auswahl.htm
TTF-FontCD (kommerziell) http://www.softmaker.de

Nach der Auswahl einer .font-Datei wird die Funktion OpenFontEngine() aktiv. Diese prüft zuerst, ob die Datei vorhanden ist und vom Typ Outline-Font. Danach wird versucht, die .otag-Datei einzulesen ­ AllocOTag() übernimmt die Aufgabe. Anhand dieser Tagliste ermittelt OpenScalingLibrary(), um welche Font-Engine es sich handelt und versucht, die entsprechende Library zu öffnen. Danach initialisiert GetGlyphEngine() nur noch die geöffnete Font-Engine. Umgekehrt wird dann über die Anweisungen

ReleaseGlyphEngine(), CloseScalingEngine() und FreeOtag() die allocierten Resourcen wieder freigegeben. Dazwischen kann aber mit Hilfe von RenderGlyph() ein beliebiges Zeichen durch die Font-Engine gerendet werden. Vorzugeben sind dabei mit SetInfo() vor allem die gewünschte Schrifthöhe, der Charactercode und ein evtl. Drehwinkel. Danach gibtt das Programm über ObtainInfo() die Bitmap mit dem gerenderten Zeichen aus. Diese wird zur weiteren Verwendung in eine private Bitmap umkopiert. Die Bitmap der Font-Engine kann daher über ReleaseInfo() sofort wieder freigegeben werden. Wer Fragen zum Programm oder dessen Funktionsweise hat, kann sich gern an den Autor per E-Mail wenden: michael@meicky-soft.de.

Bis zum nächsten Teil, in dem es um die PostScript-Fonts geht, wünschen wir Ihnen viel Spaß beim Spielen mit dem Font-Viewer. Das Archiv mit den Dateien finden Sie auf der Heft-CD zum aktuellen Heft (Verzeichnis Amiga-Magazin/
Font-Kurs) bzw. nach Erscheinen des Hefts auf der Internetseite des Amiga Magazin.

lb



Hauptseite © 2003 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 12. Februar 2003, Michael Christoph.