<Swing Dev> [9] Review request for 8058742: Text size is twice bigger under GTK L&F on Gnome with HiDPI enabled

Semyon Sadetsky semyon.sadetsky at oracle.com
Mon Jul 25 09:18:36 UTC 2016



On 7/25/2016 11:02 AM, Alexandr Scherbatiy wrote:
> On 7/22/2016 10:27 PM, Semyon Sadetsky wrote:
>>
>>
>> On 7/22/2016 8:54 PM, Alexandr Scherbatiy wrote:
>>> On 7/21/2016 7:04 PM, Semyon Sadetsky wrote:
>>>>
>>>>
>>>> On 21.07.2016 18:33, Alexandr Scherbatiy wrote:
>>>>> On 7/21/2016 1:40 PM, Semyon Sadetsky wrote:
>>>>>> On 7/21/2016 1:24 PM, Sergey Bylokhov wrote:
>>>>>>
>>>>>>> On 21.07.16 13:18, Semyon Sadetsky wrote:
>>>>>>>> We do not support non-integer scale on Linux.
>>>>>>>
>>>>>>> If it is unsupported then why it is validated in the pango fonts 
>>>>>>> and not in X11GraphicsDevice? I am not sure how scale less than 
>>>>>>> 1 prevent us from usage of 1.5 for example.
>>>>>> getNativeScale() returns int. int cannot be 1.5.
>>>>>
>>>>>   The fix JDK-8149115 "[hidpi] Linux: display-wise scaling factor 
>>>>> should probably be taken into account" allows to read the UI scale 
>>>>> factor from some system properties like J2D_UISCALE and 
>>>>> com.ubuntu.user-interface scale-factor. Could they have floating 
>>>>> point values?
>>>> On the native side they are floating point. But since we do not 
>>>> support floating point scale on linux they are rounded to integer.
>>>>>   How do they relate to the "gnome.Xft/DPI" property from the 
>>>>> PangoFonts? Is it possible that the  "gnome.Xft/DPI" value is 192 
>>>>> which corresponds to 2x HiDPI display and the J2D_UISCALE is set 
>>>>> to 3?
>>>> gnome.Xft/DPI is set by desktop env. Usually it corresponds the 
>>>> system scale from gsettings db. But I cannot guarantee this for any 
>>>> WM/desktop combinations.
>>>> J2D_UISCALE variable is only for java, it may be set to any value 
>>>> and it is unrelated to the native scale.
>>>
>>>    May be it is better to include the "gnome.Xft/DPI" scale to the 
>>> X11GraphicsDevice.getNativeScaleFactor(screen) method. Right now 
>>> only GTK L&F uses it but may be others L&F also should be scaled 
>>> according to this value.
>> From [1]: If you are not using a desktop environment such as GNOME, 
>> KDE, Xfce, or other that manipulates the X settings for you, you can 
>> set the desired DPI setting manually via the Xft.dpi variable in 
>> ~/.Xresources.
>> JDK9 supported DEs manage scale in own settings and Xft/DPI is 
>> calculated from those settings. Also Xft/DPI is only for fonts, not 
>> for interface elements.
>> That may be not easy to get this property per individual monitor. 
>> Also it is an relative DPI value and the real scale need to be 
>> restored somehow.
>>
>> [1]  https://wiki.archlinux.org/index.php/HiDPI
>    There is one thing which is not clear for me. Where is the place 
> that GTK font size is multiplied on the 
> X11GraphicsDevice.getNativeScaleFactor(screen) the second time?
One time is in the PangoFont ( dsize = ((double)(dpi * size)/ 72.0);), 
the second time in the graphics transformation if it uses the native scale.

--Semyon
>    The one place is the Graphics which gets additional scale factor 
> from a GraphicsConfiguration. What is another place where the font is 
> scaled using the native scale factor?
>
>   Thanks,
>   Alexandr.
>>
>> --Semyon
>>>
>>>   Thanks,
>>>   Alexandr.
>>>
>>>>
>>>> --Semyon
>>>>>
>>>>>   Thanks,
>>>>>   Alexandr.
>>>>>
>>>>>>>
>>>>>>>> On 21.07.2016 13:13, Sergey Bylokhov wrote:
>>>>>>>>> Is it intended to skip scales less than 1?
>>>>>>>>>
>>>>>>>>> On 07.07.16 10:01, Alexandr Scherbatiy wrote:
>>>>>>>>>>
>>>>>>>>>> The fix looks good to me.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Alexandr.
>>>>>>>>>>
>>>>>>>>>> On 7/6/2016 10:03 PM, Semyon Sadetsky wrote:
>>>>>>>>>>> On 7/6/2016 6:03 PM, Alexandr Scherbatiy wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On 7/6/2016 4:13 PM, Semyon Sadetsky wrote:
>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please review fix for JDK9:
>>>>>>>>>>>>>
>>>>>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8058742
>>>>>>>>>>>>>
>>>>>>>>>>>>> webrev: 
>>>>>>>>>>>>> http://cr.openjdk.java.net/~ssadetsky/8058742/webrev.00/
>>>>>>>>>>>>
>>>>>>>>>>>>    - PangoFonts class is placed in the shared space and it 
>>>>>>>>>>>> uses the
>>>>>>>>>>>> X11GraphicsDevice from the unix space. Could there be 
>>>>>>>>>>>> problems with
>>>>>>>>>>>> build compilation on platforms differ from Unix?
>>>>>>>>>>> no it doesn't cause compilations problems. PangoFonts is 
>>>>>>>>>>> used on Linux
>>>>>>>>>>> platform only.
>>>>>>>>>>>>   - It is better to rename the scale field to nativeScale 
>>>>>>>>>>>> just to not
>>>>>>>>>>>> mix it with other scale types
>>>>>>>>>>> ok.  webrev is updated:
>>>>>>>>>>> http://cr.openjdk.java.net/~ssadetsky/8058742/webrev.01/
>>>>>>>>>>>>   - Does the test
>>>>>>>>>>>> test/java/awt/font/FontScaling/FontScalingTest.java fails 
>>>>>>>>>>>> without
>>>>>>>>>>>> the proposed fix on Linux?
>>>>>>>>>>> Yes it fails before and passes after the fix.
>>>>>>>>>>>
>>>>>>>>>>> --Semyon
>>>>>>>>>>>>
>>>>>>>>>>>>   Thanks,
>>>>>>>>>>>>   Alexandr.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> After adding hdpi support to JDK the GTK LnF fonts are 
>>>>>>>>>>>>> scaled twice
>>>>>>>>>>>>> using the JDK UI scale factor and the native scale factor 
>>>>>>>>>>>>> derived
>>>>>>>>>>>>> from the screen dpi setting.  The fix removes the native 
>>>>>>>>>>>>> scale if it
>>>>>>>>>>>>> is already taken into account in the JDK UI scale.
>>>>>>>>>>>>>
>>>>>>>>>>>>> --Semyon
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list