DevHeads.net

How is the Font DPI Scale stored?

I am a developer for the McCLIM <https://github.com/McCLIM/McCLIM> graphics
toolkit, and I would like it to be able to integrate better with KDE.

Currently, McCLIm has a hardcoded font scale which is problematic when on a
high DPI screen. It's possible for a user to customise it but recomputing
the default fonts, but that's not ideal.

What I'd like to do is to read the KDE "Force Fonts DPI" setting, and use
it to automatically compute the new font sizes. However, it's unclear to me
how this value is propagated to applications. There must be a standard for
this, since a lot of applications is able to pick it up, but I haven't been
able to figure it out.

What is the proper way to read this value?

Regards,
Elias

Comments

Re: How is the Font DPI Scale stored?

By Christoph Feck at 06/12/2019 - 05:27

On 06/12/19 08:01, Elias Mårtenson wrote:
<a href="https://wiki.archlinux.org/index.php/Font_configuration" title="https://wiki.archlinux.org/index.php/Font_configuration">https://wiki.archlinux.org/index.php/Font_configuration</a> says:

$ xrdb -query | grep dpi
Xft.dpi: 144

You can read XResources via libxcb calls, code in Qt is here:
<a href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/xcb/qxcbscreen.cpp#n357" title="https://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/xcb/qxcbscreen.cpp#n357">https://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/xcb/qxc...</a>

Note that this value is deprecated, because it isn't per-screen.

Re: How is the Font DPI Scale stored?

By =?UTF-8?Q?Elias... at 06/12/2019 - 11:53

Thank you. That works beautifully. I do wonder, however, if it's
deprecated, what is meant to replace it?

Regards,
Elias

Re: How is the Font DPI Scale stored?

By Thiago Macieira at 06/16/2019 - 12:13

On Wednesday, 12 June 2019 08:53:50 PDT Elias Mårtenson wrote:
Properly? Wayland.

Re: How is the Font DPI Scale stored?

By Nate Graham at 06/13/2019 - 00:07

On 6/12/19 9:53 AM, Elias Mårtenson wrote:
Qt Scaling in the KScreen KCM (System Settings > Display & Monitor >
Displays > Scale Display)

Nate

Re: How is the Font DPI Scale stored?

By Boudewijn Rempt at 06/12/2019 - 05:00

On woensdag 12 juni 2019 08:01:19 CEST Elias Mårtenson wrote:
The proper way to support HiDPI is not by messing with font sizes. You set the hidpi flag:

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

Before you create your QApplication instance, and you make sure pixmaps are available in normal 2x sizes. HiDPI support in Qt isn't that great, though, fractional scaling doesn't work and there are moments when Qt gets really confused and thinks it needs to scale up when it shouldn't.

See <a href="https://doc.qt.io/qt-5/highdpi.html" title="https://doc.qt.io/qt-5/highdpi.html">https://doc.qt.io/qt-5/highdpi.html</a>