Description :
When rendering Chinese text in a WinForms application by using Graphics.DrawString with StringFormatFlags.DirectionVertical, and then applying a rotation transform, the text is displayed in an unexpected orientation and reading order.
The expected behavior is that the text remains logically ordered and readable as a vertically oriented string, while the entire text block is rotated as a single unit. Instead, individual CJK glyphs appear rotated and/or repositioned in a way that changes the intended visual representation and may affect the meaning.
This appears to be related to the underlying text rendering behavior in System.Drawing / GDI+, rather than to any specific WinForms control.
The issue occurs in both .NET Framework and .NET Core / .NET.
Screenshots :
Observed output :
Expected Output :
Alphabet Output :
SimpleSample :
TextSample.zip
Steps to Reproduce :
Step 1 : Run the attached sample application.
Step 2 : Click the Rotate button.
Step 3 : Observe how the Chinese text is rendered after rotation.
Actual Behavior :
- Chinese characters are displayed with an unexpected orientation.
- The text flow changes after rotation.
- The rendered result is not readable as intended.
Expected Behavior :
- The text should remain readable after rotation.
- The entire text block should rotate as a single unit.
- Chinese characters should retain their proper orientation and logical reading order.
Questions :
- Is this a known limitation of GDI+ or System.Drawing when rendering vertical CJK text?
- Is this the expected behavior of Graphics.DrawString in this scenario?
- Are there any recommended alternatives for correctly rendering vertical Chinese text?
Environment :
Framework: .NET Framework / .NET
OS: Windows 11
Description :
When rendering Chinese text in a WinForms application by using Graphics.DrawString with StringFormatFlags.DirectionVertical, and then applying a rotation transform, the text is displayed in an unexpected orientation and reading order.
The expected behavior is that the text remains logically ordered and readable as a vertically oriented string, while the entire text block is rotated as a single unit. Instead, individual CJK glyphs appear rotated and/or repositioned in a way that changes the intended visual representation and may affect the meaning.
This appears to be related to the underlying text rendering behavior in System.Drawing / GDI+, rather than to any specific WinForms control.
The issue occurs in both .NET Framework and .NET Core / .NET.
Screenshots :
Observed output :
Expected Output :
Alphabet Output :
SimpleSample :
TextSample.zip
Steps to Reproduce :
Step 1 : Run the attached sample application.
Step 2 : Click the Rotate button.
Step 3 : Observe how the Chinese text is rendered after rotation.
Actual Behavior :
Expected Behavior :
Questions :
Environment :
Framework: .NET Framework / .NET
OS: Windows 11