[PR #4438] [CLOSED] Adding primitive support for glyph clusters and n-to-m mapping. #25765

Open
opened 2026-01-31 09:11:39 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/microsoft/terminal/pull/4438
Author: @milizhang
Created: 2/2/2020
Status: Closed

Base: masterHead: glyphcluster


📝 Commits (2)

  • 7aeab71 Adding primitive support for glyph clusters and n-to-m mapping.
  • dd09ff2 Address lint and formatting errors.

📊 Changes

1 file changed (+39 additions, -11 deletions)

View changed files

📝 src/renderer/dx/CustomTextLayout.cpp (+39 -11)

📄 Description

Summary of the Pull Request

This changes now makes handles column width-based position correction and advance adjustment by glyph clusters instead of individual glyphs, and thus provide primitive support for n-to-m glyph-character cluster mapping, which is necessary to display some complex scripts in a readable manner.

References

This should provide a solution to issue #4375.

PR Checklist

  • Closes #xxx
  • CLA signed. If not, go over here and sign the CLA
  • Tests added/passed
  • Requires documentation to be updated
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Detailed Description of the Pull Request / Additional comments

Due to the restriction of the column grid system, this change cannot yield a perfectly layouted result, as it could add additional spacing between glyph clusters and therefore might break writing system features such as Shirorekha (Top Line) in Devanagari.

Just like #4081, I personally consider this to be a stop gap solution before we have the opportunity to design and implement a better alignment and buffer system in the future.

Validation Steps Performed

Manually tested against the test file in #4375.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/microsoft/terminal/pull/4438 **Author:** [@milizhang](https://github.com/milizhang) **Created:** 2/2/2020 **Status:** ❌ Closed **Base:** `master` ← **Head:** `glyphcluster` --- ### 📝 Commits (2) - [`7aeab71`](https://github.com/microsoft/terminal/commit/7aeab712a2e7c0b5bb3aa930d388f69d26cd5d6c) Adding primitive support for glyph clusters and n-to-m mapping. - [`dd09ff2`](https://github.com/microsoft/terminal/commit/dd09ff21fb9970579e6f745170f55cf5332d5491) Address lint and formatting errors. ### 📊 Changes **1 file changed** (+39 additions, -11 deletions) <details> <summary>View changed files</summary> 📝 `src/renderer/dx/CustomTextLayout.cpp` (+39 -11) </details> ### 📄 Description <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request This changes now makes handles column width-based position correction and advance adjustment by glyph clusters instead of individual glyphs, and thus provide primitive support for n-to-m glyph-character cluster mapping, which is necessary to display some complex scripts in a readable manner. <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References This should provide a solution to issue #4375. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [ ] Closes #xxx * [X] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Requires documentation to be updated * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments Due to the restriction of the column grid system, this change cannot yield a perfectly layouted result, as it could add additional spacing between glyph clusters and therefore might break writing system features such as Shirorekha (Top Line) in Devanagari. Just like #4081, I personally consider this to be a stop gap solution before we have the opportunity to design and implement a better alignment and buffer system in the future. <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Manually tested against the [test file](https://github.com/microsoft/terminal/files/4121097/utf82.txt) in #4375. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-31 09:11:39 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#25765