Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
@@ -66,6 +66,33 @@
|
||||
"contributions": [
|
||||
"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"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
es6: true,
|
||||
node: true
|
||||
node: true,
|
||||
},
|
||||
extends: 'eslint:recommended',
|
||||
extends: ['eslint:recommended', 'prettier'],
|
||||
parserOptions: {
|
||||
sourceType: 'module'
|
||||
sourceType: 'module',
|
||||
},
|
||||
rules: {
|
||||
indent: ['error', 2],
|
||||
'linebreak-style': ['error', 'unix'],
|
||||
quotes: ['error', 'single'],
|
||||
semi: ['error', 'always'],
|
||||
'no-console': 'off'
|
||||
}
|
||||
};
|
||||
'no-console': 'off',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@ node_modules
|
||||
.idea
|
||||
.vscode
|
||||
.DS_Store
|
||||
pnpm-lock.yaml
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"semi": true,
|
||||
"singleQuote": true
|
||||
"semi": false,
|
||||
"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/).
|
||||
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
|
||||
|
||||
<img src="./images/new-ligatures.png"/>
|
||||
@@ -20,6 +24,8 @@ characters properly.
|
||||
|
||||
<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
|
||||
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.
|
||||
- Python (v2.7+)
|
||||
- **NOTE**: For Mac, the default system Python v2.7 doesn't work. Make sure you install Python 3.
|
||||
- Node.js
|
||||
- Install _fonttools_ from https://github.com/fonttools/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
|
||||
|
||||
@@ -152,17 +161,22 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tr>
|
||||
<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>
|
||||
<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"><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"><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"><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"><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"><a href="https://github.com/kiliman"><img src="https://avatars3.githubusercontent.com/u/47168?v=4?s=100" width="100px;" alt=""/><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/mskelton"><img src="https://avatars3.githubusercontent.com/u/25914066?v=4?s=100" width="100px;" alt=""/><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/drod3763"><img src="https://avatars2.githubusercontent.com/u/7785716?v=4?s=100" width="100px;" alt=""/><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/amitkparekh"><img src="https://avatars3.githubusercontent.com/u/7276308?v=4?s=100" width="100px;" alt=""/><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/CandySunPlus"><img src="https://avatars0.githubusercontent.com/u/502700?v=4?s=100" width="100px;" alt=""/><br /><sub><b>NikSun</b></sub></a><br /><a href="#design-CandySunPlus" title="Design">🎨</a></td>
|
||||
<td align="center"><a href="https://github.com/Jakob6174"><img src="https://avatars3.githubusercontent.com/u/40262817?v=4?s=100" width="100px;" alt=""/><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"><a href="http://killua.me/"><img src="https://avatars.githubusercontent.com/u/457822?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Luigi</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=killua99" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/GlorifiedBicycle"><img src="https://avatars.githubusercontent.com/u/71753585?v=4?s=100" width="100px;" alt=""/><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>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-enable -->
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
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
|
||||
node index.js %otf% %flags%
|
||||
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
|
||||
|
||||
@@ -21,8 +21,12 @@ build_font() {
|
||||
node index.js "$otf" "$flags"
|
||||
|
||||
ttx -f "./build/$1.ttx"
|
||||
|
||||
fonttools feaLib -v -o "./build/$1.otf" ./features/default.fea "./build/$1.otf"
|
||||
if [[ $lig == *"SSm"* ]]; then
|
||||
fea="./features/defaultSSm.fea"
|
||||
else
|
||||
fea="./features/default.fea"
|
||||
fi
|
||||
fonttools feaLib -v -o "./build/$1.otf" $fea "./build/$1.otf"
|
||||
}
|
||||
|
||||
flags=
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const fs = require('fs')
|
||||
|
||||
const rules = [
|
||||
,
|
||||
'',
|
||||
`
|
||||
lookup 1 {
|
||||
sub 1 by glyph;
|
||||
@@ -30,37 +30,36 @@ lookup 1_2_3_4 {
|
||||
sub 1.spacer 2' 3 4 by 2.spacer;
|
||||
sub 1' 2 3 4 by 1.spacer;
|
||||
} 1_2_3_4;`,
|
||||
];
|
||||
]
|
||||
|
||||
const gencalt = (ligatures) => {
|
||||
let calt = 'feature calt {\n';
|
||||
const ligs = {};
|
||||
console.log(ligatures);
|
||||
const gencalt = ligatures => {
|
||||
let calt = 'feature calt {\n'
|
||||
const ligs = {}
|
||||
|
||||
ligatures
|
||||
.filter((l) => !!l.name.match(/\.liga$/) || l.name !== l.glyph)
|
||||
.map((l) => l.glyph)
|
||||
.filter(l => !!l.name.match(/\.liga$/) || l.name !== l.glyph)
|
||||
.map(l => l.glyph)
|
||||
.sort((a, b) => {
|
||||
const length = b.split('_').length - a.split('_').length;
|
||||
if (length !== 0) return length;
|
||||
return a < b ? -1 : 1;
|
||||
const length = b.split('_').length - a.split('_').length
|
||||
if (length !== 0) return length
|
||||
return a < b ? -1 : 1
|
||||
})
|
||||
.forEach((g) => {
|
||||
.forEach(g => {
|
||||
g.split('.')
|
||||
.slice(0, 1)
|
||||
.forEach((l) => {
|
||||
if (ligs[l]) return;
|
||||
ligs[l] = true;
|
||||
const c = l.split('_');
|
||||
let rule = rules[c.length];
|
||||
.forEach(l => {
|
||||
if (ligs[l]) return
|
||||
ligs[l] = true
|
||||
const c = l.split('_')
|
||||
let rule = rules[c.length]
|
||||
rule = rule
|
||||
.replace(/\d/g, (m) => c[parseInt(m) - 1])
|
||||
.replace(/glyph/g, g);
|
||||
calt += rule + '\n';
|
||||
});
|
||||
});
|
||||
.replace(/\d/g, m => c[parseInt(m) - 1])
|
||||
.replace(/glyph/g, g)
|
||||
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;
|
||||
|
||||
lookup lookup_0 {
|
||||
sub zero by zero.num;
|
||||
sub one by one.num;
|
||||
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;
|
||||
sub slash by fraction;
|
||||
sub fraction by fraction.afrc;
|
||||
} lookup_0;
|
||||
|
||||
lookup lookup_1 {
|
||||
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;
|
||||
|
||||
##############################
|
||||
# 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 {
|
||||
script latn;
|
||||
language CAT ;
|
||||
sub l' lookup lookup_2 periodcentered' lookup lookup_2 l ;
|
||||
sub L' lookup lookup_2 periodcentered' lookup lookup_2 L ;
|
||||
# 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 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 {
|
||||
sub zero by zero.num;
|
||||
sub one by one.num;
|
||||
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;
|
||||
# GSUB feature: Numerators
|
||||
sub @Digit by @DigitNumerator;
|
||||
} numr;
|
||||
|
||||
feature rupa {
|
||||
sub R p by R_p;
|
||||
} rupa;
|
||||
feature dnom {
|
||||
# GSUB feature: Denominators
|
||||
sub @Digit by @DigitDenominator;
|
||||
} dnom;
|
||||
|
||||
feature ss01 {
|
||||
sub registered by registered.alt;
|
||||
} ss01;
|
||||
feature sups {
|
||||
# GSUB feature: Superscript
|
||||
sub @Digit by @DigitSuperior;
|
||||
} sups;
|
||||
|
||||
feature salt {
|
||||
lookup salt0 {
|
||||
sub registered by registered.alt;
|
||||
} salt0;
|
||||
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 subs {
|
||||
# GSUB feature: Subscript
|
||||
sub @Digit by @DigitInferior;
|
||||
} subs;
|
||||
|
||||
feature sinf {
|
||||
sub zero by zero.inf;
|
||||
sub one by one.inf;
|
||||
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;
|
||||
# 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 {
|
||||
sub colon by colon.alt;
|
||||
featureNames {
|
||||
name "Raised Colon";
|
||||
};
|
||||
sub colon by colon.alt;
|
||||
} ss03;
|
||||
|
||||
feature ss04 {
|
||||
sub bullet by bullet.alt;
|
||||
featureNames {
|
||||
name "Square Bullet";
|
||||
};
|
||||
sub bullet by bullet.alt;
|
||||
} ss04;
|
||||
|
||||
feature ss05 {
|
||||
sub asterisk by asterisk.alt;
|
||||
featureNames {
|
||||
name "Six-Pointed Asterisk";
|
||||
};
|
||||
sub asterisk by asterisk.alt;
|
||||
} ss05;
|
||||
|
||||
feature ss07 {
|
||||
sub zero by zero.alt;
|
||||
featureNames {
|
||||
name "Unslashed Zero";
|
||||
};
|
||||
sub zero by zero.alt;
|
||||
} ss07;
|
||||
|
||||
feature ss08 {
|
||||
sub underscore by underscore.alt;
|
||||
featureNames {
|
||||
name "Connected Underscore";
|
||||
};
|
||||
sub underscore by underscore.alt;
|
||||
} ss08;
|
||||
|
||||
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;
|
||||
|
||||
feature subs {
|
||||
sub zero by zero.inf;
|
||||
sub one by one.inf;
|
||||
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;
|
||||
} subs;
|
||||
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 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 -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 |