SVG 和 TTF 文件之间的字体名称不一致?

SVG 和 TTF 文件之间的字体名称不一致?

我在这里下载了“Fredoka One”字体:https://fonts.google.com/specimen/Fredoka+One?selection.family=Fredoka+One

并在我的系统上安装了 TTF 文件(即mv FredoakOne-Regular.ttf ~/.fonts/、和fc-cache -f -v)。

$ fc-list | grep -i "fredoka"
/home/myUser/.fonts/FredokaOne-Regular.ttf: Fredoka One:style=Regular

我的 SVG 文件引用了 Fredoka One 字体,如下所示:

font-family="'FredokaOne-Regular'"

因此,当我在浏览器中查看 SVG 文件时,它不会呈现字体。

但是当我更改 SVG 文件以像这样引用该文件时:

font-family="'Fredoka One'"

然后字体就可以正确呈现了。为什么名称不匹配?这是怎么发生的?我是不是漏掉了什么?

仅供参考,我从一位设计师那里收到了 SVG 文件,他使用 MacOS 在 Illustrator 中创建/导出了这些文件。


如果我能以某种方式将名称别名FredokaOne-Regular指向我的Fredoka One字体名称,这是一个合理的解决方案吗?如果是,怎么做?

答案1

Adobe Illustrator 似乎使用字体中的“PostScript 名称”字段,而不是更常见的“系列名称”字段。这似乎在 macOS 中很常见,因为它的图形系统深受 PostScript 影响,可能对 PDF 输出等有意义,但与其他所有东西使用的完全不同。

(注意:这两个名称都嵌入在文件内部,与 .ttf 文件名本身无关。)


如果要创建字体别名,可以通过 fontconfig 进行创建。创建一个文件,~/.config/fontconfig/conf.d/50-aliases.conf内容如下:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <alias binding="same">
        <family>FredokaOne-Regular</family>
        <prefer>
            <family>Fredoka One</family>
        </prefer>
    </alias>    
</fontconfig>

(该binding="same"选项告诉 fontconfig 这是一模一样字体而不是后备替代方案,但老实说,我不知道它对字体选择有什么影响(如果有的话)。


你似乎搞糊涂了家庭姓名和文件名字。

在这种情况下,“FredokaOne-Regular”不是姓氏。它只是文件名字,几乎软件实际上关心的是文件名。它也可以命名为“Fredoka~1.ttf”或“FREDOK1R.TTF”或“H234567.TTF”(字体文件通常都是这样),这仍然不会影响任何事情。

相反,软件几乎总是要求您指定嵌入在文件本身中的名称。如 fontconfig 的 fc-cache(或 fc-query)所示,嵌入的系列名称是“Fredoka One”,因此您应该指定该名称。

(请注意,谷歌的网页字体 CSS它从 CDN 导入随机命名的文件,例如“k3kUo8kEI-tA1RRcTZGmTlHGCac.woff2”,还指定“Fredoka One”作为家庭姓名。)

相关内容