Werken met lettertypen

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

Het FontDescription-object wordt gebruikt in combinatie met ElementFormat om een lettertype te identificeren en enkele van de kenmerken ervan te definiëren. Deze kenmerken zijn onder andere de lettertypenaam, dikte, stand, en waar het lettertype kan worden gevonden (op het apparaat of ingesloten).

Opmerking: FTE biedt geen ondersteuning voor Type 1-lettertypen of bitmaplettertypen zoals Type 3, ATC, sfnt-wrapped CID of Naked CID.

Lettertype-eigenschappen definiëren (FontDescription-object)

De eigenschap fontName van het FontDescription-object kan één naam zijn of een door komma's gescheiden lijst namen. In een lijst zoals 'Arial, Helvetica, _sans' zoekt de text engine eerst naar 'Arial', vervolgens naar 'Helvetica' en ten slotte naar '_sans' als het programma de eerste twee lettertypen niet kan vinden. De set lettertypenamen omvat drie generieke apparaatlettertypenamen: “_sans”, “_serif” en “_typewriter”. Ze verwijzen ook naar specifieke apparaatlettertypen, afhankelijk van het afspeelsysteem. Het is goed gebruik om standaardnamen zoals deze te specificeren in alle lettertypebeschrijvingen die apparaatlettertypen gebruiken. Als er geen fontName is opgegeven, wordt standaard “_serif” gebruikt.

De eigenschap fontPosture kan worden ingesteld op de standaardwaarde (FontPosture.NORMAL) of op cursief (FontPosture.ITALIC). De eigenschap fontWeight kan worden ingesteld op de standaardwaarde (FontWeight.NORMAL) of op vet (FontWeight.BOLD).

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

Ingesloten versus apparaatlettertypen

De eigenschap fontLookup van het FontDescription-object geeft aan of de text engine naar een apparaatlettertype of naar een ingesloten lettertype zoekt om tekst te renderen. Als er een apparaatlettertype (FontLookup.DEVICE) is gespecificeerd, zoekt de runtime op het afspeelsysteem naar het lettertype. Als een ingesloten lettertype is opgegeven (FontLookup.EMBEDDED_CFF), zoekt de runtime naar een ingesloten lettertype met de opgegeven naam in het SWF-bestand. Alleen ingesloten CFF-lettertypen (Compact Font Format) werken met deze instelling. Als het opgegeven lettertype niet wordt gevonden, wordt teruggevallen op een apparaatlettertype.

Apparaatlettertypen leveren een kleiner SWF-bestand op. Ingesloten lettertypen geven een meer getrouwe weergave op verschillende platforms.

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

Rendermodus en aanwijzingen

CFF-rendering (Compact Font Format) is beschikbaar vanaf Flash Player 10 en Adobe AIR 1.5. Dit type rendering van lettertypen maakt tekst leesbaarder en zorgt voor een hogere kwaliteit weergave van lettertypen bij kleine tekengroottes. Deze instelling geldt alleen voor ingesloten lettertypen. FontDescription staat standaard op deze instelling (RenderingMode.CFF) voor de eigenschap renderingMode. U kunt deze eigenschap instellen op RenderingMode.NORMAL zodat het type rendering overeenkomt met het type dat wordt gebruikt door Flash Player 7 of eerdere versies.

Wanneer CFF-rendering is geselecteerd, regelt een tweede eigenschap cffHinting, hoe de horizontale stammen van een lettertype worden afgezet op het subpixelraster. De standaardwaarde, CFFHinting.HORIZONTAL_STEM, maakt gebruik van CFF-aanwijzingen. Als deze eigenschap wordt ingesteld op CFFHinting.NONE, worden de aanwijzingen verwijderd, hetgeen toepasselijk is bij animatie of grotere tekengroottes.

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

FontDescription vergrendelen en klonen

Wanneer een FontDescription-object wordt toegewezen aan een ElementFormat, wordt de eigenschap locked ervan automatisch ingesteld op true. Als geprobeerd wordt een vergrendeld FontDescription-object te wijzigen, leidt dit tot een IllegalOperationError. De beste manier is om een dergelijk object volledig te definiëren voordat u het toewijst aan een ElementFormat.

Als u een bestaande FontDescription wilt wijzigen, controleert u eerst de eigenschap locked ervan. Als deze is ingesteld op true, gebruikt u de methode clone() om een onvergrendelde kopie van het object te maken. De eigenschappen van dit onvergrendelde object kunnen worden gewijzigd en dit object kan vervolgens worden toegewezen aan de ElementFormat. Nieuwe regels die worden gemaakt van dit TextElement hebben de nieuwe opmaak. Eerdere regels die zijn gemaakt met hetzelfde object, blijven ongewijzigd.

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