也许你可以帮助我解决我遇到的问题。该项目的URL是: http://www.mauriciogiraldo.com/vgline/beta/
这是一个由Drupal驱动的,AMFPHP连接的AS3网络应用程序。数据通过Flash没有任何问题,我已经验证了UTF-8是好的。在这些网址中可以更好地看到问题:
http://www.mauriciogiraldo.com/vgline/beta/#/146
该链接的纯文本版本:
http://www.mauriciogiraldo.com/vgline/node/146
(注意那个人的名字)
字体是Inconsolata虽然我可以在必要时使用任何等宽开源字体。你可以看到我已经嵌入了字体(我甚至选择了动态文本字段来嵌入整个字体,完整的字符集)以及库中的“新字体”菜单。 Inconsolata在CS4创作工具中显示星号(according to Adobe documentation表示该东西已嵌入)。
我尝试过其他字体嵌入选项无济于事。 Inconsolata在创作中使用时似乎有“ō”字符,但它没有出现在动态文本中。
我遇到的另一个问题是:如果我使用静态文本字段,则字体不会嵌入(WTF)。我必须将字段转换为动态然后才能工作(“视频游戏历史时间轴”左上角是一个动态文本字段,尽管我希望它不是......那个和其他人)。如果我使用静态文本字段,字体将转换为某种Times New Roman字体。
文本是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);
非常感谢任何帮助。我真的不知道该怎么做。
由于
答案 0 :(得分:3)
在创建flash时,字体嵌入是我最喜欢的敌人之一。但我找到了一种方法来减少墙壁上的孔洞(以及我头上的凹凸)。
Font
- 类的自定义类(暂时将其称为MyFont
)TextFormat
对象(我们称之为frmt
)frmt.font = new MyFont().fontName
TextField
(我们称之为tf
)tf.embedFonts = true
和tf.defaultTextFormat = frmt
希望这有帮助。
答案 1 :(得分:1)
我在Arial Regular(在启用了HTML的动态文本字段中)出现了类似的问题,没有显示由AS中的html标记指示的粗体文本。
通过将字体更改为Lucida Sans,一切正常。
答案 2 :(得分:0)
我稍后再看看。
听起来有些熟悉。 我在静态文本字段中没有显示在swf中的字符时遇到了同样的问题,尽管在我在多语言网站上工作时显示在IDE(flash cs3)中。时间问题与Arial中的希腊字符有关。 我必须使用正确的希腊字符下载a separate version of Arial并修复它。
也许是同一个问题,你需要一个不同版本的相同字体。
您是否尝试使用 Courier New 或 Lucida控制台进行相同的操作?我尝试了一个基本的设置(TōruIwatani这个名字写在2个textields,一个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
我尝试了两种不同的方法。
在图书馆中嵌入字体没有帮助,你可以在这里看到:
使用Stage上的实例嵌入字体适用于某些字体:
这是我用于测试的代码,非常混乱,但它是一个测试:)
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等。
我不确定问题是什么,但在舞台上嵌入角色对我有用, 另外,我嵌入了所有的字形只是为了确保。编译需要很长时间,您可能希望从那些有效的字体中选择一种字体,然后逐渐取出字形,直到找到需要使用的字形数量最少的字体。
古德勒克, 乔治