Text mismeasured at certain Windows DPI levels
Kevin Rushforth
kevin.rushforth at oracle.com
Tue Mar 13 12:54:53 UTC 2018
Thanks. We'll take a look. It's possible this is related to other bugs
with initial sizing that were introduced with HiDPI spuport (although
that wouldn't explain the continued failure at 175%).
-- Kevin
Chris Nahr wrote:
> 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