Operazioni con i caratteri

Flash Player 10 e versioni successive, Adobe AIR 1.5 e versioni successive

L'oggetto FontDescription viene utilizzato in combinazione con ElementFormat per identificare un tipo di carattere e definirne alcune caratteristiche. Queste caratteristiche comprendono il nome del carattere, lo spessore, la disposizione, il rendering, e la modalità di reperimento del carattere (dispositivo o incorporato).

Nota: FTE non supporta i caratteri Type 1 o i caratteri bitmap quali Type 3, ATC, CID racchiusi in sfnt, o "Naked CID".

Definizione delle caratteristiche dei caratteri (oggetto FontDescription)

La proprietà fontName dell'oggetto FontDescription può essere un nome singolo o un elenco di nomi separato da virgole. Ad esempio, in un elenco del tipo “Arial, Helvetica, _sans”, il motore del testo ricerca in primo luogo “Arial”, poi “Helvetica” e infine, se non viene trovato alcuno dei due primi caratteri, “_sans”. L'insieme di nomi di caratteri comprende tre nomi di caratteri dispositivo: “_sans”, “_serif” e “_typewriter”. Essi sono associati a caratteri dispositivo specifici che variano in base al sistema di riproduzione. È consigliabile specificare nomi predefiniti simili a quelli descritti sopra in tutte le descrizioni di caratteri che utilizzano caratteri predefiniti. Se non viene specificata alcuna proprietà fontName , viene utilizzato “_serif” per impostazione predefinita.

La proprietà fontPosture può essere impostata sul valore predefinito ( FontPosture.NORMAL ) o su corsivo ( FontPosture.ITALIC ). La proprietà fontWeight può essere impostata sul valore predefinito ( FontWeight.NORMAL ) o su grassetto ( FontWeight.BOLD ).

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

Caratteri incorporati e caratteri dispositivo

La proprietà fontLookup dell'oggetto FontDescription permette di specificare se il motore del testo ricerca un carattere dispositivo o un carattere incorporato per il rendering del testo. Se viene specificato un carattere dispositivo ( FontLookup.DEVICE ), il runtime cerca il carattere nel sistema di riproduzione. La specifica di un carattere incorporato ( FontLookup.EMBEDDED_CFF ) causa la ricerca da parte del runtime di un carattere incorporato con il nome specificato nel file SWF. Con questa impostazione funzionano soltanto i caratteri CFF (Compact Font Format) incorporati. Se il carattere specificato non viene trovato, viene utilizzato un carattere dispositivo di riserva.

I caratteri dispositivo generano dimensioni di file SWF inferiori. I caratteri incorporati garantiscono maggiore fedeltà in piattaforme diverse.

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

Modalità di rendering e approssimazione

Il rendering CFF (Compact Font Format) è disponibile a partire da Flash Player 10 e Adobe AIR 1.5. Questo tipo di rendering dei caratteri migliora la leggibilità del testo e offre una qualità di visualizzazione superiore per i caratteri di piccole dimensioni. Questa impostazione si applica soltanto ai caratteri incorporati. Questa è l'impostazione predefinita di FontDescription ( RenderingMode.CFF ) per la proprietà renderingMode . È possibile impostare questa proprietà su RenderingMode.NORMAL affinché corrisponda al tipo di rendering utilizzato da Flash Player 7 o versioni precedenti.

Se è selezionato il rendering CFF, una seconda proprietà, cffHinting , controlla il modo in cui gli steli orizzontali vengono adattati alla griglia di subpixel. Il valore predefinito, CFFHinting.HORIZONTAL_STEM , utilizza l'approssimazione CFF. Impostando questa proprietà su CFFHinting.NONE si rimuove l'approssimazione; ciò risulta utile per le animazioni e per i caratteri di grandi dimensioni.

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

Blocco e clonazione di FontDescription

Quando un oggetto FontDescription è assegnato a un ElementFormat , la proprietà locked dell'oggetto viene automaticamente impostata su true . Il tentativo di modifica di un oggetto FontDescription bloccato causa un errore di tipo IllegalOperationError . È consigliabile definire completamente un oggetto di questo tipo prima di assegnarlo a un'istanza ElementFormat .

Per modificare un'istanza FontDescription esistente, verificarne prima la proprietà locked . Se la proprietà è true , utilizzare il metodo clone() per creare una copia sbloccata dell'oggetto. Le proprietà di questo oggetto sbloccato possono essere modificate; l'oggetto può quindi essere assegnato a ElementFormat . Alle nuove linee create a partire dall'oggetto TextElement viene applicata la nuova formattazione. Le linee create precedentemente da questo stesso oggetto restano invariate.

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