我尝试将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! CGFontCopmpiler说“是”,但是运行时错误说:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我试过按名称启动CGFont,但并不是所有字体都“挂载在系统中”,如果字体名称由CGFont发起(_ name:CFString),字体名称可以从Font-Name更改为Font_name。这很冒险。
有什么帮助吗?
发布于 2019-07-04 20:23:27
来自https://lists.apple.com/archives/cocoa-dev/2010/Feb/msg00177.html
给定一个NSFont对象,如何从它提取或创建一个CGFontRef以直接与CoreGraphics一起使用?你离我很近。从(我认为) Leopard开始,NSFont和CTFontRef (而不是CGFontRef)是免费的桥接,所以您应该能够使用CTFontCopyGraphicsFont()从NSFont获得CGFontRef。
示例:
import CoreText
let defaultFont: NSFont = ...
let cgFont = CTFontCopyGraphicsFont(defaultFont, nil)https://stackoverflow.com/questions/56893842
复制相似问题