※2010/03/09/14:49 解決(一番下に追記):クリック

TLF(TextLayoutFramework)を使ったときにフォントを埋め込むにはCFFでトランスコードしたフォントを埋め込んだSWFを作って、そのSWFからフォントを読み込むという手順らしい。
が、しかし、そもそもこの形式でSWFが書き出せない。

具体的には、
Unable to transcode
とトランスコードできないというエラーになる。

まずは↓を見て同じようにやってみただけど、上記エラー
TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法:高橋文樹.com

つぎに↓を見つけ、同様の古いSDKで試してみるも、やっぱり上記エラー。。。
新テキストエンジンFlash.text.engineでOpenTypeのフォントを埋め込みで使う:SIHOのActionScript勉強メモ

SDKもいろいろ試してみた。
flex_sdk_4.0.0.4021
flex_sdk_4.0.0.4904
flex_sdk_4.0.0.7219(Beta1)
flex_sdk_4.0.0.10485(Beta2)
・・・全滅

上記、SHIHOさんはMACでやられてるようなので、MACでも試してみた。
でもだめ。。。
意味がわからん、どうしようもないわ。

原因がわかりそうな方、ぜひアドバイスをお願いします。。。

※試してみた環境
◆コンパイラ
flex_sdk_4.0.0.4021
flex_sdk_4.0.0.4904
flex_sdk_4.0.0.7219(Beta1)
flex_sdk_4.0.0.10485(Beta2)

◆実行ツール
FlashDevelop(3.0.6) + Flex4SDK (AS3プロジェクト)
FlexBuilder + Flex4SDK (ASプロジェクト)

◆OS
Win XP SP3
Mac OS10.6(FlexBuilder + flex_sdk_4.0.0.4021でのみ実行 )

◆メインAS

//swfの書き出し先にfontフォルダをつくりその中にA-OTF-ShinGoPro-Regular.otfという名前のフォントファイルを配置。
package {
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite {
[Embed(source = "font/A-OTF-ShinGoPro-Regular.otf", fontName = "Shingo", cff = "true")]
//最新のSDKを使うときは、cffをembedAsCFFに変更して試した
//[Embed(source = "font/A-OTF-ShinGoPro-Regular.otf", fontName = "Shingo", embedAsCFF = "true")]
public static var font:Class;
public function Main():void {
trace("Main.Main");
}
}
}



※2010/03/09/12:27追記
taigaさんにアドバイスを頂き、明示的にプレイヤー10にしてなかったことに気付きました。。
FlexBuilder:追加コンパイラ引数に、-target-player=10.0.12を追加
FlashDevelop:project>property>output>TargetをFashPlayer10に変更
(setting>AS3Context>Language>DefaultFlashVersionも10)
さらにモリサワ系のフォントはダメっぽいとの助言も頂き、taigaさんの記事で実績のある小塚明朝に。
メインASもtaigaさんの記事のものを拝借し、以下に更新

package {
import flash.display.Sprite;
public class Main extends Sprite {
[Embed(
source               = "font/KozMinPro-Bold.otf",
fontName             = "testFont",
mimeType             = "application/x-font",
embedAsCFF           = "true",
advancedAntiAliasing = "true"
//unicodeRange         = "U+5927, U+96c5" 大雅
)]
public static const FONT:Class;
}
}

で、結果は変わらずで同じエラーのまま。
×が消えず。

うーんなんでだろう。
ちなみにコンパイラは最新のSDKを仕様




※2010/03/09/14:03追記
FlashBuilderで試してみては?という助言のもとトライ。
FBインストール後、プロジェクトプロパティのASコンパイラーのPlayerオプションを以下のように設定。

プロジェクト作って、メインのASにソースをコピペ。
bin-debugフォルダにfontフォルダを作って、小塚フォントを設置。
まずはデフォルトのSDKで試すもいつものエラー。。。。

SDKをBeta2(flex_sdk_4.0.0.10485)に変更してみるも結果は同じ。。。

フォント含んだswfの書き出しは都市伝説なんじゃないかと思えてきた。。。





※2010/03/09/14:49追記
taigaさんからのご指摘で解決しました!
結論からいうと、srcフォルダにfontファイルを置いてなかったから。
Embedは埋め込みなので、コンパイル環境であるsrcにおいてないとダメだそうな。
bin-debugに置くのは、swfから読み込む場合だったね。
あー、なんという無能っぷり。

というわけで、正しくはこんな感じになります。

※2010/03/09/17:44 さらに追記
FlashDevelopで、同じように実行してみると、

Warning: This compilation unit did not have a factoryClass specified in Frame metadata to load the configured runtime shared libraries. To compile without runtime shared libraries either set the -static-link-runtime-shared-libraries option to true or remove the -runtime-shared-libraries option.
Build halted with errors (fcsh).

のようにWarningがでた。
これの解決は↓の方が書いてくれてました。
Flex 4で画像の埋め込みでエラー & flex-config.xmlのバージョンアップ:sub Diary (仮)

素直にコンパイルの引数に”-static-link-runtime-shared-libraries=true”を書く

これをFlashDevelopに適応してみたら上記エラーはでなくなった。
愚弟的には、
Project>Property>Compiler Optionsタブ>Advanced>AdditionalCompilerOptions>String[]配列に
-static-link-runtime-shared-libraries=true
を追加。
たぶんこれで大丈夫・・・?

とおもったら、どうやらだめっぽい。
エラーはでてないけど、生成されたswfにはFontが内包されてないっぽい。
とりあえずはFB4で作った方がいいね。
FlashDevelopでの実行についてはあとで検証する。
sub Diary (仮)さんとこの解決事項でまだ試してないのもあるしね。