Good luck with that if you want to support non-Latin scripts. Now you're shipping 100s of MBs of fonts with your app.
I will probably end up having to ship entire text layout, font handling, and itemization stack in my wok just to do this correctly. It’s pretty frustrating down in the weeds of it.
[1] https://www.reddit.com/r/apple/comments/8wpk18/macos_mojave_...
In particular, subpixel rendering introduces performance and interoperability problems when the text is rendered on a layer that's semitransparent, rotated or used on more than one physical display (or that may become one of those things in the future -- that's the really tricky part). Everyone agrees it's absolutely needed on traditional low-dpi displays, but whether it remains a good idea or not on "retina" displays is a judgment call.
The article specified an assumption that this is about laying out editable rich text, where the user using the program is able to arbitrarily style the text as part of using the program.
Like writing HTML+CSS for a web browser, yes; but also like WordPad, or like a cell in a spreadsheet program, or like the contents of a label field in a view builder. And also like changing text display preferences in a terminal emulator.
I just loaded a font without an italic style into TextEdit on macOS, and it won't let me italicize it. It doesn't synthesize italics. I'm assuming the same goes for the rest of Apple's apps.
1. "Retina displays really don’t need [subpixel AA]" So eventually that hack will be needed less often.
2. Style changes mid-ligature: "I’m not aware of any super-reasonable cases where this happens." So that doesn't matter.
3. Shaping is farmed out to another library (Harfbuzz)
4. "Oh also, what does it mean to italicize or bold an emoji? Should you ignore those styles? Should you synthesize them? Who knows." ... yes, you should ignore those styles.
5. "some fonts don’t provide [bold, italic] stylings, and so you need a simple algorithmic way to do those effects." Perhaps this should be called "Text Rendering for Web Browsers Hates You" because often you have control over the fonts you use (like in a typical app)
6. Mixing RTL and LTR in the same selection also seems like a browser problem, but I guess it could maybe happen elsewhere.
7. "Firefox and Chrome don’t do [perfect rendering with transparency] because it’s expensive and usually unnecessary for the major western languages." Reasonable choice on their part. Also, mostly another Browser problem, since in your own app you can choose, rightly, not to have translucent text.
Probably could go on. It's a good discussion of the edge cases if you really need to support everything, I suppose.