gpt4 book ai didi

ios - NSString大小不考虑希腊呼吸痕

转载 作者:行者123 更新时间:2023-12-01 18:54:02 25 4
gpt4 key购买 nike

我有一个显示希腊文字的应用程序。我使用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大小减少多余的标记?我可以通过一些方法来调整尺寸吗?还是更好,我可以在Watch应用程序的 WKInterfaceLabel上设置一些选项来使其正确呈现吗?

最佳答案

我怀疑问题出在字体本身,而上升器设置得太紧,无法正确显示。

我首先尝试通过制作UILabel的子类并覆盖drawTextInRect来设置UILabel的文本插图:

- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {5, 0, 0, 0};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

如果您尝试增加文本插图以容纳字体,但没有用,请查看 Custom installed font not displayed correctly in UILabel

关于ios - NSString大小不考虑希腊呼吸痕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com