[BUG] Thai combining characters (tone marks/vowels) misaligned in terminal output
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Thai text with combining characters (tone marks like ่ ้ ๊ ๋ and vowels like ิ ี ึ ื ั) displays incorrectly in the terminal. The combining characters appear shifted/misaligned from their base consonants.
Example:
- Expected:
วรรณยุกต์ ภาษาไทย เพี้ยน - Actual:
วรรยุ ค ภาษาไทย เพี้ ยน(tone marks and vowels shifted)
This affects user input display in the prompt area. The issue appears after every update and persists across terminal emulators.
Related issues: #14686 (Korean), #2780 (Chinese) - similar Unicode rendering problems.
What Should Happen?
Thai combining characters (tone marks and vowels) should appear correctly aligned with their base consonants in the terminal prompt input area and output.
Error Messages/Logs
No error messages - this is a visual rendering issue only.
Screenshot attached showing the misaligned characters.
Steps to Reproduce
- Run
claudein terminal - Type any Thai text with tone marks, e.g.:
สวัสดี วรรณยุกต์ เพี้ยน - Observe that tone marks (่ ้ ๊ ๋) and vowels (ิ ี ั) appear shifted from their base characters
- The misalignment is visible in both the input prompt and AI response output
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.6 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
This issue affects all Southeast Asian languages with combining characters (Thai, Lao, Myanmar, Khmer).
The bug reappears after every Claude Code update, suggesting the fix from #14686 (Korean) may not cover all combining character scenarios.
Possible root cause: Terminal width calculation for Unicode combining characters in the ink/ink2 renderer.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗