我有一个显示希腊文字的应用程序。我使用Cardo字体以获得良好的显示效果。在开发 AppleWatch 扩展程序和应用程序时,有人向我指出,一些特殊字符被截断了。这是一些示例文本的外观(来自 iPhone 模拟器的屏幕截图):
以下是 Watch 模拟器上的相同文本:
请注意,第一个单词的第二个字符上的花哨的重音字符(具体而言,带有抑扬音符号的呼吸标记)被切断。我尝试使用NSString
如下测量代码在手机上设置标签的框架:
UILabel *label = [[UILabel alloc]init];
label.font = [UIFont fontWithName:@"Cardo" size:16];
[self.view addSubview:label];
label.text = @"οὗτος ἦλθεν εἰς μαρτυρίαν ἵνα μαρτυρήσῃ περὶ τοῦ φωτός, ἵνα πάντες πιστεύσωσιν δι᾽ αὐτοῦ.";
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
style.lineBreakMode = NSLineBreakByWordWrapping;
CGRect rect = [label.text boundingRectWithSize:self.view.bounds.size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName: label.font,
NSParagraphStyleAttributeName: style} context:nil];
label.frame = CGRectMake(5, 100, ceilf(rect.size.width), ceilf(rect.size.height));
label.layer.borderWidth = 1; //for clarity
label.layer.borderColor = [UIColor blackColor].CGColor;
结果如下所示(为清楚起见绘制了边框):
有趣的是,如果我使用系统字体而不是 Cardo,额外的符号会正确显示:
所以,我的问题是:是什么导致NSString
上浆切断多余的标记?是否有一些选项我可以传递给大小调整方法来纠正这个问题?或者更好的是,我可以WKInterfaceLabel
在 Watch 应用程序中设置一些选项以使其正确呈现吗?