C++ 获取字体目录的独立于平台的方法?

C++ 获取字体目录的独立于平台的方法?,c++,fonts,C++,Fonts,我有没有办法找到字体在Windows、OSX或Linux上的存储位置?如果没有,我是否有办法保证所有3种平台的特定路径(如X:/Windows/Fonts/)?我将使用什么样的ifdef来实现这些功能?假设目标操作系统有一个字体文件夹。例如,Linux安装只作为控制台而根本没有字体目录是非常可行的 无论如何,我最好的猜测是没有平台独立的方式。您可以编写自己的独立于平台的函数,但在其中必须检查当前操作系统(通过一些IFDEF,我不能说是什么),然后调用正确的函数。不过,我还是不确定你是否能在Lin

我有没有办法找到字体在Windows、OSX或Linux上的存储位置?如果没有,我是否有办法保证所有3种平台的特定路径(如X:/Windows/Fonts/)?我将使用什么样的ifdef来实现这些功能?

假设目标操作系统有一个字体文件夹。例如,Linux安装只作为控制台而根本没有字体目录是非常可行的


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

这将是一个“简单”的问题,根据你需要这些信息的原因,可能会有一个顶级的解决方案

我不得不为那些含糊不清的Linux答案道歉,因为Linux发行版的字体管理并不一致,而且可能非常可配置,可能会受到桌面环境的影响,可能会被远程服务,等等

检查环境

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

  • Windows-
    #如果已定义(_WIN32)
    • \u WIN32
      是为32位和64位窗口定义的
  • Mac OSX-
    #如果已定义(_APPLE)和已定义(_MACH)
    • \u苹果
      是为所有苹果电脑定义的,如果系统支持MACH系统调用,则定义
      \u MACH
      ,即la Mac OSX
  • Linux(通用)#如果已定义(Linux)|已定义(Linux)
字体目录位置

  • 窗户
    • 在高于3.1的Windows上,字体目录位于
      %WINDIR%\font
  • MacOSX
    • Mac OSX有多个字体目录
      • /System/Library/font
        -系统所需的字体。不要碰这些
      • /Library/font
        -可供所有用户使用的其他字体。如果字体将被其他应用程序使用,这通常是字体的用途
      • ~/Library/font
        -特定于每个用户的字体
      • /Network/Library/font
        -为网络上的用户共享的字体
  • Linux
    • 如上所述,Linux发行版可能根本没有指定的字体目录。我记得不久前曾处理过这个问题,因为Linux发行版不使用任何特定的字体管理
    • 可能会有一个远程服务
    • Linux发行版中字体最常见的位置是
      /usr/share/font
      /usr/local/share/font
      ,以及用户特定的
      ~/.font
    • 某些系统可能在文件
      /etc/fonts/fonts.conf
      /etc/fonts/local.conf
      中配置了字体目录
资源:

  • (也适用于Red Hat Enterprise Linux 5)

更糟糕的是,即使在使用XWindows的unix系统上,字体也可能主要通过字体服务器生成,该服务器可能位于远程计算机上,客户端程序完全不透明/不可用。请注意,在Win Vista和更新版本上,字体可以安装在任何位置,而不仅仅是
%WINDIR%\font
目录。注册表保存了安装位置。@御宅族这是一个很好的信息-你能提供我可以放在我的帖子中的任何链接或信息吗?