fontspec 可以使用 SkyFonts 的字体吗?

fontspec 可以使用 SkyFonts 的字体吗?

在我的 Windows 7 系统上我通过天空字体来自 Fonts.com:Sabon Next 显示器

字体未出现在C:\Windows\Fonts。但是,它会显示在某些桌面应用程序中,例如Xara 设计师专业版作为:Sabon Next Com 显示器

我的目的是在 LaTeX 文档中使用该字体test.tex

\documentclass{article}
\usepackage{polyglossia}
\setromanfont{Sabon Next Com Display}

\begin{document}
Hello World!
\end{document}

不幸的是,xelatex test.tex失败了:

[…]
Couldn't find `Sabon Next Com Displ.cfg'
miktex-maketfm: No creation rule for font "Sabon Next Com Display".


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "Sabon Next Com Display" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.4 \setromanfont{Sabon Next Com Display} 
                                          % Sabon Next Com Display, SabonNex...

? 

XeLaTeX 是否可以使用通过 SkyFonts 安装的字体?如果不行,有什么解决方法?

答案1

请将此视为“临时”答案(也许 Will Robertson 可以提供更多信息)。我自己仍在调查该问题(我正在测试 SkyFonts + Monotype Library Subscription + LuaLaTeX)。但到目前为止,我掌握的所有数据都指向同一个方向:

fontspec无法加载通过 SkyFonts 安装的字体除非您购买的字体许可证包括系统上字体文件的物理安装。

我们在这里讨论的是›购买‹字体和›租用‹字体之间的区别。您可以 (1) 从 MyFonts ›购买‹字体,通过 SkyFonts 安装,然后您会在硬盘上的某个位置获得一个物理字体文件(因此,恕我直言,使用 SkyFonts 并没有多大意义)。或者您可以 (2) 订阅›租用‹计划,例如 Monotype Library Subscription,按月、按年或按 3 年付费。在这种情况下,字体文件将保留在云中。SkyFonts 应用程序提供云和系统之间的链接,以便您使用的应用程序可以访问它们。但是,fontspec到目前为止,似乎还没有为这样的组合做好准备。它仍然需要系统上的物理文件。

我测试了场景 1 和 2。场景 1 让我获得了物理文件...AppData\Roaming\Monotype\skyfonts-myfonts。我懒得将该路径添加到 Lua 字体搜索路径列表中,所以我只是将这些文件复制到标准 Windows 字体目录中(使加载 SkyFonts 变得过时)。TeX 中没有问题。场景 2:与您的帖子相同...

但考虑到像这样的云服务正变得越来越普遍(无论喜欢与否),并且考虑到 TeX 世界一直处于技术创新的前沿,我相信在不久的将来会有一个解决方案。

附言:我无法在硬盘上找到 Monotype 订阅中的字体作为适当的字体文件,字体一旦安装,即使互联网连接中断,仍然可用。SkyFonts 将它们缓存在一个名为skyfonts.db.

答案2

我在 macOS (10.14.5) 上通过 SkyFonts 使用 Monotype 库订阅。fontspec如果您使用 PostScript 名称来定位字体,则可以访问 SkyFonts 提供的字体。例如,我安装了“FF Meta Pro”系列,并且可以将其与 XeLaTeX 一起使用,如下所示:

\documentclass{article}

\usepackage{fontspec}
\setsansfont{MetaPro-Norm}[
    Numbers={Proportional, OldStyle},
    ItalicFont = {MetaPro-NormIta},
    BoldFont = {MetaPro-Bold},
    BoldItalicFont = {MetaPro-BoldIta}
]


\begin{document}

\sffamily Hello -- \textit{world} --- \textbf{1234} \textit{\textbf{äöüßffi}}

\end{document}

通过 fontspec 和 SkyFonts 的 FF Meta Pro

答案3

关于@nils-l 的回答,还有更多细节和官方确认。

您可以将 xetex 与 SkyFonts 一起使用,只要它将字体文件安装在您的常规字体文件夹中。

对于 Google 通过 SkyFonts 分发的字体,此文件夹是(在我的 Mac 上)~/Library/Fonts/skyfonts-google/。SkyFonts 可与 xetex 配合使用,无需对这些进行调整。

Monotype 订阅库分发的字体以加密形式保存在 sqlite 数据库 (skyfonts.db) 中,~/Library/Application Support/sf/并在到达特权 Mac 应用程序之前即时解密(大概如此)。Monotype 支持已确认,任何需要直接路径到常规字体文件的东西都无法与订阅服务兼容。

答案4

如果字体未显示在 中%WINDIR%\fonts\,但在其他应用程序中可用,则可能是您只为自己安装了它们,而不是为所有用户安装了它们。我相信 Microsoft Store 默认这样做。如果是这样,它们可能在 中%USERPROFILE%\appdata\local\microsoft\windows\fonts\

截至 2019 年 7 月,XeTeX 和 LuaTeX (luaotfload) 都无法在 Windows 10 上看到为当前用户安装的字体。Linux 上没有这样的限制。(命令fc-matchluaotfload-tool应该能够分别测试 XeTeX 和 LuaTeX 可以找到哪些字体文件。)您可以通过以下几种方式解决此问题:将字体复制到项目文件夹的子目录中并告知fontspec其相关用户Path=,或者为所有用户安装字体(需要管理员权限)。如果选择后者,则可以在字体控制面板中从用户目录中删除冗余副本。

相关内容