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