与平台无关的字体目录?
Windows、macOS 和 Linux 上的字体存储在哪里?
Where are fonts stored on Windows, macOS, and Linux?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Windows、macOS 和 Linux 上的字体存储在哪里?
Where are fonts stored on Windows, macOS, and Linux?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这是那些“简单”的问题之一,根据需要可以有一个过度的解决方案。 Linux 发行版不使用任何特定的字体管理,使得不同 Linux 风格的字体不一致、非常可配置,并且受到许多因素(包括桌面环境、远程服务等)的影响。 Linux 发行版可能根本没有指定任何字体目录(例如,在无头 RTOS 安装上或使用 X远程提供字体的字体服务器)。
字体目录位置
%WINDIR%\fonts
/System/Library/Fonts
- 系统所需的字体。不要碰这些。/Library/Fonts
- 适用于所有用户的附加字体。一般来说,其他应用程序要使用的字体。~/Library/Fonts
- 用户特定的字体。/Network/Library/Fonts
- 为网络上的用户共享的字体。/usr/share/fonts
- 许多 Linux 发行版的通用位置。/usr/local/share/fonts
- 许多 Linux 发行版的通用位置。~/.fonts
- 用户特定的字体。某些 Linux 系统可能在以下文件中配置了字体目录:
/etc/fonts/fonts.conf
/etc/fonts/local.conf
例如,运行
grep "<目录>" /etc/fonts/fonts.conf
,可能会显示:检查环境
您可以通过使用为特定环境定义的宏来检查各种平台。
#if Defined(_WIN32)
_WIN32
是为 32 位和 64 位 Windows 定义的。#if Defined(_APPLE_) &&定义(_MACH_)
_APPLE_
是为所有 Apple 计算机定义的,如果系统支持 Mach 系统调用,则定义_MACH_
,a la Mac OSX#if 已定义(linux) ||定义(__linux)
资源
This is one of those 'simple' problems that could have an over-the-top solution depending on the need. Linux distributions don't use any specific font management making fonts across Linux flavours inconsistent, very configurable, and influenced by many factors including desktop environment, remote services, and more. A Linux distribution may not have any font directories specified at all (e.g., on a headless RTOS installation or using an X Font Server that serves up fonts remotely).
Font directory locations
%WINDIR%\fonts
/System/Library/Fonts
- Fonts necessary for the system. Do not touch these./Library/Fonts
- Additional fonts for all users. Fonts that are to be used by other applications, in general.~/Library/Fonts
- User-specific fonts./Network/Library/Fonts
- Fonts shared for users on a network./usr/share/fonts
- Common location across many Linux distributions./usr/local/share/fonts
- Common location across many Linux distributions.~/.fonts
- User-specific fonts.Some Linux systems may have configured font directories in the following files:
/etc/fonts/fonts.conf
/etc/fonts/local.conf
For example, run
grep "<dir>" /etc/fonts/fonts.conf
, which may show:Checking for environment
You can check various platforms via the use of macros defined for specific environments.
#if defined(_WIN32)
_WIN32
is defined for both 32-bit and 64-bit Windows.#if defined(_APPLE_) && defined(_MACH_)
_APPLE_
is defined for all Apple computers, and_MACH_
is defined if the system supports Mach system calls, a la Mac OSX#if defined(linux) || defined(__linux)
Resources
假设目标操作系统有一个字体文件夹。例如,Linux 安装仅包含控制台并且根本没有字体目录是完全可行的。
无论如何,我最好的猜测是没有独立于平台的方式。您可以编写自己的独立于平台的函数,但在其中必须检查当前操作系统(通过一些 IFDEF,我不能说是什么),然后调用正确的函数。但同样,我不太确定您是否可以在 Linux 下获得它。
That's assuming the target OS has a font folder. For example, it's quite feasible for a Linux installation to be console-only and not have a font directory at all.
Anyways, my best guess is that there is no platform independent way. You can write your own platform independent function, but within it will have to check the current OS (via some IFDEF's, I cannot say what) and then call the right function. But again - I wouldn't be so sure you can obtain it under Linux at all.