Windows Text Rendering Engine


Recommended Posts

You know, Mac and Linux distributions comes with a great text rendering engine.

 

Mac OS X Yosamite - http://www.superb.info/wp-content/uploads/2014/06/Screen-Shot-2014-06-03-at-01.06.36.png

Ubuntu - http://1.bp.blogspot.com/-fuOitpHeFVw/U1FUr8oKhMI/AAAAAAAADjo/FpVnS97aikc/s1600/ubuntu14.04-unity.png

 

The texts looks like very smooth, like a written in Photoshop...

 

Why aren't Windows comes with a great text rendering engine?

 

Thank you.

Link to comment
Share on other sites

Windows has about 4 different font renderers built in (Not counting apps like Office that has another couple in it), half of them are actually quite good (Better than what OS X or Linux produces anyway). The main reason applications don't use the good ones is either because they need to target Windows XP/Vista (Where they didn't exist), or the way you use them isn't a good fit to the way their program is written (The new APIs pretty much require you to use the GPU for UI rendering, a lot of apps don't). And Microsoft can't just port old applications across to the new APIs, because of just how different the new APIs are, so trying to use them causes rendering issues and slowdowns (Which you can see with gdipp/mactype)

That's not really an issue for new applications, every single Metro app (for instance) uses one of the new rendering APIs, and desktop applications like IE/Firefox use them too. Over time most applications will transition to the new APIs, and then every app will have nicer looking text.

  • Like 2
Link to comment
Share on other sites

Windows has about 4 different font renderers built in (Not counting apps like Office that has another couple in it), half of them are actually quite good (Better than what OS X or Linux produces anyway). The main reason applications don't use the good ones is either because they need to target Windows XP/Vista (Where they didn't exist), or the way you use them isn't a good fit to the way their program is written (The new APIs pretty much require you to use the GPU for UI rendering, a lot of apps don't). And Microsoft can't just port old applications across to the new APIs, because of just how different the new APIs are, so trying to use them causes rendering issues and slowdowns (Which you can see with gdipp/mactype)

That's not really an issue for new applications, every single Metro app (for instance) uses one of the new rendering APIs, and desktop applications like IE/Firefox use them too. Over time most applications will transition to the new APIs, and then every app will have nicer looking text.

Oh, i got it. Thanks for the reply.

Link to comment
Share on other sites

I wish font rendering in Windows was as good across the board as it can be in Linux.

 

That "can be" is important. A lingering legal threat about use of patent-encumbered techniques is still perceived.  Some distributions avoid shipping code that uses those techniques to avoid potential legal liability.  Red Hat, for example, does not. Font rendering quality can be improved after installation by savvy users in those products.

 

Distributions like Ubuntu, located in jurisdictions different than Red Hat, don't see the same potential legal threat and ship font rendering engines that deliver rather nice displays.

 

Linux does have an advantage in that all but the most ancient applications use a single, standard, font rendering engine. Unlike Windows,a user's tweaks are reflected system-wide.

 

I have found that many people forget that carefully adjusting their monitor's sharpness setting has an impact on font display.  I find on Windows, though, a very fine line between too sharp -- characters resolve to their individual pixels -- and not nearly sharp enough -- smudgy, fuzzy characters.

 

I've been looking at Win10 on a 27-inch 2560x1440 display.  Modern/Metro apps (believe they use grayscale and full hinting) look acceptable. Chrome is bad.  Project Spartan/Edge is not bad.  Firefox is not bad, either.  Other non-MS apps often look not so good at all.  Given that there are tens of thousands of older apps that people will continue to use for years, I imagine Microsoft will be dragging around support for old font rendering engines for some time.

Link to comment
Share on other sites

Windows has about 4 different font renderers built in (Not counting apps like Office that has another couple in it), half of them are actually quite good (Better than what OS X or Linux produces anyway). The main reason applications don't use the good ones is either because they need to target Windows XP/Vista (Where they didn't exist), or the way you use them isn't a good fit to the way their program is written (The new APIs pretty much require you to use the GPU for UI rendering, a lot of apps don't). And Microsoft can't just port old applications across to the new APIs, because of just how different the new APIs are, so trying to use them causes rendering issues and slowdowns (Which you can see with gdipp/mactype)

That's not really an issue for new applications, every single Metro app (for instance) uses one of the new rendering APIs, and desktop applications like IE/Firefox use them too. Over time most applications will transition to the new APIs, and then every app will have nicer looking text.

 

Why is it that new, Windows Vista+ only applications like IE11 and Office 2013 have such awful rendering then? If they can use the new (DirectWrite?) font rendering and not have to worry about pre-Vista why don't they? They look awful.

Link to comment
Share on other sites

maybe it's just me but I think mac's font smoothing looks awful... always looks too bold

Ditto, always found the *Nix/OSX font rendering to be "muddy", I like it crisp.. but *shrug* that's just me and what I'm used to. You can install a different font renderer (FreeType based) for the older non accelerated programs to get a similar look but don't recommend it.. kinda quirky at times.
Link to comment
Share on other sites

maybe it's just me but I think mac's font smoothing looks awful... always looks too bold

 

You are not only one.

 

I have that problem on my iMac.  Font looks bleeding.

 

I have crisp looking font on my Windows pc.

 

Maybe new iMac (5K) may be better. I have not tested it yet.

Link to comment
Share on other sites

I wish font rendering in Windows was as good across the board as it can be in Linux.

 

That "can be" is important. A lingering legal threat about use of patent-encumbered techniques is still perceived.  Some distributions avoid shipping code that uses those techniques to avoid potential legal liability.  Red Hat, for example, does not. Font rendering quality can be improved after installation by savvy users in those products.

...

Nah, the hinting patents expired years ago, problem is that hinting is what causes the crappy font rendering. "Slight hinting" (In Freetype speak) is the best compromise, where it only applies some hints to the font, and leaves other outlines untouched. That's what DirectWrite/WPF does, and what Freetype can be told to do (But there's other problems with the Linux implementation of Freetype that make it about as good as Windows 95 era GDI)

 

Why is it that new, Windows Vista+ only applications like IE11 and Office 2013 have such awful rendering then? If they can use the new (DirectWrite?) font rendering and not have to worry about pre-Vista why don't they? They look awful.

Yep, they're the ones using the better font rendering methods, and that's the result you get. The "blurryness" is actually how the font is supposed to have looked all along, it was architectural limitations in GDI that stopped that, and left Windows users with boxy/squared off fonts for 20 years (Which a lot of people have grown used to)

The GDI boxy rendering is "super crisp" because it destroys how the font looks and fits it to the pixel grid (Any AA GDI does is a hack around the core rendering, which is plain B&W), DirectWrite/WPF on the other hand lay out the font exactly as the designer intended, while trying to snap some parts of the font to the pixel grid (Like the cross bar in T, because most LCD screens have more horizontal resolution than vertical), which means that parts of the glyphs can end up between pixels, and AA then ends up covering multiple pixels (A 1 pixel wide line offset 0.5 pixels ends up with 2 pixels with 50% coverage, etc.)

 

The DirectWrite/WPF approach is better for a bunch of ways, you get more accurate rendering, and measurement is more accurate (Meaning what you see on the screen actually matches what you see on a printed output, like PDF). Because GDI snaps everything to whole pixels, you end up accumulating an error as you move across a line, leading to uneven spacing between characters, and differing line lengths in odd ways (Like a larger font size ending up with a smaller line length because the accumulated error is different).

Link to comment
Share on other sites

This topic is now closed to further replies.