Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vertical text alignment and positioning fix #670

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

PreferLinux
Copy link
Contributor

Before fix:
Screenshot_20200908_152640
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:
Screenshot_20200908_154720
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:
Screenshot_20200908_152509
.Net / Windows 8.1 as a comparison:
screenshot-Windows-text-alignment

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.

PreferLinux and others added 3 commits September 8, 2020 15:14
Add basic MeasureString alignment tests for combining Vertical and RightToLeft.

Also run the alignment tests with a zero-size rectangle to check correct
alignment in that situation.

Add GraphicsPath test for Vertical strings.
In pango_DrawString, the StringFormat can be null. I didn't handle that correctly.
@PreferLinux
Copy link
Contributor Author

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...

@PreferLinux
Copy link
Contributor Author

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.

Base automatically changed from master to main March 12, 2021 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant