Skip to content

Chinese vertical text renders incorrectly after rotation with Graphics.DrawString in WinForms #14698

Description

@vimalrajsf5014

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 :

Image

Expected Output :

Image

Alphabet Output :

Image

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

Metadata

Metadata

Assignees

Labels

waiting-author-feedbackThe team requires more information from the author

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions