I want to achieve the same as [[NSFontManager sharedFontManager] addFontTrait:(nullable id)sender] using only my code
Document Status
This action method causes the receiver to send its action message up the responder chain. By default, the action message is changeFont:. When a responder replies by providing a font to convert in a convertFont: message, the receiver converts the font by adding the trait specified by sender. This trait is determined by sending a tag message to sender and interpreting it as a font trait mask for a convertFont:toHaveTrait: message.
so i tried
NSFontManager * fm = [NSFontManager sharedFontManager]; NSFont * font = [fm selectedFont]; NSFont * modifiedFont = [fm convertFont:font toHaveTrait:NSFontItalicTrait]; [fm setSelectedFont:modifiedFont isMultiple:YES]; [NSApp sendAction:@selector(changeFont:) to:fm.target from:fm];
or
[[self.window firstResponder] tryToPerform:@selector(changeFont:) with:modifiedFont];
but itβs clear that I missed some point
How the actual implementation in NSFontManager changes the font to NSTextField and how it can be reproduced
cocoa nstextfield nstextview nsfontmanager
Peter Lapisu
source share