-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong cursor position #9940
Labels
Area-AtlasEngine
Area-Rendering
Text rendering, emoji, complex glyph & font-fallback issues
In-PR
This issue has a related PR
Issue-Bug
It either shouldn't be doing this or needs an investigation.
Priority-3
A description (P3)
Product-Terminal
The new Windows Terminal.
Milestone
Comments
ryokohbato
added
the
Issue-Feature
Complex enough to require an in depth planning process and actual budgeted, scheduled work.
label
Apr 24, 2021
ghost
added
Needs-Triage
It's a new issue that the core contributor team needs to triage at the next triage meeting
Needs-Tag-Fix
Doesn't match tag requirements
labels
Apr 24, 2021
Which font are you using exactly? |
zadjii-msft
added
Area-Fonts
Related to the font
Issue-Bug
It either shouldn't be doing this or needs an investigation.
Product-Terminal
The new Windows Terminal.
and removed
Issue-Feature
Complex enough to require an in depth planning process and actual budgeted, scheduled work.
labels
Apr 29, 2021
zadjii-msft
added
Priority-3
A description (P3)
and removed
Needs-Triage
It's a new issue that the core contributor team needs to triage at the next triage meeting
labels
Apr 29, 2021
zadjii-msft
added
the
Needs-Author-Feedback
The original author of the issue/PR needs to come back and respond to something
label
Apr 29, 2021
I'm using HackGen35 (NOT HackGen) |
ghost
added
Needs-Attention
The core contributors need to come back around and look at this ASAP.
and removed
Needs-Author-Feedback
The original author of the issue/PR needs to come back and respond to something
labels
Apr 30, 2021
lhecker
added
Area-Rendering
Text rendering, emoji, complex glyph & font-fallback issues
Area-AtlasEngine
and removed
Area-Fonts
Related to the font
labels
Jan 26, 2023
zadjii-msft
removed
the
Needs-Attention
The core contributors need to come back around and look at this ASAP.
label
Jan 26, 2023
microsoft-github-policy-service bot
pushed a commit
that referenced
this issue
Apr 26, 2023
This is practically a from scratch rewrite of AtlasEngine. The initial approach used a very classic monospace text renderer, where the viewport is subdivided into cells and each cell is assigned one glyph texture, just like how real terminals used to work. While we knew that it would have problems with overly large glyphs, like those found in less often used languages, we didn't expect the absolutely massive number of fonts that this approach would break. For one, the assumption that monospace fonts are actually mostly monospace has turned out to be a complete lie and we can't force users to use better designed fonts. But more importantly, we can't just design an entire Unicode fallback font collection from scratch where every major glyph is monospace either. This is especially problematic for vertical overhangs which are extremely difficult to handle in a way that outperforms the much simpler alternative approach: Just implementing a bog-standard, modern, quad-based text renderer. Such an approach is both, less code and runs faster due to a less complex CPU-side. The text shaping engine (in our case DirectWrite) has to resolve text into glyph indices anyways, so using them directly for text rendering allows reduces the effort of turning it back into text ranges and hashing those. It's memory overhead is also reduced, because we can now break up long ligatures into their individual glyphs. Especially on AMD APUs I found this approach to run much faster. A list of issues I think are either obsolete (and could be closed) or resolved with this PR in combination with #14255: Closes #6864 Closes #6974 Closes #8993 Closes #9940 Closes #10128 Closes #12537 Closes #13064 Closes #13527 Closes #13662 Closes #13700 Closes #13989 Closes #14022 Closes #14057 Closes #14094 Closes #14098 Closes #14117 Closes #14533 Closes #14877 ## PR Checklist * Enabling software rendering enables D2D mode ✅ * Both D2D and D3D: * Background appears correctly ✅✅ * Text appears correctly * Cascadia Code Regular ✅✅ * Cascadia Code Bold ✅✅ * Cascadia Code Italic ✅✅ * Cascadia Code block chars leave (almost) no gaps ✅✅ * Terminus TTF at 13.5pt leaves no gaps between block chars ✅✅ * ``"`u{e0b2}`u{e0b0}"`` in Fira Code Nerd Font forms a square ✅✅ * Cursor appears correctly * Legacy small/medium/large ✅✅ * Vertical bar ✅✅ * Underscore ✅✅ * Empty box ✅✅ * Full box ✅✅ * Double underscore ✅✅ * Changing the cursor color works ✅✅ * Selection appears correctly ✅✅ * Scrolling in various manners always renders correctly ✅✅ * Changing the text antialising mode works ✅✅ * Semi-transparent backgrounds work ✅✅ * Scroll-zooming the font size works ✅✅ * Double-size characters work ✅✅ * Resizing while text is printing works ✅✅ * DWM `+Heatmap_ShowDirtyRegions` shows that only the cursor region is dirty when it's blinking ✅✅ * D2D * Margins are filled with background color ❌ They're filled with the neighboring's cell background color for convenience, as D2D doesn't support `D3D11_TEXTURE_ADDRESS_BORDER` * D3D * Margins are filled with background color ✅ * Soft fonts work ✅ * Custom shaders enable continous redraw if time constant is used ✅ * Retro shader appears correctly ✅ * Resizing while a custom shader is running works ✅
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Area-AtlasEngine
Area-Rendering
Text rendering, emoji, complex glyph & font-fallback issues
In-PR
This issue has a related PR
Issue-Bug
It either shouldn't be doing this or needs an investigation.
Priority-3
A description (P3)
Product-Terminal
The new Windows Terminal.
Description of the new feature/enhancement
The cursor position is not rendered correctly when using a font whose font width of Japanese character is not half as that of Alphabet.
And This probably happen not in not only Japanese but also another language (eg. Chinese).
In this picture, Japanese font width : Alphabet font width is 5 : 3 (not 2 : 1)
Sorry if this issue has already been posted.
Proposed technical implementation details (optional)
The text was updated successfully, but these errors were encountered: