Text mismeasured at certain Windows DPI levels
Chris Nahr
chris.nahr at gmail.com
Tue Mar 13 08:23:20 UTC 2018
OK, I filed a bug report with internal review ID 9052971. Interestingly,
merely calling sizeToScene explicitly (which shouldn't be necessary
though) fixes the bug at 125% and 150% but not at 175%. I added that
info to the report and the test program.
Thanks, Chris
On 2018-03-12 16:02, Kevin Rushforth wrote:
> Since you have a simple test program that reproduces this bug, can you
> please file a bug report?
>
> http://bugreport.java.com/
>
> Thanks.
>
> -- Kevin
>
> Chris Nahr wrote:
>> After some more experimentation I added some details and a screenshot
>> (from another test program) to this blog post:
>> http://news.kynosarges.org/2018/03/11/windows-gui-dpi-scaling-in-2018/
>>
>> That's about a small test suite for DPI scaling, and it's where I
>> first saw this bug. Like the repro program below these test programs
>> are quite simple. The bug does not seem to occur in more complex
>> real-world programs, but it's reproducible when it does occur and also
>> affects labeled controls other than checkboxes (saw it in buttons).
>>
>> As I wrote in the blog post: My present guess is that on DPI scales
>> that are not multiples of 100%, there is a small discrepancy in the
>> initial measurement between a label's required width and the width
>> provided by its container. In complex windows this gets eventually
>> fixed by subsequent layout passes, but in simple windows the error
>> persists and manifests as an ellipsis.
>>
>> -- Christoph Nahr
>>
>>
>> On 2018-03-09 10:58, Chris Nahr wrote:
>>> I've found a pretty serious issue with CheckBox labels on Windows DPI
>>> levels other than 100% or 200%. Apparently the label mismeasures
>>> itself during layout, so its text is cut off with an ellipsis.
>>>
>>> I've attached a simple program to reproduce this. Running with
>>> -Dglass.win.uiScale=100%, 125%, 150%, 175%, 200% cuts off all
>>> CheckBox labels on any DPI scale between 100% and 200%. My
>>> environment is Java SE 9.0.4 on Windows 10 Creators Update.
>>>
>>> The only workaround I found was to set an explicit minimum width for
>>> the CheckBox. In that case the incorrect self-measurement of the
>>> label text is ignored and the full text displayed.
>>>
>>> Best regards,
>>> Christoph Nahr
>>>
>>>
>>> ----- Test Program -----
>>>
>>> import javafx.application.*;
>>> import javafx.scene.*;
>>> import javafx.scene.control.*;
>>> import javafx.scene.layout.*;
>>> import javafx.stage.*;
>>>
>>> public class CheckBoxLabel extends Application {
>>>
>>> public static void main(String[] args) {
>>> Application.launch(args);
>>> }
>>>
>>> @Override
>>> public void start(Stage stage) {
>>> final HBox box = new HBox();
>>> for (int i = 0; i < 4; i++)
>>> box.getChildren().add(new CheckBox("Check"));
>>>
>>> stage.setScene(new Scene(box));
>>> stage.show();
>>> }
>>> }
>>>
>
More information about the openjfx-dev
mailing list