Characters clipped at left edge of terminal and not invalidated beyond right edge
#10.797 aberto em 26 de jul. de 2021
Métricas do repositório
- Stars
- (35.764 stars)
- Métricas de merge de PR
- (Mesclagem média 27d 19h) (24 fundiu PRs em 30d)
Description
Windows Terminal version (or Windows build number)
1.9.1942.0
Other Software
No response
Steps to reproduce
- Occurs only when
"useAcrylic": false,and"experimental.rendering.forceFullRepaint": false, - Affects antialiased (more noticeable with
cleartypethangrayscale) and italicized text--seems like it affects all text that is drawn wider than its bounding box - In Cascadia Code and Consolas, some wide characters often affected are
%,@, and_.
In a command line or editor, or using a script:
- in the leftmost column of the terminal, type a character that extends beyond the left edge of its bounding box; or,
- in the rightmost column, repeatedly type and delete a character that extends past the right edge of its bounding box
PowerShell that repeatedly writes to the rightmost column:
Write-Host ("%`b " * 200000)
Script that does the same with all ASCII printable characters and erases the characters to show the artefacts more clearly:
# PowerShell needs to clear twice to remove artefacts
Clear-Host; Start-Sleep 0.1; Clear-Host
foreach ($i in 33..126) {
[char]$c = $i
[Console]::SetCursorPosition([Console]::WindowWidth - 1, ($i - 33) % [Console]::WindowHeight);
Write-Host -NoNewline ("$c`b " * 200000) "`b$c "
if (($i - 32) % [Console]::WindowHeight -eq 0) {
Start-Sleep 1
Clear-Host
}
}
Expected Behavior
Text is rendered without artefacts.
Actual Behavior
Text is clipped at the left edge of the leftmost column. Text drawn past the right edge of the rightmost column is not erased when text is redrawn, causing pixels to accumulate over time.
After writing the same character to the same position many times in Cascadia Code Edit: Consolas!:

Cropped and nearest-neighbour upscaled 400%:
| leftmost column | rightmost column | erased leaving artefacts | |
|---|---|---|---|
| aliased | ![]() |
![]() |
![]() |
| grayscale | ![]() |
![]() |
![]() |
| cleartype | ![]() |
![]() |
![]() |
| aliased(italicized) | ![]() |
![]() |
![]() |
The "dead" pixels are burned in every time a character is written, the cursor blinks, or a character is scrolled in from offscreen, but not when scrolling text already on screen.
The edges where this occurs line up with the area that appears due to #5703 (#9381 seems related and is also visible here; #8993 might also be related):











