2012-04-11 14 views
8

Ich habe alle Themen zum Einbetten von Fonts in AS3 durchgelesen, die ich finden konnte, und alle Lösungen ausprobiert. Ich vermisse wahrscheinlich etwas Offensichtliches, aber ich verstehe nicht ganz, was ich tue. Bitte leite mich in die richtige Richtung. Viele der Antworten beziehen sich auf Flash Builder oder ein anderes Tool, aber ich verwende FlashDevelop. Keine Ahnung, ob das zählt.Warum kann ich eingebettete Schriftarten nicht in AS3 anzeigen?

Ich habe diese Zeile in meinem 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; 

Und diese besteht im Konstruktor eines erweiterten Sprite namens 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); 

Der einzige Weg, die ich gefunden habe um es anzuzeigen, ist alles, wenn ich EmbedFonts ausschalten. Ich habe versucht, C: /windows/fonts/arial.ttf ohne Erfolg einzubetten.

Es scheint, dass die Einbettung von Schriften ist eine dunkle Kunst wie keine andere und ich muss zugeben, nach 1 Stunde kämpfen. Bitte senden Sie Hilfe.

UPDATE:

Hier ist der Arbeitscode, stellt sich heraus, es fällig war die richtige Reihenfolge der Operationen mit ...:

[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

Vielen Dank für Ihre Antwort. "Richtige Reihenfolge der Operationen" erwies sich als der Schlüssel –

Antwort

5

Es ist am ENDGÜLTIG eine „dunkle Kunst“ zu bekommen eingebettete Schriftarten, um richtig zu funktionieren. Ich würde zuerst prüfen, ob "SKA_75_marul_CE_extended" der tatsächliche Name ist, den die Schriftart in ihren Metadaten hat (Ich habe Suitcase Fusion verwendet, um den Namen zu extrahieren). Ich habe auch TTF-Fonts gesehen, die Flash einfach nicht einbetten will (möglicherweise führt eine ungültige Metadaten dazu, dass das Embed-System einen Fehler macht). Ich würde weiterhin mit einer bekannten funktionierenden Schriftart testen, bis Sie das eigentliche Problem finden, falls es ein Problem mit der Schriftartdatei ist.

Eine Sache, die ich bemerkte, ist "öffentliche statische var SKA_75_marul_CE_extended: String;" ... sollte das nicht vom Typ Klasse sein?

FlashDevelop Schrift einbetten Bezug von jemandem, der Probleme hatte: http://www.flashdevelop.org/community/viewtopic.php?p=28301

+0

Ich habe es endlich zur Arbeit, ich akzeptiere Ihre Antwort und ich werde den Arbeitscode in die Frage stellen. – joon