Arbeiten mit Schriftarten

Flash Player 10 und höher, Adobe AIR 1.5 und höher

Das Objekt FontDescription wird zusammen mit dem Objekt ElementFormat verwendet, um die Schrift anzugeben und bestimmte Merkmale zu definieren. Hierzu zählen der Schriftname, die Schriftstärke, die Schriftneigung und die Schriftdarstellung sowie Angaben dazu, wie die Schriftart gefunden werden kann (Geräteschriftart oder eingebettete Schriftart).

Hinweis: FTE unterstützt keine Type 1- oder Bitmap-Schriftarten wie Type 3, ATC, sfnt-wrapped CID oder Naked CID.

Definieren von Schriftmerkmalen (FontDescription-Objekt)

Die Eigenschaft fontName des FontDescription -Objekts kann einen einzelnen Namen oder eine durch Kommata getrennte Liste mit Namen angeben. Beispiel: In einer Liste wie „Arial, Helvetica, _sans“ sucht die Text Engine zunächst nach „Arial“, dann nach „Helvetica“ und zum Schluss nach „_sans“, wenn die beiden zuerst genannten Schriftarten nicht gefunden wurden. Die Schriftnamen umfassen drei allgemeine Geräteschriftarten: „_sans“, „_serif“ und „_typewriter“. Sie sind abhängig vom Wiedergabesystem spezifischen Geräteschriftarten zugewiesen. Es empfiehlt sich, in allen Schriftartbeschreibung, die Geräteschriftarten verwenden, Standardnamen ähnlich wie diese festzulegen. Wenn kein fontName angegeben ist, wird als Standardeinstellung „_serif“ verwendet.

Für die Eigenschaft fontPosture kann entweder der Standardwert ( FontPosture.NORMAL ) oder kursiv ( FontPosture.ITALIC ) festgelegt werden. Für die Eigenschaft fontWeight kann entweder der Standardwert ( FontWeight.NORMAL ) oder fett ( FontWeight.BOLD ) festgelegt werden.

var fd1:FontDescription = new FontDescription(); 
fd1.fontName = "Arial, Helvetica, _sans"; 
fd1.fontPosture = FontPosture.NORMAL; 
fd1.fontWeight = FontWeight.BOLD;

Eingebettete Schriftarten und Geräteschriftarten

Die Eigenschaft fontLookup des FontDescription -Objekts gibt an, ob die Text Engine für die Textdarstellung nach einer Geräteschriftart oder nach einer eingebetteten Schriftart sucht. Wenn eine Geräteschriftart ( FontLookup.DEVICE ) angegeben wurde, sucht die Laufzeit auf dem Wiedergabesystem nach der Schriftart. Bei Angabe einer eingebetteten Schriftart ( FontLookup.EMBEDDED_CFF ) sucht die Laufzeit in der SWF-Datei nach einer eingebetteten Schriftart mit dem angegebenen Namen. Bei dieser Einstellung können nur eingebettete CFF-Schriftarten (Compact Font Format) verwendet werden. Wenn die angegebene Schriftart nicht gefunden wird, wird eine Fallback-Geräteschriftart verwendet.

Geräteschriftarten führen zu kleineren SWF-Dateigrößen. Mit eingebetteten Schriftarten bleibt das Erscheinungsbild über Plattformen hinweg gleich.

var fd1:FontDescription = new FontDescription(); 
fd1.fontLookup = FontLookup.EMBEDDED_CFF; 
fd1.fontName = "Garamond, _serif";

Rendermodus und Hinting

Das CFF-Rendering (Compact Font Format) ist ab Flash Player 10 und Adobe AIR 1.5 verfügbar. Bei dieser Art der Schriftwiedergabe ist der Text besser lesbar und kleine Schriften werden mit besserer Qualität angezeigt. Diese Einstellung gilt nur für eingebettete Schriftarten. Das Objekt FontDescription verwendet RenderingMode.CFF als Standardeinstellung für die Eigenschaft renderingMode . Sie können für diese Eigenschaft auch RenderingMode.NORMAL festlegen, um die i die in Flash Player 7 oder früheren Versionen verwendete Darstellungsart zu nutzen.

Bei Auswahl von CFF-Rendering steuert eine zweite Eigenschaft, cffHinting , wie die horizontalen Ausläufer einer Schriftart in das Subpixel-Raster eingepasst werden. Der Standardwert CFFHinting.HORIZONTAL_STEM verwendet CFF-Hinting. Wenn Sie für diese Eigenschaft CFFHinting.NONE festlegen, wird das Hinting deaktiviert. Diese Einstellung eignet sich für Animationen oder große Schriftarten.

var fd1:FontDescription = new FontDescription(); 
fd1.renderingMode = RenderingMode.CFF; 
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;

Sperren und Klonen des FontDescription-Objekts

Wenn ein FontDescription -Objekt einem ElementFormat -Objekt zugewiesen ist, wird die Eigenschaft locked des Objekts automatisch auf true festgelegt. Wenn Sie versuchen, ein gesperrtes FontDescription -Objekt zu bearbeiten, wird eine IllegalOperationError -Ausnahme ausgelöst. Die beste Vorgehensweise ist, ein solches Objekt vollständig zu definieren, bevor Sie es einer ElementFormat -Instanz zuweisen.

Wenn Sie ein vorhandenes FontDescription -Objekt ändern möchten, müssen Sie zunächst dessen locked -Eigenschaft überprüfen. Wenn der Wert true lautet, können Sie mit der clone() -Methode eine ungesperrte Kopie des Objekts erstellen. Die Eigenschaften dieses ungesperrten Objekts können geändert werden, und anschließend kann des Objekt mit der ElementFormat -Instanz verknüpft werden. Alle aus diesem TextElement -Objekt neu erstellten Zeilen weisen die neue Formatierung auf. Ältere Zeilen, die aus dem gleichen Objekt erstellt wurden, bleiben unverändert.

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class FontDescriptionCloneExample extends Sprite 
    { 
        private var tb:TextBlock = new TextBlock(); 
        private var te:TextElement; 
        private var ef1:ElementFormat; 
        private var ef2:ElementFormat; 
         private var fd1:FontDescription = new FontDescription(); 
        private var fd2:FontDescription; 
 
        public function FontDescriptionCloneExample() 
        { 
            fd1.fontName = "Garamond"; 
            ef1 = new ElementFormat(fd); 
            var str:String = "This is flash text"; 
            te = new TextElement(str, ef); 
            tb.content = te; 
            var tx1:TextLine = tb.createTextLine(null,600); 
            addChild(tx1); 
             
            fd2 = (fd1.locked) ? fd1.clone() : fd1; 
            fd2.fontName = "Arial"; 
            ef2 = (ef1.locked) ? ef1.clone() : ef1; 
            ef2.fontDescription = fd2; 
            tb.content.elementFormat = ef2; 
            var tx2:TextLine = tb.createTextLine(null,600); 
            addChild(tx2); 
        } 
    } 
}