Я могу думать о двух путях, но не дает точно такой же семантики, как +[NSFont systemFontOfSize:weight:]
.
Один из них - -[NSFontManager convertWeight:ofFont:]
. Это просто позволяет вам подниматься или опускаться по весу, а не выбирать определенный целевой вес. Однако, если он предоставляет новый шрифт, вы можете запросить -[NSFontManager weightOfFont:]
, чтобы получить его вес, где значение 3 «светлое» (см. Таблицу в -convertWeight:ofFont:
). Повторяя этот процесс, вы можете получить желаемый вес, хотя метод может выйти из строя или провалиться.
Другой идти от шрифта, шрифт дескриптор нового шрифта дескриптора с нужным весом до нового шрифта:
NSFontDescriptor* origDescriptor = origFont.fontDescriptor;
NSFontDescriptor* newDescriptor = [origDescriptor fontDescriptorByAddingAttributes:@{ NSFontTraitsAttribute: @{ NSFontWeightTrait: @(-0.2) } }];
NSFont* newFont = [NSFont fontWithDescriptor:newDescriptor size:origFont.pointSize];
Здесь я просто выбрал -0.2 произвольно. Проблема с этим подходом заключается в том, что он принимает значения веса от -1,0 до 1,0, причем 0 является «нормальным». Неясно, как сопоставить эту шкалу с «легким весом». Я предполагаю, что вы можете запросить некоторые легкие шрифты, которые вы приобретаете по имени, чтобы узнать, что их вес.
Для второго метода предполагалось использовать -0.4 для «света», потому что это константа, обеспечиваемая 10.11 для константы NSFontWeightLight. –
К сожалению, ни один из этих методов не работает. Тот же оригинальный шрифт возвращается из обоих. –
Вы уверены, что шрифт, с которого вы начинаете, имеет легкий вариант? –