いくつかのフレーズを翻訳するために、フラッシュ (および Android および最終的には iOS 用の AIR) を使用するプロジェクトがあります。ほとんどのフォントは問題ありませんが、ユーザーが言語を選択した後に読み込む必要があるフォントもあります。1 年以上前に、いくつかの swf ファイル (ベンガル語とウルドゥー語) を生成し、Web サーバーに配置しました。必要に応じてフラッシュアプリケーションがそれらをロードし、すべて問題ありません...しかし、プロジェクトの実装に近づいているため、パイプラインにある他の言語のswfファイルを生成する必要があると考えましたが、何らかの理由でそれを管理できません! 言うまでもなく、作成した 2 つのフォントの元の AS3 ソースを置き忘れました (整理しました)。
package
{
import flash.display.Sprite;
import flash.events.Event;
public class ArabicF extends Sprite
{
[Embed(source = "trado.ttf",
fontName = "ArabicX",
fontFamily = "ArabicY",
fontWeight = "normal",
fontStyle = "normal",
mimeType = "application/x-font",
advancedAntiAliasing="true",
embedAsCFF="true")]
public static const ArabicZ:Class;
}
}
これを機能させるために追加したので、これははるかに単純な形式から拡張され、true と false のすべての順列を試したに違いありません。swf を正常にロードしましたが、クラスを抽出できません。swf クラスとパラメーターの前に埋め込んだ 2 つのフォントはすべて同じ名前で、正常に動作します (つまり、Urdu.swf の場合は後で: var FontClass:Class = evt.target.applicationDomain.getDefinition("Urdu") as Class; )。そして Font.registerFont(FontClass.Urdu);
上記の Arab.swf を使用した呼び出し元の .as アプリケーションで、試してみます
trace("1 Arabic "+evt.target.applicationDomain.hasDefinition("ArabicF"));
trace("2 Arabic "+evt.target.applicationDomain.hasDefinition("Arabic"));
trace("3 ArabicX "+evt.target.applicationDomain.hasDefinition("ArabicX"));
trace("4 ArabicY "+evt.target.applicationDomain.hasDefinition("ArabicY"));
trace("5 ArabicZ "+evt.target.applicationDomain.hasDefinition("ArabicZ"));
しかし、すべてfalseを返します
PS はまた、fontswf.bat を使用して Arabic.swf を生成しようとしましたが、これはロードされた非常によく似た swf ファイルを作成するように見えますが、そこからクラスを抽出できません。
PPS 私は flashdevelop を使用しており、フォント swf は AS3 標準プロジェクト コンパイラ オプションとして設定されています。