【问题标题】:SVG fonts in Firefox other than serif and sans-serif?除了衬线和无衬线之外,Firefox 中的 SVG 字体?
【发布时间】:2014-01-16 20:03:52
【问题描述】:

我在 Firefox(v26、“Nightly”和未来版本)中呈现的嵌入式 SVG 文件中使用字体。除了serifsans-serif 这两种字体,还有什么可用的?

我的 SVG 是在 Adob​​e Illustrator 中生成的。 Any font-family names I specify only render correctly in Safari and Chrome 我不能使用轮廓作为解决方法,因为我将使用动态生成的标签文本来注释 SVG。

除了使用轮廓之外,使用自定义 text 元素注释 SVG 文档以使其在 Firefox 中正确呈现的过程是什么?

【问题讨论】:

  • 这个问题是关于使用 用 SVG 定义的字体,还是导入特定字体以在 SVG 中使用?我很困惑,因为赏金信息似乎针对前一种情况,但问题中没有具体提及 SVG 字体

标签: firefox svg fonts vector-graphics


【解决方案1】:

关于让你的 SVG 呈现漂亮的字体

完全有可能 Firefox 以自定义字体呈现 SVG text。例如,可以这样做:

 <svg>
   <style>
     @import url(http://fonts.googleapis.com/css?family=Varela+Round);
     text { font-family:Varela Round, sans-serif; }
   </style>
   <text y="20">I will appear in a custom font</text>
 </svg>

This fiddle在一定程度上演示了用法。请注意,在 jsfiddle 中,CSS 是作为 HTML 样式表包含的,而不是直接包含在 CSS 中。

以下可用作数据 URL,即您可以将其直接复制粘贴到地址栏中。它演示了直接使用来自 SVG 的 @import。)

data:text/html, <svg><style>@import url(http://fonts.googleapis.com/css?family=Varela+Round);text { font-family:Varela Round, sans-serif; }</style><text y="20">I will appear in a custom font</text></svg>)

(目前流行的浏览器中,只有Firefox支持地址栏中的数据URL。另外,如果您将数据的MIME更改为image/svg+xml,它在Firefox中将不起作用。

在对此问题的上一个答案的评论中,Robert Longson 还使用&lt;link rel=stylesheet 分享了一个链接demonstrating an imported font。请注意,由于我不明白的技术原因,该页面上的某些字体被 Firefox 拒绝。但是,几乎所有这些都有效。


关于SVG 字体的政治

SVG 字体 是一个branch of the SVG spec,它处理在 SVG 文件中定义你的字体。这与我在上面概述的在 SVG 文件中使用字体完全不同。

Mozilla's position on the SVG Font spec,据我了解,SVG 字体的唯一好处是您可以在文本编辑器中手动定义字体。 Others have expressed similar opinions.这就是Mozilla专注于WOFF的原因。


importingwebfonts的当前状态是这样的,为了实现跨浏览器/设备的兼容性,你必须提供多种不同的字体格式。这很不幸,但在我看来,这并不是世界末日。

【讨论】:

  • 我无权重新分发有问题的“漂亮”字体,所以虽然我很感谢你花时间写这篇文章,但我不能用你的答案来解决似乎是Mozilla 开发人员显然故意选择忽略 Firefox 的一个奇怪错误。
  • @Jeremy 尽管这个答案在 OP 案例中没有帮助,但我发现它在我自己的用例中非常有帮助。
  • @AlexReynolds 如果不允许分发字体,您可以在保存为 SVG 之前对文本进行矢量化。
  • 正如我在问题中指出的那样,我不能使用轮廓,因为我将在 SVG 中呈现动态生成的文本。
【解决方案2】:

不幸的是,Mozilla 已无限期推迟 SVG 字体实施以专注于 WOFF。事实上,这个错误甚至在 Bugzilla 上被标记为“RESOVLVEDWONTFIX”。这是MDN 的链接和Bugzilla 的链接。

诚然,我对 SVG 字体知之甚少,无法知道 CSS @font-face 元素是否有效,而且我还看到了对 Openfont 的引用。

【讨论】:

  • 对于不得不将 Internet Explorer 和 Firefox 归入与昨天的非标准兼容浏览器相同的类别,我感到很奇怪。但我猜这是 Mozilla 的选择。
  • FF 和 IE 之间的一个区别是Mozilla provide an explanation。我可以确认@font-face 也可以在 Firefox 中使用,因此燃烧 Mozilla 似乎没有必要而且有点粗鲁。
  • 以下 Mozilla 文档表明 @font-face 不适用于 SVG 和 Firefox:developer.mozilla.org/en-US/docs/Web/CSS/@font-face
  • 当然可以:试试这个链接jwatt.org/svg-open/2009/demos/font-face/…
  • 相信我,我不想发布燃烧 Firefox 的响应,因为它是我最喜欢的浏览器。我简直不敢相信我读到的。我很高兴这里有一个通过 CSS 的解决方案。
猜你喜欢
  • 2011-12-07
  • 2011-01-10
  • 1970-01-01
  • 2015-01-24
  • 2021-12-18
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2014-01-09
相关资源
最近更新 更多