Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Iphone iOS中的自定义阿拉伯文字体_Iphone_Fonts_Ios4_Arabic_Custom Font - Fatal编程技术网

Iphone iOS中的自定义阿拉伯文字体

Iphone iOS中的自定义阿拉伯文字体,iphone,fonts,ios4,arabic,custom-font,Iphone,Fonts,Ios4,Arabic,Custom Font,我正在尝试制作一个主要显示阿拉伯语内容的iphone应用程序。我想使用自定义的阿拉伯语字体来显示内容,而不是iPhone默认的阿拉伯语字体。我使用了以下代码: - (void)viewDidLoad { [super viewDidLoad]; [arabicLabel setFont: [UIFont fontWithName: @"Simple Indust Shaded" size: 20]]; arabicLabel.text = @"السلام عليكم";

我正在尝试制作一个主要显示阿拉伯语内容的iphone应用程序。我想使用自定义的阿拉伯语字体来显示内容,而不是iPhone默认的阿拉伯语字体。我使用了以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    [arabicLabel setFont: [UIFont fontWithName: @"Simple Indust Shaded" size: 20]];
    arabicLabel.text = @"السلام عليكم";
}
其中arabicLabel是一个标签。我将标签放在应用程序资源中,并将其作为UIAppFont数组项添加到info.plist文件中。此外,字体是

当我在模拟器上运行此代码时,标签显示默认的阿拉伯语字体(不是我的自定义字体);但是,它将其大小设置为代码中所述的20

我不明白我做错了什么。。。我知道在info.plist文件中,我必须添加扩展名为(ttf)的字体文件名,我做到了。另外,我知道在前面的代码中,我必须输入实际的字体名而不是文件名,因此我在Mac中打开了文件,并使用了打开文件时出现的标题(简单的Indust shade)

我错过什么了吗?除了Unicode之外,对自定义字体还有其他要求吗

注:我对自定义英文字体做了同样的操作,效果很好

简短回答 这似乎是iOS中的一个bug

长话短说 正如您可能知道的,阿拉伯文本在呈现之前需要进行造型,这意味着将基本字母()转换为相应的上下文字母()

iOS会自动对阿拉伯语文本进行预处理,但由于某些原因,它会忘记自定义字体,而在渲染连接的字母时只使用系统默认字体

所以,这是iOS中的一个bug,你应该等待它被解决

变通办法 但是,如果您迫不及待,可以使用以下解决方法: 在呈现文本之前对其进行预处理。这将允许跳过导致此问题的iOS预处理阶段,从而使用自定义字体呈现文本

如果要测试此解决方案,只需复制以下行并在项目中尝试:

arabicLabel.text = @"ﺍﻟﺴﻼﻡ ﻋﻠﻴﻜﻢ";

这个答案适用于IOS 7以下的用户

我也经历过这种情况,您可以创建自己的哈希映射方法,用自定义字体替换0600-06ff字符,但为此,您需要检查TTF中的字形是否映射到0600-06ff,而不是修改除0600-06ff之外的映射到unicode的ur字形

例如,如果我制作了一个TTF并用unicode 0627映射了“و”,当我尝试查看键入的unicode 0627字符的效果时,即(当我键入“ا”时,它必须显示“و”),它将不会对其应用我的自定义图像,因为ios6不允许u更改特定范围上的字形。但是,如果我将这个自定义字符映射为Fxxx系列或0600-06ff以外的其他字符,它将很容易允许我进行自定义更改

阿拉伯语(0600-06FF,255个字符)u无法在此范围内播放或使用自定义图像更改这些字形图像的图像 因此,将您的字形映射到下面的阿拉伯文unicode 阿拉伯文补编(0750-077F,48个字符) 阿拉伯文扩展-A(08A0-08FF,39个字符) 阿拉伯文演示文稿格式-A(FB50-FDFF,608个字符) 阿拉伯文演示文稿格式-B(FE70-FEFF,140个字符)

这里是使用自定义阿拉伯语类完成的类似事情的链接,我也从中获得了帮助

您能告诉我们更多关于解决方法的信息吗?我尝试添加arabicShaper文件,但不知道下一步该怎么做,否则,这将允许使用任何自定义字体或仅使用特定字体?好的,您应该调用shape函数并传递要显示的字符串,它将返回一个成形字符串,您可以将其分配给
arabicLabel.text
。是的,这适用于大多数字体,不需要自定义字体。我想我还应该找到一个解决方案,用于FriBidiChar和NSString之间的转换…@someone0,你成功了吗。你能分享一些相关的细节吗?例如,您是如何将预处理代码合并到iOS应用程序中的,您使用了哪种字体?@Mustafa不,我没有。最后我使用了标准字体。