mirror of
https://github.com/kiliman/operator-mono-lig.git
synced 2026-08-12 18:30:57 +02:00
Compare commits
71 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e50610989 | |||
| 009dac1619 | |||
| 43d7f44527 | |||
| 9abc800918 | |||
| 10027973d8 | |||
| a9b6b1305d | |||
| 85cdb5c0a4 | |||
| 22d1a4d16d | |||
| 59466b8dfa | |||
| 2ed7ab50b3 | |||
| 37caa3ddea | |||
| b70accff53 | |||
| da7425fbe9 | |||
| 2282dd3d5d | |||
| d7e18a4962 | |||
| d71b04356a | |||
| 651edc2b62 | |||
| 02818d15a9 | |||
| 5c9a5d51a8 | |||
| fc180099b8 | |||
| 1f5712ecae | |||
| 2cbf9d84cb | |||
| d1c8620f6d | |||
| 0f10f62920 | |||
| fd4b980b7c | |||
| 286e5f0820 | |||
| 6e66c37704 | |||
| ad3050a731 | |||
| da1abf02c6 | |||
| 3a03d21c90 | |||
| 05bc5eaa4e | |||
| 03114bf88d | |||
| 83f9a6d170 | |||
| f0a883ee62 | |||
| 6e3415763c | |||
| 2bdf134f70 | |||
| edbbc78b82 | |||
| 4edf9bc945 | |||
| 538de4ad67 | |||
| 3550ee0bb1 | |||
| 65b938fdc1 | |||
| c5112089cb | |||
| 22ebd8aab7 | |||
| fe530d1ea9 | |||
| 19727aecc5 | |||
| 7a3be9b579 | |||
| 371be6a082 | |||
| 86b1d66f15 | |||
| 5538ffe2b5 | |||
| 360402a197 | |||
| f7cafe55b3 | |||
| 9cef42b1fb | |||
| 8360f4ad81 | |||
| 73f188856f | |||
| d2c63ad1ca | |||
| 0a7eca61d4 | |||
| fc8827e17c | |||
| 150ed13829 | |||
| 502f445758 | |||
| d3c5604090 | |||
| 61cfbf075d | |||
| 28eb8b58e5 | |||
| 91c4421765 | |||
| 3ed59809de | |||
| 660c719779 | |||
| 610140f1de | |||
| b6f785bfc7 | |||
| bc46df5f1c | |||
| 5f13b9c918 | |||
| 9398884dc6 | |||
| 036e837e0c |
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"projectName": "operator-mono-lig",
|
||||
"projectOwner": "kiliman",
|
||||
"repoType": "github",
|
||||
"repoHost": "https://github.com",
|
||||
"files": [
|
||||
"README.md"
|
||||
],
|
||||
"imageSize": 100,
|
||||
"commit": true,
|
||||
"commitConvention": "none",
|
||||
"contributors": [
|
||||
{
|
||||
"login": "kiliman",
|
||||
"name": "Kiliman",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/47168?v=4",
|
||||
"profile": "https://github.com/kiliman",
|
||||
"contributions": [
|
||||
"code",
|
||||
"doc",
|
||||
"design"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "markypython",
|
||||
"name": "Mark Skelton",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/25914066?v=4",
|
||||
"profile": "https://github.com/markypython",
|
||||
"contributions": [
|
||||
"design"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "drod3763",
|
||||
"name": "Derick Rodriguez",
|
||||
"avatar_url": "https://avatars2.githubusercontent.com/u/7785716?v=4",
|
||||
"profile": "https://github.com/drod3763",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
es6: true,
|
||||
node: true
|
||||
},
|
||||
extends: 'eslint:recommended',
|
||||
parserOptions: {
|
||||
sourceType: 'module'
|
||||
},
|
||||
rules: {
|
||||
indent: ['error', 2],
|
||||
'linebreak-style': ['error', 'unix'],
|
||||
quotes: ['error', 'single'],
|
||||
semi: ['error', 'always'],
|
||||
'no-console': 'off'
|
||||
}
|
||||
};
|
||||
@@ -1,12 +1,96 @@
|
||||
# Operator Mono Ligatures
|
||||
|
||||
[](#contributors-)
|
||||
|
||||
<img src="./images/operator-mono-lig.png" />
|
||||
|
||||
This project will generate new OpenType fonts for [Operator Mono](https://www.typography.com/fonts/operator/styles/) that includes ligatures similar to
|
||||
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.
|
||||
These ligatures were custom created using [Glyphs](https://glyphsapp.com/).
|
||||
There are even italic versions of the ligatures.
|
||||
|
||||
## Take the poll
|
||||
## New Version 2.2.5
|
||||
|
||||
All new redesigned ligatures with better hinting. Updated font generation to support advanced OpenType features
|
||||
like those found in Fira Code. For example, the cursor now moves inside the ligature. It also handles repeating
|
||||
characters properly.
|
||||
|
||||
<img src="./images/caret-position.gif" />
|
||||
|
||||
### 🎉 New in Version 2.2
|
||||
|
||||
With the awesome help from [Mark Skelton](https://github.com/markypython), 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.
|
||||
|
||||
- Operator Mono SSm Light/Light Italic
|
||||
- Operator Mono SSm Book/Book Italic
|
||||
- Operator Mono SSm Medium/Medium Italic
|
||||
- Operator Mono SSm Bold/Bold Italic
|
||||
- Operator Mono Light/Light Italic
|
||||
- Operator Mono Book/Book Italic
|
||||
|
||||
### 🐛 Fixed in Version 2.2.5
|
||||
|
||||
Add Operator Mono Book/Book Italic ligatures.
|
||||
|
||||
### 🐛 Fixed in Version 2.2.4
|
||||
|
||||
Add some missing ligatures.
|
||||
|
||||
### 🐛 Fixed in Version 2.2.3
|
||||
|
||||
Updated Operator Mono SSm Book Italic ligatures.
|
||||
|
||||
### 🐛 Fixed in Version 2.2.2
|
||||
|
||||
Fixed glyph widths Operator Mono Light and Light Italic. These fonts accidentally were sized
|
||||
the same as the ScreenSmart versions and caused alignment issues. Also fixed a few ligatures
|
||||
that didn't have the correct weight.
|
||||
|
||||
### 🔧 Customize the generated font
|
||||
|
||||
In addition to the new ligatures, this version now allows you to customize what ligatures are added to a font.
|
||||
By default, all available ligatures will be added to the generated font. However, if you don't like a particular
|
||||
ligature, or would prefer to use an alternate glyph, you can create a `profiles.ini` file in the `./original` folder
|
||||
to configure how the font should be built.
|
||||
|
||||
You can create one or more profiles. Each profile will have a set of directives. You can specify alternate glyphs for
|
||||
a given ligature. You can also prevent a ligature from being added.
|
||||
|
||||
Each profile will be listed with `[profile name]` (the first profile should be named default). The generated font will
|
||||
include the profile name. For example `[Go]` would generate the font: _Operator Mono Lig Go_. This way you can configure
|
||||
a different set of ligatures for each language in your favorite code editor.
|
||||
|
||||
```ini
|
||||
# name of profile (one or more sections, first should be name default)
|
||||
[default]
|
||||
# glyph=altglyph
|
||||
greater_equal.liga=greater_equal.2.liga
|
||||
|
||||
# do not include glyph (add ! prefix)
|
||||
!equal_equal.liga
|
||||
|
||||
# another optional section (will create a font named Operator Mono Lig Go)
|
||||
[Go]
|
||||
... add custom directives for this font ...
|
||||
```
|
||||
|
||||
### New ligatures
|
||||
|
||||
In addition to the graphic above, the following new ligatures are available:
|
||||
<img src="./images/new-ligatures.png"/>
|
||||
|
||||
### 🙏 Help Wanted
|
||||
|
||||
As noted above, v2.0 only includes ligatures for **Operator Mono SSm Book**. In order to
|
||||
update the other fonts, all the ligatures need to be redone. Unfortunately I just don't
|
||||
have the time to do that at the moment. If you have a Mac and are interested in helping,
|
||||
please let me know. I will even purchase a license to Gylphs Mini for you.
|
||||
|
||||
You can reach me at kiliman@gmail.com.
|
||||
|
||||
## ☑️ Take the poll
|
||||
|
||||
Which font weight of Operator Mono do you use? Also note difference between Screen Smart (SSm) and regular version. This will help prioritize the order of development.
|
||||
|
||||
@@ -17,51 +101,21 @@ Which font weight of Operator Mono do you use? Also note difference between Scre
|
||||
[](https://api.gh-polls.com/poll/01C6T4C3FBG21KVS7FAW7Z09B2/Operator%20Mono%20Medium/vote)
|
||||
[](https://api.gh-polls.com/poll/01C6T4C3FBG21KVS7FAW7Z09B2/Operator%20Mono%20Light/vote)
|
||||
|
||||
I have updated the following fonts:
|
||||
|
||||
## ScreenSmart versions
|
||||
* Operator Mono SSm Book
|
||||
* Operator Mono SSm Book Italic
|
||||
* Operator Mono SSm Medium
|
||||
* Operator Mono SSm Medium Italic
|
||||
* Operator Mono SSm Light
|
||||
* Operator Mono SSm Light Italic (**coming soon**)
|
||||
|
||||
## Regular versions
|
||||
* Operator Mono Book
|
||||
* Operator Mono Book Italic
|
||||
* Operator Mono Medium
|
||||
* Operator Mono Medium Italic
|
||||
|
||||
**Operator Mono SSm Book**
|
||||
|
||||
<img src="./images/operator-mono-ssm-book.png" />
|
||||
|
||||
**Operator Mono SSm Medium**
|
||||
|
||||
<img src="./images/operator-mono-ssm-medium.png" />
|
||||
|
||||
**Creating ligatures using Glyphs**
|
||||
|
||||
<img src="./images/glyphs-screenshot.png" />
|
||||
|
||||
**YouTube video (click to view)**
|
||||
|
||||
[](https://youtu.be/ttI3W5Dh54E)
|
||||
|
||||
>NOTE: Because *Operator Mono* is not a free font, you must have the original font files. This utility
|
||||
will merge the ligature definitions into a copy of the original font. The new font family is named *Operator Mono Lig* so you can install it side-by-side with the original font.
|
||||
> NOTE: Because _Operator Mono_ is not a free font, you must have the original font files. This utility
|
||||
> will merge the ligature definitions into a copy of the original font. The new font family is named _Operator Mono Lig_ so you can install it side-by-side with the original font.
|
||||
|
||||
## Prerequisites
|
||||
* The original *Operator Mono* font... of course.
|
||||
* Install *fonttools* from https://github.com/fonttools/fonttools
|
||||
* Install Python
|
||||
* Run: `pip install fonttools` (for Mac users it's better run `pip3 install fonttools` - [info](https://stackoverflow.com/a/33416270/3191011))
|
||||
* Node.js (**version 7.6+ for async/await support**)
|
||||
|
||||
## How to Install
|
||||
- The original _Operator Mono_ font... of course.
|
||||
- Install _fonttools_ from https://github.com/fonttools/fonttools
|
||||
- Install Python (v2.7+)
|
||||
- Run: `pip install fonttools`
|
||||
- for Mac users it's better to run `pip3 install fonttools` - [info](https://stackoverflow.com/a/33416270/3191011)
|
||||
- Node.js
|
||||
|
||||
1. Once all the prerequisites have been installed, clone this repo.
|
||||
## 🛠 How to Install
|
||||
|
||||
1. Once all the prerequisites have been installed, clone this repo. Or download latest release from [Releases](https://github.com/kiliman/operator-mono-lig/releases) and unzip.
|
||||
|
||||
2. From the command line, run:
|
||||
|
||||
@@ -69,8 +123,14 @@ will merge the ligature definitions into a copy of the original font. The new fo
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Copy your *Operator Mono* OpenType files into the `original` folder.
|
||||
- **NOTE**: File names must strictly be of the form `OperatorMono-[Book/BookItalic/Medium/MediumItalic].otf`.
|
||||
3. Copy your _Operator Mono_ OpenType files into the `original` folder.
|
||||
|
||||
- **NOTE**: Filenames must not include spaces. It should look like:
|
||||
- OperatorMonoSSm-Book.otf
|
||||
- OperatorMonoSSm-BookItalic.otf
|
||||
- OperatorMono-Light.otf
|
||||
- OperatorMono-LightItalic.otf
|
||||
- etc.
|
||||
|
||||
4. From the command line, run:
|
||||
|
||||
@@ -88,30 +148,62 @@ build
|
||||
|
||||
This will generate the new font files in the `build` folder. You can now install these fonts on your system.
|
||||
|
||||
---
|
||||
### Docker
|
||||
|
||||
<img src="./images/OperatorMonoAllTheThings.png" />
|
||||
If you use Docker, you can also use the executable Docker image [here](https://github.com/drod3763/kiliman-operator-mono-lig-docker). It handles all the prerequisite installation for you, you just need to:
|
||||
|
||||
## GitHub
|
||||
Add *Operator Mono* to GitHub code blocks using the [Stylus Extension](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne).
|
||||
1. Clone the repo located at [https://github.com/drod3763/kiliman-operator-mono-lig-docker].
|
||||
|
||||
Create a style and enter the following:
|
||||
2. Copy your _Operator Mono_ OpenType files into the `input` folder.
|
||||
|
||||
3. From the command line run:
|
||||
|
||||
```css
|
||||
.blob-code-inner, .blob-num, .highlight pre { font-family: "Operator Mono Lig" !important; font-size: 16px !important; }
|
||||
.pl-c, .pl-e { font-style: italic; }
|
||||
.pl-c { color: #4CAF50; }
|
||||
```
|
||||
<img src="./images/github-operatormono.png" />
|
||||
docker-compose run --rm operator-mono-lig
|
||||
```
|
||||
|
||||
## Visual Studio
|
||||
The image will build and execute the conversion. The new font files will be generated into the `output` folder.
|
||||
|
||||
You can have Visual Studio display the nice *Operator Mono* italic font for comments, using the [CommentsPlus Extension](https://marketplace.visualstudio.com/items?itemName=mhoumann.CommentsPlus).
|
||||
## Configure Your Code Editor
|
||||
|
||||
<img src="./images/vsoperatormono.png" />
|
||||
You can now select the newly generated font in your code editor. Make sure you enable font ligatures.
|
||||
|
||||
## Hyper shell
|
||||
### VS Code
|
||||
|
||||
Add *Operator Mono* to [Hyper](https://hyper.is/) a JS/CSS/HTML Terminal.
|
||||
```json
|
||||
"editor.fontFamily": "OperatorMonoSSmLig-Book",
|
||||
"editor.fontLigatures": true,
|
||||
// for Windows
|
||||
"editor.fontFamily": "Operator Mono SSm Lig",
|
||||
"editor.fontLigatures": true,
|
||||
"editor.fontWeight": "500", // adjust for desired weight
|
||||
```
|
||||
|
||||
<img src="./images/hyper terminal.png" />
|
||||
## 😍 Thank You
|
||||
|
||||
Thanks to Hoefler&Co for making such an amazing font. It makes writing code truly pleasurable.
|
||||
|
||||
Thanks also to all of you for your kinds words of encouragement and feedback. I really
|
||||
appreciate it.
|
||||
|
||||
## ✨ Contributors
|
||||
|
||||
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- 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/markypython"><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-markypython" 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>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-enable -->
|
||||
<!-- 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!
|
||||
|
||||
@@ -19,7 +19,7 @@ set lig=%1
|
||||
set otf=%lig:Lig-=-%
|
||||
|
||||
if not exist .\original\%otf%.otf exit /b
|
||||
if not exist .\ligature\%lig%\charstrings.xml exit /b
|
||||
if not exist .\ligature\%lig%\glyphs\* exit /b
|
||||
|
||||
@echo Building %lig%
|
||||
ttx -f .\original\%otf%.otf
|
||||
|
||||
@@ -10,7 +10,7 @@ build_font() {
|
||||
then
|
||||
return
|
||||
fi
|
||||
if [ ! -e "./ligature/$lig/charstrings.xml" ]
|
||||
if [ ! -e "./ligature/$lig/glyphs" ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
+174
-58
@@ -1,38 +1,64 @@
|
||||
const Promise = require('bluebird');
|
||||
const fs = Promise.promisifyAll(require('fs'));
|
||||
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
if (!os.EOL) {
|
||||
os.EOL = process.platform === 'win32' ? '\r\n' : '\n';
|
||||
}
|
||||
const xpath = require('xpath');
|
||||
const { DOMParser, XMLSerializer } = require('xmldom');
|
||||
const format = require('xml-formatter');
|
||||
const hash = require('hash.js');
|
||||
|
||||
let fontName;
|
||||
|
||||
const regEx = /\.liga$/;
|
||||
const regExBlankLines = /^(?=\n)$|^\s*/gm;
|
||||
const regExWhitespace = /^\s+$/;
|
||||
const NodeType = {};
|
||||
NodeType.TEXT_NODE = 3;
|
||||
|
||||
async function main() {
|
||||
function main() {
|
||||
fontName = process.argv[2];
|
||||
|
||||
const glyphsRegEx = getGlyphsRegEx('./ligature_source/glyphs');
|
||||
const srcFileName = `./ligature_source/${fontName}.ttx`;
|
||||
|
||||
const folder = `./ligature/${fontName}`;
|
||||
const fileName = `./${folder}/names.json`;
|
||||
if (!fs.existsSync(fileName)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
console.log(`Reading file ${srcFileName}`);
|
||||
const xml = await fs.readFileAsync(srcFileName, 'utf-8');
|
||||
const xml = fs.readFileSync(srcFileName, 'utf-8');
|
||||
const dom = new DOMParser().parseFromString(xml);
|
||||
|
||||
await extractAndWrite('charstrings', extractCharStrings, dom);
|
||||
await extractAndWrite('config', extractConfig, dom);
|
||||
await extractAndWrite('gpos', extractGpos, dom);
|
||||
await extractAndWrite('gsub', extractGsub, dom);
|
||||
await extractAndWrite('hmtx', extractHmtx, dom);
|
||||
await extractAndWrite('subrs', extractSubrs, dom);
|
||||
await extractAndWrite('gsubrs', extractGlobalSubrs, dom);
|
||||
extractAndWrite('config', extractConfig, dom);
|
||||
|
||||
extractCharStrings(dom, glyphsRegEx);
|
||||
|
||||
extractAndWrite('subrs', extractSubrs, dom);
|
||||
extractAndWrite('gsubrs', extractGlobalSubrs, dom);
|
||||
|
||||
console.log('Done');
|
||||
}
|
||||
|
||||
async function extractAndWrite(name, func, dom) {
|
||||
function getGlyphsRegEx(path) {
|
||||
const glyphs = fs.readFileSync(path, 'utf-8');
|
||||
const patterns = ['LIG'];
|
||||
|
||||
glyphs
|
||||
.split(os.EOL)
|
||||
.filter(line => line.length > 0)
|
||||
.forEach(line => {
|
||||
const pattern = line
|
||||
.replace(/\s*#.*/, '')
|
||||
.replace(/[.]/g, '\\.')
|
||||
.replace(/[*]/g, '.*');
|
||||
if (pattern.length) {
|
||||
patterns.push(pattern);
|
||||
}
|
||||
});
|
||||
return new RegExp(`^(${patterns.join('|')})$`);
|
||||
}
|
||||
|
||||
function extractAndWrite(name, func, dom) {
|
||||
const newDom = func(dom);
|
||||
console.log('Finished extracting ' + name);
|
||||
|
||||
@@ -41,30 +67,23 @@ async function extractAndWrite(name, func, dom) {
|
||||
if (!fs.existsSync(folder)) {
|
||||
fs.mkdirSync(folder);
|
||||
}
|
||||
await fs.writeFileAsync(fileName, format(serialize(newDom)));
|
||||
fs.writeFileSync(fileName, format(serialize(newDom)));
|
||||
console.log('Finished writing ' + name);
|
||||
}
|
||||
|
||||
const serialize = dom =>
|
||||
new XMLSerializer().serializeToString(dom, false, node => {
|
||||
if (node.nodeType === NodeType.TEXT_NODE) {
|
||||
if (regExWhitespace.test(node.data)) return null;
|
||||
const data = node.data
|
||||
.split('\r\n')
|
||||
.filter(s => /\S+/.test(s))
|
||||
.map(s => s.replace(/^\s+/g, ''))
|
||||
.join('\n');
|
||||
|
||||
return node.ownerDocument.createTextNode(data);
|
||||
}
|
||||
return node;
|
||||
});
|
||||
//const dump = dom => console.log(serialize(dom));
|
||||
const serialize = dom => new XMLSerializer().serializeToString(dom);
|
||||
|
||||
const extractConfig = dom => {
|
||||
const newDom = new DOMParser().parseFromString('<ttFont/>');
|
||||
const head = xpath.select('/ttFont/head', dom, true);
|
||||
const hhea = xpath.select('/ttFont/hhea', dom, true);
|
||||
|
||||
// remove elements that change after each save
|
||||
// but we don't care about
|
||||
head.removeChild(xpath.select('checkSumAdjustment', head, true));
|
||||
head.removeChild(xpath.select('created', head, true));
|
||||
head.removeChild(xpath.select('modified', head, true));
|
||||
|
||||
const bbox = extractFromPath('/ttFont/CFF/CFFFont/FontBBox', dom);
|
||||
const widthX = extractFromPath(
|
||||
'/ttFont/CFF/CFFFont/Private/nominalWidthX',
|
||||
@@ -92,39 +111,136 @@ const extractFromPath = (path, dom) => {
|
||||
return newDom.documentElement;
|
||||
};
|
||||
|
||||
const extractGpos = dom => {
|
||||
const gpos = xpath.select('/ttFont/GPOS', dom, true);
|
||||
return gpos;
|
||||
};
|
||||
|
||||
const extractGsub = dom => {
|
||||
const gsub = xpath.select('/ttFont/GSUB', dom, true);
|
||||
return gsub;
|
||||
};
|
||||
|
||||
const extractHmtx = dom => {
|
||||
const newDom = new DOMParser().parseFromString('<hmtx/>');
|
||||
const mtx = xpath.select('/ttFont/hmtx/mtx', dom);
|
||||
|
||||
mtx
|
||||
.filter(node => regEx.test(node.getAttribute('name')))
|
||||
.forEach(node => newDom.documentElement.appendChild(node));
|
||||
|
||||
return newDom;
|
||||
};
|
||||
|
||||
const extractCharStrings = dom => {
|
||||
const newDom = new DOMParser().parseFromString('<CharStrings/>');
|
||||
const extractCharStrings = (dom, glyphsRegEx) => {
|
||||
const charStrings = xpath.select(
|
||||
'/ttFont/CFF/CFFFont/CharStrings/CharString',
|
||||
dom
|
||||
);
|
||||
|
||||
charStrings
|
||||
.filter(node => regEx.test(node.getAttribute('name')))
|
||||
.forEach(node => newDom.documentElement.appendChild(node));
|
||||
.filter(node => glyphsRegEx.test(node.getAttribute('name')))
|
||||
.forEach(node => writeGlyphData(dom, node));
|
||||
console.log('Finished writing charstrings');
|
||||
};
|
||||
|
||||
return newDom;
|
||||
const writeGlyphData = (dom, node) => {
|
||||
const newDom = new DOMParser().parseFromString('<Glyph/>').documentElement;
|
||||
const name = node.getAttribute('name');
|
||||
newDom.setAttribute('name', name);
|
||||
|
||||
// get map and set code
|
||||
const map = xpath.select(
|
||||
`/ttFont/cmap/cmap_format_4/map[@name="${name}"]`,
|
||||
dom,
|
||||
true
|
||||
);
|
||||
if (map) {
|
||||
newDom.setAttribute('code', map.getAttribute('code'));
|
||||
}
|
||||
|
||||
// get mtx
|
||||
const mtx = xpath.select(`/ttFont/hmtx/mtx[@name="${name}"]`, dom, true);
|
||||
newDom.setAttribute('lsb', mtx.getAttribute('lsb'));
|
||||
newDom.setAttribute('width', mtx.getAttribute('width'));
|
||||
|
||||
const charStringDom = dom.createElement('CharString');
|
||||
|
||||
const subrsDom = dom.createElement('Subrs');
|
||||
const gsubrsDom = dom.createElement('GlobalSubrs');
|
||||
newDom.appendChild(charStringDom);
|
||||
newDom.appendChild(subrsDom);
|
||||
newDom.appendChild(gsubrsDom);
|
||||
|
||||
const subrs = {
|
||||
map: [],
|
||||
fingerprints: [],
|
||||
sourcePath: '/ttFont/CFF/CFFFont/Private/Subrs',
|
||||
target: subrsDom
|
||||
};
|
||||
const gsubrs = {
|
||||
map: [],
|
||||
fingerprints: [],
|
||||
sourcePath: '/ttFont/CFF/GlobalSubrs',
|
||||
target: gsubrsDom
|
||||
};
|
||||
|
||||
extractCharStringSubrs(dom, node, subrs, gsubrs, 8);
|
||||
|
||||
const outline = indentTextContent(node.childNodes[0].textContent, 8);
|
||||
charStringDom.appendChild(dom.createTextNode(outline));
|
||||
|
||||
const folder = `./ligature/${fontName}/glyphs`;
|
||||
const fileName = `./${folder}/${name}.xml`;
|
||||
if (!fs.existsSync(folder)) {
|
||||
fs.mkdirSync(folder);
|
||||
}
|
||||
fs.writeFileSync(fileName, format(serialize(newDom)));
|
||||
console.log('* ' + name);
|
||||
};
|
||||
|
||||
const extractCharStringSubrs = (dom, node, subrs, gsubrs, indent) => {
|
||||
// check for callsubr/callgsubr
|
||||
|
||||
const lines = node.childNodes[0].textContent.split(os.EOL);
|
||||
const newLines = [];
|
||||
let fingerprint = '';
|
||||
|
||||
lines.forEach(line => {
|
||||
if (line.trim().length === 0) return;
|
||||
const matches = line.match(/(.*?)(-?\d+) (callsubr|callgsubr)$/);
|
||||
if (matches != null) {
|
||||
const { map, fingerprints, sourcePath, target } =
|
||||
matches[3] === 'callsubr' ? subrs : gsubrs;
|
||||
const index = matches[2];
|
||||
const srcIndex = parseInt(index) + 107;
|
||||
let newIndex = map[srcIndex];
|
||||
|
||||
if (!newIndex) {
|
||||
// find subr in source dom and copy to target dom
|
||||
const srcSubr = xpath.select(
|
||||
`/${sourcePath}/CharString[@index="${srcIndex}"]`,
|
||||
dom,
|
||||
true
|
||||
);
|
||||
|
||||
// append subr to target dom and get new index
|
||||
newIndex = xpath.select('count(CharString)', target, true);
|
||||
map[srcIndex] = newIndex;
|
||||
|
||||
const clone = srcSubr.cloneNode(true);
|
||||
clone.setAttribute('index', newIndex);
|
||||
target.appendChild(clone);
|
||||
|
||||
// patch up source in case it also has any callsubrs
|
||||
fingerprint = extractCharStringSubrs(dom, clone, subrs, gsubrs, 12);
|
||||
fingerprints[newIndex] = fingerprint;
|
||||
} else {
|
||||
fingerprint = fingerprints[newIndex];
|
||||
}
|
||||
|
||||
// rewrite line with fingerprint
|
||||
line = `${matches[1]}{${fingerprint}} ${matches[3]}`;
|
||||
}
|
||||
newLines.push(line.trim());
|
||||
});
|
||||
const content = newLines.join('\n');
|
||||
fingerprint = hash
|
||||
.sha256()
|
||||
.update(content)
|
||||
.digest('hex')
|
||||
.substr(0, 8);
|
||||
node.setAttribute('fingerprint', fingerprint);
|
||||
|
||||
node.childNodes[0].textContent = indentTextContent(content, indent);
|
||||
return fingerprint;
|
||||
};
|
||||
|
||||
const indentTextContent = (text, indent) => {
|
||||
return text
|
||||
.split('\n')
|
||||
.map(line => ' '.repeat(indent) + line.trim())
|
||||
.join('\n')
|
||||
.trim();
|
||||
};
|
||||
|
||||
const extractSubrs = dom => {
|
||||
|
||||
+1
-1
@@ -15,6 +15,6 @@ then
|
||||
else
|
||||
# build all available fonts
|
||||
for f in ./ligature_source/*.otf ; do
|
||||
extract_font $(basename $f)
|
||||
extract_font `basename "${f%.*}"`
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
const xpath = require('xpath');
|
||||
const NodeType = {};
|
||||
NodeType.TEXT_NODE = 3;
|
||||
|
||||
let dom;
|
||||
let gsubDom;
|
||||
let scriptListDom;
|
||||
let featureListDom;
|
||||
let lookupListDom;
|
||||
let featureDom;
|
||||
let lookupIndex = 0;
|
||||
let chainIndex = 0;
|
||||
const substLookupMap = {};
|
||||
|
||||
const buildGsubTables = (_dom, ligature) => {
|
||||
dom = _dom;
|
||||
|
||||
if (/_/.test(ligature.glyph) === false) {
|
||||
// not a ligature, so see if glyph exists in font (as substitute)
|
||||
const glyphNode = xpath.select(
|
||||
`ttFont/GlyphOrder/GlyphID[@name="${ligature.name}"]`,
|
||||
dom,
|
||||
true
|
||||
);
|
||||
if (!glyphNode) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const glyphs = ligature.name.replace(/\.liga$/, '').split('_');
|
||||
const isSingleGlyph = glyphs.length == 1;
|
||||
|
||||
gsubDom = xpath.select('ttFont/GSUB', dom, true);
|
||||
|
||||
// look for 'calt' feature
|
||||
featureListDom = xpath.select('FeatureList', gsubDom, true);
|
||||
|
||||
let featureRecord;
|
||||
const featureTag = xpath.select(
|
||||
'FeatureRecord/FeatureTag[@value="calt"]',
|
||||
featureListDom,
|
||||
true
|
||||
);
|
||||
if (!featureTag) {
|
||||
const featureListCount = xpath.select(
|
||||
'count(FeatureRecord)',
|
||||
featureListDom,
|
||||
true
|
||||
);
|
||||
featureRecord = createElementWithAttributes('FeatureRecord', {
|
||||
index: featureListCount
|
||||
});
|
||||
featureRecord.appendChild(
|
||||
createElementWithAttributes('FeatureTag', { value: 'calt' })
|
||||
);
|
||||
featureRecord.appendChild(dom.createElement('Feature'));
|
||||
featureListDom.appendChild(featureRecord);
|
||||
} else {
|
||||
featureRecord = featureTag.parentNode;
|
||||
}
|
||||
featureDom = xpath.select('Feature', featureRecord, true);
|
||||
|
||||
const featureIndex = featureRecord.getAttribute('index');
|
||||
|
||||
// add feature to scriptlist for DFLT and latn if not present
|
||||
addFeatureToScriptList('DFLT', featureIndex);
|
||||
addFeatureToScriptList('latn', featureIndex);
|
||||
|
||||
lookupListDom = xpath.select('LookupList', gsubDom, true);
|
||||
lookupIndex = xpath.select('count(Lookup)', lookupListDom, true);
|
||||
|
||||
const lookupDom = createElementWithAttributes('Lookup', {
|
||||
index: lookupIndex++
|
||||
});
|
||||
appendChildren(
|
||||
lookupDom,
|
||||
createElementWithAttributes('LookupType', { value: isSingleGlyph ? 1 : 6 }),
|
||||
createElementWithAttributes('LookupFlag', { value: 0 })
|
||||
);
|
||||
|
||||
// add contextual lookup to feature
|
||||
const featureLookupCount = xpath.select(
|
||||
'count(LookupListIndex)',
|
||||
featureDom,
|
||||
true
|
||||
);
|
||||
featureDom.appendChild(
|
||||
createElementWithAttributes('LookupListIndex', {
|
||||
index: featureLookupCount,
|
||||
value: lookupDom.getAttribute('index')
|
||||
})
|
||||
);
|
||||
|
||||
if (isSingleGlyph) {
|
||||
lookupDom.appendChild(
|
||||
getSubstLookup(ligature.name, ligature.glyph, lookupDom)
|
||||
);
|
||||
} else {
|
||||
lookupDom.appendChild(buildBacktrackFirst(glyphs));
|
||||
lookupDom.appendChild(buildLookAheadLast(glyphs));
|
||||
lookupDom.appendChild(buildLigatureSubst(glyphs, ligature.glyph));
|
||||
// remaining context
|
||||
for (let n = glyphs.length - 2; n >= 0; n--) {
|
||||
lookupDom.appendChild(
|
||||
buildChainContext(getLIGs(n), [glyphs[n]], glyphs.slice(n + 1), 'LIG')
|
||||
);
|
||||
}
|
||||
}
|
||||
lookupListDom.appendChild(lookupDom);
|
||||
};
|
||||
|
||||
const finalizeGsubTables = () => {
|
||||
// get current LookupList count
|
||||
let newIndex = xpath.select('count(Lookup)', lookupListDom, true);
|
||||
|
||||
// append added lookups
|
||||
Object.entries(substLookupMap).forEach(([, lookup]) => {
|
||||
// fixup existing lookups with new index
|
||||
const oldIndex = lookup.getAttribute('index');
|
||||
const substLookups = xpath.select(
|
||||
`//ChainContextSubst/SubstLookupRecord/LookupListIndex[@value="${oldIndex}"]`,
|
||||
lookupListDom,
|
||||
false
|
||||
);
|
||||
substLookups.forEach(substLookup => {
|
||||
substLookup.setAttribute('value', newIndex);
|
||||
});
|
||||
lookup.setAttribute('index', newIndex++);
|
||||
lookupListDom.appendChild(lookup);
|
||||
lookupListDom.appendChild(lookup);
|
||||
});
|
||||
};
|
||||
|
||||
//const dump = dom => console.log(format(serialize(dom)));
|
||||
|
||||
const addFeatureToScriptList = (tag, featureIndex) => {
|
||||
scriptListDom = xpath.select('ScriptList', gsubDom, true);
|
||||
const defaultLangSys = xpath.select(
|
||||
`ScriptRecord/ScriptTag[@value="${tag}"]/../Script/DefaultLangSys`,
|
||||
scriptListDom,
|
||||
true
|
||||
);
|
||||
const featureIndexNode = xpath.select(
|
||||
`FeatureIndex[@value=${featureIndex}]`,
|
||||
defaultLangSys,
|
||||
true
|
||||
);
|
||||
if (!featureIndexNode) {
|
||||
const count = xpath.select('count(FeatureIndex)', defaultLangSys, true);
|
||||
defaultLangSys.appendChild(
|
||||
createElementWithAttributes('FeatureIndex', {
|
||||
index: count,
|
||||
value: featureIndex
|
||||
})
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const buildBacktrackFirst = glyphs => {
|
||||
// backtrack = first glyph
|
||||
// input = first glphy
|
||||
// lookAhead = [1..n]
|
||||
return buildChainContext([glyphs[0]], [glyphs[0]], glyphs.slice(1));
|
||||
};
|
||||
|
||||
const buildLookAheadLast = glyphs => {
|
||||
// backtrack = none
|
||||
// input = first glyph
|
||||
// lookAhead = [1..n] + [n]
|
||||
return buildChainContext(
|
||||
[],
|
||||
[glyphs[0]],
|
||||
[...glyphs.slice(1), glyphs.slice(-1)]
|
||||
);
|
||||
};
|
||||
|
||||
const buildLigatureSubst = (glyphs, lookup) => {
|
||||
// backtrack = LIG * n-1
|
||||
// input = last glyph
|
||||
// lookAhead = none
|
||||
return buildChainContext(
|
||||
getLIGs(glyphs.length - 1),
|
||||
glyphs.slice(-1),
|
||||
[],
|
||||
lookup
|
||||
);
|
||||
};
|
||||
|
||||
const getLIGs = length => new Array(length).fill('LIG', 0, length);
|
||||
|
||||
const buildChainContext = (backtrack, input, lookAhead, substitute) => {
|
||||
const chainDom = createElementWithAttributes('ChainContextSubst', {
|
||||
index: chainIndex++,
|
||||
Format: 3
|
||||
});
|
||||
|
||||
buildCoverage(chainDom, 'BacktrackCoverage', backtrack);
|
||||
buildCoverage(chainDom, 'InputCoverage', input);
|
||||
buildCoverage(chainDom, 'LookAheadCoverage', lookAhead);
|
||||
|
||||
if (substitute) {
|
||||
const lookup = getSubstLookup(input[0], substitute);
|
||||
const listIndex = lookup.getAttribute('index');
|
||||
const substLookupRecordDom = chainDom.appendChild(
|
||||
createElementWithAttributes('SubstLookupRecord', { index: 0 })
|
||||
);
|
||||
appendChildren(
|
||||
substLookupRecordDom,
|
||||
createElementWithAttributes('SequenceIndex', { value: 0 }),
|
||||
createElementWithAttributes('LookupListIndex', { value: listIndex })
|
||||
);
|
||||
}
|
||||
return chainDom;
|
||||
};
|
||||
|
||||
const buildCoverage = (chainDom, tagName, coverage) => {
|
||||
if (coverage) {
|
||||
coverage.forEach((glyph, i) => {
|
||||
const coverageDom = createElementWithAttributes(tagName, {
|
||||
index: i++,
|
||||
Format: 1
|
||||
});
|
||||
coverageDom.appendChild(
|
||||
createElementWithAttributes('Glyph', { value: glyph })
|
||||
);
|
||||
chainDom.appendChild(coverageDom);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getSubstLookup = (input, output, lookupDom) => {
|
||||
if (!lookupDom) {
|
||||
lookupDom = substLookupMap[output];
|
||||
}
|
||||
|
||||
if (!lookupDom) {
|
||||
lookupDom = createElementWithAttributes('Lookup', {
|
||||
index: Object.keys(substLookupMap).length + 1
|
||||
});
|
||||
lookupDom.appendChild(
|
||||
createElementWithAttributes('LookupType', { value: 1 })
|
||||
);
|
||||
lookupDom.appendChild(
|
||||
createElementWithAttributes('LookupFlag', { value: 0 })
|
||||
);
|
||||
substLookupMap[output] = lookupDom;
|
||||
}
|
||||
|
||||
let singleSubstDom = xpath.select('SingleSubst', lookupDom, true);
|
||||
|
||||
if (!singleSubstDom) {
|
||||
singleSubstDom = createElementWithAttributes('SingleSubst', {
|
||||
index: 0,
|
||||
Format: 2
|
||||
});
|
||||
lookupDom.appendChild(singleSubstDom);
|
||||
}
|
||||
|
||||
// look for input subst
|
||||
const substitionDom = xpath.select(
|
||||
`Substitution[@in="${input}"]`,
|
||||
singleSubstDom,
|
||||
true
|
||||
);
|
||||
if (!substitionDom) {
|
||||
singleSubstDom.appendChild(
|
||||
createElementWithAttributes('Substitution', { in: input, out: output })
|
||||
);
|
||||
}
|
||||
return lookupDom;
|
||||
};
|
||||
|
||||
const createElementWithAttributes = (tagName, attributes) => {
|
||||
const element = dom.createElement(tagName);
|
||||
Object.entries(attributes).forEach(attribute => {
|
||||
element.setAttribute(attribute[0], attribute[1]);
|
||||
});
|
||||
return element;
|
||||
};
|
||||
|
||||
const appendChildren = (node, ...children) => {
|
||||
children.forEach(child => node.appendChild(child));
|
||||
};
|
||||
|
||||
//const serialize = dom => new XMLSerializer().serializeToString(dom);
|
||||
|
||||
exports.buildGsubTables = buildGsubTables;
|
||||
exports.finalizeGsubTables = finalizeGsubTables;
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 141 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
@@ -1,171 +1,283 @@
|
||||
const Promise = require('bluebird');
|
||||
const fs = Promise.promisifyAll(require('fs'));
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
if (!os.EOL) {
|
||||
os.EOL = process.platform === 'win32' ? '\r\n' : '\n';
|
||||
}
|
||||
|
||||
const gsub = require('./gsub');
|
||||
|
||||
const xpath = require('xpath');
|
||||
const { DOMParser, XMLSerializer } = require('xmldom');
|
||||
const format = require('xml-formatter');
|
||||
let fontName;
|
||||
let ligFontName;
|
||||
|
||||
const regEx = /\.liga$/;
|
||||
const regExBlankLines = /^(?=\n)$|^\s*/gm;
|
||||
const regExWhitespace = /^\s+$/;
|
||||
const NodeType = {};
|
||||
NodeType.TEXT_NODE = 3;
|
||||
|
||||
async function main() {
|
||||
let dom;
|
||||
function main() {
|
||||
fontName = process.argv[2];
|
||||
ligFontName = fontName.split('-').join('Lig-');
|
||||
|
||||
const srcFileName = `./original/${fontName}.ttx`;
|
||||
const dstFileName = `./build/${ligFontName}.ttx`;
|
||||
console.log(`Reading original font file ${srcFileName}`);
|
||||
const xml = await fs.readFileAsync(srcFileName, 'utf-8');
|
||||
const dom = new DOMParser().parseFromString(xml);
|
||||
const xml = fs.readFileSync(srcFileName, 'utf-8');
|
||||
dom = new DOMParser().parseFromString(xml);
|
||||
|
||||
try {
|
||||
await processPatch('names', patchNames, dom);
|
||||
await processPatch('glyphs', patchGlyphs, dom);
|
||||
await processPatch('gpos', patchGpos, dom);
|
||||
await processPatch('gsub', patchGsub, dom);
|
||||
await processPatch('hmtx', patchHmtx, dom);
|
||||
//await processPatch('lookup', patchLookup, dom);
|
||||
await processPatch('charstrings', patchCharStrings, dom);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
const profiles = getProfiles();
|
||||
|
||||
// process settings (there may be more than one font to build)
|
||||
profiles.forEach(profile => buildFont(profile));
|
||||
|
||||
console.log(`Writing ligature font file ${dstFileName}`);
|
||||
await fs.writeFileAsync(dstFileName, format(serialize(dom)));
|
||||
console.log('Done');
|
||||
}
|
||||
|
||||
async function loadConfigAsync(name) {
|
||||
const buildFont = profile => {
|
||||
// add suffix to dstFileName if present
|
||||
const dstFileName = `./build/${ligFontName}${
|
||||
profile.suffixWithLeadingHyphen
|
||||
}.ttx`;
|
||||
console.log(
|
||||
`Building ligature font file ${dstFileName} name = ${profile.name}`
|
||||
);
|
||||
|
||||
const ligatures = sortLigatures(
|
||||
fs
|
||||
.readdirSync(`./ligature/${ligFontName}/glyphs`)
|
||||
.filter(file => /\.xml$/.test(file))
|
||||
.map(file => file.replace('.xml', ''))
|
||||
)
|
||||
.filter(name => !/\d+\.liga$/.test(name)) // skip alternates (ends with .#)
|
||||
.filter(name => filterLigatures(name, profile.ligatures))
|
||||
.map(name => mapLigatures(name, profile.ligatures))
|
||||
.filter(entry => filterGlyphsExists(entry));
|
||||
|
||||
const ligaturesWithLIG = ligatures;
|
||||
//[...ligatures, { name: 'LIG', glyph: 'LIG' }];
|
||||
|
||||
processPatch('names', patchNames, dom, ligatures, profile);
|
||||
processPatch('gsub', patchGsub, dom, ligatures);
|
||||
processPatch('charstrings', patchCharStrings, dom, ligaturesWithLIG);
|
||||
processPatch('glyphs', patchGlyphs, dom, ligaturesWithLIG);
|
||||
processPatch('hmtx', patchHmtx, dom);
|
||||
|
||||
console.log(`Writing ligature font file ${dstFileName}`);
|
||||
fs.writeFileSync(dstFileName, format(serialize(dom)));
|
||||
};
|
||||
|
||||
const getProfiles = () => {
|
||||
const profilePath = './original/profiles.ini';
|
||||
// return default profiles if profile doesn't exist
|
||||
if (!fs.existsSync(profilePath)) {
|
||||
return [
|
||||
{
|
||||
name: 'default',
|
||||
suffix: '',
|
||||
suffixWithLeadingSpace: '',
|
||||
suffixWithLeadingHyphen: '',
|
||||
ligatures: []
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
const profiles = [];
|
||||
let profile = null;
|
||||
|
||||
const content = fs.readFileSync(profilePath, 'utf-8');
|
||||
content
|
||||
.split(os.EOL)
|
||||
.filter(line => /^[#]/.test(line) === false && line.length > 0)
|
||||
.forEach(line => {
|
||||
const ch = line.trim()[0];
|
||||
if (ch === '[') {
|
||||
let name = line.substr(1, line.indexOf(']') - 1);
|
||||
profile = {
|
||||
name,
|
||||
suffix: name === 'default' ? '' : name,
|
||||
suffixWithLeadingSpace: name === 'default' ? '' : ' ' + name,
|
||||
suffixWithLeadingHyphen: name === 'default' ? '' : '-' + name,
|
||||
ligatures: []
|
||||
};
|
||||
profiles.push(profile);
|
||||
} else {
|
||||
if (!profile) {
|
||||
throw new Error('You must profile a profile name in []');
|
||||
}
|
||||
profile.ligatures.push(line);
|
||||
}
|
||||
});
|
||||
|
||||
return profiles;
|
||||
};
|
||||
|
||||
const filterLigatures = (name, mappings) => {
|
||||
// loop through mappings and return if name applies or not
|
||||
// skip if setting is !name
|
||||
return mappings.filter(entry => entry === '!' + name).length === 0;
|
||||
};
|
||||
|
||||
const mapLigatures = (name, mappings) => {
|
||||
let mapping = { name, glyph: name };
|
||||
mappings.forEach(entry => {
|
||||
const [val1, val2] = entry.split('=');
|
||||
// handle lig=altliga
|
||||
if (val1 === name) {
|
||||
mapping.glyph = val2;
|
||||
} else if (val2 === name) {
|
||||
mapping.name = val1;
|
||||
}
|
||||
});
|
||||
return mapping;
|
||||
};
|
||||
|
||||
const filterGlyphsExists = ({ glyph }) => {
|
||||
const exists = fs.existsSync(`./ligature/${ligFontName}/glyphs/${glyph}.xml`);
|
||||
return exists;
|
||||
};
|
||||
|
||||
const sortLigatures = ligatures => {
|
||||
// sort by most glyphs then alphabetically
|
||||
const sorted = ligatures
|
||||
.map(ligature => {
|
||||
return { count: ligature.split('_').length + 1, ligature: ligature };
|
||||
})
|
||||
.sort(
|
||||
(a, b) =>
|
||||
-compareProperty(a.count, b.count) || // sort by count descending
|
||||
compareProperty(a.ligature, b.ligature) // then by ligature alphabetically
|
||||
)
|
||||
.map(entry => entry.ligature);
|
||||
return sorted;
|
||||
};
|
||||
|
||||
const compareProperty = (a, b) => {
|
||||
if (typeof a === 'number') {
|
||||
return a || b ? (!a ? -1 : !b ? 1 : a === b ? 0 : a < b ? -1 : 1) : 0;
|
||||
} else {
|
||||
return a || b ? (!a ? -1 : !b ? 1 : a.localeCompare(b)) : 0;
|
||||
}
|
||||
};
|
||||
|
||||
const loadXml = name => {
|
||||
const fileName = `./ligature/${ligFontName}/${name}.xml`;
|
||||
const xml = await fs.readFileAsync(fileName, 'utf-8');
|
||||
const xml = fs.readFileSync(fileName, 'utf-8');
|
||||
return new DOMParser().parseFromString(xml);
|
||||
}
|
||||
};
|
||||
|
||||
async function processPatch(name, patchFunc, dom) {
|
||||
const processPatch = (name, patchFunc, dom, ligatures, profile) => {
|
||||
console.log(`Patching ${name}`);
|
||||
await patchFunc(dom);
|
||||
}
|
||||
patchFunc(dom, ligatures, profile);
|
||||
};
|
||||
|
||||
async function patchNames(dom) {
|
||||
const configDom = await loadConfigAsync('names');
|
||||
const PlatformId = {
|
||||
mac: 1,
|
||||
win: 3
|
||||
};
|
||||
|
||||
const names = xpath.select('/name/namerecord', configDom);
|
||||
const targetName = xpath.select('/ttFont/name', dom, true);
|
||||
const NameId = {
|
||||
familyName: 1,
|
||||
fontStyle: 2,
|
||||
uniqueId: 3,
|
||||
fullName: 4,
|
||||
version: 5,
|
||||
postscriptName: 6,
|
||||
windowsFamilyName: 16,
|
||||
fontStyleName: 17
|
||||
};
|
||||
|
||||
// get font and family name
|
||||
const familyName = getTextNode(
|
||||
configDom,
|
||||
'/name/namerecord[@nameID="1" and @platformID="1"]'
|
||||
);
|
||||
const fullName = getTextNode(
|
||||
configDom,
|
||||
'/name/namerecord[@nameID="4" and @platformID="1"]'
|
||||
const patchNames = (dom, ligatures, profile) => {
|
||||
const names = JSON.parse(
|
||||
fs.readFileSync(`./ligature/${ligFontName}/names.json`)
|
||||
);
|
||||
|
||||
const [name, style] = names.fontName.split('-');
|
||||
const [familyStyle, fullNameStyleTry] = names.fontStyle.split(' ');
|
||||
|
||||
let fullNameStyleTemp;
|
||||
if (fullNameStyleTry) {
|
||||
fullNameStyleTemp = fullNameStyleTry;
|
||||
} else {
|
||||
fullNameStyleTemp = '';
|
||||
}
|
||||
|
||||
const fullNameStyle = fullNameStyleTemp;
|
||||
const fontName = `${name}${profile.suffixWithLeadingHyphen}-${style}`;
|
||||
const familyNamePlat = `${names.familyName}${profile.suffixWithLeadingSpace}`;
|
||||
const familyName = `${familyNamePlat} ${familyStyle}`;
|
||||
const fullName = `${familyName} ${fullNameStyle}`;
|
||||
const uniqueId = `${names.foundry}: ${fullName}: ${names.version}`;
|
||||
// patch CFFFont
|
||||
const cffFont = xpath.select('/ttFont/CFF/CFFFont', dom, true);
|
||||
|
||||
cffFont.setAttribute('name', ligFontName);
|
||||
setAttribute(cffFont, 'FullName', 'value', fullName);
|
||||
setAttribute(cffFont, 'FamilyName', 'value', familyName);
|
||||
setAttribute(cffFont, 'FamilyName', 'value', familyNamePlat);
|
||||
|
||||
// update existing names with new names
|
||||
names.forEach(node => {
|
||||
const nameId = node.getAttribute('nameID');
|
||||
const platformId = node.getAttribute('platformID');
|
||||
updateName(PlatformId.mac, NameId.familyName, familyName);
|
||||
updateName(PlatformId.mac, NameId.fontStyle, names.fontStyle);
|
||||
updateName(PlatformId.mac, NameId.uniqueId, uniqueId);
|
||||
updateName(PlatformId.mac, NameId.fullName, fullName);
|
||||
updateName(PlatformId.mac, NameId.postscriptName, fontName);
|
||||
updateName(PlatformId.mac, NameId.windowsFamilyName, familyNamePlat);
|
||||
updateName(PlatformId.mac, NameId.fontStyleName, names.fontStyle);
|
||||
|
||||
// search for namerecord in target dom and replace with this one or append node
|
||||
const target = xpath.select(
|
||||
`/ttFont/name/namerecord[@nameID="${nameId}" and @platformID="${platformId}"]`,
|
||||
dom,
|
||||
true
|
||||
);
|
||||
if (target) {
|
||||
target.parentNode.replaceChild(node, target);
|
||||
} else {
|
||||
targetName.appendChild(node);
|
||||
}
|
||||
});
|
||||
}
|
||||
updateName(PlatformId.win, NameId.familyName, familyName);
|
||||
updateName(PlatformId.win, NameId.fontStyle, names.windowsFontStyle);
|
||||
updateName(PlatformId.win, NameId.uniqueId, uniqueId);
|
||||
updateName(PlatformId.win, NameId.fullName, fullName);
|
||||
updateName(PlatformId.win, NameId.postscriptName, fontName);
|
||||
updateName(PlatformId.win, NameId.windowsFamilyName, familyNamePlat);
|
||||
updateName(PlatformId.win, NameId.fontStyleName, names.fontStyle);
|
||||
};
|
||||
|
||||
async function patchGlyphs(dom) {
|
||||
const configDom = await loadConfigAsync('../glyphs');
|
||||
const updateName = (platformId, nameId, value) => {
|
||||
// search for namerecord in target dom and replace with this one or append node
|
||||
const target = xpath.select(
|
||||
`/ttFont/name/namerecord[@nameID="${nameId}" and @platformID="${platformId}"]`,
|
||||
dom,
|
||||
true
|
||||
);
|
||||
if (target) {
|
||||
target.childNodes[0].textContent = value;
|
||||
}
|
||||
};
|
||||
|
||||
const patchGlyphs = (dom, ligatures) => {
|
||||
// get number of glyphs in target dom
|
||||
const targetGlyphs = xpath.select('/ttFont/GlyphOrder', dom, true);
|
||||
const glyphsCount = xpath.select('count(GlyphID)', targetGlyphs, true);
|
||||
|
||||
// only import glyphs specified
|
||||
let n = glyphsCount;
|
||||
// get ligature glyphs
|
||||
const glyphs = xpath.select('/GlyphOrder/GlyphID', configDom);
|
||||
glyphs.forEach(node => {
|
||||
node.setAttribute('id', n++);
|
||||
targetGlyphs.appendChild(node);
|
||||
ligatures.forEach(ligature => {
|
||||
targetGlyphs.appendChild(
|
||||
createElementWithAttributes('GlyphID', { id: n++, name: ligature.glyph })
|
||||
);
|
||||
});
|
||||
|
||||
// update glyph count
|
||||
setAttribute(dom, '/ttFont/maxp/numGlyphs', 'value', n);
|
||||
}
|
||||
|
||||
async function patchGpos(dom) {
|
||||
const newGpos = await loadConfigAsync('gpos');
|
||||
const oldGpos = xpath.select('/ttFont/GPOS', dom, true);
|
||||
dom.documentElement.replaceChild(newGpos, oldGpos);
|
||||
}
|
||||
|
||||
async function patchGsub(dom) {
|
||||
const newGsub = await loadConfigAsync('gsub');
|
||||
|
||||
// loop through Substituion/Ligature nodes and remap chars
|
||||
remap(newGsub, dom, '//Substitution', 'out');
|
||||
remap(newGsub, dom, '//Ligature', 'glyph');
|
||||
|
||||
const oldGsub = xpath.select('/ttFont/GSUB', dom, true);
|
||||
dom.documentElement.replaceChild(newGsub, oldGsub);
|
||||
}
|
||||
|
||||
const remap = (patchDom, cmapDom, path, attr) => {
|
||||
const cmap = [];
|
||||
let nodes = xpath.select(path, patchDom);
|
||||
nodes.forEach(n => {
|
||||
const out = n.getAttribute(attr);
|
||||
if (out.startsWith('uni')) {
|
||||
// get cmap entry
|
||||
const code = '0x' + out.replace(/uni0*/g, '').toLowerCase();
|
||||
let name = cmap[code];
|
||||
if (!name) {
|
||||
const map = xpath.select(
|
||||
`/ttFont/cmap/cmap_format_4/map[@code="${code}"]`,
|
||||
cmapDom,
|
||||
true
|
||||
);
|
||||
name = map == null ? out : map.getAttribute('name');
|
||||
cmap[code] = name;
|
||||
}
|
||||
n.setAttribute(attr, name);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
async function patchHmtx(dom) {
|
||||
const hmtxDom = await loadConfigAsync('hmtx');
|
||||
const targetHmtx = xpath.select('/ttFont/hmtx', dom, true);
|
||||
const patchGsub = (dom, ligatures) => {
|
||||
// don't patch if no ligatures other than LIG
|
||||
if (ligatures.length <= 1) return;
|
||||
|
||||
const mtx = xpath.select('/hmtx/mtx', hmtxDom);
|
||||
mtx.forEach(node => targetHmtx.appendChild(node));
|
||||
ligatures.forEach(ligature => {
|
||||
// build gsub tables
|
||||
gsub.buildGsubTables(dom, ligature);
|
||||
});
|
||||
gsub.finalizeGsubTables();
|
||||
};
|
||||
|
||||
const patchHmtx = dom => {
|
||||
const mtxCount = xpath.select('count(/ttFont/hmtx/mtx)', dom, true);
|
||||
setAttribute(dom, '/ttFont/hhea/numberOfHMetrics', 'value', mtxCount);
|
||||
|
||||
const configDom = await loadConfigAsync('config');
|
||||
const configDom = loadXml('config');
|
||||
copyConfigAttribute(dom, configDom, '/ttFont/head/xMin', 'value');
|
||||
copyConfigAttribute(dom, configDom, '/ttFont/head/yMin', 'value');
|
||||
copyConfigAttribute(dom, configDom, '/ttFont/head/xMax', 'value');
|
||||
@@ -179,159 +291,104 @@ async function patchHmtx(dom) {
|
||||
'/ttFont/CFF/CFFFont/Private/nominalWidthX',
|
||||
'value'
|
||||
);
|
||||
}
|
||||
|
||||
async function patchLookup(dom) {
|
||||
const configDom = await loadConfigAsync('../lookup');
|
||||
const featureList = xpath.select('/ttFont/GSUB/FeatureList', dom, true);
|
||||
|
||||
const featuresCount = xpath.select(
|
||||
'count(/ttFont/GSUB/FeatureList/FeatureRecord)',
|
||||
dom,
|
||||
true
|
||||
);
|
||||
const featureRecord = dom.createElement('FeatureRecord');
|
||||
featureRecord.setAttribute('index', featuresCount);
|
||||
const featureTag = dom.createElement('FeatureTag');
|
||||
featureTag.setAttribute('value', 'liga');
|
||||
const feature = dom.createElement('Feature');
|
||||
featureRecord.appendChild(featureTag);
|
||||
featureRecord.appendChild(feature);
|
||||
featureList.appendChild(featureRecord);
|
||||
|
||||
const lookupCount = xpath.select(
|
||||
'count(/ttFont/GSUB/LookupList/Lookup)',
|
||||
dom,
|
||||
true
|
||||
);
|
||||
const lookupListIndex = dom.createElement('LookupListIndex');
|
||||
lookupListIndex.setAttribute('index', '0');
|
||||
lookupListIndex.setAttribute('value', lookupCount);
|
||||
feature.appendChild(lookupListIndex);
|
||||
|
||||
// helper function for adding feature to ScriptRecord
|
||||
const addFeature = (scriptRecord, featureRecord, lang) => {
|
||||
if (!lang) return;
|
||||
const index = featureRecord.getAttribute('index');
|
||||
if (xpath.select(`FeatureIndex[@value="${index}"]`, lang, true)) return;
|
||||
|
||||
const count = xpath.select('count(FeatureIndex)', lang, true);
|
||||
const featureIndex = dom.createElement('FeatureIndex');
|
||||
featureIndex.setAttribute('index', count);
|
||||
featureIndex.setAttribute('value', index);
|
||||
lang.appendChild(featureIndex);
|
||||
};
|
||||
|
||||
// nead to add feature to ScriptList
|
||||
const scriptList = xpath.select('/ttFont/GSUB/ScriptList', dom, true);
|
||||
const scriptRecords = xpath.select('ScriptRecord', scriptList);
|
||||
scriptRecords.forEach(node => {
|
||||
// check for feature in DefaultLangSys
|
||||
addFeature(
|
||||
node,
|
||||
featureRecord,
|
||||
xpath.select('Script/DefaultLangSys', node, true)
|
||||
);
|
||||
// add features to any other languages
|
||||
xpath
|
||||
.select('Script/LangSysRecord/LangSys', node)
|
||||
.forEach(lang => addFeature(node, featureRecord, lang));
|
||||
});
|
||||
|
||||
// finally add LigatureSubst to Lookup
|
||||
const lookupList = xpath.select('/ttFont/GSUB/LookupList', dom, true);
|
||||
const newLookup = xpath.select('/LookupList/Lookup', configDom, true);
|
||||
newLookup.setAttribute('index', lookupCount);
|
||||
lookupList.appendChild(newLookup);
|
||||
}
|
||||
|
||||
async function patchCharStrings(dom) {
|
||||
const configDom = await loadConfigAsync('charstrings');
|
||||
const nameDom = await loadConfigAsync('names');
|
||||
|
||||
// get font and family name
|
||||
const familyName = getTextNode(
|
||||
nameDom,
|
||||
'/name/namerecord[@nameID="1" and @platformID="1"]'
|
||||
);
|
||||
const fullName = getTextNode(
|
||||
nameDom,
|
||||
'/name/namerecord[@nameID="4" and @platformID="1"]'
|
||||
);
|
||||
};
|
||||
|
||||
const patchCharStrings = (dom, ligatures) => {
|
||||
// patch CFFFont
|
||||
const cffFont = xpath.select('/ttFont/CFF/CFFFont', dom, true);
|
||||
|
||||
cffFont.setAttribute('name', ligFontName);
|
||||
setAttribute(cffFont, 'FullName', 'value', fullName);
|
||||
setAttribute(cffFont, 'FamilyName', 'value', familyName);
|
||||
|
||||
const charStrings = xpath.select('/CharStrings/CharString', configDom);
|
||||
const targetHmtx = xpath.select('/ttFont/hmtx', dom, true);
|
||||
const targetCmaps = xpath.select('/ttFont/cmap/cmap_format_4', dom);
|
||||
const targetCharStrings = xpath.select('CharStrings', cffFont, true);
|
||||
const targetSubrs = xpath.select(
|
||||
'/ttFont/CFF/CFFFont/Private/Subrs',
|
||||
dom,
|
||||
true
|
||||
);
|
||||
const targetGsubrs = xpath.select('/ttFont/CFF/GlobalSubrs', dom, true);
|
||||
const fingerprints = {};
|
||||
ligatures.forEach(ligature => {
|
||||
console.log(
|
||||
`* ${ligature.name}${
|
||||
ligature.name === ligature.glyph ? '' : ' => ' + ligature.glyph
|
||||
}`
|
||||
);
|
||||
const glyphDom = loadXml(`glyphs/${ligature.glyph}`).documentElement;
|
||||
const node = xpath.select('/Glyph/CharString', glyphDom, true);
|
||||
node.setAttribute('name', ligature.glyph);
|
||||
|
||||
const subrs = {
|
||||
map: [],
|
||||
source: await loadConfigAsync('subrs'),
|
||||
target: xpath.select('/ttFont/CFF/CFFFont/Private/Subrs', dom, true)
|
||||
};
|
||||
const gsubrs = {
|
||||
map: [],
|
||||
source: await loadConfigAsync('gsubrs'),
|
||||
target: xpath.select('/ttFont/CFF/GlobalSubrs', dom, true)
|
||||
};
|
||||
const subrs = {
|
||||
sourcePath: '/Glyph/Subrs',
|
||||
target: targetSubrs
|
||||
};
|
||||
const gsubrs = {
|
||||
sourcePath: '/Glyph/GlobalSubrs',
|
||||
target: targetGsubrs
|
||||
};
|
||||
|
||||
patchCharStringSubrs(glyphDom, node, fingerprints, subrs, gsubrs);
|
||||
|
||||
charStrings.forEach(node => {
|
||||
patchCharStringSubrs(node, subrs, gsubrs);
|
||||
targetCharStrings.appendChild(node);
|
||||
targetHmtx.appendChild(
|
||||
createElementWithAttributes('mtx', {
|
||||
name: ligature.glyph,
|
||||
width: glyphDom.getAttribute('width'),
|
||||
lsb: glyphDom.getAttribute('lsb')
|
||||
})
|
||||
);
|
||||
const code = glyphDom.getAttribute('code');
|
||||
if (code) {
|
||||
Array.from(targetCmaps).forEach(node => {
|
||||
node.appendChild(
|
||||
createElementWithAttributes('map', {
|
||||
code,
|
||||
name: ligature.glyph
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const patchCharStringSubrs = (node, subrs, gsubrs) => {
|
||||
const patchCharStringSubrs = (glyphDom, node, fingerprints, subrs, gsubrs) => {
|
||||
// check for callsubr/callgsubr
|
||||
|
||||
const lines = node.childNodes[0].textContent.split(/\r|\r\n|\n/g);
|
||||
const newLines = [];
|
||||
let patched = false;
|
||||
lines.forEach(line => {
|
||||
const matches = line.match(/(.*?)(-?\d+) (callsubr|callgsubr)$/);
|
||||
if (line.trim().length === 0) return;
|
||||
const matches = line.match(/(.*?)\{([0-9a-z]+)\} (callsubr|callgsubr)$/);
|
||||
if (matches != null) {
|
||||
const { map, source, target } =
|
||||
matches[3] === 'callsubr' ? subrs : gsubrs;
|
||||
const index = matches[2];
|
||||
let newIndex = 0;
|
||||
if (!map[index]) {
|
||||
// find subr in source dom and copy to target dom
|
||||
const srcIndex = parseInt(index) + 107;
|
||||
const { sourcePath, target } = matches[3] === 'callsubr' ? subrs : gsubrs;
|
||||
const fingerprint = matches[2];
|
||||
let newIndex = fingerprints[fingerprint];
|
||||
if (!newIndex) {
|
||||
const srcSubr = xpath.select(
|
||||
`//CharString[@index="${srcIndex}"]`,
|
||||
source,
|
||||
`/${sourcePath}/CharString[@fingerprint="${fingerprint}"]`,
|
||||
glyphDom,
|
||||
true
|
||||
);
|
||||
|
||||
// patch up source in case it also has any callsubrs
|
||||
patchCharStringSubrs(srcSubr, subrs, gsubrs);
|
||||
|
||||
// append subr to target dom and get new index
|
||||
newIndex = xpath.select('count(CharString)', target, true);
|
||||
srcSubr.setAttribute('index', newIndex);
|
||||
target.appendChild(srcSubr);
|
||||
|
||||
const clone = srcSubr.cloneNode(true);
|
||||
clone.setAttribute('index', newIndex);
|
||||
target.appendChild(clone);
|
||||
|
||||
// add new index to map and rewrite call
|
||||
newIndex = newIndex - 107;
|
||||
map[index] = newIndex;
|
||||
} else {
|
||||
newIndex = map[index];
|
||||
fingerprints[fingerprint] = newIndex;
|
||||
|
||||
// patch up source in case it also has any callsubrs
|
||||
patchCharStringSubrs(glyphDom, clone, fingerprints, subrs, gsubrs);
|
||||
}
|
||||
|
||||
// rewrite line with new subr index
|
||||
line = `${matches[1]}${newIndex} ${matches[3]}`;
|
||||
patched = true;
|
||||
}
|
||||
newLines.push(line);
|
||||
});
|
||||
if (patched) {
|
||||
node.childNodes[0].textContent = newLines.join(os.EOL);
|
||||
}
|
||||
node.childNodes[0].textContent = newLines.join(os.EOL);
|
||||
};
|
||||
|
||||
const setAttribute = (parent, path, name, value) => {
|
||||
@@ -344,13 +401,15 @@ const copyConfigAttribute = (dom, configDom, path, name) => {
|
||||
setAttribute(dom, path, name, value);
|
||||
};
|
||||
|
||||
const getTextNode = (dom, path) => {
|
||||
var node = xpath.select(path, dom, true);
|
||||
return node && node.childNodes.length
|
||||
? node.childNodes[0].nodeValue.trim()
|
||||
: '';
|
||||
const createElementWithAttributes = (tagName, attributes) => {
|
||||
const element = dom.createElement(tagName);
|
||||
Object.entries(attributes).forEach(attribute => {
|
||||
element.setAttribute(attribute[0], attribute[1]);
|
||||
});
|
||||
return element;
|
||||
};
|
||||
|
||||
//const dump = dom => console.log(serialize(dom));
|
||||
const serialize = dom =>
|
||||
new XMLSerializer().serializeToString(dom, false, node => {
|
||||
if (node.nodeType === NodeType.TEXT_NODE) {
|
||||
|
||||
@@ -1,281 +0,0 @@
|
||||
<CharStrings>
|
||||
<CharString name="ampersand_ampersand.liga">
|
||||
-107 -12 67 501 76 hstemhm
|
||||
108 77 -4 80 251 77 -4 80 hintmask 11100100
|
||||
880 169 rmoveto
|
||||
-33 callgsubr
|
||||
-66 callsubr
|
||||
hintmask 11011000
|
||||
-88 -56 -45 -63 -75 vvcurveto
|
||||
-3 vlineto
|
||||
-12 15 -12 14 -12 13 -33 callgsubr
|
||||
-66 callsubr
|
||||
hintmask 11100100
|
||||
-7 callgsubr
|
||||
-33 57 -74 133 -4 rrcurveto
|
||||
7 hlineto
|
||||
64 64 34 77 51 hvcurveto
|
||||
28 -34 31 -37 32 -41 65 51 rcurveline
|
||||
-41 50 -37 43 -33 38 rrcurveto
|
||||
-611 -114 rmoveto
|
||||
-51 callgsubr
|
||||
hintmask 11101000
|
||||
404 hmoveto
|
||||
-51 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="bar_bar.liga">
|
||||
-107 704 -20 hstem
|
||||
312 75 325 75 vstem
|
||||
387 710 -14 callgsubr
|
||||
400 892 -14 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="bar_greater.liga">
|
||||
-107 704 -20 hstem
|
||||
287 75 449 74 vstem
|
||||
362 710 -14 callgsubr
|
||||
523 440 rlineto
|
||||
69 vlineto
|
||||
-74 -40 rmoveto
|
||||
-449 -374 rlineto
|
||||
705 vlineto
|
||||
449 -321 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal.liga">
|
||||
-107 151 -25 callgsubr
|
||||
944 vstem
|
||||
1021 373 rmoveto
|
||||
-9 callsubr
|
||||
-944 -69 hlineto
|
||||
943 -222 rmoveto
|
||||
-9 callsubr
|
||||
-944 -69 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal_equal.liga">
|
||||
-11 callgsubr
|
||||
495 -4 callsubr
|
||||
1493 -222 -4 callsubr
|
||||
1493 -222 -4 callsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal_greater.liga">
|
||||
443 -1 -21 173 -9 callgsubr
|
||||
hstem
|
||||
1498 74 vstem
|
||||
1245 16 callgsubr
|
||||
124 -102 rlineto
|
||||
-1244 -69 1328 hlineto
|
||||
92 -76 rlineto
|
||||
-10 vlineto
|
||||
-81 -67 rlineto
|
||||
-1339 -69 1256 hlineto
|
||||
-140 -116 -32 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_greater.liga">
|
||||
-107 -1 -21 173 -9 callgsubr
|
||||
hstem
|
||||
948 74 vstem
|
||||
695 16 callgsubr
|
||||
124 -102 rlineto
|
||||
-694 -69 778 hlineto
|
||||
92 -76 rlineto
|
||||
-10 vlineto
|
||||
-81 -67 rlineto
|
||||
-789 -69 706 hlineto
|
||||
-140 -116 -32 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="exclam_equal.liga">
|
||||
-107 151 -25 callgsubr
|
||||
944 vstem
|
||||
646 373 rmoveto
|
||||
375 hlineto
|
||||
-9 callsubr
|
||||
-340 hlineto
|
||||
132 252 -69 32 -149 -284 rlineto
|
||||
-518 -69 482 hlineto
|
||||
-81 -153 rlineto
|
||||
-401 -69 365 hlineto
|
||||
-163 -311 71 -29 178 340 rlineto
|
||||
492 hlineto
|
||||
-9 callsubr
|
||||
-457 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="exclam_equal_equal.liga">
|
||||
-11 callgsubr
|
||||
273 rmoveto
|
||||
-9 callsubr
|
||||
-683 hlineto
|
||||
81 153 rlineto
|
||||
601 hlineto
|
||||
-9 callsubr
|
||||
-566 hlineto
|
||||
68 130 -69 32 -85 -162 rlineto
|
||||
-842 -69 806 hlineto
|
||||
-81 -153 rlineto
|
||||
-725 -69 689 hlineto
|
||||
-80 -153 rlineto
|
||||
-609 -69 573 hlineto
|
||||
-111 -211 71 -29 126 240 rlineto
|
||||
834 hlineto
|
||||
-9 callsubr
|
||||
-799 hlineto
|
||||
80 153 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="greater_equal.liga">
|
||||
-107 634 -20 88 -20 hstem
|
||||
741 114 vstem
|
||||
187 145 rmoveto
|
||||
35 -67 633 280 rlineto
|
||||
69 vlineto
|
||||
-627 275 -37 -68 550 -237 rlineto
|
||||
-10 vlineto
|
||||
114 -191 rmoveto
|
||||
-668 -291 35 -67 633 280 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_greater.liga">
|
||||
-107 -7 callsubr
|
||||
944 vstem
|
||||
695 16 callgsubr
|
||||
264 -217 rlineto
|
||||
-834 -69 835 hlineto
|
||||
-269 -223 -32 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_hyphen.liga">
|
||||
-107 258 69 hstem
|
||||
181 737 vstem
|
||||
492 258 rmoveto
|
||||
12 callgsubr
|
||||
731 hmoveto
|
||||
12 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_hyphen_greater.liga">
|
||||
443 -7 callsubr
|
||||
1494 vstem
|
||||
1245 16 callgsubr
|
||||
264 -217 rlineto
|
||||
-1384 -69 1385 hlineto
|
||||
-269 -223 -32 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_bar.liga">
|
||||
-107 704 -20 hstem
|
||||
216 75 448 75 vstem
|
||||
739 704 rmoveto
|
||||
-523 -378 rlineto
|
||||
-69 vlineto
|
||||
523 -439 rlineto
|
||||
75 892 hlineto
|
||||
-523 -423 rmoveto
|
||||
10 vlineto
|
||||
448 317 rlineto
|
||||
-701 vlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_equal.liga">
|
||||
-107 702 -20 hstem
|
||||
245 114 vstem
|
||||
913 145 rmoveto
|
||||
-554 242 rlineto
|
||||
10 vlineto
|
||||
550 237 -37 68 -627 -275 rlineto
|
||||
-69 vlineto
|
||||
633 -280 rlineto
|
||||
-633 118 rmoveto
|
||||
-78 vlineto
|
||||
633 -280 35 67 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_equal_equal.liga">
|
||||
443 -1 -21 173 -25 callgsubr
|
||||
75 vstem
|
||||
153 287 rmoveto
|
||||
10 vlineto
|
||||
92 76 rlineto
|
||||
1326 hlineto
|
||||
-9 callsubr
|
||||
-1244 hlineto
|
||||
124 103 -45 callgsubr
|
||||
-139 116 rlineto
|
||||
1254 hlineto
|
||||
-9 callsubr
|
||||
-1338 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_exclam_hyphen_hyphen.liga">
|
||||
993 -1 -21 22 110 148 69 hstemhm
|
||||
816 113.5 hintmask 01110000
|
||||
852 -18 callsubr
|
||||
-400 311 rmoveto
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
hintmask 10110000
|
||||
332 -279 46 57 -268 223 rlineto
|
||||
521 hlineto
|
||||
6 69 rlineto
|
||||
-526 hlineto
|
||||
860 hmoveto
|
||||
-69 1067 vlineto
|
||||
6 69 rlineto
|
||||
hintmask 01110000
|
||||
-1307 -327 10 callgsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_hyphen.liga">
|
||||
-107 -7 callsubr
|
||||
944 vstem
|
||||
1022 327 rmoveto
|
||||
-833 hlineto
|
||||
263 218 -45 callgsubr
|
||||
-268 223 rlineto
|
||||
828 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_hyphen_hyphen.liga">
|
||||
443 -7 callsubr
|
||||
1494 vstem
|
||||
1572 327 rmoveto
|
||||
-1383 hlineto
|
||||
263 218 -45 callgsubr
|
||||
-268 223 rlineto
|
||||
1378 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="plus_plus.liga">
|
||||
-107 259 68 hstem
|
||||
301 73 353 73 vstem
|
||||
800 327 rmoveto
|
||||
187 -73 -187 -353 9 callgsubr
|
||||
187 353 -187 73 187 176 vlineto
|
||||
1 68 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
</CharStrings>
|
||||
@@ -1,52 +1,120 @@
|
||||
<ttFont>
|
||||
<head>
|
||||
|
||||
|
||||
<!-- Most of this table will be recalculated by the compiler -->
|
||||
|
||||
|
||||
<tableVersion value="1.0"/>
|
||||
|
||||
|
||||
<fontRevision value="1.002"/>
|
||||
<checkSumAdjustment value="0x1cc640f7"/>
|
||||
|
||||
|
||||
|
||||
<magicNumber value="0x5f0f3cf5"/>
|
||||
|
||||
|
||||
<flags value="00000000 00000011"/>
|
||||
|
||||
|
||||
<unitsPerEm value="1000"/>
|
||||
<created value="Mon Oct 16 12:43:41 2017"/>
|
||||
<modified value="Mon Oct 16 12:43:41 2017"/>
|
||||
<xMin value="-339"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<xMin value="-1564"/>
|
||||
|
||||
|
||||
<yMin value="-288"/>
|
||||
<xMax value="2122"/>
|
||||
|
||||
|
||||
<xMax value="630"/>
|
||||
|
||||
|
||||
<yMax value="1144"/>
|
||||
|
||||
|
||||
<macStyle value="00000000 00000000"/>
|
||||
|
||||
|
||||
<lowestRecPPEM value="3"/>
|
||||
|
||||
|
||||
<fontDirectionHint value="2"/>
|
||||
|
||||
|
||||
<indexToLocFormat value="0"/>
|
||||
|
||||
|
||||
<glyphDataFormat value="0"/>
|
||||
|
||||
|
||||
</head>
|
||||
<hhea>
|
||||
|
||||
|
||||
<tableVersion value="0x00010000"/>
|
||||
|
||||
|
||||
<ascent value="960"/>
|
||||
|
||||
|
||||
<descent value="-240"/>
|
||||
|
||||
|
||||
<lineGap value="0"/>
|
||||
<advanceWidthMax value="2200"/>
|
||||
<minLeftSideBearing value="-339"/>
|
||||
|
||||
|
||||
<advanceWidthMax value="600"/>
|
||||
|
||||
|
||||
<minLeftSideBearing value="-1564"/>
|
||||
|
||||
|
||||
<minRightSideBearing value="-80"/>
|
||||
<xMaxExtent value="2122"/>
|
||||
|
||||
|
||||
<xMaxExtent value="630"/>
|
||||
|
||||
|
||||
<caretSlopeRise value="1"/>
|
||||
|
||||
|
||||
<caretSlopeRun value="0"/>
|
||||
|
||||
|
||||
<caretOffset value="0"/>
|
||||
|
||||
|
||||
<reserved0 value="0"/>
|
||||
|
||||
|
||||
<reserved1 value="0"/>
|
||||
|
||||
|
||||
<reserved2 value="0"/>
|
||||
|
||||
|
||||
<reserved3 value="0"/>
|
||||
|
||||
|
||||
<metricDataFormat value="0"/>
|
||||
<numberOfHMetrics value="454"/>
|
||||
|
||||
|
||||
<numberOfHMetrics value="466"/>
|
||||
|
||||
|
||||
</hhea>
|
||||
<CFF>
|
||||
<CFFFont>
|
||||
<FontBBox value="-339 -288 2122 1144"/>
|
||||
<FontBBox value="-1564 -288 638 1144"/>
|
||||
</CFFFont>
|
||||
</CFF>
|
||||
<CFF>
|
||||
<CFFFont>
|
||||
<Private>
|
||||
<nominalWidthX value="1207"/>
|
||||
<nominalWidthX value="107"/>
|
||||
</Private>
|
||||
</CFFFont>
|
||||
</CFF>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<Glyph name="LIG" lsb="0" width="550">
|
||||
<CharString>
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,65 @@
|
||||
<Glyph name="ampersand_ampersand.liga" lsb="-432" width="550">
|
||||
<CharString>
|
||||
-12 67 501 76 hstemhm
|
||||
-269 80 227 77 -4 80 hintmask 11110000
|
||||
316 169 rmoveto
|
||||
{78109b05} callsubr
|
||||
-79 -50 -44 -56 -8 -65 -14 16 rcurveline
|
||||
{78109b05} callsubr
|
||||
{63e41646} callsubr
|
||||
22 -27 47 -52 67 -22 rrcurveto
|
||||
-6 17 20 -4 23 hhcurveto
|
||||
64 -1 69 35 51 77 28 -34 31 -37 32 -41 65 51 rcurveline
|
||||
-41 50 -37 43 -33 38 rrcurveto
|
||||
-587 -114 {d2b30628} callgsubr
|
||||
380 hmoveto
|
||||
-55 -29 39 53 hvcurveto
|
||||
hintmask 11101000
|
||||
47 28 49 59 42 vhcurveto
|
||||
{71578616} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="78109b05">
|
||||
{1ffac2b6} callsubr
|
||||
{6ff78137} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="1ffac2b6">
|
||||
33 59 32 79 22 89 -70 9 rcurveline
|
||||
-14 -68 -21 -66 -23 -54 rrcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="6ff78137">
|
||||
-119 136 -55 59 52 vvcurveto
|
||||
54 42 46 163 -8 vhcurveto
|
||||
-6 76 rlineto
|
||||
-213 4 -66 -91 -86 vvcurveto
|
||||
-43 20 -40 40 -52 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="78109b05">
|
||||
{1ffac2b6} callsubr
|
||||
{6ff78137} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="63e41646">
|
||||
-88 -56 -45 -63 -75 vvcurveto
|
||||
-80 49 -62 95 64 64 34 77 51 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="d2b30628">
|
||||
rmoveto
|
||||
-55 -29 39 53 47 28 49 59 42 hvcurveto
|
||||
{71578616} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="71578616">
|
||||
32 -38 41 -46 48 -57 rrcurveto
|
||||
-61 -39 -43 -28 -42 hhcurveto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,23 @@
|
||||
<Glyph name="bar_bar.liga" lsb="-211" width="550">
|
||||
<CharString>
|
||||
-211 75 275 75 vstem
|
||||
-136 710 {92c1542b} callsubr
|
||||
350 892 {92c1542b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="92c1542b">
|
||||
rmoveto
|
||||
-75 -6 rlineto
|
||||
-886 75 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="92c1542b">
|
||||
rmoveto
|
||||
-75 -6 rlineto
|
||||
-886 75 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Glyph name="bar_greater.liga" lsb="-261" width="550">
|
||||
<CharString>
|
||||
-261 75 468 74 vstem
|
||||
-186 710 {92c1542b} callsubr
|
||||
541 440 rlineto
|
||||
69 vlineto
|
||||
-74 -40 rmoveto
|
||||
-467 -376 rlineto
|
||||
709 vlineto
|
||||
467 -323 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="92c1542b">
|
||||
rmoveto
|
||||
-75 -6 rlineto
|
||||
-886 75 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,52 @@
|
||||
<Glyph name="colon_equal.liga" lsb="-297" width="550">
|
||||
<CharString>
|
||||
{806e0ede} callsubr
|
||||
-297 658 vstem
|
||||
-297 354 {d5651823} callsubr
|
||||
657 -98 {039fe050} callgsubr
|
||||
-235 -245 {d5651823} callsubr
|
||||
657 -94 {039fe050} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="806e0ede">
|
||||
{03f44ce8} callgsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d5651823">
|
||||
rmoveto
|
||||
118 hlineto
|
||||
2 117 {219083fd} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="b0478dca">
|
||||
rmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="219083fd">
|
||||
rlineto
|
||||
-119 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="039fe050">
|
||||
{b0478dca} callsubr
|
||||
-424 -69 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,48 @@
|
||||
<Glyph name="equal_equal.2.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{806e0ede} callsubr
|
||||
-472 944 vstem
|
||||
-49 373 {039fe050} callgsubr
|
||||
943 {95b16fa7} callgsubr
|
||||
-414 -69 hlineto
|
||||
-107 -222 {039fe050} callgsubr
|
||||
943 {95b16fa7} callgsubr
|
||||
-414 -69 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="806e0ede">
|
||||
{03f44ce8} callgsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b0478dca">
|
||||
rmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="039fe050">
|
||||
{b0478dca} callsubr
|
||||
-424 -69 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="95b16fa7">
|
||||
hmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,40 @@
|
||||
<Glyph name="equal_equal.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{806e0ede} callsubr
|
||||
-472 944 vstem
|
||||
471 373 {b0478dca} callsubr
|
||||
-944 -69 hlineto
|
||||
943 {dbbb91b3} callgsubr
|
||||
-944 -69 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="806e0ede">
|
||||
{03f44ce8} callgsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b0478dca">
|
||||
rmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="dbbb91b3">
|
||||
-222 {b0478dca} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,48 @@
|
||||
<Glyph name="equal_equal_equal.2.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{806e0ede} callsubr
|
||||
-1022 1494 vstem
|
||||
-579 373 {b3fa3b3b} callgsubr
|
||||
-607 -222 {b3fa3b3b} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="806e0ede">
|
||||
{03f44ce8} callgsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b3fa3b3b">
|
||||
rmoveto
|
||||
1 69 rlineto
|
||||
-444 -69 hlineto
|
||||
968 hmoveto
|
||||
{85a4851d} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="85a4851d">
|
||||
{4124c3a1} callgsubr
|
||||
968 hmoveto
|
||||
{4124c3a1} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4124c3a1">
|
||||
{16905bc3} callsubr
|
||||
-444 -69 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Glyph name="equal_equal_equal.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
40 69 153 {2a39309a} callsubr
|
||||
hstem
|
||||
-1022 1494 cntrmask 11100000
|
||||
471 484 {b0478dca} callsubr
|
||||
-1494 -69 hlineto
|
||||
1493 {dbbb91b3} callgsubr
|
||||
-1494 -69 hlineto
|
||||
1493 {dbbb91b3} callgsubr
|
||||
-1494 -69 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b0478dca">
|
||||
rmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="dbbb91b3">
|
||||
-222 {b0478dca} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="dbbb91b3">
|
||||
-222 {b0478dca} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,56 @@
|
||||
<Glyph name="equal_equal_greater.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{806e0ede} callsubr
|
||||
-1022 394 1019 74 vstem
|
||||
{d4d5756e} callgsubr
|
||||
-1237 -69 1321 hlineto
|
||||
{53342509} callsubr
|
||||
-1332 -69 1249 {6c481ea1} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="806e0ede">
|
||||
{03f44ce8} callgsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="53342509">
|
||||
92 -76 rlineto
|
||||
-10 vlineto
|
||||
-81 -67 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="6c481ea1">
|
||||
hlineto
|
||||
-140 -116 {f9e588f2} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="d4d5756e">
|
||||
{d95d51dd} callgsubr
|
||||
124 -102 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,58 @@
|
||||
<Glyph name="equal_greater.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{f3caf16b} callgsubr
|
||||
-472 937 -74 74 hintmask 11100000
|
||||
{d4d5756e} callgsubr
|
||||
-687 -69 771 hlineto
|
||||
hintmask 11010000
|
||||
{53342509} callsubr
|
||||
hintmask 11100000
|
||||
-782 -69 699 {6c481ea1} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="53342509">
|
||||
92 -76 rlineto
|
||||
-10 vlineto
|
||||
-81 -67 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="6c481ea1">
|
||||
hlineto
|
||||
-140 -116 {f9e588f2} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d4d5756e">
|
||||
{d95d51dd} callgsubr
|
||||
124 -102 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,59 @@
|
||||
<Glyph name="equal_less_less.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{f3caf16b} callgsubr
|
||||
-1022 1486 -688 75 235 75 hintmask 11011000
|
||||
-149 297 rmoveto
|
||||
{8a45f119} callsubr
|
||||
hintmask 11100000
|
||||
-936 -69 854 hlineto
|
||||
hintmask 11011000
|
||||
{80e97e3f} callsubr
|
||||
hintmask 11100000
|
||||
-842 -69 924 hlineto
|
||||
206 -173 46 57 rlineto
|
||||
hintmask 11011000
|
||||
-303 252 rlineto
|
||||
310 hmoveto
|
||||
10 vlineto
|
||||
299 248 {b5c7d737} callsubr
|
||||
rlineto
|
||||
hintmask 11100000
|
||||
46 57 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="8a45f119">
|
||||
299 248 -45 58 -191 -161 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="80e97e3f">
|
||||
-56 -47 rlineto
|
||||
-69 vlineto
|
||||
44 -37 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,53 @@
|
||||
<Glyph name="exclam_equal.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{749ae412} callsubr
|
||||
-575 {2a39309a} callsubr
|
||||
hstemhm
|
||||
-472 944 -762 534 hintmask 00110000
|
||||
76 373 rmoveto
|
||||
395 {9988f976} callgsubr
|
||||
-360 hlineto
|
||||
hintmask 00101000
|
||||
132 252 rlineto
|
||||
hintmask 10001000
|
||||
-69 32 rlineto
|
||||
hintmask 00101000
|
||||
-149 -284 rlineto
|
||||
-498 -69 462 hlineto
|
||||
hintmask 01101000
|
||||
-81 -153 rlineto
|
||||
-381 -69 345 hlineto
|
||||
-163 -311 rlineto
|
||||
hintmask 10001000
|
||||
71 -29 rlineto
|
||||
hintmask 01101000
|
||||
178 340 rlineto
|
||||
512 {9988f976} callgsubr
|
||||
-477 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="749ae412">
|
||||
-189 915 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,63 @@
|
||||
<Glyph name="exclam_equal_equal.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{749ae412} callsubr
|
||||
-686 69 153 {2a39309a} callsubr
|
||||
hstemhm
|
||||
-1022 1494 -1012 534 cntrmask 01110000
|
||||
hintmask 01111000
|
||||
471 262 {b0478dca} callsubr
|
||||
-668 hlineto
|
||||
80 153 rlineto
|
||||
587 {9988f976} callgsubr
|
||||
-552 hlineto
|
||||
hintmask 01110100
|
||||
74 141 rlineto
|
||||
hintmask 10000100
|
||||
-69 32 rlineto
|
||||
hintmask 01110100
|
||||
-91 -173 rlineto
|
||||
-856 -69 820 hlineto
|
||||
-80 -153 rlineto
|
||||
-740 -69 703 hlineto
|
||||
-80 -153 rlineto
|
||||
-623 -69 587 hlineto
|
||||
-105 -200 rlineto
|
||||
hintmask 10000100
|
||||
71 -29 rlineto
|
||||
hintmask 01110100
|
||||
120 229 rlineto
|
||||
820 {9988f976} callgsubr
|
||||
-785 hlineto
|
||||
80 153 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="749ae412">
|
||||
-189 915 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b0478dca">
|
||||
rmoveto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,31 @@
|
||||
<Glyph name="greater_equal.2.liga" lsb="-308" width="600">
|
||||
<CharString>
|
||||
493 -141 69 390 {045cf5af} callgsubr
|
||||
-79 vlineto
|
||||
615 302 {f7a1359d} callgsubr
|
||||
-488 rmoveto
|
||||
69 -615 -69 vlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="fec1189a">
|
||||
-247 rlineto
|
||||
-10 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="045cf5af">
|
||||
69 hstem
|
||||
-308 615 vstem
|
||||
-308 95 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f7a1359d">
|
||||
rlineto
|
||||
69 vlineto
|
||||
-574 280 -37 -63 512 {fec1189a} callsubr
|
||||
99 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,31 @@
|
||||
<Glyph name="greater_equal.liga" lsb="-308" width="550">
|
||||
<CharString>
|
||||
138 77 103 {045cf5af} callgsubr
|
||||
31 -64 584 287 {f7a1359d} callgsubr
|
||||
-209 rmoveto
|
||||
77 vlineto
|
||||
-615 -300 31 -64 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="fec1189a">
|
||||
-247 rlineto
|
||||
-10 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="045cf5af">
|
||||
69 hstem
|
||||
-308 615 vstem
|
||||
-308 95 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f7a1359d">
|
||||
rlineto
|
||||
69 vlineto
|
||||
-574 280 -37 -63 512 {fec1189a} callsubr
|
||||
99 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,93 @@
|
||||
<Glyph name="greater_equal_greater.liga" lsb="-1013" width="550">
|
||||
<CharString>
|
||||
{f3caf16b} callgsubr
|
||||
-1013 1478 -1174 74 1026 74 hintmask 11100000
|
||||
{d4d5756e} callgsubr
|
||||
-987 {f6058c5b} callgsubr
|
||||
hintmask 11010000
|
||||
{23088cc1} callsubr
|
||||
206 173 rlineto
|
||||
989 {e779a49c} callsubr
|
||||
-990 hlineto
|
||||
hintmask 11010000
|
||||
45 38 rlineto
|
||||
69 vlineto
|
||||
-55 46 rlineto
|
||||
989 {9b0fa5a4} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="23088cc1">
|
||||
{4f167383} callsubr
|
||||
hintmask 11100000
|
||||
{f20bf050} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4f167383">
|
||||
300 {fec1189a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="fec1189a">
|
||||
-247 rlineto
|
||||
-10 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="e779a49c">
|
||||
{6c481ea1} callsubr
|
||||
hintmask 11001000
|
||||
-74 -40 rmoveto
|
||||
-81 -67 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="6c481ea1">
|
||||
hlineto
|
||||
-140 -116 {f9e588f2} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="7" fingerprint="9b0fa5a4">
|
||||
hlineto
|
||||
hintmask 11001000
|
||||
92 -76 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d4d5756e">
|
||||
{d95d51dd} callgsubr
|
||||
124 -102 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="f6058c5b">
|
||||
hlineto
|
||||
-190 160 -47 -58 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="f20bf050">
|
||||
-304 -252 45 -57 return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,73 @@
|
||||
<Glyph name="greater_greater_equal.liga" lsb="-1013" width="550">
|
||||
<CharString>
|
||||
{f3caf16b} callgsubr
|
||||
-1013 1485 -1181 74 236 74 hintmask 11011000
|
||||
-635 327 rmoveto
|
||||
-327 275 -47 -58 {23088cc1} callsubr
|
||||
rlineto
|
||||
hintmask 11011000
|
||||
333 280 rlineto
|
||||
310 hmoveto
|
||||
69 vlineto
|
||||
-55 46 rlineto
|
||||
hintmask 11100000
|
||||
851 {9988f976} callgsubr
|
||||
-934 {f6058c5b} callgsubr
|
||||
hintmask 11001000
|
||||
{4f167383} callsubr
|
||||
{f20bf050} callgsubr
|
||||
206 173 rlineto
|
||||
hintmask 11100000
|
||||
923 {9988f976} callgsubr
|
||||
-842 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="23088cc1">
|
||||
{4f167383} callsubr
|
||||
hintmask 11100000
|
||||
{f20bf050} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="4f167383">
|
||||
300 {fec1189a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="fec1189a">
|
||||
-247 rlineto
|
||||
-10 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f20bf050">
|
||||
-304 -252 45 -57 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="f6058c5b">
|
||||
hlineto
|
||||
-190 160 -47 -58 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,46 @@
|
||||
<Glyph name="hyphen_greater.liga" lsb="-431" width="550">
|
||||
<CharString>
|
||||
{05172461} callsubr
|
||||
-431 896 {523bf78f} callsubr
|
||||
-786 -69 787 {946ed192} callgsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="05172461">
|
||||
258 69 hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="523bf78f">
|
||||
{1bf9d7d7} callsubr
|
||||
264 -217 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="1bf9d7d7">
|
||||
vstem
|
||||
{d95d51dd} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="946ed192">
|
||||
hlineto
|
||||
-269 -223 {f8ffdd53} callgsubr
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f8ffdd53">
|
||||
{f9e588f2} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,23 @@
|
||||
<Glyph name="hyphen_hyphen.liga" lsb="-341" width="550">
|
||||
<CharString>
|
||||
{05172461} callsubr
|
||||
-341 317 63 317 vstem
|
||||
-30 258 rmoveto
|
||||
{33ce0eb6} callsubr
|
||||
691 hmoveto
|
||||
{33ce0eb6} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="05172461">
|
||||
258 69 hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="33ce0eb6">
|
||||
6 69 rlineto
|
||||
-317 -69 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,46 @@
|
||||
<Glyph name="hyphen_hyphen_greater.liga" lsb="-981" width="550">
|
||||
<CharString>
|
||||
{05172461} callsubr
|
||||
-981 1446 {523bf78f} callsubr
|
||||
-1336 -69 1337 {946ed192} callgsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="05172461">
|
||||
258 69 hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="523bf78f">
|
||||
{1bf9d7d7} callsubr
|
||||
264 -217 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="1bf9d7d7">
|
||||
vstem
|
||||
{d95d51dd} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="946ed192">
|
||||
hlineto
|
||||
-269 -223 {f8ffdd53} callgsubr
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f8ffdd53">
|
||||
{f9e588f2} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,17 @@
|
||||
<Glyph name="less_bar.liga" lsb="-354" width="550">
|
||||
<CharString>
|
||||
-354 75 450 75 vstem
|
||||
169 704 rmoveto
|
||||
-523 -378 rlineto
|
||||
-69 vlineto
|
||||
523 -439 rlineto
|
||||
75 892 hlineto
|
||||
-523 -423 rmoveto
|
||||
10 vlineto
|
||||
448 317 rlineto
|
||||
-700 vlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Glyph name="less_equal.2.liga" lsb="-283" width="600">
|
||||
<CharString>
|
||||
493 -141 69 hstem
|
||||
-283 99 vstem
|
||||
332 {fc11b4c5} callsubr
|
||||
615 -302 rlineto
|
||||
-615 -157 rmoveto
|
||||
615 69 -615 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="fc11b4c5">
|
||||
95 rmoveto
|
||||
-516 252 rlineto
|
||||
10 vlineto
|
||||
512 247 -37 63 -574 -280 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Glyph name="less_equal.liga" lsb="-303" width="550">
|
||||
<CharString>
|
||||
138 77 103 69 hstem
|
||||
-303 615 vstem
|
||||
312 {fc11b4c5} callsubr
|
||||
584 -287 rlineto
|
||||
-584 107 rmoveto
|
||||
584 -287 31 64 -615 300 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="fc11b4c5">
|
||||
95 rmoveto
|
||||
-516 252 rlineto
|
||||
10 vlineto
|
||||
512 247 -37 63 -574 -280 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,63 @@
|
||||
<Glyph name="less_equal_equal.liga" lsb="-1014" width="550">
|
||||
<CharString>
|
||||
{e5de916d} callgsubr
|
||||
1486 hintmask 11100000
|
||||
-939 287 rmoveto
|
||||
10 vlineto
|
||||
92 76 rlineto
|
||||
hintmask 11010000
|
||||
1318 {9988f976} callgsubr
|
||||
-1236 {4e43c992} callgsubr
|
||||
1246 {9988f976} callgsubr
|
||||
-1330 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="16905bc3">
|
||||
1 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="e5de916d">
|
||||
{f3caf16b} callgsubr
|
||||
-1014 75 -75 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="9988f976">
|
||||
hlineto
|
||||
{16905bc3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="4e43c992">
|
||||
hlineto
|
||||
124 103 {5a448ea3} callgsubr
|
||||
-139 116 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,94 @@
|
||||
<Glyph name="less_equal_greater.liga" lsb="-1014" width="550">
|
||||
<CharString>
|
||||
{e5de916d} callgsubr
|
||||
1479 -74 74 hintmask 11010000
|
||||
{d4d5756e} callgsubr
|
||||
-979 {4e43c992} callgsubr
|
||||
1002 {e779a49c} callsubr
|
||||
-1168 hlineto
|
||||
hintmask 11100000
|
||||
{0541aa7a} callsubr
|
||||
1146 {9b0fa5a4} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="e779a49c">
|
||||
{6c481ea1} callsubr
|
||||
hintmask 11001000
|
||||
-74 -40 rmoveto
|
||||
-81 -67 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="6c481ea1">
|
||||
hlineto
|
||||
-140 -116 {f9e588f2} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="0541aa7a">
|
||||
-81 67 rlineto
|
||||
10 vlineto
|
||||
92 76 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="7" fingerprint="9b0fa5a4">
|
||||
hlineto
|
||||
hintmask 11001000
|
||||
92 -76 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="e5de916d">
|
||||
{f3caf16b} callgsubr
|
||||
-1014 75 -75 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="d4d5756e">
|
||||
{d95d51dd} callgsubr
|
||||
124 -102 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="d95d51dd">
|
||||
138 {2e66eddf} callsubr
|
||||
-47 -58 return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="4e43c992">
|
||||
hlineto
|
||||
124 103 {5a448ea3} callgsubr
|
||||
-139 116 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
<CharString index="7" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,75 @@
|
||||
<Glyph name="less_equal_less.liga" lsb="-1014" width="550">
|
||||
<CharString>
|
||||
{e5de916d} callgsubr
|
||||
1478 -378 75 hintmask 11101000
|
||||
418 -22 rmoveto
|
||||
hintmask 11010000
|
||||
46 57 -222 185 rlineto
|
||||
hintmask 11101000
|
||||
-81 67 rlineto
|
||||
10 vlineto
|
||||
{8a45f119} callsubr
|
||||
-988 {4e43c992} callgsubr
|
||||
987 hlineto
|
||||
-1070 69 rmoveto
|
||||
{0541aa7a} callsubr
|
||||
989 hlineto
|
||||
{80e97e3f} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="8a45f119">
|
||||
299 248 -45 58 -191 -161 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="0541aa7a">
|
||||
-81 67 rlineto
|
||||
10 vlineto
|
||||
92 76 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="80e97e3f">
|
||||
-56 -47 rlineto
|
||||
-69 vlineto
|
||||
44 -37 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="e5de916d">
|
||||
{f3caf16b} callgsubr
|
||||
-1014 75 -75 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f3caf16b">
|
||||
{03f44ce8} callgsubr
|
||||
hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4e43c992">
|
||||
hlineto
|
||||
124 103 {5a448ea3} callgsubr
|
||||
-139 116 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,54 @@
|
||||
<Glyph name="less_exclam_hyphen_hyphen.liga" lsb="-1564" width="550">
|
||||
<CharString>
|
||||
0 110 148 69 hstemhm
|
||||
-884 114 -78 84 hintmask 11010000
|
||||
-848 {67998929} callgsubr
|
||||
-342 311 rmoveto
|
||||
{a2b8be51} callgsubr
|
||||
384 hlineto
|
||||
6 69 rlineto
|
||||
-389 hlineto
|
||||
872 hmoveto
|
||||
-69 1011 vlineto
|
||||
6 69 rlineto
|
||||
hintmask 11100000
|
||||
-1321 -327 {e88c39b2} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="e88c39b2">
|
||||
rmoveto
|
||||
113 hlineto
|
||||
3 110 rlineto
|
||||
-114 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="67998929">
|
||||
234 rmoveto
|
||||
53 hlineto
|
||||
2 87 25 264 4 91 rrcurveto
|
||||
-103 hlineto
|
||||
2 -91 17 -264 -87 vvcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="a2b8be51">
|
||||
{5a448ea3} callgsubr
|
||||
-268 223 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,37 @@
|
||||
<Glyph name="less_hyphen.liga" lsb="-464" width="550">
|
||||
<CharString>
|
||||
{05172461} callsubr
|
||||
-464 900 vstem
|
||||
436 327 rmoveto
|
||||
-789 hlineto
|
||||
263 218 {a2b8be51} callgsubr
|
||||
784 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="05172461">
|
||||
258 69 hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="a2b8be51">
|
||||
{5a448ea3} callgsubr
|
||||
-268 223 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,37 @@
|
||||
<Glyph name="less_hyphen_hyphen.liga" lsb="-1014" width="550">
|
||||
<CharString>
|
||||
{05172461} callsubr
|
||||
-1014 1450 vstem
|
||||
436 327 rmoveto
|
||||
-1339 hlineto
|
||||
263 218 {a2b8be51} callgsubr
|
||||
1334 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="05172461">
|
||||
258 69 hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b5c7d737">
|
||||
{f3a774e8} callsubr
|
||||
332 -279 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="a2b8be51">
|
||||
{5a448ea3} callgsubr
|
||||
-268 223 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="5a448ea3">
|
||||
{b5c7d737} callsubr
|
||||
46 57 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,24 @@
|
||||
<Glyph name="less_slash.liga" lsb="-464" width="550">
|
||||
<CharString>
|
||||
{749ae412} callsubr
|
||||
hstem
|
||||
-464 75 182 534 vstem
|
||||
258 726 rmoveto
|
||||
-357 -680 -290 241 rlineto
|
||||
10 vlineto
|
||||
299 248 {f3a774e8} callsubr
|
||||
330 -277 -73 -140 71 -29 463 883 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="749ae412">
|
||||
-189 915 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f3a774e8">
|
||||
-45 58 -329 -277 rlineto
|
||||
-69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,17 @@
|
||||
<Glyph name="plus_plus.liga" lsb="-428" width="550">
|
||||
<CharString>
|
||||
259 68 hstem
|
||||
-250 73 352 73 vstem
|
||||
248 327 rmoveto
|
||||
187 -73 -187 -352 {3259c3e8} callgsubr
|
||||
187 352 -187 73 187 176 vlineto
|
||||
1 68 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="3259c3e8">
|
||||
187 -73 -187 -178 -68 178 -187 73 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,50 @@
|
||||
<Glyph name="question_question.liga" lsb="-395" width="550">
|
||||
<CharString>
|
||||
0 109 493 76 hstem
|
||||
-304 {8aa986d8} callsubr
|
||||
86 73 {8aa986d8} callsubr
|
||||
86 vstem
|
||||
-387 678 rmoveto
|
||||
{9ecc4586} callgsubr
|
||||
380 hmoveto
|
||||
{9ecc4586} callgsubr
|
||||
-298 -678 {d2717239} callgsubr
|
||||
378 -109 {d2717239} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="8aa986d8">
|
||||
111 110 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="8aa986d8">
|
||||
111 110 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="9ecc4586">
|
||||
-8 -76 rlineto
|
||||
252 -16 60 -40 -47 vvcurveto
|
||||
-72 -180 -55 -8 -143 vhcurveto
|
||||
57 -1 rlineto
|
||||
14 129 203 51 110 vvcurveto
|
||||
79 -88 65 -302 16 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="9ecc4586">
|
||||
-8 -76 rlineto
|
||||
252 -16 60 -40 -47 vvcurveto
|
||||
-72 -180 -55 -8 -143 vhcurveto
|
||||
57 -1 rlineto
|
||||
14 129 203 51 110 vvcurveto
|
||||
79 -88 65 -302 16 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d2717239">
|
||||
rmoveto
|
||||
110 hlineto
|
||||
3 109 rlineto
|
||||
-111 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,35 @@
|
||||
<Glyph name="slash_greater.liga" lsb="-347" width="550">
|
||||
<CharString>
|
||||
{749ae412} callsubr
|
||||
hstem
|
||||
-347 534 204 74 vstem
|
||||
139 {2e66eddf} callsubr
|
||||
48 92 {88f7ced4} callgsubr
|
||||
379 723 288 -237 rlineto
|
||||
-10 vlineto
|
||||
-304 -252 {f8ffdd53} callgsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="749ae412">
|
||||
-189 915 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2e66eddf">
|
||||
602 rmoveto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="88f7ced4">
|
||||
-69 32 -465 -886 71 -29 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f8ffdd53">
|
||||
{f9e588f2} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="f9e588f2">
|
||||
45 -57 333 280 rlineto
|
||||
69 vlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Glyph name="underscore_underscore.liga" lsb="-560" width="550">
|
||||
<CharString>
|
||||
-116 66 hstem
|
||||
-560 1120 vstem
|
||||
560 -50 rmoveto
|
||||
-1120 -66 1120 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Glyph name="uniE0A0" code="0xe0a0" lsb="6" width="550">
|
||||
<CharString>
|
||||
-59 53 160 104 264 54 53 53 hstemhm
|
||||
6 53 0 105 0 53 106 53 0 105 0 53 hintmask 1111010101000000
|
||||
428 576 rmoveto
|
||||
-58 -47 -47 -60 hvcurveto
|
||||
hintmask 1111010010000000
|
||||
-38 22 -34 31 -18 vhcurveto
|
||||
-15 vlineto
|
||||
-53 -53 -53 -53 -44 -34 -9 -15 -28 vhcurveto
|
||||
251 vlineto
|
||||
hintmask 1111101101000000
|
||||
31 17 22 34 40 vvcurveto
|
||||
58 -47 48 -58 -60 -46 -48 -58 vhcurveto
|
||||
hintmask 1111010101000000
|
||||
-40 21 -34 32 -17 vhcurveto
|
||||
-347 vlineto
|
||||
hintmask 1111101010000000
|
||||
-32 -17 -21 -34 -40 vvcurveto
|
||||
-58 46 -48 60 58 47 48 58 29 -11 25 -17 19 vhcurveto
|
||||
18 16 24 16 41 hhcurveto
|
||||
106 105 105 106 hvcurveto
|
||||
14 vlineto
|
||||
hintmask 1111010101000000
|
||||
32 19 21 34 38 vvcurveto
|
||||
59 -46 47 -60 vhcurveto
|
||||
hintmask 1111101101000000
|
||||
-316 53 rmoveto
|
||||
28 24 -24 -29 -30 -24 -24 -28 -30 -23 24 30 29 23 24 30 hvcurveto
|
||||
316 -212 rmoveto
|
||||
-28 -24 24 28 30 24 23 28 30 23 -23 -30 -28 -23 -24 -30 hvcurveto
|
||||
-316 -423 rmoveto
|
||||
-30 -23 23 30 29 23 24 30 28 24 -24 -29 -30 -24 -23 -28 hvcurveto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Glyph name="uniE0B0" code="0xe0b0" lsb="-20" width="550">
|
||||
<CharString>
|
||||
{99cad421} callsubr
|
||||
609 313 rmoveto
|
||||
-627 581 -2 -1099 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="99cad421">
|
||||
-205 1099 hstem
|
||||
-20 629 vstem
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Glyph name="uniE0B2" code="0xe0b2" lsb="-20" width="550">
|
||||
<CharString>
|
||||
{99cad421} callsubr
|
||||
-20 313 rmoveto
|
||||
629 -518 -2 1099 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="99cad421">
|
||||
-205 1099 hstem
|
||||
-20 629 vstem
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -1,164 +0,0 @@
|
||||
<GPOS>
|
||||
<Version value="0x00010000"/>
|
||||
<ScriptList>
|
||||
<!-- ScriptCount=2 -->
|
||||
<ScriptRecord index="0">
|
||||
<ScriptTag value="DFLT"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="0"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=0 -->
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
<ScriptRecord index="1">
|
||||
<ScriptTag value="latn"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="1"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=3 -->
|
||||
<LangSysRecord index="0">
|
||||
<LangSysTag value="CAT "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="2"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="1">
|
||||
<LangSysTag value="MOL "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="3"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="2">
|
||||
<LangSysTag value="ROM "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="4"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
</ScriptList>
|
||||
<FeatureList>
|
||||
<!-- FeatureCount=5 -->
|
||||
<FeatureRecord index="0">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="1">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="2">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="3">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="4">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
</FeatureList>
|
||||
<LookupList>
|
||||
<!-- LookupCount=1 -->
|
||||
<Lookup index="0">
|
||||
<LookupType value="2"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<PairPos index="0" Format="2">
|
||||
<Coverage Format="2">
|
||||
<Glyph value="zero.num"/>
|
||||
<Glyph value="one.num"/>
|
||||
<Glyph value="two.num"/>
|
||||
<Glyph value="three.num"/>
|
||||
<Glyph value="four.num"/>
|
||||
<Glyph value="five.num"/>
|
||||
<Glyph value="six.num"/>
|
||||
<Glyph value="seven.num"/>
|
||||
<Glyph value="eight.num"/>
|
||||
<Glyph value="nine.num"/>
|
||||
<Glyph value="fraction.afrc"/>
|
||||
</Coverage>
|
||||
<ValueFormat1 value="4"/>
|
||||
<ValueFormat2 value="0"/>
|
||||
<ClassDef1 Format="2">
|
||||
<ClassDef glyph="eight.num" class="1"/>
|
||||
<ClassDef glyph="five.num" class="1"/>
|
||||
<ClassDef glyph="four.num" class="1"/>
|
||||
<ClassDef glyph="nine.num" class="1"/>
|
||||
<ClassDef glyph="one.num" class="1"/>
|
||||
<ClassDef glyph="seven.num" class="1"/>
|
||||
<ClassDef glyph="six.num" class="1"/>
|
||||
<ClassDef glyph="three.num" class="1"/>
|
||||
<ClassDef glyph="two.num" class="1"/>
|
||||
<ClassDef glyph="zero.num" class="1"/>
|
||||
</ClassDef1>
|
||||
<ClassDef2 Format="2">
|
||||
<ClassDef glyph="eight.den" class="1"/>
|
||||
<ClassDef glyph="five.den" class="1"/>
|
||||
<ClassDef glyph="four.den" class="1"/>
|
||||
<ClassDef glyph="fraction.afrc" class="2"/>
|
||||
<ClassDef glyph="nine.den" class="1"/>
|
||||
<ClassDef glyph="one.den" class="1"/>
|
||||
<ClassDef glyph="seven.den" class="1"/>
|
||||
<ClassDef glyph="six.den" class="1"/>
|
||||
<ClassDef glyph="three.den" class="1"/>
|
||||
<ClassDef glyph="two.den" class="1"/>
|
||||
<ClassDef glyph="zero.den" class="1"/>
|
||||
</ClassDef2>
|
||||
<!-- Class1Count=2 -->
|
||||
<!-- Class2Count=3 -->
|
||||
<Class1Record index="0">
|
||||
<Class2Record index="0">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="1">
|
||||
<Value1 XAdvance="-550"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="2">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
</Class1Record>
|
||||
<Class1Record index="1">
|
||||
<Class2Record index="0">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="1">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="2">
|
||||
<Value1 XAdvance="-550"/>
|
||||
</Class2Record>
|
||||
</Class1Record>
|
||||
</PairPos>
|
||||
</Lookup>
|
||||
</LookupList>
|
||||
</GPOS>
|
||||
@@ -1,407 +0,0 @@
|
||||
<GSUB>
|
||||
<Version value="0x00010000"/>
|
||||
<ScriptList>
|
||||
<!-- ScriptCount=2 -->
|
||||
<ScriptRecord index="0">
|
||||
<ScriptTag value="DFLT"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=4 -->
|
||||
<FeatureIndex index="0" value="0"/>
|
||||
<FeatureIndex index="1" value="5"/>
|
||||
<FeatureIndex index="2" value="10"/>
|
||||
<FeatureIndex index="3" value="15"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=0 -->
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
<ScriptRecord index="1">
|
||||
<ScriptTag value="latn"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=4 -->
|
||||
<FeatureIndex index="0" value="1"/>
|
||||
<FeatureIndex index="1" value="6"/>
|
||||
<FeatureIndex index="2" value="11"/>
|
||||
<FeatureIndex index="3" value="16"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=3 -->
|
||||
<LangSysRecord index="0">
|
||||
<LangSysTag value="CAT "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=5 -->
|
||||
<FeatureIndex index="0" value="2"/>
|
||||
<FeatureIndex index="1" value="7"/>
|
||||
<FeatureIndex index="2" value="12"/>
|
||||
<FeatureIndex index="3" value="17"/>
|
||||
<FeatureIndex index="4" value="20"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="1">
|
||||
<LangSysTag value="MOL "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=5 -->
|
||||
<FeatureIndex index="0" value="3"/>
|
||||
<FeatureIndex index="1" value="8"/>
|
||||
<FeatureIndex index="2" value="13"/>
|
||||
<FeatureIndex index="3" value="18"/>
|
||||
<FeatureIndex index="4" value="21"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="2">
|
||||
<LangSysTag value="ROM "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=5 -->
|
||||
<FeatureIndex index="0" value="4"/>
|
||||
<FeatureIndex index="1" value="9"/>
|
||||
<FeatureIndex index="2" value="14"/>
|
||||
<FeatureIndex index="3" value="19"/>
|
||||
<FeatureIndex index="4" value="22"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
</ScriptList>
|
||||
<FeatureList>
|
||||
<!-- FeatureCount=23 -->
|
||||
<FeatureRecord index="0">
|
||||
<FeatureTag value="aalt"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="1">
|
||||
<FeatureTag value="aalt"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="2">
|
||||
<FeatureTag value="aalt"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="3">
|
||||
<FeatureTag value="aalt"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="4">
|
||||
<FeatureTag value="aalt"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="5">
|
||||
<FeatureTag value="dlig"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="5"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="6">
|
||||
<FeatureTag value="dlig"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="5"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="7">
|
||||
<FeatureTag value="dlig"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="5"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="8">
|
||||
<FeatureTag value="dlig"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="5"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="9">
|
||||
<FeatureTag value="dlig"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="5"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="10">
|
||||
<FeatureTag value="frac"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="4"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="11">
|
||||
<FeatureTag value="frac"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="4"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="12">
|
||||
<FeatureTag value="frac"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="4"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="13">
|
||||
<FeatureTag value="frac"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="4"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="14">
|
||||
<FeatureTag value="frac"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="4"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="15">
|
||||
<FeatureTag value="liga"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="6"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="16">
|
||||
<FeatureTag value="liga"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="6"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="17">
|
||||
<FeatureTag value="liga"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="6"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="18">
|
||||
<FeatureTag value="liga"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="6"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="19">
|
||||
<FeatureTag value="liga"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="6"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="20">
|
||||
<FeatureTag value="locl"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="1"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="21">
|
||||
<FeatureTag value="locl"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="3"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="22">
|
||||
<FeatureTag value="locl"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="2"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
</FeatureList>
|
||||
<LookupList>
|
||||
<!-- LookupCount=8 -->
|
||||
<Lookup index="0">
|
||||
<LookupType value="1"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<SingleSubst index="0" Format="1">
|
||||
<Substitution in="Scedilla" out="uni0218"/>
|
||||
<Substitution in="scedilla" out="uni0219"/>
|
||||
</SingleSubst>
|
||||
</Lookup>
|
||||
<Lookup index="1">
|
||||
<LookupType value="6"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=2 -->
|
||||
<ChainContextSubst index="0" Format="3">
|
||||
<!-- BacktrackGlyphCount=0 -->
|
||||
<!-- InputGlyphCount=2 -->
|
||||
<InputCoverage index="0" Format="1">
|
||||
<Glyph value="l"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1" Format="1">
|
||||
<Glyph value="periodcentered"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=1 -->
|
||||
<LookAheadCoverage index="0" Format="1">
|
||||
<Glyph value="l"/>
|
||||
</LookAheadCoverage>
|
||||
<!-- SubstCount=1 -->
|
||||
<SubstLookupRecord index="0">
|
||||
<SequenceIndex value="0"/>
|
||||
<LookupListIndex value="7"/>
|
||||
</SubstLookupRecord>
|
||||
</ChainContextSubst>
|
||||
<ChainContextSubst index="1" Format="3">
|
||||
<!-- BacktrackGlyphCount=0 -->
|
||||
<!-- InputGlyphCount=2 -->
|
||||
<InputCoverage index="0" Format="1">
|
||||
<Glyph value="L"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1" Format="1">
|
||||
<Glyph value="periodcentered"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=1 -->
|
||||
<LookAheadCoverage index="0" Format="1">
|
||||
<Glyph value="L"/>
|
||||
</LookAheadCoverage>
|
||||
<!-- SubstCount=1 -->
|
||||
<SubstLookupRecord index="0">
|
||||
<SequenceIndex value="0"/>
|
||||
<LookupListIndex value="7"/>
|
||||
</SubstLookupRecord>
|
||||
</ChainContextSubst>
|
||||
</Lookup>
|
||||
<Lookup index="2">
|
||||
<LookupType value="1"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<SingleSubst index="0" Format="1">
|
||||
<Substitution in="Scedilla" out="uni0218"/>
|
||||
<Substitution in="scedilla" out="uni0219"/>
|
||||
</SingleSubst>
|
||||
</Lookup>
|
||||
<Lookup index="3">
|
||||
<LookupType value="1"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<SingleSubst index="0" Format="1">
|
||||
<Substitution in="Scedilla" out="uni0218"/>
|
||||
<Substitution in="scedilla" out="uni0219"/>
|
||||
</SingleSubst>
|
||||
</Lookup>
|
||||
<Lookup index="4">
|
||||
<LookupType value="4"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<LigatureSubst index="0" Format="1">
|
||||
<LigatureSet glyph="five">
|
||||
<Ligature components="slash,six" glyph="uni215A"/>
|
||||
<Ligature components="slash,eight" glyph="fiveeighths"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="four">
|
||||
<Ligature components="slash,five" glyph="uni2158"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="one">
|
||||
<Ligature components="slash,two" glyph="onehalf"/>
|
||||
<Ligature components="slash,three" glyph="uni2153"/>
|
||||
<Ligature components="slash,four" glyph="onequarter"/>
|
||||
<Ligature components="slash,five" glyph="uni2155"/>
|
||||
<Ligature components="slash,six" glyph="uni2159"/>
|
||||
<Ligature components="slash,eight" glyph="oneeighth"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="seven">
|
||||
<Ligature components="slash,eight" glyph="seveneighths"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="three">
|
||||
<Ligature components="slash,four" glyph="threequarters"/>
|
||||
<Ligature components="slash,five" glyph="uni2157"/>
|
||||
<Ligature components="slash,eight" glyph="threeeighths"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="two">
|
||||
<Ligature components="slash,three" glyph="uni2154"/>
|
||||
<Ligature components="slash,five" glyph="uni2156"/>
|
||||
</LigatureSet>
|
||||
</LigatureSubst>
|
||||
</Lookup>
|
||||
<Lookup index="5">
|
||||
<LookupType value="4"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<LigatureSubst index="0" Format="1">
|
||||
<LigatureSet glyph="R">
|
||||
<Ligature components="p" glyph="R_p"/>
|
||||
</LigatureSet>
|
||||
</LigatureSubst>
|
||||
</Lookup>
|
||||
<Lookup index="6">
|
||||
<LookupType value="4"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<LigatureSubst index="0" Format="1">
|
||||
<LigatureSet glyph="ampersand">
|
||||
<Ligature components="ampersand" glyph="ampersand_ampersand.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="bar">
|
||||
<Ligature components="greater" glyph="bar_greater.liga"/>
|
||||
<Ligature components="bar" glyph="bar_bar.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="equal">
|
||||
<Ligature components="equal,equal" glyph="equal_equal_equal.liga"/>
|
||||
<Ligature components="equal,greater" glyph="equal_equal_greater.liga"/>
|
||||
<Ligature components="equal" glyph="equal_equal.liga"/>
|
||||
<Ligature components="greater" glyph="equal_greater.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="exclam">
|
||||
<Ligature components="equal,equal" glyph="exclam_equal_equal.liga"/>
|
||||
<Ligature components="equal" glyph="exclam_equal.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="greater">
|
||||
<Ligature components="equal" glyph="greater_equal.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="hyphen">
|
||||
<Ligature components="hyphen,greater" glyph="hyphen_hyphen_greater.liga"/>
|
||||
<Ligature components="hyphen" glyph="hyphen_hyphen.liga"/>
|
||||
<Ligature components="greater" glyph="hyphen_greater.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="less">
|
||||
<Ligature components="exclam,hyphen,hyphen" glyph="less_exclam_hyphen_hyphen.liga"/>
|
||||
<Ligature components="hyphen,hyphen" glyph="less_hyphen_hyphen.liga"/>
|
||||
<Ligature components="equal,equal" glyph="less_equal_equal.liga"/>
|
||||
<Ligature components="hyphen" glyph="less_hyphen.liga"/>
|
||||
<Ligature components="equal" glyph="less_equal.liga"/>
|
||||
<Ligature components="bar" glyph="less_bar.liga"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="plus">
|
||||
<Ligature components="plus" glyph="plus_plus.liga"/>
|
||||
</LigatureSet>
|
||||
</LigatureSubst>
|
||||
</Lookup>
|
||||
<Lookup index="7">
|
||||
<LookupType value="4"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<LigatureSubst index="0" Format="1">
|
||||
<LigatureSet glyph="L">
|
||||
<Ligature components="periodcentered" glyph="Ldot"/>
|
||||
</LigatureSet>
|
||||
<LigatureSet glyph="l">
|
||||
<Ligature components="periodcentered" glyph="ldot"/>
|
||||
</LigatureSet>
|
||||
</LigatureSubst>
|
||||
</Lookup>
|
||||
</LookupList>
|
||||
</GSUB>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
||||
<hmtx>
|
||||
<mtx name="ampersand_ampersand.liga" width="1100" lsb="108"/>
|
||||
<mtx name="bar_bar.liga" width="1100" lsb="312"/>
|
||||
<mtx name="bar_greater.liga" width="1100" lsb="287"/>
|
||||
<mtx name="equal_equal.liga" width="1100" lsb="78"/>
|
||||
<mtx name="equal_equal_equal.liga" width="1650" lsb="78"/>
|
||||
<mtx name="equal_equal_greater.liga" width="1650" lsb="78"/>
|
||||
<mtx name="equal_greater.liga" width="1100" lsb="78"/>
|
||||
<mtx name="exclam_equal.liga" width="1100" lsb="78"/>
|
||||
<mtx name="exclam_equal_equal.liga" width="1650" lsb="78"/>
|
||||
<mtx name="greater_equal.liga" width="1100" lsb="187"/>
|
||||
<mtx name="hyphen_greater.liga" width="1100" lsb="78"/>
|
||||
<mtx name="hyphen_hyphen.liga" width="1100" lsb="181"/>
|
||||
<mtx name="hyphen_hyphen_greater.liga" width="1650" lsb="78"/>
|
||||
<mtx name="less_bar.liga" width="1100" lsb="216"/>
|
||||
<mtx name="less_equal.liga" width="1100" lsb="245"/>
|
||||
<mtx name="less_equal_equal.liga" width="1650" lsb="78"/>
|
||||
<mtx name="less_exclam_hyphen_hyphen.liga" width="2200" lsb="78"/>
|
||||
<mtx name="less_hyphen.liga" width="1100" lsb="78"/>
|
||||
<mtx name="less_hyphen_hyphen.liga" width="1650" lsb="78"/>
|
||||
<mtx name="plus_plus.liga" width="1100" lsb="123"/>
|
||||
</hmtx>
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"fontName": "OperatorMonoLig-Book",
|
||||
"familyName": "Operator Mono Lig",
|
||||
"foundry": "H&Co",
|
||||
"version": "1.200",
|
||||
"fontStyle": "Book",
|
||||
"windowsFontStyle": "Regular"
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<name>
|
||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
Operator Mono Lig
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
Book
|
||||
</namerecord>
|
||||
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
H&Co: Operator Mono Lig Book: 1.200
|
||||
</namerecord>
|
||||
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
Operator Mono Lig Book
|
||||
</namerecord>
|
||||
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
OperatorMonoLig-Book
|
||||
</namerecord>
|
||||
<namerecord nameID="16" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
Operator Mono Lig
|
||||
</namerecord>
|
||||
<namerecord nameID="17" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
||||
Book
|
||||
</namerecord>
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||
Operator Mono Lig Book
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
|
||||
Regular
|
||||
</namerecord>
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
|
||||
H&Co: Operator Mono Lig Book: 1.200
|
||||
</namerecord>
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
|
||||
Operator Mono Lig Book
|
||||
</namerecord>
|
||||
<namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
|
||||
OperatorMonoLig-Book
|
||||
</namerecord>
|
||||
<namerecord nameID="16" platformID="3" platEncID="1" langID="0x409">
|
||||
Operator Mono Lig
|
||||
</namerecord>
|
||||
<namerecord nameID="17" platformID="3" platEncID="1" langID="0x409">
|
||||
Book
|
||||
</namerecord>
|
||||
</name>
|
||||
+1552
-607
File diff suppressed because it is too large
Load Diff
@@ -1,263 +0,0 @@
|
||||
<CharStrings>
|
||||
<CharString name="ampersand_ampersand.liga">
|
||||
-107 -10 71 -59 -21 659 -20 hstemhm
|
||||
52 76 132 73 149 76 132 73 hintmask 10111110
|
||||
986 350 rmoveto
|
||||
-66 24 -30 -59 -30 -50 -30 -42 rlinecurve
|
||||
-59 callgsubr
|
||||
-17 19 -15 20 -14 20 40 50 40 60 40 70 -66 24 rcurveline
|
||||
-30 -59 -30 -50 -30 -42 -59 callgsubr
|
||||
24 callgsubr
|
||||
-43 31 41 -76 142 hhcurveto
|
||||
64 75 41 78 77 hvcurveto
|
||||
hintmask 01111110
|
||||
31 -43 37 -43 41 -42 63 51 rcurveline
|
||||
-47 47 -40 45 -32 46 rrcurveto
|
||||
hintmask 10111110
|
||||
40 50 40 60 40 70 rrcurveto
|
||||
-796 -289 rmoveto
|
||||
-50 callsubr
|
||||
430 hmoveto
|
||||
-50 callsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="bar_bar.liga">
|
||||
-107 705 -20 hstem
|
||||
230 647 vstem
|
||||
477 707 -28 callsubr
|
||||
573 888 -28 callsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="bar_greater.liga">
|
||||
-107 622 83 0 -20 hstemhm
|
||||
229 698 hintmask 01100000
|
||||
476 707 -28 callsubr
|
||||
612 425 12 68 rlineto
|
||||
-80 -32 rmoveto
|
||||
-525 -363 rlineto
|
||||
hintmask 10100000
|
||||
137 705 390 -333 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal.liga">
|
||||
-16 callgsubr
|
||||
-948 -58 callsubr
|
||||
904 -222 -8 callgsubr
|
||||
-948 -58 callsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal_equal.liga">
|
||||
-26 callgsubr
|
||||
-1496 hlineto
|
||||
-13 -66 rlineto
|
||||
1450 -220 18 callgsubr
|
||||
1452 -222 18 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_equal_greater.liga">
|
||||
19 callgsubr
|
||||
58 1528 vstem
|
||||
1307 599 rmoveto
|
||||
-54 -53 105 -106 rlineto
|
||||
-1244 -58 callsubr
|
||||
1323 hlineto
|
||||
84 -85 -2 -9 -90 -62 rlineto
|
||||
-1345 -58 callsubr
|
||||
1263 hlineto
|
||||
-159 -110 -31 callgsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="equal_greater.liga">
|
||||
-107 2 -21 171 -10 callsubr
|
||||
978 vstem
|
||||
757 599 rmoveto
|
||||
-54 -53 105 -106 rlineto
|
||||
-694 -58 callsubr
|
||||
773 hlineto
|
||||
84 -85 -2 -9 -90 -62 rlineto
|
||||
-795 -58 callsubr
|
||||
713 hlineto
|
||||
-159 -110 -31 callgsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="exclam_equal.liga">
|
||||
-16 callgsubr
|
||||
-332 hlineto
|
||||
173 249 -63 29 -194 -278 rlineto
|
||||
-532 -58 callsubr
|
||||
499 hlineto
|
||||
-108 -156 rlineto
|
||||
-421 -58 callsubr
|
||||
388 hlineto
|
||||
-219 -314 70 -20 232 334 rlineto
|
||||
476 4 callsubr
|
||||
-444 hlineto
|
||||
109 156 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="exclam_equal_equal.liga">
|
||||
-26 callgsubr
|
||||
-551 hlineto
|
||||
88 127 -63 29 -109 -156 rlineto
|
||||
-861 -58 callsubr
|
||||
828 hlineto
|
||||
-107 -154 rlineto
|
||||
-753 -58 callsubr
|
||||
720 hlineto
|
||||
-109 -156 rlineto
|
||||
-641 -58 callsubr
|
||||
608 hlineto
|
||||
-150 -216 70 -20 164 236 rlineto
|
||||
803 4 callsubr
|
||||
-771 hlineto
|
||||
109 156 rlineto
|
||||
691 4 callsubr
|
||||
-659 hlineto
|
||||
107 154 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="greater_equal.liga">
|
||||
-107 644 -20 80 -20 hstem
|
||||
107 820 vstem
|
||||
107 159 rmoveto
|
||||
30 -73 778 263 12 68 -679 287 -42 -60 589 -250 -2 -9 rlineto
|
||||
91 -212 rmoveto
|
||||
-777 -269 30 -73 731 258 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_greater.liga">
|
||||
-107 1 callgsubr
|
||||
79 957 vstem
|
||||
757 599 rmoveto
|
||||
-54 -53 217 -219 rlineto
|
||||
-828 hlineto
|
||||
-13 -68 rlineto
|
||||
847 hlineto
|
||||
-314 -217 -31 callgsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_hyphen.liga">
|
||||
-107 259 68 hstem
|
||||
204 710 vstem
|
||||
502 259 rmoveto
|
||||
-3 callgsubr
|
||||
698 hmoveto
|
||||
-3 callgsubr
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="hyphen_hyphen_greater.liga">
|
||||
443 1 callgsubr
|
||||
79 1507 vstem
|
||||
1307 599 rmoveto
|
||||
-54 -53 217 -219 rlineto
|
||||
-1378 hlineto
|
||||
-13 -68 rlineto
|
||||
1397 hlineto
|
||||
-314 -217 -31 callgsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_bar.liga">
|
||||
-107 705 -20 hstem
|
||||
258 683 vstem
|
||||
867 705 rmoveto
|
||||
-597 -369 -12 -67 436 -450 rlineto
|
||||
74 hlineto
|
||||
173 888 rlineto
|
||||
-229 -798 rmoveto
|
||||
-376 382 2 10 511 311 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_equal.liga">
|
||||
-107 -150 -21 876 -20 hstem
|
||||
146 857 vstem
|
||||
1003 635 rmoveto
|
||||
-24 70 -778 -263 -12 -67 679 -288 34 66 -575 244 2 10 rlineto
|
||||
-168 -190 rmoveto
|
||||
-15 -75 722 -313 34 63 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_equal_equal.liga">
|
||||
19 callgsubr
|
||||
82 1530 vstem
|
||||
268 374 rmoveto
|
||||
1330 4 callsubr
|
||||
-1248 hlineto
|
||||
142 98 -42 callsubr
|
||||
-117 118 rlineto
|
||||
1257 4 callsubr
|
||||
-1337 hlineto
|
||||
-72 73 2 10 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_exclam_hyphen_hyphen.liga">
|
||||
993 0 110 -108 -21 278 68 hstemhm
|
||||
82 2057 hintmask 10110000
|
||||
812 -22 callgsubr
|
||||
-306 305 rmoveto
|
||||
-34 61 -378 -263 -12 -67 rlineto
|
||||
hintmask 01110000
|
||||
279 -288 54 53 -223 225 rlineto
|
||||
429 hlineto
|
||||
12 68 rlineto
|
||||
-433 hlineto
|
||||
883 hmoveto
|
||||
-13 -68 rlineto
|
||||
1057 hlineto
|
||||
12 68 rlineto
|
||||
hintmask 10110000
|
||||
-1406 -327 12 callsubr
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_hyphen.liga">
|
||||
-107 1 callgsubr
|
||||
82 957 vstem
|
||||
1039 327 rmoveto
|
||||
-839 hlineto
|
||||
306 211 -42 callsubr
|
||||
-223 225 rlineto
|
||||
835 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="less_hyphen_hyphen.liga">
|
||||
443 1 callgsubr
|
||||
82 1507 vstem
|
||||
1589 327 rmoveto
|
||||
-1389 hlineto
|
||||
306 211 -42 callsubr
|
||||
-223 225 rlineto
|
||||
1385 hlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
<CharString name="plus_plus.liga">
|
||||
-107 259 67 hstem
|
||||
120 878 vstem
|
||||
816 326 rmoveto
|
||||
36 187 rlineto
|
||||
-71 hlineto
|
||||
-36 -187 rlineto
|
||||
-359 -30 callgsubr
|
||||
37 188 rlineto
|
||||
359 hlineto
|
||||
-37 -188 rlineto
|
||||
71 hlineto
|
||||
37 188 rlineto
|
||||
181 hlineto
|
||||
14 67 rlineto
|
||||
endchar
|
||||
|
||||
</CharString>
|
||||
</CharStrings>
|
||||
@@ -1,52 +1,120 @@
|
||||
<ttFont>
|
||||
<head>
|
||||
|
||||
|
||||
<!-- Most of this table will be recalculated by the compiler -->
|
||||
|
||||
|
||||
<tableVersion value="1.0"/>
|
||||
|
||||
|
||||
<fontRevision value="1.002"/>
|
||||
<checkSumAdjustment value="0xd578326d"/>
|
||||
|
||||
|
||||
|
||||
<magicNumber value="0x5f0f3cf5"/>
|
||||
|
||||
|
||||
<flags value="00000000 00000011"/>
|
||||
|
||||
|
||||
<unitsPerEm value="1000"/>
|
||||
<created value="Mon Oct 16 14:13:21 2017"/>
|
||||
<modified value="Mon Oct 16 14:13:21 2017"/>
|
||||
<xMin value="-367"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<xMin value="-1562"/>
|
||||
|
||||
|
||||
<yMin value="-371"/>
|
||||
<xMax value="2139"/>
|
||||
|
||||
|
||||
<xMax value="717"/>
|
||||
|
||||
|
||||
<yMax value="1130"/>
|
||||
|
||||
|
||||
<macStyle value="00000000 00000010"/>
|
||||
|
||||
|
||||
<lowestRecPPEM value="3"/>
|
||||
|
||||
|
||||
<fontDirectionHint value="2"/>
|
||||
|
||||
|
||||
<indexToLocFormat value="0"/>
|
||||
|
||||
|
||||
<glyphDataFormat value="0"/>
|
||||
|
||||
|
||||
</head>
|
||||
<hhea>
|
||||
|
||||
|
||||
<tableVersion value="0x00010000"/>
|
||||
|
||||
|
||||
<ascent value="960"/>
|
||||
|
||||
|
||||
<descent value="-240"/>
|
||||
|
||||
|
||||
<lineGap value="0"/>
|
||||
<advanceWidthMax value="2200"/>
|
||||
<minLeftSideBearing value="-367"/>
|
||||
|
||||
|
||||
<advanceWidthMax value="600"/>
|
||||
|
||||
|
||||
<minLeftSideBearing value="-1562"/>
|
||||
|
||||
|
||||
<minRightSideBearing value="-167"/>
|
||||
<xMaxExtent value="2139"/>
|
||||
|
||||
|
||||
<xMaxExtent value="717"/>
|
||||
|
||||
|
||||
<caretSlopeRise value="1000"/>
|
||||
|
||||
|
||||
<caretSlopeRun value="194"/>
|
||||
|
||||
|
||||
<caretOffset value="0"/>
|
||||
|
||||
|
||||
<reserved0 value="0"/>
|
||||
|
||||
|
||||
<reserved1 value="0"/>
|
||||
|
||||
|
||||
<reserved2 value="0"/>
|
||||
|
||||
|
||||
<reserved3 value="0"/>
|
||||
|
||||
|
||||
<metricDataFormat value="0"/>
|
||||
<numberOfHMetrics value="456"/>
|
||||
|
||||
|
||||
<numberOfHMetrics value="468"/>
|
||||
|
||||
|
||||
</hhea>
|
||||
<CFF>
|
||||
<CFFFont>
|
||||
<FontBBox value="-367 -371 2139 1130"/>
|
||||
<FontBBox value="-1562 -371 717 1130"/>
|
||||
</CFFFont>
|
||||
</CFF>
|
||||
<CFF>
|
||||
<CFFFont>
|
||||
<Private>
|
||||
<nominalWidthX value="1207"/>
|
||||
<nominalWidthX value="107"/>
|
||||
</Private>
|
||||
</CFFFont>
|
||||
</CFF>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<Glyph name="LIG" lsb="0" width="550">
|
||||
<CharString>
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,51 @@
|
||||
<Glyph name="ampersand_ampersand.liga" lsb="-411" width="550">
|
||||
<CharString>
|
||||
-10 71 hstem
|
||||
-411 76 132 73 149 76 132 73 vstem
|
||||
523 350 rmoveto
|
||||
-66 24 -30 -59 -30 -50 -30 -42 rlinecurve
|
||||
{db2882dd} callsubr
|
||||
-17 19 -15 20 -14 20 {c03968d2} callsubr
|
||||
26 -37 75 -60 77 -17 rrcurveto
|
||||
-3 11 14 -2 14 hhcurveto
|
||||
64 72 41 78 77 hvcurveto
|
||||
31 -43 37 -43 41 -42 63 51 rcurveline
|
||||
-47 47 -40 45 -32 46 40 50 40 60 40 70 rrcurveto
|
||||
-796 -289 rmoveto
|
||||
{e80dab6b} callsubr
|
||||
430 hmoveto
|
||||
{e80dab6b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="db2882dd">
|
||||
-37 63 -22 63 -8 65 rrcurveto
|
||||
60 60 35 65 49 vvcurveto
|
||||
33 -22 19 -32 -51 -63 -97 -107 vhcurveto
|
||||
-7 vlineto
|
||||
-128 -109 -80 -109 -100 vvcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="c03968d2">
|
||||
40 50 40 60 40 70 -66 24 rcurveline
|
||||
-30 -59 -30 -50 -30 -42 {db2882dd} callsubr
|
||||
-75 41 -46 74 64 75 41 78 77 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="db2882dd">
|
||||
-37 63 -22 63 -8 65 rrcurveto
|
||||
60 60 35 65 49 vvcurveto
|
||||
33 -22 19 -32 -51 -63 -97 -107 vhcurveto
|
||||
-7 vlineto
|
||||
-128 -109 -80 -109 -100 vvcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="e80dab6b">
|
||||
-38 -24 24 43 69 58 80 82 80 hvcurveto
|
||||
12 -66 28 -66 41 -66 rrcurveto
|
||||
-67 -61 -56 -31 -42 hhcurveto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,23 @@
|
||||
<Glyph name="bar_bar.liga" lsb="-298" width="550">
|
||||
<CharString>
|
||||
-298 247 103 247 vstem
|
||||
-51 707 {b0cb0c2d} callgsubr
|
||||
523 888 {b0cb0c2d} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="b0cb0c2d">
|
||||
rmoveto
|
||||
-74 -2 -173 -886 rlineto
|
||||
74 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b0cb0c2d">
|
||||
rmoveto
|
||||
-74 -2 -173 -886 rlineto
|
||||
74 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,14 @@
|
||||
<Glyph name="bar_greater.liga" lsb="-261" width="550">
|
||||
<CharString>
|
||||
-261 75 468 74 vstem
|
||||
-13 710 rmoveto
|
||||
-76 -6 -172 -886 rlineto
|
||||
75 hlineto
|
||||
627 440 13 69 rlineto
|
||||
-82 -40 rmoveto
|
||||
-540 -376 137 709 405 -323 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,60 @@
|
||||
<Glyph name="colon_equal.liga" lsb="-297" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-253 618 vstem
|
||||
-253 354 {d8368263} callsubr
|
||||
-98 rmoveto
|
||||
{14bcb405} callgsubr
|
||||
-424 {83c7393b} callsubr
|
||||
-283 -245 {d8368263} callsubr
|
||||
-94 {331d84c3} callgsubr
|
||||
-424 {fff746ed} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="d8368263">
|
||||
rmoveto
|
||||
118 hlineto
|
||||
25 117 rlineto
|
||||
-119 hlineto
|
||||
638 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="14bcb405">
|
||||
14 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="331d84c3">
|
||||
rmoveto
|
||||
{b42578a3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,65 @@
|
||||
<Glyph name="equal_equal.2.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-472 944 vstem
|
||||
-6 373 {331d84c3} callgsubr
|
||||
-424 {fff746ed} callgsubr
|
||||
943 hmoveto
|
||||
{b42578a3} callsubr
|
||||
-414 {fff746ed} callgsubr
|
||||
-150 {b7988df5} callgsubr
|
||||
-424 {83c7393b} callsubr
|
||||
943 hmoveto
|
||||
{14bcb405} callgsubr
|
||||
-414 {83c7393b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="331d84c3">
|
||||
rmoveto
|
||||
{b42578a3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b7988df5">
|
||||
{4bc44ff7} callgsubr
|
||||
69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4bc44ff7">
|
||||
-222 rmoveto
|
||||
14 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="14bcb405">
|
||||
14 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,55 @@
|
||||
<Glyph name="equal_equal.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-472 944 vstem
|
||||
514 373 {331d84c3} callgsubr
|
||||
-944 {fff746ed} callgsubr
|
||||
900 {b7988df5} callgsubr
|
||||
-944 {83c7393b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="331d84c3">
|
||||
rmoveto
|
||||
{b42578a3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b7988df5">
|
||||
{4bc44ff7} callgsubr
|
||||
69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4bc44ff7">
|
||||
-222 rmoveto
|
||||
14 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,63 @@
|
||||
<Glyph name="equal_equal_equal.2.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-1022 1494 vstem
|
||||
-536 373 rmoveto
|
||||
{bf9bf165} callsubr
|
||||
968 hmoveto
|
||||
{bf9bf165} callsubr
|
||||
968 hmoveto
|
||||
{bf9bf165} callsubr
|
||||
-650 -222 rmoveto
|
||||
{afc41edc} callgsubr
|
||||
968 hmoveto
|
||||
{afc41edc} callgsubr
|
||||
968 hmoveto
|
||||
{afc41edc} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="bf9bf165">
|
||||
{b42578a3} callsubr
|
||||
-444 {fff746ed} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="afc41edc">
|
||||
{14bcb405} callgsubr
|
||||
-444 {83c7393b} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="14bcb405">
|
||||
14 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,54 @@
|
||||
<Glyph name="equal_equal_equal.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
40 69 153 {2a39309a} callsubr
|
||||
hstem
|
||||
-1022 1494 cntrmask 11100000
|
||||
557 484 {331d84c3} callgsubr
|
||||
-1494 {fff746ed} callgsubr
|
||||
1450 -222 {331d84c3} callgsubr
|
||||
-1494 {fff746ed} callgsubr
|
||||
1450 {b7988df5} callgsubr
|
||||
-1494 {83c7393b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="331d84c3">
|
||||
rmoveto
|
||||
{b42578a3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="331d84c3">
|
||||
rmoveto
|
||||
{b42578a3} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="b7988df5">
|
||||
{4bc44ff7} callgsubr
|
||||
69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="4bc44ff7">
|
||||
-222 rmoveto
|
||||
14 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,65 @@
|
||||
<Glyph name="equal_equal_greater.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-1022 394 691 424 vstem
|
||||
{d074a68d} callsubr
|
||||
-1222 {fff746ed} callgsubr
|
||||
1305 {c3e48ac9} callsubr
|
||||
-1329 {83c7393b} callsubr
|
||||
1243 hlineto
|
||||
{3776599f} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="d074a68d">
|
||||
{7097f26b} callgsubr
|
||||
103 -104 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="c3e48ac9">
|
||||
hlineto
|
||||
83 -84 -2 -9 -87 -60 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="3776599f">
|
||||
-158 -109 {33c8b3e3} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,66 @@
|
||||
<Glyph name="equal_greater.liga" lsb="-472" width="550">
|
||||
<CharString>
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-472 937 -402 {fcf2278c} callgsubr
|
||||
{d074a68d} callsubr
|
||||
-672 {fff746ed} callgsubr
|
||||
755 {c3e48ac9} callsubr
|
||||
-779 {83c7393b} callsubr
|
||||
693 hlineto
|
||||
hintmask 11010000
|
||||
{3776599f} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d074a68d">
|
||||
{7097f26b} callgsubr
|
||||
103 -104 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="c3e48ac9">
|
||||
hlineto
|
||||
83 -84 -2 -9 -87 -60 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="3776599f">
|
||||
-158 -109 {33c8b3e3} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="fcf2278c">
|
||||
424 hintmask 11100000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,58 @@
|
||||
<Glyph name="equal_less_less.liga" lsb="-1022" width="550">
|
||||
<CharString>
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-1022 1486 -686 424 -114 424 hintmask 11001000
|
||||
-142 301 rmoveto
|
||||
hintmask 11010000
|
||||
{83815ada} callsubr
|
||||
-907 {fff746ed} callgsubr
|
||||
822 {5abe2a2a} callgsubr
|
||||
-834 hlineto
|
||||
hintmask 11100000
|
||||
-13 -69 rlineto
|
||||
914 {e5b3db5a} callgsubr
|
||||
312 10 rmoveto
|
||||
hintmask 11001000
|
||||
344 237 {83946452} callsubr
|
||||
-255 257 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="83815ada">
|
||||
344 237 -34 61 -226 -157 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="fff746ed">
|
||||
hlineto
|
||||
-14 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="5abe2a2a">
|
||||
hlineto
|
||||
-53 -37 -12 -67 47 -49 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="e5b3db5a">
|
||||
hlineto
|
||||
165 -170 54 53 -255 257 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,51 @@
|
||||
<Glyph name="exclam_equal.liga" lsb="-408" width="550">
|
||||
<CharString>
|
||||
{c41cabed} callsubr
|
||||
-567 {2a39309a} callsubr
|
||||
hstemhm
|
||||
-437 944 hintmask 00110000
|
||||
622 373 rmoveto
|
||||
28 69 rlineto
|
||||
-388 hlineto
|
||||
220 247 rlineto
|
||||
hintmask 10010000
|
||||
-57 29 rlineto
|
||||
hintmask 00110000
|
||||
-246 -276 rlineto
|
||||
-473 {364cb51f} callsubr
|
||||
439 hlineto
|
||||
hintmask 01010000
|
||||
{89416abb} callsubr
|
||||
-362 {364cb51f} callsubr
|
||||
328 hlineto
|
||||
-279 -313 rlineto
|
||||
hintmask 10010000
|
||||
66 -20 rlineto
|
||||
hintmask 01010000
|
||||
296 333 rlineto
|
||||
532 hlineto
|
||||
28 69 rlineto
|
||||
-498 hlineto
|
||||
hintmask 00110000
|
||||
136 153 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="c41cabed">
|
||||
-182 900 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="364cb51f">
|
||||
hlineto
|
||||
-27 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="89416abb">
|
||||
-137 -153 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,59 @@
|
||||
<Glyph name="exclam_equal_equal.liga" lsb="-979" width="550">
|
||||
<CharString>
|
||||
{c41cabed} callsubr
|
||||
-678 69 153 {2a39309a} callsubr
|
||||
hstemhm
|
||||
-987 1494 cntrmask 01110000
|
||||
hintmask 00111000
|
||||
686 484 rmoveto
|
||||
28 69 rlineto
|
||||
-603 hlineto
|
||||
121 136 rlineto
|
||||
hintmask 10001000
|
||||
-57 29 rlineto
|
||||
hintmask 00111000
|
||||
-147 -165 rlineto
|
||||
-808 {364cb51f} callsubr
|
||||
774 hlineto
|
||||
{89416abb} callsubr
|
||||
-696 {364cb51f} callsubr
|
||||
662 hlineto
|
||||
hintmask 01111000
|
||||
{89416abb} callsubr
|
||||
-585 hlineto
|
||||
-26 -69 rlineto
|
||||
550 hlineto
|
||||
-180 -202 rlineto
|
||||
hintmask 10001000
|
||||
66 -20 rlineto
|
||||
hintmask 01111000
|
||||
198 222 rlineto
|
||||
859 hlineto
|
||||
27 69 rlineto
|
||||
-825 hlineto
|
||||
136 153 rlineto
|
||||
748 hlineto
|
||||
28 69 rlineto
|
||||
-715 hlineto
|
||||
137 153 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="c41cabed">
|
||||
-182 900 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="364cb51f">
|
||||
hlineto
|
||||
-27 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="89416abb">
|
||||
-137 -153 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,25 @@
|
||||
<Glyph name="greater_equal.2.liga" lsb="-308" width="600">
|
||||
<CharString>
|
||||
493 -141 69 390 69 hstem
|
||||
-295 615 vstem
|
||||
-262 95 rmoveto
|
||||
-15 -79 673 302 14 69 -520 280 -49 {90350ff9} callgsubr
|
||||
4 -488 rmoveto
|
||||
13 69 rlineto
|
||||
-615 {83c7393b} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="90350ff9">
|
||||
-63 464 -247 -2 -10 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,18 @@
|
||||
<Glyph name="greater_equal.liga" lsb="-296" width="550">
|
||||
<CharString>
|
||||
138 77 103 69 hstem
|
||||
-261 639 vstem
|
||||
-261 95 rmoveto
|
||||
19 -64 640 287 13 69 -519 280 -50 {90350ff9} callgsubr
|
||||
59 -209 rmoveto
|
||||
15 77 -674 -300 19 -64 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="90350ff9">
|
||||
-63 464 -247 -2 -10 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,76 @@
|
||||
<Glyph name="greater_equal_greater.liga" lsb="-1037" width="550">
|
||||
<CharString>
|
||||
{30a8b931} callgsubr
|
||||
1478 -402 424 hintmask 11010000
|
||||
{d074a68d} callsubr
|
||||
-996 {bbfb8b2c} callgsubr
|
||||
hintmask 11100000
|
||||
{77242ba8} callsubr
|
||||
980 {0377f142} callgsubr
|
||||
-979 hlineto
|
||||
34 24 rlineto
|
||||
hintmask 11100000
|
||||
12 68 -59 61 rlineto
|
||||
998 hlineto
|
||||
83 -84 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d074a68d">
|
||||
{7097f26b} callgsubr
|
||||
103 -104 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="77242ba8">
|
||||
-344 -238 34 -61 244 170 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="3776599f">
|
||||
-158 -109 {33c8b3e3} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="30a8b931">
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-1037 424 -400 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="bbfb8b2c">
|
||||
hlineto
|
||||
-153 157 {25bfa713} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="25bfa713">
|
||||
-54 -53 255 -257 -2 -9 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="0377f142">
|
||||
hlineto
|
||||
hintmask 11001000
|
||||
{3776599f} callsubr
|
||||
-80 -32 rmoveto
|
||||
-87 -60 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,63 @@
|
||||
<Glyph name="greater_greater_equal.liga" lsb="-1037" width="550">
|
||||
<CharString>
|
||||
{30a8b931} callgsubr
|
||||
1485 -1199 {fcf2278c} callgsubr
|
||||
-613 312 rmoveto
|
||||
-279 287 {25bfa713} callgsubr
|
||||
-344 -238 34 -61 378 263 rlineto
|
||||
1154 198 rmoveto
|
||||
-958 {bbfb8b2c} callgsubr
|
||||
hintmask 11001000
|
||||
{77242ba8} callsubr
|
||||
hintmask 11010000
|
||||
920 {00ffbe03} callgsubr
|
||||
-834 hlineto
|
||||
34 24 rlineto
|
||||
hintmask 11001000
|
||||
12 68 -59 61 rlineto
|
||||
876 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="77242ba8">
|
||||
-344 -238 34 -61 244 170 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="30a8b931">
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-1037 424 -400 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="fcf2278c">
|
||||
424 hintmask 11100000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="25bfa713">
|
||||
-54 -53 255 -257 -2 -9 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="bbfb8b2c">
|
||||
hlineto
|
||||
-153 157 {25bfa713} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="00ffbe03">
|
||||
hlineto
|
||||
{14bcb405} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="14bcb405">
|
||||
14 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,52 @@
|
||||
<Glyph name="hyphen_greater.liga" lsb="-431" width="550">
|
||||
<CharString>
|
||||
{2417f8b4} callsubr
|
||||
-431 896 {0322b936} callgsubr
|
||||
-789 {83c7393b} callsubr
|
||||
806 {4701958a} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2417f8b4">
|
||||
258 69 hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="eaf6837f">
|
||||
424 hintmask 11000000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4701958a">
|
||||
hlineto
|
||||
hintmask 10100000
|
||||
-312 -216 {867ee3c3} callsubr
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="867ee3c3">
|
||||
{33c8b3e3} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="0322b936">
|
||||
-402 {eaf6837f} callsubr
|
||||
{7097f26b} callgsubr
|
||||
217 -219 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,26 @@
|
||||
<Glyph name="hyphen_hyphen.liga" lsb="-337" width="550">
|
||||
<CharString>
|
||||
259 68 hstem
|
||||
-337 310 70 310 vstem
|
||||
-39 259 rmoveto
|
||||
{a122bbee} callgsubr
|
||||
678 hmoveto
|
||||
{a122bbee} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="a122bbee">
|
||||
12 68 rlineto
|
||||
-297 hlineto
|
||||
-13 -68 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="a122bbee">
|
||||
12 68 rlineto
|
||||
-297 hlineto
|
||||
-13 -68 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,52 @@
|
||||
<Glyph name="hyphen_hyphen_greater.liga" lsb="-981" width="550">
|
||||
<CharString>
|
||||
{2417f8b4} callsubr
|
||||
-981 1446 {0322b936} callgsubr
|
||||
-1339 {83c7393b} callsubr
|
||||
1356 {4701958a} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2417f8b4">
|
||||
258 69 hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="eaf6837f">
|
||||
424 hintmask 11000000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="83c7393b">
|
||||
hlineto
|
||||
-13 -69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="4701958a">
|
||||
hlineto
|
||||
hintmask 10100000
|
||||
-312 -216 {867ee3c3} callsubr
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="867ee3c3">
|
||||
{33c8b3e3} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="0322b936">
|
||||
-402 {eaf6837f} callsubr
|
||||
{7097f26b} callgsubr
|
||||
217 -219 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,14 @@
|
||||
<Glyph name="less_bar.liga" lsb="-269" width="550">
|
||||
<CharString>
|
||||
-354 75 450 75 vstem
|
||||
341 704 rmoveto
|
||||
-596 -378 -14 -69 438 -439 rlineto
|
||||
75 hlineto
|
||||
173 892 rlineto
|
||||
-229 -797 rmoveto
|
||||
-376 374 2 10 510 317 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,20 @@
|
||||
<Glyph name="less_equal.2.liga" lsb="-283" width="600">
|
||||
<CharString>
|
||||
493 -141 69 hstem
|
||||
-283 756 vstem
|
||||
378 {90be0ec6} callgsubr
|
||||
-25 63 -628 -280 -14 -69 557 -302 rlineto
|
||||
-646 -157 rmoveto
|
||||
615 hlineto
|
||||
13 69 rlineto
|
||||
-615 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="90be0ec6">
|
||||
95 rmoveto
|
||||
-467 252 2 10 560 247 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,18 @@
|
||||
<Glyph name="less_equal.liga" lsb="-247" width="550">
|
||||
<CharString>
|
||||
138 77 103 69 hstem
|
||||
-247 606 vstem
|
||||
359 {90be0ec6} callgsubr
|
||||
-24 63 -629 -280 -13 -69 528 -287 rlineto
|
||||
-563 107 rmoveto
|
||||
528 -287 43 64 -556 300 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="90be0ec6">
|
||||
95 rmoveto
|
||||
-467 252 2 10 560 247 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,58 @@
|
||||
<Glyph name="less_equal_equal.liga" lsb="-1012" width="550">
|
||||
<CharString>
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-1014 1486 -1484 {fcf2278c} callgsubr
|
||||
-827 373 rmoveto
|
||||
1341 hlineto
|
||||
{b42578a3} callsubr
|
||||
-1256 hlineto
|
||||
hintmask 11010000
|
||||
{0cd8acae} callgsubr
|
||||
hintmask 11100000
|
||||
1266 {00ffbe03} callgsubr
|
||||
-1349 hlineto
|
||||
-70 71 2 10 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="b42578a3">
|
||||
15 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="fcf2278c">
|
||||
424 hintmask 11100000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="0cd8acae">
|
||||
139 96 {83946452} callsubr
|
||||
-116 117 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="00ffbe03">
|
||||
hlineto
|
||||
{14bcb405} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="14bcb405">
|
||||
14 69 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,73 @@
|
||||
<Glyph name="less_equal_greater.liga" lsb="-1012" width="550">
|
||||
<CharString>
|
||||
{03f44ce8} callsubr
|
||||
hstemhm
|
||||
-1014 1479 -1477 424 651 {fcf2278c} callgsubr
|
||||
{d074a68d} callsubr
|
||||
-984 hlineto
|
||||
hintmask 11010000
|
||||
{0cd8acae} callgsubr
|
||||
1016 {0377f142} callgsubr
|
||||
-1184 hlineto
|
||||
-70 71 2 10 105 72 rlineto
|
||||
1153 hlineto
|
||||
83 -84 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d074a68d">
|
||||
{7097f26b} callgsubr
|
||||
103 -104 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="3776599f">
|
||||
-158 -109 {33c8b3e3} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="fcf2278c">
|
||||
424 hintmask 11100000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="7097f26b">
|
||||
208 599 rmoveto
|
||||
-54 -53 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="0cd8acae">
|
||||
139 96 {83946452} callsubr
|
||||
-116 117 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="0377f142">
|
||||
hlineto
|
||||
hintmask 11001000
|
||||
{3776599f} callsubr
|
||||
-80 -32 rmoveto
|
||||
-87 -60 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="5" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="6" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,57 @@
|
||||
<Glyph name="less_equal_less.liga" lsb="-1012" width="550">
|
||||
<CharString>
|
||||
{53fa50ea} callsubr
|
||||
-1012 424 676 424 vstem
|
||||
168 301 rmoveto
|
||||
{83815ada} callsubr
|
||||
-979 hlineto
|
||||
{0cd8acae} callgsubr
|
||||
997 {e5b3db5a} callgsubr
|
||||
-1030 -71 rmoveto
|
||||
-70 71 2 10 105 72 rlineto
|
||||
980 {5abe2a2a} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="53fa50ea">
|
||||
{03f44ce8} callsubr
|
||||
hstem
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="03f44ce8">
|
||||
151 {2a39309a} callsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="2a39309a">
|
||||
69 153 69 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83815ada">
|
||||
344 237 -34 61 -226 -157 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="4" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="0cd8acae">
|
||||
139 96 {83946452} callsubr
|
||||
-116 117 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="e5b3db5a">
|
||||
hlineto
|
||||
165 -170 54 53 -255 257 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="5abe2a2a">
|
||||
hlineto
|
||||
-53 -37 -12 -67 47 -49 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,49 @@
|
||||
<Glyph name="less_exclam_hyphen_hyphen.liga" lsb="-1562" width="550">
|
||||
<CharString>
|
||||
0 110 148 69 hstemhm
|
||||
-1562 424 202 245 hintmask 11100000
|
||||
-857 233 rmoveto
|
||||
52 hlineto
|
||||
hintmask 11110000
|
||||
{e1fb31a3} callgsubr
|
||||
-281 305 rmoveto
|
||||
{5509cf8e} callgsubr
|
||||
381 hlineto
|
||||
19 69 rlineto
|
||||
-393 hlineto
|
||||
876 hmoveto
|
||||
-13 -69 rlineto
|
||||
1011 hlineto
|
||||
19 69 rlineto
|
||||
-1385 -327 {78915a09} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="78915a09">
|
||||
rmoveto
|
||||
108 hlineto
|
||||
22 110 rlineto
|
||||
-107 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="e1fb31a3">
|
||||
19 89 73 261 22 93 rrcurveto
|
||||
-102 hlineto
|
||||
-16 -93 -31 -261 -17 -89 rrcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="5509cf8e">
|
||||
{83946452} callsubr
|
||||
-222 224 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,40 @@
|
||||
<Glyph name="less_hyphen.liga" lsb="-462" width="550">
|
||||
<CharString>
|
||||
{2417f8b4} callsubr
|
||||
-464 900 -898 {eaf6837f} callsubr
|
||||
449 327 rmoveto
|
||||
-793 {15f0e26a} callsubr
|
||||
781 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2417f8b4">
|
||||
258 69 hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="eaf6837f">
|
||||
424 hintmask 11000000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="15f0e26a">
|
||||
hlineto
|
||||
hintmask 10100000
|
||||
306 211 {5509cf8e} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="5509cf8e">
|
||||
{83946452} callsubr
|
||||
-222 224 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,40 @@
|
||||
<Glyph name="less_hyphen_hyphen.liga" lsb="-1012" width="550">
|
||||
<CharString>
|
||||
{2417f8b4} callsubr
|
||||
-1014 1450 -1448 {eaf6837f} callsubr
|
||||
449 327 rmoveto
|
||||
-1343 {15f0e26a} callsubr
|
||||
1331 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="2417f8b4">
|
||||
258 69 hstemhm
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="eaf6837f">
|
||||
424 hintmask 11000000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="15f0e26a">
|
||||
hlineto
|
||||
hintmask 10100000
|
||||
306 211 {5509cf8e} callgsubr
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="83946452">
|
||||
{64f993c2} callgsubr
|
||||
279 -288 54 53 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="5509cf8e">
|
||||
{83946452} callsubr
|
||||
-222 224 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,25 @@
|
||||
<Glyph name="less_slash.liga" lsb="-462" width="550">
|
||||
<CharString>
|
||||
{c41cabed} callsubr
|
||||
hstemhm
|
||||
-462 424 -252 676 hintmask 10100000
|
||||
323 718 rmoveto
|
||||
-466 -670 -241 243 2 10 rlineto
|
||||
hintmask 11000000
|
||||
344 237 {64f993c2} callgsubr
|
||||
275 -284 rlineto
|
||||
hintmask 10100000
|
||||
-103 -147 70 -20 606 871 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="c41cabed">
|
||||
-182 900 return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="64f993c2">
|
||||
-34 61 -378 -263 -12 -67 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,51 @@
|
||||
<Glyph name="plus_plus.liga" lsb="-428" width="550">
|
||||
<CharString>
|
||||
259 67 hstem
|
||||
-3 448 vstem
|
||||
263 326 rmoveto
|
||||
{d7892153} callgsubr
|
||||
-354 {f12d5fd2} callgsubr
|
||||
37 188 rlineto
|
||||
354 hlineto
|
||||
-37 -188 rlineto
|
||||
71 hlineto
|
||||
37 188 rlineto
|
||||
181 hlineto
|
||||
14 67 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="95fad126">
|
||||
rlineto
|
||||
-71 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="95fad126">
|
||||
rlineto
|
||||
-71 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="d7892153">
|
||||
36 187 {95fad126} callsubr
|
||||
-36 -187 rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="f12d5fd2">
|
||||
hlineto
|
||||
{d7892153} callgsubr
|
||||
-182 hlineto
|
||||
-13 -67 rlineto
|
||||
182 hlineto
|
||||
-37 -188 rlineto
|
||||
71 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="d7892153">
|
||||
36 187 {95fad126} callsubr
|
||||
-36 -187 rlineto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,49 @@
|
||||
<Glyph name="question_question.liga" lsb="-362" width="550">
|
||||
<CharString>
|
||||
0 109 hstem
|
||||
-53 89 291 89 vstem
|
||||
-324 679 rmoveto
|
||||
{4143d396} callgsubr
|
||||
380 hmoveto
|
||||
{4143d396} callgsubr
|
||||
-418 -679 {d2f9b0db} callsubr
|
||||
358 -109 {d2f9b0db} callsubr
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="d2f9b0db">
|
||||
rmoveto
|
||||
107 hlineto
|
||||
22 109 rlineto
|
||||
-107 hlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="d2f9b0db">
|
||||
rmoveto
|
||||
107 hlineto
|
||||
22 109 rlineto
|
||||
-107 hlineto
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="4143d396">
|
||||
-16 -79 rlineto
|
||||
190 -22 97 -30 -73 vvcurveto
|
||||
-57 -58 -54 -176 -91 vhcurveto
|
||||
25 -43 rlineto
|
||||
215 108 83 81 84 vvcurveto
|
||||
95 -116 55 -244 26 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="4143d396">
|
||||
-16 -79 rlineto
|
||||
190 -22 97 -30 -73 vvcurveto
|
||||
-57 -58 -54 -176 -91 vhcurveto
|
||||
25 -43 rlineto
|
||||
215 108 83 81 84 vvcurveto
|
||||
95 -116 55 -244 26 vhcurveto
|
||||
return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Glyph name="slash_greater.liga" lsb="-406" width="550">
|
||||
<CharString>
|
||||
{c41cabed} callsubr
|
||||
hstemhm
|
||||
-406 676 -207 {eaf6837f} callsubr
|
||||
208 599 rmoveto
|
||||
-2 -2 64 92 {3eb247b4} callsubr
|
||||
500 718 245 -247 -2 -9 rlineto
|
||||
hintmask 10100000
|
||||
-344 -238 {867ee3c3} callsubr
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="c41cabed">
|
||||
-182 900 return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="eaf6837f">
|
||||
424 hintmask 11000000
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="2" fingerprint="3eb247b4">
|
||||
-63 29 -613 -880 70 -20 return
|
||||
</CharString>
|
||||
<CharString index="3" fingerprint="867ee3c3">
|
||||
{33c8b3e3} callgsubr
|
||||
endchar
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs>
|
||||
<CharString index="0" fingerprint="33c8b3e3">
|
||||
{3c7a34d4} callgsubr
|
||||
rlineto
|
||||
return
|
||||
</CharString>
|
||||
<CharString index="1" fingerprint="3c7a34d4">
|
||||
34 -61 378 263 12 68 return
|
||||
</CharString>
|
||||
</GlobalSubrs>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,13 @@
|
||||
<Glyph name="underscore_underscore.liga" lsb="-620" width="550">
|
||||
<CharString>
|
||||
-112 62 hstem
|
||||
-620 1131 vstem
|
||||
511 -50 rmoveto
|
||||
-1120 hlineto
|
||||
-11 -62 rlineto
|
||||
1119 hlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Glyph name="uniE0A0" code="0xe0a0" lsb="6" width="550">
|
||||
<CharString>
|
||||
-59 53 160 104 264 54 53 53 hstemhm
|
||||
6 53 0 105 0 53 106 53 0 105 0 53 hintmask 1111010101000000
|
||||
428 576 rmoveto
|
||||
-58 -47 -47 -60 hvcurveto
|
||||
hintmask 1111010010000000
|
||||
-38 22 -34 31 -18 vhcurveto
|
||||
-15 vlineto
|
||||
-53 -53 -53 -53 -44 -34 -9 -15 -28 vhcurveto
|
||||
251 vlineto
|
||||
hintmask 1111101101000000
|
||||
31 17 22 34 40 vvcurveto
|
||||
58 -47 48 -58 -60 -46 -48 -58 vhcurveto
|
||||
hintmask 1111010101000000
|
||||
-40 21 -34 32 -17 vhcurveto
|
||||
-347 vlineto
|
||||
hintmask 1111101010000000
|
||||
-32 -17 -21 -34 -40 vvcurveto
|
||||
-58 46 -48 60 58 47 48 58 29 -11 25 -17 19 vhcurveto
|
||||
18 16 24 16 41 hhcurveto
|
||||
106 105 105 106 hvcurveto
|
||||
14 vlineto
|
||||
hintmask 1111010101000000
|
||||
32 19 21 34 38 vvcurveto
|
||||
59 -46 47 -60 vhcurveto
|
||||
hintmask 1111101101000000
|
||||
-316 53 rmoveto
|
||||
28 24 -24 -29 -30 -24 -24 -28 -30 -23 24 30 29 23 24 30 hvcurveto
|
||||
316 -212 rmoveto
|
||||
-28 -24 24 28 30 24 23 28 30 23 -23 -30 -28 -23 -24 -30 hvcurveto
|
||||
-316 -423 rmoveto
|
||||
-30 -23 23 30 29 23 24 30 28 24 -24 -29 -30 -24 -23 -28 hvcurveto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs/>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Glyph name="uniE0B0" code="0xe0b0" lsb="-20" width="550">
|
||||
<CharString>
|
||||
{99cad421} callsubr
|
||||
609 313 rmoveto
|
||||
-627 581 -2 -1099 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="99cad421">
|
||||
-205 1099 hstem
|
||||
-20 629 vstem
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Glyph name="uniE0B2" code="0xe0b2" lsb="-20" width="550">
|
||||
<CharString>
|
||||
{99cad421} callsubr
|
||||
-20 313 rmoveto
|
||||
629 -518 -2 1099 rlineto
|
||||
endchar
|
||||
</CharString>
|
||||
<Subrs>
|
||||
<CharString index="0" fingerprint="99cad421">
|
||||
-205 1099 hstem
|
||||
-20 629 vstem
|
||||
return
|
||||
</CharString>
|
||||
</Subrs>
|
||||
<GlobalSubrs/>
|
||||
</Glyph>
|
||||
@@ -1,164 +0,0 @@
|
||||
<GPOS>
|
||||
<Version value="0x00010000"/>
|
||||
<ScriptList>
|
||||
<!-- ScriptCount=2 -->
|
||||
<ScriptRecord index="0">
|
||||
<ScriptTag value="DFLT"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="0"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=0 -->
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
<ScriptRecord index="1">
|
||||
<ScriptTag value="latn"/>
|
||||
<Script>
|
||||
<DefaultLangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="1"/>
|
||||
</DefaultLangSys>
|
||||
<!-- LangSysCount=3 -->
|
||||
<LangSysRecord index="0">
|
||||
<LangSysTag value="CAT "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="2"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="1">
|
||||
<LangSysTag value="MOL "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="3"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
<LangSysRecord index="2">
|
||||
<LangSysTag value="ROM "/>
|
||||
<LangSys>
|
||||
<ReqFeatureIndex value="65535"/>
|
||||
<!-- FeatureCount=1 -->
|
||||
<FeatureIndex index="0" value="4"/>
|
||||
</LangSys>
|
||||
</LangSysRecord>
|
||||
</Script>
|
||||
</ScriptRecord>
|
||||
</ScriptList>
|
||||
<FeatureList>
|
||||
<!-- FeatureCount=5 -->
|
||||
<FeatureRecord index="0">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="1">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="2">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="3">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
<FeatureRecord index="4">
|
||||
<FeatureTag value="kern"/>
|
||||
<Feature>
|
||||
<!-- LookupCount=1 -->
|
||||
<LookupListIndex index="0" value="0"/>
|
||||
</Feature>
|
||||
</FeatureRecord>
|
||||
</FeatureList>
|
||||
<LookupList>
|
||||
<!-- LookupCount=1 -->
|
||||
<Lookup index="0">
|
||||
<LookupType value="2"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<PairPos index="0" Format="2">
|
||||
<Coverage Format="2">
|
||||
<Glyph value="zero.num"/>
|
||||
<Glyph value="one.num"/>
|
||||
<Glyph value="two.num"/>
|
||||
<Glyph value="three.num"/>
|
||||
<Glyph value="four.num"/>
|
||||
<Glyph value="five.num"/>
|
||||
<Glyph value="six.num"/>
|
||||
<Glyph value="seven.num"/>
|
||||
<Glyph value="eight.num"/>
|
||||
<Glyph value="nine.num"/>
|
||||
<Glyph value="fraction.afrc"/>
|
||||
</Coverage>
|
||||
<ValueFormat1 value="4"/>
|
||||
<ValueFormat2 value="0"/>
|
||||
<ClassDef1 Format="2">
|
||||
<ClassDef glyph="eight.num" class="1"/>
|
||||
<ClassDef glyph="five.num" class="1"/>
|
||||
<ClassDef glyph="four.num" class="1"/>
|
||||
<ClassDef glyph="nine.num" class="1"/>
|
||||
<ClassDef glyph="one.num" class="1"/>
|
||||
<ClassDef glyph="seven.num" class="1"/>
|
||||
<ClassDef glyph="six.num" class="1"/>
|
||||
<ClassDef glyph="three.num" class="1"/>
|
||||
<ClassDef glyph="two.num" class="1"/>
|
||||
<ClassDef glyph="zero.num" class="1"/>
|
||||
</ClassDef1>
|
||||
<ClassDef2 Format="2">
|
||||
<ClassDef glyph="eight.den" class="1"/>
|
||||
<ClassDef glyph="five.den" class="1"/>
|
||||
<ClassDef glyph="four.den" class="1"/>
|
||||
<ClassDef glyph="fraction.afrc" class="2"/>
|
||||
<ClassDef glyph="nine.den" class="1"/>
|
||||
<ClassDef glyph="one.den" class="1"/>
|
||||
<ClassDef glyph="seven.den" class="1"/>
|
||||
<ClassDef glyph="six.den" class="1"/>
|
||||
<ClassDef glyph="three.den" class="1"/>
|
||||
<ClassDef glyph="two.den" class="1"/>
|
||||
<ClassDef glyph="zero.den" class="1"/>
|
||||
</ClassDef2>
|
||||
<!-- Class1Count=2 -->
|
||||
<!-- Class2Count=3 -->
|
||||
<Class1Record index="0">
|
||||
<Class2Record index="0">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="1">
|
||||
<Value1 XAdvance="-550"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="2">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
</Class1Record>
|
||||
<Class1Record index="1">
|
||||
<Class2Record index="0">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="1">
|
||||
<Value1 XAdvance="0"/>
|
||||
</Class2Record>
|
||||
<Class2Record index="2">
|
||||
<Value1 XAdvance="-550"/>
|
||||
</Class2Record>
|
||||
</Class1Record>
|
||||
</PairPos>
|
||||
</Lookup>
|
||||
</LookupList>
|
||||
</GPOS>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user