Hacker News new | past | comments | ask | show | jobs | submit login
Modern Text Rendering with Linux (mrandri19.github.io)
111 points by daww 76 days ago | hide | past | web | favorite | 18 comments

This is missing a text layout engine: separating a string of texts into multiple blocks with word wrap. This is handled in GTK+ through Pango and in Qt with an internal algorithm. I don't believe FreeBiDi/ICU is used in either.

HarfBuzz for shaping, too.

Do projects like Pathfinder fit into this stack anywhere? At a guess you could replace Freetype with it, but I guess it does more?

Interesting question, from my understanding Pathfinder is only concerned with rendering so it doesn't completely replace FreeType: you still need some software to extract the curves path data from the font file. This can be done in rust with skribo and font-kit

You can check out this issue for more info: https://github.com/servo/pathfinder/issues/143

Pathfinder replaces FreeType. It doesn't do more, and shouldn't: it's focused on glyph (and image) rendering.

Great detailed pictures. I'm curious where general hinting belongs.

"Hinting" is a combination of techniques. Subpixel placement hinting is done by the shaper, which would be HarfBuzz in this case. Metrics hinting (adjusting the glyph width) is done by a combination of the shaper and the renderer, which would be HarfBuzz and FreeType. Outline hinting (fitting outline to the grid by distoring shapes without) is done by FreeType.

Behdad Esfahboh, the author of HarfBuzz, has a great paper on the different choices and tradeoffs here: https://docs.google.com/document/d/1wpzgGMqXgit6FBVaO76epnnF...

Now that very high dpi screens are so popular and inexpensive, is subpixel rendering worth doing anymore?

It's important to make the distinction between subpixel positioning and subpixel (RGB) rendering. I'd personally say yes to the former, even at high dpi, and no to the latter if you're on a mobile device. The kerning errors you get from quantizing the position of glyphs to integer pixels are, to my eyes, a noticeable degradation of quality.

Do you know if the layout engines for laser printers do subpixel stuff?

Most laser printers tend to use PostScript (a Turing complete language), which does not know about displays hardly at all. It does arbitrary positioning.

> It does arbitrary positioning.

So are you saying that whether or not subpixel effects are accounted for is implementation dependent?

I don’t know the details, but on my 4K screen different applications font rendering looks very has a very noticeable difference in quality. Eg IntelliJ looks great, and afaik uses some form of subpixel Rendering. Where’s VS Code looks kind of crappy since the update to macOS Mojave, which as far as I understood changed font rendering

Yeah, at distances people actually view displays at, there is still a benefit to subpixel rendering and some amount of hinting, even on "retina" displays.

Far as I'm concerned, high res displays help hinting do less damage, but they don't render it obsolete.

To make it more modern, hopefully they will replace the XML by JSON at some point.

How does replacing XML with JSON make it more modern?

smaller, more readable, faster, safer.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact