Google字体API和Actionscript

4
据我所知,从Google Fonts API中看来,这些字体是由JavaScript/CSS访问的。是否有一种方法可以在不将它们下载到服务器本地的情况下为Flash应用程序动态加载它们?
更新:所以我一直在探究这个问题,以下是我关于如何解决它的一些想法。虽然它们都无法实现,但我觉得它们朝着正确的方向发展。仅供参考...
当您选择在Google API中使用的字体时,会提供一个链接到基于您喜好生成的CSS样式表:
<link href='http://fonts.googleapis.com/css?family=Kranky' rel='stylesheet' type='text/css'>

我最初尝试只在<fx:Style source=.../>中使用href URL,但ActionScript拒绝了它(不确定是因为它不是本地的,还是因为它没有以.css结尾)。

失败后,我将链接复制到浏览器中并手动检索CSS,将其粘贴到<fx:Style>标签中,就像处理其他CSS一样。同样,ActionScript不喜欢这个方法,因为它无法定位URL。

我怀疑这些预防措施都是由Flash强制实施的“安全沙箱”所致。一些更具ActionScript技能的人可能能够使用此方法解决问题,但我不知道是否可行。


1
好问题。我的猜测是这可能不可行,由于Flash在编译时嵌入字体,但我很高兴被证明是错误的。 - Bosworth99
@Bosworth99,您可以在运行时下载和注册字体。只需使用flash.text.Font类并使用Font.registerFont()即可。 - Jonathan Rowny
@jonathan。不知道这个。认真记下来! - Bosworth99
1个回答

4
您可以在运行时将动态字体加载到Flash/ActionScript中。这里有一个很好的例子:http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html
基本上,它归结为使用Loader类和Font.registerFont(); 问题是Google提供的CSS提供了WOFF(Web开放字体)文件,我不认为Flash可以嵌入该字体类型。
但是,Google字体可下载并轻松嵌入到Flex/Flash应用程序中。只需转到Google网站上想要的字体,然后单击“下载”。从那里,您可以提取TTF文件并直接嵌入到Flash应用程序中。
您可以像这样在ActionScript中执行此操作:
[Embed(source="theFontYouDownloaded.ttf",  fontName = "someFont",  mimeType = "application/x-font")]
private var someFont:Class;

根据我的经验,有时你需要尝试不同的MIME类型才能让它正常工作。

由于您似乎正在使用Flex,因此您可以简单地使用Flex样式表,如下所示:

@font-face
{
src:            url("fonts/someFont.ttf");
fontFamily:     someFont;
font-weight:    normal; 
}

1
+1 - 仅仅是一个提示:www.fontsquirrel.com 是一个非常好的资源,提供开源/免费使用的网络字体。 - Bosworth99

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接