与平台无关的字体​​目录?

发布于 2024-09-27 12:01:41 字数 39 浏览 2 评论 0原文

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

Where are fonts stored on Windows, macOS, and Linux?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜清冷一曲。 2024-10-04 12:01:41

这是那些“简单”的问题之一,根据需要可以有一个过度的解决方案。 Linux 发行版不使用任何特定的字体管理,使得不同 Linux 风格的字体不一致、非常可配置,并且受到许多因素(包括桌面环境、远程服务等)的影响。 Linux 发行版可能根本没有指定任何字体目录(例如,在无头 RTOS 安装上或使用 X远程提供字体的字体服务器)。

字体目录位置

  • 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 "<目录>" /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_) &&定义(_MACH_)
    • _APPLE_ 是为所有 Apple 计算机定义的,如果系统支持 Mach 系统调用,则定义 _MACH_a la Mac OSX
  • Linux(通用) - #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

  • Windows (newer than 3.1)
    • %WINDIR%\fonts
  • Mac OSX
    • /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.
  • Linux
    • /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:

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>

Checking for environment

You can check various platforms via the use of macros defined for specific environments.

  • Windows - #if defined(_WIN32)
    • _WIN32 is defined for both 32-bit and 64-bit Windows.
  • Mac OSX - #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
  • Linux (generic) - #if defined(linux) || defined(__linux)

Resources

贩梦商人 2024-10-04 12:01:41

假设目标操作系统一个字体文件夹。例如,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文