以平台独立的方式获取字体目录?

时间:2010-10-17 16:54:35

标签: c++ fonts

有没有办法可以找到Windows,OSX或Linux上存储字体的位置?如果没有,有没有办法可以保证所有3个平台的某些路径(例如X:/ Windows / Fonts /)? ifdefs会用于这些吗?

由于

2 个答案:

答案 0 :(得分:11)

这将是其中一个“简单”问题,可能会有一个过分解决方案,具体取决于您需要此信息的内容。

我将不得不为Linux版本的答案道歉,因为Linux发行版的字体管理不一致,可以非常可配置,可以受桌面环境影响,可以远程服务等。

检查环境

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

  • Windows - #if defined(_WIN32)
    • _WIN32是为32位和64位Windows定义的。
  • Mac OSX - #if defined(_APPLE_) && defined(_MACH_)
    • _APPLE_是为所有Apple计算机定义的,如果系统支持Mach系统调用,则定义_MACH_ a la Mac OSX
  • Linux(通用) - #if defined(linux) || defined(__linux)

字体目录位置

  • 视窗
    • 在3.1以上的Windows上,字体目录位于%WINDIR%\fonts
  • Mac OS X.
    • Mac OSX有多个字体目录
      • /System/Library/Fonts - 系统所需的字体。不要碰这些。
      • /Library/Fonts - 所有用户都可以使用的其他字体。如果要将字体用于其他应用程序,通常会出现这种情况。
      • ~/Library/Fonts - 特定于每个用户的字体。
      • /Network/Library/Fonts - 为网络上的用户分享的字体。
  • Linux的
    • 如上所述,Linux发行版可能根本没有指定的字体目录。我记得因为Linux发行版不使用任何特定的字体管理而暂时处理这个问题。
    • 可以远程提供XFS (X Font Server)字体。
    • Linux发行版中最常见的字体位置为/usr/share/fonts/usr/local/share/fonts和用户特定的~/.fonts
    • 某些系统可能已在文件/etc/fonts/fonts.conf/etc/fonts/local.conf中配置了字体目录。

资源:

答案 1 :(得分:0)

假设目标操作系统具有字体文件夹。例如,Linux安装完全可以仅限控制台,而且根本没有字体目录。

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