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

jma*_*erx 7 c++ fonts

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

谢谢

wkl*_*wkl 11

这将是那些"简单"问题之一可能有一个过度解决方案取决于您需要这些信息.

由于Linux发行版中的字体管理不一致且可以非常可配置,可以受桌面环境影响,可以远程服务等,我将不得不为错误的Linux答案道歉.

检查环境

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

  • Windows - #if defined(_WIN32)
    • _WIN32 是为32位和64位Windows定义的.
  • Mac OSX - #if defined(_APPLE_) && defined(_MACH_)
    • _APPLE_所有苹果电脑的定义,_MACH_是指如果系统支持马赫的系统调用,一拉的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字体服务器)远程提供字体.
    • 对于字体跨Linux发行版中最常见的位置是/usr/share/fonts,/usr/local/share/fonts和用户特定~/.fonts
    • 有些系统可能已配置文件中的字体目录/etc/fonts/fonts.conf/etc/fonts/local.conf.

资源: