3

多分あなたは私が抱えている問題で私を助けることができます。プロジェクトのURLは次のとおりです。http: //www.mauriciogiraldo.com/vgline/beta/

これは、Drupalを利用したAMFPHP接続のAS3Webアプリです。データは問題なくFlashに送られます。私は、UTF-8が問題なくすべてであることを確認しました。この問題は、次のURLでよくわかります。

http://www.mauriciogiraldo.com/vgline/beta/#/146

そのリンクのプレーンテキストバージョン:

http://www.mauriciogiraldo.com/vgline/node/146

(男の名前に注意してください)

フォントはInconsolataですが、必要に応じてモノスペースのオープンソースフォントを使用できます。ライブラリに「新しいフォント」メニューだけでなく、フォント(すべてを埋め込むために動的テキストフィールド、完全な文字セットを選択したこともあります)が埋め込まれていることがわかります。Inconsolataは、CS4オーサリングツールにアスタリスクで表示されます(Adobeのドキュメントによると、これはモノが埋め込まれていることを意味します)。

私は他のフォント埋め込みオプションを試しましたが無駄になりました。Inconsolataは、オーサリングで使用するとその「ō」文字を持っているように見えますが、動的テキストには表示されません。

私が抱えているもう1つの問題は、静的テキストフィールドを使用すると、フォントが埋め込まれない(WTF)ことです。フィールドを動的に変換する必要があり、それが機能します(左上の「ビデオゲーム履歴タイムライン」は動的テキストフィールドですが、そうでない方がいいですが...それなど)。静的テキストフィールドを使用すると、フォントはある種のTimesNewRomanフォントに変換されます。

テキストはAS3で作成されます(検索結果も同様)。

HTML(.htmlText)を介してテキストを埋め込み、CSSでスタイルを設定しています。

コード全体はオープンソースであり、ここで見つけることができます:

http://code.google.com/p/vgline/

テキストフィールドに入力する方法の例は、次の場所にあります。

http://code.google.com/p/vgline/source/browse/trunk/src/TLDetail.as

このようなコードのスニペットは次のとおりです。

 var ss:StyleSheet = new StyleSheet();
 var css:String = ".title { color:#333333; font-family:Inconsolata; font-size:16; leading:2; } ";
 css += ".date { color:" + StringUtils.rgb2web(data.color.r, data.color.g, data.color.b) + "; font-family:Inconsolata; font-size:14; leading:4; } ";
 css += ".text { color:#333333; font-family:Inconsolata; font-size:11; leading:4; } ";
 css += ".link { color:#000000; font-family:Inconsolata; font-size:11; leading:4; text-decoration:underline; } ";
 css += "a:hover { text-decoration:none; } ";
 ss.parseCSS(css);
 var fechahtml:String = "<span class='date'>";
 if (data.mes != null && data.dia != null) {
         fechahtml += data.dia + " " + StringUtils.month2name(data.mes) + " " + data.anotext;
 } else if (data.mes != null) {
         fechahtml += StringUtils.month2name(data.mes) + " " + data.anotext;
 } else {
         fechahtml += data.anotext;
 }
 fechahtml += "</span>";
 date_txt = new TextField();
 date_txt.width = 275;
 date_txt.embedFonts = true;
 date_txt.antiAliasType = "advanced";
 date_txt.styleSheet = ss;
 date_txt.htmlText = fechahtml;
 date_txt.x = 8;
 date_txt.y = 3;

 addChild(date_txt);

どんな助けでも大歓迎です。私は本当に何をすべきかわかりません。

ありがとう

4

3 に答える 3

3

フォントの埋め込みは、フラッシュを作成するときに私のお気に入りの敵の1つです。しかし、壁の穴(および頭のでこぼこ)の数を減らす方法を見つけました。

  1. フォントをライブラリに埋め込む
  2. フォントシンボル(ライブラリ内)を-classを拡張するカスタムクラスにリンクします(今Fontはそれを呼び出しましょう)MyFont
  3. オブジェクトを作成しTextFormatます(それを呼びましょうfrmt
  4. セットするfrmt.font = new MyFont().fontName
  5. 作成しますTextField(それを呼びましょうtf
  6. 割り当てtf.embedFonts = truetf.defaultTextFormat = frmt

お役に立てれば。

于 2010-04-15T11:27:36.833 に答える
1

AS の html タグによって指定された太字のテキストが表示されない Arial Regular (HTML が有効になっている動的テキスト フィールド内) で同様の問題が発生しました。

フォントを Lucida Sans に変更すると、すべて正常に機能しました。

于 2010-04-15T11:18:06.907 に答える
0

後で見てみます。

やや聞き覚えがあるように聞こえます。多言語 Web サイトで作業していたときに、IDE (flash cs3) に表示されていても、静的テキスト フィールドの swf に文字が表示されないという同じ問題がありました。当時の問題は、Arial のギリシャ文字にありました。適切なギリシャ文字を含む別のバージョンの Arialをダウンロードする必要があり、それで修正されました。

おそらく同じ問題で、同じフォントの別のバージョンが必要です。

Courier NewまたはLucida Consoleで同じことを試しましたか? 埋め込みをテストするためだけに、基本的なセットアップ (Tōru Iwatani という名前が 2 つのテキストフィールド、Courier New、Lucida Console、埋め込みフォント、動的テキスト、回転テキストフィールドで書かれたもの) を試してみましたが、問題なく表示されました。


編集:

やあ、

dafont.com の等幅フォントを使用していくつかのテストを行いました。

これは、機能するフォントを見つけるために使用したスニペットです。

var fonts:Array = Font.enumerateFonts();
for(var i:int = 0 ; i < fonts.length; i++){
    if(fonts[i].hasGlyphs('ō')) trace(fonts[i].fontName);
}

これは私が得たリストです:

Monaco
Lucida Grande
Bitstream Vera Sans Mono
saxMono
JackInput
Liberation Mono Regular
F25 Bank Printer

私は2つの異なるアプローチでいくつか試しました。

ここでわかるように、フォントをライブラリに埋め込んでも役に立ちませんでした。

ライブラリ埋め込み

ステージ上のインスタンスを使用してフォントを埋め込むと、一部のフォントで機能しました。

ステージ埋め込み

これが私がテストに使用したコードです。かなり面倒ですが、これはテストです:)

l.text = j.text = f.text = li.text = s.text = b.text = 'Hello Tōru Iwatani...Hello Tōru Iwatani...Hello Tōru Iwatani...';

var lucida:TextField = getStyledTextField("Lucida Grande");
var liberation:TextField = getStyledTextField("Liberation Mono Regular");
var sax:TextField = getStyledTextField("saxMono");
addChild(lucida);
addChild(liberation);
addChild(sax);
liberation.y = 30;
sax.y = 60; 
lucida.htmlText= liberation.htmlText = sax.htmlText = "<body><span class='text'>Hello Tōru Iwatani...</span></body>";

function getTextField(font:String):TextField{
    var label:TextField = new TextField();
    label.defaultTextFormat = new TextFormat(font,11,0x33333);
    label.autoSize = TextFieldAutoSize.LEFT;
    label.border = true;
    label.embedFonts = true;
    return label;
}

function getStyledTextField(font:String):TextField{
    var style:StyleSheet = new StyleSheet();
    style.parseCSS(".text { color:#333333; font-family:"+font+";  }");
    var label:TextField = new TextField();
    label.styleSheet = style;
    label.autoSize = TextFieldAutoSize.LEFT;
    label.border = true;
    label.embedFonts = true;
    return label;
}

l、li、b、j などは、lucida grande、liberation、bitstream vera sans mono、JackInput などのフォントを使用した、ステージ上の動的テキストフィールドのインスタンス名です。

何が問題なのかはわかりませんが、文字をステージに埋め込むことはうまくいきました。また、確認のためにすべてのグリフを埋め込みました。コンパイルには時間がかかります。機能するフォントの中から好きなフォントを選び、使用する必要がある最小限のグリフが見つかるまで徐々にグリフを取り出します。

グッドラック、ジョージ

于 2010-01-17T01:29:21.900 に答える