Closed CallumWatkins closed 1 month ago
I can't reproduce this.
I can't reproduce this. @ponte-vecchio
To clarify, when your configuration is "editor.fontLigatures": "'calt'"
, you are seeing the //
ligature working correctly?
It doesn't seem to work for me either.
This appears to be a VSCode bug and duplicate of #118.
'calt' off
'dlig'
This appears to be a VSCode bug and duplicate of #56.
@nickmccurdy The problem in this issue is not that it cannot be turned off. It's that it does not work at all. It does appear to enable texture healing, but not the ligatures. It might be caused by the same underlying issue in VS Code, but that's not clear.
Monaspace's usage of contextual alternatives for texture healing is unique, so I don't think using them should implicitly enable all ligature features. However, I believe some of the discretionary ligatures should be in other features (especially standard or contextual ligatures), which may enable them by default when enabling ligatures. This appears to be how FiraCode works.
OK, so my current (🙃) understanding is that:
calt
enables texture healing and some of the texture-related coding ligatures, like repeated symbols (&&).dlig
enables ALL ligatures (i.e. all stylistic sets) liga
is not used at allss01
etc) can be used if dlig
is off, when you want to use just a particular subset of ligatures. To add to the comment by @Krzysztof-Cieslak, I think there is one more piece to the puzzle that took me lot of trial and error to figure out:
For Monaspace ____ Var
, the behavior above seems accurate:
calt
enables texture healing and some of the texture-related coding ligatures, like repeated symbols (&&).dlig
enables ALL ligatures (i.e. all stylistic sets)liga
is not used at allss01
etc) can be used if dlig
is off, when you want to use just a particular subset of ligatures. It doesn't seem like something like 'dlig' on, 'ss01' off
works, dlig
always seems to take priority.For Monaspace ____
(as best I can tell):
calt
appears to enable texture healing, but has no effect on ligatures like &&
, //
, :=
etc.dlig
enables ALL ligatures (all stylistic sets as well as &&
, :=
)liga
is not used at allss01
etc) can be used if dlig
is off, when you want to use just a particular subset of ligatures. It doesn't seem like something like 'dlig' on, 'ss01' off
works, dlig
always seems to take priority.&&
, //
ligatures without enabling all stylistic sets as wellUnfortunately, I would like the behavior described in item (v), but I would prefer not to use the Var
family since VSCode seems to sometimes have odd behavior with the variable family when using custom CSS for the editor (glyphs are way too wide, but maybe this is something that can be adjusted).
I guess I'll just keep trying different configurations but for now hopefully this helps someone else who's trying to figure out what the heck is going on. If nothing else, I'd hope this issue can be used to track making the ligature configuration more consistent between the VF and non-VF families (ideally IMO, the non-variable should be updated to match the variable families).
Tested using wezterm on windows and linux, both have the same behavior as @ian-h-chamberlain and @Krzysztof-Cieslak describe.
Version 1.1 changes the distribution of these features, hopefully to now function as expected. calt
turns on only the texture healing features, dlig
is no longer used, liga
turns on basic ligatures l(//
, ...
, etc.), and stylistic sets (ss01
, ss02
, etc.) each enable a set of ligatures that can be enabled based on your preference.
Trying Monaspace Neon in VS Code, there is no difference with and without
calt
. For example the//
ligature does not work. However, withdlig
this ligature does work.