代码之家  ›  专栏  ›  技术社区  ›  mga

未嵌入Flash CS4 AS3的字体

  •  3
  • mga  · 技术社区  · 16 年前

    也许你能帮我解决一个问题。该项目的URL为: http://www.mauriciogiraldo.com/vgline/beta/

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

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

    (注意那个家伙的名字)

    according to Adobe documentation 意味着东西是嵌入的)。

    我尝试过其他字体嵌入选项,但没有效果。InColata在创作中使用时似乎有“”字符,但在动态文本中没有显示。

    我还有一个问题:如果我使用 字体未嵌入的文本字段(WTF)。我必须将该字段转换为动态字段,然后它才能工作(“视频游戏历史时间线”左上角是一个动态文本字段,尽管我希望它不是。。。这一点和其他方面)。如果我使用静态文本字段,字体将转换为某种泰晤士报新罗马字体。

    文本被创建为3(以及搜索结果)。

    整个代码都是开源的,可以在这里找到:

    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);
    

    任何帮助都将不胜感激。我真的不知道该怎么办。

    谢谢

    3 回复  |  直到 16 年前
        1
  •  3
  •   nikc.org    16 年前

    字体嵌入是我在创建flash时最喜欢的敌人之一。但我找到了一种方法来减少墙壁上的洞(和头上的突起)。

    1. 将字体嵌入到库中
    2. 将字体符号(在库中)链接到扩展 Font MyFont (目前)
    3. TextFormat frmt )
    4. 设置 frmt.font = new MyFont().fontName
    5. 创建一个 TextField (让我们称之为 tf )
    6. tf.embedFonts = true 和 tf.defaultTextFormat = frmt

    希望这有帮助。

        2
  •  1
  •   Fi.    16 年前

    通过将字体改为Lucida Sans,一切都很好。

        3
  •  0
  •   Community Mohan Dere    6 年前

    听起来有点熟悉。 我必须下载 a separate version of Arial 用正确的希腊字符,这就解决了它。

    也许是同一个问题,你需要同一字体的不同版本。

    你试过同样的方法吗 或 ? 我尝试了一个基本的设置(Tru Iwatani的名字写在两个文本字段中,一个Courier New,一个Lucida控制台,嵌入式字体,动态文本,旋转文本字段,只是为了测试嵌入,它显示得很好。


    编辑:

    你好

    我已经做了一些测试,使用单间距字体 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
    

    我尝试了两种不同的方法。

    在库中嵌入字体没有任何帮助,您可以在此处看到:

    library embed

    使用Stage上的实例嵌入字体适用于某些字体:

    stage embed

    下面是我用于测试的代码,非常混乱,但这是一个测试:)

    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等是stage上动态文本字段的实例名,使用的字体如下

    在舞台上嵌入角色 为我工作, 此外,我嵌入了所有的标志符号以确保。编译要花很长时间,你可能想从那些有用的字体中挑选一种你喜欢的字体,然后逐渐去掉字形,直到找到你需要使用的字形的最小数量。

    祝你好运, 乔治