> On Nov. 2, 2015, 1:05 p.m., Sebastian Kügler wrote:
> > I don't like this change, as it introduces a magic constant for a value 
> > that we completely control our own. (Well, to the degree that we say "a 
> > gridUnit is roughly the height of a line of text". The 1.6 constant looks 
> > weird here, and I'm against adding font specific hacks in, especially since 
> > at that point in the code, we don't even know what the font is.
> > 
> > This is not a structural solution, so -1.
> 
> David Rosca wrote:
>     I understand, but what is a structural solution?
>     The font metric is clearly wrong for Noto, Oxygen (and certainly some 
> other fonts) and this change is backwards compatible with current code.
>     
>     And this is not a font specific hack, this just scales the actual height 
> of M to the expected gridUnit value because gridUnit never was a height of M 
> character (it is like 1.6 * height of M = thus the magic number).
> 
> Sebastian Kügler wrote:
>     Well, problems arise as soon as you change the font -- the computation is 
> not based on the default font, but on the currently selected font. The funny 
> thing here is that the Oxygen font is actually the wrong one, as that 
> includes more height than the rendered character, but also some spacing above.
>     
>     What is the exact issue you see? I'm still not quite clear on that.
>     
>     The bug you're referring to should be fixed by not computing the font 
> manually, but use units.iconSizes.* instead. (I haven't tried, but that's the 
> semantically correct solution.)
> 
> David Rosca wrote:
>     > Well, problems arise as soon as you change the font
>     
>     In the current implementation, yes. Because 
> QFontMetrics::boundingRect(QString = "M").height() returns more than just 
> height of M character, and this extra size is different for various fonts - 
> it will return different value for 2 fonts even when the font size (eg. 
> actual height of M character) is the same in both.
>     
>     > The funny thing here is that the Oxygen font is actually the wrong one, 
> as that includes more height than the rendered character, but also some 
> spacing above.
>     
>     Yes, but that spacing is there for every font, but different and that's 
> exactly the whole problem. For DejaVu Sans font it returns value that plays 
> well with what we use as gridUnit (roughly M height * 1.6), but for Noto and 
> Oxygen it returns just too much (~ * 2). Only 
> QFontMetrics::boundingRect(QChar = 'M').height() returns the actual M height 
> without any spacing.
>     
>     > What is the exact issue you see? I'm still not quite clear on that.
>     
>     My issue is that units.gridUnit and theme.mSize is too big and that leads 
> to too big spacing relative to font size. You can see it on screenshots, it 
> shows the minimum size of system tray popup (it is calculated as x multiple 
> of units.gridUnit). You can see on the first screenshot that it is just too 
> big, and the same story is for every other plasma widget.
>     
>     Maybe I should have posted the whole screen, not just a snip. It looks 
> much worse when you see the whole screen and can compare the size to the rest 
> of screen (1920x1080).
>     
>     > The bug you're referring to should be fixed by not computing the font 
> manually, but use units.iconSizes.* instead.
>     
>     Yes, that would fix the linked bug - size of systemtray icons. But it 
> won't fix the general issue mentioned above.
> 
> Marco Martin wrote:
>     also -1.
>     the sizing of systray icons should depend in a range between iconsizes, 
> so from iconSizes.small to smallMedium (or medium, or whetever).
>     for the grid unit, adding that ratio to the m height, i get that you are 
> trying to have pretty much the height of a line of text? could 
> QFontMetrics::lineSpacing() work?

>From me it's a +1, the patch is technically correct. The icons sizes are just 
>a byproduct of this patch, this is about the difference that

boundingRect("M") and
boundingRect('M') make.

Using the QString overload is wrong because it is not just the M height, but 
also the spacing above and that spacing is random, making things scale randomly 
with different fonts. Using the ::lineSpacing wouldn't really make much 
difference I think because it would still need some kind of multiplier to get 
back to the original value that boundingRect("M") returns up till now, 
otherwise Plasma will get really tiny for users with Oxygen font. Using 
boundingRect('M'), the QL1Char overload, it counds *only* the M size, no other 
spacing included. This would result in much much more consistent scaling with 
different fonts. Curretnly the difference can be quite big.

So, +1, this patch is correct from my point of view.


- Martin


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/125773/#review87864
-----------------------------------------------------------


On Oct. 29, 2015, 7:16 p.m., David Rosca wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/125773/
> -----------------------------------------------------------
> 
> (Updated Oct. 29, 2015, 7:16 p.m.)
> 
> 
> Review request for Plasma.
> 
> 
> Bugs: 343349
>     http://bugs.kde.org/show_bug.cgi?id=343349
> 
> 
> Repository: plasma-framework
> 
> 
> Description
> -------
> 
> For some fonts, QFontMetrics::boundingRect(QString) returns too high rect 
> which makes the gridSize too big.
> It now returns correctly the actual height of M character. For backwards 
> compatibility, the value is multiplied with 1.6.
> 
> This affects eg. Noto Sans font that is now default for Plasma 5.5.
> 
> 
> Diffs
> -----
> 
>   src/declarativeimports/core/units.h fa2256e 
>   src/declarativeimports/core/units.cpp 4e2adae 
>   src/plasma/theme.cpp c49ad4c 
> 
> Diff: https://git.reviewboard.kde.org/r/125773/diff/
> 
> 
> Testing
> -------
> 
> When switching to Noto Sans font, I noticed that icons in system tray grow to 
> big size so it switched to 1 column in vertical panel. Basically everything 
> in Plasma grow too much (even though the font is visually the same or even 
> smaller than DejaVu Sans that I was using before - same font size 9 was used) 
> - too big spacing in task manager, too big popups (application menu, system 
> tray popups), etc ...
> 
> This fixes the issue. This may also fix BUG 343349
> 
> 
> File Attachments
> ----------------
> 
> systray + popup before
>   
> https://git.reviewboard.kde.org/media/uploaded/files/2015/10/29/d409b391-e35e-451f-bb5b-aa42e7eb2bf3__before.png
> after
>   
> https://git.reviewboard.kde.org/media/uploaded/files/2015/10/29/445009bc-a4a8-4998-8e82-996a0a4e33fb__after.png
> 
> 
> Thanks,
> 
> David Rosca
> 
>

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to