Open PreferLinux opened 3 years ago
Nice, a test failure in CI that I don't get on my machine. Will have to add some debugging to that test, and then revert it...
Actually, didn't need to. It is simply that the Linux testing uses Cairo text rendering (due to an old Pango version), and that can't handle the tests I added. Those tests have now been made conditional.
Before fix: The vertical text is being drawn off-screen. Note the boxes (from measuring the string) for vertical left-to-right are correct, hence no test failures.
GdipAddPathString()
has much the same issue, so I've added a test there that has vertical text to detect the incorrect drawing location (fails without fix). I've also added tests for alignment when drawing at a point instead of in a box, and drawing with both vertical and right-to-left (which fail without the fix).Here's a screenshot with only the changes to
pango_DrawString
applied, fixing the drawing location: On vertical text the alignment is opposite what it should be, and on right-to-left it is also significantly offset horizontally. Hence there are also changes dealing with alignment.With all changes: .Net / Windows 8.1 as a comparison:
Test application: text-align.txt Compiles with
mcs -r:System.Windows.Forms,System.Drawing text-align.txt -unsafe
Furthermore, as
gdip_pango_setup_layout
transforms the Cairo context on vertical text,GdipAddPathString()
wasn't getting the correct path points. I've changed it to save and later restore the context to fix this.