Operazioni con i caratteriFlash 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);
}
}
}
|
|