FontEdit

Der FontEditor ist ein Program zum Bearbeiten von TrueTypeFonts. Prinzipiell kann er alle Tabellen einer .ttf-Datei auslesen und wieder Schreiben(Bekannte Ausnahmen: EBDT, EBLC und EBSC, da ich diese Technik nicht für wirklich wichtig halte... und das mir zu kompliziert ist. Zumindestens zwischen 0:00h und 1:00h), wobei allerdings einige Teile berechnet oder geraten werden.

TTrueTypeFont

Dazu habe ich erstmal eine Klasse, TTrueTypeFont, für den Zugriff auf die Datei geschrieben, die über zwei Konstruktoren verfügt:

CreateNew CreateFrom(Stream:TStream;IsOwner:boolean)

Dazu noch eine Prozedur zum speichern:

SaveTo(Stream:TStream;IsOwner:boolean)

Der unterschied zwischen CreateNew und CreateFrom ist, dass CreateFrom aus einen Stream ausliest und CreateNew einfach nur einige wichtige Klassen initialisiert.

Zum Auslesen und Schreiben des Streams wird eine Hilfsklasse, TTableDirectory, benutzt, die die Haupttabelle ausliest, schreibt und kontrolliert und dabei ausserdem die Checksumme der Datei berechnet.

FrontEnd

Das Frontend hat zwei Modi: Normal und Erweitert. im Erweiterten Modus habe ich die Einstellungen, die ich für nicht so wichtig halte, untergebracht: das Hinting und alles was dadurch nötig wird, aber auch Einstellungen zu Fontfamilie, Vendor-Strings, Unicode-Bereiche, Codepages usw. Man kann auch Vorlagen definieren. Es gibt für die diversen Einstellungen einen Eigenschaftendialog, auf dem je nach Object die Eigenschaften angezeigt werden.

Was ist noch zu tun?

Die Bedienung ist meiner Meinung nach noch zu komplex, ich habe aber keine Ahnung, wie oder was ich da noch machen soll. Im Glyph-Fenster sollte eine Mehrfachauswahl ermöglicht werden, Guides wären auch noch gut, die Linien für die Einstellungen könnten Hints vertragen. Auch wäre es gut, wenn jemand Literatur über das Hinting(etwas, was über die Informationen der Referenz im MSDN, Specifications, hinausgeht), speziell über die einzelnen Befehle.Gut wäre es auch, wenn ich auch die Dateigrößen in der maxp-Tabelle richtig berechnen könnte.