There are many ways to affect the glyphs that are used to show text on screen. Since macOS 10.11 El Capitan (released in 2015), possibly the simplest override points are in
NSLayoutManagerDelegate. Another, arguably more ancient way to replace glyphs on-the-fly is to override and customize
NSGlyphGenerator. This predates the existence of
NSLayoutManagerDelegate, and it’s not even available on iOS, so that’s how arcane the approach outlines here will be.
Continue reading …
Rich Siegel recently wondered on Slack why
NSTextView would suddenly display empty placeholders for some glyphs when the font does not support them, instead of falling back to a safe font like it usually does. Chinese characters never got displayed. Michel Fortin remembered a similar problem, and the potential fix was quite simple:
In summary, if you have to change the font after the text storage was edited, do it in
willProcessEditingand it’ll do the right thing. Don’t do it in
That turned out to be what tripped up Mr Siegel’s text view, which now happily displays CJK/CJKV again. For more details and some background about how you can detect this problem in your apps, read Michel’s post.