Fonts auslagern. [UPDATE]

Es macht Sinn, verwendete Schriftarten in eine Flashanwendung einzubinden – so sind sie unabhängig vom Zielsystem verfügbar, und nicht zuletzt kann man erst dann (Alpha-)Tweens auf sie anwenden. Andererseits machen sie die Flashanwendung zum Teil sehr groß. Die Lösung? Die Schriftarten erstmal in eine separate SWF auslagern:

Zu beachten: Die Klasse muss Sprite extenden; der FontName sollte ein anderer sein als der Fontname im System (um diesen nicht zu überdecken); Schriftschnitte wie bold oder italic müssen explizit eingebunden werden. Der Übersichtlichkeit halber benenne ich die Fonts (FontName) genauso wie die Klasse, in die sie embedded werden (hier: “Foo”)

Diese Klasse wird nun kompiliert, und die SWF unter einem Pfad, zB “fonts.swf” abgelegt. Unter diesem Pfad kann sie nun, etwa im Rahmen einer Preloader-Queue mit weiteren Assets, dynamisch von der eigentlichen SWF nachgeladen werden:

Zu beachten hierbei: Es muss der komplette Package-Pfad (“x.y.z.Fonts”) an ApplicationDomain.getDefinition() übergeben werden! Nur der Klassenname genügt nicht.

Außerdem: Wann immer man den Text des entsprechenden TextField (neu) gesetzt hat, muss das TextFormat mit dem eingebundenen Font (neu) zugewiesen werden. Die Property embedFonts setzt man auf true:

hth.