23 Commits

Author SHA1 Message Date
kiliman 10dd25fd26 🚀 Deploy v2.5.0 2023-12-21 10:40:52 -06:00
kiliman 135f6eb156 🖼️ Update ligature preview images 2023-12-21 10:40:39 -06:00
kiliman 4499ba4809 📦 Add canvas dependency 2023-12-21 10:25:47 -06:00
Jakob Pearson fff435748f Merge remote-tracking branch 'kiliman/master' (#185)
* OperatorMonoSSm (Light, Book, Medium, Bold)
New Ligatures:
    - colon_colon
    - exclam_exclam
    - semicolon_semicolon
    - less_less
    - greater_greater
    - hyphen_equal (minus_equal)
    - asterisk_equal
    - slash_equal
    - less_slash_greater
    - less_less_equal
    - quotedbl_quotedbl_quotedbl
    - quotesingle_quotesingle_quotesingle
New Powerline Glyhps:
    - E0A1 (Powerline LN)
    - E0A2 (Powerline lock)
    - E0B1 (Powerline left soft divider)
    - E0B3 (Powerline right soft divider)

Features:
    - ss10 can be used to substitute 'x' for '×'. Eg 0×FF or 800×600
    - 'Equality Spaces' and 'Less-than/Greater-than Horizontal Bar' alternatives are included
    by default, and can be activated via ss11 and ss12 respectively.
    - Corrected and simplified features code to include the missing 'kern' feature for
    fraction numerator and denominator positioning.
    - 'calt.js' will also generate the 'liga' feature.

Edited and repositioned some existing glyphs to be more consistent across font weights.
Created missing glyphs for other weights. Eg 'w_w_w.liga' and 'plus_equal.liga'

* 'calt.js' no longer generates the 'liga' feature.

* Adjusted hinting, no contours changed.
2023-12-21 11:21:24 -05:00
Michael Carter eec76d8792 📝 Update instructions for Mac installs 2022-09-14 12:11:11 -05:00
Kiliman 7a86cd065f 🚀 Deploy v2.4.2
Bumped version due to package.lock.json issue
2022-02-18 09:49:32 -05:00
kiliman 834a086e09 📦 Update xml-formatter package and refresh package lock
Fixes #178
2022-02-13 16:38:04 -05:00
kiliman 298723b87e 🐛 Fix typo in all-contributors for @killua 2021-10-18 10:19:10 -04:00
kiliman 0956c0e569 😍 Add @killua99 as a contributor 2021-10-18 10:19:10 -04:00
kiliman 30ef51ace3 😍 Add @GlorifiedBicycle as a contributor 2021-10-18 10:13:26 -04:00
kiliman 8aa2677ffc 😍 Add @kilua99 as a contributor 2021-10-18 10:12:34 -04:00
Reland Boyle 5c25311fdf Added note regardign installing FontTools under WSL/WSL2 (#174) 2021-10-18 10:12:07 -04:00
Luigi a55ef07837 📝 Improve readme installation for Windows (#167) 2021-05-25 14:56:08 -04:00
dependabot[bot] 09bbb2bb76 Bump xmldom from 0.1.27 to 0.5.0 (#163)
Bumps [xmldom](https://github.com/xmldom/xmldom) from 0.1.27 to 0.5.0.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/v0.1.27...0.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-13 17:23:50 -06:00
kiliman 4ff7dbde28 🚀 Deploy v2.4.1 2020-12-18 09:35:06 -05:00
kiliman 0d7089f840 💄 Reformat with prettier 2020-12-18 09:33:55 -05:00
kiliman 8a32259fdc 🐛 Fix italic ligatures slanting wrong direction #160 2020-12-18 09:33:34 -05:00
kiliman ee481cc744 🐛 Fix links in generated preview file 2020-12-13 14:42:12 -05:00
kiliman 196e13856c 🔨 Add link to preview HTML using htmlpreview.github.io 2020-12-13 14:39:14 -05:00
kiliman 2029e07965 🔥 Remove link to preview in README due to broken display on GitHub 2020-12-13 13:08:41 -05:00
kiliman 4955c58098 Add preview images and update README 2020-12-13 13:05:08 -05:00
kiliman c63a5b0abb Add script to generate preview images of ligatures (normal and italic) 2020-12-13 13:04:42 -05:00
kiliman 8f7db7bc4c 📦 Add prettier and update eslint config 2020-12-13 13:03:12 -05:00
808 changed files with 9924 additions and 13827 deletions
+27
View File
@@ -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
+6 -9
View File
@@ -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',
},
}
+1
View File
@@ -3,3 +3,4 @@ node_modules
.idea
.vscode
.DS_Store
pnpm-lock.yaml
+4 -2
View File
@@ -1,4 +1,6 @@
{
"semi": true,
"singleQuote": true
"semi": false,
"singleQuote": true,
"trailingComma": "all",
"arrowParens": "avoid"
}
+22 -8
View File
@@ -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!
+8 -1
View File
@@ -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
+6 -2
View File
@@ -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=
+25 -26
View File
@@ -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
+202 -180
View File
@@ -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);
+252
View File
@@ -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;
+85
View File
@@ -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)
Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

+15
View File
@@ -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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

+15
View File
@@ -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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Some files were not shown because too many files have changed in this diff Show More