mirror of
https://github.com/kiliman/operator-mono-lig.git
synced 2026-08-12 18:30:57 +02:00
Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 38eb637717 | |||
| 2dbdb2543c | |||
| 4b908ad07b | |||
| a6dc28a403 | |||
| 84a4863e1f | |||
| 6fe2acd518 | |||
| 25051cfb52 | |||
| f91b91b7df | |||
| 1ed5f8afe4 | |||
| e87797d070 | |||
| 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,54 @@
|
||||
{
|
||||
"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": "mskelton",
|
||||
"name": "Mark Skelton",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/25914066?v=4",
|
||||
"profile": "https://github.com/mskelton",
|
||||
"contributions": [
|
||||
"design"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "drod3763",
|
||||
"name": "Derick Rodriguez",
|
||||
"avatar_url": "https://avatars2.githubusercontent.com/u/7785716?v=4",
|
||||
"profile": "https://github.com/drod3763",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "amitkparekh",
|
||||
"name": "Amit Parekh",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/7276308?v=4",
|
||||
"profile": "https://github.com/amitkparekh",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"design"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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,42 @@
|
||||
# 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
|
||||
## 🎉 What's New in Version 2
|
||||
|
||||
<img src="./images/new-ligatures.png"/>
|
||||
|
||||
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" />
|
||||
|
||||
With the awesome help from [Mark Skelton](https://github.com/mskelton), we now have the full set of ligatures for
|
||||
the following fonts. Thanks Mark, and thanks to all of you who have been patiently waiting for these ligatures to be completed.
|
||||
|
||||
- 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
|
||||
|
||||
## 🙏 Help Wanted
|
||||
|
||||
As noted above, v2 does not include all weights for Operator Mono. 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,101 +47,120 @@ 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.
|
||||
- Python (v2.7+)
|
||||
- Node.js
|
||||
- Install _fonttools_ from https://github.com/fonttools/fonttools
|
||||
- Windows/Linux: `pip install fonttools`
|
||||
- Mac: `pip3 install fonttools`
|
||||
|
||||
1. Once all the prerequisites have been installed, clone this repo.
|
||||
## Installation
|
||||
|
||||
2. From the command line, run:
|
||||
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.
|
||||
|
||||
```
|
||||
Next, 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.
|
||||
|
||||
Finally, run the following commands to install npm dependencies and build the font files. The new font files will be placed in the `build` folder. You can now install these fonts on your system.
|
||||
|
||||
```sh
|
||||
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`.
|
||||
|
||||
4. From the command line, run:
|
||||
|
||||
### Windows
|
||||
|
||||
```
|
||||
# Windows
|
||||
build
|
||||
```
|
||||
|
||||
### Linux/Mac
|
||||
|
||||
```
|
||||
# Linux/Mac
|
||||
./build.sh
|
||||
```
|
||||
|
||||
This will generate the new font files in the `build` folder. You can now install these fonts on your system.
|
||||
### Docker
|
||||
|
||||
---
|
||||
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:
|
||||
|
||||
<img src="./images/OperatorMonoAllTheThings.png" />
|
||||
1. Clone the repo [located here](https://github.com/drod3763/kiliman-operator-mono-lig-docker).
|
||||
1. Copy your _Operator Mono_ OpenType files into the `input` folder.
|
||||
1. From the command line run:
|
||||
```sh
|
||||
docker-compose run --rm operator-mono-lig
|
||||
```
|
||||
|
||||
## GitHub
|
||||
Add *Operator Mono* to GitHub code blocks using the [Stylus Extension](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne).
|
||||
The image will build and execute the conversion. The new font files will be generated into the `output` folder.
|
||||
|
||||
Create a style and enter the following:
|
||||
## Configure Your Code Editor
|
||||
|
||||
```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; }
|
||||
You can now select the newly generated font in your code editor. Make sure you enable font ligatures and set the desired font weight if using Windows. The code block below shows what this might look like if using VS Code.
|
||||
|
||||
```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/github-operatormono.png" />
|
||||
|
||||
## Visual Studio
|
||||
## 🔧 Customize the generated font
|
||||
|
||||
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).
|
||||
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.
|
||||
|
||||
<img src="./images/vsoperatormono.png" />
|
||||
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.
|
||||
|
||||
## Hyper shell
|
||||
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.
|
||||
|
||||
Add *Operator Mono* to [Hyper](https://hyper.is/) a JS/CSS/HTML Terminal.
|
||||
```ini
|
||||
# name of profile (one or more sections, first should be name default)
|
||||
[default]
|
||||
# glyph=altglyph
|
||||
greater_equal.liga=greater_equal.2.liga
|
||||
|
||||
<img src="./images/hyper terminal.png" />
|
||||
# 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 ...
|
||||
```
|
||||
|
||||
## 😍 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/mskelton"><img src="https://avatars3.githubusercontent.com/u/25914066?v=4" width="100px;" alt="Mark Skelton"/><br /><sub><b>Mark Skelton</b></sub></a><br /><a href="#design-mskelton" title="Design">🎨</a></td>
|
||||
<td align="center"><a href="https://github.com/drod3763"><img src="https://avatars2.githubusercontent.com/u/7785716?v=4" width="100px;" alt="Derick Rodriguez"/><br /><sub><b>Derick Rodriguez</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=drod3763" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/amitkparekh"><img src="https://avatars3.githubusercontent.com/u/7276308?v=4" width="100px;" alt="Amit Parekh"/><br /><sub><b>Amit Parekh</b></sub></a><br /><a href="https://github.com/kiliman/operator-mono-lig/commits?author=amitkparekh" title="Documentation">📖</a> <a href="#design-amitkparekh" title="Design">🎨</a></td>
|
||||
</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: 168 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