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-02-22 12:05 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.1
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