Bug 516314 - Lock screen clock uses QtTextRendering, which is documented to look bad at large sizes
Summary: Lock screen clock uses QtTextRendering, which is documented to look bad at la...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Screen locking (other bugs)
Version First Reported In: 6.6.0
Platform: Arch Linux Linux
: NOR minor
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-02-19 14:17 UTC by dantmnf
Modified: 2026-05-27 22:33 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.6
Sentry Crash Report:


Attachments
the lock screen (1.59 MB, image/png)
2026-02-19 14:17 UTC, dantmnf
Details
reference rendering of clock text (106.50 KB, image/png)
2026-02-19 14:19 UTC, dantmnf
Details

Note You need to log in before you can comment on or make changes to this bug.
Description dantmnf 2026-02-19 14:17:49 UTC
Created attachment 189819 [details]
the lock screen

SUMMARY
The clock text rendering in lock screen looks bad.


STEPS TO REPRODUCE
1. Use a font with sharp corners
2. Lock the screen

OBSERVED RESULT
The corners in clock text look rounded, curves also look jagged.

EXPECTED RESULT
The corners in clock text look sharp, curves look smooth.

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
(available in the Info Center app, or by running `kinfo` in a terminal window)
Linux/KDE Plasma: 
KDE Plasma Version: 6.6.0
KDE Frameworks Version: 6.23.0
Qt Version: 6.10.2

ADDITIONAL INFORMATION
Technically, this is caused by SDF text rendering used in Qt Quick with insufficient precision (i.e. resolution of SDF texture)

Qt has documented it to have artifacts at large sizes: https://doc.qt.io/qt-6/qquickwindow.html#TextRenderType-enum
Comment 1 dantmnf 2026-02-19 14:19:05 UTC
Created attachment 189820 [details]
reference rendering of clock text
Comment 2 Nate Graham 2026-02-20 16:04:54 UTC
Yep, you've uncovered a trade-off. We use the default Qt rendering where possible because it's better for performance. The downsides are worse appearance at large size and not respecting the user's sub-pixel anti-aliasing settings.

We could try CurveTextRendering to see if that's any better.
Comment 3 Bug Janitor Service 2026-02-20 21:04:50 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6328
Comment 4 Nate Graham 2026-02-20 21:12:27 UTC
Side note: I also tried NativeRendering again here, and it looked much worse than either of the others, exhibiting very jagged diagonals and curves. So that's definitely not an option.
Comment 5 dantmnf 2026-02-21 09:52:11 UTC
> Side note: I also tried NativeRendering again here, and it looked much worse than either of the others, exhibiting very jagged diagonals and curves. So that's definitely not an option.

That's interesting. I tried setting QML_DISABLE_DISTANCEFIELD=1 which would make Qt use NativeTextRendering and it looked perfect. 

Maybe it's related to user's hinting/anti-aliasing settings, but anyway it should make little difference compared with CurveTextRendering at such large size.
Comment 6 Oliver Beard 2026-02-22 11:48:43 UTC
Git commit b1387b2d53fa804fee5b3e9cac366b8e91963fb1 by Oliver Beard, on behalf of Nate Graham.
Committed on 22/02/2026 at 11:29.
Pushed by olib into branch 'master'.

components/Clock: use Curve Rendering for labels to preserve quality

The default QtRendering strategy is documented to "exhibit rendering
artifacts at large sizes"[1], which is seen here. CurveRenderer is the
recommended replacement for this use case, so let's use it.
FIXED-IN: 6.6.1

[1] https://doc.qt.io/qt-6/qml-qtquick-text.html#renderType-prop

M  +2    -0    lookandfeel/components/Clock.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/b1387b2d53fa804fee5b3e9cac366b8e91963fb1
Comment 7 Oliver Beard 2026-02-22 12:05:46 UTC
Git commit 2a10cdca8d89f8f42f8320796ae9f066547480ce by Oliver Beard.
Committed on 22/02/2026 at 12:05.
Pushed by olib into branch 'Plasma/6.6'.

components/Clock: use Curve Rendering for labels to preserve quality

The default QtRendering strategy is documented to "exhibit rendering
artifacts at large sizes"[1], which is seen here. CurveRenderer is the
recommended replacement for this use case, so let's use it.
FIXED-IN: 6.6.1

[1] https://doc.qt.io/qt-6/qml-qtquick-text.html#renderType-prop


(cherry picked from commit b1387b2d53fa804fee5b3e9cac366b8e91963fb1)

Co-authored-by: Nate Graham <nate@kde.org>

M  +2    -0    lookandfeel/components/Clock.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/2a10cdca8d89f8f42f8320796ae9f066547480ce
Comment 8 Nate Graham 2026-05-27 22:32:43 UTC
Git commit c12b9388eb13da2e85c9e2ad146ecd519e7eddcd by Nate Graham, on behalf of Filip Fila.
Committed on 27/05/2026 at 22:32.
Pushed by ngraham into branch 'master'.

components/Clock: Use NativeRendering instead of CurveRendering to avoid jagged looks


The `CurveRendering` we switched to instead of `QtRendering` struggles with
jagged rendering, which is particularly pronounced with some fonts
(e.g. Quicksand, Lexend).

The problem is also visible with Noto Sans, though to a lesser degree. It
seems that `NativeRendering` does not have this issue.
FIXED-IN: 6.6.6

M  +2    -2    lookandfeel/components/Clock.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/c12b9388eb13da2e85c9e2ad146ecd519e7eddcd
Comment 9 Nate Graham 2026-05-27 22:33:33 UTC
Git commit dbf7cb02c9081914a60de51ab11e41feb5135dfe by Nate Graham.
Committed on 27/05/2026 at 22:33.
Pushed by ngraham into branch 'Plasma/6.7'.

components/Clock: Use NativeRendering instead of CurveRendering to avoid jagged looks


The `CurveRendering` we switched to instead of `QtRendering` struggles with
jagged rendering, which is particularly pronounced with some fonts
(e.g. Quicksand, Lexend).

The problem is also visible with Noto Sans, though to a lesser degree. It
seems that `NativeRendering` does not have this issue.
FIXED-IN: 6.6.6


(cherry picked from commit c12b9388eb13da2e85c9e2ad146ecd519e7eddcd)

aa204eaf components/Clock: Use NativeRendering instead of CurveRendering to avoid jagged looks
f11b8284 Add a comment about CurveRendering
5974dfb1 Add a comment about CurveRendering in the other place too
4a427261 Mention the Qt bug report

Co-authored-by: Filip Fila <filipfila.kde@gmail.com>

M  +2    -2    lookandfeel/components/Clock.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/dbf7cb02c9081914a60de51ab11e41feb5135dfe
Comment 10 Nate Graham 2026-05-27 22:33:59 UTC
Git commit 110d4228135ee05d90713aa07942d6801f07f943 by Nate Graham.
Committed on 27/05/2026 at 22:33.
Pushed by ngraham into branch 'Plasma/6.6'.

components/Clock: Use NativeRendering instead of CurveRendering to avoid jagged looks


The `CurveRendering` we switched to instead of `QtRendering` struggles with
jagged rendering, which is particularly pronounced with some fonts
(e.g. Quicksand, Lexend).

The problem is also visible with Noto Sans, though to a lesser degree. It
seems that `NativeRendering` does not have this issue.
FIXED-IN: 6.6.6


(cherry picked from commit c12b9388eb13da2e85c9e2ad146ecd519e7eddcd)

aa204eaf components/Clock: Use NativeRendering instead of CurveRendering to avoid jagged looks
f11b8284 Add a comment about CurveRendering
5974dfb1 Add a comment about CurveRendering in the other place too
4a427261 Mention the Qt bug report

Co-authored-by: Filip Fila <filipfila.kde@gmail.com>

M  +2    -2    lookandfeel/components/Clock.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/110d4228135ee05d90713aa07942d6801f07f943