【问题标题】:ios safari won't display font-face embedded fonts in svg files. any fix?ios safari 不会在 svg 文件中显示字体嵌入字体。任何修复?
【发布时间】:2011-03-05 21:59:45
【问题描述】:

所以我有一个 SVG 文件,其中包含文本元素。示例:

<text transform="matrix(1 0 0 1 195.248 207.165)" fill="#999999" font-family="'LeagueGothic'" font-size="24">Europe</text>

当我为 iOS 中包含的某些东西(如 Helvetica 或 Futura)指定字体系列时,一切正常。但是,一旦我通过 @font-face 指定了一种字体,它就无法在 iOS 上运行,而在桌面版 Safari、Chrome、Firefox 和 Opera 上却可以。

否则@font-face 字体在整个页面中都可以正常工作,除了 SVG 部分。

尝试将 SVG 文件包含为 &lt;embed&gt;&lt;object&gt;&lt;img&gt;,但没有帮助。有趣的是,当我尝试内联 SVG(即直接在 HTML 中的 SVG 代码)时,字体是可以的,但它不会从 SVG 文件中绘制任何其他内容。

我使用的是 iOS 4.2。尝试过 SVG 1.1、1.1 Tiny、1.2 等都一样。

请问这是一个错误还是我遗漏了什么?谢谢。

此处的示例 SVG 文件:http://pastie.org/1637291

【问题讨论】:

    标签: iphone ipad ios svg font-face


    【解决方案1】:

    您的 svg 示例没有 @font-face 规则,也没有引用任何外部样式表。也许解决方案是在 svg 文件本身中包含具有该定义的样式表。

    例如:

    <style>
    @font-face { font-family: foo; src: url(somefont.svg#theFontElementId) format("svg"); }
    </style>
    

    如果您使用 &lt;object&gt;&lt;embed&gt;&lt;iframe&gt;&lt;img&gt; 等引用 svg 部分,并在页面的其他位置查看 webfont,则可能是缺少样式表的原因。

    【讨论】:

    • 哇,这真的有效。非常感谢! @font-face 定义包含在一个 css 文件中,该文件与我的 svg 文件链接在同一个 html 页面中。所以所有字体看起来都很好(@font-faced),除了 svg 中的字体。所以直接在 svg 文件中重复 @font-face 定义是可行的。顺便提一句。它不必是 svg 字体,我有 ttf 和 otf 并且它可以工作。
    • 哦,哇。 现在真的印象深刻。我不知道你可以在 SVG 中放置这么多东西,它仍然可以工作。我嵌入了一个非常简单的徽标——只是一些花哨的字体和几个正方形的文本——我非常沮丧,因为我必须将整个文本转换为 SVG 路径,让它变得很大(它大约有 1KB除此以外)。就我而言,我嵌入了woff2 字体,但首先检查字体是否在本地安装(加快了进程!)。谢谢!
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多