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);
}
}
}
|
|
|