You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Blurry font rendering under fractional scaling on Linux #1938
I use 125% scaling on my laptop display, and Ghosty exhibits blurry font rendering. At 100% or 200% scaling, the rendering is crisp, and at 150% or 175% it looks blurry but not as pronounced as at 125%. Here are screenshots for comparison:
100% (note that this one looks blurry in HiDPI mode simply because there aren't many pixels, but it looks sharp when rendered with 100% scaling)
125%
200%
I tried font-thicken = true mentioned in #661 and it didn't make much difference.
I'm running Ghostty built from commit b1677b8, on GNOME Wayland 46.2 and Fedora 40 Silverblue. I see in the logs that it does identify that fractional scaling should be used: Using. fractional scale 1.25 for EGL window (772 665 => 965 831).
Here's another comparison between GNOME Terminal and Ghostty with the foreground and background colors matched, and scaled up so you can see individual pixels.
It does look like some sort of scaling is off. Blurring is very frequently a scaling issue somewhere (in Ghostty or otherwise). I'll probably need more logs. Can you get more the startup logs for Ghostty (basically all the debug logs up to a blank window opening)?
@190n any chance you can get debug logs (build a debug version)? I'm specifically looking for the content scale Ghostty is applying rather than GTK and it looks like that's only a debug log.
I have the same issue on my machine with a big 4k monitor. I compared with Kitty where my Terminess font is sharp and clear. Kitty does not using GTK, it directly calls X11. Why uses Ghosty GTK?
The font stack between Kitty and Ghostty is identical. We both use fontconfig + freetype + harfbuzz. So, it's a matter of getting the inputs right (DPI and so on) to get the right outputs.
Why uses Ghosty GTK?
Ghostty uses GTK for a native UI experience. Kitty doesn't have native tabs, native alert dialogs, native splits, native context menus, etc. That is an explicit design goal of Ghostty the app. This has nothing to do with font rendering. Our font rendering can be identical but the way we get surface sizes, DPI, etc. is dependent on our underlying platform.
Kitty does not using GTK, it directly calls X11.
This isn't strictly true, it uses a heavily modified fork of GLFW (which itself calls into X11, yes).
I think that this issue has returned, at least in part, since the fix #4255 was reverted in #7233 (or, rather, because upstream disabled the workaround used by the fix). I'm not sure whether this issue should be re-opened or whether a new discussion should be created.
The "proper" solution for this seems to be that we need to rescale the OpenGL buffer to work with physical pixels rather than GTK's virtual pixels. However, this seems like it'll require substantial refactoring since the codebase uses the two interchangeably atm. See also #9795 (reply in thread) and the thread on Discord.
Ignoring the differences in line spacing, the fonts in ghostty have fuzzier edges compared to Ptyxis, something you can see when looking at the cache_control word.
At least in my case this isn't entirely a case of pedantics: I have a mild case of astigmatism and even with my glasses I find that the Ghostty text can be a bit more difficult to focus on, especially towards the end of the day/evening, while the way Ptyxis renders things is a bit easier on my eyes.
In this case the system is Fedora 43 with Gnome 49, the display is a 13.5" display with a resolution of 2880x1920 (3:2), running at 2.5x scaling (so it matches my other displays running at 2x scaling, due to the 3:2 ratio of this display). However, I'm noticing similar differences on my Eizo CS2740 (3840x2160) which uses a 2x scaling factor.
@yorickpeterse I find kitty is much better than ghostty, too, and I'd be curious what that screenshot would look like for the content you showed above.
Kitty seems to go towards the other end of the spectrum and renders the font thinner/lighter:
To make it match Ghostty and Ptyxis in terms of gamma/contrast/thickness, I had to use the Kitty setting text_composition_strategy 1.5 30, producing the following:
In both cases Kitty renders the text sharper, ignoring the blur added by Gnome's screenshot utility (which is a long-standing issue but unrelated as it's the same for all screenshots).
While we're at it, here's Alacritty:
And here's a zoomed in (400%) comparison between Ghostty and Ptyxis for a specific word:
Ghostty
Ptyxis
Here the difference should be clearly visible when looking at the St in String, as in case of Ghostty the edges are a bit more blurry compared to Ptyxis.
I think the situation here is pretty clear and confirmed: this regressed with GTK 4.17.5, when gl-no-fractional was dropped, and Ghostty GTK does not currently handle fractional DPI scaling properly. #1938 (comment) has all the receipts.
Seems appropriate to have an open issue tracking this again, though whether to reopen this one or create a new one is for a maintainer to decide.
Based on the comment of @danielwe I ran a quick test with 200% scaling and a 10pt font size (instead of my default of 8pt) such that the font size is the same as before. This produces the following:
And a zoomed in version:
I'm not sure there's a clear difference here, and staring at the screen (to circumvent blurriness potentially added by GNOME's screenshot tool) I'm not sure I can see a difference that can't be attributed to the placebo effect.
Comparing the zoomed in screenshots side by side there does appear to be a difference, but Ptyxis is still the sharpest of them all:
To me, Ghostty@2.0 looks much closer to Ptyxis@2.5 than Ghostty@2.5. Ghostty@2.5 is the one that stands out.
But even Integer scaling requires upsampling if the content is rendered to logical instead of device pixels. It's a nicer problem since every logical pixel boundary aligns with a device pixel boundary, but sharpness could still suffer. So, with the caveat that I'm not very familiar with all the layers of GTK and OpenGL involved here, my guess is that sorting out the rendering canvas DPI would improve sharpness for both the integer and fractional cases.
Reacted by Yorick Peterse, Aron Griffis, Andres and MithicSpirit
Hi everyone. I am having a similar issue on Niri/Wayland with fractional scaling. Ghostty seems to render in a blurry fashion that makes it harder for my eyes to focus. This is a zoomed comparison. Btw, the freetype-load-flag option doesn't really change how blurry it renders, just how the font lines up with the pixel, I believe.
ghostty:
kitty:
Reacted by jakub, Ozornin Matvey, Kartik Shah and Andres
Hello. I was directed here because fonts are blurry (again) when using fractional scaling and Ghostty 1.3.0-1.fc43. Originally reported at #11401. Please note in the following screenshot how the three equal signs are different one from another. I'm using scale 125% on Fedora Silverblue 43/Gnone 49. Font is Iosevka Term ss15.
For comparison, Ptyxis renders the symbol always the same way.
Do you use fractional DPI scaling in your display configuration? If so, this is #1938 (which is closed, but should arguably be reopened since the problem reappeared due to upstream changes).
Ghostty only rasterizes a glyph once and reuses that bitmap in every cell containing that glyph, so it will always be pixel identical on the virtual screen that Ghostty renders to. But fractional upscaling from virtual to physical pixels may break this. The solution is to figure out how to once again make Ghostty render directly to physical pixels regardless of DPI scaling.
This tracks with what I'm experiencing as well.
Could this issue please be reopened?
Reacted by Andres, Federico, Adrian and eaglgenes101
Activity
jcollie commentedon Jul 10, 2024
That's a macOS-only setting so it would make no difference on Linux/Gnome. How does text in Ghostty compare to other apps using the same font?
190n commentedon Jul 10, 2024
Other apps look crisp. Left-to-right: GNOME Terminal, Ghostty, VS Code. All at 125% scaling.
jcollie commentedon Jul 10, 2024
Could the difference be the background color of Ghostty? It's quite a bit lighter than Gnome terminal or VS Code.
190n commentedon Jul 10, 2024
Here's another comparison between GNOME Terminal and Ghostty with the foreground and background colors matched, and scaled up so you can see individual pixels.
mitchellh commentedon Jul 11, 2024
It does look like some sort of scaling is off. Blurring is very frequently a scaling issue somewhere (in Ghostty or otherwise). I'll probably need more logs. Can you get more the startup logs for Ghostty (basically all the debug logs up to a blank window opening)?
190n commentedon Jul 11, 2024
mitchellh commentedon Jul 11, 2024
@190n any chance you can get debug logs (build a debug version)? I'm specifically looking for the content scale Ghostty is applying rather than GTK and it looks like that's only a debug log.
190n commentedon Jul 12, 2024
Here log.txt
mitchellh commentedon Sep 3, 2024
Is this improved at all with #2060? I think the issue is generally GTK only recently started supporting fractional scaling.
chrboesch commentedon Sep 12, 2024
I have the same issue on my machine with a big 4k monitor. I compared with Kitty where my Terminess font is sharp and clear. Kitty does not using GTK, it directly calls X11. Why uses Ghosty GTK?
mitchellh commentedon Sep 12, 2024
The font stack between Kitty and Ghostty is identical. We both use fontconfig + freetype + harfbuzz. So, it's a matter of getting the inputs right (DPI and so on) to get the right outputs.
Ghostty uses GTK for a native UI experience. Kitty doesn't have native tabs, native alert dialogs, native splits, native context menus, etc. That is an explicit design goal of Ghostty the app. This has nothing to do with font rendering. Our font rendering can be identical but the way we get surface sizes, DPI, etc. is dependent on our underlying platform.
This isn't strictly true, it uses a heavily modified fork of GLFW (which itself calls into X11, yes).
chrboesch commentedon Sep 12, 2024
Thanks for clarification.
34 remaining items
MithicSpirit commentedon Dec 31, 2025
I think that this issue has returned, at least in part, since the fix #4255 was reverted in #7233 (or, rather, because upstream disabled the workaround used by the fix). I'm not sure whether this issue should be re-opened or whether a new discussion should be created.
The "proper" solution for this seems to be that we need to rescale the OpenGL buffer to work with physical pixels rather than GTK's virtual pixels. However, this seems like it'll require substantial refactoring since the codebase uses the two interchangeably atm. See also #9795 (reply in thread) and the thread on Discord.
yorickpeterse commentedon Jan 22, 2026
There indeed seems to be something going on with the font rendering these days. This is on Ghostty 1.2.3 (but the behavior is the same on
main):And this is using Ptyxis:
Ignoring the differences in line spacing, the fonts in ghostty have fuzzier edges compared to Ptyxis, something you can see when looking at the
cache_controlword.At least in my case this isn't entirely a case of pedantics: I have a mild case of astigmatism and even with my glasses I find that the Ghostty text can be a bit more difficult to focus on, especially towards the end of the day/evening, while the way Ptyxis renders things is a bit easier on my eyes.
In this case the system is Fedora 43 with Gnome 49, the display is a 13.5" display with a resolution of 2880x1920 (3:2), running at 2.5x scaling (so it matches my other displays running at 2x scaling, due to the 3:2 ratio of this display). However, I'm noticing similar differences on my Eizo CS2740 (3840x2160) which uses a 2x scaling factor.
agriffis commentedon Jan 22, 2026
@yorickpeterse I find kitty is much better than ghostty, too, and I'd be curious what that screenshot would look like for the content you showed above.
yorickpeterse commentedon Jan 22, 2026
Kitty seems to go towards the other end of the spectrum and renders the font thinner/lighter:
To make it match Ghostty and Ptyxis in terms of gamma/contrast/thickness, I had to use the Kitty setting
text_composition_strategy 1.5 30, producing the following:In both cases Kitty renders the text sharper, ignoring the blur added by Gnome's screenshot utility (which is a long-standing issue but unrelated as it's the same for all screenshots).
While we're at it, here's Alacritty:
And here's a zoomed in (400%) comparison between Ghostty and Ptyxis for a specific word:
Here the difference should be clearly visible when looking at the
StinString, as in case of Ghostty the edges are a bit more blurry compared to Ptyxis.danielwe commentedon Jan 22, 2026
I think the situation here is pretty clear and confirmed: this regressed with GTK 4.17.5, when
gl-no-fractionalwas dropped, and Ghostty GTK does not currently handle fractional DPI scaling properly. #1938 (comment) has all the receipts.Seems appropriate to have an open issue tracking this again, though whether to reopen this one or create a new one is for a maintainer to decide.
yorickpeterse commentedon Jan 22, 2026
Based on the comment of @danielwe I ran a quick test with 200% scaling and a 10pt font size (instead of my default of 8pt) such that the font size is the same as before. This produces the following:
And a zoomed in version:
I'm not sure there's a clear difference here, and staring at the screen (to circumvent blurriness potentially added by GNOME's screenshot tool) I'm not sure I can see a difference that can't be attributed to the placebo effect.
Comparing the zoomed in screenshots side by side there does appear to be a difference, but Ptyxis is still the sharpest of them all:
danielwe commentedon Jan 22, 2026
To me, Ghostty@2.0 looks much closer to Ptyxis@2.5 than Ghostty@2.5. Ghostty@2.5 is the one that stands out.
But even Integer scaling requires upsampling if the content is rendered to logical instead of device pixels. It's a nicer problem since every logical pixel boundary aligns with a device pixel boundary, but sharpness could still suffer. So, with the caveat that I'm not very familiar with all the layers of GTK and OpenGL involved here, my guess is that sorting out the rendering canvas DPI would improve sharpness for both the integer and fractional cases.
Switch to Ptyxis for the time being
and-rs commentedon Jan 26, 2026
Hi everyone. I am having a similar issue on Niri/Wayland with fractional scaling. Ghostty seems to render in a blurry fashion that makes it harder for my eyes to focus. This is a zoomed comparison. Btw, the freetype-load-flag option doesn't really change how blurry it renders, just how the font lines up with the pixel, I believe.
fedemp commentedon Mar 13, 2026
Hello. I was directed here because fonts are blurry (again) when using fractional scaling and Ghostty 1.3.0-1.fc43. Originally reported at #11401. Please note in the following screenshot how the three equal signs are different one from another. I'm using scale 125% on Fedora Silverblue 43/Gnone 49. Font is Iosevka Term ss15.
For comparison, Ptyxis renders the symbol always the same way.
schiegl commentedon Mar 17, 2026
Experiencing the same as @fedemp. Also GNOME 49 with 125% scaling, and only Ptyxis rendered the font as if it was 100% scaling.
anna328p commentedon May 31, 2026
My font rendering is also still blurry. Using GNOME 50 with 180% scaling.
@danielwe said in discussion 11401:
This tracks with what I'm experiencing as well.
Could this issue please be reopened?
00-kat commentedon Jun 11, 2026
If y'all are experiencing the same or a similar issue, please open a new discussion (link it here if you do); this issue won't be reopened.
and-rs commentedon Aug 19, 2026
took me a while but i just created a new discussion: #13911
gtk: support fractional surface scaling (#14269)