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

Cla*_*ges 9 iphone fonts uikit ios

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

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

EXp*_*inx 8

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

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

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

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

  • https://gist.github.com/1892760.尚未使用所有内置字体进行全面测试,但它在我的所有情况下都能很好地运行. (3认同)

Mr.*_*rna 7

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

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

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

根据Mac OS X Lion 10.7.2 ELUA:

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

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

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