Как программно идентифицировать шрифт PI (дингбат) под OS X - PullRequest
0 голосов
/ 13 апреля 2010

Существует класс шрифтов, называемых шрифтами Pi, чьи глифы в OS X отображаются в закрытое пространство Unicode 0xF021-0xF0FF, так что если вы вычитаете 0xF000 из каждого символа Unicode для получения 8-битной версии символа и быть в состоянии нарисовать этот символ, как если бы это был стандартный римский персонаж.

Мой вопрос: как мне распознать эти шрифты? Очевидно, что система может сделать это, потому что в палитре «Специальные символы» есть категория «Pi Fonts», в которой, очевидно, установлены различные такие шрифты, установленные в моей системе. В моем случае это BookshelSymbolSeven, MSReferenceSpeciality, MT-Extras, Marlett, MonotypeSorts, Webdings и различные Wingdings. Если я использую устаревшие подпрограммы QuickDraw для запроса TextEncoding этих шрифтов, я получаю значение 0x20000, которое я не вижу в системном заголовочном файле TextCommon.h. Должен ли я рассматривать любой шрифт с TextEncoding 0x20000 как шрифт Pi? И я бы предпочел не использовать никаких процедур обработки шрифтов QuickDraw по понятным причинам.

1 Ответ

0 голосов
/ 13 апреля 2010

Самое близкое, что я знаю, это NSSymbolicTraits, называемое NSFontSymbolicClass из NSFontDescriptor. Код

NSFontDescriptor*fontDesc=[NSFontDescriptor fontDescriptorWithFontAttributes:nil]; 
fontDesc=[fontDesc fontDescriptorWithSymbolicTraits:NSFontSymbolicClass];
NSArray*foo=[fontDesc matchingFontDescriptorsWithMandatoryKeys:[NSSet setWithObject:NSFontTraitsAttribute]];
NSLog(@"%@",foo);

дает мне список шрифтов Pi + Брайля + немного больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...