Hacker News new | ask | show | jobs
by Apreche 634 days ago
It's an improvement, but it's still absolute garbage. Just throw in the towel already. Copy whatever MacOS does and have it be the default.
8 comments

Isn't "what MacOS does" just shipping extremely high DPI screens on everything + using regular anti-aliasing on fonts with no hinting or subpixel rendering?
I have Fedora Kinoite and Mbpr M1Pro connected to the same 4k Dell monitor. Font rendering is still much better on macos than any settings in Fedora.
Probably because MacOS doesn't do fractional scaling. If you're not using a scaling mode that's an integer multiple of your monitor resolution MacOS oversamples the whole display. Kinonite is KDE iirc which can do fractional scaling (quite well too) on KDE 6. So if you're comparing 1.5x scaling on KDE compared to MacOS you're actually comparing a 3840x2160 render to 5120x2880.
MacOS was doing fractional scaling long before KDE even began to implement it.

UPD: just to be clear - even on macbook's screen macOS uses scaled resolution by default.

MacOS always renders at an integer multiple of their internal "logical" resolution, and then just shrinks the framebuffer down at the end to whatever the native resolution of the target monitor is.

Fractional scaling is rendering directly to a framebuffer at the target monitors native resolution, and scaling your UI fractionally to look right on the target screen size.

Apples approach is more resource intensive, but probably makes UI layout implementation a lot simpler and more consistent + potentially looks better than rendering at "real" native res for a lot of content.

KDE got fractional rendering of fonts and UI back in Plasma 4.
I think you're right, I might've been confusing it with proper support for mixed DPI desktops (i.e. one display at 1.5, and another at 1x). I think Plasma 5 could do it but I had a lot of problems until Plasma 6.
Fractional scaling was introduced in late 5 update and wasn't touched in 6 at all, per-monitor setting is only in Wayland for an obvious reason.
Why would anyone do fractional scaling... why not just natively render at the proper resolution. (barring old broken apps).
Given a 4K monitor you have 3 options: - No scaling, produces tiny text and UI elements - 2x scaling, use a logically 1080p display leading to very large text and UI elements - 1.5x scaling, logically a 1440p display

4k at 1x produces UI that's too small, 2x scaling is too large for a 27 inch monitor. 1.5x sizes everything like a 1440p display but you still get the higher resolution rendering at 4k.

Fractional scaling _is_ rendering at the 'proper' resolution of the display. It can be challenging to workaround some issues like how to deal with window sizes that scale to a fractional native buffer (i.e. a 501 logical pixel wide image becomes 751.5 physical pixels?). Apple decides 'no' to native fractional scaling, so does GNOME unless that's changed recently.

> so does GNOME unless that's changed recently.

Which imo was a bad choice. It works pretty well on MacOS because Apple only ships machines with a fairly constrained, known set of resolution/physical dimension combos. And they sell their own monitors for stuff like the mac mini where that isn't the case. This means they can design all their UI elements to be the "right" size without needing fractional scaling for a very large percentage of their users.

Gnome is running on all sorts of screens, with all sorts of resolution/dimension combos and on a lot of them you have to choose between "way too big" and "way too small".

I believe GNOME just hides the option for fractional values in their native settings menu, but it can be easily accessed through something like GNOME tweaks and similar.
It's exactly for "old broken apps".

What I generally do on my Gnome systems running 4k screens is to use 125% or 150% scaling, and then set larger default fonts for the system. Fractional scaling helps keep old apps legible even if imperfect, but updated apps which respect system font size render great (Gtk+ widgets auto-scale to fit the text).

Unfortunately, this approach ain't gonna work with Wayland as well.

Wokring on a 4+k monitor without scaling is difficult (at least if we are talking about text)
Gnome has another set of hidden settings to set default system font sizes: for UI elements and "document" font. Some non-GNOME apps used to respect that too (like Firefox and LibreOffice), but others were not-scaled.

Still, if you mostly relied on Gtk+ apps, where Gtk+ widgets scale to fit the text they are showing, this produced pretty good results even if some spacing was a bit inconsistent (i.e. spacing was too small compared to widget and text sizes).

Unfortunately, this approach seems to work less and less well as Gnome devs are following Apple's lead.

KDE works the same.
That sounds exactly like what I do in Linux.
It’s probably what macOS does but they manage to do it cleanly whatever the display scaling you choose, including arbitrary values of scaling that are unsupported by the OS (but that you can force with some software).

On Linux, good luck using anything else than integer scaling. And it’s a shame because with a 4K screen and fractional scaling, you can get both more definition AND more real estate.

the macos approach is to only ship weird and nonstandard monitor resolutions to convince people to buy your fancy display that costs 5x as much
Am I the only one who absolutely doesn't care about this? Both are just fine to me.
In the replies people are talking about current issues regarding scaling and high dpi displays.

That has little to do with it. Apple has had vastly superior font rendering since the day OSX launched, and have been in first place ever since. There's no point in my memory of the past 20+ years this was not the case regardless of display technology.

Even though other systems implement a lot of the same techniques of sup-pixel rendering, fractional scaling, etc. the results speak for themselves. With the same monitors, the same display cables, the same fonts, and the same applications, text rendered by Apple operating systems is more crisp, clean, readable, and pleasing to the eye. Configuring settings on Linux improves the situation, but no configuration gets close to the quality Apple delivers by default. Apple is also superior to Windows in this regard, but the margin is much smaller.

This is coming from a person who maintains a long list of MacOS gripes because of all the things they do wrong. Font rendering is one of the few things they have consistently done better than everyone else.

macOS uses grayscale anti-aliasing exclusively. But what it makes it work that well is the HiDPI (200+ dpi) displays Apple ships.

Use a 32-inch 4K display and it will have be blurry/thick fonts too.

Absolutely. On my external display macos fonts looked horrible, way worse than on Linux.
I might be blind but I'm using 2x4K 32" displays on macOS and the fonts still look like paper to me. It was funny because every Apple commentator I had listened to made it seem like my retinas would melt out of sheer disgust if I didn't use a 5K display.

It looks night and day better than my 2x4K 27" I use with my Windows 11 work laptop, even with ClearType (That was a let down. I replaced 2x1080p 21" displays and expected that to fix the woeful fonts on Windows).

Font rendering is absolute garbage on macOS since they removed subpixel-antialiasing. Everything is a blurry mess unless you have a high-dpi display (and even then it's pointlessly worse).
How is it worse with a high dpi display?
HiDPI is not magic. If you look closer, you will see artifacts which you won't see on OSes that care.
Mac looks shit. Always has done. Turns out you can get used to anything. My standard is paper. The only way to get close to that is high DPI screens. Guess what Macs come with now? My Linux PC also has a high DPI display. Only difference is you have the choice to spend less and still get decent looking fonts if you don't use Mac.
Yeah, no. Mac font rendering is blurry, Windows font rendering is pixelated or okay with the right ClearType settings, FreeType with slight hinting and subpixel rendering (lcdfilter) is between these two and really fine IMO.