Hi folks!

Here's a very interesting problem with text Labels that is costing me a lot of tears. When the screen resizes to certain resolutions (including windowed fullscreen), my Labels start looking like this:

when they normally look like this:

In the jaggy state, the characters jitter around on camera movement. Curiously, they look completely normal as long as the camera moves up.

Attempted remedies Turning on font filter Changing font size Font mipmaps Changing scaling mode to 2d or viewport

The next best thing to solving it might be to turn on font antialiasing; the blur makes the jitter and cut-off less visible:

This is a known issue caused by DynamicFont oversampling. Disable Rendering > Quality > Dynamic Fonts > Use Oversampling in the Project Settings. This will make fonts pixelated/blurry at higher resolutions, but it will avoid issues with incorrect glyph offsets.

Thank you for answering!

Although the issue sounds the same as #47957 on Github, disabling oversampling didn't do anything. (I also tried setting the strech aspect to expand and changing the font as you recommended there.)

If it's in some way helpful, setting the window to fullscreen programmatically does solve it. (So this is different from what the Github user reported) Maximizing in windowed mode however, as mentioned, doesn't.

If it's in some way helpful, setting the window to fullscreen programmatically does solve it. (So this is different from what the Github user reported) Maximizing in windowed mode however, as mentioned, doesn't.

This could be due to the scale factor being slightly different, but off enough to make this kind of issue visible.

What's the project's base resolution, what's the window size when you make the window fullscreen (print(OS.window_size))? Also, what's the window size when the window is maximized but not fullscreen?

Great idea!!

The results are quite conclusive. The text breaks every time one of the coordinates of the window size is uneven: This is maximized window: (1920, 1017) This is true fullscreen: (1920, 1080)

With that I could arrive a better solution. For posterity - On every resize you can call a function like this:

func on_resize():
     var window_size = OS.get_window_size()
     if int(window_size.x) % 2 == 1:
        window_size.x += 1
    if  int(window_size.y) % 2 == 1:
        window_size.y -= 1
    if window_size != OS.get_window_size():
        OS.set_window_size(window_size)

This still doesn't solve the maximized window case though. For some reason Windows 10 doesn't execute resizing events smaller than 17 pixels out of maximized window mode. To be precise, OS.get_window_size() gets back the resolution we wanted, but on the actual screen things only change starting at 17 pixels difference. Further input is appreciated, I think we can almost call this solved.

a year later