Проверьте, выделен ли NSFont в Swift

Я пишу модульный тест, проверяющий формат сгенерированной NSAttributedString.

Я могу извлечь шрифт так:

if let font = attributedString.attributesAtIndex(0, effectiveRange: nil) as? NSFont {
    ...
}

Учитывая этот экземпляр NSFont, как я могу проверить, выделен ли он жирным шрифтом или нет?

2 ответа

Решение

Вы можете проверить свои особенности шрифта следующим образом:

let descriptor = font.fontDescriptor
let symTraits = descriptor.symbolicTraits
let traitSet = NSFontTraitMask(rawValue: UInt(symTraits))
let isBold = traitSet.contains(.BoldFontMask))

Но я не уверен, если isBold было бы true для всех, казалось бы, смелых шрифтов.

Обновленный ответ для Swift 4 и с NSFont расширение:

extension NSFont {
    var isBold: Bool {
        return fontDescriptor.symbolicTraits.contains(.bold)
    }
}
Другие вопросы по тегам