You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: SECURITY.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Thanks for helping make GitHub safe for everyone.
4
4
5
5
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).
6
6
7
-
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.
7
+
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.
Copy file name to clipboardExpand all lines: docs/Texture Healing.md
+16-16Lines changed: 16 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ Monospace fonts involve glyphs which inherently have compromise in their design,
14
14
15
15
*fig. 2*
16
16
17
-
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.
17
+
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.
@@ -32,21 +32,21 @@ These categories of drawing in a monospace mean that a word like ‘swimming’
32
32
33
33
# Intro to Glyph Variations
34
34
35
-
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.
35
+
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.
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.
41
+
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.
42
42
43
43

44
44
45
45
# The Approach
46
46
47
47
At a high level, the steps of Texture Healing are:
48
48
49
-
1. Equip the font with variations for letters that are otherwise compromised, in which the compromise is lessened.
49
+
1. Equip the font with variations for letters that are otherwise compromised, in which the compromise is lessened.
50
50
2. Equip the font with an awareness of what a Texture Conflict is.
51
51
3. Tell the font to swap in alternate glyphs, itself, in the event that they may alleviate a Texture Conflict.
52
52
@@ -60,7 +60,7 @@ The letter ‘i’ is in the ‘glyphs that can give space’ category. A Textur
60
60
- i.left (narrower drawing, and purposefully sitting to the *left* of the glyph’s body)
61
61
- i.right (narrower drawing, and purposefully sitting to the *right* of the glyph’s body)
62
62
63
-
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.
63
+
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.
64
64
65
65

66
66
@@ -91,11 +91,11 @@ can be replaced with: f, i, l.left, m.left, i, n, g
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.
94
+
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.
95
95
96
96
---
97
97
98
-
Similar logic could be used for the word ‘winning’.
98
+
Similar logic could be used for the word ‘winning’.
99
99
100
100
This sequence of glyphs: w, i, n, n, i, n, g
101
101
@@ -117,7 +117,7 @@ The feature code will be readily available, and thoroughly commented, in the .gl
117
117
118
118
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:
119
119
120
-
`@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’.
120
+
`@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’.
121
121
122
122
`@can_give_space_left`: This contains the .left variations of every glyph added to the `@defaults_can_give_space` class.
123
123
@@ -129,7 +129,7 @@ A note on OpenType classes: these are sequential containers. The order of elemen
129
129
130
130
---
131
131
132
-
`@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’.
132
+
`@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’.
133
133
134
134
`@can_take_space_left:` This contains the .left variations of every glyph added to the `@defaults_can_take_space` class.
135
135
@@ -167,19 +167,19 @@ Let’s follow the process to add a new texture healed glyph. The first thing th
167
167
168
168
*fig. 12*
169
169
170
-
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)?
170
+
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)?
171
171
172
172
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.
173
173
174
-
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.
174
+
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.
175
175
176
-
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.
176
+
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 ‘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.
182
+
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.
183
183
184
184
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.
185
185
@@ -198,15 +198,15 @@ And there you have it! You have a texture healed glyph which will get wider when
198
198
199
199
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).
200
200
201
-
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.
201
+
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.
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.
207
+
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.
208
208
209
-
There is no .both variation for glyphs in this category, so that can be omitted.
209
+
There is no .both variation for glyphs in this category, so that can be omitted.
0 commit comments