![SVG 和 TTF 文件之间的字体名称不一致?](https://linux22.com/image/1596739/SVG%20%E5%92%8C%20TTF%20%E6%96%87%E4%BB%B6%E4%B9%8B%E9%97%B4%E7%9A%84%E5%AD%97%E4%BD%93%E5%90%8D%E7%A7%B0%E4%B8%8D%E4%B8%80%E8%87%B4%EF%BC%9F.png)
我在这里下载了“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”作为家庭姓名。)