0
我想將使用NSFont的代碼轉換爲使用CTFont的代碼(試圖使它成爲跨平臺的macOS和iOS)。使用CTFont對象作爲NSFont對象,橋不工作
根據文檔和this後,我不應該做任何事情,使其工作,因爲CTFontRef和NSFont之間有一個免費的橋樑。
後來,我收到錯誤
error: cannot initialize a parameter of type 'NSFont * _Nonnull' with an lvalue of type 'CTFontRef' (aka 'const __CTFont *')
convertedFont = [fontManager convertFont:convertedFont toNotHaveTrait:NSBoldFontMask];
^~~~~~~~~~~~~
OLD CODE:(保持NSFontManager現在)
NSFontManager *fontManager = [NSFontManager sharedFontManager];
// NSFont *font = static_cast<NSFont *>(inProperties[theKey]);
// NSFontTraitMask fontTraits = [fontManager traitsOfFont:font];
// NSFont *convertedFont = font;
NEW CODE:
CTFontDescriptorRef descriptor = CTFontDescriptorCreateWithAttributes((CFDictionaryRef)inProperties);
CTFontRef font = CTFontCreateWithFontDescriptor(descriptor, 0, NULL);
CFRelease(descriptor);
CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(font);
CTFontRef convertedFont = font;
請檢查我的答案,讓我知道它是否解決您的問題 – KrishnaCA