Manejo de fuentes en Flex

Escrito por: janet
Fecha: Octubre 1, 2008 A las 7:48 pm

Una tarea muy importante en Flex es la de incluir fuentes en tu aplicación. Esta se puede realizar de diferentes maneras, la mas común es utilizando el tag @font-face por medio de CSS, ya sea desde una hoja de estilos externa o empleando el tag mx:Style dentro de tu MXML.
Nota:Este método lo puedes utilizar solamente para fuentes del tipo True Type (ttf) y Open Type (otf). Para utilizar fuentes en otro formato, es necesario incluir las fuentes en un archivo .swf.

Ejemplo:

<mx:Style>

@font-face {

src: url(“fonts/Futura-Condensed-Bold.ttf”);

fontFamily: futuraB;

advancedAntiAliasing: true;

font-weight:bold;

font-style:normal;

}

</mx:Style>

Es muy importante asignar el fontWeight y fontStyle adecuado. Por ejemplo si en el código anterior asignáramos un fontStyle:italic, el debbuger nos arrojaría el siguiente error, donde indica que ese estilo no se encuentra en la fuente:

exception during transcoding: Font for alias ‘futuraB’ with italic style was not found at: file:/E:/Flex Projects/Fonts/src/fonts/Futura-Condensed-Bold.ttf …

El manejo de fuentes en flex puede ser en ocasiones una tarea muy frustrante, porque te puedes topar con errores que no te brindan ni una pista de lo que puede estar mal y no hay mucha documentación al respecto; uno muy común con el que nos hemos encontrado es el siguiente:

exception during transcoding: Unexpected exception encountered while reading font file ‘/E:/Flex Projects/Fonts/src/fonts/Futura-Condensed-Bold.ttf’ …

Las causas de este error pueden ser varias, por ejemplo, si se asigna un valor de advancedAntiAliasing:true, cuando la fuente que estas tratando de incluir no lo soporta. Para descartar que alguna propiedad este causando conflicto, hay que poner en el tag @font-face solamente el src y fontFamily.

Otra causa a este error es que el manejador de fuentes de actionscript no interpreta tu fuente correctamente. Hay 3 manejadores que trascodean fuentes: flash.fonts.JREFontManager, flash.fonts.AFEFontManager y flash.fonts.BatikFontManager.
En teoría, estos manejadotes tienen capacidades diferentes y dependiendo del tipo de fuente automáticamente se selecciona el que “mejor” haga el trabajo, pero en ocasiones no sucede de esta manera; así que una alternativa es forzar al compilador a usar un manejador AFEFontManager que parece ser el que tiene mejor soporte para fuentes. Para esto es necesario hacer lo siguiente:

Clic en Project -> propiedades.
Una vez abierto la ventana, seleccionar la sección de Flex Compiler.
En la caja de texto additional compiler arguments agregar
-managers=flash.fonts.AFEFontManager



Archivo en : Desarrollo Web, InDatcom, RIA
Comentarios :
 

Deja una respuesta