Cristalab

                 ¿Quieres registrarte?

¿Cómo listar las fuentes de sistemas y las embebidas?

Por: eldervaz
30 de Julio del 2008
5128 de clabLevel
Otros artículos de eldervaz
3,288 visitas

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


Artículos Relacionados


Etiquetas actionscript_3

Comentarios | Enviar un comentario
no tiene que ver exactamente con esto pero este link les puede interesar http://www.disenorama.com/tutoriales/sifr-facil-con-jquery
Por: Inyaka
Muy interesante, gracias por el aporte, y que tanto tarda en leer las fuentes... digamos que yo tenga en mi pc unas... no se 3500 fuentes?? tardaria mucho en leer?
Por: EmiR
Buen tuto, está bueno el ejemplo ;)
Por: Zguillez
Buen tip elder, otra forma para las fuentes del sistema:


Por: Carloz.Yanez
ola si quereis mi msn es este wali11@hotmail.es
Por: walidd-blog
Excelente, muy bueno
^^
Por: Victor-Nael
BUENISIMO
Por: Aaron Gonzalez-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.