El objeto
FontDescription
se utiliza junto con
ElementFormat
para identificar una fuente y definir algunas de sus características. Entre estas características se encuentran el nombre de la fuente, grosor, postura, representación y el modo de localizar la fuente (en el dispositivo en lugar de incorporada).
Nota:
FTE no admite fuentes de Tipo 1 o fuentes de mapa de bits, como las de Tipo 3, ATC, sfnt-wrapped CID o Naked CID.
Definición de características de fuentes (objeto FontDescription)
La propiedad
fontName
del objeto
FontDescription
puede ser un único nombre o una lista de nombres separadas por comas. Por ejemplo, en una lista como "Arial, Helvetica, _sans", el motor de texto busca primero "Arial", después "Helvetica" y, por último, "_sans", si no encuentran alguna de las dos primeras fuentes. El conjunto de nombres de fuente incluye tres nombres genéricos de fuentes de dispositivo: “_sans”, “_serif” y “_typewriter”. Dependiendo del sistema de reproducción, se corresponden con fuentes de dispositivo específicas. Se recomienda especificar nombres predeterminados como estos en todas las descripciones de fuentes que utilizan fuentes de dispositivo. Si no se especifica
fontName
, se utiliza “_serif” de forma predeterminada.
La propiedad
fontPosture
se puede establecer en su valor predeterminado (
FontPosture.NORMAL
) o en cursiva (
FontPosture.ITALIC
). La propiedad
fontWeight
se puede establecer en su valor predeterminado (
FontWeight.NORMAL
) o en negrita (
FontWeight.BOLD
).
var fd1:FontDescription = new FontDescription();
fd1.fontName = "Arial, Helvetica, _sans";
fd1.fontPosture = FontPosture.NORMAL;
fd1.fontWeight = FontWeight.BOLD;
Fuentes incorporadas frente a fuentes de dispositivo
La propiedad
fontLookup
del objeto
FontDescription
especifica si el motor de texto debe buscar una fuente de dispositivo o una fuente incorporada para procesar el texto. Si se especifica una fuente de dispositivo (
FontLookup.DEVICE
), el tiempo de ejecución buscará la fuente en el sistema de reproducción. La especificación de una fuente incorporada (
FontLookup.EMBEDDED_CFF
) hace que el tiempo de ejecución busque una fuente incorporada con el nombre especificado en el archivo SWF. Con esta configuración solo funcionan las fuentes CFF (de formato de fuente compacto) incorporadas. Si no se encuentra la fuente especificada, se utiliza una fuente de dispositivo alternativa.
Las fuentes de dispositivo suponen un tamaño de archivo SW menor. Las fuentes incorporadas ofrecen una mayor fidelidad entre plataformas.
var fd1:FontDescription = new FontDescription();
fd1.fontLookup = FontLookup.EMBEDDED_CFF;
fd1.fontName = "Garamond, _serif";
Modo de representación e interpolación
La representación de CFF (Formato de fuente compacto) se encuentra disponible a partir de Flash Player 10 y Adobe AIR 1.5. Este tipo de representación de fuentes hace que el texto sea más legible y permite obtener una visualización de mayor calidad de las fuentes a tamaños reducidos. Esta configuración solo se aplica a las fuentes incorporadas.
FontDescription
toma como predeterminada esta configuración (
RenderingMode.CFF
) para la propiedad
renderingMode
. Esta propiedad se puede establecer en
RenderingMode.NORMAL
para que coincida con el tipo de representación utilizado por Flash Player 7 o versiones anteriores.
Cuando está seleccionada la representación CFF, una segunda propiedad,
cffHinting
, controla cómo se ajustan los trazos horizontales de una fuente a la cuadrícula de subpíxeles. El valor predeterminado,
CFFHinting.HORIZONTAL_STEM
, utiliza la interpolación CFF. Al establecer esta propiedad en
CFFHinting.NONE
se elimina la interpolación, lo que resulta adecuado para animaciones o para tamaños de fuente grandes.
var fd1:FontDescription = new FontDescription();
fd1.renderingMode = RenderingMode.CFF;
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;
Bloqueo y clonación de FontDescription
Si un objeto
FontDescription
se asigna a
ElementFormat
, su propiedad
locked
se establece automáticamente en
true
. Si se intenta modificar un objeto
FontDescription
bloqueado, se generar un error de tipo
IllegalOperationError
. Se recomienda definir completamente un objeto así antes de asignarlo a una instancia de
ElementFormat
.
Si desea modificar un elemento
FontDescription
existente, compruebe antes su propiedad
locked
. Si es
true
, utilice el método
clone()
para crear una copia no bloqueada del objeto. Las propiedades de este objeto desbloqueado se pueden cambiar y, posteriormente, asignarlo a
ElementFormat
. Las nuevas líneas que se creen a partir de este
TextElement
tendrán el nuevo formato. Las líneas anteriores creadas a partir de este mismo objeto no cambian.
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);
}
}
}
|
|
|