2009-05-05 15 views
1

Ich verwende ein externes swf, das eine Reihe von Schriftartenklassen enthält, um die Schriftarten für meine Flash-Site zur Laufzeit zu laden und zu registrieren. (exportiert in die Bibliotheks-Flash-IDE, die dann im Rahmenskript registriert wird)Eingebettete Schriftarten in Flash mit derselben fontName-Eigenschaft

In diesem speziellen Fall enthält das swf eine Reihe verschiedener Gewichtungen derselben Familie. z.B. font roman, font italic, font light, font heavy, etc ...

Die Schriften scheinen gut zu registrieren, aber wenn ich versuche, die Schriftarten zu verwenden, sind einige der fontName-Eigenschaften dieser Schriftarten identisch. Drei erscheinen als Roman und zwei als Licht und eins ist Licht ... Also ging ich auf der Suche nach einigen albernen Codierungsfehlern, aber zu meiner Bestürzung fand ich keine. Die richtigen Schriftobjekte wurden in der richtigen Reihenfolge geladen.

Nach ziemlich vielen Tests habe ich meinen Fonts-Ordner (Vista) überprüft. Als ich die Datei für Heavy geöffnet habe, zeigt der Titel im Font Viewer Roman; Die Titel im Font Viewer passten zu dem, was ich in Flash bekommen hatte. Dieses Verhalten scheint für diese Schriftart eindeutig zu sein.

Da fontName der einzige Weg ist, wie ich einer TextField eine Schriftart zuweisen kann, bin ich ratlos, wie ich diese schöne schwere Schriftart für meine dynamischen Überschriften verwenden kann!

Es ist ein Typ-1-Schriftart

Kann jemand empfehlen, eine Ursache, eine Lösung oder eine Abhilfe?

Antwort

3

Danke, ich denke, Sie haben Recht.

Ich habe jedoch eine Möglichkeit gefunden, die Schriftart einzubetten und den Namen festzulegen.

Zunächst einmal habe ich die Cross Type 1 Postscript-Schriftart zu einem OTF

Mit dem [einbetten()] Feature jetzt in cs4 zu konvertieren, konnte ich das Attribut family verwenden, um den Schriftnamen festlegen Eigenschaft der eingebetteten Schriftart.

Im folgenden Code können Sie sehen, dass ich den Namen auf "BlaaDeeBlaa" setze und das TextFormat wird es akzeptieren und die eingebettete Schriftart anzeigen.

[Embed(source="assets/FontFileName.otf", 
          fontFamily="BlaaDeeBlaa", 
          mimeType="application/x-font")] 
var BlaaDeeBlaa:Class; 

var CH:Font = new BlaaDeeBlaa(); 

var testTxt:TextField = new TextField(); 
testTxt.defaultTextFormat = new TextFormat("BlaaDeeBlaa",28,0x000000,true); 
testTxt.embedFonts = true; 
testTxt.text = Font.enumerateFonts(false)[0].fontName; 
testTxt.autoSize = "left"; 
addChild(testTxt); 

n.b. Nur Opentype (.OTF) und Truetype (.ttf) können diese Methode eingebettet werden mit

ich auf diese Technik, die von Lee Brimelows' tutorial at gotoandlearn

gesetzt wurde
0

Es klingt wie das ist ein Problem mit der Schriftart, eher, dass Ihre Software (Flash).

Wenn es sich um eine freie Schriftart handelt, ist es durchaus möglich, dass der Autor der Schriftfamilie eine Schrift als Basis verwendet und Kopien davon für verschiedene Gesichtsstile bearbeitet hat. Möglicherweise haben sie gerade den Dateinamen geändert und vergessen, den internen Namen zu ändern.

Sie könnten die Namen selbst irgendwie bearbeiten, aber ich bin mir nicht sicher.