Add support for double width/height lines #10949

Open
opened 2026-01-31 02:34:30 +00:00 by claunia · 0 comments
Owner

Originally created by @j4james on GitHub (Oct 8, 2020).

Description of the new feature/enhancement

The VT100 (and later DEC terminals) had a bunch of operations that could alter the width and height of characters on a per-line basis: DECDWL, DECDHL, and DECSWL. Despite their limitations, they're still quite useful for sprucing up a UI.

As an example, here's a UI for a chess app rendered with and without line attribute support:

image

Proposed technical implementation details (optional)

I've been playing around with a POC of this for a while now, and I've come to realise there's actually a lot more work involved than you might first expect. Other than the basic rendering of characters, we need to handle text decoration, cursor rendering, selection marking, window resizing, mouse position detection, and every VT operation that depends on window boundaries will potentially need to take line attributes into account.

So before I spend more time on this, I wanted to make sure it's something you'd be happy to accept. I should say that I'm inclined to make it conhost-only to start with. I have also looked at the WT side of things, but that basically doubles the workload, and there are extra complications introduced by conpty that I don't have a good answer for.

Originally created by @j4james on GitHub (Oct 8, 2020). # Description of the new feature/enhancement The VT100 (and later DEC terminals) had a bunch of operations that could alter the width and height of characters on a per-line basis: [`DECDWL`](https://vt100.net/docs/vt510-rm/DECDWL.html), [`DECDHL`](https://vt100.net/docs/vt510-rm/DECDHL.html), and [`DECSWL`](https://vt100.net/docs/vt510-rm/DECSWL.html). Despite their limitations, they're still quite useful for sprucing up a UI. As an example, here's a UI for a chess app rendered with and without line attribute support: ![image](https://user-images.githubusercontent.com/4181424/95500478-c0428600-099e-11eb-991f-2ca9cdf47fce.png) # Proposed technical implementation details (optional) I've been playing around with a POC of this for a while now, and I've come to realise there's actually a lot more work involved than you might first expect. Other than the basic rendering of characters, we need to handle text decoration, cursor rendering, selection marking, window resizing, mouse position detection, and every VT operation that depends on window boundaries will potentially need to take line attributes into account. So before I spend more time on this, I wanted to make sure it's something you'd be happy to accept. I should say that I'm inclined to make it conhost-only to start with. I have also looked at the WT side of things, but that basically doubles the workload, and there are extra complications introduced by conpty that I don't have a good answer for.
claunia added the Issue-FeatureProduct-ConhostResolution-Fix-CommittedArea-VT labels 2026-01-31 02:34:30 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#10949