Haciendo referencia a mi anterior tip de embeber fuentes, ahora pasaremos a listar las fuentes que tenemos instaladas en el sistema y, por separado, las fuentes que tenemos embebidas. Nos valdremos del componente ComboBox para poder tenerlo ordenado.
Para eso utilizamos el método enumerateFonts de la clase Font, que nos pide como parámetro un Boolean, que de estar en true, nos lista las fuentes del sistema y las embebidas, y de estar en false, nos muestra sólo las embebidas.
Abrimos flash y colocamos el siguiente código:
Código :
var allFonts:Array = Font.enumerateFonts(true);
Y para listar, lo hacemos en un for...in extrayendo la propiedad fontName
Código :
for (var i in allFonts) { trace( (allFonts[i] as Font).fontName ); }
Veremos en la ventana del output la relación de fuentes de nuestro computador, ahora lo agregaremos a un comboBox, quedando el código así:
Código :
var allFonts:Array = Font.enumerateFonts(true); for (var i in allFonts) { comboFont.addItem({label:(allFonts[i] as Font).fontName, data:i} ); }
Y para poder interactuar un poco, le agregamos un listener.
Código :
comboFont.addEventListener(Event.CHANGE, cambiarFuentesSistema); function cambiarFuentesSistema(event:Event):void { cambiarFuente(ComboBox(event.target).selectedItem.label, false); }
Crearemos una función llamada cambiarFuente, donde modificaremos el TextFormat y cambiaremos la fuente para poder ver la diferencia. A esta función le pasaremos la fuente seleccionada.
Código :
function cambiarFuente(fuente:String, embed:Boolean):void{ txt_fmt.font=fuente; campo.autoSize=TextFieldAutoSize.CENTER; campo.defaultTextFormat=txt_fmt; campo.embedFonts=embed; campo.text="esta es una prueba"; if(embed) campo.rotation = 45; else campo.rotation = 0; }
Fuentes Embebidas
El proceso es el mismo, solo cambia el false por el true en el método enumerateFonts:
Código :
var embeddedFonts:Array = Font.enumerateFonts(false); embeddedFonts.sortOn(Font2, Array.CASEINSENSITIVE); for (i in embeddedFonts) { trace((embeddedFonts[i] as Font).fontName) }
Tranquilamente lo ponemos en otro combo box y tenemos el siguiente resultado
Entonces ya podemos jugar un poco con esto
El código completo es:
Código :
import fl.events.*; campo.x = 100; campo.y = 50; campo.selectable=false; // var txt_fmt:TextFormat=new TextFormat(); txt_fmt.size=24; // // //Fuentes del sistema var allFonts:Array = Font.enumerateFonts(true); for (var i in allFonts) { comboFont.addItem({label:(allFonts[i] as Font).fontName, data:i} ); } // // //Fuentes embebidas var embeddedFonts:Array = Font.enumerateFonts(false); for (i in embeddedFonts) { comboFont2.addItem({label:(embeddedFonts[i] as Font).fontName, data:i} ); } // // //listener comboFont.addEventListener(Event.CHANGE, cambiarFuentesSistema); comboFont2.addEventListener(Event.CHANGE, cambiarFuentesEmbebidas); // // // function cambiarFuentesSistema(event:Event):void { cambiarFuente(ComboBox(event.target).selectedItem.label, false); } function cambiarFuentesEmbebidas(event:Event):void { cambiarFuente(ComboBox(event.target).selectedItem.label, true); } function cambiarFuente(fuente:String, embed:Boolean):void{ txt_fmt.font=fuente; campo.autoSize=TextFieldAutoSize.CENTER; campo.defaultTextFormat=txt_fmt; campo.embedFonts=embed; campo.text="esta es una prueba"; if(embed) campo.rotation = 45; else campo.rotation = 0; }
Archivos del tip
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Inyaka el 30 de Julio de 2008
Por EmiR el 30 de Julio de 2008
Por Zguillez el 31 de Julio de 2008
Por Carloz el 31 de Julio de 2008
Por walidd el 31 de Julio de 2008
Por Victor-Nael el 01 de Agosto de 2008
Por Aaron Gonzalez el 21 de Agosto de 2008
Por Otaku RzO el 05 de Mayo de 2010
Buen ejemplo