Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS应用程序中安装特定字体时遇到问题-TTF不兼容?_Ios_Xcode_Fonts_Truetype - Fatal编程技术网

在iOS应用程序中安装特定字体时遇到问题-TTF不兼容?

在iOS应用程序中安装特定字体时遇到问题-TTF不兼容?,ios,xcode,fonts,truetype,Ios,Xcode,Fonts,Truetype,在我的代码repo中有一些字体文件用于Nubian和Nubian-Alt字体。它们是经过许可和付费的,需要使用。但是,我无法在iOS中使用此字体,并且无法使用字体手册打开字体,即使该字体在Finder中预览为OK,并且被标识为Truetype字体 我开始尝试将努比亚媒体添加到iOS应用程序中——使用应用程序Info.plist中的“Fonts provided by application”键。字体未出现在使用以下命令生成的列表中: for (NSString *familyName in

在我的代码repo中有一些字体文件用于Nubian和Nubian-Alt字体。它们是经过许可和付费的,需要使用。但是,我无法在iOS中使用此字体,并且无法使用字体手册打开字体,即使该字体在Finder中预览为OK,并且被标识为Truetype字体

我开始尝试将努比亚媒体添加到iOS应用程序中——使用应用程序Info.plist中的“Fonts provided by application”键。字体未出现在使用以下命令生成的列表中:

 for (NSString *familyName in [UIFont familyNames]) {
   for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
     NSLog(@"%@", fontName);
   }
 }
我检查了目标的“复制捆绑资源”构建阶段,发现字体已添加到列表中

我尝试添加我在另一个应用程序“chess merida unicode.ttf”中使用的另一种字体,以检查是否正确添加了字体-我将其复制到应用程序中,并将其添加到应用程序提供的字体数组中,看到它出现在“Copy Bundle Resources”列表中,使用上述代码段报告为可用

接下来,我看了一下OSX中的字体-双击会打开字体手册,但字体没有打开或添加。当我尝试将所有努比亚字体作为一个新的集合拖到FontBook中时,它报告了所有文件的问题,特别是在字体文件中包含的表中

选择所有字体,然后选择“继续”没有任何作用

我下载了一个名为Font Agent Pro的第三方应用程序的试用版,它也无法加载这些字体

我找到了一个名为fonts.com的粗略网站,并下载了另一个努比亚媒体(“ufonts.com_Nubian-Medium_1_.ttf”)——Xcode能够识别该文件

我检查了这些文件的权限,确保它们都是rw,没有更改


此时,您可能会怀疑这些文件已损坏或损坏,但它们正在网页上使用(这也是项目的一部分),并且工作正常。我还可以采取哪些其他步骤?如何将这些文件添加到iOS项目中?如果有某些类型的TTF不能在iOS项目中使用,我如何检查它们是否是那种类型?

步骤1:从以下位置下载努比亚字体:

步骤2:在项目中添加Font.ttf文件

步骤3:向应用程序注册字体,设置应用程序提供的
字体
info.plist
文件中输入,有关详细信息,请参见屏幕截图

步骤4:创建标签并为其指定字体,如下所示

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
[lbl setText:@"I am Nubian-Thin"];
[lbl setFont:[UIFont fontWithName:@"Nubian-Thin" size:26.0f]];

[self.view addSubview:lbl];

答案似乎是这些字体都是。我不知道如何区分,因为TTF文件看起来就像“桌面”字体。学习如何做到这一点是这个问题的目的

实际上,从某人的硬盘中挖掘出一个旧档案,发现了另一个使用TTF字体的档案。这些字体仍然有8.3个文件名,并且都是作为自己字体家族的成员创建的(因此努比亚媒体和努比亚媒体毫无关联)。我给它们重新命名,然后让它们通过机器人的试验来纠正家庭关系。这导致了TTF都在努比亚家族。然后发现了一个奇怪的问题,用这种字体创建的UILabel在框架顶部有一个1像素的水平规则。再次执行该过程,但选择生成OTF输出时,该行被删除


字体很容易,除非它们不是,否则它们真的很难。

感谢您的回复-是的,这些是我安装字体的步骤,它们可以工作(如问题中所述)。我不知道的是如何找出我已有的字体文件有什么问题,为什么这些字体文件不起作用。这才是真正的问题。快速搜索发现有几十种努比亚变体可供下载,但我们拥有的文件是许可的。字体文件有时可能会有所不同,只需双击它将在弹出窗口中打开的字体文件,标题栏上将显示字体的实际名称,只有该名称可用于您的应用程序,而不是文件名。它不是字体名称。字体名称是从项目窗格中显示的字体名称复制和粘贴的。有时,您使用的实际字体名称和.ttf文件名会有所不同。这就是为什么你看到打印出每个可用字体名称的代码了吗?未打印努比亚语(或任何变体)。它没有加载。Font Book无法加载这一事实也帮助我认为这是字体的问题,而不是我试图将其包含在项目中的方式。您是否尝试过使用MyFonts.com的帮助?没有,但我读过其他人在myfonts上没有回应的经历。如果你不问,你肯定不会得到回应。为什么不试试呢?也许你忽略了一些简单的事情。两个原因-最初使用myfonts进行交易的人不想这样做,问题解决了。(答案贴在下面)。