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

chore(docs): remove trailing whitespaces #282

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The static fonts have one file per cut, per family. The variable axes have named

## Texture Healing

Monaspace pioneered the technique of "texture healing" for monospaced fonts:
Monaspace pioneered the technique of "texture healing" for monospaced fonts:

![Texture Healing Example](<docs/images/ReadmeTextureHealing.png>)

Expand Down Expand Up @@ -62,7 +62,7 @@ There are ten groups of coding ligatures, separated into stylistic sets. You may
* `ss01`: ligatures related to the equals glyph like `!=` and `===`.
* `ss02`: ligatures for greater/less or equal (`<=`, `>=`).
* `ss03`: ligatures related to arrows like `->` and `~>`.
* `ss04`: ligatures related to markup, like `</` and `/>`.
* `ss04`: ligatures related to markup, like `</` and `/>`.
* `ss05`: ligatures related to the F# programming language, like `|>`.
* `ss06`: ligatures related to repeated uses of `#`, `+`, and `&`.
* `ss07`: ligatures related to colons like `::` or `=:=`.
Expand Down Expand Up @@ -117,7 +117,7 @@ Font caching on operating systems is an inscrutable mess dating back thirty year
- First delete the old fonts…
- Then install the new fonts…
- Then restart applications that use the fonts…
- … and maybe restart your entire computer.
- … and maybe restart your entire computer.

Restarting is usually the only way to be 100% sure that the underlying machinery in the operating system picks up the new fonts.

Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Thanks for helping make GitHub safe for everyone.

GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub).

Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we will ensure that your finding gets passed along to the appropriate maintainers for remediation.
Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we will ensure that your finding gets passed along to the appropriate maintainers for remediation.

## Reporting Security Issues

Expand Down
2 changes: 1 addition & 1 deletion SUPPORT.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Support
# Support

## How to file issues and get help

Expand Down
32 changes: 16 additions & 16 deletions docs/Texture Healing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Monospace fonts involve glyphs which inherently have compromise in their design,

*fig. 2*

I’ve come to think of the ‘m’ example as belonging to a category called ‘**glyphs that need space**’ (fig. 3). If more space was available, these glyphs would love to take up more space. Somehow anthropomorphizing the glyphs a bit helps to understand the ideas here.
I’ve come to think of the ‘m’ example as belonging to a category called ‘**glyphs that need space**’ (fig. 3). If more space was available, these glyphs would love to take up more space. Somehow anthropomorphizing the glyphs a bit helps to understand the ideas here.

![LM-GH-TextureHealing-Documentation-03.png](images/LM-GH-TextureHealing-Documentation-03.png)

Expand All @@ -32,21 +32,21 @@ These categories of drawing in a monospace mean that a word like ‘swimming’

# Intro to Glyph Variations

One of the inherent problems with monospace fonts is, funnily enough, something we take for granted in most typeface design: the idea that there is just one version of every glyph. Disregarding script fonts, for instance, this is true of most fonts. If there is an ‘a’, there is just one unchanging ‘a’ that works in every situation.
One of the inherent problems with monospace fonts is, funnily enough, something we take for granted in most typeface design: the idea that there is just one version of every glyph. Disregarding script fonts, for instance, this is true of most fonts. If there is an ‘a’, there is just one unchanging ‘a’ that works in every situation.

![LM-GH-TextureHealing-Documentation-05b.gif](images/LM-GH-TextureHealing-Documentation-05b.gif)

*fig. 6*

What if this were not true? Texture Healing relies on the idea that if there is, for instance a default ‘i’, it is also joined by some alternates (fig. 6). Rather than changing the aesthetic styling of the glyph, the glyph construction, or other qualities that typically call for an alternate, Texture Healing relies on alternates that shift to the left and right, without changing the glyph bounds. In other words, the body size of the alternate versions never changes, only the width and positioning of the drawing within the glyph body.
What if this were not true? Texture Healing relies on the idea that if there is, for instance a default ‘i’, it is also joined by some alternates (fig. 6). Rather than changing the aesthetic styling of the glyph, the glyph construction, or other qualities that typically call for an alternate, Texture Healing relies on alternates that shift to the left and right, without changing the glyph bounds. In other words, the body size of the alternate versions never changes, only the width and positioning of the drawing within the glyph body.

![6-A.gif](images/6-A.gif)

# The Approach

At a high level, the steps of Texture Healing are:

1. Equip the font with variations for letters that are otherwise compromised, in which the compromise is lessened.
1. Equip the font with variations for letters that are otherwise compromised, in which the compromise is lessened.
2. Equip the font with an awareness of what a Texture Conflict is.
3. Tell the font to swap in alternate glyphs, itself, in the event that they may alleviate a Texture Conflict.

Expand All @@ -60,7 +60,7 @@ The letter ‘i’ is in the ‘glyphs that can give space’ category. A Textur
- i.left (narrower drawing, and purposefully sitting to the *left* of the glyph’s body)
- i.right (narrower drawing, and purposefully sitting to the *right* of the glyph’s body)

The default version is designed to function just as any monospace would, getting along with every other default glyph in a random order. The alternates, however, are designed to work in very specific contexts, and aren’t suitable to be used in place of defaults.
The default version is designed to function just as any monospace would, getting along with every other default glyph in a random order. The alternates, however, are designed to work in very specific contexts, and aren’t suitable to be used in place of defaults.

![7-A.gif](images/7-A.gif)

Expand Down Expand Up @@ -91,11 +91,11 @@ can be replaced with: f, i, l.left, m.left, i, n, g

![LM-GH-TextureHealing-Documentation-09.png](images/LM-GH-TextureHealing-Documentation-09.png)

Because the alternate glyphs never take up any more space, on a line of text, than their default siblings, the word length does not change at all, and the monospacing is preserved. However the ‘l’ looks more natural, and the ‘m’ looks less cramped, and the word has become more pleasant to read, as a result.
Because the alternate glyphs never take up any more space, on a line of text, than their default siblings, the word length does not change at all, and the monospacing is preserved. However the ‘l’ looks more natural, and the ‘m’ looks less cramped, and the word has become more pleasant to read, as a result.

---

Similar logic could be used for the word ‘winning’.
Similar logic could be used for the word ‘winning’.

This sequence of glyphs: w, i, n, n, i, n, g

Expand All @@ -117,7 +117,7 @@ The feature code will be readily available, and thoroughly commented, in the .gl

Semantic names have been chosen for the OpenType classes, which reference the categorical concepts we’ve established, for instance you will see definitions for the following classes:

`@defaults_can_give_space`: If a glyph belongs to the ‘glyphs that can give space’ category, and alternates have been drawn for it, the default version should be in this class. For instance ‘i’ belongs here, as the default version of ‘i’.
`@defaults_can_give_space`: If a glyph belongs to the ‘glyphs that can give space’ category, and alternates have been drawn for it, the default version should be in this class. For instance ‘i’ belongs here, as the default version of ‘i’.

`@can_give_space_left`: This contains the .left variations of every glyph added to the `@defaults_can_give_space` class.

Expand All @@ -129,7 +129,7 @@ A note on OpenType classes: these are sequential containers. The order of elemen

---

`@defaults_can_take_space`: If a glyph belongs to the ‘glyphs that need space’ category, and alternates have been drawn for it, the default version should be in this class. For instance ‘m’ belongs here, as the default version of ‘m’.
`@defaults_can_take_space`: If a glyph belongs to the ‘glyphs that need space’ category, and alternates have been drawn for it, the default version should be in this class. For instance ‘m’ belongs here, as the default version of ‘m’.

`@can_take_space_left:` This contains the .left variations of every glyph added to the `@defaults_can_take_space` class.

Expand Down Expand Up @@ -167,19 +167,19 @@ Let’s follow the process to add a new texture healed glyph. The first thing th

*fig. 12*

Next, you need to sort this glyph into one of our two categories: Is it a ‘glyph that needs space’ or a ‘glyph that can give space’ (fig. 12)?
Next, you need to sort this glyph into one of our two categories: Is it a ‘glyph that needs space’ or a ‘glyph that can give space’ (fig. 12)?

Let’s pretend that we’ve just added the letter ‘m’ to our typeface, and we want to make sure it is texture healed (fig. 13). For the sake of this tutorial we are citing the ‘m’ as an example, but in its place you should imagine any glyph which belongs to the ‘glyphs that need space’ category.

We’re going to assume that you’ve already drawn your default version of the ‘m’, which means: the version that can work with every other glyph in the character set, where its width accounts for spacing relationships to arbitrary preceding/following characters.
We’re going to assume that you’ve already drawn your default version of the ‘m’, which means: the version that can work with every other glyph in the character set, where its width accounts for spacing relationships to arbitrary preceding/following characters.

The next step would be to design the ‘.left’ and ‘.right’ versions. For ‘m.left’, the drawing should become wider than the default drawing, but the spacing on the right side should remain identical. In this sense, the ‘m.left’ glyph gets wider, leftwards.
The next step would be to design the ‘.left’ and ‘.right’ versions. For ‘m.left’, the drawing should become wider than the default drawing, but the spacing on the right side should remain identical. In this sense, the ‘m.left’ glyph gets wider, leftwards.

![LM-GH-TextureHealing-Documentation-12b.png](images/LM-GH-TextureHealing-Documentation-12b.png)

*fig. 13*

The ‘m.right’ variation does the same thing, but this time the left side bearing remains identical, the wider drawing now extends to the right. Still without moving the overall width of the ‘glyph body’ at all.
The ‘m.right’ variation does the same thing, but this time the left side bearing remains identical, the wider drawing now extends to the right. Still without moving the overall width of the ‘glyph body’ at all.

Next you will need an ‘m.both’ variation which is the widest of all the variations, and it extends in both directions. The spacing is no longer the same on either side, and we have a sort of ‘maximum footprint’ version of the glyph via this version.

Expand All @@ -198,15 +198,15 @@ And there you have it! You have a texture healed glyph which will get wider when

If you sorted your glyph into the other category ,‘glyphs that need space’, you will need to follow extremely similar steps, with some small differences. Let’s say that you were adding ‘i’, and therefore it falls into this other category (fig. 15).

When creating the .left and .right versions of your glyph, instead of making the drawings wider, the drawings will be narrower. When creating the .left variation, this time the left side bearing will remain the same, and the drawing will ‘scoot over’ to the left, as it gets narrower.
When creating the .left and .right versions of your glyph, instead of making the drawings wider, the drawings will be narrower. When creating the .left variation, this time the left side bearing will remain the same, and the drawing will ‘scoot over’ to the left, as it gets narrower.

![LM-GH-TextureHealing-Documentation-14b.png](images/LM-GH-TextureHealing-Documentation-14b.png)

*fig. 15*

The .right version follows the same logic, this time getting narrower rightwards. The bounding box of the glyph, its overall width or ‘body size’ remains the same.
The .right version follows the same logic, this time getting narrower rightwards. The bounding box of the glyph, its overall width or ‘body size’ remains the same.

There is no .both variation for glyphs in this category, so that can be omitted.
There is no .both variation for glyphs in this category, so that can be omitted.

And the class sorting steps would be:

Expand Down