As mentioned already in the original ebuild request (https://bugs.gentoo.org/show_bug.cgi?id=371723#c5) KeePass is unusable because of empty/reduced/otherwise deformed strings in the UI. I’m getting similar results as the original poster:
Please paste the output of emerge --info dev-lang/mono.
Created attachment 321946 [details]
emerge --info dev-lang/mono
Do you have dev-dotnet/libgdiplus merged? If so, which version and with which USE flags?
2.10.9 with “cairo” flag.
I had the same problem, but I don't remember how I fixed it, sadly.
Are you using an Intel driver for X.org? Which version? Can you try to update it?
Can you try to enable ForceSystemFontUnix in the configuration file as described here?
(In reply to comment #5)
> Are you using an Intel driver for X.org? Which version? Can you try to
> update it?
I’m using “=x11-drivers/xf86-video-intel-2.20.6” which I believe is the newest available version.
> Can you try to enable ForceSystemFontUnix in the configuration file as
> described here?
This didn’t help. In fact after starting KeePass the config file got changed and the added line was removed.
(In reply to comment #5)
> Are you using an Intel driver for X.org?
Interesting, there seems to be have been a lot of activity regarding the intel driver and cairo/mono:
@Alessandro: were you also using the intel driver when you were experiencing the problem?
Yes, but I don't really remember how I fixed that. However it was something easy, like updating the driver or recompiling dev-dotnet/libgdiplus with the cairo option.
(In reply to comment #9)
I’ve tried recompiling dev-dotnet/libgdiplus with and without the cairo option and updating intel driver to the latest version but it didn’t fix the problem.
Does it happen if you download the ZIP archive from the official website, unpacke it and `mono KeePass.exe`? It shouldn't make any difference, but it's worth trying.
It looks exactly the same as the version installed through portage.
This seems to be some sort of mono/cairo/intel combination bug, so CCing those teams in case they have some ideas.
Which version of cairo? If >=1.12, it may be due to https://bugs.freedesktop.org/show_bug.cgi?id=47266
(In reply to comment #14)
> Which version of cairo? If >=1.12, it may be due to
Which version of cairo do you have?
There have been quite a number of new intel driver releases, does a more recent version work for you?
I'm seeing something very similar to attachment 304295 [details], too. And if I press ESC, I get similar narrow printing for the menus. Here is my setup:
dev-lang/mono-126.96.36.199-r1[nls -doc -minimal -pax_kernel -xen]
x11-libs/cairo-1.14.6[X glib opengl svg xcb -aqua -debug -directfb -gles2 -static-libs -valgrind -xlib-xcb]
x11-drivers/nvidia-drivers-358.16-r1[X acpi gtk2 gtk3 kms multilib tools uvm -pax_kernel]
I do know that on Aug 27 2015, keepass-2.30 used to work for me with the modification described in bug 558094 comment 14. That would have been using mono-188.8.131.52 and libgdiplus-3.12.
(In reply to Martin von Gagern from comment #16)
> I do know that on Aug 27 2015, keepass-2.30 used to work for me with the
> modification described in bug 558094 comment 14. That would have been using
> mono-184.108.40.206 and libgdiplus-3.12.
I can now reproduce the problem, the culprit seems to be libgdiplus-4.2. Current workaround: downgrade to libgdiplus-3.12.
Will try to better investigate the problem.
This is pretty weird, the only changes from 3.12 to 4.2 are related to giflib:
I think I got it. That behavior is triggered when you use pango! The point is that the libgdiplus ebuild from 3.12 to 4.2 introduced the following change:
- $(usex cairo "" "--with-pango")
+ $(use_with cairo pango)
However, this flips the meaning of the cairo USE flag, which is supposed to enable cairo (if enabled) or pango (otherwise). But $(use_with cairo pango) does exactly the opposite!
Long story short, don't use pango, so try disabling the cairo USE flag or applying the attached patch to the ebuild.
I've tested it and it works fine.
Created attachment 424026 [details, diff]
`--with-cairo` is an undocumented option in ./configure apparently. So this will raise a QA warning. On the other hand, `$(use_with !cairo pango)` won't work, since `--without-pango` is ignored by `./configure`. The other option would be to remove to go back to `$(usex cairo "" "--with-pango")` which worked fine.
Someone pushed the fix already apparently: