代码之家  ›  专栏  ›  技术社区  ›  Clay Bridges

在iOS上,我可以访问系统提供的字体TTF文件吗?

  •  9
  • Clay Bridges  · 技术社区  · 15 年前

    我正在尝试 FTGLES 在iOS的OpenGL ES上动态显示任意字体的文本(参见my so问题 here )该库似乎需要直接访问TTF文件才能使用该字体。使用Kosher方法,可以通过路径直接访问iOS上的系统字体文件吗?我有无线电调频,什么也找不到。

    除此之外,是否有人知道苹果是否批准将系统字体复制到你的应用程序中(提交前)。

    3 回复  |  直到 14 年前
        1
  •  8
  •   EXphinx    14 年前

    我的解决方案受到了斯基亚的启发。

    虽然不能直接访问系统内置字体文件,但我们仍然有一种间接的方式:

    用所需的字体名称创建一个cgfont,只需调用cgfontcopytabletags()和cgfontcopytablefortag(),就可以访问该cgfont的sfnt表的所有内容。

    然后,可以使用这些表构造ttf/otf字体数据,将新创建的字体保存到磁盘,以后可以在ftgl es中使用它。

        2
  •  7
  •   Mr. Berna    14 年前

    不,您不能访问iOS设备上系统安装的TTF文件。所以你必须嵌入你想要使用的字体。

    免责声明:我不是律师,在iOS应用程序中使用苹果提供的系统字体的可接受性是有关解释软件许可证的法律问题,因此您可能需要寻求专业建议。

    您希望在应用程序中嵌入Apple提供的字体。“嵌入”的定义有点模糊,因此将字体添加到iOS应用程序中可能不符合版权所有者的“嵌入”定义。有些类型的房子将“嵌入”定义为只在包含的字体中查看预定的内容;另一些则是在该字体中查看和编辑内容。显示在应用程序运行期间发生更改的内容介于这两种情况之间。

    根据Mac OS X Lion 10.7.2 eLua:

    字体。根据本许可证的条款和条件,您可以 使用Apple软件附带的字体显示和打印 运行Apple软件时的内容;但是,您只能嵌入 内容中的字体(如果嵌入限制允许) 伴随有问题的字体。这些嵌入限制可以是 在字体手册/预览/显示字体信息面板中找到。

    如果在iOS应用程序中使用字体确实是“嵌入”,那么您只需检查希望在字体手册中使用的特定字体。

    在这种情况下,我会找到一种字体或一组字体,在其中我有明确的权限将这些字体包含在iOS应用程序中。我将从在各种类型的房子周围购物开始,寻找明确允许这种使用的许可方案。这可能会变得昂贵,所以另一个策略是寻找具有许可证的开源字体,以允许这种使用。或者,对于非常有限的字符集(例如,只有数字),我甚至会考虑绘制自己的字体。

        3
  •  0
  •   Dylan Gattey    14 年前

    不可以。您的应用程序无法访问应用程序沙盒外的文件。时期(除非是越狱;)。但是您确实可以捆绑字体文件。现在,我看不出为什么苹果会拒绝你的应用程序,因为它使用的是一个已经在设备上可用的文件,而你只是将你的本地文件包含在其中。在版权方面,苹果已经拥有在他们的设备上使用它的许可,所以你把它包括进来应该没有问题。

    我说应该是因为我不需要这个功能,也没有用我自己的提交来测试它,但是基于我过去看到的法律本能和字体版权问题,我希望这不会是一个问题。