跨平台字体目录?

8

字体在Windows、macOS和Linux上存储在哪里?

2个回答

12
这是一个那些“简单”问题的例子,取决于需求,可能会有过度解决方案。Linux发行版不使用任何特定的字体管理,使得跨Linux版本的字体不一致,可配置性非常高,并受许多因素影响,包括桌面环境、远程服务等。Linux发行版可能根本没有指定任何字体目录(例如,在无头RTOS安装或使用远程提供字体的X Font Server时)。
字体目录位置:
- Windows(新于3.1版本):%WINDIR%\fonts - Mac OSX: - /System/Library/Fonts:系统必须的字体,请勿修改。 - /Library/Fonts:所有用户的附加字体。通常用于其他应用程序的字体。 - ~/Library/Fonts:特定用户的字体。 - /Network/Library/Fonts:网络共享的字体。 - Linux: - /usr/share/fonts:许多Linux发行版中的常见位置。 - /usr/local/share/fonts:许多Linux发行版中的常见位置。 - ~/.fonts:特定用户的字体。
一些Linux系统可能已在以下文件中配置了字体目录:
  • /etc/fonts/fonts.conf
  • /etc/fonts/local.conf
例如,运行grep "<dir>" /etc/fonts/fonts.conf,可能显示:
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>

检查环境

您可以通过定义特定环境的宏来检查各种平台。

  • Windows - #if defined(_WIN32)
    • _WIN32 定义了32位和64位 Windows。
  • Mac OSX - #if defined(_APPLE_) && defined(_MACH_)
    • _APPLE_ 定义了所有 Apple 计算机,_MACH_ 在系统支持 Mach 系统调用时被定义,类似于 Mac OSX。
  • Linux (通用) - #if defined(linux) || defined(__linux)

资源


1
请注意,在Win Vista及更高版本中,字体可以安装在任何地方,不仅限于%WINDIR%\Fonts目录。注册表保存了安装位置。 - Todd Main

1

这是基于目标操作系统字体文件夹的假设。例如,Linux安装可能仅限于控制台,根本没有字体目录。

无论如何,我最好的猜测是没有平台无关的方法。您可以编写自己的平台无关函数,但其中必须检查当前操作系统(通过一些IFDEF,我不能说什么),然后调用正确的函数。但同样 - 我并不确定您是否能在Linux下获取它。


更糟糕的是,即使在一个带有XWindows的Unix系统上,字体也可能主要通过字体服务器生成,该服务器可能位于远程机器上,并且对客户端程序完全不透明/不可用。 - SingleNegationElimination

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接