Showing preview only (2,339K chars total). Download the full file or copy to clipboard to get everything.
Repository: tonsky/FiraCode
Branch: master
Commit: e50b177465f3
Files: 130
Total size: 2.2 MB
Directory structure:
gitextract_wvu_xg61/
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── AUTHORS
├── CHANGELOG.md
├── Dockerfile
├── FiraCode.glyphs
├── LEEME.md
├── LEIAME.md
├── LICENSE
├── Makefile
├── README.md
├── README_CN.md
├── README_JA.md
├── classes/
│ ├── ClosingBracket.fea
│ ├── Digit.fea
│ ├── DigitTosf.fea
│ ├── HexDigit.fea
│ ├── OpeningBracket.fea
│ └── Tall.fea
├── clojure/
│ ├── fira_code/
│ │ ├── calt.clj
│ │ ├── checks.clj
│ │ ├── classes.clj
│ │ ├── coll.clj
│ │ ├── features.clj
│ │ ├── files.clj
│ │ ├── glyphs.clj
│ │ ├── main.clj
│ │ ├── not_space.clj
│ │ ├── spacers.clj
│ │ └── time.clj
│ └── user.clj
├── deps.edn
├── distr/
│ ├── README.txt
│ ├── fira_code.css
│ └── specimen.html
├── docs/
│ └── calt_performance.md
├── extras/
│ └── showcases.txt
├── features/
│ ├── calt/
│ │ ├── center.fea
│ │ ├── conj_disj.fea
│ │ ├── cross.fea
│ │ ├── dashes.fea
│ │ ├── equal_arrows.fea
│ │ ├── fi_fl.fea
│ │ ├── greek.fea
│ │ ├── hyphen_arrows.fea
│ │ ├── match_case.fea
│ │ ├── numbersigns.fea
│ │ └── underscores.fea
│ ├── cv01.fea
│ ├── cv02.fea
│ ├── cv03.fea
│ ├── cv04.fea
│ ├── cv05.fea
│ ├── cv06.fea
│ ├── cv07.fea
│ ├── cv08.fea
│ ├── cv09.fea
│ ├── cv10.fea
│ ├── cv11.fea
│ ├── cv12.fea
│ ├── cv13.fea
│ ├── cv14.fea
│ ├── cv15.fea
│ ├── cv16.fea
│ ├── cv17.fea
│ ├── cv18.fea
│ ├── cv19.fea
│ ├── cv20.fea
│ ├── cv21.fea
│ ├── cv22.fea
│ ├── cv23.fea
│ ├── cv24.fea
│ ├── cv25.fea
│ ├── cv26.fea
│ ├── cv27.fea
│ ├── cv28.fea
│ ├── cv29.fea
│ ├── cv30.fea
│ ├── cv31.fea
│ ├── cv32.fea
│ ├── onum.fea
│ ├── ss01.fea
│ ├── ss02.fea
│ ├── ss03.fea
│ ├── ss04.fea
│ ├── ss05.fea
│ ├── ss06.fea
│ ├── ss07.fea
│ ├── ss08.fea
│ ├── ss09.fea
│ ├── ss10.fea
│ └── zero.fea
├── googlefonts-qa/
│ ├── METADATA.pb
│ ├── README.md
│ ├── checks/
│ │ ├── FiraCode-Light.checks.md
│ │ └── static/
│ │ ├── FiraCode-Bold.checks.md
│ │ ├── FiraCode-Light.checks.md
│ │ ├── FiraCode-Medium.checks.md
│ │ ├── FiraCode-Regular.checks.md
│ │ └── FiraCode-Retina.checks.md
│ ├── gfonts-description.html
│ ├── notes/
│ │ ├── QA-notes.md
│ │ └── outline-checks.md
│ └── scripts/
│ ├── get-version.py
│ ├── move-check.sh
│ ├── requirements.txt
│ └── set-vertical-metrics.py
├── package.json
├── requirements.txt
└── script/
├── bake_in_features.sh
├── bootstrap_linux.sh
├── bootstrap_macos.sh
├── build.sh
├── build_docker.sh
├── build_otf.sh
├── build_ttf.sh
├── build_variable.sh
├── build_woff.sh
├── build_woff2.sh
├── check
├── check_widths
├── clean.sh
├── common.py
├── everything
├── package.sh
├── progress.clj
├── release.py
├── repl.sh
├── update_glyphs.sh
└── update_version.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/build.yml
================================================
on:
push:
branches:
- '*'
tags:
- '[0-9]+.[0-9]+'
paths:
- '.github/workflows/**'
- 'FiraCode.glyphs'
- 'requirements.txt'
- 'script/**'
jobs:
build:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: ./script/bootstrap_linux.sh
- if: startsWith(github.ref, 'refs/tags/')
run: python3 ./script/update_version.py
- run: ./script/build.sh
- run: echo "hash=$(git rev-parse --short $GITHUB_SHA)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: Fira_Code_${{ env.hash }}
path: distr
- if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: python3 ./script/release.py
================================================
FILE: .gitignore
================================================
*.zip
target
clojure/*.edn
.cpcache
.repl-port
master_ufo
instance_ufo
venv
.DS_Store
*.numbers
distr/*/
*.glyphs
!FiraCode.glyphs
.idea
.fleet
*.iml
*.glyphspackage
.vibe
================================================
FILE: AUTHORS
================================================
# This is the official list of project authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS.txt file.
# See the latter for an explanation.
#
# Names should be added to this file as:
# Name or Organization <email address>
Mozilla Foundation (https://www.mozilla.org/en-US/contact/)
Telefonica S.A.
Nikita Prokopov (niki@tonsky.me) github.com/tonsky
================================================
FILE: CHANGELOG.md
================================================
### Changelog
All notable changes to this project will be documented in this file.
### 7.0
- Fixed overlap in U+2573 ╳ #1414
### 6.2
- Fixed monospaced property #1325
### 6.1
- Fixed hinting settings to match Glyphs export #1315
### 6.0
Unicode:
- Fixed height of `∑` U+2211 N-ARY SUMMATION #1083
- Added U+2241..U+224B `≁ ≂ ≃ ≄ ≅ ≆ ≇ ≉ ≊ ≋` #1090
- Added new enclosed characters from Unicode 13 U+0229C `⊜`, U+1F10D `🄍`, U+1F10E `🄎`, U+1F10F `🄏`, U+1F16D `🅭`, U+1F16E `🅮`, U+1F16F `🅯`, U+1F1AD `🆭` #1070
- Redrew U+27F0..U+27FF Supplemental Arrows-A to be strict monospace `⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿` #1109 #1123
- Added U+220E End of Proof `∎` #1115
- Added U+FFFD Replacement Character `�` #1137, thanks @gjvnq
- Added U+EE00..U+EE0B Progress Bar `` #1182
- Added U+2237 Proportion `∷` #1219
- Added U+21AA Rightwards Arrow with Hook `↪` #1307
Changed:
- Fixed weird look of `::<` `::>` `<::` `>::` #1145
- `---` now makes a line #1190
Removed:
- C-style compound assignment `>>=` `<<=` `||=` `|=` are not combined with equal sign by default. Old behavior is moved into `ss09` #974
- Restored short `|` by default, long one moved to `cv30` #843 #1160
- Moved `.-` into `cv25` #670 #860 #1103
- Moved `.=` into `cv32` #670
- Removed named “Retina” instance from FiraCode-VF.ttf (you can still get it by setting `wght=450`) #1318
Added (variants):
- Alternative `a` `cv01` #949
- Alternative `g` `cv02` #886
- Alternative `i` `cv03`-`cv06`
- Alternative `l` `cv07`-`cv10` #899
- Alternative `0` `cv11`-`cv13`
- Alternative `3` `cv14`
- Top-aligned `*` `cv15`
- Hexagonal `*` `cv16` #708 #1134
- Top-aligned `~` `cv17`
- Alternative `%` `cv18`
- `<=` with a horizontal bar `cv19`
- `<=` as an arrow `cv20` #34 #696 #858
- `=<` as less than or equal `cv21` #34
- `=<` as less than or equal with horizontal bar `cv22` #34
- `>=` with a horizontal bar `cv23`
- `/=` as not equals `cv24` #125
- Added `:-` to `cv26` #790
- Returned `[]` as `cv27`
- Returned `{. .}` as `cv28` #875 #635 #409 #279 #264 #214
- Alternative `{}` `cv29`
- Returned full ligatures for `Fl` `Tl` `fi` `fj` `fl` `ft` as `ss10`
- Alternative `()` `cv31` #1198
#### 5.2 (June 12, 2020)
- Fixed hinting problems caused by build_ttf #1075
#### 5.1 (June 10, 2020)
- Fixed monospace property broken by adding threeemdash #1073
#### 5.0 (June 8, 2020)
- Fixed Box drawing diagonal lines U+2571 `╱` U+2572 `╲` U+2573 `╳` #929
- Added U+2236 Ratio `∶` #926
- Added U+2E3A 2-em dash `⸺`, U+2E3B 3-em dash `⸻` #1019
- Fixed arrows next to lowercase letters #1049 #1059
- Vertically-aligned colons, greater/less signs #980 #1061
- Make U+2388 Helm Symbol `⎈` single-width #1036
- Disable `=/` because of conflicts with paths `PATH=/...` #1056
- Fixed STAT table in FiraCode-VF.ttf #770 #1054
- Added `//=` `=//` `=//=` #816
- Added U+21B0..U+21B3 `↰ ↱ ↲ ↳`, U+2770..U+2771 `❰ ❱` #1032
- Fixed U+27F8 `⟸` U+27F9 `⟹` U+27FA `⟺` U+27FD `⟽` U+27FE `⟾` U+27FF `⟿` that were broken in v4 #1067
- Added `ss08` that adds gaps to `==` `===` `!=` `!==` #187 #383
- Removed OTF from distr to avoid confusion #939
#### 4.0 (May 18, 2020)
Removed 44 individual arrow ligatures, replaced with four universal, combinative substitutions. 100-150% faster shaping performance, infinite amount of arrow combinations.
- Arbitrary-long combinative hyphen-based arrows #346 #494 #713 #826 #968 #983 #1029
- Arbitrary-long combinative equal-based arrows #229 #234 #346 #494 #698 #826 #919 #931 #946 #948 #968 #1016 #1018 #1022
- Arbitrary-long underscores #120 #269 #346 #494
- Arbitrary-long numbersign sequences #1014
- Fixed descender in U+040F `Џ`
- Undid #995 and properly fixed U+04CB `Ӌ`, U+04CC `ӌ` #1001 and U+0449 `щ` #1007
- Added `|||` to prevent partial ligatures in `|||-|||` `|||=|||` #346
#### 3.1 (April 15, 2020)
- Fixed width of Germandbls, cornerbracketleft, cornerbracketleft, negativeAcknowledge-control, cornerbracketleft.half, cornerbracketright.half [#1000]
- Fixed misplaced descenders on U+04B3 `ҳ` U+04CB `Ӌ` and U+04CC `ӌ` [#995]
- Fixed U+03F4 `ϴ` [#996]
- Fixed U+0314 COMBINING REVERSED COMMA ABOVE [#997]
#### 3.0 (April 9, 2020)
- Disabled ligatures in progress bars `[-> [--> [---> [=> [==> [===>` [#968]
- Added set letters U+2102 `ℂ` U+210D `ℍ` U+2115 `ℕ` U+2119 `ℙ` U+211A `ℚ` U+211D `ℝ` U+2124 `ℤ` and U+1D539 `𝔹` [#841]
- Removed `?:` [#970]
- Added missing set operations U+2200 `∀` U+2203..U+2205 `∃ ∄ ∅` U+2207 `∇` U+2282..U+228B `⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋` U+2208..U+220# `∈ ∉ ∊ ∋ ∌ ∍` U+222A `∪` [#822]
- Added U+300C U+300D Corner brackets `「」` and U+FF62 U+FF63 Halfwidth Corner brackets `「」` [#940]
- Added `<<->>` [#919]
- Disabled `fl` `Fl` `Tl` ligatures, adjusted `l` height in combination with `[F T I f]` instead [#902]
- Added U+25A4..25A9 Squares with fill `▤▥▦▧▨▩` [#450]
- Slightly tuned multiple ampersands in `ss03` [#831]
- Fixed horizontal bar height in `<!--` [#917]
- Fixed multiply sign in `0xFF` and `10x10` with combination of `onum` and `zero` [#888]
- Fixed dollar sign in `<$` `$>` `<$>` when `ss04` is active [#830]
- Removed `ss19` and `ss20` (they are covered by `zero` and `onum`)
- Added `=~` and `!~` to `ss07` [#293]
- Removed `~=` [#381]
- Re-added `..=` with just a subtle spacing adjustment [#934]
- Added U+2630..U+2637 `☰☱☲☳☴☵☶☷` (Bagua trigrams) [#859]
- Disabled `<?=` (`?=` after `<`) [#850]
- Added SemiBold weight [#987]
- Replaced single LIG with per-glyph *.spacer
#### 2.0 (September 9, 2019)
- Characters U+25DE `◟` and U+25DF `◞` were swapped [#761]
- Added Box Drawing Light Arcs U+256D `╭` U+256E `╮` U+256F `╯` U+2570 `╰` [#349] [#702] [#714] [#725]
- Added Mathematical Angle Brackets U+27E8 `⟨` U+27E9 `⟩` [#763]
- Added Light and heavy dashed lines U+2504..U+250B `┄┅┆┇┈┉┊┋` [#702]
- Adjusted Box drawings double dashes U+254C..U+254F `╌╍╎╏`
- Fixed outlines of U+04FA `Ӻ` and U+04FB `ӻ` [#806]
- Added Not identical to U+2262 `≢` [#396]
- Added Latin Capital Letter Sharp S U+1E9E `ẞ` [#587]
- Tuned position and width of U+2044 Fraction Slash ` ⁄ ` [#588] and U+2215 Division Slash `∕` [#805]
- Added U+1405 Canadian Syllabics O `ᐅ` and U+140A Canadian Syllabics A `ᐊ` [#666]
- Added U+2234 Therefore `∴` and U+2235 Because `∵` [#669]
- Added U+239B..U+23AD multi-line brackets [#675]
```
⎛ 1 ⎞ ⎡ a ⎤ ⎧ x ⎫
⎜ 2 ⎟ ⎢ b ⎥ ⎪ y ⎪
⎜ 3 ⎟ ⎢ c ⎥ ⎨ z ⎬
⎜ 4 ⎟ ⎢ d ⎥ ⎪ y ⎪
⎝ 5 ⎠ ⎣ e ⎦ ⎩ x ⎭
```
- Added U+27F0..U+27FF Supplemental Arrows-A `⟲⟳⟰⟱⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿` [#677]
- Added U+2400..U+2426 Control Pictures `␆␈␇␣␢␘␍␐␡␥␔␑␓␒␙␃␄␗␅␛␜␌␝␉␊␕␀␞␏␎␠␁␂␚␦␖␟␋` [#764]
- Added U+2388 Helm Symbol `⎈` [#766]
- Added U+2016 Double Vertical Line `‖` [#780]
- Tuned metrics (1870,-530 -> 1800,-600, upm 2000 -> 1950, hopefully fix [#241] [#252] [#459] [#552] [#798])
- Box characters to not overflow line height, taller `|` [#449]
- Added few technical symbols [#799]:
- U+21A9 Leftwards arrow with hook (Return) `↩`
- U+21DE Upwards arrow with double stroke (Page Up) `⇞`
- U+21DF Downwards arrow with double stroke (Page down) `⇟`
- U+21E4 Left Tab Arrow `⇤`
- U+21E5 Right Tab Arrow `⇥`
- U+2300 Diameter sign `⌀`
- U+2303 Up Arrowhead (Control) `⌃`
- U+2304 Down Arrowhead `⌄`
- U+2305 Projective `⌅`
- U+2306 Perspective `⌆`
- U+2318 Place of interest sign (Command) `⌘`
- U+2324 Up Arrowhead between two horizontal bars `⌤`
- U+2325 Option Key `⌥`
- U+2387 Alternative Key Symbol `⎇`
- U+238B Broken Circle with Northwest Arrow (Escape) `⎋`
- U+23CF Eject symbol `⏏`
- Added Coq logical and ` /\ ` and logical or ` \/ ` ligatures, U+2227 `∧` and U+2228 `∨` [#191] [#488] [#738] [#810]
- Added SystemVerilog `|->` `|=>` and `<-|` `<=|` for symmetry [#695]
- Added Forces `||-` ligature and U+22A2..U+22AF `⊢ ⊣ ⊤ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯` [#709]
- Added `fl` `Fl` `Tl` ligatures, adjusted `fi` `fj` pairs [#795]
- Disabled ligatures after regexp lookahead/lookbehinds `(?<=<` `(?<=>` `(?<==>` `(?<=|` `(?<==` `(?=:=` `(?=!=` `(?==` `(?===` `(?==>` `(?=>` `(?=>>` `(?=<<` `(?=/=` `(?!!` `(?!!.` `(?!=` `(?!==` `(?<!!` `(?<!!.` `(?<!=` `(?<!==` `(?<!--` [#578]
- Removed `..=` [#757]
- Alternatives (stylistic sets):
- Lowercase `r` (ss01) [#601]
- Less than/greater than `<=` `>=` (ss02) [#263] [#617]
- Ampersand `&` (ss03) [#371] [#617]
- Dollar sign `$` (ss04) [#617]
- At sign `@` (ss05) [#617] [#748] [#817]
- Thin backslash (ss06) [#577 #720 #825]
- Dotted zero `0` (zero, ss19)
- Old-style figures (onum, ss20) [#561] [#715]
- Old-style figures no longer prevent ligatures [#561] [#715]
#### 1.207 (April 6, 2019)
- Variable TTF, cleaned up [many small Light weight errors](https://github.com/thundernixon/FiraCode/blob/qa/googlefonts-qa/notes/outline-checks.md) (done by @thundernixon, PR #735)
- Dropped EOF which were only useful for IE 6-11
- Fixed different vertical position of `<=` `>=` in Light and Bold caused during [#483]
#### 1.206 (September 30, 2018)
- Added `<==>` ([#392]), `#:` ([#642]), `!!.` ([#618]), `>:` `:<` ([#605]), U+0305 Combining overline ([#608]), U+2610 Ballot box, U+2611 Ballot box with check, U+2612 Ballot box with x ([#384])
- Fixed incorrect width of `[` `**` ([#607])
- Redrew `{|` `|}` `[|` `|]` ([#643])
- Removed `{.` `.}` ([#635]), thin backslash ([#577])
- Disabled ligatures in `(?=` `(?<=` `(?:` ([#624]), `>=<` ([#548]), `{|}` `[|]` ([#593])
- Fixed ligatures precedence in `<||>` ([#621]), `:>=` ([#574]), `<<*>>` `<<<*>>>` `<<+>>` <<<+>>>` `<<$>>` `<<<$>>>` ([#410]), `!=<` ([#276])
- Fixed incorrectly swapped box drawing characters `╵` and `╷` ([#595])
- Adjusted vertical position of `<=` `>=` to align with `<` `>` ([#483])
#### 1.205 (February 27, 2018)
- Slashed zero by default ([#481] [#342])
- Adjusted vertical position of colon `:` near `{[()]}` ([#486])
- Thin backslash except when in `\\`, removed `\\\` ([#536])
- Added `:>` ([#547]) and `<:` ([#525])
- Removed `=<` ([#479] [#468] [#424] [#406] [#355] [#305])
- Added `::=` ([#539])
- Added `[|` `|]` ([#516]) `{|` `|}` ([#330])
- Added `✓` (U+2713)
- Added `..=` ([#433])
- Added `=!=` ([#338])
- Added `|-` `-|` `_|_` and adjusted `|=` `||=` ([#494])
- Added `#=` ([#208])
#### 1.204 (November 6, 2016)
- Added `U+25B6` (black right-pointing triangle) and `U+25C0` (black left-pointing triangle) ([#289])
- Changed look of Markdown headers `##` `###` `####` to make them easier to tell apart ([#287])
- Fixed BBEdit incorrectly applying ligatures after tab ([#274])
- Returned Nim pragmas `{.` `.}` ([#279])
- Added Unicode increment `U+2206` ([#174], [#298])
- Added fish operators `>->` `<-<` ([#297])
- Added safe navigation operators `?.` `.?` `?:` ([#215])
- Added `<~>` ([#179], used in IntelliJ for collapsed methods)
- Added F# piping operators `||>` `|||>` `<||` `<|||` ([#184])
- Added shebang `#!` ([#169], [#193])
#### 1.203 (September 17, 2016)
- Added `__` ([#120], [#269])
#### 1.202 (September 17, 2016)
- Removed `{.` `.}` `[.` `.]` `(.` `.)` ([#264])
#### 1.201 (August 30, 2016)
- Removed `[]` ([#92]) `{-` `-}` ([#248])
- Removed `/**` `**/` and disabled ligatures for `/*/` `*/*` sequences ([#219] [#238])
- Added `]#` `{.` `.}` `[.` `.]` `(.` `.)` ([#214])
#### 1.200 (July 18, 2016)
- Removed `!!!` `???` `;;;` `&&&` `|||` `=~` [#167] `~~~` `%%%`
- New safer `calt` code that doesn’t apply ligatures to long sequences of chars, e.g. `!!!!`, `>>>>`, etc ([#49], [#110], [#176])
- Larger `+` `-` `*` and corresponding ligatures ([#86])
- Hexadecimal `x` (`0xFF`) is now applied to sequences like `128x128` as well ([#161])
- Added twoTurned (U+218A) and threeTurned (U+218B) ([#146])
- Added whiteFrowningFace (U+2639) ([#190])
- Simplified visual style on markdown headers `##` `###` `####` ([#107])
- Added `</>` ([#147])
- Provided ttf and webfonts versions (eot, woff, woff2) ([#18], [#24], [#38], [#101], [#106])
- Increased spacing in `<=` `>=` ([#117])
#### 1.102
- Support for IntelliJ-based IDEs ([instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions))
- Turned on autohinting
#### 1.101
- Added Light weight
- Adjusted rules when vertical centering of `:`, `-`, `*` and `+` occurs
#### 1.100
- Fixed calt table conflicts (`----` would incorrectly render as `<!--`)
- Added centered `:` (between digits, e.g. `10:40`)
- Added lowercase-aligned `-`, `*` and `+` (only between lowercase letters, e.g. kebab case `var-name`, pointers `*ptr` etc)
#### 1.000
Added weights:
- Retina (just slightly heavier than Regular)
- Medium
- Bold
Switched to `calt` instead of `liga`. You can now “step inside” the ligature in text editors.
Fira Code is now drawn and built in Glyphs 2 app (should improve compatibility).
Added:
`<->` `<~~` `<~` `~~~` `~>` `~~>`
`<$` `<+` `<*` `*>` `+>` `$>`
`;;;` `:::` `!!!` `???` `%%` `%%%` `##` `###` `####`
`.-` `#_(` `=<` `**/` `0x` `www` `[]`
Redrawn:
`{-` `-}` `~=` `=~` `=<<` `>>=` `<$>` `<=>` `.=`
Removed: `?:`
Total ligatures count: 115
#### 0.6
Redrawn from Fira Mono 3.204 (slightly heavier weight)
Added:
`**` `***` `+++` `--` `---` `?:`
`/=` `/==` `.=` `^=` `=~` `?=` `||=` `|=`
`<<<` `<=<` `-<<` `-<` `>-` `>>-` `>=>` `>>>`
`<*>` `<|>` `<$>` `<+>`
`<!--` `{-` `-}` `/**` `\\` `\\\`
`..<` `??` `|||` `&&&` `<|` `|>`
Added support for Powerline
#### 0.5
Added: `#{` `~-` `-~` `<==` `==>` `///` `;;` `</`
#### 0.4
- Added `~=` `~~` `#[`
- Rolled back `&&` and `||` to more traditional look
- `===` and `!==` are now rendered with 3 horizontal bars
#### 0.3
Added: `~@` `#?` `=:=` `=<`
#### 0.2.1
Fixed width of `&&` and `||`
#### 0.2
Added: `-->` `<--` `&&` `||` `=>>` `=/=`
#### 0.1
`>>=` `=<<` `<<=` `->>` `->` `=>` `<<-` `<-`
`===` `==` `<=>` `>=` `<=` `>>` `<<` `!==` `!=` `<>`
`:=` `++` `#(` `#_`
`::` `...` `..` `!!` `//` `/*` `*/` `/>`
[#18]: https://github.com/tonsky/FiraCode/issues/18
[#24]: https://github.com/tonsky/FiraCode/issues/24
[#38]: https://github.com/tonsky/FiraCode/issues/38
[#49]: https://github.com/tonsky/FiraCode/issues/49
[#86]: https://github.com/tonsky/FiraCode/issues/86
[#92]: https://github.com/tonsky/FiraCode/issues/92
[#101]: https://github.com/tonsky/FiraCode/issues/101
[#106]: https://github.com/tonsky/FiraCode/issues/106
[#107]: https://github.com/tonsky/FiraCode/issues/107
[#110]: https://github.com/tonsky/FiraCode/issues/110
[#117]: https://github.com/tonsky/FiraCode/issues/117
[#120]: https://github.com/tonsky/FiraCode/issues/120
[#146]: https://github.com/tonsky/FiraCode/issues/146
[#147]: https://github.com/tonsky/FiraCode/issues/147
[#161]: https://github.com/tonsky/FiraCode/issues/161
[#167]: https://github.com/tonsky/FiraCode/issues/167
[#169]: https://github.com/tonsky/FiraCode/issues/169
[#174]: https://github.com/tonsky/FiraCode/issues/174
[#176]: https://github.com/tonsky/FiraCode/issues/176
[#179]: https://github.com/tonsky/FiraCode/issues/179
[#184]: https://github.com/tonsky/FiraCode/issues/184
[#190]: https://github.com/tonsky/FiraCode/issues/190
[#193]: https://github.com/tonsky/FiraCode/issues/193
[#214]: https://github.com/tonsky/FiraCode/issues/214
[#215]: https://github.com/tonsky/FiraCode/issues/215
[#219]: https://github.com/tonsky/FiraCode/issues/219
[#238]: https://github.com/tonsky/FiraCode/issues/238
[#248]: https://github.com/tonsky/FiraCode/issues/248
[#264]: https://github.com/tonsky/FiraCode/issues/264
[#269]: https://github.com/tonsky/FiraCode/issues/269
[#274]: https://github.com/tonsky/FiraCode/issues/274
[#279]: https://github.com/tonsky/FiraCode/issues/279
[#287]: https://github.com/tonsky/FiraCode/issues/287
[#289]: https://github.com/tonsky/FiraCode/issues/289
[#297]: https://github.com/tonsky/FiraCode/issues/297
[#298]: https://github.com/tonsky/FiraCode/issues/298
================================================
FILE: Dockerfile
================================================
FROM python:3
WORKDIR /opt
COPY requirements.txt .
COPY script/bootstrap_linux.sh script/
RUN script/bootstrap_linux.sh
================================================
FILE: FiraCode.glyphs
================================================
{
.appVersion = "3436";
.formatVersion = 3;
DisplayStrings = (
"↰↱↲↳↴↵"
);
axes = (
{
name = Weight;
tag = wght;
}
);
classes = (
{
code = "A A-cy AE AEacute Aacute Abreve Abreve-cy Acircumflex Adieresis Adieresis-cy Agrave Aie-cy Aleutka-cy Alpha Alphadasia Alphadasiaoxia Alphadasiaoxiaprosgegrammeni Alphadasiaperispomeni Alphadasiaperispomeniprosgegrammeni Alphadasiaprosgegrammeni Alphadasiavaria Alphadasiavariaprosgegrammeni Alphamacron Alphaoxia Alphaprosgegrammeni Alphapsili Alphapsilioxia Alphapsilioxiaprosgegrammeni Alphapsiliperispomeni Alphapsiliperispomeniprosgegrammeni Alphapsiliprosgegrammeni Alphapsilivaria Alphapsilivariaprosgegrammeni Alphatonos Alphavaria Alphavrachy Amacron Aogonek Archaicsampi Aring Atilde B BdoubleStruck Be-cy Beta C CR Cacute Cacute.loclPLK Ccaron Ccedilla Ccircumflex Cdotaccent CdoubleStruck Che-cy Cheabkhasian-cy Chedescender-cy Chedescenderabkhasian-cy Chedieresis-cy Chekhakassian-cy Cheverticalstroke-cy Chi D Dcaron Dche-cy Dcroat De-cy Delta Digamma Dje-cy Dze-cy Dzeabkhasian-cy Dzhe-cy Dzzhe-cy E E-cy Eacute Ebreve Ecaron Ecircumflex Edieresis Edieresis-cy Edotaccent Ef-cy Egrave Eiotified-cy El-cy Eldescender-cy Elhook-cy Elmiddlehook-cy Eltail-cy Em-cy Emacron Emtail-cy En-cy EnLeftHook-cy Endescender-cy Eng Enghe-cy Enhook-cy Enmiddlehook-cy Entail-cy Eogonek Epsilon Epsilondasia Epsilondasiaoxia Epsilondasiavaria Epsilonoxia Epsilonpsili Epsilonpsilioxia Epsilonpsilivaria Epsilontonos Epsilonvaria Er-cy Ereversed-cy Ertick-cy Es-cy Esdescender-cy Eta Etadasia Etadasiaoxia Etadasiaoxiaprosgegrammeni Etadasiaperispomeni Etadasiaperispomeniprosgegrammeni Etadasiaprosgegrammeni Etadasiavaria Etadasiavariaprosgegrammeni Etaoxia Etaprosgegrammeni Etapsili Etapsilioxia Etapsilioxiaprosgegrammeni Etapsiliperispomeni Etapsiliperispomeniprosgegrammeni Etapsiliprosgegrammeni Etapsilivaria Etapsilivariaprosgegrammeni Etatonos Etavaria Eth F F.spacer F_l.liga.ss10 Fita-cy G Gamma Gbreve Gcircumflex Gcommaaccent Gdotaccent Ge-cy Gedescender-cy Germandbls Gestrokehook-cy Ghemiddlehook-cy Ghestroke-cy Gheupturn-cy Gje-cy H H18543 H18551 H22073 Ha-cy Haabkhasian-cy Hadescender-cy Hahook-cy Hardsign-cy Hastroke-cy Hbar Hcircumflex HdoubleStruck Heta I I-cy IJ Ia-cy Iacute Ibreve Icircumflex Idieresis Idieresis-cy Idotaccent Ie-cy Iebreve-cy Iegrave-cy Igrave Ii-cy Iigrave-cy Iishort-cy Iishorttail-cy Imacron Imacron-cy Io-cy Iogonek Iota Iotadasia Iotadasiaoxia Iotadasiaperispomeni Iotadasiavaria Iotadieresis Iotamacron Iotaoxia Iotapsili Iotapsilioxia Iotapsiliperispomeni Iotapsilivaria Iotatonos Iotavaria Iotavrachy Itilde Iu-cy Izhitsa-cy Izhitsadblgrave-cy J Jcircumflex Je-cy K Ka-cy Kabashkir-cy Kadescender-cy Kahook-cy KaiSymbol Kappa Kastroke-cy Kaverticalstroke-cy Kcommaaccent Kje-cy Komide-cy Komidje-cy Komidzje-cy Komilje-cy Kominje-cy Komisje-cy Komitje-cy Komizje-cy Koppa KoppaArchaic Ksi-cy L LIG Lacute Lambda Lcaron Lcommaaccent Ldot Lha-cy Lje-cy Lslash M Mu N Nacute Nacute.loclPLK Ncaron Ncommaaccent NdoubleStruck Nje-cy Ntilde Nu O O-cy OE Oacute Oacute.loclPLK Obarred-cy Obarreddieresis-cy Obreve Ocircumflex Odieresis Odieresis-cy Ograve Ohungarumlaut Omacron Omega Omega-cy Omegadasia Omegadasiaoxia Omegadasiaoxiaprosgegrammeni Omegadasiaperispomeni Omegadasiaperispomeniprosgegrammeni Omegadasiaprosgegrammeni Omegadasiavaria Omegadasiavariaprosgegrammeni Omegaoxia Omegaprosgegrammeni Omegapsili Omegapsilioxia Omegapsilioxiaprosgegrammeni Omegapsiliperispomeni Omegapsiliperispomeniprosgegrammeni Omegapsiliprosgegrammeni Omegapsilivaria Omegapsilivariaprosgegrammeni Omegatonos Omegavaria Omicron Omicrondasia Omicrondasiaoxia Omicrondasiavaria Omicronoxia Omicronpsili Omicronpsilioxia Omicronpsilivaria Omicrontonos Omicronvaria Oslash Oslashacute Otilde P Palochka-cy Pamphyliandigamma PdoubleStruck Pe-cy Pedescender-cy Pemiddlehook-cy Phi Pi Psi Psi-cy Q Qa-cy QdoubleStruck R Racute Rcaron Rcommaaccent RdoubleStruck Reversedze-cy Rha-cy Rho Rhodasia S SF010000 SF020000 SF030000 SF040000 SF050000 SF060000 SF070000 SF080000 SF090000 SF100000 SF110000 SF190000 SF200000 SF210000 SF220000 SF230000 SF240000 SF250000 SF260000 SF270000 SF280000 SF360000 SF370000 SF380000 SF390000 SF400000 SF410000 SF420000 SF430000 SF440000 SF450000 SF460000 SF470000 SF480000 SF490000 SF500000 SF510000 SF520000 SF530000 SF540000 Sacute Sacute.loclPLK Sampi San Scaron Scedilla Schwa-cy Schwadieresis-cy Scircumflex Scommaaccent Semisoftsign-cy Sha-cy Shcha-cy Shha-cy Shhadescender-cy Sho Sigma SigmaLunateDottedReversedSymbol SigmaLunateDottedSymbol SigmaLunateReversedSymbol SigmaLunateSymbol Softsign-cy Stigma T T.spacer T_l.liga.ss10 Tau Tbar Tcaron Tcedilla Tcommaaccent Te-cy Tedescender-cy Tetse-cy Theta ThetaSymbol Thorn Tse-cy Tshe-cy U U-cy Uacute Ubreve Ucircumflex Udieresis Udieresis-cy Ugrave Uhungarumlaut Uhungarumlaut-cy Uk-cy Umacron Umacron-cy Uogonek Upsilon UpsilonacutehookSymbol Upsilondasia Upsilondasiaoxia Upsilondasiaperispomeni Upsilondasiavaria Upsilondieresis UpsilondieresishookSymbol UpsilonhookSymbol Upsilonmacron Upsilonoxia Upsilontonos Upsilonvaria Upsilonvrachy Uring Ushort-cy Ustrait-cy Ustraitstroke-cy Utilde V Ve-cy W Wacute Wcircumflex Wdieresis We-cy Wgrave X Xi Y Yacute Yae-cy Yat-cy Ycircumflex Ydieresis Yeru-cy Yerudieresis-cy Ygrave Yi-cy Yot-greek Yusbig-cy Yusbigiotified-cy Yuslittle-cy Yuslittleiotified-cy Z Zacute Zacute.loclPLK Zcaron Zdotaccent ZdoubleStruck Ze-cy Zedescender-cy Zedieresis-cy Zeta Zhe-cy Zhebreve-cy Zhedescender-cy Zhedieresis-cy a a-cy a.cv01 aacute aacute.cv01 abreve abreve-cy abreve.cv01 acircumflex acircumflex.cv01 acknowledge-control acute acute.case acute.case.loclPLK acute.loclPLK acutecomb adieresis adieresis-cy adieresis.cv01 ae aeacute afii00208 agrave agrave.cv01 aie-cy aleutka-cy almostequalorequalto alpha alphadasia alphadasiaoxia alphadasiaoxiaypogegrammeni alphadasiaperispomeni alphadasiaperispomeniypogegrammeni alphadasiavaria alphadasiavariaypogegrammeni alphadasiaypogegrammeni alphamacron alphaoxia alphaoxiaypogegrammeni alphaperispomeni alphaperispomeniypogegrammeni alphapsili alphapsilioxia alphapsilioxiaypogegrammeni alphapsiliperispomeni alphapsiliperispomeniypogegrammeni alphapsilivaria alphapsilivariaypogegrammeni alphapsiliypogegrammeni alphatonos alphavaria alphavariaypogegrammeni alphavrachy alphaypogegrammeni alternativekeysymbol amacron amacron.cv01 ampersand ampersand.spacer ampersand.ss03 ampersand_ampersand.liga ampersand_ampersand.liga.ss03 anoteleia anticlockwiseGappedCircleArrow aogonek aogonek.cv01 apostrophemod approxequal approximatelybutnotactuallyequalto archaicsampi aring aring.cv01 arrowboth arrowdown arrowdownleft arrowdownright arrowdownwhite arrowleft arrowleftwhite arrowright arrowrightwhite arrowup arrowupdown arrowupleft arrowupright arrowupwhite asciicircum asciicircum.spacer asciicircum_equal.liga asciitilde asciitilde.cv17 asciitilde.spacer asciitilde_asciitilde.liga asciitilde_asciitilde_greater.liga asciitilde_at.liga asciitilde_greater.liga asciitilde_hyphen.liga assertion asterisk asterisk.cv15 asterisk.lc asterisk.spacer asterisk_asterisk.liga asterisk_asterisk.liga.cv16 asterisk_asterisk_asterisk.liga asterisk_asterisk_asterisk.liga.cv16 asterisk_greater.liga asterisk_greater.liga.cv16 asterisk_slash.liga asterisk_slash.liga.cv16 asteriskmath asteriskmath.cv15 asteriskmath.lc asymptoticallyequal at at.spacer at.ss05 atilde atilde.cv01 b backslash backslash.spacer backslash.ss06 backslash_slash.liga backspace-control ballotBox ballotBoxWithCheck ballotBoxWithX bar bar.cv30 bar.spacer bar_bar.liga bar_bar.liga.cv30 bar_bar_bar.liga bar_bar_bar.liga.cv30 bar_bar_bar_greater.liga bar_bar_equal_end.seq bar_bar_equal_end.seq.cv30 bar_bar_equal_middle.seq bar_bar_equal_middle.seq.cv30 bar_bar_equal_start.seq bar_bar_equal_start.seq.cv30 bar_bar_greater.liga bar_bar_hyphen_end.seq bar_bar_hyphen_end.seq.cv30 bar_bar_hyphen_middle.seq bar_bar_hyphen_middle.seq.cv30 bar_bar_hyphen_start.seq bar_bar_hyphen_start.seq.cv30 bar_braceright.liga bar_bracketright.liga bar_equal_end.seq bar_equal_end.seq.cv30 bar_equal_middle.seq bar_equal_middle.seq.cv30 bar_equal_start.seq bar_equal_start.seq.cv30 bar_greater.liga bar_hyphen_end.seq bar_hyphen_end.seq.cv30 bar_hyphen_middle.seq bar_hyphen_middle.seq.cv30 bar_hyphen_start.seq bar_hyphen_start.seq.cv30 bar_underscore_middle.seq bar_underscore_middle.seq.cv30 be-cy because bell-control beta betaSymbol blackCircle blackDiamond blackLowerLeftTriangle blackLowerRightTriangle blackRightArrow blackUpperLeftTriangle blackUpperRightTriangle blackVerticalRect blank blankSymbol boxDownHeavyAndHorizontalLight boxDownHeavyAndLeftLight boxDownHeavyAndLeftUpLight boxDownHeavyAndRightLight boxDownHeavyAndRightUpLight boxDownHeavyAndUpHorizontalLight boxDownLightAndHorizontalHeavy boxDownLightAndLeftHeavy boxDownLightAndLeftUpHeavy boxDownLightAndRightHeavy boxDownLightAndRightUpHeavy boxDownLightAndUpHorizontalHeavy boxHeavyDoubleDashHorizontal boxHeavyDoubleDashVertical boxHeavyDown boxHeavyDownAndHorizontal boxHeavyDownAndLeft boxHeavyDownAndRight boxHeavyHorizontal boxHeavyLeft boxHeavyLeftAndLightRight boxHeavyQuadrupleDashHorizontal boxHeavyQuadrupleDashVertical boxHeavyRight boxHeavyTripleDashHorizontal boxHeavyTripleDashVertical boxHeavyUp boxHeavyUpAndHorizontal boxHeavyUpAndLeft boxHeavyUpAndLightDown boxHeavyUpAndRight boxHeavyVertical boxHeavyVerticalAndHorizontal boxHeavyVerticalAndLeft boxHeavyVerticalAndRight boxLeftDownHeavyAndRightUpLight boxLeftHeavyAndRightDownLight boxLeftHeavyAndRightUpLight boxLeftHeavyAndRightVerticalLight boxLeftLightAndRightDownHeavy boxLeftLightAndRightUpHeavy boxLeftLightAndRightVerticalHeavy boxLeftUpHeavyAndRightDownLight boxLightDiagonalCross boxLightDiagonalUpperLeftToLowerRight boxLightDiagonalUpperRightToLowerLeft boxLightDoubleDashHorizontal boxLightDoubleDashVertical boxLightDown boxLightLeft boxLightLeftAndHeavyRight boxLightQuadrupleDashHorizontal boxLightQuadrupleDashVertical boxLightRight boxLightTripleDashHorizontal boxLightTripleDashVertical boxLightUp boxLightUpAndHeavyDown boxRightDownHeavyAndLeftUpLight boxRightHeavyAndLeftDownLight boxRightHeavyAndLeftUpLight boxRightHeavyAndLeftVerticalLight boxRightLightAndLeftDownHeavy boxRightLightAndLeftUpHeavy boxRightLightAndLeftVerticalHeavy boxRightUpHeavyAndLeftDownLight boxUpHeavyAndDownHorizontalLight boxUpHeavyAndHorizontalLight boxUpHeavyAndLeftDownLight boxUpHeavyAndLeftLight boxUpHeavyAndRightDownLight boxUpHeavyAndRightLight boxUpLightAndDownHorizontalHeavy boxUpLightAndHorizontalHeavy boxUpLightAndLeftDownHeavy boxUpLightAndLeftHeavy boxUpLightAndRightDownHeavy boxUpLightAndRightHeavy boxVerticalHeavyAndHorizontalLight boxVerticalHeavyAndLeftLight boxVerticalHeavyAndRightLight boxVerticalLightAndHorizontalHeavy boxVerticalLightAndLeftHeavy boxVerticalLightAndRightHeavy braceleft braceleft.case braceleft.cv29 braceleft.spacer braceleft_bar.liga braceright braceright.case braceright.cv29 braceright.spacer bracketleft bracketleft.case bracketleft.spacer bracketleft_bar.liga bracketleft_bracketright.cv27 bracketright bracketright.case bracketright.spacer bracketright_numbersign.liga breve breve-cy breve-cy.case breve.case brevecomb brokenCircleNorthWestArrow brokenbar bullet bulletoperator bullseye c cacute cacute.loclPLK canadiansyllabicsa canadiansyllabicso cancel-control capslock caron caron.alt caron.case caroncomb carriageReturn-control carriagereturn ccaron ccedilla ccircumflex cdotaccent cedilla cedilla.case cedillacomb cent che-cy cheabkhasian-cy checkmark chedescender-cy chedescenderabkhasian-cy chedieresis-cy chekhakassian-cy cheverticalstroke-cy chi circumflex circumflex.case circumflexcomb clear clockwiseGappedCircleArrow club colon colon.center colon.spacer colon.uc colon_colon.liga colon_colon_colon.liga colon_colon_equal.liga colon_equal.liga colon_equal_middle.seq colon_hyphen.cv26 comma commaabovecomb commaaccent commaaccent.case commareversedabovecomb congruent containsasmemberSmall control copyright cornerbracketleft cornerbracketleft.half cornerbracketright cornerbracketright.half crosshatchFillSquare curlybracketextension currency d dagger daggerdbl dasia dasiaoxia dasiaperispomeni dasiavaria dataLinkEscape-control dblgravecomb dblverticalbar dcaron dche-cy dcroat de-cy degree delete-control deleteFormTwo-control deleteLeftKey deleterightKey delta deviceControlFour-control deviceControlOne-control deviceControlThree-control deviceControlTwo-control diagonalcrosshatchFillSquare dialytikaoxia dialytikaperispomeni dialytikavaria diameterSign diamond dieresis dieresis.case dieresiscomb dieresistonos digamma divide divisionslash dje-cy dkshade doesnotforce doesnotprove dollar dollar.spacer dollar.ss04 dollar_greater.liga dollar_greater.liga.ss04 dotaccent dotaccent.case dotaccentcomb dotlessj dottedlunatesigmasymbol doubleprimemod doubleverticalbardoublerightturnstile downArrowHead downBlackArrow downBlock downQuadrupleArrow downTipLeftArrow downTipRightArrow drachma dze-cy dzeabkhasian-cy dzhe-cy dzzhe-cy e e-cy eacute earthTrigram ebreve ecaron ecircumflex edieresis edieresis-cy edotaccent ef-cy egrave eight eight.dnom eight.numr eight.tosf eightinferior eightsuperior eiotified-cy ejectsymbol el-cy eldescender-cy element elementSmall elhook-cy ellipsis elmiddlehook-cy eltail-cy em-cy emacron emdash emdash.case emptyset emtail-cy en-cy endOfMedium-control endOfText-control endOfTransmission-control endOfTransmissionBlock-control endash endash.case endescender-cy endofproof eng enghe-cy enhook-cy enlefthook-cy enmiddlehook-cy enquiry-control entail-cy eogonek epsilon epsilonLunateReversedSymbol epsilonLunateSymbol epsilondasia epsilondasiaoxia epsilondasiavaria epsilonoxia epsilonpsili epsilonpsilioxia epsilonpsilivaria epsilontonos epsilonvaria equal equal.dnom equal.numr equal.spacer equal_asciitilde.ss07 equal_end.seq equal_equal.liga equal_equal.ss08 equal_equal_equal.liga equal_equal_equal.ss08 equal_middle.seq equal_start.seq equals.circled equalsinferior equalsuperior equivalence er-cy ereversed-cy ertick-cy es-cy escape-control esdescender-cy estimated eta etadasia etadasiaoxia etadasiaoxiaypogegrammeni etadasiaperispomeni etadasiaperispomeniypogegrammeni etadasiavaria etadasiavariaypogegrammeni etadasiaypogegrammeni etaoxia etaoxiaypogegrammeni etaperispomeni etaperispomeniypogegrammeni etapsili etapsilioxia etapsilioxiaypogegrammeni etapsiliperispomeni etapsiliperispomeniypogegrammeni etapsilivaria etapsilivariaypogegrammeni etapsiliypogegrammeni etatonos etavaria etavariaypogegrammeni etaypogegrammeni eth euro exclam exclam.spacer exclam_asciitilde.ss07 exclam_equal.liga exclam_equal.ss08 exclam_equal_equal.liga exclam_equal_equal.ss08 exclam_equal_middle.seq exclam_exclam.liga exclam_exclam_period.liga exclamdown exclamdown.case existential f f.spacer f_i.liga.ss10 f_j.liga.ss10 f_l.liga.ss10 f_t.liga.ss10 female figuredash fileSeparator-control filledRect filledbox fireTrigram firsttonechinese fisheye fita-cy five five.dnom five.numr five.tosf fiveeighths fiveinferior fivesixths fivesuperior florin forces formFeed-control four four.dnom four.numr four.tosf fourfifths fourinferior foursuperior fraction fullBlock g g.cv02 gamma gbreve gbreve.cv02 gcircumflex gcircumflex.cv02 gcommaaccent gcommaaccent.cv02 gdotaccent gdotaccent.cv02 ge-cy gedescender-cy germandbls gestrokehook-cy ghemiddlehook-cy ghestroke-cy gheupturn-cy gje-cy globeWithMeridians gradient grave grave.case gravecomb greater greater.center greater.spacer greater_equal.liga greater_equal.ss02 greater_equal_end.seq greater_equal_middle.seq greater_equal_start.seq greater_greater.liga greater_greater_equal_end.seq greater_greater_equal_middle.seq greater_greater_equal_start.seq greater_greater_greater.liga greater_greater_hyphen_end.seq greater_greater_hyphen_middle.seq greater_greater_hyphen_start.seq greater_hyphen_end.seq greater_hyphen_middle.seq greater_hyphen_start.seq greaterequal groupSeparator-control guillemetleft guillemetleft.case guillemetright guillemetright.case guilsinglleft guilsinglleft.case guilsinglright guilsinglright.case h ha-cy haabkhasian-cy hadescender-cy hahook-cy hardsign-cy hastroke-cy hbar hcircumflex heart heavenTrigram heavyleftpointinganglebracketornament heavyrightpointinganglebracketornament helmsymbol heta horizontalFillSquare horizontalOneEighthBlock-1358 horizontalOneEighthBlock-2 horizontalOneEighthBlock-3 horizontalOneEighthBlock-4 horizontalOneEighthBlock-5 horizontalOneEighthBlock-6 horizontalOneEighthBlock-7 horizontalTabulation-control house hungarumlaut hungarumlaut.case hungarumlautcomb hyphen hyphen.case hyphen.lc hyphen.spacer hyphen_asciitilde.liga hyphen_end.seq hyphen_hyphen.liga hyphen_middle.seq hyphen_start.seq i i-cy i.cv03 i.cv04 i.cv05 i.cv06 i.salt_low ia-cy iacute iacute.cv03 iacute.cv04 iacute.cv05 iacute.cv06 ibreve ibreve.cv03 ibreve.cv04 ibreve.cv05 ibreve.cv06 icircumflex icircumflex.cv03 icircumflex.cv04 icircumflex.cv05 icircumflex.cv06 idieresis idieresis-cy idieresis.cv03 idieresis.cv04 idieresis.cv05 idieresis.cv06 idotaccent idotaccent.cv03 idotaccent.cv04 idotaccent.cv05 idotaccent.cv06 idotless idotless.cv03 idotless.cv04 idotless.cv05 idotless.cv06 ie-cy iebreve-cy iegrave-cy igrave igrave.cv03 igrave.cv04 igrave.cv05 igrave.cv06 ii-cy iigrave-cy iishort-cy iishorttail-cy ij imacron imacron-cy imacron.cv03 imacron.cv04 imacron.cv05 imacron.cv06 increment infinity infinity.case integral integralbt integraltp intersection inverseWhiteCircle invsmileface io-cy iogonek iogonek.cv03 iogonek.cv04 iogonek.cv05 iogonek.cv06 iota iotadasia iotadasiaoxia iotadasiaperispomeni iotadasiavaria iotadialytikaoxia iotadialytikaperispomeni iotadialytikavaria iotadieresis iotadieresistonos iotamacron iotaoxia iotaperispomeni iotapsili iotapsilioxia iotapsiliperispomeni iotapsilivaria iotatonos iotavaria iotavrachy itilde itilde.cv03 itilde.cv04 itilde.cv05 itilde.cv06 iu-cy izhitsa-cy izhitsadblgrave-cy j j.salt_low jcircumflex je-cy k ka-cy kabashkir-cy kadescender-cy kahook-cy kaiSymbol kappa kappaSymbol kastroke-cy kaverticalstroke-cy kcommaaccent keyboard kgreenlandic kje-cy komide-cy komidje-cy komidzje-cy komilje-cy kominje-cy komisje-cy komitje-cy komizje-cy koppa koppaArchaic koronis ksi-cy l l.cv07 l.cv08 l.cv09 l.cv10 l.salt_low l.spacer lacute lacute.cv07 lacute.cv08 lacute.cv09 lacute.cv10 lakeTrigram lambda largeCircle lcaron lcaron.cv07 lcaron.cv08 lcaron.cv09 lcaron.cv10 lcommaaccent lcommaaccent.cv07 lcommaaccent.cv08 lcommaaccent.cv09 lcommaaccent.cv10 ldot ldot.cv07 ldot.cv08 ldot.cv09 ldot.cv10 leftAndLowerOneEighthBlock leftAndUpperOneEighthBlock leftBlackArrow leftBlackTriangle leftBlock leftFiveEighthsBlock leftHalfBlackCircle leftHalfBlackSquare leftHalfBlackWhiteCircle leftHookArrow leftLongArrow leftLongDoubleArrow leftLongDoubleFromBarArrow leftLongFromBarArrow leftOneEighthBlock leftOneQuarterBlock leftRightLongArrow leftRightLongDoubleArrow leftSevenEighthsBlock leftTabArrow leftThreeEighthsBlock leftThreeQuartersBlock leftanglebracket-math leftcurlybracketlowerhook leftcurlybracketmiddlepiece leftcurlybracketupperhook leftsquarebracketextension leftsquarebracketlowercorner leftsquarebracketuppercorner less less.center less.spacer less_asciitilde.liga less_asciitilde_asciitilde.liga less_asciitilde_greater.liga less_asterisk.liga less_asterisk.liga.cv16 less_asterisk_greater.liga less_asterisk_greater.liga.cv16 less_bar.liga less_bar_bar.liga less_bar_bar_bar.liga less_bar_greater.liga less_dollar.liga less_dollar.liga.ss04 less_dollar_greater.liga less_dollar_greater.liga.ss04 less_equal.liga less_equal.ss02 less_equal_end.seq less_equal_middle.seq less_equal_start.seq less_exclam_hyphen_hyphen.liga less_greater.liga less_hyphen_end.seq less_hyphen_middle.seq less_hyphen_start.seq less_less.liga less_less_equal_end.seq less_less_equal_middle.seq less_less_equal_start.seq less_less_hyphen_end.seq less_less_hyphen_middle.seq less_less_hyphen_start.seq less_less_less.liga less_plus.liga less_plus_greater.liga less_slash.liga less_slash_greater.liga lessequal lha-cy lineFeed-control liraTurkish literSign lje-cy logicaland logicalnot logicalor lowerFiveEighthsBlock lowerHalfArc lowerHalfBlackWhiteCircle lowerHalfInverseWhiteCircle lowerLeftArc lowerLeftQuadrantWhiteCircle lowerOneEighthBlock lowerOneQuarterBlock lowerRightArc lowerRightDiagonalHalfBlackSquare lowerRightQuadrantWhiteCircle lowerSevenEighthsBlock lowerThreeEighthsBlock lowerThreeQuartersBlock lowernumeral-greek lozenge lslash lslash.cv07 lslash.cv08 lslash.cv09 lslash.cv10 ltshade m macron macron.case macroncomb male micro minus minus.dnom minus.numr minusinferior minussuperior minustilde models mountainTrigram mu multiply musicalnote musicalnotedbl n nacute nacute.loclPLK napostrophe ncaron ncommaaccent negateddoubleverticalbardoublerightturnstile negativeAcknowledge-control neitherapproximatelynoractuallyequalto neitherasubsetofnorequalto neitherasupersetofnorequalto newline-control nine nine.dnom nine.numr nine.tosf nineinferior ninesuperior nje-cy nmod notalmostequalto notasymptoticallyequalto notcontains notelement notequal notidentical notsimilar notsubset notsuperset nottrue ntilde nu null null-control numbersign numbersign.spacer numbersign_braceleft.liga numbersign_braceleft.liga.cv29 numbersign_bracketleft.liga numbersign_colon.liga numbersign_colon.liga_rem numbersign_end.seq numbersign_equal.liga numbersign_exclam.liga numbersign_middle.seq numbersign_parenleft.liga numbersign_question.liga numbersign_start.seq numbersign_underscore.liga numbersign_underscore_parenleft.liga numeral-greek numero o o-cy oacute oacute.loclPLK obarred-cy obarreddieresis-cy obreve ocircumflex odieresis odieresis-cy oe ogonek ograve ohungarumlaut omacron omega omega-cy omegadasia omegadasiaoxia omegadasiaoxiaypogegrammeni omegadasiaperispomeni omegadasiaperispomeniypogegrammeni omegadasiavaria omegadasiavariaypogegrammeni omegadasiaypogegrammeni omegaoxia omegaoxiaypogegrammeni omegaperispomeni omegaperispomeniypogegrammeni omegapsili omegapsilioxia omegapsilioxiaypogegrammeni omegapsiliperispomeni omegapsiliperispomeniypogegrammeni omegapsilivaria omegapsilivariaypogegrammeni omegapsiliypogegrammeni omegatonos omegavaria omegavariaypogegrammeni omegaypogegrammeni omicron omicrondasia omicrondasiaoxia omicrondasiavaria omicronoxia omicronpsili omicronpsilioxia omicronpsilivaria omicrontonos omicronvaria one one.dnom one.numr one.tosf oneeighth onefifth onefraction onehalf oneinferior onequarter onesixth onesuperior onethird optionKey ordfeminine ordmasculine oslash oslashacute otilde overlinecomb oxia oxia.case p pagedown pageup palochka-cy pamphyliandigamma paragraph parenleft parenleft.case parenleft.cv31 parenleft.dnom parenleft.numr parenleft.spacer parenleftextension parenleftinferior parenleftlowerhook parenleftsuperior parenleftupperhook parenright parenright.case parenright.cv31 parenright.dnom parenright.numr parenrightextension parenrightinferior parenrightlowerhook parenrightsuperior parenrightupperhook partialdiff pe-cy pedescender-cy pemiddlehook-cy percent percent.cv18 percent.spacer percent_percent.liga percent_percent.liga.cv18 period period.spacer period_equal.cv32 period_hyphen.cv25 period_period.liga period_period_equal.liga period_period_less.liga period_period_period.liga period_question.liga periodcentered perispomeni perispomenicomb perspective perthousand perthousand.cv18 phi phiSymbol pi piSymbol plus plus.dnom plus.lc plus.numr plus.spacer plus_greater.liga plus_plus.liga plus_plus_plus.liga plusinferior plusminus plussuperior primemod product projective propellor proportion prosgegrammeni psi psi-cy psili psilioxia psiliperispomeni psilivaria q qa-cy quadrantLowerLeft quadrantLowerRight quadrantUpperLeft quadrantUpperLeftAndLowerLeftAndLowerRight quadrantUpperLeftAndLowerRight quadrantUpperLeftAndUpperRightAndLowerLeft quadrantUpperLeftAndUpperRightAndLowerRight quadrantUpperRight quadrantUpperRightAndLowerLeft quadrantUpperRightAndLowerLeftAndLowerRight question question.spacer question_equal.liga question_period.liga question_question.liga questiondown questiondown.case questiongreek quotedbl quotedblbase quotedblleft quotedblright quoteleft quoteright quotesinglbase quotesingle r r.ss01 racute radical ratio rcaron rcommaaccent recordSeparator-control reflexsubset reflexsuperset registered replacementCharacter returnsymbol reverseddottedlunatesigmasymbol reversedlunatesigmasymbol reversedze-cy revlogicalnot rha-cy rho rhoStrokeSymbol rhoSymbol rhodasia rhopsili rightAndLowerOneEighthBlock rightAndUpperOneEighthBlock rightBlackTriangle rightBlock rightCircledPlusArrow rightCornerDownArrow rightFiveEighthsBlock rightHalfBlackCircle rightHalfBlackSquare rightHalfBlackWhiteCircle rightHookArrow rightLongDoubleArrow rightLongDoubleFromBarArrow rightLongFromBarArrow rightLongSquiggleArrow rightOneEighthBlock rightOneQuarterBlock rightSevenEighthsBlock rightTabArrow rightThreeEighthsBlock rightThreeQuartersBlock rightanglebracket-math rightcurlybracketlowerhook rightcurlybracketmiddlepiece rightcurlybracketupperhook rightlongArrow rightsquarebracketextension rightsquarebracketlowercorner rightsquarebracketuppercorner righttack ring ring.case ringcomb ruble rupeeIndian s sacute sacute.loclPLK sampi san scaron scedilla schwa-cy schwadieresis-cy scircumflex scommaaccent section semicolon semicolon.spacer semicolon_semicolon.liga semisoftsign-cy seven seven.dnom seven.numr seven.tosf seveneighths seveninferior sevensuperior sha-cy shade shcha-cy shha-cy shhadescender-cy shiftIn-control shiftOut-control sho sigma sigmaLunateSymbol sigmafinal six six.dnom six.numr six.tosf sixinferior sixsuperior skullAndCrossbones slash slash.spacer slash_asterisk.liga slash_asterisk.liga.cv16 slash_backslash.liga slash_equal_end.seq slash_equal_middle.seq slash_equal_start.seq slash_greater.liga slash_slash.liga slash_slash_equal_end.seq slash_slash_equal_middle.seq slash_slash_equal_start.seq slash_slash_slash.liga smileface softhyphen softhyphen.case softsign-cy space-control spade squarewhitewithsmallblack startOfHeading-control startOfText-control sterling stigma strokelongoverlay strokeshortoverlay subset subsetnotequal substitute-control substituteFormTwo-control suchthat summation sun superset supersetnotequal synchronousIdle-control t tackdown tackleft tau tbar tcaron tcedilla tcommaaccent te-cy tedescender-cy tetse-cy theredoesnotexist therefore theta thetaSymbol thorn three three.cv14 three.cv14.dnom three.cv14.numr three.dnom three.dnom.cv14 three.numr three.numr.cv14 three.tosf three.tosf.cv14 threeTurned threeeighths threeemdash threefifths threeinferior threeinferior.cv14 threequarters threesuperior threesuperior.cv14 thunderTrigram tilde tilde.case tildecomb tironiansignet tonos tonos.case trademark triaglf triagupTriangle triangledown triangleright tripletilde tripleverticalbarrightturnstile true tse-cy tshe-cy two two.dnom two.numr two.tosf twoTurned twoemdash twofifths twoinferior twosuperior twothirds u u-cy u1F10D u1F10E u1F10F u1F16D u1F16E u1F16F u1F1AD uacute ubreve ucircumflex udieresis udieresis-cy ugrave uhungarumlaut uhungarumlaut-cy uk-cy umacron umacron-cy underscore underscore.spacer underscore_end.seq underscore_middle.seq underscore_start.seq underscoredbl uni256D uni256E uni256F uni2570 uniE000 uniE001 uniE002 uniE003 uniE0A0 uniE0A1 uniE0A2 uniE0B0 uniE0B1 uniE0B2 uniE0B3 uniEE00 uniEE01 uniEE02 uniEE03 uniEE04 uniEE05 uniEE06 uniEE07 uniEE08 uniEE09 uniEE0A uniEE0B uniFEFF union unitSeparator-control universal uogonek upBetweenTwoHorizontalBarsArrowHead upBlackArrow upBlock upQuadrupleArrow upTipLeftArrow upTipRightArrow upperAndlowerOneEighthBlock upperFiveEighthsBlock upperHalfArc upperHalfBlackWhiteCircle upperHalfInverseWhiteCircle upperLeftArc upperLeftDiagonalHalfBlackSquare upperLeftQuadrantWhiteCircle upperLeftWhiteCircle upperOneEighthBlock upperOneQuarterBlock upperRightArc upperRightQuadrantWhiteCircle upperSevenEighthsBlock upperThreeEighthsBlock upperThreeQuartersBlock upperlefttolowerrightFillSquare upperrighttolowerleftFillSquare upsilon upsilondasia upsilondasiaoxia upsilondasiaperispomeni upsilondasiavaria upsilondialytikaoxia upsilondialytikaperispomeni upsilondialytikavaria upsilondieresis upsilondieresistonos upsilonmacron upsilonoxia upsilonperispomeni upsilonpsili upsilonpsilioxia upsilonpsiliperispomeni upsilonpsilivaria upsilontonos upsilonvaria upsilonvrachy uptack uring ushort-cy ustrait-cy ustraitstroke-cy utilde v varia varia.case ve-cy verticalBisectingLineWhiteSquare verticalFillSquare verticalOneEighthBlock-2 verticalOneEighthBlock-3 verticalOneEighthBlock-4 verticalOneEighthBlock-5 verticalOneEighthBlock-6 verticalOneEighthBlock-7 verticalTabulation-control w w.spacer w_w_w.liga wacute waterTrigram wcircumflex wdieresis we-cy wgrave whiteCircle whiteDiamond whiteFrowningFace whiteRect whiteSquareWithLowerLeftQuadrant whiteSquareWithLowerRightQuadrant whiteSquareWithRoundedCorners whiteSquareWithUpperLeftQuadrant whiteSquareWithUpperRightQuadrant whiteVerticalRect windTrigram x x.multiply x.multiply.tosf xi y yacute yae-cy yat-cy ycircumflex ydieresis yen yeru-cy yerudieresis-cy ygrave yi-cy yot ypogegrammeni ypogegrammenicomb yusbig-cy yusbigiotified-cy yuslittle-cy yuslittleiotified-cy z zacute zacute.loclPLK zcaron zdotaccent ze-cy zedescender-cy zedieresis-cy zero zero.cv11 zero.cv12 zero.cv13 zero.dnom zero.numr zero.tosf zero.tosf.cv11 zero.tosf.cv12 zero.tosf.cv13 zero.tosf.zero zero.zero zero.zero.tosf zeroinferior zerosuperior zeta zhe-cy zhebreve-cy zhedescender-cy zhedieresis-cy";
name = NotSpace;
},
{
automatic = 1;
code = "A Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde AE AEacute B C Cacute Ccaron Ccedilla Ccircumflex Cdotaccent D Eth Dcaron Dcroat E Eacute Ebreve Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek F G Gbreve Gcircumflex Gcommaaccent Gdotaccent H Hbar Hcircumflex I IJ Iacute Ibreve Icircumflex Idieresis Idotaccent Igrave Imacron Iogonek Itilde J Jcircumflex K Kcommaaccent L Lacute Lcaron Lcommaaccent Ldot Lslash M N Nacute Ncaron Ncommaaccent Eng Ntilde O Oacute Obreve Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Oslash Oslashacute Otilde OE P Thorn Q R Racute Rcaron Rcommaaccent S Sacute Scaron Scedilla Scircumflex Scommaaccent Germandbls T Tbar Tcaron Tcedilla Tcommaaccent U Uacute Ubreve Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Utilde V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ygrave Z Zacute Zcaron Zdotaccent Cacute.loclPLK Nacute.loclPLK Oacute.loclPLK Sacute.loclPLK Zacute.loclPLK F.spacer T.spacer A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Iishorttail-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Omega-cy Yat-cy Eiotified-cy Yuslittle-cy Yuslittleiotified-cy Yusbig-cy Yusbigiotified-cy Ksi-cy Psi-cy Fita-cy Izhitsa-cy Izhitsadblgrave-cy Uk-cy Ghestroke-cy Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kastroke-cy Kabashkir-cy Endescender-cy Enghe-cy Pemiddlehook-cy Pedescender-cy Haabkhasian-cy Esdescender-cy Tedescender-cy Ustrait-cy Ustraitstroke-cy Hadescender-cy Tetse-cy Chedescender-cy Cheverticalstroke-cy Shha-cy Shhadescender-cy Cheabkhasian-cy Chedescenderabkhasian-cy Palochka-cy Zhebreve-cy Kahook-cy Eltail-cy Enhook-cy Entail-cy Chekhakassian-cy Emtail-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Schwadieresis-cy Zhedieresis-cy Zedieresis-cy Dzeabkhasian-cy Imacron-cy Idieresis-cy Odieresis-cy Obarred-cy Obarreddieresis-cy Edieresis-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy Yerudieresis-cy Gestrokehook-cy Hahook-cy Hastroke-cy Komide-cy Komidje-cy Komizje-cy Komidzje-cy Komilje-cy Kominje-cy Komisje-cy Komitje-cy Reversedze-cy Elhook-cy Lha-cy Rha-cy Yae-cy Qa-cy We-cy Aleutka-cy Elmiddlehook-cy Enmiddlehook-cy Semisoftsign-cy Ertick-cy EnLeftHook-cy Dzzhe-cy Dche-cy Eldescender-cy Yot-greek Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos Iotadieresis Upsilondieresis Heta Archaicsampi Pamphyliandigamma KoppaArchaic Stigma Digamma Koppa Sampi KaiSymbol UpsilonhookSymbol UpsilonacutehookSymbol UpsilondieresishookSymbol ThetaSymbol Sho SigmaLunateSymbol San SigmaLunateReversedSymbol SigmaLunateDottedSymbol SigmaLunateDottedReversedSymbol Alphapsili Alphadasia Alphapsilivaria Alphadasiavaria Alphapsilioxia Alphadasiaoxia Alphapsiliperispomeni Alphadasiaperispomeni Alphavaria Alphaoxia Alphavrachy Alphamacron Alphaprosgegrammeni Alphapsiliprosgegrammeni Alphadasiaprosgegrammeni Alphapsilivariaprosgegrammeni Alphadasiavariaprosgegrammeni Alphapsilioxiaprosgegrammeni Alphadasiaoxiaprosgegrammeni Alphapsiliperispomeniprosgegrammeni Alphadasiaperispomeniprosgegrammeni Epsilonpsili Epsilondasia Epsilonpsilivaria Epsilondasiavaria Epsilonpsilioxia Epsilondasiaoxia Epsilonvaria Epsilonoxia Etapsili Etadasia Etapsilivaria Etadasiavaria Etapsilioxia Etadasiaoxia Etapsiliperispomeni Etadasiaperispomeni Etavaria Etaoxia Etaprosgegrammeni Etapsiliprosgegrammeni Etadasiaprosgegrammeni Etapsilivariaprosgegrammeni Etadasiavariaprosgegrammeni Etapsilioxiaprosgegrammeni Etadasiaoxiaprosgegrammeni Etapsiliperispomeniprosgegrammeni Etadasiaperispomeniprosgegrammeni Iotapsili Iotadasia Iotapsilivaria Iotadasiavaria Iotapsilioxia Iotadasiaoxia Iotapsiliperispomeni Iotadasiaperispomeni Iotavaria Iotaoxia Iotavrachy Iotamacron Omicronpsili Omicrondasia Omicronpsilivaria Omicrondasiavaria Omicronpsilioxia Omicrondasiaoxia Omicronvaria Omicronoxia Rhodasia Upsilondasia Upsilondasiavaria Upsilondasiaoxia Upsilondasiaperispomeni Upsilonvaria Upsilonoxia Upsilonvrachy Upsilonmacron Omegapsili Omegadasia Omegapsilivaria Omegadasiavaria Omegapsilioxia Omegadasiaoxia Omegapsiliperispomeni Omegadasiaperispomeni Omegavaria Omegaoxia Omegaprosgegrammeni Omegapsiliprosgegrammeni Omegadasiaprosgegrammeni Omegapsilivariaprosgegrammeni Omegadasiavariaprosgegrammeni Omegapsilioxiaprosgegrammeni Omegadasiaoxiaprosgegrammeni Omegapsiliperispomeniprosgegrammeni Omegadasiaperispomeniprosgegrammeni BdoubleStruck CdoubleStruck HdoubleStruck NdoubleStruck PdoubleStruck QdoubleStruck RdoubleStruck ZdoubleStruck";
name = Uppercase;
},
{
code = "a aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde ae aeacute b c cacute ccaron ccedilla ccircumflex cdotaccent d eth dcaron dcroat e eacute ebreve ecaron ecircumflex edieresis edotaccent egrave emacron eogonek f g gbreve gcircumflex gcommaaccent gdotaccent h hbar hcircumflex i idotless iacute ibreve icircumflex idieresis idotaccent igrave ij imacron iogonek itilde j dotlessj jcircumflex k kcommaaccent kgreenlandic l lacute lcaron lcommaaccent ldot lslash m n nacute napostrophe ncaron ncommaaccent eng ntilde o oacute obreve ocircumflex odieresis ograve ohungarumlaut omacron oslash oslashacute otilde oe p thorn q r racute rcaron rcommaaccent s sacute scaron scedilla scircumflex scommaaccent germandbls t tbar tcaron tcedilla tcommaaccent u uacute ubreve ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring utilde v w wacute wcircumflex wdieresis wgrave x y yacute ycircumflex ydieresis ygrave z zacute zcaron zdotaccent x.multiply cacute.loclPLK nacute.loclPLK oacute.loclPLK sacute.loclPLK zacute.loclPLK w_w_w.liga ordfeminine ordmasculine nmod a-cy be-cy ve-cy ge-cy gje-cy gheupturn-cy de-cy ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy iishorttail-cy ka-cy kje-cy el-cy em-cy en-cy o-cy pe-cy er-cy es-cy te-cy u-cy ushort-cy ef-cy ha-cy che-cy tse-cy sha-cy shcha-cy dzhe-cy softsign-cy hardsign-cy yeru-cy lje-cy nje-cy dze-cy e-cy ereversed-cy i-cy yi-cy je-cy tshe-cy iu-cy ia-cy dje-cy omega-cy yat-cy eiotified-cy yuslittle-cy yuslittleiotified-cy yusbig-cy yusbigiotified-cy ksi-cy psi-cy fita-cy izhitsa-cy izhitsadblgrave-cy uk-cy ghestroke-cy ghemiddlehook-cy zhedescender-cy zedescender-cy kadescender-cy kaverticalstroke-cy kastroke-cy kabashkir-cy endescender-cy pedescender-cy pemiddlehook-cy haabkhasian-cy esdescender-cy tedescender-cy ustrait-cy ustraitstroke-cy hadescender-cy chedescender-cy cheverticalstroke-cy shha-cy shhadescender-cy cheabkhasian-cy chedescenderabkhasian-cy palochka-cy zhebreve-cy kahook-cy eltail-cy enhook-cy entail-cy chekhakassian-cy emtail-cy abreve-cy adieresis-cy iebreve-cy schwa-cy schwadieresis-cy zhedieresis-cy zedieresis-cy dzeabkhasian-cy imacron-cy idieresis-cy odieresis-cy obarred-cy obarreddieresis-cy edieresis-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy yerudieresis-cy gestrokehook-cy hahook-cy hastroke-cy komide-cy komidje-cy komizje-cy komidzje-cy komilje-cy kominje-cy komisje-cy komitje-cy reversedze-cy elhook-cy lha-cy rha-cy yae-cy qa-cy we-cy aleutka-cy elmiddlehook-cy enmiddlehook-cy semisoftsign-cy ertick-cy dche-cy dzzhe-cy eldescender-cy enlefthook-cy enghe-cy tetse-cy aie-cy alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigmafinal sigma tau upsilon phi chi psi omega iotatonos iotadieresis iotadieresistonos upsilontonos upsilondieresis upsilondieresistonos omicrontonos omegatonos alphatonos epsilontonos etatonos heta archaicsampi pamphyliandigamma reversedlunatesigmasymbol dottedlunatesigmasymbol reverseddottedlunatesigmasymbol koppaArchaic stigma digamma koppa sampi kaiSymbol betaSymbol thetaSymbol phiSymbol piSymbol kappaSymbol rhoSymbol sigmaLunateSymbol yot epsilonLunateSymbol sho san rhoStrokeSymbol alphapsili alphadasia alphapsilivaria alphadasiavaria alphapsilioxia alphadasiaoxia alphapsiliperispomeni alphadasiaperispomeni alphavaria alphaoxia alphaperispomeni alphavrachy alphamacron alphaypogegrammeni alphavariaypogegrammeni alphaoxiaypogegrammeni alphapsiliypogegrammeni alphadasiaypogegrammeni alphapsilivariaypogegrammeni alphadasiavariaypogegrammeni alphapsilioxiaypogegrammeni alphadasiaoxiaypogegrammeni alphapsiliperispomeniypogegrammeni alphadasiaperispomeniypogegrammeni alphaperispomeniypogegrammeni epsilonpsili epsilondasia epsilonpsilivaria epsilondasiavaria epsilonpsilioxia epsilondasiaoxia epsilonvaria epsilonoxia etapsili etadasia etapsilivaria etadasiavaria etapsilioxia etadasiaoxia etapsiliperispomeni etadasiaperispomeni etavaria etaoxia etaperispomeni etaypogegrammeni etavariaypogegrammeni etaoxiaypogegrammeni etapsiliypogegrammeni etadasiaypogegrammeni etapsilivariaypogegrammeni etadasiavariaypogegrammeni etapsilioxiaypogegrammeni etadasiaoxiaypogegrammeni etapsiliperispomeniypogegrammeni etadasiaperispomeniypogegrammeni etaperispomeniypogegrammeni iotapsili iotadasia iotapsilivaria iotadasiavaria iotapsilioxia iotadasiaoxia iotapsiliperispomeni iotadasiaperispomeni iotavaria iotaoxia iotaperispomeni iotavrachy iotamacron iotadialytikavaria iotadialytikaoxia iotadialytikaperispomeni omicronpsili omicrondasia omicronpsilivaria omicrondasiavaria omicronpsilioxia omicrondasiaoxia omicronvaria omicronoxia rhopsili rhodasia upsilonpsili upsilondasia upsilonpsilivaria upsilondasiavaria upsilonpsilioxia upsilondasiaoxia upsilonpsiliperispomeni upsilondasiaperispomeni upsilonvaria upsilonoxia upsilonperispomeni upsilonvrachy upsilonmacron upsilondialytikavaria upsilondialytikaoxia upsilondialytikaperispomeni omegapsili omegadasia omegapsilivaria omegadasiavaria omegapsilioxia omegadasiaoxia omegapsiliperispomeni omegadasiaperispomeni omegavaria omegaoxia omegaperispomeni omegaypogegrammeni omegavariaypogegrammeni omegaoxiaypogegrammeni omegapsiliypogegrammeni omegadasiaypogegrammeni omegapsilivariaypogegrammeni omegadasiavariaypogegrammeni omegapsilioxiaypogegrammeni omegadasiaoxiaypogegrammeni omegapsiliperispomeniypogegrammeni omegadasiaperispomeniypogegrammeni omegaperispomeniypogegrammeni prosgegrammeni ypogegrammeni";
name = Lowercase;
},
{
code = "bracketleft braceleft parenleft";
name = OpeningBracket;
},
{
code = "bracketright braceright parenright";
name = ClosingBracket;
},
{
code = "zero
zero.zero
one
two
twoTurned
threeTurned
three
four
five
six
seven
eight
nine";
name = Digit;
},
{
code = "zero.tosf
zero.tosf.zero
zero.zero.tosf
one.tosf
two.tosf
three.tosf
four.tosf
five.tosf
six.tosf
seven.tosf
eight.tosf
nine.tosf";
name = DigitTosf;
},
{
code = "a b c d e f A B C D E F";
name = HexDigit;
},
{
code = "@Uppercase zero one two twoTurned threeTurned three four five six seven eight nine @OpeningBracket @ClosingBracket bar";
name = Tall;
},
{
code = "Alpha
Beta
Gamma
Delta
Epsilon
Zeta
Eta
Theta
Iota
Kappa
Lambda
Mu
Nu
Xi
Omicron
Pi
Rho
Sigma
Tau
Upsilon
Phi
Chi
Psi
Omega
Alphatonos
Epsilontonos
Etatonos
Iotatonos
Omicrontonos
Upsilontonos
Omegatonos
Iotadieresis
Upsilondieresis
Alphapsili
Alphadasia
Alphapsilivaria
Alphadasiavaria
Alphapsilioxia
Alphadasiaoxia
Alphapsiliperispomeni
Alphadasiaperispomeni
Alphavaria
Alphaoxia
Alphavrachy
Alphamacron
Alphaprosgegrammeni
Alphapsiliprosgegrammeni
Alphadasiaprosgegrammeni
Alphapsilivariaprosgegrammeni
Alphadasiavariaprosgegrammeni
Alphapsilioxiaprosgegrammeni
Alphadasiaoxiaprosgegrammeni
Alphapsiliperispomeniprosgegrammeni
Alphadasiaperispomeniprosgegrammeni
Epsilonpsili
Epsilondasia
Epsilonpsilivaria
Epsilondasiavaria
Epsilonpsilioxia
Epsilondasiaoxia
Epsilonvaria
Epsilonoxia
Etapsili
Etadasia
Etapsilivaria
Etadasiavaria
Etapsilioxia
Etadasiaoxia
Etapsiliperispomeni
Etadasiaperispomeni
Etavaria
Etaoxia
Etaprosgegrammeni
Etapsiliprosgegrammeni
Etadasiaprosgegrammeni
Etapsilivariaprosgegrammeni
Etadasiavariaprosgegrammeni
Etapsilioxiaprosgegrammeni
Etadasiaoxiaprosgegrammeni
Etapsiliperispomeniprosgegrammeni
Etadasiaperispomeniprosgegrammeni
Iotapsili
Iotadasia
Iotapsilivaria
Iotadasiavaria
Iotapsilioxia
Iotadasiaoxia
Iotapsiliperispomeni
Iotadasiaperispomeni
Iotavaria
Iotaoxia
Iotavrachy
Iotamacron
Omicronpsili
Omicrondasia
Omicronpsilivaria
Omicrondasiavaria
Omicronpsilioxia
Omicrondasiaoxia
Omicronvaria
Omicronoxia
Rhodasia
Upsilondasia
Upsilondasiavaria
Upsilondasiaoxia
Upsilondasiaperispomeni
Upsilonvaria
Upsilonoxia
Upsilonvrachy
Upsilonmacron
Omegapsili
Omegadasia
Omegapsilivaria
Omegadasiavaria
Omegapsilioxia
Omegadasiaoxia
Omegapsiliperispomeni
Omegadasiaperispomeni
Omegavaria
Omegaoxia
Omegaprosgegrammeni
Omegapsiliprosgegrammeni
Omegadasiaprosgegrammeni
Omegapsilivariaprosgegrammeni
Omegadasiavariaprosgegrammeni
Omegapsilioxiaprosgegrammeni
Omegadasiaoxiaprosgegrammeni
Omegapsiliperispomeniprosgegrammeni
Omegadasiaperispomeniprosgegrammeni";
name = GreekUC;
},
{
code = "Alphatonos
Epsilontonos
Etatonos
Iotatonos
Omicrontonos
Upsilontonos
Omegatonos
Alphapsili
Alphadasia
Alphapsilivaria
Alphadasiavaria
Alphapsilioxia
Alphadasiaoxia
Alphapsiliperispomeni
Alphadasiaperispomeni
Alphavaria
Alphaoxia
Alphavrachy
Alphamacron
Alphaprosgegrammeni
Alphapsiliprosgegrammeni
Alphadasiaprosgegrammeni
Alphapsilivariaprosgegrammeni
Alphadasiavariaprosgegrammeni
Alphapsilioxiaprosgegrammeni
Alphadasiaoxiaprosgegrammeni
Alphapsiliperispomeniprosgegrammeni
Alphadasiaperispomeniprosgegrammeni
Epsilonpsili
Epsilondasia
Epsilonpsilivaria
Epsilondasiavaria
Epsilonpsilioxia
Epsilondasiaoxia
Epsilonvaria
Epsilonoxia
Etapsili
Etadasia
Etapsilivaria
Etadasiavaria
Etapsilioxia
Etadasiaoxia
Etapsiliperispomeni
Etadasiaperispomeni
Etavaria
Etaoxia
Etaprosgegrammeni
Etapsiliprosgegrammeni
Etadasiaprosgegrammeni
Etapsilivariaprosgegrammeni
Etadasiavariaprosgegrammeni
Etapsilioxiaprosgegrammeni
Etadasiaoxiaprosgegrammeni
Etapsiliperispomeniprosgegrammeni
Etadasiaperispomeniprosgegrammeni
Iotapsili
Iotadasia
Iotapsilivaria
Iotadasiavaria
Iotapsilioxia
Iotadasiaoxia
Iotapsiliperispomeni
Iotadasiaperispomeni
Iotavaria
Iotaoxia
Iotavrachy
Iotamacron
Omicronpsili
Omicrondasia
Omicronpsilivaria
Omicrondasiavaria
Omicronpsilioxia
Omicrondasiaoxia
Omicronvaria
Omicronoxia
Rhodasia
Upsilondasia
Upsilondasiavaria
Upsilondasiaoxia
Upsilondasiaperispomeni
Upsilonvaria
Upsilonoxia
Upsilonvrachy
Upsilonmacron
Omegapsili
Omegadasia
Omegapsilivaria
Omegadasiavaria
Omegapsilioxia
Omegadasiaoxia
Omegapsiliperispomeni
Omegadasiaperispomeni
Omegavaria
Omegaoxia
Omegaprosgegrammeni
Omegapsiliprosgegrammeni
Omegadasiaprosgegrammeni
Omegapsilivariaprosgegrammeni
Omegadasiavariaprosgegrammeni
Omegapsilioxiaprosgegrammeni
Omegadasiaoxiaprosgegrammeni
Omegapsiliperispomeniprosgegrammeni
Omegadasiaperispomeniprosgegrammeni";
name = GreekUCAcc;
},
{
code = "Alphatonos
Epsilontonos
Omicrontonos
Upsilontonos
Alphapsili
Alphadasia
Alphapsilivaria
Alphadasiavaria
Alphapsilioxia
Alphadasiaoxia
Alphapsiliperispomeni
Alphadasiaperispomeni
Alphavaria
Alphaoxia
Alphavrachy
Alphamacron
Alphaprosgegrammeni
Alphapsiliprosgegrammeni
Alphadasiaprosgegrammeni
Alphapsilivariaprosgegrammeni
Alphadasiavariaprosgegrammeni
Alphapsilioxiaprosgegrammeni
Alphadasiaoxiaprosgegrammeni
Alphapsiliperispomeniprosgegrammeni
Alphadasiaperispomeniprosgegrammeni
Epsilonpsili
Epsilondasia
Epsilonpsilivaria
Epsilondasiavaria
Epsilonpsilioxia
Epsilondasiaoxia
Epsilonvaria
Epsilonoxia
Omicronpsili
Omicrondasia
Omicronpsilivaria
Omicrondasiavaria
Omicronpsilioxia
Omicrondasiaoxia
Omicronvaria
Omicronoxia
Upsilondasia
Upsilondasiavaria
Upsilondasiaoxia
Upsilondasiaperispomeni
Upsilonvaria
Upsilonoxia
Upsilonvrachy
Upsilonmacron";
name = GreekUCdiphIOTA;
},
{
code = "Alphatonos
Epsilontonos
Omicrontonos
Alphapsili
Alphadasia
Alphapsilivaria
Alphadasiavaria
Alphapsilioxia
Alphadasiaoxia
Alphapsiliperispomeni
Alphadasiaperispomeni
Alphavaria
Alphaoxia
Alphavrachy
Alphamacron
Alphaprosgegrammeni
Alphapsiliprosgegrammeni
Alphadasiaprosgegrammeni
Alphapsilivariaprosgegrammeni
Alphadasiavariaprosgegrammeni
Alphapsilioxiaprosgegrammeni
Alphadasiaoxiaprosgegrammeni
Alphapsiliperispomeniprosgegrammeni
Alphadasiaperispomeniprosgegrammeni
Epsilonpsili
Epsilondasia
Epsilonpsilivaria
Epsilondasiavaria
Epsilonpsilioxia
Epsilondasiaoxia
Epsilonvaria
Epsilonoxia
Omicronpsili
Omicrondasia
Omicronpsilivaria
Omicrondasiavaria
Omicronpsilioxia
Omicrondasiaoxia
Omicronvaria
Omicronoxia";
name = GreekUCdiphUPSILON;
},
{
code = "Alpha
Epsilon
Eta
Iota
Omicron
Upsilon
Omega
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Rho
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega";
name = GreekUCcalt;
}
);
customParameters = (
{
name = "Family Alignment Zones";
value = (
{
pos = 1478;
size = 28;
},
{
pos = 1378;
size = 28;
},
{
pos = 1054;
size = 28;
},
{
pos = 0;
size = -28;
},
{
pos = -404;
size = -28;
}
);
},
{
name = isFixedPitch;
value = 1;
},
{
name = "Use Typo Metrics";
value = 1;
},
{
name = fsType;
value = (
);
},
{
name = openTypeOS2Panose;
value = (
2,
11,
8,
9,
5,
0,
0,
2,
0,
4
);
}
);
date = "2025-02-08 14:47:16 +0000";
familyName = "Fira Code";
featurePrefixes = (
{
code = "languagesystem DFLT dflt;
languagesystem zyyy dflt;
languagesystem zinh dflt;
languagesystem cyrl dflt;
languagesystem grek dflt;
languagesystem latn dflt;
languagesystem latn TAT;
languagesystem latn TRK;
languagesystem latn MOL;
languagesystem latn ROM;
languagesystem latn KAZ;
languagesystem latn PLK;
languagesystem latn AZE;
languagesystem latn CAT;
languagesystem latn CRT;
languagesystem latn AFK;
";
name = Languagesystems;
}
);
features = (
{
automatic = 1;
code = "feature subs;
feature sups;
feature numr;
feature dnom;
feature frac;
feature ordn;
feature tnum;
feature onum;
feature case;
feature locl;
feature zero;
feature calt;
feature salt;
feature ss01;
feature ss02;
feature ss03;
feature ss04;
feature ss05;
feature ss06;
feature ss07;
feature ss08;
feature ss09;
feature ss10;
feature sinf;
feature hwid;
feature cv01;
feature cv02;
feature cv03;
feature cv04;
feature cv05;
feature cv06;
feature cv07;
feature cv08;
feature cv09;
feature cv10;
feature cv11;
feature cv12;
feature cv13;
feature cv14;
feature cv15;
feature cv16;
feature cv17;
feature cv18;
feature cv19;
feature cv20;
feature cv21;
feature cv22;
feature cv23;
feature cv24;
feature cv25;
feature cv26;
feature cv27;
feature cv28;
feature cv29;
";
tag = aalt;
},
{
automatic = 1;
code = "sub zero by zeroinferior;
sub one by oneinferior;
sub two by twoinferior;
sub three by threeinferior;
sub four by fourinferior;
sub five by fiveinferior;
sub six by sixinferior;
sub seven by seveninferior;
sub eight by eightinferior;
sub nine by nineinferior;
sub parenleft by parenleftinferior;
sub parenright by parenrightinferior;
sub minus by minusinferior;
sub plus by plusinferior;
";
tag = subs;
},
{
automatic = 1;
code = "sub zero by zerosuperior;
sub one by onesuperior;
sub two by twosuperior;
sub three by threesuperior;
sub four by foursuperior;
sub five by fivesuperior;
sub six by sixsuperior;
sub seven by sevensuperior;
sub eight by eightsuperior;
sub nine by ninesuperior;
sub parenleft by parenleftsuperior;
sub parenright by parenrightsuperior;
sub equal by equalsuperior;
sub minus by minussuperior;
sub plus by plussuperior;
";
tag = sups;
},
{
automatic = 1;
code = "sub three.cv14 by three.cv14.numr;
sub zero by zero.numr;
sub one by one.numr;
sub two by two.numr;
sub three by three.numr;
sub four by four.numr;
sub five by five.numr;
sub six by six.numr;
sub seven by seven.numr;
sub eight by eight.numr;
sub nine by nine.numr;
sub parenleft by parenleft.numr;
sub parenright by parenright.numr;
sub plus by plus.numr;
sub minus by minus.numr;
sub equal by equal.numr;
";
tag = numr;
},
{
automatic = 1;
code = "sub three.cv14 by three.cv14.dnom;
sub zero by zero.dnom;
sub one by one.dnom;
sub two by two.dnom;
sub three by three.dnom;
sub four by four.dnom;
sub five by five.dnom;
sub six by six.dnom;
sub seven by seven.dnom;
sub eight by eight.dnom;
sub nine by nine.dnom;
sub parenleft by parenleft.dnom;
sub parenright by parenright.dnom;
sub plus by plus.dnom;
sub minus by minus.dnom;
sub equal by equal.dnom;
";
tag = dnom;
},
{
automatic = 1;
code = "lookup FRAC {
sub slash by fraction;
} FRAC;
lookup UP {
sub [zero one two three four five six seven eight nine] by [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr];
} UP;
lookup DOWN {
sub fraction [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]' by [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
sub [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom] [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]' by [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
} DOWN;
";
tag = frac;
},
{
automatic = 1;
code = "sub [zero one two three four five six seven eight nine] [A a]' by ordfeminine;
sub [zero one two three four five six seven eight nine] [O o]' by ordmasculine;
sub N o period by numero;
";
tag = ordn;
},
{
automatic = 1;
code = "sub figurespace by figurespace.tf;
";
tag = tnum;
},
{
code = "sub zero by zero.tosf;
sub zero.zero by zero.zero.tosf;
sub one by one.tosf;
sub two by two.tosf;
sub three by three.tosf;
sub four by four.tosf;
sub five by five.tosf;
sub six by six.tosf;
sub seven by seven.tosf;
sub eight by eight.tosf;
sub nine by nine.tosf;
sub x.multiply by x.multiply.tosf;";
tag = onum;
},
{
automatic = 1;
code = "sub exclamdown by exclamdown.case;
sub questiondown by questiondown.case;
sub parenleft by parenleft.case;
sub parenright by parenright.case;
sub braceleft by braceleft.case;
sub braceright by braceright.case;
sub bracketleft by bracketleft.case;
sub bracketright by bracketright.case;
sub hyphen by hyphen.case;
sub softhyphen by softhyphen.case;
sub endash by endash.case;
sub emdash by emdash.case;
sub guillemetleft by guillemetleft.case;
sub guillemetright by guillemetright.case;
sub guilsinglleft by guilsinglleft.case;
sub guilsinglright by guilsinglright.case;
sub infinity by infinity.case;
sub commaaccent by commaaccent.case;
sub dieresis by dieresis.case;
sub dotaccent by dotaccent.case;
sub grave by grave.case;
sub acute by acute.case;
sub hungarumlaut by hungarumlaut.case;
sub circumflex by circumflex.case;
sub caron by caron.case;
sub breve by breve.case;
sub ring by ring.case;
sub tilde by tilde.case;
sub macron by macron.case;
sub cedilla by cedilla.case;
sub tonos by tonos.case;
sub varia by varia.case;
sub oxia by oxia.case;
sub breve-cy by breve-cy.case;
";
tag = case;
},
{
automatic = 1;
code = "lookupflag IgnoreMarks;
sub bar bar bar greater by bar_bar_bar_greater.liga;
sub less bar bar bar by less_bar_bar_bar.liga;
sub less exclam hyphen hyphen by less_exclam_hyphen_hyphen.liga;
sub asciitilde asciitilde greater by asciitilde_asciitilde_greater.liga;
sub asterisk asterisk asterisk by asterisk_asterisk_asterisk.liga;
sub bar bar bar by bar_bar_bar.liga;
sub bar bar greater by bar_bar_greater.liga;
sub colon colon colon by colon_colon_colon.liga;
sub colon colon equal by colon_colon_equal.liga;
sub equal equal equal by equal_equal_equal.liga;
sub exclam equal equal by exclam_equal_equal.liga;
sub exclam exclam period by exclam_exclam_period.liga;
sub greater greater greater by greater_greater_greater.liga;
sub less asciitilde asciitilde by less_asciitilde_asciitilde.liga;
sub less asciitilde greater by less_asciitilde_greater.liga;
sub less asterisk greater by less_asterisk_greater.liga;
sub less bar bar by less_bar_bar.liga;
sub less bar greater by less_bar_greater.liga;
sub less dollar greater by less_dollar_greater.liga;
sub less less less by less_less_less.liga;
sub less plus greater by less_plus_greater.liga;
sub less slash greater by less_slash_greater.liga;
sub numbersign underscore parenleft by numbersign_underscore_parenleft.liga;
sub period period equal by period_period_equal.liga;
sub period period less by period_period_less.liga;
sub period period period by period_period_period.liga;
sub plus plus plus by plus_plus_plus.liga;
sub slash slash slash by slash_slash_slash.liga;
sub w w w by w_w_w.liga;
sub ampersand ampersand by ampersand_ampersand.liga;
sub asciicircum equal by asciicircum_equal.liga;
sub asciitilde asciitilde by asciitilde_asciitilde.liga;
sub asciitilde at by asciitilde_at.liga;
sub asciitilde greater by asciitilde_greater.liga;
sub asciitilde hyphen by asciitilde_hyphen.liga;
sub asterisk asterisk by asterisk_asterisk.liga;
sub asterisk greater by asterisk_greater.liga;
sub asterisk slash by asterisk_slash.liga;
sub backslash slash by backslash_slash.liga;
sub bar bar by bar_bar.liga;
sub bar braceright by bar_braceright.liga;
sub bar bracketright by bar_bracketright.liga;
sub bar greater by bar_greater.liga;
sub braceleft bar by braceleft_bar.liga;
sub bracketleft bar by bracketleft_bar.liga;
sub bracketright numbersign by bracketright_numbersign.liga;
sub colon colon by colon_colon.liga;
sub colon equal by colon_equal.liga;
sub dollar greater by dollar_greater.liga;
sub equal equal by equal_equal.liga;
sub exclam equal by exclam_equal.liga;
sub exclam exclam by exclam_exclam.liga;
sub greater equal by greater_equal.liga;
sub greater greater by greater_greater.liga;
sub hyphen asciitilde by hyphen_asciitilde.liga;
sub hyphen hyphen by hyphen_hyphen.liga;
sub less asciitilde by less_asciitilde.liga;
sub less asterisk by less_asterisk.liga;
sub less bar by less_bar.liga;
sub less dollar by less_dollar.liga;
sub less equal by less_equal.liga;
sub less greater by less_greater.liga;
sub less less by less_less.liga;
sub less plus by less_plus.liga;
sub less slash by less_slash.liga;
sub numbersign braceleft by numbersign_braceleft.liga;
sub numbersign bracketleft by numbersign_bracketleft.liga;
sub numbersign colon by numbersign_colon.liga;
sub numbersign equal by numbersign_equal.liga;
sub numbersign exclam by numbersign_exclam.liga;
sub numbersign parenleft by numbersign_parenleft.liga;
sub numbersign question by numbersign_question.liga;
sub numbersign underscore by numbersign_underscore.liga;
sub percent percent by percent_percent.liga;
sub period period by period_period.liga;
sub period question by period_question.liga;
sub plus greater by plus_greater.liga;
sub plus plus by plus_plus.liga;
sub question equal by question_equal.liga;
sub question period by question_period.liga;
sub question question by question_question.liga;
sub semicolon semicolon by semicolon_semicolon.liga;
sub slash asterisk by slash_asterisk.liga;
sub slash backslash by slash_backslash.liga;
sub slash greater by slash_greater.liga;
sub slash slash by slash_slash.liga;
";
disabled = 1;
tag = liga;
},
{
code = "script latn;
language TAT;
sub i by idotaccent;
language TRK;
sub i by idotaccent;
language MOL;
sub Scedilla by Scommaaccent;
sub scedilla by scommaaccent;
sub Tcedilla by Tcommaaccent;
sub tcedilla by tcommaaccent;
language ROM;
sub Scedilla by Scommaaccent;
sub scedilla by scommaaccent;
sub Tcedilla by Tcommaaccent;
sub tcedilla by tcommaaccent;
language KAZ;
sub i by idotaccent;
language PLK;
sub Cacute by Cacute.loclPLK;
sub Nacute by Nacute.loclPLK;
sub Oacute by Oacute.loclPLK;
sub Sacute by Sacute.loclPLK;
sub Zacute by Zacute.loclPLK;
sub cacute by cacute.loclPLK;
sub nacute by nacute.loclPLK;
sub oacute by oacute.loclPLK;
sub sacute by sacute.loclPLK;
sub zacute by zacute.loclPLK;
sub acute by acute.loclPLK;
language AZE;
sub i by idotaccent;
language CAT;
sub l' periodcentered' l by ldot;
sub L' periodcentered' L by Ldot;
language CRT;
sub i by idotaccent;
language AFK;
sub quoteright n by napostrophe;
sub quotesingle n by napostrophe;";
tag = locl;
},
{
code = "sub zero by zero.zero;
sub zero.tosf by zero.tosf.zero;";
tag = zero;
},
{
code = "lookup less_bar_greater {
ignore sub less less' bar greater;
ignore sub less' bar greater greater;
sub less.spacer bar.spacer greater' by less_bar_greater.liga;
sub less.spacer bar' greater by bar.spacer;
sub less' bar greater by less.spacer;
} less_bar_greater;
lookup bar_bar_bar_greater {
ignore sub bar bar' bar bar greater;
ignore sub bar' bar bar greater greater;
sub bar.spacer bar.spacer bar.spacer greater' by bar_bar_bar_greater.liga;
sub bar.spacer bar.spacer bar' greater by bar.spacer;
sub bar.spacer bar' bar greater by bar.spacer;
sub bar' bar bar greater by bar.spacer;
} bar_bar_bar_greater;
lookup less_bar_bar_bar {
ignore sub less less' bar bar bar;
ignore sub less' bar bar bar bar;
sub less.spacer bar.spacer bar.spacer bar' by less_bar_bar_bar.liga;
sub less.spacer bar.spacer bar' bar by bar.spacer;
sub less.spacer bar' bar bar by bar.spacer;
sub less' bar bar bar by less.spacer;
} less_bar_bar_bar;
lookup bar_bar_greater {
ignore sub bar bar' bar greater;
ignore sub bar' bar greater greater;
ignore sub less bar' bar greater;
sub bar.spacer bar.spacer greater' by bar_bar_greater.liga;
sub bar.spacer bar' greater by bar.spacer;
sub bar' bar greater by bar.spacer;
} bar_bar_greater;
lookup less_bar_bar {
ignore sub less less' bar bar;
ignore sub less' bar bar bar;
ignore sub less' bar bar greater;
sub less.spacer bar.spacer bar' by less_bar_bar.liga;
sub less.spacer bar' bar by bar.spacer;
sub less' bar bar by less.spacer;
} less_bar_bar;
lookup bar_greater {
ignore sub bar bar' greater;
ignore sub bar' greater greater;
sub bar.spacer greater' by bar_greater.liga;
sub bar' greater by bar.spacer;
} bar_greater;
lookup less_bar {
ignore sub less less' bar;
ignore sub less' bar bar;
sub less.spacer bar' by less_bar.liga;
sub less' bar by less.spacer;
} less_bar;
lookup bar_bar_bar {
ignore sub bar bar' bar bar;
ignore sub bar' bar bar bar;
sub bar.spacer bar.spacer bar' by bar_bar_bar.liga;
sub bar.spacer bar' bar by bar.spacer;
sub bar' bar bar by bar.spacer;
} bar_bar_bar;
lookup greater_greater_greater {
ignore sub greater greater' greater greater;
ignore sub greater' greater greater greater;
ignore sub [asterisk plus dollar] greater' greater greater;
sub greater.spacer greater.spacer greater' by greater_greater_greater.liga;
sub greater.spacer greater' greater by greater.spacer;
sub greater' greater greater by greater.spacer;
} greater_greater_greater;
lookup less_less_less {
ignore sub less less' less less;
ignore sub less' less less less;
ignore sub less' less less [asterisk plus dollar];
sub less.spacer less.spacer less' by less_less_less.liga;
sub less.spacer less' less by less.spacer;
sub less' less less by less.spacer;
} less_less_less;
lookup bar_bar {
ignore sub bar bar' bar;
ignore sub bar' bar bar;
ignore sub [hyphen equal] bar' bar;
ignore sub bar' bar hyphen;
ignore sub bar' bar equal [equal less greater bar colon exclam slash];
sub bar.spacer bar' by bar_bar.liga;
sub bar' bar by bar.spacer;
} bar_bar;
lookup greater_greater {
ignore sub greater greater' greater;
ignore sub greater' greater greater;
ignore sub [asterisk plus dollar] greater' greater;
ignore sub [hyphen equal] greater' greater;
ignore sub greater' greater hyphen;
ignore sub greater' greater equal [equal less greater bar colon exclam slash];
sub greater.spacer greater' by greater_greater.liga;
sub greater' greater by greater.spacer;
} greater_greater;
lookup less_less {
ignore sub less less' less;
ignore sub less' less less;
ignore sub less' less [asterisk plus dollar];
ignore sub [hyphen equal] less' less;
ignore sub less' less hyphen;
ignore sub less' less equal [equal less greater bar colon exclam slash];
sub less.spacer less' by less_less.liga;
sub less' less by less.spacer;
} less_less;
lookup less_exclam_hyphen_hyphen {
ignore sub less less' exclam hyphen hyphen;
ignore sub less' exclam hyphen hyphen hyphen;
ignore sub parenleft question less' exclam hyphen hyphen;
sub less.spacer exclam.spacer hyphen.spacer hyphen' by less_exclam_hyphen_hyphen.liga;
sub less.spacer exclam.spacer hyphen' hyphen by hyphen.spacer;
sub less.spacer exclam' hyphen hyphen by exclam.spacer;
sub less' exclam hyphen hyphen by less.spacer;
} less_exclam_hyphen_hyphen;
lookup asciitilde_asciitilde_greater {
ignore sub asciitilde asciitilde' asciitilde greater;
ignore sub asciitilde' asciitilde greater greater;
sub asciitilde.spacer asciitilde.spacer greater' by asciitilde_asciitilde_greater.liga;
sub asciitilde.spacer asciitilde' greater by asciitilde.spacer;
sub asciitilde' asciitilde greater by asciitilde.spacer;
} asciitilde_asciitilde_greater;
lookup asterisk_asterisk_asterisk {
ignore sub asterisk asterisk' asterisk asterisk;
ignore sub asterisk' asterisk asterisk asterisk;
ignore sub slash asterisk' asterisk asterisk;
ignore sub asterisk' asterisk asterisk slash;
sub asterisk.spacer asterisk.spacer asterisk' by asterisk_asterisk_asterisk.liga;
sub asterisk.spacer asterisk' asterisk by asterisk.spacer;
sub asterisk' asterisk asterisk by asterisk.spacer;
} asterisk_asterisk_asterisk;
lookup colon_colon_colon {
ignore sub colon colon' colon colon;
ignore sub colon' colon colon colon;
ignore sub parenleft question colon' colon colon;
ignore sub colon' colon colon [less greater];
ignore sub [less greater] colon' colon colon;
sub colon.spacer colon.spacer colon' by colon_colon_colon.liga;
sub colon.spacer colon' colon by colon.spacer;
sub colon' colon colon by colon.spacer;
} colon_colon_colon;
lookup colon_colon_equal {
ignore sub colon colon' colon equal;
ignore sub colon' colon equal equal;
ignore sub parenleft question colon' colon equal;
sub colon.spacer colon.spacer equal' by colon_colon_equal.liga;
sub colon.spacer colon' equal by colon.spacer;
sub colon' colon equal by colon.spacer;
} colon_colon_equal;
lookup equal_equal_equal {
ignore sub equal equal' equal equal;
ignore sub equal' equal equal equal;
ignore sub parenleft question equal' equal equal;
ignore sub parenleft question less equal' equal equal;
ignore sub less question equal' equal equal;
ignore sub bracketleft equal' equal equal;
ignore sub equal' equal equal bracketright;
ignore sub equal [colon exclam] equal' equal equal;
ignore sub [less greater bar slash] equal' equal equal;
ignore sub equal' equal equal [less greater bar slash];
ignore sub equal' equal equal [colon exclam] equal;
sub equal.spacer equal.spacer equal' by equal_equal_equal.liga;
sub equal.spacer equal' equal by equal.spacer;
sub equal' equal equal by equal.spacer;
} equal_equal_equal;
lookup exclam_equal_equal {
ignore sub exclam exclam' equal equal;
ignore sub exclam' equal equal equal;
ignore sub parenleft question exclam' equal equal;
ignore sub parenleft question less exclam' equal equal;
ignore sub equal exclam' equal equal;
sub exclam.spacer equal.spacer equal' by exclam_equal_equal.liga;
sub exclam.spacer equal' equal by equal.spacer;
sub exclam' equal equal by exclam.spacer;
} exclam_equal_equal;
lookup exclam_exclam_period {
ignore sub exclam exclam' exclam period;
ignore sub exclam' exclam period period;
ignore sub parenleft question exclam' exclam period;
ignore sub parenleft question less exclam' exclam period;
sub exclam.spacer exclam.spacer period' by exclam_exclam_period.liga;
sub exclam.spacer exclam' period by exclam.spacer;
sub exclam' exclam period by exclam.spacer;
} exclam_exclam_period;
lookup less_asciitilde_asciitilde {
ignore sub less less' asciitilde asciitilde;
ignore sub less' asciitilde asciitilde asciitilde;
sub less.spacer asciitilde.spacer asciitilde' by less_asciitilde_asciitilde.liga;
sub less.spacer asciitilde' asciitilde by asciitilde.spacer;
sub less' asciitilde asciitilde by less.spacer;
} less_asciitilde_asciitilde;
lookup less_asciitilde_greater {
ignore sub less less' asciitilde greater;
ignore sub less' asciitilde greater greater;
sub less.spacer asciitilde.spacer greater' by less_asciitilde_greater.liga;
sub less.spacer asciitilde' greater by asciitilde.spacer;
sub less' asciitilde greater by less.spacer;
} less_asciitilde_greater;
lookup less_asterisk_greater {
sub less.spacer asterisk.spacer greater' by less_asterisk_greater.liga;
sub less.spacer asterisk' greater by asterisk.spacer;
sub less' asterisk greater by less.spacer;
} less_asterisk_greater;
lookup less_dollar_greater {
sub less.spacer dollar.spacer greater' by less_dollar_greater.liga;
sub less.spacer dollar' greater by dollar.spacer;
sub less' dollar greater by less.spacer;
} less_dollar_greater;
lookup less_plus_greater {
sub less.spacer plus.spacer greater' by less_plus_greater.liga;
sub less.spacer plus' greater by plus.spacer;
sub less' plus greater by less.spacer;
} less_plus_greater;
lookup less_slash_greater {
ignore sub less less' slash greater;
ignore sub less' slash greater greater;
sub less.spacer slash.spacer greater' by less_slash_greater.liga;
sub less.spacer slash' greater by slash.spacer;
sub less' slash greater by less.spacer;
} less_slash_greater;
lookup numbersign_underscore_parenleft {
ignore sub numbersign numbersign' underscore parenleft;
ignore sub numbersign' underscore parenleft parenleft;
sub numbersign.spacer underscore.spacer parenleft' by numbersign_underscore_parenleft.liga;
sub numbersign.spacer underscore' parenleft by underscore.spacer;
sub numbersign' underscore parenleft by numbersign.spacer;
} numbersign_underscore_parenleft;
lookup period_period_equal {
ignore sub period period' period equal;
ignore sub period' period equal equal;
sub period.spacer period.spacer equal' by period_period_equal.liga;
sub period.spacer period' equal by period.spacer;
sub period' period equal by period.spacer;
} period_period_equal;
lookup period_period_less {
ignore sub period period' period less;
ignore sub period' period less less;
sub period.spacer period.spacer less' by period_period_less.liga;
sub period.spacer period' less by period.spacer;
sub period' period less by period.spacer;
} period_period_less;
lookup period_period_period {
ignore sub period period' period period;
ignore sub period' period period period;
sub period.spacer period.spacer period' by period_period_period.liga;
sub period.spacer period' period by period.spacer;
sub period' period period by period.spacer;
} period_period_period;
lookup plus_plus_plus {
ignore sub plus plus' plus plus;
ignore sub plus' plus plus plus;
sub plus.spacer plus.spacer plus' by plus_plus_plus.liga;
sub plus.spacer plus' plus by plus.spacer;
sub plus' plus plus by plus.spacer;
} plus_plus_plus;
lookup slash_slash_slash {
ignore sub slash slash' slash slash;
ignore sub slash' slash slash slash;
sub slash.spacer slash.spacer slash' by slash_slash_slash.liga;
sub slash.spacer slash' slash by slash.spacer;
sub slash' slash slash by slash.spacer;
} slash_slash_slash;
lookup w_w_w {
ignore sub w w' w w;
ignore sub w' w w w;
sub w.spacer w.spacer w' by w_w_w.liga;
sub w.spacer w' w by w.spacer;
sub w' w w by w.spacer;
} w_w_w;
lookup ampersand_ampersand {
ignore sub ampersand ampersand' ampersand;
ignore sub ampersand' ampersand ampersand;
sub ampersand.spacer ampersand' by ampersand_ampersand.liga;
sub ampersand' ampersand by ampersand.spacer;
} ampersand_ampersand;
lookup asciicircum_equal {
ignore sub asciicircum asciicircum' equal;
ignore sub asciicircum' equal equal;
sub asciicircum.spacer equal' by asciicircum_equal.liga;
sub asciicircum' equal by asciicircum.spacer;
} asciicircum_equal;
lookup asciitilde_asciitilde {
ignore sub asciitilde asciitilde' asciitilde;
ignore sub asciitilde' asciitilde asciitilde;
sub asciitilde.spacer asciitilde' by asciitilde_asciitilde.liga;
sub asciitilde' asciitilde by asciitilde.spacer;
} asciitilde_asciitilde;
lookup asciitilde_at {
ignore sub asciitilde asciitilde' at;
ignore sub asciitilde' at at;
sub asciitilde.spacer at' by asciitilde_at.liga;
sub asciitilde' at by asciitilde.spacer;
} asciitilde_at;
lookup asciitilde_greater {
ignore sub asciitilde asciitilde' greater;
ignore sub asciitilde' greater greater;
sub asciitilde.spacer greater' by asciitilde_greater.liga;
sub asciitilde' greater by asciitilde.spacer;
} asciitilde_greater;
lookup asciitilde_hyphen {
ignore sub asciitilde asciitilde' hyphen;
ignore sub asciitilde' hyphen hyphen;
sub asciitilde.spacer hyphen' by asciitilde_hyphen.liga;
sub asciitilde' hyphen by asciitilde.spacer;
} asciitilde_hyphen;
lookup asterisk_asterisk {
ignore sub asterisk asterisk' asterisk;
ignore sub asterisk' asterisk asterisk;
ignore sub slash asterisk' asterisk;
ignore sub asterisk' asterisk slash;
sub asterisk.spacer asterisk' by asterisk_asterisk.liga;
sub asterisk' asterisk by asterisk.spacer;
} asterisk_asterisk;
lookup asterisk_greater {
ignore sub asterisk asterisk' greater;
ignore sub asterisk' greater greater;
sub asterisk.spacer greater' by asterisk_greater.liga;
sub asterisk' greater by asterisk.spacer;
} asterisk_greater;
lookup asterisk_slash {
ignore sub asterisk asterisk' slash;
ignore sub asterisk' slash slash;
ignore sub slash asterisk' slash;
ignore sub asterisk' slash asterisk;
sub asterisk.spacer slash' by asterisk_slash.liga;
sub asterisk' slash by asterisk.spacer;
} asterisk_slash;
lookup bar_braceright {
ignore sub bar bar' braceright;
ignore sub bar' braceright braceright;
ignore sub braceleft bar' braceright;
sub bar.spacer braceright' by bar_braceright.liga;
sub bar' braceright by bar.spacer;
} bar_braceright;
lookup bar_bracketright {
ignore sub bar bar' bracketright;
ignore sub bar' bracketright bracketright;
ignore sub bracketleft bar' bracketright;
sub bar.spacer bracketright' by bar_bracketright.liga;
sub bar' bracketright by bar.spacer;
} bar_bracketright;
lookup braceleft_bar {
ignore sub braceleft braceleft' bar;
ignore sub braceleft' bar bar;
ignore sub braceleft' bar braceright;
sub braceleft.spacer bar' by braceleft_bar.liga;
sub braceleft' bar by braceleft.spacer;
} braceleft_bar;
lookup bracketleft_bar {
ignore sub bracketleft bracketleft' bar;
ignore sub bracketleft' bar bar;
ignore sub bracketleft' bar bracketright;
sub bracketleft.spacer bar' by bracketleft_bar.liga;
sub bracketleft' bar by bracketleft.spacer;
} bracketleft_bar;
lookup bracketright_numbersign {
ignore sub bracketright bracketright' numbersign;
ignore sub bracketright' numbersign numbersign;
sub bracketright.spacer numbersign' by bracketright_numbersign.liga;
sub bracketright' numbersign by bracketright.spacer;
} bracketright_numbersign;
lookup colon_colon {
ignore sub colon colon' colon;
ignore sub colon' colon colon;
ignore sub parenleft question colon' colon;
ignore sub colon' colon [less greater];
ignore sub [less greater] colon' colon;
sub colon.spacer colon' by colon_colon.liga;
sub colon' colon by colon.spacer;
} colon_colon;
lookup colon_equal {
ignore sub colon colon' equal;
ignore sub colon' equal equal;
ignore sub parenleft question colon' equal;
ignore sub equal colon' equal;
sub colon.spacer equal' by colon_equal.liga;
sub colon' equal by colon.spacer;
} colon_equal;
lookup dollar_greater {
ignore sub dollar dollar' greater;
ignore sub dollar' greater greater;
sub dollar.spacer greater' by dollar_greater.liga;
sub dollar' greater by dollar.spacer;
} dollar_greater;
lookup equal_equal {
ignore sub equal equal' equal;
ignore sub equal' equal equal;
ignore sub parenleft question equal' equal;
ignore sub parenleft question less equal' equal;
ignore sub less question equal' equal;
ignore sub bracketleft equal' equal;
ignore sub equal' equal bracketright;
ignore sub equal [colon exclam] equal' equal;
ignore sub [less greater bar slash] equal' equal;
ignore sub equal' equal [less greater bar slash] ;
ignore sub equal' equal [colon exclam] equal;
sub equal.spacer equal' by equal_equal.liga;
sub equal' equal by equal.spacer;
} equal_equal;
lookup exclam_equal {
ignore sub exclam exclam' equal;
ignore sub exclam' equal equal;
ignore sub parenleft question exclam' equal;
ignore sub parenleft question less exclam' equal;
ignore sub equal exclam' equal;
sub exclam.spacer equal' by exclam_equal.liga;
sub exclam' equal by exclam.spacer;
} exclam_equal;
lookup exclam_exclam {
ignore sub exclam exclam' exclam;
ignore sub exclam' exclam exclam;
ignore sub parenleft question exclam' exclam;
ignore sub parenleft question less exclam' exclam;
sub exclam.spacer exclam' by exclam_exclam.liga;
sub exclam' exclam by exclam.spacer;
} exclam_exclam;
lookup greater_equal {
ignore sub greater greater' equal;
ignore sub greater' equal equal;
ignore sub equal greater' equal;
ignore sub greater' equal [less greater bar colon exclam slash];
sub greater.spacer equal' by greater_equal.liga;
sub greater' equal by greater.spacer;
} greater_equal;
lookup hyphen_asciitilde {
ignore sub hyphen hyphen' asciitilde;
ignore sub hyphen' asciitilde asciitilde;
sub hyphen.spacer asciitilde' by hyphen_asciitilde.liga;
sub hyphen' asciitilde by hyphen.spacer;
} hyphen_asciitilde;
lookup hyphen_hyphen {
ignore sub hyphen hyphen' hyphen;
ignore sub hyphen' hyphen hyphen;
ignore sub [less greater bar] hyphen' hyphen;
ignore sub hyphen' hyphen [less greater bar];
sub hyphen.spacer hyphen' by hyphen_hyphen.liga;
sub hyphen' hyphen by hyphen.spacer;
} hyphen_hyphen;
lookup less_asciitilde {
ignore sub less less' asciitilde;
ignore sub less' asciitilde asciitilde;
sub less.spacer asciitilde' by less_asciitilde.liga;
sub less' asciitilde by less.spacer;
} less_asciitilde;
lookup less_asterisk {
ignore sub less less' asterisk;
ignore sub less' asterisk asterisk;
sub less.spacer asterisk' by less_asterisk.liga;
sub less' asterisk by less.spacer;
} less_asterisk;
lookup less_dollar {
ignore sub less less' dollar;
ignore sub less' dollar dollar;
sub less.spacer dollar' by less_dollar.liga;
sub less' dollar by less.spacer;
} less_dollar;
lookup less_equal {
ignore sub less less' equal;
ignore sub less' equal equal;
ignore sub parenleft question less' equal;
ignore sub equal less' equal;
ignore sub less' equal [less greater bar colon exclam slash];
sub less.spacer equal' by less_equal.liga;
sub less' equal by less.spacer;
} less_equal;
lookup less_greater {
ignore sub less less' greater;
ignore sub less' greater greater;
sub less.spacer greater' by less_greater.liga;
sub less' greater by less.spacer;
} less_greater;
lookup less_plus {
ignore sub less less' plus;
ignore sub less' plus plus;
sub less.spacer plus' by less_plus.liga;
sub less' plus by less.spacer;
} less_plus;
lookup less_slash {
ignore sub less less' slash;
ignore sub less' slash slash;
sub less.spacer slash' by less_slash.liga;
sub less' slash by less.spacer;
} less_slash;
lookup numbersign_braceleft {
ignore sub numbersign numbersign' braceleft;
ignore sub numbersign' braceleft braceleft;
sub numbersign.spacer braceleft' by numbersign_braceleft.liga;
sub numbersign' braceleft by numbersign.spacer;
} numbersign_braceleft;
lookup numbersign_bracketleft {
ignore sub numbersign numbersign' bracketleft;
ignore sub numbersign' bracketleft bracketleft;
sub numbersign.spacer bracketleft' by numbersign_bracketleft.liga;
sub numbersign' bracketleft by numbersign.spacer;
} numbersign_bracketleft;
lookup numbersign_colon {
ignore sub numbersign numbersign' colon;
ignore sub numbersign' colon colon;
sub numbersign.spacer colon' by numbersign_colon.liga;
sub numbersign' colon by numbersign.spacer;
} numbersign_colon;
lookup numbersign_equal {
ignore sub numbersign numbersign' equal;
ignore sub numbersign' equal equal;
sub numbersign.spacer equal' by numbersign_equal.liga;
sub numbersign' equal by numbersign.spacer;
} numbersign_equal;
lookup numbersign_exclam {
ignore sub numbersign numbersign' exclam;
ignore sub numbersign' exclam exclam;
sub numbersign.spacer exclam' by numbersign_exclam.liga;
sub numbersign' exclam by numbersign.spacer;
} numbersign_exclam;
lookup numbersign_parenleft {
ignore sub numbersign numbersign' parenleft;
ignore sub numbersign' parenleft parenleft;
sub numbersign.spacer parenleft' by numbersign_parenleft.liga;
sub numbersign' parenleft by numbersign.spacer;
} numbersign_parenleft;
lookup numbersign_question {
ignore sub numbersign numbersign' question;
ignore sub numbersign' question question;
sub numbersign.spacer question' by numbersign_question.liga;
sub numbersign' question by numbersign.spacer;
} numbersign_question;
lookup numbersign_underscore {
ignore sub numbersign numbersign' underscore;
ignore sub numbersign' underscore underscore;
sub numbersign.spacer underscore' by numbersign_underscore.liga;
sub numbersign' underscore by numbersign.spacer;
} numbersign_underscore;
lookup percent_percent {
ignore sub percent percent' percent;
ignore sub percent' percent percent;
sub percent.spacer percent' by percent_percent.liga;
sub percent' percent by percent.spacer;
} percent_percent;
lookup period_period {
ignore sub period period' period;
ignore sub period' period period;
sub period.spacer period' by period_period.liga;
sub period' period by period.spacer;
} period_period;
lookup period_question {
ignore sub period period' question;
ignore sub period' question question;
sub period.spacer question' by period_question.liga;
sub period' question by period.spacer;
} period_question;
lookup plus_greater {
ignore sub plus plus' greater;
ignore sub plus' greater greater;
sub plus.spacer greater' by plus_greater.liga;
sub plus' greater by plus.spacer;
} plus_greater;
lookup plus_plus {
ignore sub plus plus' plus;
ignore sub plus' plus plus;
sub plus.spacer plus' by plus_plus.liga;
sub plus' plus by plus.spacer;
} plus_plus;
lookup question_equal {
ignore sub question question' equal;
ignore sub question' equal equal;
ignore sub parenleft question' equal;
ignore sub less question' equal;
sub question.spacer equal' by question_equal.liga;
sub question' equal by question.spacer;
} question_equal;
lookup question_period {
ignore sub question question' period;
ignore sub question' period period;
sub question.spacer period' by question_period.liga;
sub question' period by question.spacer;
} question_period;
lookup question_question {
ignore sub question question' question;
ignore sub question' question question;
sub question.spacer question' by question_question.liga;
sub question' question by question.spacer;
} question_question;
lookup semicolon_semicolon {
ignore sub semicolon semicolon' semicolon;
ignore sub semicolon' semicolon semicolon;
sub semicolon.spacer semicolon' by semicolon_semicolon.liga;
sub semicolon' semicolon by semicolon.spacer;
} semicolon_semicolon;
lookup slash_asterisk {
ignore sub slash slash' asterisk;
ignore sub slash' asterisk asterisk;
ignore sub slash' asterisk slash;
ignore sub asterisk slash' asterisk;
sub slash.spacer asterisk' by slash_asterisk.liga;
sub slash' asterisk by slash.spacer;
} slash_asterisk;
lookup slash_greater {
ignore sub slash slash' greater;
ignore sub slash' greater greater;
sub slash.spacer greater' by slash_greater.liga;
sub slash' greater by slash.spacer;
} slash_greater;
lookup slash_slash {
ignore sub slash slash' slash;
ignore sub slash' slash slash;
ignore sub equal slash' slash;
ignore sub slash' slash equal;
sub slash.spacer slash' by slash_slash.liga;
sub slash' slash by slash.spacer;
} slash_slash;
### Vertical-align colon/greater/less
# :> :< >: <:
# :>: :<:
# <:> >:< <:< >:>
# <::> <::< >::< >::>
# <:::> <:::< >:::< >:::>
# <::::> <::::< >::::< >::::>
lookup center {
#574 :>= :<=
ignore sub colon' [less greater] [equal hyphen];
#1145 ::< ::> <:: >::
ignore sub colon colon' [less greater];
ignore sub [less greater]' colon colon;
# middles & ends
sub [less.center greater.center colon.center] colon' by colon.center;
sub colon.center [less greater]' by [less.center greater.center];
# starts
sub [less greater]' colon by [less.center greater.center];
sub colon' [less greater] by colon.center;
} center;
### Logical conjunction/disjunction #738
lookup slash_backslash {
ignore sub @NotSpace slash' backslash;
ignore sub slash' backslash @NotSpace;
sub slash.spacer backslash' by slash_backslash.liga;
sub slash' backslash by slash.spacer;
} slash_backslash;
lookup backslash_slash {
ignore sub @NotSpace backslash' slash;
ignore sub backslash' slash @NotSpace;
sub backslash.spacer slash' by backslash_slash.liga;
sub backslash' slash by backslash.spacer;
} backslash_slash;
lookup hexadecimal_x {
### 0xFF
sub [zero zero.zero] x' [@Digit @HexDigit] by x.multiply;
sub [zero.tosf zero.zero.tosf zero.tosf.zero] x' [@DigitTosf @HexDigit] by x.multiply.tosf;
### 800x600
sub @Digit x' @Digit by x.multiply;
sub @DigitTosf x' @DigitTosf by x.multiply.tosf;
} hexadecimal_x;
### Long dashes
sub twoemdash by hyphen_start.seq hyphen_end.seq;
sub threeemdash by hyphen_start.seq hyphen_middle.seq hyphen_end.seq;
lookup equal_arrows {
# Disable |||
ignore sub bar bar' bar equal;
ignore sub bar bar' equal;
ignore sub [equal_start.seq equal_middle.seq] bar' bar bar;
# equal middle & end
sub [less_equal_start.seq less_less_equal_start.seq less_equal_middle.seq less_less_equal_middle.seq greater_equal_start.seq greater_greater_equal_start.seq greater_equal_middle.seq greater_greater_equal_middle.seq bar_equal_start.seq bar_bar_equal_start.seq bar_equal_middle.seq bar_bar_equal_middle.seq slash_equal_start.seq slash_slash_equal_start.seq slash_equal_middle.seq slash_slash_equal_middle.seq colon_equal_middle.seq exclam_equal_middle.seq equal_start.seq equal_middle.seq] equal' [equal less greater bar slash colon exclam] by equal_middle.seq;
sub [less_equal_start.seq less_less_equal_start.seq less_equal_middle.seq less_less_equal_middle.seq greater_equal_start.seq greater_greater_equal_start.seq greater_equal_middle.seq greater_greater_equal_middle.seq bar_equal_start.seq bar_bar_equal_start.seq bar_equal_middle.seq bar_bar_equal_middle.seq slash_equal_start.seq slash_slash_equal_start.seq slash_equal_middle.seq slash_slash_equal_middle.seq colon_equal_middle.seq exclam_equal_middle.seq equal_start.seq equal_middle.seq] equal' by equal_end.seq;
# double middles
sub [equal_start.seq equal_middle.seq] less.spacer less' equal by less_less_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] less' less equal by less.spacer;
sub [equal_start.seq equal_middle.seq] greater.spacer greater' equal by greater_greater_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] greater' greater equal by greater.spacer;
sub [equal_start.seq equal_middle.seq] bar.spacer bar' equal by bar_bar_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] bar' bar equal by bar.spacer;
sub [equal_start.seq equal_middle.seq] slash.spacer slash' equal by slash_slash_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] slash' slash equal by slash.spacer;
# single middles
sub [equal_start.seq equal_middle.seq] less' equal by less_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] greater' equal by greater_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] bar' equal by bar_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] slash' equal by slash_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] colon' equal by colon_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] exclam' equal by exclam_equal_middle.seq;
# double ends
sub [equal_start.seq equal_middle.seq] less.spacer less' by less_less_equal_end.seq;
sub [equal_start.seq equal_middle.seq] less' less by less.spacer;
sub [equal_start.seq equal_middle.seq] greater.spacer greater' by greater_greater_equal_end.seq;
sub [equal_start.seq equal_middle.seq] greater' greater by greater.spacer;
sub [equal_start.seq equal_middle.seq] bar.spacer bar' by bar_bar_equal_end.seq;
sub [equal_start.seq equal_middle.seq] bar' bar by bar.spacer;
sub [equal_start.seq equal_middle.seq] slash.spacer slash' by slash_slash_equal_end.seq;
sub [equal_start.seq equal_middle.seq] slash' slash by slash.spacer;
# single ends
sub [equal_start.seq equal_middle.seq] less' by less_equal_end.seq;
sub [equal_start.seq equal_middle.seq] greater' by greater_equal_end.seq;
sub [equal_start.seq equal_middle.seq] bar' by bar_equal_end.seq;
sub [equal_start.seq equal_middle.seq] slash' by slash_equal_end.seq;
# double beginnings
sub less.spacer less' equal by less_less_equal_start.seq;
sub less' less equal by less.spacer;
sub greater.spacer greater' equal by greater_greater_equal_start.seq;
sub greater' greater equal by greater.spacer;
sub bar.spacer bar' equal by bar_bar_equal_start.seq;
sub bar' bar equal by bar.spacer;
sub slash.spacer slash' equal by slash_slash_equal_start.seq;
sub slash' slash equal by slash.spacer;
# Disable >=< #548
sub greater' equal less [equal less] by greater_equal_start.seq;
ignore sub greater' equal less;
# Disable =< #479 #468 #424 #406 #355 #305
sub equal' less [equal less] by equal_start.seq;
# Disable =/ #1056
sub equal' slash [equal slash] by equal_start.seq;
# single beginnings
sub less' equal by less_equal_start.seq;
sub greater' equal by greater_equal_start.seq;
sub bar' equal [equal less greater bar colon exclam slash] by bar_equal_start.seq; # disable |=
sub slash' equal by slash_equal_start.seq;
sub equal' [equal greater bar colon exclam] by equal_start.seq;
} equal_arrows;
### fi/fl #795
sub [f i.salt_low j.salt_low] [i j]' by [i.salt_low j.salt_low];
sub [F T I l.salt_low] l' by l.salt_low;
### Greek
lookup caltGreekUCdiph {
sub @GreekUCdiphIOTA Iota' by Iotadieresis;
sub @GreekUCdiphUPSILON Upsilon' by Upsilondieresis;
} caltGreekUCdiph;
lookup caltGreekUC {
sub @GreekUCAcc' @GreekUC by @GreekUCcalt;
sub @GreekUC @GreekUCAcc' by @GreekUCcalt;
sub @GreekUCAcc' space @GreekUC by @GreekUCcalt;
sub @GreekUC space @GreekUCAcc' by @GreekUCcalt;
} caltGreekUC;
### Arbitrary-length arrows #346
lookup hyphen_arrows {
# Disable |||
ignore sub bar bar' bar hyphen;
ignore sub bar bar' hyphen;
ignore sub [hyphen_start.seq hyphen_middle.seq] bar' bar bar;
# hyphen middle & end
sub [less_hyphen_start.seq less_less_hyphen_start.seq less_hyphen_middle.seq less_less_hyphen_middle.seq greater_hyphen_start.seq greater_greater_hyphen_start.seq greater_hyphen_middle.seq greater_greater_hyphen_middle.seq bar_hyphen_start.seq bar_bar_hyphen_start.seq bar_hyphen_middle.seq bar_bar_hyphen_middle.seq hyphen_start.seq hyphen_middle.seq] hyphen' [hyphen less greater bar] by hyphen_middle.seq;
sub [less_hyphen_start.seq less_less_hyphen_start.seq less_hyphen_middle.seq less_less_hyphen_middle.seq greater_hyphen_start.seq greater_greater_hyphen_start.seq greater_hyphen_middle.seq greater_greater_hyphen_middle.seq bar_hyphen_start.seq bar_bar_hyphen_start.seq bar_hyphen_middle.seq bar_bar_hyphen_middle.seq hyphen_start.seq hyphen_middle.seq] hyphen' by hyphen_end.seq;
# double middles
sub [hyphen_start.seq hyphen_middle.seq] less.spacer less' hyphen by less_less_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] less' less hyphen by less.spacer;
sub [hyphen_start.seq hyphen_middle.seq] greater.spacer greater' hyphen by greater_greater_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' greater hyphen by greater.spacer;
sub [hyphen_start.seq hyphen_middle.seq] bar.spacer bar' hyphen by bar_bar_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' bar hyphen by bar.spacer;
# single middles
sub [hyphen_start.seq hyphen_middle.seq] less' hyphen by less_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' hyphen by greater_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' hyphen by bar_hyphen_middle.seq;
# double ends
sub [hyphen_start.seq hyphen_middle.seq] less.spacer less' by less_less_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] less' less by less.spacer;
sub [hyphen_start.seq hyphen_middle.seq] greater.spacer greater' by greater_greater_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' greater by greater.spacer;
sub [hyphen_start.seq hyphen_middle.seq] bar.spacer bar' by bar_bar_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' bar by bar.spacer;
# single ends
sub [hyphen_start.seq hyphen_middle.seq] less' by less_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' by greater_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' by bar_hyphen_end.seq;
# double beginnings
sub less.spacer less' hyphen by less_less_hyphen_start.seq;
sub less' less hyphen by less.spacer;
sub greater.spacer greater' hyphen by greater_greater_hyphen_start.seq;
sub greater' greater hyphen by greater.spacer;
sub bar.spacer bar' hyphen by bar_bar_hyphen_start.seq;
sub bar' bar hyphen by bar.spacer;
# single beginnings
sub less' hyphen by less_hyphen_start.seq;
sub greater' hyphen by greater_hyphen_start.seq;
sub bar' hyphen by bar_hyphen_start.seq;
sub hyphen' [hyphen less greater bar] by hyphen_start.seq;
} hyphen_arrows;
### Lowercase/uppercase operators
# Must go after hyphen_arrows.fea
lookup lowercase_hyphen {
ignore sub @Tall \\hyphen' @Lowercase;
ignore sub @Lowercase \\hyphen' @Tall;
sub \\hyphen' @Lowercase by \\hyphen.lc;
sub @Lowercase \\hyphen' by \\hyphen.lc;
} lowercase_hyphen;
lookup lowercase_plus {
ignore sub @Tall \\plus' @Lowercase;
ignore sub @Lowercase \\plus' @Tall;
sub \\plus' @Lowercase by \\plus.lc;
sub @Lowercase \\plus' by \\plus.lc;
} lowercase_plus;
lookup lowercase_asterisk {
ignore sub @Tall \\asterisk' @Lowercase;
ignore sub @Lowercase \\asterisk' @Tall;
sub \\asterisk' @Lowercase by \\asterisk.lc;
sub @Lowercase \\asterisk' by \\asterisk.lc;
} lowercase_asterisk;
lookup lowercase_asteriskmath {
ignore sub @Tall \\asteriskmath' @Lowercase;
ignore sub @Lowercase \\asteriskmath' @Tall;
sub \\asteriskmath' @Lowercase by \\asteriskmath.lc;
sub @Lowercase \\asteriskmath' by \\asteriskmath.lc;
} lowercase_asteriskmath;
lookup uppercase_colon {
ignore sub @Tall \\colon' @Lowercase;
ignore sub @Lowercase \\colon' @Tall;
sub @Tall \\colon' by \\colon.uc;
sub \\colon' @Tall by \\colon.uc;
# pos @Tall \\colon' <0 160 0 0>;
# pos \\colon' @Tall <0 160 0 0>;
} uppercase_colon;
lookup numbersigns {
# middle parts
sub [numbersign_start.seq numbersign_middle.seq] numbersign' numbersign by numbersign_middle.seq;
# ends
sub [numbersign_start.seq numbersign_middle.seq] numbersign' by numbersign_end.seq;
# beginnings
sub numbersign' numbersign by numbersign_start.seq;
} numbersigns;
lookup underscores {
# ignore
ignore sub [bracketleft comma] [underscore_start.seq underscore_middle.seq] bar' underscore;
# middle parts
sub [underscore_start.seq underscore_middle.seq] bar' underscore by bar_underscore_middle.seq;
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' bar underscore by underscore_middle.seq;
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' underscore by underscore_middle.seq;
# ends
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' by underscore_end.seq;
# beginnings
sub underscore' bar underscore by underscore_start.seq;
sub underscore' underscore by underscore_start.seq;
} underscores;";
tag = calt;
},
{
automatic = 1;
code = "sub r by r.ss01;
";
tag = salt;
},
{
code = "sub r by r.ss01;";
labels = (
{
language = dflt;
value = "Sans serif lowercase r";
}
);
tag = ss01;
},
{
code = "sub greater_equal.liga by greater_equal.ss02;
sub less_equal.liga by less_equal.ss02;";
labels = (
{
language = dflt;
value = "Less than/greater than with horizontal bar";
}
);
tag = ss02;
},
{
code = "sub ampersand_ampersand.liga by ampersand_ampersand.liga.ss03;
sub ampersand by ampersand.ss03;";
labels = (
{
language = dflt;
value = "Traditional ampersand";
}
);
tag = ss03;
},
{
code = "sub dollar by dollar.ss04;
sub dollar_greater.liga by dollar_greater.liga.ss04;
sub less_dollar_greater.liga by less_dollar_greater.liga.ss04;
sub less_dollar.liga by less_dollar.liga.ss04;";
labels = (
{
language = dflt;
value = "Lightweight dollar sign";
}
);
tag = ss04;
},
{
code = "sub at by at.ss05;
sub asciitilde.spacer' asciitilde_at.liga by asciitilde;
sub asciitilde asciitilde_at.liga' by at.ss05;";
labels = (
{
language = dflt;
value = "Traditional at sign";
}
);
tag = ss05;
},
{
code = "lookup backslash_thin {
ignore sub backslash.ss06 backslash';
sub backslash' by backslash.ss06;
} backslash_thin;";
labels = (
{
language = dflt;
value = "Thin backslash";
}
);
tag = ss06;
},
{
code = "lookup equal_asciitilde {
ignore sub equal equal' asciitilde;
ignore sub equal' asciitilde asciitilde;
sub equal.spacer asciitilde' by equal_asciitilde.ss07;
sub equal' asciitilde by equal.spacer;
} equal_asciitilde;
lookup exclam_asciitilde {
ignore sub exclam exclam' asciitilde;
ignore sub exclam' asciitilde asciitilde;
sub exclam.spacer asciitilde' by exclam_asciitilde.ss07;
sub exclam' asciitilde by exclam.spacer;
} exclam_asciitilde;";
labels = (
{
language = dflt;
value = "Regex matching operator";
}
);
tag = ss07;
},
{
code = "sub equal_equal.liga by equal_equal.ss08;
sub equal_equal_equal.liga by equal_equal_equal.ss08;
sub exclam_equal.liga by exclam_equal.ss08;
sub exclam_equal_equal.liga by exclam_equal_equal.ss08;";
labels = (
{
language = dflt;
value = "Gaps in double-triple equals";
}
);
tag = ss08;
},
{
code = "lookup restore_greater_greater_equal {
sub greater_greater_equal_start.seq equal' by equal_end.seq;
sub greater_greater.liga' equal by greater_greater_equal_start.seq;
} restore_greater_greater_equal;
lookup restore_less_less_equal {
sub less_less_equal_start.seq equal' by equal_end.seq;
sub less_less.liga' equal by less_less_equal_start.seq;
} restore_less_less_equal;
lookup restore_bar_bar_equal {
sub bar_bar_equal_start.seq equal' by equal_end.seq;
sub bar_bar.liga' equal by bar_bar_equal_start.seq;
} restore_bar_bar_equal;
lookup restore_bar_equal {
sub bar_equal_start.seq equal' by equal_end.seq;
sub bar' equal by bar_equal_start.seq;
} restore_bar_equal;";
labels = (
{
language = dflt;
value = "Restore <<= >>= ||= |= as arrows";
}
);
tag = ss09;
},
{
code = "lookup T_l {
sub T.spacer [l l.salt_low]' by T_l.liga.ss10;
sub T' [l l.salt_low] by T.spacer;
} T_l;
lookup F_l {
sub F.spacer [l l.salt_low]' by F_l.liga.ss10;
sub F' [l l.salt_low] by F.spacer;
} F_l;
lookup f_i {
sub f.spacer [i i.salt_low]' by f_i.liga.ss10;
sub f' [i i.salt_low] by f.spacer;
} f_i;
lookup f_j {
sub f.spacer [j j.salt_low]' by f_j.liga.ss10;
sub f' [j j.salt_low] by f.spacer;
} f_j;
lookup f_l {
sub f.spacer l' by f_l.liga.ss10;
sub f' l by f.spacer;
} f_l;
lookup f_t {
sub f.spacer t' by f_t.liga.ss10;
sub f' t by f.spacer;
} f_t;";
labels = (
{
language = dflt;
value = "Ligatures for Tl Fl fi fj fl ft";
}
);
tag = ss10;
},
{
automatic = 1;
code = "lookup ccmp_Other_1 {
@CombiningTopAccents = [acutecomb brevecomb caroncomb circumflexcomb commaabovecomb commareversedabovecomb dblgravecomb dieresiscomb dotaccentcomb gravecomb hungarumlautcomb macroncomb perispomenicomb ringcomb tildecomb];
@CombiningNonTopAccents = [cedillacomb commaaccent ypogegrammenicomb];
sub [i]' @CombiningTopAccents by [idotless];
sub [i]' @CombiningNonTopAccents @CombiningTopAccents by [idotless];
@Markscomb = [commaaccent dieresis dotaccent grave acute hungarumlaut circumflex caron breve ring tilde macron cedilla tonos varia oxia];
@MarkscombCase = [commaaccent.case dieresis.case dotaccent.case grave.case acute.case hungarumlaut.case circumflex.case caron.case breve.case ring.case tilde.case macron.case cedilla.case tonos.case varia.case oxia.case];
sub @Markscomb @Markscomb' by @MarkscombCase;
sub @Uppercase @Markscomb' by @MarkscombCase;
} ccmp_Other_1;
lookup ccmp_Other_2 {
sub @Markscomb' @MarkscombCase by @MarkscombCase;
sub @MarkscombCase @Markscomb' by @MarkscombCase;
} ccmp_Other_2;
";
tag = ccmp;
},
{
automatic = 1;
code = "sub zero by zeroinferior;
sub one by oneinferior;
sub two by twoinferior;
sub three by threeinferior;
sub four by fourinferior;
sub five by fiveinferior;
sub six by sixinferior;
sub seven by seveninferior;
sub eight by eightinferior;
sub nine by nineinferior;
sub parenleft by parenleftinferior;
sub parenright by parenrightinferior;
sub minus by minusinferior;
sub plus by plusinferior;
";
tag = sinf;
},
{
automatic = 1;
code = "sub cornerbracketleft by cornerbracketleft.half;
sub cornerbracketright by cornerbracketright.half;
";
tag = hwid;
},
{
code = "sub a by a.cv01;
sub aacute by aacute.cv01;
sub abreve by abreve.cv01;
sub acircumflex by acircumflex.cv01;
sub adieresis by adieresis.cv01;
sub agrave by agrave.cv01;
sub amacron by amacron.cv01;
sub aogonek by aogonek.cv01;
sub aring by aring.cv01;
sub atilde by atilde.cv01;";
tag = cv01;
},
{
code = "sub g by g.cv02;
sub gbreve by gbreve.cv02;
sub gcircumflex by gcircumflex.cv02;
sub gcommaaccent by gcommaaccent.cv02;
sub gdotaccent by gdotaccent.cv02;";
tag = cv02;
},
{
code = "sub i by i.cv03;
sub idotless by idotless.cv03;
sub iacute by iacute.cv03;
sub ibreve by ibreve.cv03;
sub icircumflex by icircumflex.cv03;
sub idieresis by idieresis.cv03;
sub idotaccent by idotaccent.cv03;
sub igrave by igrave.cv03;
sub imacron by imacron.cv03;
sub iogonek by iogonek.cv03;
sub itilde by itilde.cv03;";
tag = cv03;
},
{
code = "sub i by i.cv04;
sub idotless by idotless.cv04;
sub iacute by iacute.cv04;
sub ibreve by ibreve.cv04;
sub icircumflex by icircumflex.cv04;
sub idieresis by idieresis.cv04;
sub idotaccent by idotaccent.cv04;
sub igrave by igrave.cv04;
sub imacron by imacron.cv04;
sub iogonek by iogonek.cv04;
sub itilde by itilde.cv04;";
tag = cv04;
},
{
code = "sub i by i.cv05;
sub idotless by idotless.cv05;
sub iacute by iacute.cv05;
sub ibreve by ibreve.cv05;
sub icircumflex by icircumflex.cv05;
sub idieresis by idieresis.cv05;
sub idotaccent by idotaccent.cv05;
sub igrave by igrave.cv05;
sub imacron by imacron.cv05;
sub iogonek by iogonek.cv05;
sub itilde by itilde.cv05;";
tag = cv05;
},
{
code = "sub i by i.cv06;
sub idotless by idotless.cv06;
sub iacute by iacute.cv06;
sub ibreve by ibreve.cv06;
sub icircumflex by icircumflex.cv06;
sub idieresis by idieresis.cv06;
sub idotaccent by idotaccent.cv06;
sub igrave by igrave.cv06;
sub imacron by imacron.cv06;
sub iogonek by iogonek.cv06;
sub itilde by itilde.cv06;";
tag = cv06;
},
{
code = "sub l by l.cv07;
sub lacute by lacute.cv07;
sub lcaron by lcaron.cv07;
sub lcommaaccent by lcommaaccent.cv07;
sub ldot by ldot.cv07;
sub lslash by lslash.cv07;";
tag = cv07;
},
{
code = "sub l by l.cv08;
sub lacute by lacute.cv08;
sub lcaron by lcaron.cv08;
sub lcommaaccent by lcommaaccent.cv08;
sub ldot by ldot.cv08;
sub lslash by lslash.cv08;";
tag = cv08;
},
{
code = "sub l by l.cv09;
sub lacute by lacute.cv09;
sub lcaron by lcaron.cv09;
sub lcommaaccent by lcommaaccent.cv09;
sub ldot by ldot.cv09;
sub lslash by lslash.cv09;";
tag = cv09;
},
{
code = "sub l by l.cv10;
sub lacute by lacute.cv10;
sub lcaron by lcaron.cv10;
sub lcommaaccent by lcommaaccent.cv10;
sub ldot by ldot.cv10;
sub lslash by lslash.cv10;";
tag = cv10;
},
{
code = "sub zero by zero.cv11;
sub zero.tosf by zero.tosf.cv11;";
tag = cv11;
},
{
code = "sub zero by zero.cv12;
sub zero.tosf by zero.tosf.cv12;";
tag = cv12;
},
{
code = "sub zero by zero.cv13;
sub zero.tosf by zero.tosf.cv13;";
tag = cv13;
},
{
code = "sub three by three.cv14;
sub three.tosf by three.tosf.cv14;
sub threeinferior by threeinferior.cv14;
sub three.dnom by three.dnom.cv14;
sub three.numr by three.numr.cv14;
sub threesuperior by threesuperior.cv14;";
tag = cv14;
},
{
code = "sub [asterisk asterisk.lc] by asterisk.cv15;
sub [asteriskmath asteriskmath.lc] by asteriskmath.cv15;";
tag = cv15;
},
{
code = "sub [asterisk asterisk.lc asterisk.cv15 asteriskmath asteriskmath.lc asteriskmath.cv15]
by [asteriskmath asteriskmath.lc asteriskmath.cv15 asterisk asterisk.lc asterisk.cv15];
sub [asterisk_asterisk.liga asterisk_asterisk_asterisk.liga asterisk_slash.liga slash_asterisk.liga less_asterisk.liga less_asterisk_greater.liga asterisk_greater.liga]
by [asterisk_asterisk.liga.cv16 asterisk_asterisk_asterisk.liga.cv16 asterisk_slash.liga.cv16 slash_asterisk.liga.cv16 less_asterisk.liga.cv16 less_asterisk_greater.liga.cv16 asterisk_greater.liga.cv16];";
tag = cv16;
},
{
code = "sub asciitilde by asciitilde.cv17;";
tag = cv17;
},
{
code = "sub percent by percent.cv18;
sub perthousand by perthousand.cv18;
sub percent_percent.liga by percent_percent.liga.cv18;";
tag = cv18;
},
{
code = "sub less_equal.liga by less_equal.ss02;";
tag = cv19;
},
{
code = "lookup less_equal_cv20 {
sub less_equal_start.seq less_equal.liga' by equal_end.seq;
sub less.spacer' less_equal.liga by less_equal_start.seq;
} less_equal_cv20;";
tag = cv20;
},
{
code = "lookup equal_less_cv21 {
ignore sub equal equal' less;
ignore sub equal' less [less greater equal];
sub equal.spacer less' by less_equal.liga;
sub equal' less by equal.spacer;
} equal_less_cv21;";
tag = cv21;
},
{
code = "lookup equal_less_cv22 {
ignore sub equal equal' less;
ignore sub equal' less [less greater equal];
sub equal.spacer less' by less_equal.ss02;
sub equal' less by equal.spacer;
} equal_less_cv22;";
tag = cv22;
},
{
code = "sub greater_equal.liga by greater_equal.ss02;";
tag = cv23;
},
{
code = "lookup slash_equal_as_not_equal {
sub slash.spacer equal_end.seq' by exclam_equal.liga;
sub slash_equal_start.seq' equal_end.seq by slash.spacer;
} slash_equal_as_not_equal;";
tag = cv24;
},
{
code = "lookup period_hyphen {
ignore sub period period' hyphen;
ignore sub period' hyphen hyphen;
sub period.spacer hyphen' by period_hyphen.cv25;
sub period' hyphen by period.spacer;
} period_hyphen;";
tag = cv25;
},
{
code = "lookup colon_hyphen {
ignore sub colon colon' hyphen;
ignore sub colon' hyphen hyphen;
sub colon.spacer hyphen' by colon_hyphen.cv26;
sub colon' hyphen by colon.spacer;
} colon_hyphen;";
tag = cv26;
},
{
code = "lookup bracketleft_bracketright {
sub bracketleft.spacer bracketright' by bracketleft_bracketright.cv27;
sub bracketleft' bracketright by bracketleft.spacer;
} bracketleft_bracketright;";
tag = cv27;
},
{
code = "sub braceleft period' by bullet;
sub period' braceright by bullet;";
tag = cv28;
},
{
code = "sub braceleft by braceleft.cv29;
sub braceright by braceright.cv29;
sub numbersign_braceleft.liga by numbersign_braceleft.liga.cv29;";
tag = cv29;
},
{
code = "sub bar by bar.cv30;
sub bar_bar.liga by bar_bar.liga.cv30;
sub bar_bar_bar.liga by bar_bar_bar.liga.cv30;
sub bar_bar_equal_middle.seq by bar_bar_equal_middle.seq.cv30;
sub bar_equal_middle.seq by bar_equal_middle.seq.cv30;
sub bar_bar_equal_end.seq by bar_bar_equal_end.seq.cv30;
sub bar_bar_equal_start.seq by bar_bar_equal_start.seq.cv30;
sub bar_bar_hyphen_middle.seq by bar_bar_hyphen_middle.seq.cv30;
sub bar_hyphen_middle.seq by bar_hyphen_middle.seq.cv30;
sub bar_bar_hyphen_end.seq by bar_bar_hyphen_end.seq.cv30;
sub bar_bar_hyphen_start.seq by bar_bar_hyphen_start.seq.cv30;
sub bar_equal_end.seq by bar_equal_end.seq.cv30;
sub bar_equal_start.seq by bar_equal_start.seq.cv30;
sub bar_hyphen_end.seq by bar_hyphen_end.seq.cv30;
sub bar_hyphen_start.seq by bar_hyphen_start.seq.cv30;
sub bar_underscore_middle.seq by bar_underscore_middle.seq.cv30;";
tag = cv30;
},
{
code = "sub parenleft by parenleft.cv31;
sub parenright by parenright.cv31;";
tag = cv31;
},
{
code = "lookup period_equal {
ignore sub period period' equal;
ignore sub period' equal equal;
sub period.spacer equal' by period_equal.cv32;
sub period' equal by period.spacer;
} period_equal;";
tag = cv32;
}
);
fontMaster = (
{
axesValues = (
62
);
customParameters = (
{
name = typoAscender;
value = 1887;
},
{
name = typoDescender;
value = -513;
},
{
name = typoLineGap;
value = 0;
},
{
name = winAscent;
value = 1887;
},
{
name = winDescent;
value = 513;
},
{
name = hheaAscender;
value = 1887;
},
{
name = hheaDescender;
value = -513;
},
{
name = hheaLineGap;
value = 0;
},
{
name = weightClass;
value = 300;
},
{
name = strikeoutPosition;
value = 318;
},
{
name = strikeoutSize;
value = 50;
}
);
guides = (
{
pos = (-708,2100);
}
);
iconName = Light;
id = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
metricValues = (
{
pos = 1887;
},
{
over = 24;
pos = 1374;
},
{
over = 24;
pos = 1050;
},
{
over = -22;
},
{
pos = -513;
},
{
},
{
over = 22;
pos = 1476;
},
{
over = -24;
pos = -386;
}
);
name = Light;
stemValues = (
110,
124
);
visible = 1;
},
{
axesValues = (
158
);
customParameters = (
{
name = typoAscender;
value = 1887;
},
{
name = typoDescender;
value = -513;
},
{
name = typoLineGap;
value = 0;
},
{
name = winAscent;
value = 1887;
},
{
name = winDescent;
value = 513;
},
{
name = hheaAscender;
value = 1887;
},
{
name = hheaDescender;
value = -513;
},
{
name = hheaLineGap;
value = 0;
},
{
name = weightClass;
value = 700;
},
{
name = strikeoutPosition;
value = 318;
},
{
name = strikeoutSize;
value = 50;
}
);
iconName = Bold;
id = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
metricValues = (
{
pos = 1887;
},
{
over = 40;
pos = 1374;
},
{
over = 40;
pos = 1050;
},
{
over = -40;
},
{
pos = -513;
},
{
},
{
over = 40;
pos = 1476;
},
{
over = -40;
pos = -386;
}
);
name = Bold;
stemValues = (
234,
316
);
visible = 1;
}
);
glyphs = (
{
glyphname = A;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (598,0);
},
{
name = ogonek;
pos = (1086,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (361,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(873,0,l),
(1224,0,l),
(800,1374,l),
(402,1374,l),
(-22,0,l),
(321,0,l),
(394,295,l),
(800,295,l)
);
},
{
closed = 1;
nodes = (
(596,1139,l),
(746,533,l),
(446,533,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (595,0);
},
{
name = ogonek;
pos = (1100,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (406,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1008,0,l),
(1140,0,l),
(684,1374,l),
(515,1374,l),
(60,0,l),
(180,0,l),
(301,367,l),
(887,367,l)
);
},
{
closed = 1;
nodes = (
(596,1255,l),
(845,483,l),
(344,483,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 65;
},
{
glyphname = Aacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 193;
},
{
glyphname = Abreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (0,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (-3,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 258;
},
{
glyphname = Acircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 194;
},
{
glyphname = Adieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (4,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 196;
},
{
glyphname = Agrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (4,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 192;
},
{
glyphname = Amacron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = macron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (4,0);
ref = macron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 256;
},
{
glyphname = Aogonek;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (276,0);
ref = ogonek;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (273,0);
ref = ogonek;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 260;
},
{
glyphname = Aring;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = ring.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (4,0);
ref = ring.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 197;
},
{
glyphname = Atilde;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = A;
},
{
pos = (-10,-12);
ref = tilde.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = A;
},
{
pos = (4,0);
ref = tilde.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 195;
},
{
glyphname = AE;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (701,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(676,0,l),
(1206,0,l),
(1206,222,l),
(909,222,l),
(838,585,l),
(1112,585,l),
(1112,807,l),
(798,807,l),
(732,1153,l),
(1096,1153,l),
(1130,1374,l),
(325,1374,l),
(-24,0,l),
(290,0,l),
(345,302,l),
(627,302,l)
);
},
{
closed = 1;
nodes = (
(490,1155,l),
(593,525,l),
(382,525,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (729,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(749,0,l),
(1218,0,l),
(1218,117,l),
(861,117,l),
(748,639,l),
(1115,639,l),
(1115,756,l),
(725,756,l),
(613,1257,l),
(1116,1257,l),
(1133,1374,l),
(396,1374,l),
(-24,0,l),
(112,0,l),
(224,365,l),
(669,365,l)
);
},
{
closed = 1;
nodes = (
(478,1262,l),
(638,487,l),
(272,487,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 198;
},
{
glyphname = AEacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = AE;
},
{
pos = (91,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = AE;
},
{
pos = (139,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 508;
},
{
glyphname = B;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(804,268,o),
(690,239,o),
(561,239,cs),
(440,239,l),
(440,607,l),
(575,607,ls),
(713,607,o),
(804,559,o),
(804,416,cs)
);
},
{
closed = 1;
nodes = (
(752,874,o),
(692,827,o),
(551,827,cs),
(440,827,l),
(440,1142,l),
(541,1142,ls),
(684,1142,o),
(752,1097,o),
(752,990,cs)
);
},
{
closed = 1;
nodes = (
(1142,622,o),
(977,704,o),
(828,728,c),
(965,762,o),
(1082,860,o),
(1082,1023,cs),
(1082,1291,o),
(836,1374,o),
(551,1374,cs),
(112,1374,l),
(112,0,l),
(572,0,ls),
(872,0,o),
(1142,85,o),
(1142,403,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(923,158,o),
(740,115,o),
(603,115,cs),
(344,115,l),
(344,658,l),
(609,658,ls),
(775,658,o),
(923,604,o),
(923,377,cs)
);
},
{
closed = 1;
nodes = (
(868,853,o),
(768,779,o),
(599,779,cs),
(344,779,l),
(344,1262,l),
(580,1262,ls),
(753,1262,o),
(868,1198,o),
(868,1027,cs)
);
},
{
closed = 1;
nodes = (
(1060,625,o),
(897,701,o),
(744,728,c),
(874,756,o),
(1000,849,o),
(1000,1029,cs),
(1000,1299,o),
(754,1374,o),
(526,1374,cs),
(217,1374,l),
(217,0,l),
(560,0,ls),
(799,0,o),
(1060,95,o),
(1060,389,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 66;
},
{
glyphname = C;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (704,0);
},
{
name = top;
pos = (722,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(349,1409,o),
(68,1150,o),
(68,690,cs),
(68,218,o),
(335,-34,o),
(712,-34,cs),
(926,-34,o),
(1074,49,o),
(1179,152,c),
(1030,342,l),
(952,280,o),
(868,219,o),
(730,219,cs),
(541,219,o),
(407,361,o),
(407,690,cs),
(407,1025,o),
(549,1166,o),
(724,1166,cs),
(831,1166,o),
(923,1127,o),
(1000,1065,c),
(1161,1259,l),
(1046,1354,o),
(915,1409,o),
(716,1409,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (698,0);
},
{
name = top;
pos = (734,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(411,1393,o),
(144,1151,o),
(144,687,cs),
(144,229,o),
(403,-20,o),
(726,-20,cs),
(917,-20,o),
(1044,44,o),
(1122,119,c),
(1050,211,l),
(978,151,o),
(882,98,o),
(724,98,cs),
(476,98,o),
(277,254,o),
(277,687,cs),
(277,1132,o),
(489,1277,o),
(730,1277,cs),
(835,1277,o),
(933,1251,o),
(1023,1175,c),
(1101,1264,l),
(994,1349,o),
(890,1393,o),
(716,1393,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 67;
},
{
glyphname = Cacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = C;
},
{
pos = (112,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = C;
},
{
pos = (144,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 262;
},
{
glyphname = Ccaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = C;
},
{
pos = (122,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = C;
},
{
pos = (134,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 268;
},
{
glyphname = Ccedilla;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = C;
},
{
pos = (104,0);
ref = cedilla.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = C;
},
{
pos = (98,0);
ref = cedilla.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 199;
},
{
glyphname = Ccircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = C;
},
{
pos = (122,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = C;
},
{
pos = (134,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 264;
},
{
glyphname = Cdotaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = C;
},
{
pos = (112,-12);
ref = dotaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = C;
},
{
pos = (138,0);
ref = dotaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 266;
},
{
glyphname = D;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (574,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(809,334,o),
(684,237,o),
(502,237,cs),
(432,237,l),
(432,1136,l),
(502,1136,ls),
(676,1136,o),
(809,1061,o),
(809,694,cs)
);
},
{
closed = 1;
nodes = (
(1149,1261,o),
(809,1374,o),
(454,1374,cs),
(104,1374,l),
(104,0,l),
(478,0,ls),
(823,0,o),
(1149,135,o),
(1149,694,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (565,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(953,211,o),
(707,110,o),
(505,110,cs),
(313,110,l),
(313,1261,l),
(502,1261,ls),
(696,1261,o),
(953,1205,o),
(953,694,cs)
);
},
{
closed = 1;
nodes = (
(1092,1266,o),
(775,1374,o),
(463,1374,cs),
(186,1374,l),
(186,0,l),
(484,0,ls),
(752,0,o),
(1092,113,o),
(1092,694,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 68;
},
{
glyphname = Dcaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = D;
},
{
pos = (-26,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = D;
},
{
pos = (-35,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 270;
},
{
glyphname = Dcroat;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Eth;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Eth;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 272;
},
{
glyphname = Eth;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(19,799,l),
(19,601,l),
(697,601,l),
(697,799,l)
);
},
{
alignment = -1;
pos = (26,0);
ref = D;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(47,763,l),
(47,649,l),
(669,649,l),
(669,763,l)
);
},
{
alignment = -1;
pos = (17,0);
ref = D;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 208;
},
{
glyphname = E;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (640,0);
},
{
name = ogonek;
pos = (954,0);
},
{
name = top;
pos = (640,1374);
},
{
name = topleft;
pos = (166,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1059,1140,l),
(1092,1374,l),
(186,1374,l),
(186,0,l),
(1093,0,l),
(1093,235,l),
(514,235,l),
(514,583,l),
(994,583,l),
(994,813,l),
(514,813,l),
(514,1140,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (654,0);
},
{
name = ogonek;
pos = (957,0);
},
{
name = top;
pos = (643,1374);
},
{
name = topleft;
pos = (250,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(999,1260,l),
(1016,1374,l),
(270,1374,l),
(270,0,l),
(1039,0,l),
(1039,111,l),
(398,111,l),
(398,640,l),
(918,640,l),
(918,757,l),
(398,757,l),
(398,1260,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 69;
},
{
glyphname = Eacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (30,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (53,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 201;
},
{
glyphname = Ebreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (40,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (40,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 276;
},
{
glyphname = Ecaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (40,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (43,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 282;
},
{
glyphname = Ecircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (40,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (43,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 202;
},
{
glyphname = Edieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (30,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (47,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 203;
},
{
glyphname = Edotaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (30,-12);
ref = dotaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (47,0);
ref = dotaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 278;
},
{
glyphname = Egrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (30,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (47,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 200;
},
{
glyphname = Emacron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (30,-12);
ref = macron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (47,0);
ref = macron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 274;
},
{
glyphname = Eogonek;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = E;
},
{
pos = (144,0);
ref = ogonek;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = E;
},
{
pos = (130,0);
ref = ogonek;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 280;
},
{
glyphname = F;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1093,1140,l),
(1127,1374,l),
(216,1374,l),
(216,0,l),
(545,0,l),
(545,544,l),
(1031,544,l),
(1031,779,l),
(545,779,l),
(545,1140,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1059,1260,l),
(1076,1374,l),
(295,1374,l),
(295,0,l),
(421,0,l),
(421,632,l),
(977,632,l),
(977,743,l),
(421,743,l),
(421,1260,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 70;
},
{
glyphname = G;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (654,0);
},
{
name = top;
pos = (660,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(839,-34,o),
(996,19,o),
(1136,105,c),
(1136,789,l),
(620,789,l),
(652,559,l),
(826,559,l),
(826,247,l),
(778,222,o),
(719,206,o),
(654,206,cs),
(470,206,o),
(383,329,o),
(383,688,cs),
(383,1031,o),
(519,1170,o),
(705,1170,cs),
(803,1170,o),
(873,1135,o),
(958,1061,c),
(1130,1239,l),
(1021,1341,o),
(890,1409,o),
(689,1409,cs),
(329,1409,o),
(45,1158,o),
(45,690,cs),
(45,218,o),
(257,-34,o),
(651,-34,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (663,0);
},
{
name = top;
pos = (660,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(817,-20,o),
(940,32,o),
(1060,94,c),
(1060,741,l),
(611,741,l),
(629,622,l),
(928,622,l),
(928,172,l),
(839,123,o),
(744,98,o),
(640,98,cs),
(383,98,o),
(245,277,o),
(245,688,cs),
(245,1135,o),
(454,1275,o),
(657,1275,cs),
(775,1275,o),
(871,1239,o),
(955,1159,c),
(1040,1247,l),
(932,1346,o),
(834,1393,o),
(661,1393,cs),
(383,1393,o),
(105,1162,o),
(105,687,cs),
(105,211,o),
(314,-20,o),
(620,-20,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 71;
},
{
glyphname = Gbreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = G;
},
{
pos = (60,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = G;
},
{
pos = (57,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 286;
},
{
glyphname = Gcircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = G;
},
{
pos = (60,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = G;
},
{
pos = (60,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 284;
},
{
glyphname = Gcommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = G;
},
{
pos = (52,0);
ref = commaaccent;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = G;
},
{
pos = (64,0);
ref = commaaccent;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 290;
},
{
glyphname = Gdotaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = G;
},
{
pos = (50,-12);
ref = dotaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = G;
},
{
pos = (64,0);
ref = dotaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 288;
},
{
glyphname = H;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1116,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (84,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1096,0,l),
(1096,1374,l),
(768,1374,l),
(768,848,l),
(432,848,l),
(432,1374,l),
(104,1374,l),
(104,0,l),
(432,0,l),
(432,578,l),
(768,578,l),
(768,0,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1034,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (166,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1014,0,l),
(1014,1374,l),
(887,1374,l),
(887,778,l),
(313,778,l),
(313,1374,l),
(186,1374,l),
(186,0,l),
(313,0,l),
(313,674,l),
(887,674,l),
(887,0,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 72;
},
{
glyphname = Hbar;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(759,1374,l),
(759,843,l),
(441,843,l),
(441,1374,l),
(113,1374,l),
(113,0,l),
(441,0,l),
(441,588,l),
(759,588,l),
(759,0,l),
(1087,0,l),
(1087,1374,l)
);
},
{
closed = 1;
nodes = (
(4,1173,l),
(4,991,l),
(1196,991,l),
(1196,1173,l)
);
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(891,1374,l),
(891,781,l),
(309,781,l),
(309,1374,l),
(181,1374,l),
(181,0,l),
(309,0,l),
(309,670,l),
(891,670,l),
(891,0,l),
(1019,0,l),
(1019,1374,l)
);
},
{
closed = 1;
nodes = (
(4,1141,l),
(4,1023,l),
(1196,1023,l),
(1196,1141,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 294;
},
{
glyphname = Hcircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = H;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = H;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 292;
},
{
glyphname = I;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = ogonek;
pos = (784,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (130,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(150,1374,l),
(150,1134,l),
(436,1134,l),
(436,241,l),
(150,241,l),
(150,0,l),
(1050,0,l),
(1050,241,l),
(764,241,l),
(764,1134,l),
(1050,1134,l),
(1050,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = ogonek;
pos = (685,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (203,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(223,1374,l),
(223,1265,l),
(535,1265,l),
(535,109,l),
(223,109,l),
(223,0,l),
(977,0,l),
(977,109,l),
(665,109,l),
(665,1265,l),
(977,1265,l),
(977,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 73;
},
{
glyphname = IJ;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(400,-364,l),
(926,-279,o),
(1113,-36,o),
(1113,337,cs),
(1113,1374,l),
(16,1374,l),
(16,1172,l),
(162,1172,l),
(162,203,l),
(16,203,l),
(16,0,l),
(570,0,l),
(570,203,l),
(464,203,l),
(464,1172,l),
(797,1172,l),
(797,324,ls),
(797,58,o),
(730,-80,o),
(363,-143,c)
);
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(412,-244,l),
(946,-207,o),
(1051,95,o),
(1051,386,cs),
(1051,1374,l),
(25,1374,l),
(25,1248,l),
(241,1248,l),
(241,125,l),
(25,125,l),
(25,0,l),
(558,0,l),
(558,125,l),
(382,125,l),
(382,1248,l),
(918,1248,l),
(918,404,ls),
(918,98,o),
(814,-109,o),
(397,-141,c)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 306;
},
{
glyphname = Iacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 205;
},
{
glyphname = Ibreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (0,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (-3,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 300;
},
{
glyphname = Icircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 206;
},
{
glyphname = Idieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (4,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 207;
},
{
glyphname = Idotaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = dotaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (4,0);
ref = dotaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 304;
},
{
glyphname = Igrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (4,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 204;
},
{
glyphname = Imacron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = macron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (4,0);
ref = macron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 298;
},
{
glyphname = Iogonek;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-26,0);
ref = ogonek;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (-142,0);
ref = ogonek;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 302;
},
{
glyphname = Itilde;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = I;
},
{
pos = (-10,-12);
ref = tilde.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = I;
},
{
pos = (4,0);
ref = tilde.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 296;
},
{
glyphname = J;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (704,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(301,1374,l),
(301,1134,l),
(727,1134,l),
(727,491,ls),
(727,302,o),
(619,214,o),
(477,214,cs),
(371,214,o),
(297,237,o),
(203,301,c),
(78,99,l),
(199,17,o),
(319,-30,o),
(497,-30,cs),
(851,-30,o),
(1054,173,o),
(1054,495,cs),
(1054,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (698,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(445,1374,l),
(445,1262,l),
(848,1262,l),
(848,459,ls),
(848,238,o),
(740,95,o),
(534,95,cs),
(459,95,o),
(354,113,o),
(228,192,c),
(165,103,l),
(271,21,o),
(408,-21,o),
(531,-21,cs),
(896,-21,o),
(975,243,o),
(975,445,cs),
(975,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 74;
},
{
glyphname = Jcircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = J;
},
{
pos = (104,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = J;
},
{
pos = (98,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 308;
},
{
glyphname = K;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (601,0);
},
{
name = top;
pos = (601,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(446,1374,l),
(118,1374,l),
(118,0,l),
(446,0,l)
);
},
{
closed = 1;
nodes = (
(837,0,l),
(1217,0,l),
(787,758,l),
(1179,1374,l),
(835,1374,l),
(456,734,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (658,0);
},
{
name = top;
pos = (669,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(364,1374,l),
(237,1374,l),
(237,0,l),
(364,0,l)
);
},
{
closed = 1;
nodes = (
(993,0,l),
(1160,0,l),
(541,741,l),
(1122,1374,l),
(965,1374,l),
(374,734,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 75;
},
{
glyphname = Kcommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = K;
},
{
pos = (1,0);
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = K;
},
{
pos = (58,0);
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 310;
},
{
glyphname = L;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (635,0);
},
{
name = center;
pos = (932,764);
},
{
name = top;
pos = (350,1374);
},
{
name = topright;
pos = (614,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1081,0,l),
(1115,259,l),
(514,259,l),
(514,1374,l),
(186,1374,l),
(186,0,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (671,0);
},
{
name = center;
pos = (946,756);
},
{
name = top;
pos = (362,1374);
},
{
name = topright;
pos = (524,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1045,0,l),
(1061,124,l),
(424,124,l),
(424,1374,l),
(296,1374,l),
(296,0,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 76;
},
{
glyphname = Lacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = L;
},
{
pos = (-260,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = L;
},
{
pos = (-228,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 313;
},
{
glyphname = Lcaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = L;
},
{
pos = (173,-4);
ref = caron.alt;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = L;
},
{
pos = (23,-4);
ref = caron.alt;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 317;
},
{
glyphname = Lcommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = L;
},
{
pos = (35,0);
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = L;
},
{
pos = (71,0);
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 315;
},
{
glyphname = Ldot;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = L;
},
{
pos = (332,-676);
ref = dotaccent;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = L;
},
{
pos = (349,-672);
ref = dotaccent;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 319;
},
{
glyphname = Lslash;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(900,876,l),
(791,1047,l),
(18,571,l),
(125,397,l)
);
},
{
alignment = -1;
pos = (29,0);
ref = L;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(827,896,l),
(763,990,l),
(100,579,l),
(161,484,l)
);
},
{
alignment = -1;
pos = (-13,0);
ref = L;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 321;
},
{
glyphname = M;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1231,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(750,1374,l),
(604,487,l),
(450,1374,l),
(113,1374,l),
(35,0,l),
(316,0,l),
(326,581,ls),
(330,801,o),
(323,920,o),
(307,1095,c),
(475,234,l),
(723,234,l),
(879,1095,l),
(865,913,o),
(856,805,o),
(862,585,cs),
(879,0,l),
(1165,0,l),
(1087,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1090,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(837,1374,l),
(604,417,l),
(360,1374,l),
(147,1374,l),
(69,0,l),
(197,0,l),
(242,760,ls),
(251,918,o),
(249,1203,o),
(250,1251,c),
(523,250,l),
(675,250,l),
(930,1251,l),
(932,1203,o),
(937,940,o),
(949,757,cs),
(1000,0,l),
(1131,0,l),
(1053,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 77;
},
{
glyphname = N;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (619,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1096,0,l),
(1096,1374,l),
(817,1374,l),
(817,851,ls),
(817,604,o),
(845,403,o),
(867,277,c),
(513,1374,l),
(104,1374,l),
(104,0,l),
(383,0,l),
(383,515,ls),
(383,757,o),
(351,985,o),
(333,1104,c),
(698,0,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (591,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1014,0,l),
(1014,1374,l),
(888,1374,l),
(888,638,ls),
(888,391,o),
(907,163,o),
(903,127,c),
(369,1374,l),
(186,1374,l),
(186,0,l),
(312,0,l),
(312,740,ls),
(312,944,o),
(294,1197,o),
(297,1239,c),
(817,0,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 78;
},
{
glyphname = Nacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = N;
},
{
pos = (9,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = N;
},
{
pos = (1,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 323;
},
{
glyphname = Ncaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = N;
},
{
pos = (19,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = N;
},
{
pos = (-9,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 327;
},
{
glyphname = Ncommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = N;
},
{
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = N;
},
{
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 325;
},
{
glyphname = Ntilde;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = N;
},
{
pos = (9,-12);
ref = tilde.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = N;
},
{
pos = (-5,0);
ref = tilde.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 209;
},
{
glyphname = Eng;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
alignment = -1;
ref = N;
},
{
alignment = -1;
pos = (306,-2);
ref = hookHELPER.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
alignment = -1;
ref = N;
},
{
alignment = -1;
pos = (512,-2);
ref = hookHELPER.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 330;
},
{
glyphname = O;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (189,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1155,1133,o),
(963,1409,o),
(600,1409,cs),
(237,1409,o),
(45,1123,o),
(45,688,cs),
(45,242,o),
(237,-34,o),
(600,-34,cs),
(963,-34,o),
(1155,252,o),
(1155,688,cs)
);
},
{
closed = 1;
nodes = (
(819,355,o),
(760,206,o),
(600,206,cs),
(446,206,o),
(381,351,o),
(381,688,cs),
(381,1025,o),
(444,1170,o),
(600,1170,cs),
(756,1170,o),
(819,1025,o),
(819,688,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (217,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1093,1104,o),
(927,1393,o),
(600,1393,cs),
(273,1393,o),
(107,1094,o),
(107,682,cs),
(107,264,o),
(273,-20,o),
(600,-20,cs),
(927,-20,o),
(1093,274,o),
(1093,685,cs)
);
},
{
closed = 1;
nodes = (
(957,309,o),
(853,98,o),
(600,98,cs),
(353,98,o),
(243,308,o),
(243,682,cs),
(243,1057,o),
(345,1275,o),
(600,1275,cs),
(855,1275,o),
(957,1060,o),
(957,685,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 79;
},
{
glyphname = Oacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 211;
},
{
glyphname = Obreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (0,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (-3,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 334;
},
{
glyphname = Ocircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 212;
},
{
glyphname = Odieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (4,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 214;
},
{
glyphname = Ograve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (4,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 210;
},
{
glyphname = Ohungarumlaut;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (78,-12);
ref = hungarumlaut.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (95,0);
ref = hungarumlaut.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 336;
},
{
glyphname = Omacron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (-10,-12);
ref = macron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (4,0);
ref = macron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 332;
},
{
glyphname = Oslash;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(237,1409,o),
(45,1123,o),
(45,688,cs),
(45,242,o),
(256,-34,o),
(600,-34,cs),
(963,-34,o),
(1155,252,o),
(1155,688,cs),
(1155,1133,o),
(944,1409,o),
(600,1409,cs)
);
},
{
closed = 1;
nodes = (
(695,1374,l),
(681,1224,l),
(413,324,l),
(303,125,l),
(217,-151,l),
(439,-216,l),
(505,8,l),
(539,203,l),
(797,1076,l),
(907,1289,l),
(983,1527,l),
(761,1592,l)
);
},
{
closed = 1;
nodes = (
(768,1177,o),
(831,1032,o),
(831,688,cs),
(831,349,o),
(768,200,o),
(600,200,cs),
(434,200,o),
(369,345,o),
(369,688,cs),
(369,1031,o),
(436,1177,o),
(600,1177,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(273,1393,o),
(107,1094,o),
(107,682,cs),
(107,264,o),
(270,-20,o),
(600,-20,cs),
(927,-20,o),
(1093,274,o),
(1093,685,cs),
(1093,1104,o),
(930,1393,o),
(600,1393,cs)
);
},
{
closed = 1;
nodes = (
(737,1374,l),
(712,1277,l),
(379,120,l),
(348,54,l),
(271,-189,l),
(400,-221,l),
(471,11,l),
(479,73,l),
(822,1263,l),
(853,1317,l),
(932,1575,l),
(803,1606,l)
);
},
{
closed = 1;
nodes = (
(850,1272,o),
(952,1115,o),
(952,685,cs),
(952,312,o),
(850,101,o),
(600,101,cs),
(358,101,o),
(248,253,o),
(248,682,cs),
(248,1054,o),
(349,1272,o),
(600,1272,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 216;
},
{
glyphname = Oslashacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Oslash;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Oslash;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 510;
},
{
glyphname = Otilde;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = O;
},
{
pos = (-10,-12);
ref = tilde.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = O;
},
{
pos = (4,0);
ref = tilde.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 213;
},
{
glyphname = OE;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(144,1409,o),
(19,1138,o),
(19,688,cs),
(19,228,o),
(144,-34,o),
(449,-34,cs),
(523,-34,o),
(574,-18,o),
(632,0,c),
(1193,0,l),
(1193,222,l),
(786,222,l),
(835,311,o),
(867,432,o),
(875,585,c),
(1117,585,l),
(1117,807,l),
(873,807,l),
(865,954,o),
(838,1070,o),
(796,1153,c),
(1159,1153,l),
(1193,1374,l),
(640,1374,l),
(574,1396,o),
(523,1409,o),
(449,1409,cs)
);
},
{
closed = 1;
nodes = (
(573,1187,o),
(608,1059,o),
(608,688,cs),
(608,328,o),
(567,188,o),
(451,188,cs),
(340,188,o),
(299,328,o),
(299,688,cs),
(299,1050,o),
(332,1187,o),
(451,1187,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(138,1393,o),
(-9,1145,o),
(-9,682,cs),
(-9,213,o),
(135,-20,o),
(415,-20,cs),
(458,-20,o),
(498,-12,o),
(539,0,c),
(1247,0,l),
(1247,117,l),
(676,117,l),
(767,213,o),
(822,378,o),
(827,639,c),
(1153,639,l),
(1153,756,l),
(828,756,l),
(817,1008,o),
(765,1167,o),
(683,1257,c),
(1207,1257,l),
(1224,1374,l),
(544,1374,l),
(501,1388,o),
(458,1393,o),
(415,1393,cs)
);
},
{
closed = 1;
nodes = (
(601,1274,o),
(684,1103,o),
(684,685,cs),
(684,264,o),
(598,98,o),
(415,98,cs),
(244,98,o),
(149,261,o),
(149,682,cs),
(149,1104,o),
(239,1274,o),
(415,1274,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 338;
},
{
glyphname = P;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (105,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(815,766,o),
(728,694,o),
(582,694,cs),
(453,694,l),
(453,1140,l),
(565,1140,ls),
(732,1140,o),
(815,1071,o),
(815,926,cs)
);
},
{
closed = 1;
nodes = (
(1153,1227,o),
(937,1374,o),
(561,1374,cs),
(125,1374,l),
(125,0,l),
(453,0,l),
(453,456,l),
(603,456,ls),
(930,456,o),
(1153,607,o),
(1153,927,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (243,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(962,700,o),
(807,637,o),
(602,637,cs),
(391,637,l),
(391,1265,l),
(616,1265,ls),
(808,1265,o),
(962,1190,o),
(962,957,cs)
);
},
{
closed = 1;
nodes = (
(1102,1244,o),
(903,1374,o),
(589,1374,cs),
(263,1374,l),
(263,0,l),
(391,0,l),
(391,526,l),
(575,526,ls),
(880,526,o),
(1102,638,o),
(1102,960,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 80;
},
{
glyphname = Thorn;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(119,1374,l),
(119,0,l),
(448,0,l),
(448,231,l),
(602,231,ls),
(945,231,o),
(1153,379,o),
(1153,702,cs),
(1153,1005,o),
(934,1152,o),
(559,1152,cs),
(448,1152,l),
(448,1374,l)
);
},
{
closed = 1;
nodes = (
(726,919,o),
(811,854,o),
(811,700,cs),
(811,529,o),
(724,467,o),
(581,467,cs),
(448,467,l),
(448,919,l),
(567,919,ls)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(243,1374,l),
(243,0,l),
(369,0,l),
(369,264,l),
(579,264,ls),
(877,264,o),
(1099,391,o),
(1099,711,cs),
(1099,1005,o),
(911,1139,o),
(593,1139,cs),
(369,1139,l),
(369,1374,l)
);
},
{
closed = 1;
nodes = (
(819,1030,o),
(964,938,o),
(964,706,cs),
(964,445,o),
(817,374,o),
(615,374,cs),
(369,374,l),
(369,1030,l),
(618,1030,ls)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 222;
},
{
glyphname = Q;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1149,1133,o),
(969,1409,o),
(606,1409,cs),
(243,1409,o),
(65,1123,o),
(65,688,cs),
(65,242,o),
(233,-28,o),
(580,-28,cs),
(822,-28,o),
(912,-137,o),
(1000,-343,c),
(1268,-252,l),
(1192,-30,o),
(1074,43,o),
(857,79,c),
(1077,190,o),
(1149,418,o),
(1149,688,cs)
);
},
{
closed = 1;
nodes = (
(807,355,o),
(766,206,o),
(606,206,cs),
(452,206,o),
(404,353,o),
(404,688,cs),
(404,1021,o),
(450,1168,o),
(606,1168,cs),
(764,1168,o),
(807,1023,o),
(807,688,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1095,1104,o),
(924,1393,o),
(597,1393,cs),
(271,1393,o),
(99,1094,o),
(99,682,cs),
(99,264,o),
(272,-16,o),
(580,-16,cs),
(816,-16,o),
(921,-132,o),
(1003,-346,c),
(1160,-280,l),
(1096,-85,o),
(998,7,o),
(812,45,c),
(1020,163,o),
(1095,387,o),
(1095,685,cs)
);
},
{
closed = 1;
nodes = (
(963,309,o),
(850,98,o),
(597,98,cs),
(350,98,o),
(232,307,o),
(232,682,cs),
(232,1059,o),
(342,1276,o),
(597,1276,cs),
(851,1276,o),
(963,1061,o),
(963,685,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 81;
},
{
glyphname = R;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (619,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1123,1241,o),
(929,1374,o),
(552,1374,cs),
(116,1374,l),
(116,0,l),
(444,0,l),
(444,524,l),
(537,524,l),
(837,0,l),
(1208,0,l),
(845,579,l),
(1000,640,o),
(1123,759,o),
(1123,956,cs)
);
},
{
closed = 1;
nodes = (
(785,811,o),
(707,749,o),
(566,749,cs),
(444,749,l),
(444,1144,l),
(553,1144,ls),
(706,1144,o),
(785,1087,o),
(785,956,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (591,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1061,1243,o),
(887,1374,o),
(558,1374,cs),
(229,1374,l),
(229,0,l),
(357,0,l),
(357,609,l),
(571,609,l),
(969,0,l),
(1129,0,l),
(707,619,l),
(907,660,o),
(1061,789,o),
(1061,999,cs)
);
},
{
closed = 1;
nodes = (
(920,795,o),
(795,719,o),
(580,719,cs),
(357,719,l),
(357,1264,l),
(584,1264,ls),
(814,1264,o),
(920,1188,o),
(920,999,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 82;
},
{
glyphname = Racute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = R;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = R;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 340;
},
{
glyphname = Rcaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = R;
},
{
pos = (0,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = R;
},
{
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 344;
},
{
glyphname = Rcommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = R;
},
{
pos = (19,0);
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = R;
},
{
pos = (-9,0);
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 342;
},
{
glyphname = S;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (620,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1136,655,o),
(981,765,o),
(718,846,cs),
(498,914,o),
(435,947,o),
(435,1035,cs),
(435,1122,o),
(518,1168,o),
(643,1168,cs),
(756,1168,o),
(866,1130,o),
(959,1054,c),
(1114,1231,l),
(995,1344,o),
(831,1409,o),
(617,1409,cs),
(330,1409,o),
(95,1262,o),
(95,1010,cs),
(95,800,o),
(218,679,o),
(546,579,cs),
(736,521,o),
(795,476,o),
(795,377,cs),
(795,271,o),
(701,210,o),
(564,210,cs),
(415,210,o),
(291,260,o),
(190,348,c),
(24,165,l),
(140,52,o),
(309,-34,o),
(572,-34,cs),
(925,-34,o),
(1136,145,o),
(1136,402,cs)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (591,0);
},
{
name = top;
pos = (608,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1054,640,o),
(857,723,o),
(657,779,cs),
(382,859,o),
(291,924,o),
(291,1053,cs),
(291,1204,o),
(428,1276,o),
(586,1276,cs),
(704,1276,o),
(823,1238,o),
(923,1148,c),
(1009,1242,l),
(895,1339,o),
(769,1393,o),
(586,1393,cs),
(330,1393,o),
(163,1245,o),
(163,1053,cs),
(163,831,o),
(349,739,o),
(605,665,cs),
(855,592,o),
(922,520,o),
(922,377,cs),
(922,185,o),
(752,97,o),
(576,97,cs),
(402,97,o),
(283,155,o),
(190,245,c),
(106,149,l),
(222,38,o),
(386,-20,o),
(569,-20,cs),
(880,-20,o),
(1054,143,o),
(1054,374,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 83;
},
{
glyphname = Sacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = S;
},
{
pos = (10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = S;
},
{
pos = (18,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 346;
},
{
glyphname = Scaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = S;
},
{
pos = (20,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = S;
},
{
pos = (8,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 352;
},
{
glyphname = Scedilla;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = S;
},
{
ref = cedilla.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = S;
},
{
pos = (-9,0);
ref = cedilla.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 350;
},
{
glyphname = Scircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = S;
},
{
pos = (20,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = S;
},
{
pos = (8,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 348;
},
{
glyphname = Scommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = S;
},
{
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = S;
},
{
pos = (-9,0);
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 536;
},
{
color = 3;
glyphname = Germandbls;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(325,1403,o),
(171,1255,o),
(171,995,cs),
(171,11,l),
(291,11,l),
(291,991,ls),
(291,1205,o),
(401,1301,o),
(591,1301,cs),
(727,1301,o),
(839,1263,o),
(943,1215,c),
(559,795,l),
(559,697,l),
(861,681,o),
(1015,591,o),
(1015,383,cs),
(1015,191,o),
(903,91,o),
(719,91,cs),
(637,91,o),
(583,105,o),
(535,123,c),
(495,35,l),
(549,7,o),
(627,-11,o),
(725,-11,cs),
(977,-11,o),
(1141,137,o),
(1141,383,cs),
(1141,617,o),
(983,749,o),
(677,781,c),
(1055,1185,l),
(1055,1267,l),
(917,1345,o),
(763,1403,o),
(589,1403,cs)
);
}
);
width = 1200;
},
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(231,1425,o),
(65,1256,o),
(65,978,cs),
(65,17,l),
(393,17,l),
(393,986,ls),
(393,1124,o),
(451,1185,o),
(573,1185,cs),
(667,1185,o),
(748,1167,o),
(825,1140,c),
(549,812,l),
(549,639,l),
(779,623,o),
(879,552,o),
(879,412,cs),
(879,282,o),
(801,229,o),
(697,229,cs),
(643,229,o),
(605,239,o),
(573,253,c),
(477,37,l),
(539,5,o),
(629,-17,o),
(739,-17,cs),
(1003,-17,o),
(1221,126,o),
(1221,406,cs),
(1221,649,o),
(1064,760,o),
(833,796,c),
(1127,1135,l),
(1127,1284,l),
(964,1361,o),
(791,1425,o),
(553,1425,cs)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 7838;
},
{
glyphname = T;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (598,0);
},
{
name = bottomright;
pos = (782,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (598,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1133,1123,l),
(1167,1374,l),
(45,1374,l),
(45,1123,l),
(434,1123,l),
(434,0,l),
(762,0,l),
(762,1123,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (598,0);
},
{
name = bottomright;
pos = (680,0);
},
{
name = center;
pos = (600,688);
},
{
name = top;
pos = (598,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1091,1256,l),
(1105,1374,l),
(90,1374,l),
(90,1256,l),
(533,1256,l),
(533,0,l),
(660,0,l),
(660,1256,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 84;
},
{
glyphname = Tbar;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(997,621,l),
(997,806,l),
(201,806,l),
(201,621,l)
);
},
{
alignment = -1;
ref = T;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(932,721,l),
(932,841,l),
(263,841,l),
(263,721,l)
);
},
{
alignment = -1;
ref = T;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 358;
},
{
glyphname = Tcaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = T;
},
{
pos = (-2,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = T;
},
{
pos = (-2,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 356;
},
{
glyphname = Tcedilla;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = T;
},
{
alignment = -1;
pos = (34,0);
ref = cedilla.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = T;
},
{
alignment = -1;
pos = (11,0);
ref = cedilla.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 354;
},
{
glyphname = Tcommaaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = T;
},
{
pos = (-2,0);
ref = commaaccent.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = T;
},
{
pos = (-2,0);
ref = commaaccent.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 538;
},
{
glyphname = U;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = ogonek;
pos = (830,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(787,1374,l),
(787,584,ls),
(787,336,o),
(759,210,o),
(600,210,cs),
(441,210,o),
(413,336,o),
(413,584,cs),
(413,1374,l),
(84,1374,l),
(84,460,ls),
(84,167,o),
(254,-34,o),
(600,-34,cs),
(944,-34,o),
(1116,179,o),
(1116,460,cs),
(1116,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = ogonek;
pos = (754,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(908,1374,l),
(908,397,ls),
(908,199,o),
(784,102,o),
(597,102,cs),
(413,102,o),
(289,199,o),
(289,397,cs),
(289,1374,l),
(163,1374,l),
(163,441,ls),
(163,168,o),
(333,-20,o),
(597,-20,cs),
(857,-20,o),
(1037,163,o),
(1037,441,cs),
(1037,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 85;
},
{
glyphname = Uacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 218;
},
{
glyphname = Ubreve;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (0,-12);
ref = breve.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (-3,0);
ref = breve.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 364;
},
{
glyphname = Ucircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 219;
},
{
glyphname = Udieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (4,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 220;
},
{
glyphname = Ugrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (4,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 217;
},
{
glyphname = Uhungarumlaut;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (78,-12);
ref = hungarumlaut.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (95,0);
ref = hungarumlaut.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 368;
},
{
glyphname = Umacron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = macron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (4,0);
ref = macron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 362;
},
{
glyphname = Uogonek;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (20,0);
ref = ogonek;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (-73,0);
ref = ogonek;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 370;
},
{
glyphname = Uring;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = ring.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (4,0);
ref = ring.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 366;
},
{
glyphname = Utilde;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = U;
},
{
pos = (-10,-12);
ref = tilde.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = U;
},
{
pos = (4,0);
ref = tilde.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 360;
},
{
glyphname = V;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(347,1374,l),
(-1,1374,l),
(397,0,l),
(803,0,l),
(1203,1374,l),
(867,1374,l),
(606,255,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(203,1374,l),
(64,1374,l),
(544,0,l),
(656,0,l),
(1135,1374,l),
(1008,1374,l),
(603,180,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 86;
},
{
glyphname = W;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(921,1374,l),
(852,279,l),
(745,1216,l),
(463,1216,l),
(348,279,l),
(301,1374,l),
(-6,1374,l),
(144,0,l),
(491,0,l),
(602,982,l),
(703,0,l),
(1044,0,l),
(1206,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1062,1374,l),
(869,164,l),
(697,1214,l),
(505,1214,l),
(325,164,l),
(148,1374,l),
(14,1374,l),
(220,0,l),
(420,0,l),
(593,1053,l),
(768,0,l),
(962,0,l),
(1186,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 87;
},
{
glyphname = Wacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = W;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = W;
},
{
pos = (10,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 7810;
},
{
glyphname = Wcircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = W;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = W;
},
{
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 372;
},
{
glyphname = Wdieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = W;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = W;
},
{
pos = (4,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 7812;
},
{
glyphname = Wgrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = W;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = W;
},
{
pos = (4,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 7808;
},
{
glyphname = X;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1118,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(401,730,l),
(7,0,l),
(355,0,l),
(596,523,l),
(841,0,l),
(1194,0,l),
(792,744,l),
(1160,1374,l),
(814,1374,l),
(600,935,l),
(391,1374,l),
(38,1374,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = bottomright;
pos = (1025,0);
},
{
name = top;
pos = (600,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(522,733,l),
(78,0,l),
(217,0,l),
(596,650,l),
(968,0,l),
(1121,0,l),
(673,741,l),
(1070,1374,l),
(930,1374,l),
(600,820,l),
(270,1374,l),
(117,1374,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 88;
},
{
glyphname = Y;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (600,1374);
},
{
name = topleft;
pos = (-16,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1216,1374,l),
(871,1374,l),
(606,784,l),
(343,1374,l),
(-16,1374,l),
(436,513,l),
(436,0,l),
(764,0,l),
(764,515,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (609,1374);
},
{
name = topleft;
pos = (66,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1134,1374,l),
(1003,1374,l),
(603,657,l),
(208,1374,l),
(66,1374,l),
(535,532,l),
(535,0,l),
(665,0,l),
(665,534,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 89;
},
{
glyphname = Yacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Y;
},
{
pos = (-10,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Y;
},
{
pos = (19,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 221;
},
{
glyphname = Ycircumflex;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Y;
},
{
pos = (0,-12);
ref = circumflex.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Y;
},
{
pos = (9,0);
ref = circumflex.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 374;
},
{
glyphname = Ydieresis;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Y;
},
{
pos = (-10,-12);
ref = dieresis.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Y;
},
{
pos = (13,0);
ref = dieresis.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 376;
},
{
glyphname = Ygrave;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Y;
},
{
pos = (-10,-12);
ref = grave.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Y;
},
{
pos = (13,0);
ref = grave.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 7922;
},
{
glyphname = Z;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (626,1374);
}
);
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
closed = 1;
nodes = (
(1109,1127,l),
(1109,1374,l),
(150,1374,l),
(150,1121,l),
(736,1121,l),
(78,245,l),
(78,0,l),
(1090,0,l),
(1124,261,l),
(464,261,l)
);
}
);
width = 1200;
},
{
anchors = (
{
name = bottom;
pos = (600,0);
},
{
name = top;
pos = (640,1374);
}
);
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
closed = 1;
nodes = (
(1041,1263,l),
(1041,1374,l),
(234,1374,l),
(234,1257,l),
(911,1257,l),
(162,110,l),
(162,0,l),
(1017,0,l),
(1034,117,l),
(295,117,l)
);
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 90;
},
{
glyphname = Zacute;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Z;
},
{
pos = (16,-12);
ref = acute.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Z;
},
{
pos = (50,0);
ref = acute.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 377;
},
{
glyphname = Zcaron;
lastChange = "2025-02-08 14:44:40 +0000";
layers = (
{
layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA";
shapes = (
{
ref = Z;
},
{
pos = (26,-12);
ref = caron.case;
}
);
width = 1200;
},
{
layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69";
shapes = (
{
ref = Z;
},
{
pos = (40,0);
ref = caron.case;
}
);
width = 1200;
}
);
tags = (
upper
);
unicode = 381;
},
{
glyphname = Zdotaccent;
lastChange = "2025-02-08 14:44:40 +0000";
layers
gitextract_wvu_xg61/
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── AUTHORS
├── CHANGELOG.md
├── Dockerfile
├── FiraCode.glyphs
├── LEEME.md
├── LEIAME.md
├── LICENSE
├── Makefile
├── README.md
├── README_CN.md
├── README_JA.md
├── classes/
│ ├── ClosingBracket.fea
│ ├── Digit.fea
│ ├── DigitTosf.fea
│ ├── HexDigit.fea
│ ├── OpeningBracket.fea
│ └── Tall.fea
├── clojure/
│ ├── fira_code/
│ │ ├── calt.clj
│ │ ├── checks.clj
│ │ ├── classes.clj
│ │ ├── coll.clj
│ │ ├── features.clj
│ │ ├── files.clj
│ │ ├── glyphs.clj
│ │ ├── main.clj
│ │ ├── not_space.clj
│ │ ├── spacers.clj
│ │ └── time.clj
│ └── user.clj
├── deps.edn
├── distr/
│ ├── README.txt
│ ├── fira_code.css
│ └── specimen.html
├── docs/
│ └── calt_performance.md
├── extras/
│ └── showcases.txt
├── features/
│ ├── calt/
│ │ ├── center.fea
│ │ ├── conj_disj.fea
│ │ ├── cross.fea
│ │ ├── dashes.fea
│ │ ├── equal_arrows.fea
│ │ ├── fi_fl.fea
│ │ ├── greek.fea
│ │ ├── hyphen_arrows.fea
│ │ ├── match_case.fea
│ │ ├── numbersigns.fea
│ │ └── underscores.fea
│ ├── cv01.fea
│ ├── cv02.fea
│ ├── cv03.fea
│ ├── cv04.fea
│ ├── cv05.fea
│ ├── cv06.fea
│ ├── cv07.fea
│ ├── cv08.fea
│ ├── cv09.fea
│ ├── cv10.fea
│ ├── cv11.fea
│ ├── cv12.fea
│ ├── cv13.fea
│ ├── cv14.fea
│ ├── cv15.fea
│ ├── cv16.fea
│ ├── cv17.fea
│ ├── cv18.fea
│ ├── cv19.fea
│ ├── cv20.fea
│ ├── cv21.fea
│ ├── cv22.fea
│ ├── cv23.fea
│ ├── cv24.fea
│ ├── cv25.fea
│ ├── cv26.fea
│ ├── cv27.fea
│ ├── cv28.fea
│ ├── cv29.fea
│ ├── cv30.fea
│ ├── cv31.fea
│ ├── cv32.fea
│ ├── onum.fea
│ ├── ss01.fea
│ ├── ss02.fea
│ ├── ss03.fea
│ ├── ss04.fea
│ ├── ss05.fea
│ ├── ss06.fea
│ ├── ss07.fea
│ ├── ss08.fea
│ ├── ss09.fea
│ ├── ss10.fea
│ └── zero.fea
├── googlefonts-qa/
│ ├── METADATA.pb
│ ├── README.md
│ ├── checks/
│ │ ├── FiraCode-Light.checks.md
│ │ └── static/
│ │ ├── FiraCode-Bold.checks.md
│ │ ├── FiraCode-Light.checks.md
│ │ ├── FiraCode-Medium.checks.md
│ │ ├── FiraCode-Regular.checks.md
│ │ └── FiraCode-Retina.checks.md
│ ├── gfonts-description.html
│ ├── notes/
│ │ ├── QA-notes.md
│ │ └── outline-checks.md
│ └── scripts/
│ ├── get-version.py
│ ├── move-check.sh
│ ├── requirements.txt
│ └── set-vertical-metrics.py
├── package.json
├── requirements.txt
└── script/
├── bake_in_features.sh
├── bootstrap_linux.sh
├── bootstrap_macos.sh
├── build.sh
├── build_docker.sh
├── build_otf.sh
├── build_ttf.sh
├── build_variable.sh
├── build_woff.sh
├── build_woff2.sh
├── check
├── check_widths
├── clean.sh
├── common.py
├── everything
├── package.sh
├── progress.clj
├── release.py
├── repl.sh
├── update_glyphs.sh
└── update_version.py
SYMBOL INDEX (10 symbols across 3 files) FILE: script/common.py function version (line 6) | def version(): FILE: script/release.py function log_errors (line 4) | def log_errors(name): function package (line 14) | def package(version): function github_headers (line 24) | def github_headers(): function github_release (line 37) | def github_release(version): function npm_publish (line 62) | def npm_publish(version): function update_homebrew (line 66) | def update_homebrew(version): function update_scoop (line 70) | def update_scoop(version): function update_google_fonts (line 74) | def update_google_fonts(version): FILE: script/update_version.py function update_version (line 4) | def update_version(major, minor, src):
Condensed preview — 130 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,497K chars).
[
{
"path": ".github/workflows/build.yml",
"chars": 891,
"preview": "on:\n push:\n branches:\n - '*'\n tags:\n - '[0-9]+.[0-9]+'\n paths:\n - '.github/workflows/**'\n "
},
{
"path": ".gitignore",
"chars": 174,
"preview": "*.zip\ntarget\nclojure/*.edn\n.cpcache\n.repl-port\nmaster_ufo\ninstance_ufo\nvenv\n.DS_Store\n*.numbers\n\ndistr/*/\n\n*.glyphs\n!Fir"
},
{
"path": "AUTHORS",
"chars": 374,
"preview": "# This is the official list of project authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS.txt"
},
{
"path": "CHANGELOG.md",
"chars": 15634,
"preview": "### Changelog\n\nAll notable changes to this project will be documented in this file.\n\n### 7.0\n\n- Fixed overlap in U+2573 "
},
{
"path": "Dockerfile",
"chars": 122,
"preview": "FROM python:3\n\nWORKDIR /opt\n\nCOPY requirements.txt .\nCOPY script/bootstrap_linux.sh script/\nRUN script/bootstrap_linux.s"
},
{
"path": "FiraCode.glyphs",
"chars": 1676836,
"preview": "{\n.appVersion = \"3436\";\n.formatVersion = 3;\nDisplayStrings = (\n\"↰↱↲↳↴↵\"\n);\naxes = (\n{\nname = Weight;\ntag = wght;\n}\n);\ncl"
},
{
"path": "LEEME.md",
"chars": 11084,
"preview": "## Fira Code: la fuente monoespaciada con ligaduras gratuita para programación\n\n\n\nLeer en"
},
{
"path": "LEIAME.md",
"chars": 12619,
"preview": "## Fira Code: uma fonte monoespaçada gratuita com ligaduras de programação\n\n\nLeia em: [En"
},
{
"path": "LICENSE",
"chars": 4389,
"preview": "Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode)\n\nThis Font Software is licensed u"
},
{
"path": "Makefile",
"chars": 123,
"preview": "all: build\n\nbuild:\n\tdocker run --rm -v ${PWD}:/opt tonsky/firacode:latest ./script/build.sh\n\npackage:\n\t./script/package."
},
{
"path": "README.md",
"chars": 12022,
"preview": "## Fira Code: free monospaced font with programming ligatures\n\n\n\nRead in [Español](./LEEM"
},
{
"path": "README_CN.md",
"chars": 9101,
"preview": "## Fira Code: 免费的编程连字等宽字体\n\n\n\n### 问题\n\n开发者们使用的多标记,通常都是用几个字符编码。对于人的大脑来说,像`->`、`<=`或`:=`这样的序列"
},
{
"path": "README_JA.md",
"chars": 10167,
"preview": "## Fira Code: プログラミング合字のフリー等幅フォント\n\n\n\n[English](./README.md) | [Español](./LEEME.md) | [简体"
},
{
"path": "classes/ClosingBracket.fea",
"chars": 34,
"preview": "bracketright braceright parenright"
},
{
"path": "classes/Digit.fea",
"chars": 81,
"preview": "zero\nzero.zero\none\ntwo\ntwoTurned\nthreeTurned\nthree\nfour\nfive\nsix\nseven\neight\nnine"
},
{
"path": "classes/DigitTosf.fea",
"chars": 129,
"preview": "zero.tosf\nzero.tosf.zero\nzero.zero.tosf\none.tosf\ntwo.tosf\nthree.tosf\nfour.tosf\nfive.tosf\nsix.tosf\nseven.tosf\neight.tosf\n"
},
{
"path": "classes/HexDigit.fea",
"chars": 23,
"preview": "a b c d e f A B C D E F"
},
{
"path": "classes/OpeningBracket.fea",
"chars": 31,
"preview": "bracketleft braceleft parenleft"
},
{
"path": "classes/Tall.fea",
"chars": 118,
"preview": "@Uppercase zero one two twoTurned threeTurned three four five six seven eight nine @OpeningBracket @ClosingBracket bar"
},
{
"path": "clojure/fira_code/calt.clj",
"chars": 10992,
"preview": "(ns fira-code.calt\n (:require\n [clojure.string :as str]\n [fira-code.coll :as coll]\n [fira-code.glyphs :as glyphs]"
},
{
"path": "clojure/fira_code/checks.clj",
"chars": 688,
"preview": "(ns fira-code.checks\n (:require\n [clojure.string :as str]\n [fira-code.coll :as coll]\n [fira-code.glyphs :as glyph"
},
{
"path": "clojure/fira_code/classes.clj",
"chars": 521,
"preview": "(ns fira-code.classes\n (:require\n [clojure.java.io :as io]\n [clojure.string :as str]\n [fira-code.glyphs :as glyph"
},
{
"path": "clojure/fira_code/coll.clj",
"chars": 464,
"preview": "(ns fira-code.coll)\n\n(defn index-of [pred xs]\n (let [res (reduce (fn [i x] (if (pred x) (reduced i) (inc i))) 0 xs)]\n "
},
{
"path": "clojure/fira_code/features.clj",
"chars": 1400,
"preview": "(ns fira-code.features\n (:require\n [clojure.java.io :as io]\n [clojure.string :as str]\n [fira-code.glyphs :as glyp"
},
{
"path": "clojure/fira_code/files.clj",
"chars": 324,
"preview": "(ns fira-code.files\n (:refer-clojure :exclude [find])\n (:require\n [clojure.java.io :as io]\n [clojure.string :as st"
},
{
"path": "clojure/fira_code/glyphs.clj",
"chars": 6800,
"preview": "(ns fira-code.glyphs\n (:refer-clojure :exclude [load])\n (:require\n [clojure.java.io :as io]\n [clojure.string :as"
},
{
"path": "clojure/fira_code/main.clj",
"chars": 1195,
"preview": "(ns fira-code.main\n (:require\n [clojure.string :as str]\n [fira-code.calt :as calt]\n [fira-code.coll :as coll]\n "
},
{
"path": "clojure/fira_code/not_space.clj",
"chars": 530,
"preview": "(ns fira-code.not-space\n (:require\n [clojure.string :as str]\n [fira-code.glyphs :as glyphs]))\n\n(defn regen-not-spac"
},
{
"path": "clojure/fira_code/spacers.clj",
"chars": 934,
"preview": "(ns fira-code.spacers\n (:require\n [clojure.string :as str]\n [fira-code.glyphs :as glyphs]\n [fira-code.time :as ti"
},
{
"path": "clojure/fira_code/time.clj",
"chars": 268,
"preview": "(ns fira-code.time\n (:import\n [java.time LocalDateTime ZoneId]\n [java.time.format DateTimeFormatter]))\n\n(def ^ZoneI"
},
{
"path": "clojure/user.clj",
"chars": 304,
"preview": "(ns user\n (:require\n [clj-reload.core :as clj-reload]\n [clojure+.hashp :as hashp]\n [clojure+.print :as print]\n "
},
{
"path": "deps.edn",
"chars": 501,
"preview": "{:paths [\"clojure\"]\n :deps {org.clojure/clojure {:mvn/version \"1.12.4\"}\n io.github.tonsky/clojure-plus "
},
{
"path": "distr/README.txt",
"chars": 21722,
"preview": "Installing\n==========\n\nWindows\n-------\n\nIn the ttf folder, double-click each font file, click “Install font”; to install"
},
{
"path": "distr/fira_code.css",
"chars": 1366,
"preview": "@font-face {\n font-family: 'Fira Code';\n src: url('woff2/FiraCode-Light.woff2') format('woff2'),\n url('woff/FiraCod"
},
{
"path": "distr/specimen.html",
"chars": 3188,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width,ini"
},
{
"path": "docs/calt_performance.md",
"chars": 1113,
"preview": "# Time to shape text with different calt code\n\nBaseline:\n\n```\nsub 1 2 3 4 by 1_2_3_4.liga;\n```\n\nSpacers:\n\n```\nsub 1.spac"
},
{
"path": "extras/showcases.txt",
"chars": 10920,
"preview": " .= ..= := ::= =:= __\n == != === !== =/= =!=\n\n<-< <<- <-- <- <-> -> --> ->> >->\n<=< <== <<->> <=> => ==> =>> >="
},
{
"path": "features/calt/center.fea",
"chars": 660,
"preview": "### Vertical-align colon/greater/less\n\n# :> :< >: <:\n# :>: :<:\n# <:> >:< <:< >:>\n# <::> <::< >::< >::>\n# <:::> <:::< >::"
},
{
"path": "features/calt/conj_disj.fea",
"chars": 489,
"preview": "### Logical conjunction/disjunction #738\n\nlookup slash_backslash {\n ignore sub @NotSpace slash' backslash;\n ignore sub"
},
{
"path": "features/calt/cross.fea",
"chars": 309,
"preview": "lookup hexadecimal_x {\n ### 0xFF\n sub [zero zero.zero] x' [@Digit @HexDigit] by x.multiply;\n sub [zero.tosf zero.zero"
},
{
"path": "features/calt/dashes.fea",
"chars": 136,
"preview": "### Long dashes\n\nsub twoemdash by hyphen_start.seq hyphen_end.seq;\nsub threeemdash by hyphen_start.seq hyphen_middle.seq"
},
{
"path": "features/calt/equal_arrows.fea",
"chars": 4756,
"preview": "lookup equal_arrows {\n # Disable |||\n ignore sub bar bar' bar equal;\n ignore sub bar bar' equal;\n ignore sub [equal_"
},
{
"path": "features/calt/fi_fl.fea",
"chars": 122,
"preview": "### fi/fl #795\n\nsub [f i.salt_low j.salt_low] [i j]' by [i.salt_low j.salt_low];\nsub [F T I l.salt_low] l' by l.salt_low"
},
{
"path": "features/calt/greek.fea",
"chars": 385,
"preview": "### Greek\n\nlookup caltGreekUCdiph {\n sub @GreekUCdiphIOTA Iota' by Iotadieresis;\n sub @GreekUCdiphUPSILON Upsilon' by "
},
{
"path": "features/calt/hyphen_arrows.fea",
"chars": 3359,
"preview": "### Arbitrary-length arrows #346\n\nlookup hyphen_arrows {\n # Disable |||\n ignore sub bar bar' bar hyphen;\n ignore sub "
},
{
"path": "features/calt/match_case.fea",
"chars": 1214,
"preview": "### Lowercase/uppercase operators\n\n# Must go after hyphen_arrows.fea\n\nlookup lowercase_hyphen {\n ignore sub @Tall \\hyph"
},
{
"path": "features/calt/numbersigns.fea",
"chars": 321,
"preview": "lookup numbersigns {\n # middle parts\n sub [numbersign_start.seq numbersign_middle.seq] numbersign' numbersign by numbe"
},
{
"path": "features/calt/underscores.fea",
"chars": 767,
"preview": "lookup underscores {\n # ignore\n ignore sub [bracketleft comma] [underscore_start.seq underscore_middle.seq] bar' under"
},
{
"path": "features/cv01.fea",
"chars": 305,
"preview": "### Alternate lowercase a\n\nsub a by a.cv01;\nsub aacute by aacute.cv01;\nsub abreve by abreve.cv01;\nsub acircumflex by aci"
},
{
"path": "features/cv02.fea",
"chars": 186,
"preview": "### Single storey lowercase g\n\nsub g by g.cv02;\nsub gbreve by gbreve.cv02;\nsub gcircumflex by gcircumflex.cv02;\nsub gcom"
},
{
"path": "features/cv03.fea",
"chars": 371,
"preview": "### Lowercase I without any horizontal decorations\n\nsub i by i.cv03;\nsub idotless by idotless.cv03;\nsub iacute by iacute"
},
{
"path": "features/cv04.fea",
"chars": 373,
"preview": "### Lowercase I with horizontal left line at the top\n\nsub i by i.cv04;\nsub idotless by idotless.cv04;\nsub iacute by iacu"
},
{
"path": "features/cv05.fea",
"chars": 402,
"preview": "### Lowercase I with horizontal left line at the top and right line at the bottom\n\nsub i by i.cv05;\nsub idotless by idot"
},
{
"path": "features/cv06.fea",
"chars": 409,
"preview": "### Lowercase I with horizontal left line at the top and curved right hook at the bottom\n\nsub i by i.cv06;\nsub idotless "
},
{
"path": "features/cv07.fea",
"chars": 212,
"preview": "### Lowercase L without any horizontal decorations\n\nsub l by l.cv07;\nsub lacute by lacute.cv07;\nsub lcaron by lcaron.cv0"
},
{
"path": "features/cv08.fea",
"chars": 214,
"preview": "### Lowercase L with horizontal left line at the top\n\nsub l by l.cv08;\nsub lacute by lacute.cv08;\nsub lcaron by lcaron.c"
},
{
"path": "features/cv09.fea",
"chars": 243,
"preview": "### Lowercase L with horizontal left line at the top and right line at the bottom\n\nsub l by l.cv09;\nsub lacute by lacute"
},
{
"path": "features/cv10.fea",
"chars": 234,
"preview": "### Lowercase L with horizontal left line at the top and horizontal base\n\nsub l by l.cv10;\nsub lacute by lacute.cv10;\nsu"
},
{
"path": "features/cv11.fea",
"chars": 90,
"preview": "### Zero without anything inside\n\nsub zero by zero.cv11;\nsub zero.tosf by zero.tosf.cv11;\n"
},
{
"path": "features/cv12.fea",
"chars": 90,
"preview": "### Zero with a backslash inside\n\nsub zero by zero.cv12;\nsub zero.tosf by zero.tosf.cv12;\n"
},
{
"path": "features/cv13.fea",
"chars": 94,
"preview": "### Zero with a vertical line inside\n\nsub zero by zero.cv13;\nsub zero.tosf by zero.tosf.cv13;\n"
},
{
"path": "features/cv14.fea",
"chars": 256,
"preview": "### 3 with straight lines for the top half\n\nsub three by three.cv14;\nsub three.tosf by three.tosf.cv14;\nsub threeinferio"
},
{
"path": "features/cv15.fea",
"chars": 128,
"preview": "### Top-aligned asterisk\n\nsub [asterisk asterisk.lc] by asterisk.cv15;\nsub [asteriskmath asteriskmath.lc] by asteriskmat"
},
{
"path": "features/cv16.fea",
"chars": 575,
"preview": "### Hexagonal asterisk\n\nsub [asterisk asterisk.lc asterisk.cv15 asteriskmath asteriskmath.lc asteriskmath.cv15]\n by [ast"
},
{
"path": "features/cv17.fea",
"chars": 58,
"preview": "### Top-aligned tilde\n\nsub asciitilde by asciitilde.cv17;\n"
},
{
"path": "features/cv18.fea",
"chars": 175,
"preview": "### Percent sign with dots instead of hollow circles\n\nsub percent by percent.cv18;\nsub perthousand by perthousand.cv18;\n"
},
{
"path": "features/cv19.fea",
"chars": 82,
"preview": "### Less than + equal with horizontal bar\n\nsub less_equal.liga by less_equal.ss02;"
},
{
"path": "features/cv20.fea",
"chars": 200,
"preview": "### Less than + equal as an arrow\n\nlookup less_equal_cv20 {\n sub less_equal_start.seq less_equal.liga' by equal_end.seq"
},
{
"path": "features/cv21.fea",
"chars": 236,
"preview": "### Equal less than =< ligature\n\nlookup equal_less_cv21 {\n ignore sub equal equal' less;\n ignore sub equal' less [less"
},
{
"path": "features/cv22.fea",
"chars": 247,
"preview": "### Equal less than =< with horizontal bar\n\nlookup equal_less_cv22 {\n ignore sub equal equal' less;\n ignore sub equal'"
},
{
"path": "features/cv23.fea",
"chars": 94,
"preview": "### Greater than + equal >= with horizontal bar\n\nsub greater_equal.liga by greater_equal.ss02;"
},
{
"path": "features/cv24.fea",
"chars": 212,
"preview": "### Slash + equal /= as not equal\n\nlookup slash_equal_as_not_equal {\n sub slash.spacer equal_end.seq' by exclam_equal.l"
},
{
"path": "features/cv25.fea",
"chars": 240,
"preview": "### Period hyphen .- ligature\n\nlookup period_hyphen {\n ignore sub period period' hyphen;\n ignore sub period' hyphen hy"
},
{
"path": "features/cv26.fea",
"chars": 230,
"preview": "### Colon hyphen :- ligature\n\nlookup colon_hyphen {\n ignore sub colon colon' hyphen;\n ignore sub colon' hyphen hyphen;"
},
{
"path": "features/cv27.fea",
"chars": 241,
"preview": "### Bracket left bracket right [] ligature\n\nlookup bracketleft_bracketright {\n sub bracketleft.spacer bracketright' by "
},
{
"path": "features/cv28.fea",
"chars": 113,
"preview": "### Brace left/right period {. .} as ligature\n\nsub braceleft period' by bullet;\nsub period' braceright by bullet;"
},
{
"path": "features/cv29.fea",
"chars": 162,
"preview": "### Rounded curly braces {}\n\nsub braceleft by braceleft.cv29;\nsub braceright by braceright.cv29;\nsub numbersign_bracelef"
},
{
"path": "features/cv30.fea",
"chars": 884,
"preview": "### Longer pipe symbol\n\nsub bar by bar.cv30;\nsub bar_bar.liga by bar_bar.liga.cv30;\nsub bar_bar_bar.liga by bar_bar_bar."
},
{
"path": "features/cv31.fea",
"chars": 94,
"preview": "### Circular parentheses\n\nsub parenleft by parenleft.cv31;\nsub parenright by parenright.cv31;\n"
},
{
"path": "features/cv32.fea",
"chars": 234,
"preview": "### Period equal .= as ligature\n\nlookup period_equal {\n ignore sub period period' equal;\n ignore sub period' equal equ"
},
{
"path": "features/onum.fea",
"chars": 297,
"preview": "sub zero by zero.tosf;\nsub zero.zero by zero.zero.tosf;\nsub one by one.tosf;\nsub two by two.tosf;\nsub three by three.tos"
},
{
"path": "features/ss01.fea",
"chars": 44,
"preview": "### Sans serif lowercase r\n\nsub r by r.ss01;"
},
{
"path": "features/ss02.fea",
"chars": 133,
"preview": "### Less than/greater than with horizontal bar\n\nsub greater_equal.liga by greater_equal.ss02;\nsub less_equal.liga by les"
},
{
"path": "features/ss03.fea",
"chars": 122,
"preview": "### Traditional ampersand\n\nsub ampersand_ampersand.liga by ampersand_ampersand.liga.ss03;\nsub ampersand by ampersand.ss0"
},
{
"path": "features/ss04.fea",
"chars": 219,
"preview": "### Lightweight dollar sign\n\nsub dollar by dollar.ss04;\n\nsub dollar_greater.liga by dollar_greater.liga.ss04;\nsub less_d"
},
{
"path": "features/ss05.fea",
"chars": 147,
"preview": "### Traditional at sign\n\nsub at by at.ss05;\nsub asciitilde.spacer' asciitilde_at.liga by asciitilde;\nsub asciitilde asci"
},
{
"path": "features/ss06.fea",
"chars": 137,
"preview": "### Thin backslash\n\nlookup backslash_thin {\n ignore sub backslash.ss06 backslash';\n sub backslash' by backslash.ss06;\n"
},
{
"path": "features/ss07.fea",
"chars": 502,
"preview": "### Regex matching operator\n\nlookup equal_asciitilde {\n ignore sub equal equal' asciitilde;\n ignore sub equal' asciiti"
},
{
"path": "features/ss08.fea",
"chars": 229,
"preview": "### Gaps in double-triple equals\n\nsub equal_equal.liga by equal_equal.ss08;\nsub equal_equal_equal.liga by equal_equal_eq"
},
{
"path": "features/ss09.fea",
"chars": 725,
"preview": "### Restore <<= >>= ||= |= as arrows\n\nlookup restore_greater_greater_equal {\n sub greater_greater_equal_start.seq equal"
},
{
"path": "features/ss10.fea",
"chars": 626,
"preview": "### Ligatures for Tl Fl fi fj fl ft\n\nlookup T_l {\n sub T.spacer [l l.salt_low]' by T_l.liga.ss10;\n sub T' [l l.salt_lo"
},
{
"path": "features/zero.fea",
"chars": 83,
"preview": "### Zero with a dot inside\n\nsub zero by zero.zero;\nsub zero.tosf by zero.tosf.zero;"
},
{
"path": "googlefonts-qa/METADATA.pb",
"chars": 596,
"preview": "name: \"Fira Code\"\ndesigner: \"Multiple Designers\"\nlicense: \"OFL\"\ncategory: \"Monospace\"\ndate_added: \"2019-03-25\"\nfonts {\n "
},
{
"path": "googlefonts-qa/README.md",
"chars": 2644,
"preview": "# Onboarding to Google Fonts\n\nThis directory is made to run a Google Fonts onboarding process for Fira Code.\n\nThe `build"
},
{
"path": "googlefonts-qa/checks/FiraCode-Light.checks.md",
"chars": 71919,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/checks/static/FiraCode-Bold.checks.md",
"chars": 72797,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/checks/static/FiraCode-Light.checks.md",
"chars": 72938,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/checks/static/FiraCode-Medium.checks.md",
"chars": 73260,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/checks/static/FiraCode-Regular.checks.md",
"chars": 72756,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/checks/static/FiraCode-Retina.checks.md",
"chars": 72932,
"preview": "## Fontbakery report\n\nFontbakery version: 0.7.1\n\n<details>\n<summary><b>[31] Family checks</b></summary>\n<details>\n<summa"
},
{
"path": "googlefonts-qa/gfonts-description.html",
"chars": 913,
"preview": "<p>Programmers use a lot of symbols, often encoded with several characters. For the human brain, sequences like\n <cod"
},
{
"path": "googlefonts-qa/notes/QA-notes.md",
"chars": 7861,
"preview": "# QA Notes – checking & polishing Fira Code for Google Fonts\n\n- [x] autohint static TTFs\n- [ ] check extrapolated outlin"
},
{
"path": "googlefonts-qa/notes/outline-checks.md",
"chars": 5267,
"preview": "# Checking outlines after extrapolation\n\nIt was necessary to extrapolate a `Light` master to allow Fira Code to build vi"
},
{
"path": "googlefonts-qa/scripts/get-version.py",
"chars": 0,
"preview": ""
},
{
"path": "googlefonts-qa/scripts/move-check.sh",
"chars": 2722,
"preview": "#!/bin/bash\n\n# This script copies the latest builds to the google fonts dir in order to run QA checks and prep for a PR\n"
},
{
"path": "googlefonts-qa/scripts/requirements.txt",
"chars": 149,
"preview": "# first: make & activate virtual environment, `venv`\n# virtualenv -p python3 venv\n\nfontbakery\ngit+https://github.com/goo"
},
{
"path": "googlefonts-qa/scripts/set-vertical-metrics.py",
"chars": 6617,
"preview": "#MenuTitle: Set Vertical Metric Params\n# -*- coding: utf-8 -*-\n\nfont = Glyphs.font\n\nprint(font)\n\n__doc__=\"\"\"\n Assumes t"
},
{
"path": "package.json",
"chars": 574,
"preview": "{\n \"name\": \"firacode\",\n \"version\": \"6.2.0\",\n \"description\": \"Fira Code: monospaced font with programming ligatures\",\n"
},
{
"path": "requirements.txt",
"chars": 102,
"preview": "fontmake==3.11.1\nglyphsLib==6.12.7\ngftools==0.9.993\nfontbakery==1.1.0\nufo2ft==3.7.0\nuharfbuzz==0.53.3\n"
},
{
"path": "script/bake_in_features.sh",
"chars": 853,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n\nglyphs_file=${FIRACODE_GLYPHS_FILE:-\"FiraCode"
},
{
"path": "script/bootstrap_linux.sh",
"chars": 274,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n\nif [ \"$(id -u)\" -eq 0 ]; then\n SUDO=\"\"\nelse\n"
},
{
"path": "script/bootstrap_macos.sh",
"chars": 390,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\nbrew install python@3.12\npython3.12 -m venv venv"
},
{
"path": "script/build.sh",
"chars": 2785,
"preview": "#!/bin/bash\nset -o errexit -o pipefail\ncd \"$(dirname \"$0\")\"\n\nfeatures=()\nweights=()\ngen_glyphs_file_only=0\nuse_features_"
},
{
"path": "script/build_docker.sh",
"chars": 194,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\ndocker build -t tonsky/firacode .\n\nPWD=`pwd`\ndoc"
},
{
"path": "script/build_otf.sh",
"chars": 654,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n[ -d venv ] && source venv/bin/activate\n\nfamil"
},
{
"path": "script/build_ttf.sh",
"chars": 792,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n[ -d venv ] && source venv/bin/activate\n\nfamil"
},
{
"path": "script/build_variable.sh",
"chars": 1082,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n[ -d venv ] && source venv/bin/activate\n\nfamil"
},
{
"path": "script/build_woff.sh",
"chars": 623,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n[ -d venv ] && source venv/bin/activate\n\nfamil"
},
{
"path": "script/build_woff2.sh",
"chars": 621,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"$(dirname \"$0\")/..\"\n[ -d venv ] && source venv/bin/activate\n\nfamil"
},
{
"path": "script/check",
"chars": 74,
"preview": "#!/bin/bash -e\n\nsource venv/bin/activate\n\nfontbakery check-universal -C $1"
},
{
"path": "script/check_widths",
"chars": 56,
"preview": "#!/bin/zsh -euo pipefail\n\nclojure -m fira-code.checks $@"
},
{
"path": "script/clean.sh",
"chars": 151,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\nrm -rf distr/ttf\nrm -rf distr/variable_ttf\nrm -r"
},
{
"path": "script/common.py",
"chars": 462,
"preview": "#! /usr/bin/env python3\nimport argparse, os, re, subprocess\n\nroot = os.path.abspath(os.path.join(os.path.dirname(__file_"
},
{
"path": "script/everything",
"chars": 187,
"preview": "#!/bin/zsh -euo pipefail\ncd \"`dirname $0`/..\"\n\n./script/check_widths\n# ./script/build_ttf.sh\n./script/build_variable.sh\n"
},
{
"path": "script/package.sh",
"chars": 224,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\nVERSION=\"$(git describe --tags)\"\nFILE=\"Fira_Code"
},
{
"path": "script/progress.clj",
"chars": 771,
"preview": "#! bb\n\n(def chars [\"\\uee06\" \"\\uee07\" \"\\uee08\" \"\\uee09\" \"\\uee0a\" \"\\uee0b\"])\n\n(loop [i 0]\n (print\n (str\n ; \\u001b"
},
{
"path": "script/release.py",
"chars": 2929,
"preview": "#! /usr/bin/env python3\nimport argparse, base64, common, glob, json, os, platform, re, subprocess, sys, urllib.request, "
},
{
"path": "script/repl.sh",
"chars": 121,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\nclojure -X:dev clojure+.core.server/start-server"
},
{
"path": "script/update_glyphs.sh",
"chars": 104,
"preview": "#!/bin/bash\nset -o errexit -o nounset -o pipefail\ncd \"`dirname $0`/..\"\n\nclojure -M:dev -m fira-code.main"
},
{
"path": "script/update_version.py",
"chars": 672,
"preview": "#! /usr/bin/env python3\nimport common, os, re, subprocess, sys\n\ndef update_version(major, minor, src):\n print(f\"update_"
}
]
About this extraction
This page contains the full source code of the tonsky/FiraCode GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 130 files (2.2 MB), approximately 585.3k tokens, and a symbol index with 10 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.