Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 77b3f4e7f3 | |||
| 141924ba82 | |||
| 7554d7ab76 | |||
| 1babf4977d | |||
| 0d4a55ed1f | |||
| 10dd25fd26 | |||
| 135f6eb156 | |||
| 4499ba4809 | |||
| fff435748f | |||
| eec76d8792 | |||
| 7a86cd065f | |||
| 834a086e09 | |||
| 298723b87e | |||
| 0956c0e569 | |||
| 30ef51ace3 | |||
| 8aa2677ffc | |||
| 5c25311fdf | |||
| a55ef07837 | |||
| 09bbb2bb76 | |||
| 4ff7dbde28 | |||
| 0d7089f840 | |||
| 8a32259fdc | |||
| ee481cc744 | |||
| 196e13856c | |||
| 2029e07965 | |||
| 4955c58098 | |||
| c63a5b0abb | |||
| 8f7db7bc4c |
@@ -3,9 +3,7 @@
|
|||||||
"projectOwner": "kiliman",
|
"projectOwner": "kiliman",
|
||||||
"repoType": "github",
|
"repoType": "github",
|
||||||
"repoHost": "https://github.com",
|
"repoHost": "https://github.com",
|
||||||
"files": [
|
"files": ["README.md"],
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"imageSize": 100,
|
"imageSize": 100,
|
||||||
"commit": true,
|
"commit": true,
|
||||||
"commitConvention": "none",
|
"commitConvention": "none",
|
||||||
@@ -15,58 +13,72 @@
|
|||||||
"name": "Kiliman",
|
"name": "Kiliman",
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/47168?v=4",
|
"avatar_url": "https://avatars3.githubusercontent.com/u/47168?v=4",
|
||||||
"profile": "https://github.com/kiliman",
|
"profile": "https://github.com/kiliman",
|
||||||
"contributions": [
|
"contributions": ["code", "doc", "design"]
|
||||||
"code",
|
|
||||||
"doc",
|
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"login": "mskelton",
|
"login": "mskelton",
|
||||||
"name": "Mark Skelton",
|
"name": "Mark Skelton",
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/25914066?v=4",
|
"avatar_url": "https://avatars3.githubusercontent.com/u/25914066?v=4",
|
||||||
"profile": "https://github.com/mskelton",
|
"profile": "https://github.com/mskelton",
|
||||||
"contributions": [
|
"contributions": ["design"]
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"login": "drod3763",
|
"login": "drod3763",
|
||||||
"name": "Derick Rodriguez",
|
"name": "Derick Rodriguez",
|
||||||
"avatar_url": "https://avatars2.githubusercontent.com/u/7785716?v=4",
|
"avatar_url": "https://avatars2.githubusercontent.com/u/7785716?v=4",
|
||||||
"profile": "https://github.com/drod3763",
|
"profile": "https://github.com/drod3763",
|
||||||
"contributions": [
|
"contributions": ["doc"]
|
||||||
"doc"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"login": "amitkparekh",
|
"login": "amitkparekh",
|
||||||
"name": "Amit Parekh",
|
"name": "Amit Parekh",
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/7276308?v=4",
|
"avatar_url": "https://avatars3.githubusercontent.com/u/7276308?v=4",
|
||||||
"profile": "https://github.com/amitkparekh",
|
"profile": "https://github.com/amitkparekh",
|
||||||
"contributions": [
|
"contributions": ["doc", "design"]
|
||||||
"doc",
|
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"login": "CandySunPlus",
|
"login": "CandySunPlus",
|
||||||
"name": "NikSun",
|
"name": "NikSun",
|
||||||
"avatar_url": "https://avatars0.githubusercontent.com/u/502700?v=4",
|
"avatar_url": "https://avatars0.githubusercontent.com/u/502700?v=4",
|
||||||
"profile": "https://github.com/CandySunPlus",
|
"profile": "https://github.com/CandySunPlus",
|
||||||
"contributions": [
|
"contributions": ["design"]
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"login": "Jakob6174",
|
"login": "Jakob6174",
|
||||||
"name": "Jakob Pearson",
|
"name": "Jakob Pearson",
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/40262817?v=4",
|
"avatar_url": "https://avatars3.githubusercontent.com/u/40262817?v=4",
|
||||||
"profile": "https://github.com/Jakob6174",
|
"profile": "https://github.com/Jakob6174",
|
||||||
"contributions": [
|
"contributions": ["code"]
|
||||||
"code"
|
},
|
||||||
]
|
{
|
||||||
|
"login": "Kilua99",
|
||||||
|
"name": "kilua99",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/44760686?v=4",
|
||||||
|
"profile": "https://github.com/Kilua99",
|
||||||
|
"contributions": ["doc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "GlorifiedBicycle",
|
||||||
|
"name": "Reland Boyle",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/71753585?v=4",
|
||||||
|
"profile": "https://github.com/GlorifiedBicycle",
|
||||||
|
"contributions": ["doc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "killua99",
|
||||||
|
"name": "Luigi",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/457822?v=4",
|
||||||
|
"profile": "http://killua.me/",
|
||||||
|
"contributions": ["doc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "tweks",
|
||||||
|
"name": "Tomek Weksej",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/564556?v=4",
|
||||||
|
"profile": "https://github.com/tweks",
|
||||||
|
"contributions": ["code"]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 7
|
"contributorsPerLine": 7
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
env: {
|
env: {
|
||||||
es6: true,
|
es6: true,
|
||||||
node: true
|
node: true,
|
||||||
},
|
},
|
||||||
extends: 'eslint:recommended',
|
extends: ['eslint:recommended', 'prettier'],
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
sourceType: 'module'
|
sourceType: 'module',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
indent: ['error', 2],
|
|
||||||
'linebreak-style': ['error', 'unix'],
|
'linebreak-style': ['error', 'unix'],
|
||||||
quotes: ['error', 'single'],
|
'no-console': 'off',
|
||||||
semi: ['error', 'always'],
|
},
|
||||||
'no-console': 'off'
|
}
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ node_modules
|
|||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
"semi": true,
|
"semi": false,
|
||||||
"singleQuote": true
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"arrowParens": "avoid"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ those found in the popular [Fira Code](https://github.com/tonsky/FiraCode) font.
|
|||||||
These ligatures were custom created using [Glyphs](https://glyphsapp.com/).
|
These ligatures were custom created using [Glyphs](https://glyphsapp.com/).
|
||||||
There are even italic versions of the ligatures.
|
There are even italic versions of the ligatures.
|
||||||
|
|
||||||
|
## 🎉 What's New in Version 2.5
|
||||||
|
|
||||||
|
<img src="./images/new-ligatures-2.5.png"/>
|
||||||
|
|
||||||
## 🎉 What's New in Version 2
|
## 🎉 What's New in Version 2
|
||||||
|
|
||||||
<img src="./images/new-ligatures.png"/>
|
<img src="./images/new-ligatures.png"/>
|
||||||
@@ -20,6 +24,8 @@ characters properly.
|
|||||||
|
|
||||||
<img src="./images/caret-position.gif" />
|
<img src="./images/caret-position.gif" />
|
||||||
|
|
||||||
|
## 👀 <a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/normal/index.html">Click here to see preview images of all ligatures</a>
|
||||||
|
|
||||||
With the awesome help from [Mark Skelton](https://github.com/mskelton), we now have the full set of ligatures for
|
With the awesome help from [Mark Skelton](https://github.com/mskelton), we now have the full set of ligatures for
|
||||||
the following fonts. Thanks Mark, and thanks to all of you who have been patiently waiting for these ligatures to be completed.
|
the following fonts. Thanks Mark, and thanks to all of you who have been patiently waiting for these ligatures to be completed.
|
||||||
|
|
||||||
@@ -54,10 +60,13 @@ Which font weight of Operator Mono do you use? Also note difference between Scre
|
|||||||
|
|
||||||
- The original _Operator Mono_ font... of course.
|
- The original _Operator Mono_ font... of course.
|
||||||
- Python (v2.7+)
|
- Python (v2.7+)
|
||||||
|
- **NOTE**: For Mac, the default system Python v2.7 doesn't work. Make sure you install Python 3.
|
||||||
- Node.js
|
- Node.js
|
||||||
- Install _fonttools_ from https://github.com/fonttools/fonttools
|
- Install _fonttools_ from https://github.com/fonttools/fonttools
|
||||||
- Windows/Linux: `pip install fonttools`
|
- Windows/Linux: `pip install fonttools`
|
||||||
- Mac: `pip3 install fonttools`
|
- **NOTE**: For Windows you should use a console with administrative permissions if your Python sit under `C:\PythonX`
|
||||||
|
- **NOTE**: For Linux in WSL/WSL2, ensure that _fonttools_ is added to PATH after install. Alternatively, consider installing via `sudo apt install fonttools`.
|
||||||
|
- Mac: `pip3 install fonttools` (from Python 3)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -151,18 +160,27 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tbody>
|
||||||
<td align="center"><a href="https://github.com/kiliman"><img src="https://avatars3.githubusercontent.com/u/47168?v=4" width="100px;" alt="Kiliman"/><br /><sub><b>Kiliman</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=kiliman" title="Code">💻</a> <a href="https://github.com/kiliman/operator-mono-lig/commits?author=kiliman" title="Documentation">📖</a> <a href="#design-kiliman" title="Design">🎨</a></td>
|
<tr>
|
||||||
<td align="center"><a href="https://github.com/mskelton"><img src="https://avatars3.githubusercontent.com/u/25914066?v=4" width="100px;" alt="Mark Skelton"/><br /><sub><b>Mark Skelton</b></sub></a><br /><a href="#design-mskelton" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kiliman"><img src="https://avatars3.githubusercontent.com/u/47168?v=4?s=100" width="100px;" alt="Kiliman"/><br /><sub><b>Kiliman</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=kiliman" title="Code">💻</a> <a href="https://github.com/kiliman/operator-mono-lig/commits?author=kiliman" title="Documentation">📖</a> <a href="#design-kiliman" title="Design">🎨</a></td>
|
||||||
<td align="center"><a href="https://github.com/drod3763"><img src="https://avatars2.githubusercontent.com/u/7785716?v=4" width="100px;" alt="Derick Rodriguez"/><br /><sub><b>Derick Rodriguez</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=drod3763" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mskelton"><img src="https://avatars3.githubusercontent.com/u/25914066?v=4?s=100" width="100px;" alt="Mark Skelton"/><br /><sub><b>Mark Skelton</b></sub></a><br /><a href="#design-mskelton" title="Design">🎨</a></td>
|
||||||
<td align="center"><a href="https://github.com/amitkparekh"><img src="https://avatars3.githubusercontent.com/u/7276308?v=4" width="100px;" alt="Amit Parekh"/><br /><sub><b>Amit Parekh</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=amitkparekh" title="Documentation">📖</a> <a href="#design-amitkparekh" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drod3763"><img src="https://avatars2.githubusercontent.com/u/7785716?v=4?s=100" width="100px;" alt="Derick Rodriguez"/><br /><sub><b>Derick Rodriguez</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=drod3763" title="Documentation">📖</a></td>
|
||||||
<td align="center"><a href="https://github.com/CandySunPlus"><img src="https://avatars0.githubusercontent.com/u/502700?v=4" width="100px;" alt="NikSun"/><br /><sub><b>NikSun</b></sub></a><br /><a href="#design-CandySunPlus" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amitkparekh"><img src="https://avatars3.githubusercontent.com/u/7276308?v=4?s=100" width="100px;" alt="Amit Parekh"/><br /><sub><b>Amit Parekh</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=amitkparekh" title="Documentation">📖</a> <a href="#design-amitkparekh" title="Design">🎨</a></td>
|
||||||
<td align="center"><a href="https://github.com/Jakob6174"><img src="https://avatars3.githubusercontent.com/u/40262817?v=4" width="100px;" alt="Jakob Pearson"/><br /><sub><b>Jakob Pearson</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=Jakob6174" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/CandySunPlus"><img src="https://avatars0.githubusercontent.com/u/502700?v=4?s=100" width="100px;" alt="NikSun"/><br /><sub><b>NikSun</b></sub></a><br /><a href="#design-CandySunPlus" title="Design">🎨</a></td>
|
||||||
</tr>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Jakob6174"><img src="https://avatars3.githubusercontent.com/u/40262817?v=4?s=100" width="100px;" alt="Jakob Pearson"/><br /><sub><b>Jakob Pearson</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=Jakob6174" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kilua99"><img src="https://avatars.githubusercontent.com/u/44760686?v=4?s=100" width="100px;" alt="kilua99"/><br /><sub><b>kilua99</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=Kilua99" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GlorifiedBicycle"><img src="https://avatars.githubusercontent.com/u/71753585?v=4?s=100" width="100px;" alt="Reland Boyle"/><br /><sub><b>Reland Boyle</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=GlorifiedBicycle" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://killua.me/"><img src="https://avatars.githubusercontent.com/u/457822?v=4?s=100" width="100px;" alt="Luigi"/><br /><sub><b>Luigi</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=killua99" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tweks"><img src="https://avatars.githubusercontent.com/u/564556?v=4?s=100" width="100px;" alt="Tomek Weksej"/><br /><sub><b>Tomek Weksej</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=tweks" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- markdownlint-enable -->
|
<!-- markdownlint-restore -->
|
||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
||||||
|
|||||||
@@ -31,6 +31,13 @@ if not exist .\ligature\%lig%\glyphs\* exit /b
|
|||||||
ttx -f .\original\%otf%.otf
|
ttx -f .\original\%otf%.otf
|
||||||
node index.js %otf% %flags%
|
node index.js %otf% %flags%
|
||||||
ttx -f .\build\%lig%.ttx
|
ttx -f .\build\%lig%.ttx
|
||||||
fonttools feaLib -v -o ".\build\%lig%.otf" .\features\default.fea ".\build\%lig%.otf"
|
rem check if "SSm" is in name since the features are slightly different
|
||||||
|
@echo.%lig% | findstr /C:"SSm" 1>nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
set fea=".\features\default.fea"
|
||||||
|
) else (
|
||||||
|
set fea=".\features\defaultSSm.fea"
|
||||||
|
)
|
||||||
|
fonttools feaLib -v -o ".\build\%lig%.otf" %fea% ".\build\%lig%.otf"
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|||||||
@@ -21,8 +21,12 @@ build_font() {
|
|||||||
node index.js "$otf" "$flags"
|
node index.js "$otf" "$flags"
|
||||||
|
|
||||||
ttx -f "./build/$1.ttx"
|
ttx -f "./build/$1.ttx"
|
||||||
|
if [[ $lig == *"SSm"* ]]; then
|
||||||
fonttools feaLib -v -o "./build/$1.otf" ./features/default.fea "./build/$1.otf"
|
fea="./features/defaultSSm.fea"
|
||||||
|
else
|
||||||
|
fea="./features/default.fea"
|
||||||
|
fi
|
||||||
|
fonttools feaLib -v -o "./build/$1.otf" $fea "./build/$1.otf"
|
||||||
}
|
}
|
||||||
|
|
||||||
flags=
|
flags=
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs')
|
||||||
|
|
||||||
const rules = [
|
const rules = [
|
||||||
,
|
'',
|
||||||
`
|
`
|
||||||
lookup 1 {
|
lookup 1 {
|
||||||
sub 1 by glyph;
|
sub 1 by glyph;
|
||||||
@@ -30,37 +30,36 @@ lookup 1_2_3_4 {
|
|||||||
sub 1.spacer 2' 3 4 by 2.spacer;
|
sub 1.spacer 2' 3 4 by 2.spacer;
|
||||||
sub 1' 2 3 4 by 1.spacer;
|
sub 1' 2 3 4 by 1.spacer;
|
||||||
} 1_2_3_4;`,
|
} 1_2_3_4;`,
|
||||||
];
|
]
|
||||||
|
|
||||||
const gencalt = (ligatures) => {
|
const gencalt = ligatures => {
|
||||||
let calt = 'feature calt {\n';
|
let calt = 'feature calt {\n'
|
||||||
const ligs = {};
|
const ligs = {}
|
||||||
console.log(ligatures);
|
|
||||||
|
|
||||||
ligatures
|
ligatures
|
||||||
.filter((l) => !!l.name.match(/\.liga$/) || l.name !== l.glyph)
|
.filter(l => !!l.name.match(/\.liga$/) || l.name !== l.glyph)
|
||||||
.map((l) => l.glyph)
|
.map(l => l.glyph)
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
const length = b.split('_').length - a.split('_').length;
|
const length = b.split('_').length - a.split('_').length
|
||||||
if (length !== 0) return length;
|
if (length !== 0) return length
|
||||||
return a < b ? -1 : 1;
|
return a < b ? -1 : 1
|
||||||
})
|
})
|
||||||
.forEach((g) => {
|
.forEach(g => {
|
||||||
g.split('.')
|
g.split('.')
|
||||||
.slice(0, 1)
|
.slice(0, 1)
|
||||||
.forEach((l) => {
|
.forEach(l => {
|
||||||
if (ligs[l]) return;
|
if (ligs[l]) return
|
||||||
ligs[l] = true;
|
ligs[l] = true
|
||||||
const c = l.split('_');
|
const c = l.split('_')
|
||||||
let rule = rules[c.length];
|
let rule = rules[c.length]
|
||||||
rule = rule
|
rule = rule
|
||||||
.replace(/\d/g, (m) => c[parseInt(m) - 1])
|
.replace(/\d/g, m => c[parseInt(m) - 1])
|
||||||
.replace(/glyph/g, g);
|
.replace(/glyph/g, g)
|
||||||
calt += rule + '\n';
|
calt += rule + '\n'
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
return calt + '\n} calt;\n';
|
return calt + '\n} calt;\n'
|
||||||
};
|
}
|
||||||
|
|
||||||
exports.gencalt = gencalt;
|
exports.gencalt = gencalt
|
||||||
|
|||||||
@@ -1,212 +1,234 @@
|
|||||||
languagesystem DFLT dflt;
|
##############################
|
||||||
languagesystem latn dflt;
|
# Languagesystem definitions #
|
||||||
|
##############################
|
||||||
lookup lookup_0 {
|
languagesystem DFLT dflt; # Default default
|
||||||
sub zero by zero.num;
|
languagesystem latn dflt; # Latin default
|
||||||
sub one by one.num;
|
languagesystem latn CAT ; # Latin Catalan
|
||||||
sub two by two.num;
|
##########
|
||||||
sub three by three.num;
|
# Prefix #
|
||||||
sub four by four.num;
|
##########
|
||||||
sub five by five.num;
|
@HexDigit = [a b c d e f A B C D E F];
|
||||||
sub six by six.num;
|
@Digit = [zero one two three four five six seven eight nine];
|
||||||
sub seven by seven.num;
|
@DigitAll = [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den];
|
||||||
sub eight by eight.num;
|
@DigitSmall = [zero.small one.small two.small three.small four.small five.small six.small seven.small eight.small nine.small];
|
||||||
sub nine by nine.num;
|
@DigitNumerator = [zero.num one.num two.num three four.num five.num six.num seven.num eight.num nine.num];
|
||||||
sub slash by fraction;
|
@DigitDenominator = [zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den];
|
||||||
sub fraction by fraction.afrc;
|
@DigitSuperior = [zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup];
|
||||||
} lookup_0;
|
@DigitInferior = [zero.inf one.inf two.inf three.inf four.inf five.inf six.inf seven.inf eight.inf nine.inf];
|
||||||
|
#######################
|
||||||
lookup lookup_1 {
|
# Feature definitions #
|
||||||
sub zero by zero.den;
|
#######################
|
||||||
sub one by one.den;
|
|
||||||
sub two by two.den;
|
|
||||||
sub three by three.den;
|
|
||||||
sub four by four.den;
|
|
||||||
sub five by five.den;
|
|
||||||
sub six by six.den;
|
|
||||||
sub seven by seven.den;
|
|
||||||
sub eight by eight.den;
|
|
||||||
sub nine by nine.den;
|
|
||||||
sub slash by fraction;
|
|
||||||
} lookup_1;
|
|
||||||
|
|
||||||
lookup lookup_2 {
|
|
||||||
sub L periodcentered by Ldot;
|
|
||||||
sub l periodcentered by ldot;
|
|
||||||
} lookup_2;
|
|
||||||
|
|
||||||
|
|
||||||
feature case {
|
|
||||||
sub guillemotleft by guillemotleft.cap;
|
|
||||||
sub guillemotright by guillemotright.cap;
|
|
||||||
sub guilsinglleft by guilsinglleft.cap;
|
|
||||||
sub guilsinglright by guilsinglright.cap;
|
|
||||||
sub parenleft by parenleft.cap;
|
|
||||||
sub parenright by parenright.cap;
|
|
||||||
sub bracketleft by bracketleft.cap;
|
|
||||||
sub bracketright by bracketright.cap;
|
|
||||||
sub braceleft by braceleft.cap;
|
|
||||||
sub braceright by braceright.cap;
|
|
||||||
} case;
|
|
||||||
|
|
||||||
feature dnom {
|
|
||||||
sub zero by zero.den;
|
|
||||||
sub one by one.den;
|
|
||||||
sub two by two.den;
|
|
||||||
sub three by three.den;
|
|
||||||
sub four by four.den;
|
|
||||||
sub five by five.den;
|
|
||||||
sub six by six.den;
|
|
||||||
sub seven by seven.den;
|
|
||||||
sub eight by eight.den;
|
|
||||||
sub nine by nine.den;
|
|
||||||
} dnom;
|
|
||||||
|
|
||||||
feature frac {
|
|
||||||
lookup frac0 {
|
|
||||||
sub [zero one two three four five six seven eight nine] slash' lookup lookup_0 [zero one two three four five six seven eight nine] ;
|
|
||||||
} frac0;
|
|
||||||
lookup frac1 {
|
|
||||||
ignore sub [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] fraction' ;
|
|
||||||
ignore sub fraction' [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] ;
|
|
||||||
sub [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] fraction' lookup lookup_0 [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] ;
|
|
||||||
} frac1;
|
|
||||||
lookup frac2 {
|
|
||||||
sub [zero one two three four five six seven eight nine]' lookup lookup_0 fraction.afrc ;
|
|
||||||
sub fraction.afrc [zero one two three four five six seven eight nine]' lookup lookup_1 ;
|
|
||||||
} frac2;
|
|
||||||
lookup frac3 {
|
|
||||||
sub one.num fraction.afrc two.den by onehalf;
|
|
||||||
sub one.num fraction.afrc three.den by onethird;
|
|
||||||
sub one.num fraction.afrc four.den by onequarter;
|
|
||||||
sub one.num fraction.afrc five.den by onefifth;
|
|
||||||
sub one.num fraction.afrc six.den by onesixth;
|
|
||||||
sub one.num fraction.afrc eight.den by oneeighth;
|
|
||||||
sub two.num fraction.afrc three.den by twothirds;
|
|
||||||
sub two.num fraction.afrc five.den by twofifths;
|
|
||||||
sub three.num fraction.afrc four.den by threequarters;
|
|
||||||
sub three.num fraction.afrc five.den by threefifths;
|
|
||||||
sub three.num fraction.afrc eight.den by threeeighths;
|
|
||||||
sub four.num fraction.afrc five.den by fourfifths;
|
|
||||||
sub five.num fraction.afrc six.den by fivesixths;
|
|
||||||
sub five.num fraction.afrc eight.den by fiveeighths;
|
|
||||||
sub seven.num fraction.afrc eight.den by seveneighths;
|
|
||||||
} frac3;
|
|
||||||
} frac;
|
|
||||||
|
|
||||||
feature locl {
|
feature locl {
|
||||||
script latn;
|
# GSUB feature: Localized Forms
|
||||||
language CAT ;
|
script latn; # Latin
|
||||||
sub l' lookup lookup_2 periodcentered' lookup lookup_2 l ;
|
language CAT; # Catalan
|
||||||
sub L' lookup lookup_2 periodcentered' lookup lookup_2 L ;
|
sub l' periodcentered' by ldot;
|
||||||
|
sub L' periodcentered' by Ldot;
|
||||||
} locl;
|
} locl;
|
||||||
|
|
||||||
|
feature aalt useExtension {
|
||||||
|
# GSUB feature: Access All Alternates
|
||||||
|
feature case;
|
||||||
|
feature dnom;
|
||||||
|
feature numr;
|
||||||
|
feature salt;
|
||||||
|
feature sinf;
|
||||||
|
feature ss01;
|
||||||
|
feature ss03;
|
||||||
|
feature ss04;
|
||||||
|
feature ss05;
|
||||||
|
feature ss07;
|
||||||
|
feature ss08;
|
||||||
|
feature ss09;
|
||||||
|
feature ss10;
|
||||||
|
feature subs;
|
||||||
|
feature sups;
|
||||||
|
feature smcp;
|
||||||
|
feature c2sc;
|
||||||
|
} aalt;
|
||||||
|
|
||||||
|
feature frac {
|
||||||
|
# GSUB feature: Fractions
|
||||||
|
lookup frac0 {
|
||||||
|
sub @Digit slash' @Digit by fraction;
|
||||||
|
} frac0;
|
||||||
|
|
||||||
|
lookup frac1 {
|
||||||
|
ignore sub @DigitAll @DigitAll fraction';
|
||||||
|
ignore sub fraction' @DigitAll @DigitAll;
|
||||||
|
sub @DigitAll fraction' @DigitAll by fraction.afrc;
|
||||||
|
} frac1;
|
||||||
|
|
||||||
|
lookup frac2 {
|
||||||
|
sub @Digit' fraction.afrc by @DigitNumerator;
|
||||||
|
sub fraction.afrc @Digit' by @DigitDenominator;
|
||||||
|
} frac2;
|
||||||
|
|
||||||
|
lookup frac3 {
|
||||||
|
sub one.num fraction.afrc two.den by onehalf;
|
||||||
|
sub one.num fraction.afrc three.den by onethird;
|
||||||
|
sub one.num fraction.afrc four.den by onequarter;
|
||||||
|
sub one.num fraction.afrc five.den by onefifth;
|
||||||
|
sub one.num fraction.afrc six.den by onesixth;
|
||||||
|
sub one.num fraction.afrc eight.den by oneeighth;
|
||||||
|
sub two.num fraction.afrc three.den by twothirds;
|
||||||
|
sub two.num fraction.afrc five.den by twofifths;
|
||||||
|
sub three.num fraction.afrc four.den by threequarters;
|
||||||
|
sub three.num fraction.afrc five.den by threefifths;
|
||||||
|
sub three.num fraction.afrc eight.den by threeeighths;
|
||||||
|
sub four.num fraction.afrc five.den by fourfifths;
|
||||||
|
sub five.num fraction.afrc six.den by fivesixths;
|
||||||
|
sub five.num fraction.afrc eight.den by fiveeighths;
|
||||||
|
sub seven.num fraction.afrc eight.den by seveneighths;
|
||||||
|
} frac3;
|
||||||
|
} frac;
|
||||||
|
|
||||||
feature numr {
|
feature numr {
|
||||||
sub zero by zero.num;
|
# GSUB feature: Numerators
|
||||||
sub one by one.num;
|
sub @Digit by @DigitNumerator;
|
||||||
sub two by two.num;
|
|
||||||
sub three by three.num;
|
|
||||||
sub four by four.num;
|
|
||||||
sub five by five.num;
|
|
||||||
sub six by six.num;
|
|
||||||
sub seven by seven.num;
|
|
||||||
sub eight by eight.num;
|
|
||||||
sub nine by nine.num;
|
|
||||||
} numr;
|
} numr;
|
||||||
|
|
||||||
feature rupa {
|
feature dnom {
|
||||||
sub R p by R_p;
|
# GSUB feature: Denominators
|
||||||
} rupa;
|
sub @Digit by @DigitDenominator;
|
||||||
|
} dnom;
|
||||||
|
|
||||||
feature ss01 {
|
feature sups {
|
||||||
sub registered by registered.alt;
|
# GSUB feature: Superscript
|
||||||
} ss01;
|
sub @Digit by @DigitSuperior;
|
||||||
|
} sups;
|
||||||
|
|
||||||
feature salt {
|
feature subs {
|
||||||
lookup salt0 {
|
# GSUB feature: Subscript
|
||||||
sub registered by registered.alt;
|
sub @Digit by @DigitInferior;
|
||||||
} salt0;
|
} subs;
|
||||||
lookup salt1 {
|
|
||||||
sub colon by colon.alt;
|
|
||||||
} salt1;
|
|
||||||
lookup salt2 {
|
|
||||||
sub bullet by bullet.alt;
|
|
||||||
} salt2;
|
|
||||||
lookup salt3 {
|
|
||||||
sub asterisk by asterisk.alt;
|
|
||||||
} salt3;
|
|
||||||
lookup salt4 {
|
|
||||||
sub zero by zero.alt;
|
|
||||||
} salt4;
|
|
||||||
lookup salt5 {
|
|
||||||
sub underscore by underscore.alt;
|
|
||||||
} salt5;
|
|
||||||
lookup salt6 {
|
|
||||||
sub [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] slash' lookup lookup_1 [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] ;
|
|
||||||
} salt6;
|
|
||||||
} salt;
|
|
||||||
|
|
||||||
feature sinf {
|
feature sinf {
|
||||||
sub zero by zero.inf;
|
# GSUB feature: Scientific Inferiors
|
||||||
sub one by one.inf;
|
sub @Digit by @DigitInferior;
|
||||||
sub two by two.inf;
|
|
||||||
sub three by three.inf;
|
|
||||||
sub four by four.inf;
|
|
||||||
sub five by five.inf;
|
|
||||||
sub six by six.inf;
|
|
||||||
sub seven by seven.inf;
|
|
||||||
sub eight by eight.inf;
|
|
||||||
sub nine by nine.inf;
|
|
||||||
} sinf;
|
} sinf;
|
||||||
|
|
||||||
|
feature ordn {
|
||||||
|
# Ordinals
|
||||||
|
sub @Digit [A a]' by ordfeminine;
|
||||||
|
sub @Digit [O o]' by ordmasculine;
|
||||||
|
sub N o period by numero;
|
||||||
|
} ordn;
|
||||||
|
|
||||||
|
feature smcp {
|
||||||
|
# Small Caps
|
||||||
|
sub @Digit by @DigitSmall;
|
||||||
|
} smcp;
|
||||||
|
|
||||||
|
feature c2sc {
|
||||||
|
# Capitals to Small Caps
|
||||||
|
sub @Digit by @DigitSmall;
|
||||||
|
} c2sc;
|
||||||
|
|
||||||
|
feature case {
|
||||||
|
# GSUB feature: Case-Sensitive Forms
|
||||||
|
sub guillemotleft by guillemotleft.cap;
|
||||||
|
sub guillemotright by guillemotright.cap;
|
||||||
|
sub guilsinglleft by guilsinglleft.cap;
|
||||||
|
sub guilsinglright by guilsinglright.cap;
|
||||||
|
sub parenleft by parenleft.cap;
|
||||||
|
sub parenright by parenright.cap;
|
||||||
|
sub bracketleft by bracketleft.cap;
|
||||||
|
sub bracketright by bracketright.cap;
|
||||||
|
sub braceleft by braceleft.cap;
|
||||||
|
sub braceright by braceright.cap;
|
||||||
|
} case;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
include(calt.fea);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
feature salt {
|
||||||
|
# GSUB feature: Stylistic Alternates
|
||||||
|
sub registered by registered.alt;
|
||||||
|
sub colon by colon.alt;
|
||||||
|
sub bullet by bullet.alt;
|
||||||
|
sub asterisk by asterisk.alt;
|
||||||
|
sub zero by zero.alt;
|
||||||
|
sub underscore by underscore.alt;
|
||||||
|
lookup salt {
|
||||||
|
# GSUB lookup 20, type 16 (Chaining Context)
|
||||||
|
sub @DigitAll slash' @DigitAll by fraction;
|
||||||
|
} salt;
|
||||||
|
} salt;
|
||||||
|
|
||||||
|
feature ss01 {
|
||||||
|
featureNames {
|
||||||
|
name "Large Registered Symbol";
|
||||||
|
};
|
||||||
|
sub registered by registered.alt;
|
||||||
|
} ss01;
|
||||||
|
|
||||||
feature ss03 {
|
feature ss03 {
|
||||||
sub colon by colon.alt;
|
featureNames {
|
||||||
|
name "Raised Colon";
|
||||||
|
};
|
||||||
|
sub colon by colon.alt;
|
||||||
} ss03;
|
} ss03;
|
||||||
|
|
||||||
feature ss04 {
|
feature ss04 {
|
||||||
sub bullet by bullet.alt;
|
featureNames {
|
||||||
|
name "Square Bullet";
|
||||||
|
};
|
||||||
|
sub bullet by bullet.alt;
|
||||||
} ss04;
|
} ss04;
|
||||||
|
|
||||||
feature ss05 {
|
feature ss05 {
|
||||||
sub asterisk by asterisk.alt;
|
featureNames {
|
||||||
|
name "Six-Pointed Asterisk";
|
||||||
|
};
|
||||||
|
sub asterisk by asterisk.alt;
|
||||||
} ss05;
|
} ss05;
|
||||||
|
|
||||||
feature ss07 {
|
feature ss07 {
|
||||||
sub zero by zero.alt;
|
featureNames {
|
||||||
|
name "Unslashed Zero";
|
||||||
|
};
|
||||||
|
sub zero by zero.alt;
|
||||||
} ss07;
|
} ss07;
|
||||||
|
|
||||||
feature ss08 {
|
feature ss08 {
|
||||||
sub underscore by underscore.alt;
|
featureNames {
|
||||||
|
name "Connected Underscore";
|
||||||
|
};
|
||||||
|
sub underscore by underscore.alt;
|
||||||
} ss08;
|
} ss08;
|
||||||
|
|
||||||
feature ss09 {
|
feature ss09 {
|
||||||
sub [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] slash' lookup lookup_1 [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den] ;
|
featureNames {
|
||||||
|
name "Fraction Bar";
|
||||||
|
};
|
||||||
|
sub @DigitAll slash' @DigitAll by fraction;
|
||||||
} ss09;
|
} ss09;
|
||||||
|
|
||||||
feature subs {
|
feature ss10 {
|
||||||
sub zero by zero.inf;
|
featureNames {
|
||||||
sub one by one.inf;
|
name "Hexidecimal Multiply Sign";
|
||||||
sub two by two.inf;
|
};
|
||||||
sub three by three.inf;
|
### 0xFF
|
||||||
sub four by four.inf;
|
sub [zero zero.alt] x' [@Digit @HexDigit] by multiply;
|
||||||
sub five by five.inf;
|
### 800x600
|
||||||
sub six by six.inf;
|
sub [@Digit zero.alt] x' [@Digit zero.alt] by multiply;
|
||||||
sub seven by seven.inf;
|
} ss10;
|
||||||
sub eight by eight.inf;
|
|
||||||
sub nine by nine.inf;
|
feature rupa {
|
||||||
} subs;
|
sub R p by R_p;
|
||||||
|
} rupa;
|
||||||
|
|
||||||
|
feature kern {
|
||||||
|
# GPOS feature: Kerning
|
||||||
|
lookup kern {
|
||||||
|
# GPOS lookup 1, type 2 (Pair adjustment)
|
||||||
|
pos fraction.afrc @DigitDenominator -550;
|
||||||
|
pos @DigitNumerator fraction.afrc -550;
|
||||||
|
} kern;
|
||||||
|
} kern;
|
||||||
|
|
||||||
feature subs {
|
|
||||||
sub zero by zero.sup;
|
|
||||||
sub one by one.sup;
|
|
||||||
sub two by two.sup;
|
|
||||||
sub three by three.sup;
|
|
||||||
sub four by four.sup;
|
|
||||||
sub five by five.sup;
|
|
||||||
sub six by six.sup;
|
|
||||||
sub seven by seven.sup;
|
|
||||||
sub eight by eight.sup;
|
|
||||||
sub nine by nine.sup;
|
|
||||||
} subs;
|
|
||||||
|
|
||||||
include(calt.fea);
|
|
||||||
|
|||||||
@@ -0,0 +1,252 @@
|
|||||||
|
##############################
|
||||||
|
# Languagesystem definitions #
|
||||||
|
##############################
|
||||||
|
languagesystem DFLT dflt; # Default default
|
||||||
|
languagesystem latn dflt; # Latin default
|
||||||
|
languagesystem latn CAT ; # Latin Catalan
|
||||||
|
##########
|
||||||
|
# Prefix #
|
||||||
|
##########
|
||||||
|
@HexDigit = [a b c d e f A B C D E F];
|
||||||
|
@Digit = [zero one two three four five six seven eight nine];
|
||||||
|
@DigitAll = [zero one two three four five six seven eight nine zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den];
|
||||||
|
@DigitSmall = [zero.small one.small two.small three.small four.small five.small six.small seven.small eight.small nine.small];
|
||||||
|
@DigitNumerator = [zero.num one.num two.num three four.num five.num six.num seven.num eight.num nine.num];
|
||||||
|
@DigitDenominator = [zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den];
|
||||||
|
@DigitSuperior = [zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup];
|
||||||
|
@DigitInferior = [zero.inf one.inf two.inf three.inf four.inf five.inf six.inf seven.inf eight.inf nine.inf];
|
||||||
|
#######################
|
||||||
|
# Feature definitions #
|
||||||
|
#######################
|
||||||
|
feature locl {
|
||||||
|
# GSUB feature: Localized Forms
|
||||||
|
script latn; # Latin
|
||||||
|
language CAT; # Catalan
|
||||||
|
sub l' periodcentered' by ldot;
|
||||||
|
sub L' periodcentered' by Ldot;
|
||||||
|
} locl;
|
||||||
|
|
||||||
|
feature aalt useExtension {
|
||||||
|
# GSUB feature: Access All Alternates
|
||||||
|
feature case;
|
||||||
|
feature dnom;
|
||||||
|
feature numr;
|
||||||
|
feature salt;
|
||||||
|
feature sinf;
|
||||||
|
feature ss01;
|
||||||
|
feature ss03;
|
||||||
|
feature ss04;
|
||||||
|
feature ss05;
|
||||||
|
feature ss07;
|
||||||
|
feature ss08;
|
||||||
|
feature ss09;
|
||||||
|
feature ss10;
|
||||||
|
feature ss11;
|
||||||
|
feature ss12;
|
||||||
|
feature subs;
|
||||||
|
feature sups;
|
||||||
|
feature smcp;
|
||||||
|
feature c2sc;
|
||||||
|
} aalt;
|
||||||
|
|
||||||
|
feature frac {
|
||||||
|
# GSUB feature: Fractions
|
||||||
|
lookup frac0 {
|
||||||
|
sub @Digit slash' @Digit by fraction;
|
||||||
|
} frac0;
|
||||||
|
|
||||||
|
lookup frac1 {
|
||||||
|
ignore sub @DigitAll @DigitAll fraction';
|
||||||
|
ignore sub fraction' @DigitAll @DigitAll;
|
||||||
|
sub @DigitAll fraction' @DigitAll by fraction.afrc;
|
||||||
|
} frac1;
|
||||||
|
|
||||||
|
lookup frac2 {
|
||||||
|
sub @Digit' fraction.afrc by @DigitNumerator;
|
||||||
|
sub fraction.afrc @Digit' by @DigitDenominator;
|
||||||
|
} frac2;
|
||||||
|
|
||||||
|
lookup frac3 {
|
||||||
|
sub one.num fraction.afrc two.den by onehalf;
|
||||||
|
sub one.num fraction.afrc three.den by onethird;
|
||||||
|
sub one.num fraction.afrc four.den by onequarter;
|
||||||
|
sub one.num fraction.afrc five.den by onefifth;
|
||||||
|
sub one.num fraction.afrc six.den by onesixth;
|
||||||
|
sub one.num fraction.afrc eight.den by oneeighth;
|
||||||
|
sub two.num fraction.afrc three.den by twothirds;
|
||||||
|
sub two.num fraction.afrc five.den by twofifths;
|
||||||
|
sub three.num fraction.afrc four.den by threequarters;
|
||||||
|
sub three.num fraction.afrc five.den by threefifths;
|
||||||
|
sub three.num fraction.afrc eight.den by threeeighths;
|
||||||
|
sub four.num fraction.afrc five.den by fourfifths;
|
||||||
|
sub five.num fraction.afrc six.den by fivesixths;
|
||||||
|
sub five.num fraction.afrc eight.den by fiveeighths;
|
||||||
|
sub seven.num fraction.afrc eight.den by seveneighths;
|
||||||
|
} frac3;
|
||||||
|
} frac;
|
||||||
|
|
||||||
|
feature numr {
|
||||||
|
# GSUB feature: Numerators
|
||||||
|
sub @Digit by @DigitNumerator;
|
||||||
|
} numr;
|
||||||
|
|
||||||
|
feature dnom {
|
||||||
|
# GSUB feature: Denominators
|
||||||
|
sub @Digit by @DigitDenominator;
|
||||||
|
} dnom;
|
||||||
|
|
||||||
|
feature sups {
|
||||||
|
# GSUB feature: Superscript
|
||||||
|
sub @Digit by @DigitSuperior;
|
||||||
|
} sups;
|
||||||
|
|
||||||
|
feature subs {
|
||||||
|
# GSUB feature: Subscript
|
||||||
|
sub @Digit by @DigitInferior;
|
||||||
|
} subs;
|
||||||
|
|
||||||
|
feature sinf {
|
||||||
|
# GSUB feature: Scientific Inferiors
|
||||||
|
sub @Digit by @DigitInferior;
|
||||||
|
} sinf;
|
||||||
|
|
||||||
|
feature ordn {
|
||||||
|
# Ordinals
|
||||||
|
sub @Digit [A a]' by ordfeminine;
|
||||||
|
sub @Digit [O o]' by ordmasculine;
|
||||||
|
sub N o period by numero;
|
||||||
|
} ordn;
|
||||||
|
|
||||||
|
feature smcp {
|
||||||
|
# Small Caps
|
||||||
|
sub @Digit by @DigitSmall;
|
||||||
|
} smcp;
|
||||||
|
|
||||||
|
feature c2sc {
|
||||||
|
# Capitals to Small Caps
|
||||||
|
sub @Digit by @DigitSmall;
|
||||||
|
} c2sc;
|
||||||
|
|
||||||
|
feature case {
|
||||||
|
# GSUB feature: Case-Sensitive Forms
|
||||||
|
sub guillemotleft by guillemotleft.cap;
|
||||||
|
sub guillemotright by guillemotright.cap;
|
||||||
|
sub guilsinglleft by guilsinglleft.cap;
|
||||||
|
sub guilsinglright by guilsinglright.cap;
|
||||||
|
sub parenleft by parenleft.cap;
|
||||||
|
sub parenright by parenright.cap;
|
||||||
|
sub bracketleft by bracketleft.cap;
|
||||||
|
sub bracketright by bracketright.cap;
|
||||||
|
sub braceleft by braceleft.cap;
|
||||||
|
sub braceright by braceright.cap;
|
||||||
|
} case;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
include(calt.fea);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
feature salt {
|
||||||
|
# GSUB feature: Stylistic Alternates
|
||||||
|
sub registered by registered.alt;
|
||||||
|
sub colon by colon.alt;
|
||||||
|
sub bullet by bullet.alt;
|
||||||
|
sub asterisk by asterisk.alt;
|
||||||
|
sub zero by zero.alt;
|
||||||
|
sub underscore by underscore.alt;
|
||||||
|
lookup salt {
|
||||||
|
# GSUB lookup 20, type 16 (Chaining Context)
|
||||||
|
sub @DigitAll slash' @DigitAll by fraction;
|
||||||
|
} salt;
|
||||||
|
} salt;
|
||||||
|
|
||||||
|
feature ss01 {
|
||||||
|
featureNames {
|
||||||
|
name "Large Registered Symbol";
|
||||||
|
};
|
||||||
|
sub registered by registered.alt;
|
||||||
|
} ss01;
|
||||||
|
|
||||||
|
feature ss03 {
|
||||||
|
featureNames {
|
||||||
|
name "Raised Colon";
|
||||||
|
};
|
||||||
|
sub colon by colon.alt;
|
||||||
|
} ss03;
|
||||||
|
|
||||||
|
feature ss04 {
|
||||||
|
featureNames {
|
||||||
|
name "Square Bullet";
|
||||||
|
};
|
||||||
|
sub bullet by bullet.alt;
|
||||||
|
} ss04;
|
||||||
|
|
||||||
|
feature ss05 {
|
||||||
|
featureNames {
|
||||||
|
name "Six-Pointed Asterisk";
|
||||||
|
};
|
||||||
|
sub asterisk by asterisk.alt;
|
||||||
|
} ss05;
|
||||||
|
|
||||||
|
feature ss07 {
|
||||||
|
featureNames {
|
||||||
|
name "Unslashed Zero";
|
||||||
|
};
|
||||||
|
sub zero by zero.alt;
|
||||||
|
} ss07;
|
||||||
|
|
||||||
|
feature ss08 {
|
||||||
|
featureNames {
|
||||||
|
name "Connected Underscore";
|
||||||
|
};
|
||||||
|
sub underscore by underscore.alt;
|
||||||
|
} ss08;
|
||||||
|
|
||||||
|
feature ss09 {
|
||||||
|
featureNames {
|
||||||
|
name "Fraction Bar";
|
||||||
|
};
|
||||||
|
sub @DigitAll slash' @DigitAll by fraction;
|
||||||
|
} ss09;
|
||||||
|
|
||||||
|
feature ss10 {
|
||||||
|
featureNames {
|
||||||
|
name "Hexidecimal Multiply Sign";
|
||||||
|
};
|
||||||
|
### 0xFF
|
||||||
|
sub [zero zero.alt] x' [@Digit @HexDigit] by multiply;
|
||||||
|
### 800x600
|
||||||
|
sub [@Digit zero.alt] x' [@Digit zero.alt] by multiply;
|
||||||
|
} ss10;
|
||||||
|
|
||||||
|
feature ss11 {
|
||||||
|
featureNames {
|
||||||
|
name "Equality Spaces";
|
||||||
|
};
|
||||||
|
sub equal_equal.liga by equal_equal.liga.ss11;
|
||||||
|
sub equal_equal_equal.liga by equal_equal_equal.liga.ss11;
|
||||||
|
} ss11;
|
||||||
|
|
||||||
|
feature ss12 {
|
||||||
|
featureNames {
|
||||||
|
name "Less-than/Greater-than Horizontal Bar";
|
||||||
|
};
|
||||||
|
sub less_equal.liga by less_equal.liga.ss12;
|
||||||
|
sub greater_equal.liga by greater_equal.liga.ss12;
|
||||||
|
} ss12;
|
||||||
|
|
||||||
|
feature rupa {
|
||||||
|
sub R p by R_p;
|
||||||
|
} rupa;
|
||||||
|
|
||||||
|
feature kern {
|
||||||
|
# GPOS feature: Kerning
|
||||||
|
lookup kern {
|
||||||
|
# GPOS lookup 1, type 2 (Pair adjustment)
|
||||||
|
pos fraction.afrc @DigitDenominator -625;
|
||||||
|
pos @DigitNumerator fraction.afrc -625;
|
||||||
|
} kern;
|
||||||
|
} kern;
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
const fs = require('fs')
|
||||||
|
const { createCanvas } = require('canvas')
|
||||||
|
|
||||||
|
const width = 64
|
||||||
|
const height = 48
|
||||||
|
const weight = 300
|
||||||
|
|
||||||
|
const map = {
|
||||||
|
ampersand: '&',
|
||||||
|
bar: '|',
|
||||||
|
colon: ':',
|
||||||
|
equal: '=',
|
||||||
|
exclam: '!',
|
||||||
|
greater: '>',
|
||||||
|
hyphen: '-',
|
||||||
|
less: '<',
|
||||||
|
plus: '+',
|
||||||
|
question: '?',
|
||||||
|
slash: '/',
|
||||||
|
underscore: '_',
|
||||||
|
w: 'w',
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateLigaturePreview(style, filename) {
|
||||||
|
const ligature = filename.split('.').slice(0, 1)[0]
|
||||||
|
const chars = ligature.split('_')
|
||||||
|
|
||||||
|
const text = chars.reduce((t, c) => t + map[c], '')
|
||||||
|
|
||||||
|
const canvas = createCanvas(width, height)
|
||||||
|
const context = canvas.getContext('2d')
|
||||||
|
|
||||||
|
context.fillStyle = '#000'
|
||||||
|
context.fillRect(0, 0, width, height)
|
||||||
|
|
||||||
|
context.font = `${weight} ${style} 18pt "Operator Mono SSm Lig"`
|
||||||
|
context.textAlign = 'center'
|
||||||
|
context.fillStyle = '#fff'
|
||||||
|
context.text = text
|
||||||
|
context.fillText(text, 32, 32)
|
||||||
|
|
||||||
|
const buffer = canvas.toBuffer('image/png')
|
||||||
|
console.log(ligature)
|
||||||
|
fs.writeFileSync(`./images/preview/${style}/${ligature}.png`, buffer)
|
||||||
|
|
||||||
|
return { text, ligature, filename: `${ligature}.png` }
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate(style, filenames) {
|
||||||
|
let html = `<html><head>
|
||||||
|
<style>
|
||||||
|
body { background-color: #000; color: #fff; font-family: sans-serif; margin: 16px;}
|
||||||
|
a { color: #fff; text-decoration: none; padding: 4px;}
|
||||||
|
a.active {color: #000; background-color: #fff;}
|
||||||
|
.container { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
|
||||||
|
.ligature { display: flex; flex-direction: column; align-items: center; margin: 8px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Operator Mono Ligatures</h1>
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/normal/index.html" class="${
|
||||||
|
style === 'normal' ? 'active' : ''
|
||||||
|
}">Normal</a> |
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/italic/index.html" class="${
|
||||||
|
style === 'italic' ? 'active' : ''
|
||||||
|
}">Italic</a>
|
||||||
|
<div class="container">
|
||||||
|
`
|
||||||
|
|
||||||
|
filenames.forEach(f => {
|
||||||
|
const { ligature, filename } = generateLigaturePreview(style, f)
|
||||||
|
html += `<div class="ligature"><img src="${filename}"/><div>${ligature}</div></div>`
|
||||||
|
})
|
||||||
|
|
||||||
|
html += `</div></body></html>`
|
||||||
|
|
||||||
|
fs.writeFileSync(`./images/preview/${style}/index.html`, html)
|
||||||
|
}
|
||||||
|
|
||||||
|
const filenames = fs
|
||||||
|
.readdirSync('./ligature/OperatorMonoSSmLig-Book/glyphs')
|
||||||
|
.filter(f => !!f.match(/[^\d]\.liga\.xml$/))
|
||||||
|
|
||||||
|
generate('normal', filenames)
|
||||||
|
generate('italic', filenames)
|
||||||
|
After Width: | Height: | Size: 166 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 612 B |
|
After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 423 B |
|
After Width: | Height: | Size: 439 B |
|
After Width: | Height: | Size: 293 B |
|
After Width: | Height: | Size: 338 B |
|
After Width: | Height: | Size: 566 B |
|
After Width: | Height: | Size: 564 B |
|
After Width: | Height: | Size: 828 B |
|
After Width: | Height: | Size: 677 B |
|
After Width: | Height: | Size: 731 B |
|
After Width: | Height: | Size: 506 B |
|
After Width: | Height: | Size: 771 B |
|
After Width: | Height: | Size: 691 B |
|
After Width: | Height: | Size: 740 B |
|
After Width: | Height: | Size: 849 B |
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 518 B |
|
After Width: | Height: | Size: 290 B |
|
After Width: | Height: | Size: 521 B |
@@ -0,0 +1,15 @@
|
|||||||
|
<html><head>
|
||||||
|
<style>
|
||||||
|
body { background-color: #000; color: #fff; font-family: sans-serif; margin: 16px;}
|
||||||
|
a { color: #fff; text-decoration: none; padding: 4px;}
|
||||||
|
a.active {color: #000; background-color: #fff;}
|
||||||
|
.container { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
|
||||||
|
.ligature { display: flex; flex-direction: column; align-items: center; margin: 8px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Operator Mono Ligatures</h1>
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/normal/index.html" class="">Normal</a> |
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/italic/index.html" class="active">Italic</a>
|
||||||
|
<div class="container">
|
||||||
|
<div class="ligature"><img src="ampersand_ampersand.png"/><div>ampersand_ampersand</div></div><div class="ligature"><img src="asterisk_equal.png"/><div>asterisk_equal</div></div><div class="ligature"><img src="bar_bar.png"/><div>bar_bar</div></div><div class="ligature"><img src="bar_greater.png"/><div>bar_greater</div></div><div class="ligature"><img src="colon_colon.png"/><div>colon_colon</div></div><div class="ligature"><img src="colon_equal.png"/><div>colon_equal</div></div><div class="ligature"><img src="equal_equal.png"/><div>equal_equal</div></div><div class="ligature"><img src="equal_equal_equal.png"/><div>equal_equal_equal</div></div><div class="ligature"><img src="equal_equal_greater.png"/><div>equal_equal_greater</div></div><div class="ligature"><img src="equal_greater.png"/><div>equal_greater</div></div><div class="ligature"><img src="equal_less_less.png"/><div>equal_less_less</div></div><div class="ligature"><img src="exclam_equal.png"/><div>exclam_equal</div></div><div class="ligature"><img src="exclam_equal_equal.png"/><div>exclam_equal_equal</div></div><div class="ligature"><img src="exclam_exclam.png"/><div>exclam_exclam</div></div><div class="ligature"><img src="greater_equal.png"/><div>greater_equal</div></div><div class="ligature"><img src="greater_equal_greater.png"/><div>greater_equal_greater</div></div><div class="ligature"><img src="greater_greater.png"/><div>greater_greater</div></div><div class="ligature"><img src="greater_greater_equal.png"/><div>greater_greater_equal</div></div><div class="ligature"><img src="hyphen_equal.png"/><div>hyphen_equal</div></div><div class="ligature"><img src="hyphen_greater.png"/><div>hyphen_greater</div></div><div class="ligature"><img src="hyphen_hyphen.png"/><div>hyphen_hyphen</div></div><div class="ligature"><img src="hyphen_hyphen_greater.png"/><div>hyphen_hyphen_greater</div></div><div class="ligature"><img src="less_bar.png"/><div>less_bar</div></div><div class="ligature"><img src="less_equal.png"/><div>less_equal</div></div><div class="ligature"><img src="less_equal_equal.png"/><div>less_equal_equal</div></div><div class="ligature"><img src="less_equal_greater.png"/><div>less_equal_greater</div></div><div class="ligature"><img src="less_equal_less.png"/><div>less_equal_less</div></div><div class="ligature"><img src="less_exclam_hyphen_hyphen.png"/><div>less_exclam_hyphen_hyphen</div></div><div class="ligature"><img src="less_hyphen.png"/><div>less_hyphen</div></div><div class="ligature"><img src="less_hyphen_greater.png"/><div>less_hyphen_greater</div></div><div class="ligature"><img src="less_hyphen_hyphen.png"/><div>less_hyphen_hyphen</div></div><div class="ligature"><img src="less_less.png"/><div>less_less</div></div><div class="ligature"><img src="less_less_equal.png"/><div>less_less_equal</div></div><div class="ligature"><img src="less_slash.png"/><div>less_slash</div></div><div class="ligature"><img src="less_slash_greater.png"/><div>less_slash_greater</div></div><div class="ligature"><img src="plus_equal.png"/><div>plus_equal</div></div><div class="ligature"><img src="plus_plus.png"/><div>plus_plus</div></div><div class="ligature"><img src="question_question.png"/><div>question_question</div></div><div class="ligature"><img src="quotedbl_quotedbl_quotedbl.png"/><div>quotedbl_quotedbl_quotedbl</div></div><div class="ligature"><img src="quotesingle_quotesingle_quotesingle.png"/><div>quotesingle_quotesingle_quotesingle</div></div><div class="ligature"><img src="semicolon_semicolon.png"/><div>semicolon_semicolon</div></div><div class="ligature"><img src="slash_equal.png"/><div>slash_equal</div></div><div class="ligature"><img src="slash_greater.png"/><div>slash_greater</div></div><div class="ligature"><img src="underscore_underscore.png"/><div>underscore_underscore</div></div><div class="ligature"><img src="w_w_w.png"/><div>w_w_w</div></div></div></body></html>
|
||||||
|
After Width: | Height: | Size: 799 B |
|
After Width: | Height: | Size: 775 B |
|
After Width: | Height: | Size: 571 B |
|
After Width: | Height: | Size: 798 B |
|
After Width: | Height: | Size: 692 B |
|
After Width: | Height: | Size: 737 B |
|
After Width: | Height: | Size: 529 B |
|
After Width: | Height: | Size: 754 B |
|
After Width: | Height: | Size: 527 B |
|
After Width: | Height: | Size: 714 B |
|
After Width: | Height: | Size: 861 B |
|
After Width: | Height: | Size: 795 B |
|
After Width: | Height: | Size: 998 B |
|
After Width: | Height: | Size: 484 B |
|
After Width: | Height: | Size: 497 B |
|
After Width: | Height: | Size: 760 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 633 B |
|
After Width: | Height: | Size: 791 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 678 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 283 B |
|
After Width: | Height: | Size: 646 B |
|
After Width: | Height: | Size: 408 B |
|
After Width: | Height: | Size: 374 B |
|
After Width: | Height: | Size: 281 B |
|
After Width: | Height: | Size: 320 B |
|
After Width: | Height: | Size: 571 B |
|
After Width: | Height: | Size: 579 B |
|
After Width: | Height: | Size: 867 B |
|
After Width: | Height: | Size: 656 B |
|
After Width: | Height: | Size: 733 B |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 712 B |
|
After Width: | Height: | Size: 690 B |
|
After Width: | Height: | Size: 725 B |
|
After Width: | Height: | Size: 865 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 527 B |
|
After Width: | Height: | Size: 277 B |
|
After Width: | Height: | Size: 523 B |
@@ -0,0 +1,15 @@
|
|||||||
|
<html><head>
|
||||||
|
<style>
|
||||||
|
body { background-color: #000; color: #fff; font-family: sans-serif; margin: 16px;}
|
||||||
|
a { color: #fff; text-decoration: none; padding: 4px;}
|
||||||
|
a.active {color: #000; background-color: #fff;}
|
||||||
|
.container { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
|
||||||
|
.ligature { display: flex; flex-direction: column; align-items: center; margin: 8px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Operator Mono Ligatures</h1>
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/normal/index.html" class="active">Normal</a> |
|
||||||
|
<a href="https://htmlpreview.github.io/?https://github.com/kiliman/operator-mono-lig/blob/master/images/preview/italic/index.html" class="">Italic</a>
|
||||||
|
<div class="container">
|
||||||
|
<div class="ligature"><img src="ampersand_ampersand.png"/><div>ampersand_ampersand</div></div><div class="ligature"><img src="asterisk_equal.png"/><div>asterisk_equal</div></div><div class="ligature"><img src="bar_bar.png"/><div>bar_bar</div></div><div class="ligature"><img src="bar_greater.png"/><div>bar_greater</div></div><div class="ligature"><img src="colon_colon.png"/><div>colon_colon</div></div><div class="ligature"><img src="colon_equal.png"/><div>colon_equal</div></div><div class="ligature"><img src="equal_equal.png"/><div>equal_equal</div></div><div class="ligature"><img src="equal_equal_equal.png"/><div>equal_equal_equal</div></div><div class="ligature"><img src="equal_equal_greater.png"/><div>equal_equal_greater</div></div><div class="ligature"><img src="equal_greater.png"/><div>equal_greater</div></div><div class="ligature"><img src="equal_less_less.png"/><div>equal_less_less</div></div><div class="ligature"><img src="exclam_equal.png"/><div>exclam_equal</div></div><div class="ligature"><img src="exclam_equal_equal.png"/><div>exclam_equal_equal</div></div><div class="ligature"><img src="exclam_exclam.png"/><div>exclam_exclam</div></div><div class="ligature"><img src="greater_equal.png"/><div>greater_equal</div></div><div class="ligature"><img src="greater_equal_greater.png"/><div>greater_equal_greater</div></div><div class="ligature"><img src="greater_greater.png"/><div>greater_greater</div></div><div class="ligature"><img src="greater_greater_equal.png"/><div>greater_greater_equal</div></div><div class="ligature"><img src="hyphen_equal.png"/><div>hyphen_equal</div></div><div class="ligature"><img src="hyphen_greater.png"/><div>hyphen_greater</div></div><div class="ligature"><img src="hyphen_hyphen.png"/><div>hyphen_hyphen</div></div><div class="ligature"><img src="hyphen_hyphen_greater.png"/><div>hyphen_hyphen_greater</div></div><div class="ligature"><img src="less_bar.png"/><div>less_bar</div></div><div class="ligature"><img src="less_equal.png"/><div>less_equal</div></div><div class="ligature"><img src="less_equal_equal.png"/><div>less_equal_equal</div></div><div class="ligature"><img src="less_equal_greater.png"/><div>less_equal_greater</div></div><div class="ligature"><img src="less_equal_less.png"/><div>less_equal_less</div></div><div class="ligature"><img src="less_exclam_hyphen_hyphen.png"/><div>less_exclam_hyphen_hyphen</div></div><div class="ligature"><img src="less_hyphen.png"/><div>less_hyphen</div></div><div class="ligature"><img src="less_hyphen_greater.png"/><div>less_hyphen_greater</div></div><div class="ligature"><img src="less_hyphen_hyphen.png"/><div>less_hyphen_hyphen</div></div><div class="ligature"><img src="less_less.png"/><div>less_less</div></div><div class="ligature"><img src="less_less_equal.png"/><div>less_less_equal</div></div><div class="ligature"><img src="less_slash.png"/><div>less_slash</div></div><div class="ligature"><img src="less_slash_greater.png"/><div>less_slash_greater</div></div><div class="ligature"><img src="plus_equal.png"/><div>plus_equal</div></div><div class="ligature"><img src="plus_plus.png"/><div>plus_plus</div></div><div class="ligature"><img src="question_question.png"/><div>question_question</div></div><div class="ligature"><img src="quotedbl_quotedbl_quotedbl.png"/><div>quotedbl_quotedbl_quotedbl</div></div><div class="ligature"><img src="quotesingle_quotesingle_quotesingle.png"/><div>quotesingle_quotesingle_quotesingle</div></div><div class="ligature"><img src="semicolon_semicolon.png"/><div>semicolon_semicolon</div></div><div class="ligature"><img src="slash_equal.png"/><div>slash_equal</div></div><div class="ligature"><img src="slash_greater.png"/><div>slash_greater</div></div><div class="ligature"><img src="underscore_underscore.png"/><div>underscore_underscore</div></div><div class="ligature"><img src="w_w_w.png"/><div>w_w_w</div></div></div></body></html>
|
||||||
|
After Width: | Height: | Size: 637 B |
|
After Width: | Height: | Size: 745 B |
|
After Width: | Height: | Size: 584 B |
|
After Width: | Height: | Size: 812 B |
|
After Width: | Height: | Size: 696 B |
|
After Width: | Height: | Size: 722 B |
|
After Width: | Height: | Size: 509 B |
|
After Width: | Height: | Size: 755 B |
|
After Width: | Height: | Size: 510 B |
|
After Width: | Height: | Size: 722 B |
|
After Width: | Height: | Size: 869 B |
|
After Width: | Height: | Size: 779 B |
|
After Width: | Height: | Size: 1010 B |
|
After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 348 B |
|
After Width: | Height: | Size: 763 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |