2012-04-11 20 views
8

He revisado todos los temas sobre la incrustación de fuentes en AS3 que pude encontrar, e intenté todas las soluciones. Probablemente me esté perdiendo algo obvio, pero no entiendo completamente lo que estoy haciendo, así que por favor guíame en la dirección correcta. Muchas de las respuestas involucran Flash Builder u otra herramienta pero utilizo FlashDevelop. No tengo idea de si eso importa.¿Por qué no puedo visualizar las fuentes incrustadas en AS3?

tengo esta línea en mis Main.as:

[Embed(source = "assets/SKA_75_marul_CE_extended.ttf", 
fontName = "SKA_75_marul_CE_extended", 
fontWeight = "bold", 
advancedAntiAliasing = "true", 
mimeType = "application/x-font")] 
public static var SKA_75_marul_CE_extended:String; 

Y esto existe en el constructor de una Sprite extendida llamada Pointer.as:

var format:TextFormat = new TextFormat(); 
format.font = "SKA_75_marul_CE_extended"; 
format.color = 0xFFCCCC; 
format.size = 20;   

var label:TextField = new TextField(); 
label.defaultTextFormat = format; 
label.text = "test"; 
label.embedFonts = true; 
label.antiAliasType = AntiAliasType.ADVANCED; 

//label.setTextFormat(format); --> I tried this too, didn't work... 
label.defaultTextFormat = format; 
label.x += img.width + 50; 
this.addChild(label); 

La única forma que he encontrado para que muestre algo es si desactivo embedFonts. Intenté incrustar C: /windows/fonts/arial.ttf sin éxito.

Parece que la incrustación de fuentes es un arte oscuro como ningún otro y debo reconocerlo después de 1 hora de lucha. Por favor envía ayuda.

ACTUALIZACIÓN:

Aquí está el código de trabajo, resulta que era debido a tener el orden correcto de las operaciones ...:

[Embed(source="assets/SKA_75_marul_CE_extended.ttf", 
       fontName = "myFont", 
       mimeType = "application/x-font", 
       fontWeight="normal", 
       fontStyle="normal", 
       unicodeRange="U+0020-U+007E", 
       advancedAntiAliasing="true", 
       embedAsCFF="false")] 
     private var myEmbeddedFont:Class; 

      var tf:TextFormat = new TextFormat("myFont", 20,0xffffff); 

      var t:TextField  = new TextField; 
      t.embedFonts  = true; // very important to set 
      t.defaultTextFormat = tf; 
      t.text    = text; 
      t.x += img.width + 50; 
      t.width = 700; 
      this.addChild(t); 
+0

Gracias por su respuesta. El "orden correcto de las operaciones" resultó ser la clave –

Respuesta

5

Es más DEFINITIVAMENTE un "arte oscuro" para conseguir fuentes incrustadas para trabajar bien. Primero verificaría si "SKA_75_marul_CE_extended" es el nombre real que tiene la fuente en sus metadatos (utilicé Suitcase Fusion para extraer el nombre). También he visto fuentes TTF que Flash simplemente se niega a incrustar (tal vez los metadatos no válidos causen fallas en el sistema de inserción). Continuaría probando con una fuente de trabajo conocida hasta que encuentre el problema real en caso de que se trate de un problema de archivo de fuente.

Una cosa que noté es "var públicamente estática SKA_75_marul_CE_extended: String;" ... ¿no debería ser del tipo Clase?

FlashDevelop referencia de la fuente de inserción de alguien que tenía problemas: http://www.flashdevelop.org/community/viewtopic.php?p=28301

+0

Finalmente lo puse a funcionar, estoy aceptando su respuesta y pondré el código de trabajo en la pregunta. – joon

Cuestiones relacionadas