使用 Loader 加载 swf 字体在 Flex SDK 3.5 中完美运行 - 而在 Flex SDK 4 中则不然

发布于 2024-11-19 17:39:25 字数 941 浏览 1 评论 0原文

对于一个大型项目,我有以下设置:

  • 使用 Flex SDK 3.5 制作的内容编辑器
  • 使用 Flex SDK 4.1 制作的内容查看器

两者都需要使用动态加载的字体,因为用户可以使用他想要的字体。

因此我们使用了这种方法:

现在的问题是:虽然在跟踪 Font.enumerateFonts(false) 时列出了加载的字体,但它们并未在文本区域中使用。文本以默认字体显示。

也许问题是字体作为文本布局框架的 embedAsCFF 加载,并且这种方式在 mx.controls.TextArea 中不可用?但由于多种原因我无法将其更改为 Spark TextArea,因此我需要一个解决方案来使用该 mx.controls.TextArea 中加载的字体。

有什么想法吗?预先非常感谢!

坦率

For a large project I have the following setup:

  • a content editor made with Flex SDK 3.5
  • a content viewer made with Flex SDK 4.1

Both need to work with dynamically loaded fonts as the user can use the fonts he wants.

So we used this approach:

  • convert the font files with Flash Professional to SWF-files (Creating a Font SWF)
  • editor: load the fonts with Loader (Loading a SWF font)
  • the fonts can then be perfectly used within the application to generate htmlText
  • viewer: the same approach to load the fonts + register them with Font.registerFont (Flex 4 Embed font from swf)

Now the problems: although the loaded fonts are listed when you trace Font.enumerateFonts(false), they are not used in the textarea. There the text is shown with the default font.

Maybe the problem is the fonts are loaded as embedAsCFF for the Text Layout Framework, and that way are not usable in an mx.controls.TextArea? But as I can not change that to a spark TextArea for multiple reasons, I need a solution to use the loaded fonts in that mx.controls.TextArea.

Any ideas? Thanks a lot in advance!

Frank

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一瞬间的火花 2024-11-26 17:39:25

显然问题出在项目属性上。

在“Flex Compiler”设置中,必须取消选中“在 MX 组件中使用 Flash Text Engine”复选框!

Apparantly the problem was located in the project properties.

In "Flex Compiler" settings, the checkbox "Use Flash Text Engine in MX components" must be unchecked!

一个人的夜不怕黑 2024-11-26 17:39:25

我不确定您为什么使用 Flash Pro 创建字体 swf。您可以使用 CSS 通过嵌入字体轻松完成此操作 并将其编译为主题 swf,可以是 在运行时加载

这应该适用于 Flex 3 和 Flex 4(带有 TLF)。

I'm not sure why you're using Flash Pro to create a font swf. You could just as easily done it using CSS by embedding the fonts and compiling it as a themed swf which could be loaded on runtime.

This should work for both Flex 3 and Flex 4 (with TLF).

停顿的约定 2024-11-26 17:39:25

此 CSS 代码有效地改造了 mx textarea 以接受 CFF 字体:

mx|global{
    textFieldClass:         ClassReference("mx.core.UIFTETextField");
}

来自文档:“当 MX 组件使用 FTE 时,它们可以使用与始终使用 FTE 的 Spark 组件相同的嵌入字体。否则,必须使用 embedAsCFF= 嵌入字体false" 用于基于 TextField 的组件,而 embedAsCFF="true" 用于基于 FTE 的组件。 http://help.adobe.com/en_US /FlashPlatform/reference/actionscript/3/mx/core/UIFTETextField.html

This CSS code effectively retrofits mx textarea to accept CFF fonts:

mx|global{
    textFieldClass:         ClassReference("mx.core.UIFTETextField");
}

from the docs: "When MX components use FTE, they can use the same embedded fonts as Spark components, which always use FTE. Otherwise, a font must be embedded with embedAsCFF="false" for use by TextField-based components, and with embedAsCFF="true" for use by FTE-based components." http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIFTETextField.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文