Я отображаю числа в iOS (с целью 7 и выше), сохраняя их в NSAttributedString и отображая с помощью «drawAtPoint:». Я использую Helvetica Neue.
Я заметил, что нарисованные таким образом цифры не пропорциональны — все глифы имеют одинаковую ширину. Даже маленькая «1» занимает то же место, что и «0».
Тест это подтверждает:
for(NSInteger i=0; i<10; ++i)
{
NSString *iString = [NSString stringWithFormat: @"%d", i];
const CGSize iSize = [iString sizeWithAttributes: [self attributes]];
NSLog(@"Size of %d is %f", i, iSize.width);
}
С, в другом месте:
-(NSDictionary *) attributes
{
static NSDictionary * attributes;
if(!attributes)
{
attributes = @{
NSFontAttributeName: [UIFont systemFontOfSize:11],
NSForegroundColorAttributeName: [UIColor whiteColor]
};
}
return attributes;
}
Полученные глифы все имеют одинаковую ширину — 6,358 пункта.
Есть ли какой-нибудь параметр рендеринга, который я могу включить, чтобы включить глифы с пропорциональными цифрами? Есть ли другой шрифт (в идеале похожий на Helvetica Neue), который поддерживает глифы с пропорциональными цифрами (в идеале, встроенные)? Что-нибудь еще?
Спасибо.
#import <CoreText/CoreText.h>
: здесь определяются символы. - person Benjohn   schedule 14.11.2013