Skip to content

Commit 955a99a

Browse files
committed
Update README for v1.1
1 parent ca8015b commit 955a99a

File tree

2 files changed

+35
-22
lines changed

2 files changed

+35
-22
lines changed

README.md

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,42 @@ The variable fonts have one file per family (Neon, Argon, etc.). Modern and conv
2222

2323
The static fonts have one file per cut, per family. The variable axes have named stops for each axis, like `light` or `bold` for weight, `italic` for italics, and `semiwide` or `wide` for width. The combinatorial explosion of all these properties means the complete installation of static fonts involves hundreds of font files. But for situations that don't yet support variable fonts, the static builds give you a wide variety of stops throughout the range of each axis.
2424

25+
## Texture Healing
26+
27+
Monaspace pioneered the technique of "texture healing" for monospaced fonts:
28+
29+
![Texture Healing Example](<docs/images/ReadmeTextureHealing.png>)
30+
31+
Texture healing is enabled when the `calt` font feature setting is turned on in your editor. The location for this setting varies across applications, and not all applications support it. See the [Editors](#editors) section below for specific guidance.
32+
33+
You can read more about how it works on the [Monaspace website](http://monaspace.githubnext.com), and learn how it is implemented in the [documentation](https://github.com/githubnext/monaspace/blob/main/docs/Texture%20Healing.md).
34+
2535
## Coding Ligatures
2636

37+
> [!WARNING]
38+
> Ligature handling has changed significantly in Monaspace v1.1. If you're upgrading from Monaspace v1.0, see the [release notes for guidance on how to alter your editor settings](https://github.com/githubnext/monaspace/releases/tag/v1.100).
39+
40+
The `liga` font feature enables customized spacing of repeating characters, like `///` or `||`. It is designed to avoid activating inside longer sequences like `////`.
41+
2742
There are eight groups of coding ligatures, separated into stylistic sets. You may be able to enable or disable individual sets selectively:
2843

2944
* `ss01`: ligatures related to the equals glyph like `!=` and `===`.
3045
* `ss02`: ligatures related to the greater than or less than operators.
3146
* `ss03`: ligatures related to arrows like `->` and `=>`.
3247
* `ss04`: ligatures related to markup, like `</` and `/>`.
3348
* `ss05`: ligatures related to the F# programming language, like `|>`.
34-
* `ss06`: ligatures related to repeated uses of `#` such as `##` or `###`.
35-
* `ss07`: ligatures related to the asterisk like `***`.
36-
* `ss08`: ligatures related to combinations like `.=` or `.-`.
49+
* `ss06`: ligatures related to repeated uses of `#`, `+`, and `&`.
50+
* `ss07`: ligatures related to colons like `::` or `=:=`.
51+
* `ss08`: ligatures related to combinations of periods with other glyphs like `..=` or `.-`.
52+
3753

38-
You must enable discretionary ligatures first, often using the `dlig` setting. See below for editor-specific instructions.
54+
## Character Variants
3955

40-
![A visual glossary of code ligatures available in the Monaspace type system](https://github.com/githubnext/monaspace/assets/22723/49b4f802-265d-414c-94c0-ec712e3c0ecc)
56+
Specific characters have variants that you can optionally enable:
57+
58+
* `cv30`: Enable the older asterisk as shipped in Monaspace 1.0, which was vertically aligned closer to the top of the space.
59+
* `cv60`: forces the `<=` pair to render in a fashion that matches `=>` instead of swapping for ``.
60+
* `cv61`: enables the optional closed square ligature for `[]`. This can be distracting when authoring arrays in many editors, because they automatically insert the closing bracket, which immediately produces the closed square ligature upon typing the open bracket.
4161

4262

4363
## Desktop Installation
@@ -81,6 +101,9 @@ As with the desktop fonts, they are available in variable and static versions.
81101

82102
### Visual Studio Code
83103

104+
> [!WARNING]
105+
> Ligature handling has changed significantly in Monaspace v1.1. If you're upgrading from Monaspace v1.0, see the [release notes for guidance on how to alter your editor settings](https://github.com/githubnext/monaspace/releases/tag/v1.100).
106+
84107
Set the font family:
85108

86109
```json
@@ -90,29 +113,19 @@ Set the font family:
90113
> [!NOTE]
91114
> Variable fonts are not yet well-supported in VS Code, and it is not yet possible to mix multiple fonts. Stay tuned, we're talking with the VS Code team about it!
92115
93-
The same setting controls texture healing and coding ligatures. You can enable either or both.
94-
95-
If you only want texture healing and basic coding ligatures, add the following line to your `settings.json`:
96-
97-
```json
98-
"editor.fontLigatures": true,
99-
```
116+
You must use the `editor.fontLigatures` setting to enable the various features (texture healing, ligatures, and character variants). The setting is a comma-separated list of font features to be enabled.
100117

101118
> [!NOTE]
102119
> This setting is unavailable from the graphical settings editor; you must create it manually.
103120
104-
If you want more coding ligatures, you must customize that setting to specify all the sets you wish to enable:
105-
106-
```json
107-
"editor.fontLigatures": "'calt', 'liga', 'dlig', 'ss01', 'ss02', ... (more stylistic sets) ...",
108-
```
109-
> [!NOTE]
110-
> You must start the setting with `'calt', 'liga', 'dlig'`! The stylistic sets will only have an effect by enabling contextual alternates, ligatures, and discretionary ligatures.
111-
112-
If you want coding ligatures but do _not_ want texture healing, you can omit the `calt` setting:
121+
- `calt`: enables texture healing
122+
- `liga`: enables dynamic spacing for certain repeating character patterns like `///`
123+
- `ss01`, `ss02`, etc: enables the specific stylistic set
124+
- `cv30`, `cv60`, etc: enables the specific character variants
113125

126+
Putting it all together, a setting string which enables everything but the character variants would look like this:
114127
```json
115-
"editor.fontLigatures": "'liga', 'dlig', 'ss01', 'ss02', ... (more stylistic sets) ...",
128+
"editor.fontLigatures": "'calt', 'liga', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'ss07', 'ss08'",
116129
```
117130

118131
## Contribution
58.5 KB
Loading

0 commit comments

Comments
 (0)