flash - Flash 中的多种字体/语言支持

标签 flash unicode fonts multilingual

问候,

我正在编写一个支持多语言的 Flash 应用程序。我最初选择的字体是 Tahoma,因为它支持 Unicode。客户更喜欢非标准字体,例如 Lucida Handwriting。 Lucida Handwriting 没有与 Tahoma 相同的西里尔文支持,这带来了一个问题,有几种方法可以解决,我想征求您的建议,了解哪种方法更可取:

据我了解,我可以:

  • 向客户提供完全兼容 Unicode(西里尔文、希伯来文、阿拉伯文、繁体中文、东亚等)字体的列表以供选择。 (我不知道从哪里可以获得这样的列表;我在网络上的搜索只得到了部分符合 unicode 标准的字体列表。尝试 http://look.fo/list-of-unicode-compliant-fonts 作为一个很好的起点,看看我在哪里查看)。
  • 根据客户所在位置(我们已有位置),为英语用户使用 Lucida Handwriting 进行渲染,为国际用户使用 Tahoma 进行渲染。这可能有点让人头疼;有人有过这种方法的经验吗?
  • 构建一种新字体(IE、AlexeyMK Bold),该字体使用 Lucida Handwriting 表示英语,使用 Tahoma 表示其他字体。这会向 Flash 文件的重量添加大约 500k 的内容,但应该(如果我理解正确的话)仅在第一次加载。

你有什么建议?其中哪些是合理的解决方案,哪些是完全可行的?有没有我没有想到的方法?

非常感谢! 阿列克谢

编辑:关于该主题的一篇好文章:http://www.itworld.com/print/58558

最佳答案

好吧,最终您只有两个真正的选择:要么在 SWF 中嵌入字体,保证字体的外观,要么不嵌入,并使用设备字体。 (或者两者的混合,根据区域使用嵌入字体或设备字体。)

如果您不嵌入任何字体,那么您为文本定义的任何字体最终都只是一个建议 - 用户将看到的是设备字体,由他们自己的机器呈现(使用该机器上的字体)。因此,您可以“建议”Tahoma,但用户看到的内容将取决于他们是否拥有该字体(并且 Mac 版本的字体与 PC 版本的字体可能会有所不同)。当然这也要看支持;例如,如果他们没有亚洲字体,那么他们将看不到任何中文。 (注意:您还可以选择像“_sans”这样的字体,它只是告诉客户端使用其标准的无衬线字体。我的猜测是,在实践中,这最终将与您选择的字体相同。 d 定义了“Tahoma”,但是 YMMV。)

如果您嵌入字体,那么用户将看到您所期望的内容,因为字体是由 Flash 而不是操作系统呈现的。但如果你完全嵌入所有区域,包括中文所需的字形,那么我想你会发现它增加了超过 500K 的大小……根据我的经验,更像是 2-5MB。但也许我遗漏了一些细节。无论如何,对于通过网络交付的内容,我通常认为亚洲字体至少应该是设备字体。

要添加有关混合解决方案的信息,我已经这样做了并且它是可行的。也就是说,假设您可以将逻辑添加到 SWF,您可以(例如)为每个文本字段创建两个,一个使用嵌入的“Lucidawhat”,另一个使用非嵌入的“_sans”,然后在运行时创建一个其中一些不可见,并将文本放在另一个中,具体取决于您显示的区域。 (我通过创建一个 LocalizedTextfield 组件,并在初始化时让它从静态属性中读取区域设置来实现这一点。)然后,您只需为每个区域设置决定文件大小是否值得为该特定集合显示字形。

最后一句话是,您不一定可以假设您的字体所产生的文件大小只会加载一次。如果您以简单的方式制作内容并将字体嵌入到文本字段中,那么字体信息将成为 SWF 的一部分,因此无论如何都会加载。为了将其外部化,您可以将 Label 组件制作为一个单独的文件,然后决定是否加载它取决于浏览器的缓存设置。您还可以外部化字体资源本身并将其用作共享资源,但在 AS2 中,这有点难以实现。我听说 AS3 更容易,但我自己没有这样做过。

关于flash - Flash 中的多种字体/语言支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351290/

相关文章:

java - Flash 客户端通过全双工连接(聊天或游戏)与 Java 服务器对话的最佳方式

actionscript-3 - AS3尝试导入另一个.as文件时出现错误5001

python - 在 Python 2.5 中解码未知 unicoding 编码的最佳方法

java - 使用表情符号 unicode 标志国家/地区创建字符串

c - 是否建议使用 strcmp 或 _tcscmp 比较 Unicode 版本中的字符串?

css - pictonic 是如何工作的?

html - 包含所有谷歌字体网址的文件

linux - 重新加载 Flash 17 次会导致错误 #2046 并需要重新启动浏览器

ios - 为什么 iPad Retina 上的图形像素化?

html - 在 Web 应用程序中使用 True Type 字体