【问题标题】:How can I find the full path to a font from its display name on a Mac?如何从 Mac 上的显示名称中找到字体的完整路径?
【发布时间】:2023-04-05 18:49:01
【问题描述】:

我正在使用 Photoshop 的 javascript API 来查找给定 PSD 中的字体。

给定API返回的字体名称,我想在光盘上找到字体名称对应的实际物理字体文件。

这一切都发生在在 OSX 上运行的 python 程序中,所以我想我正在寻找以下之一:

  • 一些 Photoshop javascript
  • Python 函数
  • 我可以从 python 调用的 OSX API

【问题讨论】:

    标签: python macos fonts photoshop


    【解决方案1】:

    我还没有找到任何可以直接做到这一点的东西。我认为您必须遍历系统上的各种字体文件夹:/System/Library/Fonts、/Library/Fonts,并且可能还有一个用户级目录~/Library/Fonts。

    【讨论】:

      【解决方案2】:

      Cocoa 中必须有一个方法来获取字体列表,然后你必须使用 PyObjC 绑定来调用它..

      根据您需要它们的用途,您可能只需使用类似以下的内容..

      import os
      def get_font_list():
          fonts = []
          for font_path in ["/Library/Fonts", os.path.expanduser("~/Library/Fonts")]:
              if os.path.isdir(font_path):
                  fonts.extend(
                      [os.path.join(font_path, cur_font) 
                       for cur_font in os.listdir(font_path)
                      ]
                  )
          return fonts
      

      【讨论】:

        【解决方案3】:

        不幸的是,唯一未被弃用的 API 位于 ApplicationServices 框架中,该框架没有网桥支持文件,因此在网桥中不可用。如果您想使用 ctypes,您可以在查找 ATSFontRef 后使用 ATSFontGetFileReference。

        至少从 10.5 开始,Cocoa 没有任何原生支持来获取字体的位置。

        【讨论】:

          【解决方案4】:

          打开一个终端(应用程序->实用程序->终端)并输入:

          locate InsertFontHere
          

          这将吐出每个具有您想要的名称的文件。

          警告:可能会有很多事情要做。

          【讨论】:

            猜你喜欢
            • 2021-02-28
            • 1970-01-01
            • 2023-03-25
            • 1970-01-01
            • 2019-05-05
            • 2016-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多