Representación avanzada de texto

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

ActionScript 3.0 proporciona diversas clases en el paquete flash.text para controlar las propiedades del texto mostrado, incluidas las fuentes incorporadas, la configuración de suavizado, el control del canal alfa y otras configuraciones específicas. La Referencia de ActionScript 3.0 proporciona descripciones detalladas de estas clases y propiedades, incluidas las clases CSMSettings, Font y TextRenderer.

Uso de fuentes incorporadas

Si se especifica una fuente específica para un objeto TextField en la aplicación, Flash Player o AIR buscarán una fuente de dispositivo (una fuente que resida en el equipo del usuario) que tenga el mismo nombre. Si no encuentra esa fuente en el sistema o si el usuario tiene una versión algo distinta de una fuente con ese nombre, el aspecto del texto visualizado puede ser muy distinto del esperado. De forma predeterminada, el texto aparece en fuente Times Roman.

Para asegurarse de que el usuario ve la fuente correcta, se puede incorporar dicha fuente al archivo SWF de la aplicación. Las fuentes incorporadas ofrecen varias ventajas:

  • Los caracteres de las fuentes incorporadas se suavizan, por lo que sus bordes parecen más lisos, especialmente en textos grandes.

  • Se puede girar textos con fuentes incorporadas.

  • El texto de una fuente incorporada se puede convertir en transparente o semitransparente.

  • Se puede utilizar el estilo CSS de kerning (ajuste entre caracteres) con fuentes incorporadas.

La mayor limitación del uso de fuentes incorporadas es que aumentan el tamaño del archivo o el tiempo de descarga de la aplicación.

El método preciso de incorporar un archivo de fuente en el archivo SWF de la aplicación varía de un entorno de desarrollo a otro.

Tras incorporar una fuente, es necesario comprobar que un objeto TextField utiliza la fuente incorporada correcta:

  • Establezca el valor de la propiedad embedFonts del objeto TextField en true .

  • Cree un objeto TextFormat, establezca su propiedad fontFamily en el nombre de la fuente incorporada y aplique el objeto TextFormat al objeto TextField. Al especificar una fuente incorporada, la propiedad fontFamily solo debe contener un único nombre; no se puede utilizar una lista de nombres de fuentes delimitados por comas.

  • Si se utilizan estilos CSS para definir fuentes de objetos TextField o componentes, hay que establecer la propiedad CSS font-family en el nombre de la fuente incorporada. Si se desea especificar una fuente incorporada, la propiedad font-family debe contener un solo nombre, no una lista de nombres.

Incorporación de una fuente en Flash

La herramienta de edición de Flash permite incorporar prácticamente cualquier fuente que esté instalada en el sistema, incluidas las fuentes TrueType y las fuentes Postscript de tipo 1.

Existen varias formas de incorporar fuentes en una aplicación, entre las que se incluyen:

  • Establecer las propiedades de fuente y estilo de un objeto TextField en el escenario y hacer clic en la casilla de verificación Fuentes incorporadas.

  • Crear un sí­mbolo de fuente y hacer referencia al mismo.

  • Crear y utilizar una biblioteca compartida en tiempo de ejecución que contenga sí­mbolos de fuente incorporados.

Para obtener detalles sobre cómo incorporar fuentes en aplicaciones, consulte "Incorporación de fuentes para campos de texto dinámico o de entrada" en Uso de Flash .

Incorporación de una fuente en Flex

Existen varias formas de incorporar fuentes en una aplicación Flex, entre las que se incluyen:

  • Utilizar la etiqueta de metadatos [Embed] en un script

  • Uso de la declaración de estilos @font-face

  • Establezca una clase para la fuente y utilice la etiqueta [Embed] para incorporarla.

En una aplicación Flex solo se pueden incorporar directamente fuentes TrueType. Las fuentes que están en otro formato, como las PostScript de tipo 1, se pueden incorporar primero en un archivo SWF de Flash Professional mediante la herramienta de edición de Flash y, posteriormente, ese archivo SWF se puede usar en la aplicación Flex. Para obtener más información sobre la utilización de fuentes en Flex incorporadas desde archivos SWF, consulte la Guía del desarrollador de Flex 4 .

Control de la nitidez, el grosor y el suavizado

De forma predeterminada, Flash Player o AIR determinan la configuración de los controles de la visualización del texto, como la nitidez, el grosor y el suavizado, cuando el texto cambia de tamaño, de color o se muestra con distintos fondos. En algunos casos, como cuando se dispone de un texto muy pequeño o muy grande, o un texto en diversos fondos únicos, es posible que se desee controlar esta configuración. Es posible reemplazar la configuración de Flash Player o AIR mediante la clase flash.text.TextRenderer y sus clases asociadas, como CSMSettings. Estas clases ofrecen un control preciso de la calidad de representación del texto incorporado. Para obtener más información sobre las fuentes incorporadas, consulte Uso de fuentes incorporadas .

Nota: la propiedad flash.text.TextField .antiAliasType debe contar con el valor AntiAliasType.ADVANCED para que se pueda establecer la nitidez, el grosor o la propiedad gridFitType o para utilizar el método TextRenderer.setAdvancedAntiAliasingTable() .

En el ejemplo siguiente se aplican propiedades de modulación de trazo continua y formato personalizados a texto visualizado con una fuente incorporada denominada myFont . Cuando el usuario hace clic en el texto mostrado, Flash Player o Adobe AIR aplican la configuración personalizada:

var format:TextFormat = new TextFormat(); 
format.color = 0x336699; 
format.size = 48; 
format.font = "myFont"; 
 
var myText:TextField = new TextField(); 
myText.embedFonts = true; 
myText.autoSize = TextFieldAutoSize.LEFT; 
myText.antiAliasType = AntiAliasType.ADVANCED; 
myText.defaultTextFormat = format; 
myText.selectable = false; 
myText.mouseEnabled = true; 
myText.text = "Hello World"; 
addChild(myText); 
myText.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(event:Event):void 
{ 
    var myAntiAliasSettings = new CSMSettings(48, 0.8, -0.8); 
    var myAliasTable:Array = new Array(myAntiAliasSettings); 
    TextRenderer.setAdvancedAntiAliasingTable("myFont", FontStyle.ITALIC, TextColorType.DARK_COLOR, myAliasTable); 
}