Я пытаюсь получить расположение глифов в NSLayoutManager
, но в нескольких отдельных случаях я получаю то, что кажется неправильным.locationForGlyphAtIndex возвращает неправильное значение
Например: два f
вместе в Helvetica Neue size 16. Значение x второго f
должно быть около 4, но я получаю 9.232000 ..? Кто-нибудь знает, почему это?
NSString *lettersString = @"ff";
NSDictionary *attrsDictionary = @{
NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:16]
};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:lettersString attributes:attrsDictionary];
NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:attributedString];
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:layoutManager];
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:CGSizeMake(100, 100)];
textContainer.lineFragmentPadding = 0;
[layoutManager addTextContainer:textContainer];
CGPoint location = [layoutManager locationForGlyphAtIndex:1];
// location.x == 9.232000
Я думаю, что 9.232000 - это правильное значение для 16-го HelveticaNeue. Я создал ярлык с этими параметрами, а его собственный размер - 14x23. – Astoria
@Astoria, если у меня есть «fff», тогда позиция третьей буквы также возвращается как 9.232000 ...? Как 2-я и 3-я буквы имеют одинаковое положение x в строке. – user2994359