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

时间:2010-09-11 21:59:52

标签: uikit fonts ios iphone

我正在尝试FTGLES在iOS上的OpenGL-ES上以任意字体动态显示文字(参见我的问题here)。该库似乎需要直接访问TTF文件才能使用该字体。使用Kosher方法,可以直接访问 - 通过路径 - iOS上的系统字体文件?我已经RTFM了,找不到任何东西。

除此之外,是否有人知道Apple是否批准将系统字体复制到您的应用中(在提交之前)。

3 个答案:

答案 0 :(得分:8)

我的解决方案受到了skia的启发。

虽然无法直接访问系统内置字体文件,但我们仍然采用间接方式:

使用您想要的字体名称创建一个CGFont,只需调用CGFontCopyTableTags()和CGFontCopyTableForTag()即可访问此CGFont的SFNT表的所有内容。

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

答案 1 :(得分:7)

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

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

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

根据Mac OS X Lion 10.7.2 ELUA:

  

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

如果在iOS应用中使用字体确实是“嵌入”,您只需要检查您希望在字体簿中使用的特定字体。

在这种情况下,我会找到一种字体或一组字体,我明确允许在iOS应用中包含字体。我首先要购买各种类型的房屋,以获得明确允许这种用途的许可方案。这可能会变得昂贵,因此另一个方法是寻找具有允许这种用途的许可证的开源字体。或者,对于一组非常有限的字符(例如只有数字),我甚至会考虑绘制自己的字体。

答案 2 :(得分:0)

没有。您的应用无法访问应用沙盒外的文件。期间(好吧,除非它越狱;)。但你确实可以捆绑字体文件。现在,我认为Apple没有理由拒绝你的应用程序,因为它正在使用设备上已有的文件,而你只是将本地文件包含在其中。在版权方面,Apple已经拥有在其设备上使用它的权限,因此包含它应该没有问题。

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