Hallo Flashforum.
Hab mal ein kleines Tutorial zum Thema createTextField und Einbettung von Schriftarten geschrieben.
Einige von euch haben sicher schonmal mit createTextField() gearbeitet und hatten dabei das Problem das sich die schriften mit TextField.embedFonts = true; nicht einbetten liessen sonden schlichtweg nicht angezeigt wurden.
Zunächst schaffen wir erstmal die Vorraussetzungen um etwas anzuzeigen.
Wir erzeugen ein leeres Textfeld und weisen ihm Text, Einbettung und ein Textformat zu:
ActionScript:
_root.createTextField("mytext", 1, 20, 100, 250, 50);
mytext.html = true;
mytext.htmlText = "Bin <b>ich</b><i> eingebettet?</i>";
mytext.embedFonts = true;
mf = new TextFormat();
mf.font = "Verdana";
mf.size = 20;
mytext.setTextFormat(mf);
Transparenz kann nur bei eingebetteten Fonts angewendet werden, deshalb fügen wir zur besseren Erkennbarkeit noch _alpha hinzu:
Wenn ihr diesen Film nun testet, werdet ihr jetzt keinen text sehen können weil der Text so (trotz mytext.embedFonts = true) nicht eingebettet ist. Wenn ihr es auskommentiert könnt Ihr den Text zwar lesen, aber Eigenschaften wie _alpha oder _rotation funktionieren nicht. Davon abgesehen wird der Text auf Sytemen die diese Shriftart nicht installiert haben durch eine andere ersetzt.
Lösungwege:
Wir haben die Möglichkeit in der Biliothek Schriftartensymbole anzulegen.
Also rechts-oben im menü der Bibliothek auf "Neue Schiftart" klicken und die Schriftart, die im Textformat angegeben ist, und auswählen.
Wichtig: Wenn wir haben hier die Möglichkeit fett und kursiv auszuwählen, wenn wir das tun bedeutet das nicht das wir dann einen normalen, einen fetten und einen kursiven Schriftsatz eingebettet haben. Wenn unser Text fette und/oder kursive Auszeichungen aufweist müssen wir für 2 bzw. 3 Schriftartensymbole anlegen.
Dann müssen wir einen Verknüfungnamen für unsere Schriftartsymbole zuweisen (rechte Maustaste auf Symbol >> Verknüpfung >> Export für ActionScript >> Namen eingeben).
Wichtig: Wenn wir eine Schriftart mehrfach als Symbol verwenden um fette und kursive einzubetten darf keiner der Verknüpfungsnamen dem Namen der Schriftart verwenden, da sonst myformat.font vorrangig den Verknüpfungsnamen benutzt.
Beispiel:
Wir wollen wie oben Text mit html-Tags für fett und kursiv einbetten.
Unser Textformat.font ist Verdana.
Wenn wir nun in der Bibliothek den Verknüpfungsnamen "Verdana" wählen wird das Textfeld ausschliesslich die Schriftart verwenden die den Verknüpfungsnamen "Verdana" benutzt.
Der fette oder kursive Schriftsatz wird dann ignoriert, auch wenn er als Schriftart Verdana hat.
Um das zu umgehen betten wir die Verdana in unserem Fall dreimal ein und geben ihr Verknüpfungsnamen wie VerdanaNormal, VerdanaFett, VerdanaKursiv.
Der Verknüfungsname ist also im Prinzip egal, es muss nur einer vergeben werden.
Wenn wir das getan haben sollte unser Text alle drei Varianten der Verdana darsellen und eine Transparenz sollte möglich sein.
Nachteile der Schiftartensymbolen sind das sie im ersten Frame geladen werden (verspäteter Preloader) und das die gesamte Schriftart eingebettet wird (ein Drittel der eingebetteten Zeichen ist für den deutschen Schriftgebrauch irrelevant).
Eine Verdana mit fettem und kursivem Satz braucht so ca. 60KB.
Vorteil ist die Nutzbarkeit über Shared Libary, bei grösseren Projekten.
Ein weiterer Lösungsweg wäre leere Textfelder mit eingebundenen Schiftarten (Eigenschafteninspektor >> Zeichen) ausserhalb des sichtbaren Bereichs auf die Bühne zu legen. Auch hier muss für fett und kursiv ein jeweils noch ein Textfeld dazu. Der Vorteil dieser Methode ist das wir wieder kontrolle über das Preloadverhalten haben und auswählen können welche Zeichen wirklich eingebunden werden müssen.
Der Nachteil ist, dass wir so nicht mit Shared Libarys arbeiten können.
Denkbar wäre auch ein MovieClip der die eingebetteten Schriftarten als leere textfelder enthält. Diesen kann man mit einem Verknüpfungsnamen versehen und Exportieren. Im benötigten Film holt man diesen dann mit
ActionScript:
_root.attachMovie("schriftclip", "embedded", 9999999, {_x:-500, _y:-500});
auf die Bühne und positioniert ausserhalb.
So kann man Einfluss auf die einzubettenden Zeichen nehmen und braucht gleichzeitig nicht auf Möglichkeiten von Shared Libarys zu verzichten.
Ich hoffe das war verständlich und eventuell hilfreich
gruss
michael