Я пытаюсь привести NSFont к CGFont:
var defaultFont: NSFont = NSFont.labelFont(ofSize: CGFloat(currentSize))
Как это:
if let oldFont = defaultFont as? CGFont {...
Нет, компилятор говорит «нет»: Conditional downcast to CoreFoundation type 'CGFont' will always succeed
. Хорошо, давайте попробуем другой способ:
let oldFont = defaultFont as CGFont
Нет. Компилятор говорит «нет»: 'NSFont' is not convertible to 'CGFont'; did you mean to use 'as!' to force downcast?
. Хорошо, давайте использовать as!
:
let oldFont = defaultFont as! CGFont
Copmpiler говорит «да» !, но ошибка времени выполнения говорит: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Я попытался запустить CGFont по имени, но не все мои шрифты «смонтированы в системе», и имя шрифта могло бы измениться с Font-Name
на Font_name
, если оно инициировано CGFont (_ name: CFString). Это рискованно.
Любая помощь?