Skip to content
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

Support ligatures in terminal #34103

Open
Tyriar opened this issue Sep 10, 2017 · 61 comments
Open

Support ligatures in terminal #34103

Tyriar opened this issue Sep 10, 2017 · 61 comments
Assignees
Labels
feature-request Request for new features or functionality terminal-rendering upstream Issue identified as 'upstream' component related (exists outside of VS Code) upstream-issue-linked This is an upstream issue that has been reported upstream
Milestone

Comments

@Tyriar
Copy link
Member

Tyriar commented Sep 10, 2017

Regresses with performance improvements in terminal's renderer #33954

@Tyriar Tyriar added feature-request Request for new features or functionality terminal Integrated terminal issues labels Sep 10, 2017
@Tyriar Tyriar added this to the Backlog milestone Sep 10, 2017
@Tyriar Tyriar self-assigned this Sep 10, 2017
@Tyriar Tyriar added the upstream Issue identified as 'upstream' component related (exists outside of VS Code) label Sep 10, 2017
@Mohamed3on
Copy link

Hi! is there any timeline for this feature?

@Tyriar
Copy link
Member Author

Tyriar commented Oct 10, 2017

Nope.

Here's the upstream issue xtermjs/xterm.js#958

@coreh
Copy link

coreh commented Oct 10, 2017

Would be really nice if there was a setting to re-enable the old terminal rendering until all the issues with the new terminal are resolved (blurriness, ligatures, emoji). 😕

@MPV
Copy link

MPV commented Oct 3, 2018

It seems there is now an xterm.js plugin for ligatures support:
https://github.com/xtermjs/xterm-addon-ligatures

How can we get it into vscode?

@Tyriar
Copy link
Member Author

Tyriar commented Oct 3, 2018

@MPV it would have to be built into the core, the main thing that needs to happen now is to evaluate how much weight the addon would add to the VS Code distributable.

@cziem
Copy link

cziem commented Jan 28, 2019

font-ligatures

This is how my vscode term looks like, I want it to look like this:

font-ligatures-2

@Tyriar
Copy link
Member Author

Tyriar commented Jan 28, 2019

@Phavor I don't think your issue is about ligatures but rather your powerlines setup https://code.visualstudio.com/docs/editor/integrated-terminal#_can-i-use-powerline-fonts-in-the-integrated-terminal

@cziem
Copy link

cziem commented Jan 28, 2019

@Tyriar I fixed though. Thanks. This line did the job "terminal.integrated.fontFamily": "'Fira Code iScript'"

@FelikZ
Copy link

FelikZ commented Jul 31, 2019

any news on it? I believe this is the last thing is missing for terminal to render everything proper

@wolf99
Copy link

wolf99 commented Sep 19, 2019

Just tried Cascadia Code font in the integrated terminal... ligatures not present 😢

@jhpratt
Copy link

jhpratt commented Sep 23, 2019

I see that there's a way to do this via an extension that modifies VS Code's internal files. Would it be possible to add a checkbox in settings that toggles this itself? @Tyriar

@Tyriar
Copy link
Member Author

Tyriar commented Sep 23, 2019

@jhpratt that's what it would do eventually, the remaining work here is slimming down the ligatures xterm.js addon to bare essentials and test/include it. I don't have time to do it right now due to other priorities though.

@Tyriar Tyriar added intergrated-terminal-xtermjs upstream-issue-linked This is an upstream issue that has been reported upstream and removed intergrated-terminal-xtermjs labels Oct 8, 2019
@Geobert
Copy link

Geobert commented Oct 26, 2019

Is this bug why I got this in vscode:
image

instead of:
image

(using this font https://github.com/adam7/delugia-code)?

@Tyriar
Copy link
Member Author

Tyriar commented Oct 27, 2019

@Geobert probably caused by xtermjs/xterm.js#1709 or xtermjs/xterm.js#942, ligatures are different to emoji.

@Tyriar
Copy link
Member Author

Tyriar commented Dec 4, 2019

Got a bunch of questions about ligatures when tweeting about the WebGL renderer so I'll give an update here. Here's the remaining work to do on this:

  • xterm.js
  • vscode
    • Integrate xterm-addon-ligatures such that the addon code is not loaded if ligatures is off, add the setting, etc.

@Tyriar
Copy link
Member Author

Tyriar commented Nov 29, 2022

This is still blocked on #157008 (comment). If anyone wants to help investigate that would be helpful, otherwise since this is pretty low priority against my other tasks it's up to whether I feel the motivation in my free time.

@junaga

This comment was marked as abuse.

@Arelav

This comment was marked as off-topic.

@junaga

This comment was marked as abuse.

@junaga

This comment was marked as abuse.

@Tyriar

This comment was marked as off-topic.

@junaga

This comment was marked as abuse.

@Tyriar

This comment was marked as off-topic.

@junaga

This comment was marked as off-topic.

@junaga

This comment was marked as off-topic.

@Tyriar

This comment was marked as off-topic.

@junaga

This comment was marked as off-topic.

@junaga

This comment was marked as off-topic.

@jeslinmx

This comment was marked as off-topic.

@junaga

This comment was marked as spam.

@junaga

This comment was marked as spam.

@Tyriar

This comment was marked as off-topic.

@junaga
Copy link

junaga commented Aug 30, 2023

https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf TCSS (Terminal Complex Script Support)

We find that a standardized specification for how to handle text in terminals is important work for the modern community of developers, and all other people that use text terminals.

Fonts that meet these requirements, referred to as “terminal fonts”, will work properly with the layout algorithm defined in the specification.

Looks like the issue will be fixed upstream. Couldn't the mentioned algorithm be re-used, but with queries against the font instead? I mean, it would have to be implemented in the terminal emulator either way.

@Tyriar
Copy link
Member Author

Tyriar commented Aug 30, 2023

@junaga the terminal renderers work by splitting up the rendering of the characters. The ligatures addon in xterm.js is implemented by joining sets of characters such that they are rendered together: https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-ligatures

So yes, but this is already done. We're just stuck on a packaging issue as mentioned in the last update: #34103 (comment)

@ThaDaVos
Copy link

@junaga the terminal renderers work by splitting up the rendering of the characters. The ligatures addon in xterm.js is implemented by joining sets of characters such that they are rendered together: https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-ligatures

So yes, but this is already done. We're just stuck on a packaging issue as mentioned in the last update: #34103 (comment)

The mentioned PR is closed but this issue is still open - any idea what the current state is?

@starball5
Copy link

Related on Stack Overflow:

@cocoonkid
Copy link

so this is still an open issue ? Is there a specific reason why ?

@airstrike
Copy link

Can we ever get this implemented? 2025 is around the corner and this issue was opened in 2017?

@bnb
Copy link

bnb commented Sep 12, 2024

@airstrike if you want it, you should see if you can fix the previously mentioned blocker and submit a PR yourself: #34103 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Request for new features or functionality terminal-rendering upstream Issue identified as 'upstream' component related (exists outside of VS Code) upstream-issue-linked This is an upstream issue that has been reported upstream
Projects
None yet
Development

Successfully merging a pull request may close this issue.