This repository was archived by the owner on Mar 7, 2025. It is now read-only.
Vertical text alignment and positioning fix#670
Open
PreferLinux wants to merge 4 commits intomono:mainfrom
Open
Vertical text alignment and positioning fix#670PreferLinux wants to merge 4 commits intomono:mainfrom
PreferLinux wants to merge 4 commits intomono:mainfrom
Conversation
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.
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... |
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_DrawStringapplied, 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 -unsafeFurthermore, as
gdip_pango_setup_layouttransforms 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.