Skip to content

[ENH]: Cairo backends do not fully support HiDPI #21024

Closed

Description

@QuLogic

Problem

When running examples/misc/pythonic_matplotlib.py on a display set to 150% scaling, QtAgg looks like this:
Screenshot from 2021-09-08 19-37-51
But when running QtCairo, it looks like this:
Screenshot from 2021-09-08 19-38-00
The same thing occurs with the GTK*Cairo renderers in #20988.

Layout is done outside the renderer, so everything is in the right place. However, Cairo only knows about the physical DPI, and renders text and lines with it. Thus they are all the correct size at 200 DPI, but since that is scaled in half to 100 DPI, they all appear smaller than they should be.

Proposed solution

Somehow Agg backends handle this correctly, so we should copy whatever we do there to the Cairo backends.

Additional context and prior art

No response

Activity

  1. QuLogic commented on Sep 9, 2021

    @QuLogic
    MemberAuthor

    Thus they are all the correct size at 200 DPI, but since that is scaled in half to 100 DPI, they all appear smaller than they should be.

    Ah, I actually have this backwards. They are rendered at 100 DPI on a canvas that is actually 200 DPI. This is because Cairo renderers are created with the canvas and stay around for all time with the initial DPI, whereas the Agg renderers are created on draw (modulo some caching) and thus always have the correct DPI.

  2. QuLogic commented on Sep 9, 2021

    @QuLogic
    MemberAuthor

    Additionally, if you save the figure from the GUI, it outputs something that's about half the width and half the height that it should be.

  3. added this to the v3.5.0 milestone on Sep 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions