├── .gitignore ├── .vscode └── launch.json ├── LICENSE ├── README.md ├── build.ini ├── doc ├── HandMade.md ├── JPDOC.txt └── ivs.txt ├── fontforge_script.py ├── fonttools_script.py ├── make.ps1 ├── old_script ├── cmap_patch.sh ├── copyright.sh ├── generator.sh ├── make.sh └── os2_patch.sh ├── requirements.txt └── source ├── BIZUDGothic-Bold.ttf ├── BIZUDGothic-Regular.ttf ├── JetBrainsMono-Bold.ttf ├── JetBrainsMono-BoldItalic.ttf ├── JetBrainsMono-Italic.ttf ├── JetBrainsMono-Regular.ttf ├── JetBrainsMonoNL-Bold.ttf ├── JetBrainsMonoNL-BoldItalic.ttf ├── JetBrainsMonoNL-Italic.ttf ├── JetBrainsMonoNL-Regular.ttf ├── JetBrainsMonoNerdFont-Regular.ttf ├── LICENSE_BIZUDGothic ├── LICENSE_JetBrainsMono ├── LICENSE_NerdFonts ├── SymbolsNerdFont-Regular.ttf ├── cmap_format_14.xml ├── fontforge_export_BIZUDGothic-Bold.ttf ├── fontforge_export_BIZUDGothic-Regular.ttf ├── ideographic_space.sfd ├── zero-Bold.sfd └── zero-Regular.sfd /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | build_tmp/ 3 | work/ 4 | release_files/ 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "fontforge_script デバッグ", 6 | "type": "debugpy", 7 | "request": "launch", 8 | "program": "${workspaceFolder}/fontforge_script.py", 9 | "console": "integratedTerminal", 10 | "python": "C:/Program Files (x86)/FontForgeBuilds/bin/ffpython.exe" 11 | }, 12 | { 13 | "name": "fonttools_script デバッグ", 14 | "type": "debugpy", 15 | "request": "launch", 16 | "program": "${workspaceFolder}/fonttools_script.py", 17 | "console": "integratedTerminal", 18 | }, 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # Licensing 2 | 3 | - Source fonts are licensed under SIL OPEN FONT LICENSE Version 1.1. 4 | For more information, see "LICENSE_" file contained in the "source" directory. 5 | - "UDEV Gothic" are licensed under SIL OPEN FONT LICENSE Version 1.1. 6 | 7 | ## "UDEV Gothic" licensing 8 | 9 | Copyright (c) 2022 Yuko OTAWARA. with Reserved Font Name "UDEV Gothic" 10 | 11 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 12 | This license is copied below, and is also available with a FAQ at: 13 | https://scripts.sil.org/OFL 14 | 15 | 16 | ----------------------------------------------------------- 17 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 18 | ----------------------------------------------------------- 19 | 20 | PREAMBLE 21 | The goals of the Open Font License (OFL) are to stimulate worldwide 22 | development of collaborative font projects, to support the font creation 23 | efforts of academic and linguistic communities, and to provide a free and 24 | open framework in which fonts may be shared and improved in partnership 25 | with others. 26 | 27 | The OFL allows the licensed fonts to be used, studied, modified and 28 | redistributed freely as long as they are not sold by themselves. The 29 | fonts, including any derivative works, can be bundled, embedded, 30 | redistributed and/or sold with any software provided that any reserved 31 | names are not used by derivative works. The fonts and derivatives, 32 | however, cannot be released under any other type of license. The 33 | requirement for fonts to remain under this license does not apply 34 | to any document created using the fonts or their derivatives. 35 | 36 | DEFINITIONS 37 | "Font Software" refers to the set of files released by the Copyright 38 | Holder(s) under this license and clearly marked as such. This may 39 | include source files, build scripts and documentation. 40 | 41 | "Reserved Font Name" refers to any names specified as such after the 42 | copyright statement(s). 43 | 44 | "Original Version" refers to the collection of Font Software components as 45 | distributed by the Copyright Holder(s). 46 | 47 | "Modified Version" refers to any derivative made by adding to, deleting, 48 | or substituting -- in part or in whole -- any of the components of the 49 | Original Version, by changing formats or by porting the Font Software to a 50 | new environment. 51 | 52 | "Author" refers to any designer, engineer, programmer, technical 53 | writer or other person who contributed to the Font Software. 54 | 55 | PERMISSION & CONDITIONS 56 | Permission is hereby granted, free of charge, to any person obtaining 57 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 58 | redistribute, and sell modified and unmodified copies of the Font 59 | Software, subject to the following conditions: 60 | 61 | 1) Neither the Font Software nor any of its individual components, 62 | in Original or Modified Versions, may be sold by itself. 63 | 64 | 2) Original or Modified Versions of the Font Software may be bundled, 65 | redistributed and/or sold with any software, provided that each copy 66 | contains the above copyright notice and this license. These can be 67 | included either as stand-alone text files, human-readable headers or 68 | in the appropriate machine-readable metadata fields within text or 69 | binary files as long as those fields can be easily viewed by the user. 70 | 71 | 3) No Modified Version of the Font Software may use the Reserved Font 72 | Name(s) unless explicit written permission is granted by the corresponding 73 | Copyright Holder. This restriction only applies to the primary font name as 74 | presented to the users. 75 | 76 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 77 | Software shall not be used to promote, endorse or advertise any 78 | Modified Version, except to acknowledge the contribution(s) of the 79 | Copyright Holder(s) and the Author(s) or with their explicit written 80 | permission. 81 | 82 | 5) The Font Software, modified or unmodified, in part or in whole, 83 | must be distributed entirely under this license, and must not be 84 | distributed under any other license. The requirement for fonts to 85 | remain under this license does not apply to any document created 86 | using the Font Software. 87 | 88 | TERMINATION 89 | This license becomes null and void if any of the above conditions are 90 | not met. 91 | 92 | DISCLAIMER 93 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 94 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 95 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 96 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 97 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 98 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 99 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 100 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 101 | OTHER DEALINGS IN THE FONT SOFTWARE. 102 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UDEV Gothic 2 | 3 | UDEV Gothic は、ユニバーサルデザインフォントの [BIZ UDゴシック](https://github.com/googlefonts/morisawa-biz-ud-gothic) と、 開発者向けフォントの [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono) を合成した、プログラミング向けフォントです。 4 | 5 | BIZ UDゴシックの優れた機能美はそのままに、調和的で判読性の高い英数字を提供することを目指しています。 6 | 7 | [👉 ダウンロード](https://github.com/yuru7/udev-gothic/releases/latest) 8 | ※「Assets」内の zip ファイルをダウンロードしてご利用ください。 9 | 10 | > 💡 その他、公開中のプログラミングフォント 11 | > - 日本語文字に源柔ゴシック、英数字部分に Hack を使った [**白源 (はくげん/HackGen)**](https://github.com/yuru7/HackGen) 12 | > - 日本語文字に IBM Plex Sans JP、英数字部分に IBM Plex Mono を使った [**PlemolJP (プレモル ジェイピー)**](https://github.com/yuru7/PlemolJP) 13 | > - 日本語文字に源真ゴシック、英数字部分に Fira Mono を使った [**Firge (ファージ)**](https://github.com/yuru7/Firge) 14 | 15 | ## 特徴 16 | 17 | 以下の特徴を備えています。 18 | 19 | - モリサワ社の考えるユニバーサルデザインが盛り込まれたBIZ UDゴシック由来の読み易い日本語文字 20 | - IntelliJ などの開発環境を提供することで知られる JetBrains 社が手掛けた JetBrains Mono 由来のラテン文字 21 | - `0` を従来のドットゼロからスラッシュゼロにするなど、BIZ UDゴシックとさらに調和することを目指した。 22 | - BIZ UDゴシック相当の IVS (異体字シーケンス) に対応 (対応している異体字リストは [こちら](https://raw.githubusercontent.com/yuru7/udev-gothic/main/doc/ivs.txt)) 23 | - 全角スペースの可視化 24 | - 収録される文字の違い等によって分かれた複数のバリエーションを用意 (下記参照) 25 | 26 | ### バリエーション 27 | 28 | | 種類 | 説明 | 命名パターン | 29 | | --- | --- | --- | 30 | | 文字幅比率 半角1:全角2 | JetBrains Mono を縮小することで、半角1:全角2の文字幅比率となるように合成したバリエーション。 | `UDEVGothic*-*.ttf`
※ファイル名に `35` が含まれて **いない** もの | 31 | | 文字幅比率 半角3:全角5 | JetBrains Mono を縮小せずに合成し、半角3:全角5の文字幅比率としたバリエーション。半角1:全角2と比べ、英数字などの半角文字がゆとりのある幅で表示される。| `UDEVGothic35*-*.ttf`
※ファイル名に `35` が含まれて **いる** もの | 32 | | 日本語文書向け | 日本語文書で頻出する記号類 ( `← ↓ ↑ → □ ■ …` など) がBIZ UDゴシックの全角記号で表示される。 ※通常版の UDEV Gothic では、JetBrains Mono のグリフが優先されるため半角で表示される。 (全角表示されるようになる記号一覧は [こちら](doc/JPDOC.txt)) | `UDEVGothic*JPDOC*-*.ttf`
※ファイル名に `JPDOC` が含まれたもの | 33 | | リガチャ対応版 | JetBrains Mono に含まれるリガチャに対応したバリエーション。 | `UDEVGothic*LG*-*.ttf`
※ファイル名に `LG` が含まれたもの | 34 | | Nerd Fonts 対応版 | [Nerd Fonts](https://www.nerdfonts.com/) を追加合成したバリエーション。拡張Powerline記号など、お洒落なターミナルで利用される記号を収録。 | `UDEVGothic*NF*-*.ttf`
※ファイル名に `NF` が含まれたもの | 35 | | 全角スペース不可視版 | 全角スペースが一般的なフォントと同様に表示されないバリエーション。コーディング用途以外での利用など、全角スペース表示が煩わしいときにオススメ。 | `UDEVGothic*HS*-*.ttf`
※ファイル名に `HS` が含まれたもの | 36 | 37 | ## 表示サンプル 38 | 39 | | 通常版 (幅比率 半角1:全角2) | 35版 (幅比率 半角3:全角5) | 40 | | :---: | :---: | 41 | | ![image](https://user-images.githubusercontent.com/13458509/163554505-af07d1b1-574a-42a0-a7c4-01cccef75537.png) | ![image](https://user-images.githubusercontent.com/13458509/163554472-de0ebb09-9f82-4d61-8c68-51dbc938858a.png) | 42 | 43 | | リガチャ ON | リガチャ OFF | 44 | | :---: | :---: | 45 | | ![image](https://user-images.githubusercontent.com/13458509/159891788-b97865ee-9b94-4691-b44e-f39f55a8bdef.png) | ![image](https://user-images.githubusercontent.com/13458509/159892000-99b356e5-42d0-4007-85eb-424abc386a05.png) | 46 | 47 | ## ビルド 48 | 49 | 環境: 50 | 51 | - fontforge: `20230101` \[[Windows](https://fontforge.org/en-US/downloads/windows/)\] \[[Linux](https://fontforge.org/en-US/downloads/gnulinux/)\] 52 | - Python: `>=3.12` 53 | 54 | ### Windows (PowerShell Core) 55 | 56 | ```sh 57 | # 必要パッケージのインストール 58 | pip install -r requirements.txt 59 | # ビルド 60 | & "C:\Program Files (x86)\FontForgeBuilds\bin\ffpython.exe" .\fontforge_script.py && python3 .\fonttools_script.py 61 | ``` 62 | 63 | ### ビルドオプション 64 | 65 | `fontforge_script.py` 実行時、以下のオプションを指定できます。 66 | 67 | - `--35`: 半角3:全角5 の幅にする 68 | - `--jpdoc`: 日本語文書頻出記号を全角にする 69 | - `--nerd-font`: Nerd Fonts を追加合成する 70 | - `--liga`: リガチャを加える 71 | - `--hidden-zenkaku-space`: 全角スペース可視化を無効化 72 | - `--dot-zero`: `0` をドットゼロにする 73 | 74 | ## ライセンス 75 | 76 | SIL OPEN FONT LICENSE Version 1.1 が適用され、商用・非商用問わず利用可能です。 77 | 詳細は [LICENSE](https://raw.githubusercontent.com/yuru7/udev-gothic/main/LICENSE) を参照 78 | -------------------------------------------------------------------------------- /build.ini: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | VERSION = v2.1.0 3 | FONT_NAME = UDEV Gothic 4 | JP_FONT = fontforge_export_BIZUDGothic-{style}.ttf 5 | ENG_FONT = JetBrainsMonoNL-{style}.ttf 6 | ENG_FONT_LG = JetBrainsMono-{style}.ttf 7 | SOURCE_FONTS_DIR = source 8 | BUILD_FONTS_DIR = build 9 | VENDER_NAME = TWR 10 | FONTFORGE_PREFIX = fontforge_ 11 | FONTTOOLS_PREFIX = fonttools_ 12 | IDEOGRAPHIC_SPACE = ideographic_space.sfd 13 | WIDTH_35_STR = 35 14 | JPDOC_STR = JPDOC 15 | DOT_ZERO_STR = DZ 16 | NERD_FONTS_STR = NF 17 | LIGA_STR = LG 18 | HIDDEN_ZENKAKU_SPACE_STR = HS 19 | EM_ASCENT = 1802 20 | EM_DESCENT = 246 21 | OS2_ASCENT = 1962 22 | OS2_DESCENT = 416 23 | HALF_WIDTH_12 = 1024 24 | FULL_WIDTH_35 = 2045 25 | ITALIC_ANGLE = 9 26 | -------------------------------------------------------------------------------- /doc/HandMade.md: -------------------------------------------------------------------------------- 1 | # 手作業で作成したグリフに関するメモ 2 | 3 | ## 0 (U+0030) 4 | 5 | - JetBrains Monoの `0 (U+0030)` をコピー 6 | - 中心のドット部分を削除 7 | - `/ (U+002F)` をコピーして、上記のグリフに貼り付ける 8 | - `/` 部分を、以下の通り変形させる 9 | - 回転: 時計回り 19° 10 | - 縮小: x,y 75% 11 | - `0` の外周からはみ出している部分は、はみ出さない位置まで手で修正 12 | - 重複処理: 点の重複部分を結合する 13 | -------------------------------------------------------------------------------- /doc/JPDOC.txt: -------------------------------------------------------------------------------- 1 | § (U+00A7) 2 | ± (U+00B1) 3 | ¶ (U+00B6) 4 | ÷ (U+00F7) 5 | × (U+00D7) 6 | ⇒ (U+21D2) 7 | ⇔ (U+21D4) 8 | ■-□ (U+25A0-U+25A1) 9 | ▲-△ (U+25B2-U+25B3) 10 | ▼-▽ (U+25BC-U+25BD) 11 | ◆-◇ (U+25C6-U+25C7) 12 | ○ (U+25CB) 13 | ◎-● (U+25CE-U+25CF) 14 | ◥ (U+25E5) 15 | ◯ (U+25EF) 16 | √ (U+221A) 17 | ∞ (U+221E) 18 | ‐ (U+2010) 19 | ‘-‚ (U+2018-U+201A) 20 | “-„ (U+201C-U+201E) 21 | †-‡ (U+2020-U+2021) 22 | … (U+2026) 23 | ‰ (U+2030) 24 | ←-↓ (U+2190-U+2193) 25 | ∀ (U+2200) 26 | ∂-∃ (U+2202-U+2203) 27 | ∈ (U+2208) 28 | ∋ (U+220B) 29 | ∑ (U+2211) 30 | ∥ (U+2225) 31 | ∧-∬ (U+2227-U+222C) 32 | ≠-≡ (U+2260-U+2261) 33 | ⊂-⊃ (U+2282-U+2283) 34 | ⊆-⊇ (U+2286-U+2287) 35 | ─-╿ (Box Drawing) (U+2500-U+257F) 36 | -------------------------------------------------------------------------------- /doc/ivs.txt: -------------------------------------------------------------------------------- 1 | 侮 (u+4fae) -> 侮︀ (u+4fae u+fe00) 2 | 僧 (u+50e7) -> 僧︀ (u+50e7 u+fe00) 3 | 免 (u+514d) -> 免︀ (u+514d u+fe00) 4 | 凞 (u+51de) -> 凞︀ (u+51de u+fe00) 5 | 勉 (u+52c9) -> 勉︀ (u+52c9 u+fe00) 6 | 勤 (u+52e4) -> 勤︀ (u+52e4 u+fe00) 7 | 卑 (u+5351) -> 卑︀ (u+5351 u+fe00) 8 | 喝 (u+559d) -> 喝︀ (u+559d u+fe00) 9 | 嘆 (u+5606) -> 嘆︀ (u+5606 u+fe00) 10 | 器 (u+5668) -> 器︀ (u+5668 u+fe00) 11 | 塀 (u+5840) -> 塀︀ (u+5840 u+fe00) 12 | 塚 (u+585a) -> 塚︀ (u+585a u+fe00) 13 | 墨 (u+58a8) -> 墨︀ (u+58a8 u+fe00) 14 | 層 (u+5c64) -> 層︀ (u+5c64 u+fe00) 15 | 屮 (u+5c6e) -> 屮︀ (u+5c6e u+fe00) 16 | 廊 (u+5eca) -> 廊︀ (u+5eca u+fe00) 17 | 悔 (u+6094) -> 悔︀ (u+6094 u+fe00) 18 | 慨 (u+6168) -> 慨︀ (u+6168 u+fe00) 19 | 憎 (u+618e) -> 憎︀ (u+618e u+fe00) 20 | 懲 (u+61f2) -> 懲︀ (u+61f2 u+fe00) 21 | 敏 (u+654f) -> 敏︀ (u+654f u+fe00) 22 | 既 (u+65e2) -> 既︀ (u+65e2 u+fe00) 23 | 晴 (u+6674) -> 晴︀ (u+6674 u+fe00) 24 | 暑 (u+6691) -> 暑︀ (u+6691 u+fe00) 25 | 朗 (u+6717) -> 朗︀ (u+6717 u+fe00) 26 | 梅 (u+6885) -> 梅︀ (u+6885 u+fe00) 27 | 欄 (u+6b04) -> 欄︀ (u+6b04 u+fe00) 28 | 殺 (u+6bba) -> 殺︀ (u+6bba u+fe00) 29 | 海 (u+6d77) -> 海︀ (u+6d77 u+fe00) 30 | 渚 (u+6e1a) -> 渚︀ (u+6e1a u+fe00) 31 | 漢 (u+6f22) -> 漢︀ (u+6f22 u+fe00) 32 | 煮 (u+716e) -> 煮︀ (u+716e u+fe00) 33 | 爫 (u+722b) -> 爫︀ (u+722b u+fe00) 34 | 猪 (u+732a) -> 猪︀ (u+732a u+fe00) 35 | 琢 (u+7422) -> 琢︀ (u+7422 u+fe00) 36 | 益 (u+76ca) -> 益︀ (u+76ca u+fe00) 37 | 碑 (u+7891) -> 碑︀ (u+7891 u+fe00) 38 | 礼 (u+793c) -> 礼︀ (u+793c u+fe00) 39 | 社 (u+793e) -> 社︀ (u+793e u+fe00) 40 | 祈 (u+7948) -> 祈︀ (u+7948 u+fe00) 41 | 祉 (u+7949) -> 祉︀ (u+7949 u+fe00) 42 | 祐 (u+7950) -> 祐︀ (u+7950 u+fe00) 43 | 祖 (u+7956) -> 祖︀ (u+7956 u+fe00) 44 | 祝 (u+795d) -> 祝︀ (u+795d u+fe00) 45 | 神 (u+795e) -> 神︀ (u+795e u+fe00) 46 | 祥 (u+7965) -> 祥︀ (u+7965 u+fe00) 47 | 禍 (u+798d) -> 禍︀ (u+798d u+fe00) 48 | 禎 (u+798e) -> 禎︀ (u+798e u+fe00) 49 | 福 (u+798f) -> 福︀ (u+798f u+fe00) 50 | 穀 (u+7a40) -> 穀︀ (u+7a40 u+fe00) 51 | 突 (u+7a81) -> 突︀ (u+7a81 u+fe00) 52 | 節 (u+7bc0) -> 節︀ (u+7bc0 u+fe00) 53 | 精 (u+7cbe) -> 精︀ (u+7cbe u+fe00) 54 | 縉 (u+7e09) -> 縉︀ (u+7e09 u+fe00) 55 | 繁 (u+7e41) -> 繁︀ (u+7e41 u+fe00) 56 | 署 (u+7f72) -> 署︀ (u+7f72 u+fe00) 57 | 羽 (u+7fbd) -> 羽︀ (u+7fbd u+fe00) 58 | 者 (u+8005) -> 者︀ (u+8005 u+fe00) 59 | 臭 (u+81ed) -> 臭︀ (u+81ed u+fe00) 60 | 艹 (u+8279) -> 艹︀ (u+8279 u+fe00) 61 | 著 (u+8457) -> 著︀ (u+8457 u+fe00) 62 | 蘒 (u+8612) -> 蘒︀ (u+8612 u+fe00) 63 | 虜 (u+865c) -> 虜︀ (u+865c u+fe00) 64 | 褐 (u+8910) -> 褐︀ (u+8910 u+fe00) 65 | 視 (u+8996) -> 視︀ (u+8996 u+fe00) 66 | 諸 (u+8af8) -> 諸︀ (u+8af8 u+fe00) 67 | 謁 (u+8b01) -> 謁︀ (u+8b01 u+fe00) 68 | 謹 (u+8b39) -> 謹︀ (u+8b39 u+fe00) 69 | 賓 (u+8cd3) -> 賓︀ (u+8cd3 u+fe00) 70 | 贈 (u+8d08) -> 贈︀ (u+8d08 u+fe00) 71 | 辶 (u+8fb6) -> 辶︀ (u+8fb6 u+fe00) 72 | 逸 (u+9038) -> 逸︀ (u+9038 u+fe00) 73 | 都 (u+90fd) -> 都︀ (u+90fd u+fe00) 74 | 隆 (u+9686) -> 隆︀ (u+9686 u+fe00) 75 | 難 (u+96e3) -> 難︀ (u+96e3 u+fe00) 76 | 靖 (u+9756) -> 靖︀ (u+9756 u+fe00) 77 | 響 (u+97ff) -> 響︀ (u+97ff u+fe00) 78 | 頻 (u+983b) -> 頻︀ (u+983b u+fe00) 79 | 類 (u+985e) -> 類︀ (u+985e u+fe00) 80 | 飯 (u+98ef) -> 飯︀ (u+98ef u+fe00) 81 | 飼 (u+98fc) -> 飼︀ (u+98fc u+fe00) 82 | 館 (u+9928) -> 館︀ (u+9928 u+fe00) 83 | 鶴 (u+9db4) -> 鶴︀ (u+9db4 u+fe00) 84 | 練 (u+7df4) -> 練︁ (u+7df4 u+fe01) 85 | 艹 (u+8279) -> 艹︁ (u+8279 u+fe01) 86 | 逸 (u+9038) -> 逸︁ (u+9038 u+fe01) 87 | 倦 (u+5026) -> 倦󠄀 (u+5026 u+e0100) 88 | 僅 (u+50c5) -> 僅󠄀 (u+50c5 u+e0100) 89 | 儲 (u+5132) -> 儲󠄀 (u+5132 u+e0100) 90 | 兎 (u+514e) -> 兎󠄀 (u+514e u+e0100) 91 | 兔 (u+5154) -> 兔󠄀 (u+5154 u+e0100) 92 | 冕 (u+5195) -> 冕󠄀 (u+5195 u+e0100) 93 | 冤 (u+51a4) -> 冤󠄀 (u+51a4 u+e0100) 94 | 勉 (u+52c9) -> 勉󠄀 (u+52c9 u+e0100) 95 | 卑 (u+5351) -> 卑󠄀 (u+5351 u+e0100) 96 | 厩 (u+53a9) -> 厩󠄀 (u+53a9 u+e0100) 97 | 叉 (u+53c9) -> 叉󠄀 (u+53c9 u+e0100) 98 | 叛 (u+53db) -> 叛󠄀 (u+53db u+e0100) 99 | 叟 (u+53df) -> 叟󠄀 (u+53df u+e0100) 100 | 咬 (u+54ac) -> 咬󠄀 (u+54ac u+e0100) 101 | 哨 (u+54e8) -> 哨󠄀 (u+54e8 u+e0100) 102 | 喰 (u+55b0) -> 喰󠄀 (u+55b0 u+e0100) 103 | 嘆 (u+5606) -> 嘆󠄀 (u+5606 u+e0100) 104 | 嘲 (u+5632) -> 嘲󠄀 (u+5632 u+e0100) 105 | 噂 (u+5642) -> 噂󠄀 (u+5642 u+e0100) 106 | 噌 (u+564c) -> 噌󠄀 (u+564c u+e0100) 107 | 囀 (u+56c0) -> 囀󠄀 (u+56c0 u+e0100) 108 | 堵 (u+5835) -> 堵󠄀 (u+5835 u+e0100) 109 | 墨 (u+58a8) -> 墨󠄀 (u+58a8 u+e0100) 110 | 娩 (u+5a29) -> 娩󠄀 (u+5a29 u+e0100) 111 | 屑 (u+5c51) -> 屑󠄀 (u+5c51 u+e0100) 112 | 屠 (u+5c60) -> 屠󠄀 (u+5c60 u+e0100) 113 | 屮 (u+5c6e) -> 屮󠄀 (u+5c6e u+e0100) 114 | 巷 (u+5df7) -> 巷󠄀 (u+5df7 u+e0100) 115 | 巽 (u+5dfd) -> 巽󠄀 (u+5dfd u+e0100) 116 | 庖 (u+5e96) -> 庖󠄀 (u+5e96 u+e0100) 117 | 廟 (u+5edf) -> 廟󠄀 (u+5edf u+e0100) 118 | 廻 (u+5efb) -> 廻󠄀 (u+5efb u+e0100) 119 | 徘 (u+5f98) -> 徘󠄀 (u+5f98 u+e0100) 120 | 徽 (u+5fbd) -> 徽󠄀 (u+5fbd u+e0100) 121 | 恢 (u+6062) -> 恢󠄀 (u+6062 u+e0100) 122 | 悔 (u+6094) -> 悔󠄀 (u+6094 u+e0100) 123 | 愈 (u+6108) -> 愈󠄀 (u+6108 u+e0100) 124 | 憎 (u+618e) -> 憎󠄀 (u+618e u+e0100) 125 | 扁 (u+6241) -> 扁󠄀 (u+6241 u+e0100) 126 | 挺 (u+633a) -> 挺󠄀 (u+633a u+e0100) 127 | 挽 (u+633d) -> 挽󠄀 (u+633d u+e0100) 128 | 捗 (u+6357) -> 捗󠄀 (u+6357 u+e0100) 129 | 捲 (u+6372) -> 捲󠄀 (u+6372 u+e0100) 130 | 揃 (u+63c3) -> 揃󠄀 (u+63c3 u+e0100) 131 | 摯 (u+646f) -> 摯󠄀 (u+646f u+e0100) 132 | 摺 (u+647a) -> 摺󠄀 (u+647a u+e0100) 133 | 撰 (u+64b0) -> 撰󠄀 (u+64b0 u+e0100) 134 | 擢 (u+64e2) -> 擢󠄀 (u+64e2 u+e0100) 135 | 敏 (u+654f) -> 敏󠄀 (u+654f u+e0100) 136 | 斧 (u+65a7) -> 斧󠄀 (u+65a7 u+e0100) 137 | 既 (u+65e2) -> 既󠄀 (u+65e2 u+e0100) 138 | 晦 (u+6666) -> 晦󠄀 (u+6666 u+e0100) 139 | 晴 (u+6674) -> 晴󠄀 (u+6674 u+e0100) 140 | 朗 (u+6717) -> 朗󠄀 (u+6717 u+e0100) 141 | 杓 (u+6753) -> 杓󠄀 (u+6753 u+e0100) 142 | 杖 (u+6756) -> 杖󠄀 (u+6756 u+e0100) 143 | 梅 (u+6885) -> 梅󠄀 (u+6885 u+e0100) 144 | 梗 (u+6897) -> 梗󠄀 (u+6897 u+e0100) 145 | 楢 (u+6962) -> 楢󠄀 (u+6962 u+e0100) 146 | 楯 (u+696f) -> 楯󠄀 (u+696f u+e0100) 147 | 榊 (u+698a) -> 榊󠄀 (u+698a u+e0100) 148 | 榔 (u+6994) -> 榔󠄀 (u+6994 u+e0100) 149 | 槌 (u+69cc) -> 槌󠄀 (u+69cc u+e0100) 150 | 樋 (u+6a0b) -> 樋󠄀 (u+6a0b u+e0100) 151 | 樽 (u+6a3d) -> 樽󠄀 (u+6a3d u+e0100) 152 | 欄 (u+6b04) -> 欄󠄀 (u+6b04 u+e0100) 153 | 歎 (u+6b4e) -> 歎󠄀 (u+6b4e u+e0100) 154 | 殺 (u+6bba) -> 殺󠄀 (u+6bba u+e0100) 155 | 汲 (u+6c72) -> 汲󠄀 (u+6c72 u+e0100) 156 | 海 (u+6d77) -> 海󠄀 (u+6d77 u+e0100) 157 | 淫 (u+6deb) -> 淫󠄀 (u+6deb u+e0100) 158 | 渚 (u+6e1a) -> 渚󠄀 (u+6e1a u+e0100) 159 | 溢 (u+6ea2) -> 溢󠄀 (u+6ea2 u+e0100) 160 | 溺 (u+6eba) -> 溺󠄀 (u+6eba u+e0100) 161 | 瀕 (u+7015) -> 瀕󠄀 (u+7015 u+e0100) 162 | 瀞 (u+701e) -> 瀞󠄀 (u+701e u+e0100) 163 | 瀦 (u+7026) -> 瀦󠄀 (u+7026 u+e0100) 164 | 灘 (u+7058) -> 灘󠄀 (u+7058 u+e0100) 165 | 灸 (u+7078) -> 灸󠄀 (u+7078 u+e0100) 166 | 灼 (u+707c) -> 灼󠄀 (u+707c u+e0100) 167 | 煎 (u+714e) -> 煎󠄀 (u+714e u+e0100) 168 | 煮 (u+716e) -> 煮󠄀 (u+716e u+e0100) 169 | 煽 (u+717d) -> 煽󠄀 (u+717d u+e0100) 170 | 爨 (u+7228) -> 爨󠄀 (u+7228 u+e0100) 171 | 爺 (u+723a) -> 爺󠄀 (u+723a u+e0100) 172 | 牌 (u+724c) -> 牌󠄀 (u+724c u+e0100) 173 | 牙 (u+7259) -> 牙󠄀 (u+7259 u+e0100) 174 | 狡 (u+72e1) -> 狡󠄀 (u+72e1 u+e0100) 175 | 猪 (u+732a) -> 猪󠄀 (u+732a u+e0100) 176 | 猷 (u+7337) -> 猷󠄀 (u+7337 u+e0100) 177 | 琢 (u+7422) -> 琢󠄀 (u+7422 u+e0100) 178 | 甑 (u+7511) -> 甑󠄀 (u+7511 u+e0100) 179 | 甕 (u+7515) -> 甕󠄀 (u+7515 u+e0100) 180 | 甦 (u+7526) -> 甦󠄀 (u+7526 u+e0100) 181 | 疼 (u+75bc) -> 疼󠄀 (u+75bc u+e0100) 182 | 瞥 (u+77a5) -> 瞥󠄀 (u+77a5 u+e0100) 183 | 碑 (u+7891) -> 碑󠄀 (u+7891 u+e0100) 184 | 祁 (u+7941) -> 祁󠄀 (u+7941 u+e0100) 185 | 祇 (u+7947) -> 祇󠄀 (u+7947 u+e0100) 186 | 祈 (u+7948) -> 祈󠄀 (u+7948 u+e0100) 187 | 祐 (u+7950) -> 祐󠄀 (u+7950 u+e0100) 188 | 祝 (u+795d) -> 祝󠄀 (u+795d u+e0100) 189 | 神 (u+795e) -> 神󠄀 (u+795e u+e0100) 190 | 祥 (u+7965) -> 祥󠄀 (u+7965 u+e0100) 191 | 禍 (u+798d) -> 禍󠄀 (u+798d u+e0100) 192 | 禰 (u+79b0) -> 禰󠄀 (u+79b0 u+e0100) 193 | 秤 (u+79e4) -> 秤󠄀 (u+79e4 u+e0100) 194 | 稗 (u+7a17) -> 稗󠄀 (u+7a17 u+e0100) 195 | 穀 (u+7a40) -> 穀󠄀 (u+7a40 u+e0100) 196 | 穿 (u+7a7f) -> 穿󠄀 (u+7a7f u+e0100) 197 | 竈 (u+7ac8) -> 竈󠄀 (u+7ac8 u+e0100) 198 | 笈 (u+7b08) -> 笈󠄀 (u+7b08 u+e0100) 199 | 筵 (u+7b75) -> 筵󠄀 (u+7b75 u+e0100) 200 | 箭 (u+7bad) -> 箭󠄀 (u+7bad u+e0100) 201 | 箸 (u+7bb8) -> 箸󠄀 (u+7bb8 u+e0100) 202 | 篇 (u+7bc7) -> 篇󠄀 (u+7bc7 u+e0100) 203 | 篝 (u+7bdd) -> 篝󠄀 (u+7bdd u+e0100) 204 | 簾 (u+7c3e) -> 簾󠄀 (u+7c3e u+e0100) 205 | 籾 (u+7c7e) -> 籾󠄀 (u+7c7e u+e0100) 206 | 粂 (u+7c82) -> 粂󠄀 (u+7c82 u+e0100) 207 | 精 (u+7cbe) -> 精󠄀 (u+7cbe u+e0100) 208 | 練 (u+7df4) -> 練󠄀 (u+7df4 u+e0100) 209 | 署 (u+7f72) -> 署󠄀 (u+7f72 u+e0100) 210 | 羽 (u+7fbd) -> 羽󠄀 (u+7fbd u+e0100) 211 | 翫 (u+7feb) -> 翫󠄀 (u+7feb u+e0100) 212 | 翰 (u+7ff0) -> 翰󠄀 (u+7ff0 u+e0100) 213 | 腱 (u+8171) -> 腱󠄀 (u+8171 u+e0100) 214 | 腿 (u+817f) -> 腿󠄀 (u+817f u+e0100) 215 | 艘 (u+8258) -> 艘󠄀 (u+8258 u+e0100) 216 | 芒 (u+8292) -> 芒󠄀 (u+8292 u+e0100) 217 | 芦 (u+82a6) -> 芦󠄀 (u+82a6 u+e0100) 218 | 茨 (u+8328) -> 茨󠄀 (u+8328 u+e0100) 219 | 葛 (u+845b) -> 葛󠄀 (u+845b u+e0100) 220 | 蓬 (u+84ec) -> 蓬󠄀 (u+84ec u+e0100) 221 | 蓮 (u+84ee) -> 蓮󠄀 (u+84ee u+e0100) 222 | 蔑 (u+8511) -> 蔑󠄀 (u+8511 u+e0100) 223 | 蔽 (u+853d) -> 蔽󠄀 (u+853d u+e0100) 224 | 薩 (u+85a9) -> 薩󠄀 (u+85a9 u+e0100) 225 | 薯 (u+85af) -> 薯󠄀 (u+85af u+e0100) 226 | 藷 (u+85f7) -> 藷󠄀 (u+85f7 u+e0100) 227 | 虔 (u+8654) -> 虔󠄀 (u+8654 u+e0100) 228 | 虜 (u+865c) -> 虜󠄀 (u+865c u+e0100) 229 | 蛸 (u+86f8) -> 蛸󠄀 (u+86f8 u+e0100) 230 | 蜃 (u+8703) -> 蜃󠄀 (u+8703 u+e0100) 231 | 蝕 (u+8755) -> 蝕󠄀 (u+8755 u+e0100) 232 | 蠅 (u+8805) -> 蠅󠄀 (u+8805 u+e0100) 233 | 襖 (u+8956) -> 襖󠄀 (u+8956 u+e0100) 234 | 訊 (u+8a0a) -> 訊󠄀 (u+8a0a u+e0100) 235 | 訝 (u+8a1d) -> 訝󠄀 (u+8a1d u+e0100) 236 | 註 (u+8a3b) -> 註󠄀 (u+8a3b u+e0100) 237 | 詮 (u+8a6e) -> 詮󠄀 (u+8a6e u+e0100) 238 | 誹 (u+8ab9) -> 誹󠄀 (u+8ab9 u+e0100) 239 | 諸 (u+8af8) -> 諸󠄀 (u+8af8 u+e0100) 240 | 諺 (u+8afa) -> 諺󠄀 (u+8afa u+e0100) 241 | 謁 (u+8b01) -> 謁󠄀 (u+8b01 u+e0100) 242 | 謎 (u+8b0e) -> 謎󠄀 (u+8b0e u+e0100) 243 | 謬 (u+8b2c) -> 謬󠄀 (u+8b2c u+e0100) 244 | 謹 (u+8b39) -> 謹󠄀 (u+8b39 u+e0100) 245 | 譿 (u+8b7f) -> 譿󠄀 (u+8b7f u+e0100) 246 | 豹 (u+8c79) -> 豹󠄀 (u+8c79 u+e0100) 247 | 賓 (u+8cd3) -> 賓󠄀 (u+8cd3 u+e0100) 248 | 賭 (u+8ced) -> 賭󠄀 (u+8ced u+e0100) 249 | 辻 (u+8fbb) -> 辻󠄀 (u+8fbb u+e0100) 250 | 辿 (u+8fbf) -> 辿󠄀 (u+8fbf u+e0100) 251 | 迂 (u+8fc2) -> 迂󠄀 (u+8fc2 u+e0100) 252 | 迄 (u+8fc4) -> 迄󠄀 (u+8fc4 u+e0100) 253 | 迦 (u+8fe6) -> 迦󠄀 (u+8fe6 u+e0100) 254 | 逗 (u+9017) -> 逗󠄀 (u+9017 u+e0100) 255 | 這 (u+9019) -> 這󠄀 (u+9019 u+e0100) 256 | 逢 (u+9022) -> 逢󠄀 (u+9022 u+e0100) 257 | 逼 (u+903c) -> 逼󠄀 (u+903c u+e0100) 258 | 遁 (u+9041) -> 遁󠄀 (u+9041 u+e0100) 259 | 遜 (u+905c) -> 遜󠄀 (u+905c u+e0100) 260 | 遡 (u+9061) -> 遡󠄀 (u+9061 u+e0100) 261 | 都 (u+90fd) -> 都󠄀 (u+90fd u+e0100) 262 | 鄭 (u+912d) -> 鄭󠄀 (u+912d u+e0100) 263 | 酋 (u+914b) -> 酋󠄀 (u+914b u+e0100) 264 | 釜 (u+91dc) -> 釜󠄀 (u+91dc u+e0100) 265 | 錆 (u+9306) -> 錆󠄀 (u+9306 u+e0100) 266 | 鍵 (u+9375) -> 鍵󠄀 (u+9375 u+e0100) 267 | 鎚 (u+939a) -> 鎚󠄀 (u+939a u+e0100) 268 | 鑓 (u+9453) -> 鑓󠄀 (u+9453 u+e0100) 269 | 隙 (u+9699) -> 隙󠄀 (u+9699 u+e0100) 270 | 難 (u+96e3) -> 難󠄀 (u+96e3 u+e0100) 271 | 靱 (u+9771) -> 靱󠄀 (u+9771 u+e0100) 272 | 鞄 (u+9784) -> 鞄󠄀 (u+9784 u+e0100) 273 | 鞘 (u+9798) -> 鞘󠄀 (u+9798 u+e0100) 274 | 鞭 (u+97ad) -> 鞭󠄀 (u+97ad u+e0100) 275 | 頻 (u+983b) -> 頻󠄀 (u+983b u+e0100) 276 | 類 (u+985e) -> 類󠄀 (u+985e u+e0100) 277 | 飯 (u+98ef) -> 飯󠄀 (u+98ef u+e0100) 278 | 飴 (u+98f4) -> 飴󠄀 (u+98f4 u+e0100) 279 | 餅 (u+9905) -> 餅󠄀 (u+9905 u+e0100) 280 | 餌 (u+990c) -> 餌󠄀 (u+990c u+e0100) 281 | 餐 (u+9910) -> 餐󠄀 (u+9910 u+e0100) 282 | 饗 (u+9957) -> 饗󠄀 (u+9957 u+e0100) 283 | 駁 (u+99c1) -> 駁󠄀 (u+99c1 u+e0100) 284 | 騙 (u+9a19) -> 騙󠄀 (u+9a19 u+e0100) 285 | 鮫 (u+9bab) -> 鮫󠄀 (u+9bab u+e0100) 286 | 鯖 (u+9bd6) -> 鯖󠄀 (u+9bd6 u+e0100) 287 | 鰯 (u+9c2f) -> 鰯󠄀 (u+9c2f u+e0100) 288 | 鱒 (u+9c52) -> 鱒󠄀 (u+9c52 u+e0100) 289 | 鴉 (u+9d09) -> 鴉󠄀 (u+9d09 u+e0100) 290 | 鵠 (u+9d60) -> 鵠󠄀 (u+9d60 u+e0100) 291 | 鶴 (u+9db4) -> 鶴󠄀 (u+9db4 u+e0100) 292 | 侮 (u+4fae) -> 侮󠄁 (u+4fae u+e0101) 293 | 僊 (u+50ca) -> 僊󠄁 (u+50ca u+e0101) 294 | 僧 (u+50e7) -> 僧󠄁 (u+50e7 u+e0101) 295 | 免 (u+514d) -> 免󠄁 (u+514d u+e0101) 296 | 冉 (u+5189) -> 冉󠄁 (u+5189 u+e0101) 297 | 凋 (u+51cb) -> 凋󠄁 (u+51cb u+e0101) 298 | 凞 (u+51de) -> 凞󠄁 (u+51de u+e0101) 299 | 創 (u+5275) -> 創󠄁 (u+5275 u+e0101) 300 | 勤 (u+52e4) -> 勤󠄁 (u+52e4 u+e0101) 301 | 匇 (u+5307) -> 匇󠄁 (u+5307 u+e0101) 302 | 匕 (u+5315) -> 匕󠄁 (u+5315 u+e0101) 303 | 卿 (u+537f) -> 卿󠄁 (u+537f u+e0101) 304 | 厩 (u+53a9) -> 厩󠄁 (u+53a9 u+e0101) 305 | 叱 (u+53f1) -> 叱󠄁 (u+53f1 u+e0101) 306 | 唳 (u+5533) -> 唳󠄁 (u+5533 u+e0101) 307 | 唹 (u+5539) -> 唹󠄁 (u+5539 u+e0101) 308 | 啄 (u+5544) -> 啄󠄁 (u+5544 u+e0101) 309 | 喝 (u+559d) -> 喝󠄁 (u+559d u+e0101) 310 | 喩 (u+55a9) -> 喩󠄁 (u+55a9 u+e0101) 311 | 嗤 (u+55e4) -> 嗤󠄁 (u+55e4 u+e0101) 312 | 器 (u+5668) -> 器󠄁 (u+5668 u+e0101) 313 | 噸 (u+5678) -> 噸󠄁 (u+5678 u+e0101) 314 | 嚥 (u+56a5) -> 嚥󠄁 (u+56a5 u+e0101) 315 | 嚮 (u+56ae) -> 嚮󠄁 (u+56ae u+e0101) 316 | 堋 (u+580b) -> 堋󠄁 (u+580b u+e0101) 317 | 堙 (u+5819) -> 堙󠄁 (u+5819 u+e0101) 318 | 塀 (u+5840) -> 塀󠄁 (u+5840 u+e0101) 319 | 塘 (u+5858) -> 塘󠄁 (u+5858 u+e0101) 320 | 塚 (u+585a) -> 塚󠄁 (u+585a u+e0101) 321 | 夛 (u+591b) -> 夛󠄁 (u+591b u+e0101) 322 | 媛 (u+5a9b) -> 媛󠄁 (u+5a9b u+e0101) 323 | 媾 (u+5abe) -> 媾󠄁 (u+5abe u+e0101) 324 | 嫌 (u+5acc) -> 嫌󠄁 (u+5acc u+e0101) 325 | 寛 (u+5bdb) -> 寛󠄁 (u+5bdb u+e0101) 326 | 尨 (u+5c28) -> 尨󠄁 (u+5c28 u+e0101) 327 | 層 (u+5c64) -> 層󠄁 (u+5c64 u+e0101) 328 | 幤 (u+5e64) -> 幤󠄁 (u+5e64 u+e0101) 329 | 廊 (u+5eca) -> 廊󠄁 (u+5eca u+e0101) 330 | 廏 (u+5ecf) -> 廏󠄁 (u+5ecf u+e0101) 331 | 廐 (u+5ed0) -> 廐󠄁 (u+5ed0 u+e0101) 332 | 廠 (u+5ee0) -> 廠󠄁 (u+5ee0 u+e0101) 333 | 恢 (u+6062) -> 恢󠄁 (u+6062 u+e0101) 334 | 悗 (u+6097) -> 悗󠄁 (u+6097 u+e0101) 335 | 慧 (u+6167) -> 慧󠄁 (u+6167 u+e0101) 336 | 慨 (u+6168) -> 慨󠄁 (u+6168 u+e0101) 337 | 扈 (u+6248) -> 扈󠄁 (u+6248 u+e0101) 338 | 扉 (u+6249) -> 扉󠄁 (u+6249 u+e0101) 339 | 拐 (u+62d0) -> 拐󠄁 (u+62d0 u+e0101) 340 | 拳 (u+62f3) -> 拳󠄁 (u+62f3 u+e0101) 341 | 捩 (u+6369) -> 捩󠄁 (u+6369 u+e0101) 342 | 搆 (u+6406) -> 搆󠄁 (u+6406 u+e0101) 343 | 斃 (u+6583) -> 斃󠄁 (u+6583 u+e0101) 344 | 昞 (u+661e) -> 昞󠄁 (u+661e u+e0101) 345 | 暑 (u+6691) -> 暑󠄁 (u+6691 u+e0101) 346 | 曁 (u+66c1) -> 曁󠄁 (u+66c1 u+e0101) 347 | 曙 (u+66d9) -> 曙󠄁 (u+66d9 u+e0101) 348 | 枦 (u+67a6) -> 枦󠄁 (u+67a6 u+e0101) 349 | 柊 (u+67ca) -> 柊󠄁 (u+67ca u+e0101) 350 | 栁 (u+6801) -> 栁󠄁 (u+6801 u+e0101) 351 | 栓 (u+6813) -> 栓󠄁 (u+6813 u+e0101) 352 | 梛 (u+689b) -> 梛󠄁 (u+689b u+e0101) 353 | 梢 (u+68a2) -> 梢󠄁 (u+68a2 u+e0101) 354 | 棚 (u+68da) -> 棚󠄁 (u+68da u+e0101) 355 | 櫛 (u+6adb) -> 櫛󠄁 (u+6adb u+e0101) 356 | 欝 (u+6b1d) -> 欝󠄁 (u+6b1d u+e0101) 357 | 氈 (u+6c08) -> 氈󠄁 (u+6c08 u+e0101) 358 | 泡 (u+6ce1) -> 泡󠄁 (u+6ce1 u+e0101) 359 | 渣 (u+6e23) -> 渣󠄁 (u+6e23 u+e0101) 360 | 湮 (u+6e6e) -> 湮󠄁 (u+6e6e u+e0101) 361 | 溝 (u+6e9d) -> 溝󠄁 (u+6e9d u+e0101) 362 | 滬 (u+6eec) -> 滬󠄁 (u+6eec u+e0101) 363 | 漢 (u+6f22) -> 漢󠄁 (u+6f22 u+e0101) 364 | 漣 (u+6f23) -> 漣󠄁 (u+6f23 u+e0101) 365 | 濯 (u+6fef) -> 濯󠄁 (u+6fef u+e0101) 366 | 煉 (u+7149) -> 煉󠄁 (u+7149 u+e0101) 367 | 煽 (u+717d) -> 煽󠄁 (u+717d u+e0101) 368 | 熔 (u+7194) -> 熔󠄁 (u+7194 u+e0101) 369 | 爫 (u+722b) -> 爫󠄁 (u+722b u+e0101) 370 | 猷 (u+7337) -> 猷󠄁 (u+7337 u+e0101) 371 | 珊 (u+73ca) -> 珊󠄁 (u+73ca u+e0101) 372 | 珎 (u+73ce) -> 珎󠄁 (u+73ce u+e0101) 373 | 瑢 (u+7462) -> 瑢󠄁 (u+7462 u+e0101) 374 | 甄 (u+7504) -> 甄󠄁 (u+7504 u+e0101) 375 | 甍 (u+750d) -> 甍󠄁 (u+750d u+e0101) 376 | 甑 (u+7511) -> 甑󠄁 (u+7511 u+e0101) 377 | 甕 (u+7515) -> 甕󠄁 (u+7515 u+e0101) 378 | 瘦 (u+7626) -> 瘦󠄁 (u+7626 u+e0101) 379 | 癒 (u+7652) -> 癒󠄁 (u+7652 u+e0101) 380 | 皓 (u+7693) -> 皓󠄁 (u+7693 u+e0101) 381 | 益 (u+76ca) -> 益󠄁 (u+76ca u+e0101) 382 | 硼 (u+787c) -> 硼󠄁 (u+787c u+e0101) 383 | 礼 (u+793c) -> 礼󠄁 (u+793c u+e0101) 384 | 社 (u+793e) -> 社󠄁 (u+793e u+e0101) 385 | 祉 (u+7949) -> 祉󠄁 (u+7949 u+e0101) 386 | 祖 (u+7956) -> 祖󠄁 (u+7956 u+e0101) 387 | 祢 (u+7962) -> 祢󠄁 (u+7962 u+e0101) 388 | 禎 (u+798e) -> 禎󠄁 (u+798e u+e0101) 389 | 福 (u+798f) -> 福󠄁 (u+798f u+e0101) 390 | 稱 (u+7a31) -> 稱󠄁 (u+7a31 u+e0101) 391 | 突 (u+7a81) -> 突󠄁 (u+7a81 u+e0101) 392 | 窗 (u+7a97) -> 窗󠄁 (u+7a97 u+e0101) 393 | 笈 (u+7b08) -> 笈󠄁 (u+7b08 u+e0101) 394 | 箙 (u+7b99) -> 箙󠄁 (u+7b99 u+e0101) 395 | 節 (u+7bc0) -> 節󠄁 (u+7bc0 u+e0101) 396 | 簾 (u+7c3e) -> 簾󠄁 (u+7c3e u+e0101) 397 | 籾 (u+7c7e) -> 籾󠄁 (u+7c7e u+e0101) 398 | 粐 (u+7c90) -> 粐󠄁 (u+7c90 u+e0101) 399 | 粮 (u+7cae) -> 粮󠄁 (u+7cae u+e0101) 400 | 絜 (u+7d5c) -> 絜󠄁 (u+7d5c u+e0101) 401 | 綛 (u+7d9b) -> 綛󠄁 (u+7d9b u+e0101) 402 | 綟 (u+7d9f) -> 綟󠄁 (u+7d9f u+e0101) 403 | 綮 (u+7dae) -> 綮󠄁 (u+7dae u+e0101) 404 | 縉 (u+7e09) -> 縉󠄁 (u+7e09 u+e0101) 405 | 繁 (u+7e41) -> 繁󠄁 (u+7e41 u+e0101) 406 | 翔 (u+7fd4) -> 翔󠄁 (u+7fd4 u+e0101) 407 | 翠 (u+7fe0) -> 翠󠄁 (u+7fe0 u+e0101) 408 | 翩 (u+7fe9) -> 翩󠄁 (u+7fe9 u+e0101) 409 | 耀 (u+8000) -> 耀󠄁 (u+8000 u+e0101) 410 | 者 (u+8005) -> 者󠄁 (u+8005 u+e0101) 411 | 臭 (u+81ed) -> 臭󠄁 (u+81ed u+e0101) 412 | 舮 (u+822e) -> 舮󠄁 (u+822e u+e0101) 413 | 艹 (u+8279) -> 艹󠄁 (u+8279 u+e0101) 414 | 芍 (u+828d) -> 芍󠄁 (u+828d u+e0101) 415 | 苒 (u+82d2) -> 苒󠄁 (u+82d2 u+e0101) 416 | 茣 (u+8323) -> 茣󠄁 (u+8323 u+e0101) 417 | 荵 (u+8375) -> 荵󠄁 (u+8375 u+e0101) 418 | 菟 (u+83df) -> 菟󠄁 (u+83df u+e0101) 419 | 萢 (u+8422) -> 萢󠄁 (u+8422 u+e0101) 420 | 著 (u+8457) -> 著󠄁 (u+8457 u+e0101) 421 | 蔗 (u+8517) -> 蔗󠄁 (u+8517 u+e0101) 422 | 蘒 (u+8612) -> 蘒󠄁 (u+8612 u+e0101) 423 | 蝙 (u+8759) -> 蝙󠄁 (u+8759 u+e0101) 424 | 螂 (u+8782) -> 螂󠄁 (u+8782 u+e0101) 425 | 蟒 (u+87d2) -> 蟒󠄁 (u+87d2 u+e0101) 426 | 蠎 (u+880e) -> 蠎󠄁 (u+880e u+e0101) 427 | 褊 (u+890a) -> 褊󠄁 (u+890a u+e0101) 428 | 褐 (u+8910) -> 褐󠄁 (u+8910 u+e0101) 429 | 視 (u+8996) -> 視󠄁 (u+8996 u+e0101) 430 | 覯 (u+89af) -> 覯󠄁 (u+89af u+e0101) 431 | 諞 (u+8ade) -> 諞󠄁 (u+8ade u+e0101) 432 | 譁 (u+8b41) -> 譁󠄁 (u+8b41 u+e0101) 433 | 贈 (u+8d08) -> 贈󠄁 (u+8d08 u+e0101) 434 | 跚 (u+8dda) -> 跚󠄁 (u+8dda u+e0101) 435 | 踉 (u+8e09) -> 踉󠄁 (u+8e09 u+e0101) 436 | 輓 (u+8f13) -> 輓󠄁 (u+8f13 u+e0101) 437 | 辶 (u+8fb6) -> 辶󠄁 (u+8fb6 u+e0101) 438 | 迩 (u+8fe9) -> 迩󠄁 (u+8fe9 u+e0101) 439 | 迪 (u+8fea) -> 迪󠄁 (u+8fea u+e0101) 440 | 逝 (u+901d) -> 逝󠄁 (u+901d u+e0101) 441 | 逸 (u+9038) -> 逸󠄁 (u+9038 u+e0101) 442 | 遁 (u+9041) -> 遁󠄁 (u+9041 u+e0101) 443 | 遘 (u+9058) -> 遘󠄁 (u+9058 u+e0101) 444 | 遮 (u+906e) -> 遮󠄁 (u+906e u+e0101) 445 | 遼 (u+907c) -> 遼󠄁 (u+907c u+e0101) 446 | 那 (u+90a3) -> 那󠄁 (u+90a3 u+e0101) 447 | 釁 (u+91c1) -> 釁󠄁 (u+91c1 u+e0101) 448 | 采 (u+91c7) -> 采󠄁 (u+91c7 u+e0101) 449 | 閻 (u+95bb) -> 閻󠄁 (u+95bb u+e0101) 450 | 隆 (u+9686) -> 隆󠄁 (u+9686 u+e0101) 451 | 霤 (u+9724) -> 霤󠄁 (u+9724 u+e0101) 452 | 靕 (u+9755) -> 靕󠄁 (u+9755 u+e0101) 453 | 靖 (u+9756) -> 靖󠄁 (u+9756 u+e0101) 454 | 靠 (u+9760) -> 靠󠄁 (u+9760 u+e0101) 455 | 靭 (u+976d) -> 靭󠄁 (u+976d u+e0101) 456 | 靱 (u+9771) -> 靱󠄁 (u+9771 u+e0101) 457 | 靴 (u+9774) -> 靴󠄁 (u+9774 u+e0101) 458 | 響 (u+97ff) -> 響󠄁 (u+97ff u+e0101) 459 | 頓 (u+9813) -> 頓󠄁 (u+9813 u+e0101) 460 | 頤 (u+9824) -> 頤󠄁 (u+9824 u+e0101) 461 | 飼 (u+98fc) -> 飼󠄁 (u+98fc u+e0101) 462 | 餌 (u+990c) -> 餌󠄁 (u+990c u+e0101) 463 | 館 (u+9928) -> 館󠄁 (u+9928 u+e0101) 464 | 鬮 (u+9b2e) -> 鬮󠄁 (u+9b2e u+e0101) 465 | 鮗 (u+9b97) -> 鮗󠄁 (u+9b97 u+e0101) 466 | 鯲 (u+9bf2) -> 鯲󠄁 (u+9bf2 u+e0101) 467 | 鱈 (u+9c48) -> 鱈󠄁 (u+9c48 u+e0101) 468 | 鴇 (u+9d07) -> 鴇󠄁 (u+9d07 u+e0101) 469 | 麪 (u+9eaa) -> 麪󠄁 (u+9eaa u+e0101) 470 | 麭 (u+9ead) -> 麭󠄁 (u+9ead u+e0101) 471 | 黛 (u+9edb) -> 黛󠄁 (u+9edb u+e0101) 472 | 龜 (u+9f9c) -> 龜󠄁 (u+9f9c u+e0101) 473 | 龝 (u+9f9d) -> 龝󠄁 (u+9f9d u+e0101) 474 | 﨑 (u+fa11) -> 﨑󠄁 (u+fa11 u+e0101) 475 | 﨤 (u+fa24) -> 﨤󠄁 (u+fa24 u+e0101) 476 | 厩 (u+53a9) -> 厩󠄂 (u+53a9 u+e0102) 477 | 塚 (u+585a) -> 塚󠄂 (u+585a u+e0102) 478 | 朗 (u+6717) -> 朗󠄂 (u+6717 u+e0102) 479 | 艹 (u+8279) -> 艹󠄂 (u+8279 u+e0102) 480 | 菟 (u+83df) -> 菟󠄂 (u+83df u+e0102) 481 | 蘒 (u+8612) -> 蘒󠄂 (u+8612 u+e0102) 482 | 蟒 (u+87d2) -> 蟒󠄂 (u+87d2 u+e0102) 483 | 逸 (u+9038) -> 逸󠄂 (u+9038 u+e0102) 484 | 隆 (u+9686) -> 隆󠄂 (u+9686 u+e0102) 485 | 靭 (u+976d) -> 靭󠄂 (u+976d u+e0102) 486 | 懲 (u+61f2) -> 懲󠄃 (u+61f2 u+e0103) 487 | 凞 (u+51de) -> 凞󠄄 (u+51de u+e0104) 488 | -------------------------------------------------------------------------------- /fontforge_script.py: -------------------------------------------------------------------------------- 1 | #!fontforge --lang=py -script 2 | 3 | # 2つのフォントを合成する 4 | 5 | import configparser 6 | import math 7 | import os 8 | import shutil 9 | import sys 10 | import uuid 11 | from decimal import ROUND_HALF_UP, Decimal 12 | 13 | import fontforge 14 | import psMat 15 | 16 | # iniファイルを読み込む 17 | settings = configparser.ConfigParser() 18 | settings.read("build.ini", encoding="utf-8") 19 | 20 | VERSION = settings.get("DEFAULT", "VERSION") 21 | FONT_NAME = settings.get("DEFAULT", "FONT_NAME") 22 | JP_FONT = settings.get("DEFAULT", "JP_FONT") 23 | ENG_FONT = settings.get("DEFAULT", "ENG_FONT") 24 | ENG_FONT_LG = settings.get("DEFAULT", "ENG_FONT_LG") 25 | SOURCE_FONTS_DIR = settings.get("DEFAULT", "SOURCE_FONTS_DIR") 26 | BUILD_FONTS_DIR = settings.get("DEFAULT", "BUILD_FONTS_DIR") 27 | VENDER_NAME = settings.get("DEFAULT", "VENDER_NAME") 28 | FONTFORGE_PREFIX = settings.get("DEFAULT", "FONTFORGE_PREFIX") 29 | IDEOGRAPHIC_SPACE = settings.get("DEFAULT", "IDEOGRAPHIC_SPACE") 30 | WIDTH_35_STR = settings.get("DEFAULT", "WIDTH_35_STR") 31 | HIDDEN_ZENKAKU_SPACE_STR = settings.get("DEFAULT", "HIDDEN_ZENKAKU_SPACE_STR") 32 | JPDOC_STR = settings.get("DEFAULT", "JPDOC_STR") 33 | DOT_ZERO_STR = settings.get("DEFAULT", "DOT_ZERO_STR") 34 | NERD_FONTS_STR = settings.get("DEFAULT", "NERD_FONTS_STR") 35 | LIGA_STR = settings.get("DEFAULT", "LIGA_STR") 36 | EM_ASCENT = int(settings.get("DEFAULT", "EM_ASCENT")) 37 | EM_DESCENT = int(settings.get("DEFAULT", "EM_DESCENT")) 38 | OS2_ASCENT = int(settings.get("DEFAULT", "OS2_ASCENT")) 39 | OS2_DESCENT = int(settings.get("DEFAULT", "OS2_DESCENT")) 40 | HALF_WIDTH_12 = int(settings.get("DEFAULT", "HALF_WIDTH_12")) 41 | FULL_WIDTH_35 = int(settings.get("DEFAULT", "FULL_WIDTH_35")) 42 | ITALIC_ANGLE = int(settings.get("DEFAULT", "ITALIC_ANGLE")) 43 | 44 | COPYRIGHT = """[JetBrains Mono] 45 | Copyright 2020 The JetBrains Mono Project Authors https://github.com/JetBrains/JetBrainsMono 46 | 47 | [BIZ UDGothic] 48 | Copyright 2022 The BIZ UDGothic Project Authors https://github.com/googlefonts/morisawa-biz-ud-mincho 49 | 50 | [Nerd Fonts] 51 | Copyright (c) 2014, Ryan L McIntyre https://ryanlmcintyre.com 52 | 53 | [UDEV Gothic] 54 | Copyright 2022 Yuko Otawara 55 | """ # noqa: E501 56 | 57 | options = {} 58 | hack_font = None 59 | nerd_font = None 60 | 61 | 62 | def main(): 63 | # オプション判定 64 | get_options() 65 | if options.get("unknown-option"): 66 | usage() 67 | return 68 | 69 | # buildディレクトリを作成する 70 | if os.path.exists(BUILD_FONTS_DIR) and not options.get("do-not-delete-build-dir"): 71 | shutil.rmtree(BUILD_FONTS_DIR) 72 | os.mkdir(BUILD_FONTS_DIR) 73 | if not os.path.exists(BUILD_FONTS_DIR): 74 | os.mkdir(BUILD_FONTS_DIR) 75 | 76 | generate_font( 77 | jp_style="Regular", 78 | eng_style="Regular", 79 | merged_style="Regular", 80 | ) 81 | 82 | if options.get("debug"): 83 | return 84 | 85 | generate_font( 86 | jp_style="Bold", 87 | eng_style="Bold", 88 | merged_style="Bold", 89 | ) 90 | generate_font( 91 | jp_style="Regular", 92 | eng_style="Italic", 93 | merged_style="Italic", 94 | ) 95 | generate_font( 96 | jp_style="Bold", 97 | eng_style="BoldItalic", 98 | merged_style="BoldItalic", 99 | ) 100 | 101 | 102 | def usage(): 103 | print( 104 | f"Usage: {sys.argv[0]} " 105 | "[--hidden-zenkaku-space] [--35] [--jpdoc] [--nerd-font] [--liga] [--dot-zero]" 106 | ) 107 | 108 | 109 | def get_options(): 110 | """オプションを取得する""" 111 | 112 | global options 113 | 114 | # オプションなしの場合は何もしない 115 | if len(sys.argv) == 1: 116 | return 117 | 118 | for arg in sys.argv[1:]: 119 | # オプション判定 120 | if arg == "--do-not-delete-build-dir": 121 | options["do-not-delete-build-dir"] = True 122 | elif arg == "--hidden-zenkaku-space": 123 | options["hidden-zenkaku-space"] = True 124 | elif arg == "--35": 125 | options["35"] = True 126 | elif arg == "--jpdoc": 127 | options["jpdoc"] = True 128 | elif arg == "--nerd-font": 129 | options["nerd-font"] = True 130 | elif arg == "--liga": 131 | options["liga"] = True 132 | elif arg == "--dot-zero": 133 | options["dot-zero"] = True 134 | elif arg == "--debug": 135 | options["debug"] = True 136 | else: 137 | options["unknown-option"] = True 138 | return 139 | 140 | 141 | def generate_font(jp_style, eng_style, merged_style): 142 | print(f"=== Generate {merged_style} ===") 143 | 144 | # 合成するフォントを開く 145 | jp_font, eng_font = open_fonts(jp_style, eng_style) 146 | 147 | # 0 をスラッシュゼロにする 148 | if not options.get("dot-zero"): 149 | slash_zero(eng_font, eng_style) 150 | 151 | # フォントのEMを揃える 152 | adjust_em(eng_font) 153 | 154 | # 日本語文書に頻出する記号を英語フォントから削除する 155 | if options.get("jpdoc"): 156 | remove_jpdoc_symbols(eng_font) 157 | 158 | # いくつかのグリフ形状に調整を加える 159 | adjust_some_glyph(jp_font, eng_font) 160 | 161 | # 重複するグリフを削除する 162 | delete_duplicate_glyphs(jp_font, eng_font) 163 | 164 | # 日本語グリフの斜体を生成する 165 | if "Italic" in merged_style: 166 | transform_italic_glyphs(jp_font) 167 | 168 | if options.get("35"): 169 | # eng_fontを3:5幅にする 170 | adjust_width_35_eng(eng_font) 171 | # jp_fontを3:5幅にする 172 | adjust_width_35_jp(jp_font) 173 | else: 174 | # 1:2 幅にする 175 | transform_half_width(eng_font) 176 | # 幅からはみ出たグリフを縮小する 177 | down_scale_redundant_size_glyph(eng_font) 178 | 179 | # GSUBテーブルを削除する (ひらがな等の全角文字が含まれる行でリガチャが解除される対策) 180 | if options.get("liga"): 181 | # ただしリガチャ版の合成の場合には日本語フォント側のGSUBテーブルが残っていると 182 | # なぜか「'あ' === data」のように日本語が含まれる行でリガチャが解除される 183 | # 不具合があるため、リガチャ版では問答無用でGSUBテーブルを削除する 184 | remove_lookups(jp_font, remove_gsub=True, remove_gpos=True) 185 | else: 186 | remove_lookups(jp_font, remove_gsub=False, remove_gpos=True) 187 | 188 | # 全角スペースを可視化する 189 | if not options.get("hidden-zenkaku-space"): 190 | visualize_zenkaku_space(jp_font) 191 | 192 | # Nerd Fontのグリフを追加する 193 | if options.get("nerd-font"): 194 | add_nerd_font_glyphs(jp_font, eng_font) 195 | 196 | # オプション毎の修飾子を追加する 197 | variant = WIDTH_35_STR if options.get("35") else "" 198 | variant += HIDDEN_ZENKAKU_SPACE_STR if options.get("hidden-zenkaku-space") else "" 199 | variant += DOT_ZERO_STR if options.get("dot-zero") else "" 200 | variant += JPDOC_STR if options.get("jpdoc") else "" 201 | variant += NERD_FONTS_STR if options.get("nerd-font") else "" 202 | variant += LIGA_STR if options.get("liga") else "" 203 | 204 | # macOSでのpostテーブルの使用性エラー対策 205 | # 重複するグリフ名を持つグリフをリネームする 206 | delete_glyphs_with_duplicate_glyph_names(eng_font) 207 | delete_glyphs_with_duplicate_glyph_names(jp_font) 208 | 209 | # メタデータを編集する 210 | cap_height = int( 211 | Decimal(str(eng_font[0x0048].boundingBox()[3])).quantize( 212 | Decimal("0"), ROUND_HALF_UP 213 | ) 214 | ) 215 | x_height = int( 216 | Decimal(str(eng_font[0x0078].boundingBox()[3])).quantize( 217 | Decimal("0"), ROUND_HALF_UP 218 | ) 219 | ) 220 | edit_meta_data(eng_font, merged_style, variant, cap_height, x_height) 221 | edit_meta_data(jp_font, merged_style, variant, cap_height, x_height) 222 | 223 | # ttfファイルに保存 224 | # ヒンティングが残っていると不具合に繋がりがちなので外す。 225 | # ヒンティングはあとで ttfautohint で行う。 226 | # flags=("no-hints", "omit-instructions") を使うとヒンティングだけでなく GPOS や GSUB も削除されてしまうので使わない 227 | eng_font.generate( 228 | f"{BUILD_FONTS_DIR}/{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{merged_style}-eng.ttf", 229 | ) 230 | jp_font.generate( 231 | f"{BUILD_FONTS_DIR}/{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{merged_style}-jp.ttf", 232 | ) 233 | 234 | # ttfを閉じる 235 | jp_font.close() 236 | eng_font.close() 237 | 238 | 239 | def open_fonts(jp_style: str, eng_style: str): 240 | """フォントを開く""" 241 | jp_font = fontforge.open( 242 | SOURCE_FONTS_DIR + "/" + JP_FONT.replace("{style}", jp_style) 243 | ) 244 | if options.get("liga"): 245 | eng_font = fontforge.open( 246 | SOURCE_FONTS_DIR + "/" + ENG_FONT_LG.replace("{style}", eng_style) 247 | ) 248 | else: 249 | eng_font = fontforge.open( 250 | SOURCE_FONTS_DIR + "/" + ENG_FONT.replace("{style}", eng_style) 251 | ) 252 | 253 | # フォント参照を解除する 254 | for glyph in jp_font.glyphs(): 255 | if glyph.isWorthOutputting(): 256 | jp_font.selection.select(("more", None), glyph) 257 | jp_font.unlinkReferences() 258 | for glyph in eng_font.glyphs(): 259 | if glyph.isWorthOutputting(): 260 | eng_font.selection.select(("more", None), glyph) 261 | eng_font.unlinkReferences() 262 | jp_font.selection.none() 263 | eng_font.selection.none() 264 | 265 | return jp_font, eng_font 266 | 267 | 268 | def adjust_some_glyph(jp_font, eng_font): 269 | """いくつかのグリフ形状に調整を加える""" 270 | # FULLWIDTH RIGHT CURLY BRACKET は全角優先にするため削除 271 | eng_font.selection.select("U+FF5B") 272 | eng_font.selection.select(("more", None), "U+FF5D") 273 | for glyph in eng_font.selection.byGlyphs: 274 | glyph.clear() 275 | eng_font.selection.none() 276 | # 全角括弧の開きを広くする 277 | full_width = jp_font[0x3042].width 278 | for glyph_name in [0xFF08, 0xFF3B, 0xFF5B]: 279 | glyph = jp_font[glyph_name] 280 | glyph.transform(psMat.translate(-(full_width / 6), 0)) 281 | glyph.width = full_width 282 | for glyph_name in [0xFF09, 0xFF3D, 0xFF5D]: 283 | glyph = jp_font[glyph_name] 284 | glyph.transform(psMat.translate((full_width / 6), 0)) 285 | glyph.width = full_width 286 | # LEFT SINGLE QUOTATION MARK (U+2018) ~ DOUBLE LOW-9 QUOTATION MARK (U+201E) の幅を全角幅にする 287 | for uni in range(0x2018, 0x201E + 1): 288 | try: 289 | glyph = jp_font[uni] 290 | if glyph.isWorthOutputting(): 291 | glyph.transform(psMat.translate((full_width - glyph.width) / 2, 0)) 292 | glyph.width = full_width 293 | except TypeError: 294 | # グリフが存在しない場合は継続する 295 | continue 296 | jp_font.selection.none() 297 | 298 | 299 | def slash_zero(eng_font, style): 300 | eng_font.selection.select("zero.zero") 301 | eng_font.copy() 302 | eng_font.selection.select("zero") 303 | eng_font.clear() 304 | eng_font.paste() 305 | eng_font.selection.none() 306 | 307 | 308 | def adjust_em(font): 309 | """フォントのEMを揃える""" 310 | font.em = EM_ASCENT + EM_DESCENT 311 | 312 | 313 | def delete_duplicate_glyphs(jp_font, eng_font): 314 | """jp_fontとeng_fontのグリフを比較し、重複するグリフを削除する""" 315 | 316 | eng_font.selection.none() 317 | jp_font.selection.none() 318 | 319 | # TODO 今後、BIZ UDゴシックのアップデートでCMAPが拡張されaltuniでU+0000の異体字セレクタが増えたら 320 | # それを考慮した処理をここらへんに書く必要あり。PlemolJPを参考にする 321 | 322 | for glyph in jp_font.glyphs("encoding"): 323 | try: 324 | if glyph.isWorthOutputting() and glyph.unicode > 0: 325 | eng_font.selection.select(("more", "unicode"), glyph.unicode) 326 | except ValueError: 327 | # Encoding is out of range のときは継続する 328 | continue 329 | for glyph in eng_font.selection.byGlyphs: 330 | # if glyph.isWorthOutputting(): 331 | jp_font.selection.select(("more", "unicode"), glyph.unicode) 332 | for glyph in jp_font.selection.byGlyphs: 333 | glyph.clear() 334 | 335 | jp_font.selection.none() 336 | eng_font.selection.none() 337 | 338 | 339 | def remove_lookups(font, remove_gsub=True, remove_gpos=True): 340 | """GSUB, GPOSテーブルを削除する""" 341 | if remove_gsub: 342 | for lookup in font.gsub_lookups: 343 | font.removeLookup(lookup) 344 | if remove_gpos: 345 | for lookup in font.gpos_lookups: 346 | font.removeLookup(lookup) 347 | 348 | 349 | def transform_italic_glyphs(font): 350 | # 傾きを設定する 351 | font.italicangle = -ITALIC_ANGLE 352 | # 全グリフを斜体に変換 353 | for glyph in font.glyphs(): 354 | orig_width = glyph.width 355 | glyph.transform(psMat.skew(ITALIC_ANGLE * math.pi / 180)) 356 | glyph.transform(psMat.translate(-94, 0)) 357 | glyph.width = orig_width 358 | 359 | 360 | def remove_jpdoc_symbols(eng_font): 361 | """日本語文書に頻出する記号を削除する""" 362 | eng_font.selection.none() 363 | # § (U+00A7) 364 | eng_font.selection.select(("more", "unicode"), 0x00A7) 365 | # ± (U+00B1) 366 | eng_font.selection.select(("more", "unicode"), 0x00B1) 367 | # ¶ (U+00B6) 368 | eng_font.selection.select(("more", "unicode"), 0x00B6) 369 | # ÷ (U+00F7) 370 | eng_font.selection.select(("more", "unicode"), 0x00F7) 371 | # × (U+00D7) 372 | eng_font.selection.select(("more", "unicode"), 0x00D7) 373 | # ⇒ (U+21D2) 374 | eng_font.selection.select(("more", "unicode"), 0x21D2) 375 | # ⇔ (U+21D4) 376 | eng_font.selection.select(("more", "unicode"), 0x21D4) 377 | # ■-□ (U+25A0-U+25A1) 378 | eng_font.selection.select(("more", "ranges"), 0x25A0, 0x25A1) 379 | # ▲-△ (U+25B2-U+25B3) 380 | eng_font.selection.select(("more", "ranges"), 0x25A0, 0x25B3) 381 | # ▼-▽ (U+25BC-U+25BD) 382 | eng_font.selection.select(("more", "ranges"), 0x25BC, 0x25BD) 383 | # ◆-◇ (U+25C6-U+25C7) 384 | eng_font.selection.select(("more", "ranges"), 0x25C6, 0x25C7) 385 | # ○ (U+25CB) 386 | eng_font.selection.select(("more", "unicode"), 0x25CB) 387 | # ◎-● (U+25CE-U+25CF) 388 | eng_font.selection.select(("more", "ranges"), 0x25CE, 0x25CF) 389 | # ◥ (U+25E5) 390 | eng_font.selection.select(("more", "unicode"), 0x25E5) 391 | # ◯ (U+25EF) 392 | eng_font.selection.select(("more", "unicode"), 0x25EF) 393 | # √ (U+221A) 394 | eng_font.selection.select(("more", "unicode"), 0x221A) 395 | # ∞ (U+221E) 396 | eng_font.selection.select(("more", "unicode"), 0x221E) 397 | # ‐ (U+2010) 398 | eng_font.selection.select(("more", "unicode"), 0x2010) 399 | # ‘-‚ (U+2018-U+201A) 400 | eng_font.selection.select(("more", "ranges"), 0x2018, 0x201A) 401 | # “-„ (U+201C-U+201E) 402 | eng_font.selection.select(("more", "ranges"), 0x201C, 0x201E) 403 | # †-‡ (U+2020-U+2021) 404 | eng_font.selection.select(("more", "ranges"), 0x2020, 0x2021) 405 | # … (U+2026) 406 | eng_font.selection.select(("more", "unicode"), 0x2026) 407 | # ‰ (U+2030) 408 | eng_font.selection.select(("more", "unicode"), 0x2030) 409 | # ←-↓ (U+2190-U+2193) 410 | eng_font.selection.select(("more", "ranges"), 0x2190, 0x2193) 411 | # ∀ (U+2200) 412 | eng_font.selection.select(("more", "unicode"), 0x2200) 413 | # ∂-∃ (U+2202-U+2203) 414 | eng_font.selection.select(("more", "ranges"), 0x2202, 0x2203) 415 | # ∈ (U+2208) 416 | eng_font.selection.select(("more", "unicode"), 0x2208) 417 | # ∋ (U+220B) 418 | eng_font.selection.select(("more", "unicode"), 0x220B) 419 | # ∑ (U+2211) 420 | eng_font.selection.select(("more", "unicode"), 0x2211) 421 | # ∥ (U+2225) 422 | eng_font.selection.select(("more", "unicode"), 0x2225) 423 | # ∧-∬ (U+2227-U+222C) 424 | eng_font.selection.select(("more", "ranges"), 0x2227, 0x222C) 425 | # ≠-≡ (U+2260-U+2261) 426 | eng_font.selection.select(("more", "ranges"), 0x2260, 0x2261) 427 | # ⊂-⊃ (U+2282-U+2283) 428 | eng_font.selection.select(("more", "ranges"), 0x2282, 0x2283) 429 | # ⊆-⊇ (U+2286-U+2287) 430 | eng_font.selection.select(("more", "ranges"), 0x2286, 0x2287) 431 | # ─-╿ (Box Drawing) (U+2500-U+257F) 432 | # TODO 日本語フォントに存在するものだけ削除して、存在しないものは全角化する 433 | eng_font.selection.select(("more", "ranges"), 0x2500, 0x257F) 434 | for glyph in eng_font.selection.byGlyphs: 435 | if glyph.isWorthOutputting(): 436 | glyph.clear() 437 | eng_font.selection.none() 438 | 439 | 440 | def adjust_width_35_eng(eng_font): 441 | """英語フォントを半角3:全角5幅になるように変換する""" 442 | original_half_width = eng_font[0x0030].width 443 | after_width = int(FULL_WIDTH_35 * 3 / 5) 444 | x_scale = after_width / original_half_width 445 | for glyph in eng_font.glyphs(): 446 | if 0 < glyph.width < after_width: 447 | # after_width より幅が狭い場合は位置合わせしてから幅を設定 448 | glyph.transform(psMat.translate((after_width - glyph.width) / 2, 0)) 449 | glyph.width = after_width 450 | elif after_width < glyph.width <= original_half_width: 451 | # after_width より幅が広い、かつ元の半角幅より狭い場合は縮小してから幅を設定 452 | glyph.transform(psMat.scale(x_scale, 1)) 453 | glyph.width = after_width 454 | elif original_half_width < glyph.width: 455 | # after_width より幅が広い (おそらく全てリガチャ) の場合は倍数にする 456 | multiply_number = round(glyph.width / original_half_width) 457 | glyph.transform(psMat.scale(x_scale, 1)) 458 | glyph.width = after_width * multiply_number 459 | 460 | 461 | def adjust_width_35_jp(jp_font): 462 | """日本語フォントを半角3:全角5幅になるように変換する""" 463 | after_width = int(FULL_WIDTH_35 * 3 / 5) 464 | jp_half_width = jp_font[0x3000].width / 2 465 | jp_full_width = jp_font[0x3000].width 466 | for glyph in jp_font.glyphs(): 467 | if glyph.width == jp_half_width: 468 | glyph.transform(psMat.translate((after_width - glyph.width) / 2, 0)) 469 | glyph.width = after_width 470 | elif glyph.width == jp_full_width: 471 | glyph.transform(psMat.translate((FULL_WIDTH_35 - glyph.width) / 2, 0)) 472 | glyph.width = FULL_WIDTH_35 473 | 474 | 475 | def transform_half_width(eng_font): 476 | """1:2幅になるように変換する""" 477 | before_width_eng = eng_font[0x0030].width 478 | after_width_eng = HALF_WIDTH_12 479 | # 単純 縮小後幅 / 元の幅 だと狭くなりすりぎるので、倍率を考慮する 480 | x_scale = 1106 / before_width_eng 481 | for glyph in eng_font.glyphs(): 482 | if glyph.width > 0: 483 | # リガチャ考慮 484 | after_width_eng_multiply = after_width_eng * round( 485 | glyph.width / before_width_eng 486 | ) 487 | # 縮小 488 | glyph.transform(psMat.scale(x_scale, 0.99)) 489 | # 幅を設定 490 | glyph.transform( 491 | psMat.translate((after_width_eng_multiply - glyph.width) / 2, 0) 492 | ) 493 | glyph.width = after_width_eng_multiply 494 | # 幾何学模様 (U+25A0-U+25FF) グリフが横幅をはみ出しすぎるので縮小する 495 | if 0x25A0 <= glyph.unicode <= 0x25FF: 496 | glyph.transform(psMat.scale(0.91, 0.91)) 497 | glyph.width = after_width_eng_multiply 498 | 499 | 500 | def down_scale_redundant_size_glyph(eng_font): 501 | """規定の幅からはみ出したグリフサイズを縮小する""" 502 | 503 | for glyph in eng_font.glyphs(): 504 | xmin = glyph.boundingBox()[0] 505 | xmax = glyph.boundingBox()[2] 506 | 507 | if ( 508 | glyph.width > 0 509 | and -45 510 | < xmin 511 | < 0 # 特定幅より左にはみ出している場合、意図的にはみ出しているものと見なして無視 512 | and abs(xmin) - 40 513 | < xmax - glyph.width 514 | < abs(xmin) + 40 # はみ出し幅が左側と右側で極端に異なる場合は無視 515 | and not ( 516 | 0x0020 <= glyph.unicode <= 0x02AF 517 | ) # latin 系のグリフ 0x0020 - 0x0192 は無視 518 | and not ( 519 | 0xE0B0 <= glyph.unicode <= 0xE0D4 520 | ) # Powerline系のグリフ 0xE0B0 - 0xE0D4 は無視 521 | and not ( 522 | 0x2500 <= glyph.unicode <= 0x257F 523 | ) # 罫線系のグリフ 0x2500 - 0x257F は無視 524 | and not ( 525 | 0x2591 <= glyph.unicode <= 0x2593 526 | ) # SHADE グリフ 0x2591 - 0x2593 は無視 527 | ): 528 | scale_glyph(glyph, 1 + (xmin / glyph.width) * 2, 1) 529 | 530 | 531 | def scale_glyph(glyph, scale_x, scale_y): 532 | """グリフのスケールを調整する""" 533 | original_width = glyph.width 534 | # スケール前の中心位置を求める 535 | before_bb = glyph.boundingBox() 536 | before_center_x = (before_bb[0] + before_bb[2]) / 2 537 | before_center_y = (before_bb[1] + before_bb[3]) / 2 538 | # スケール変換 539 | glyph.transform(psMat.scale(scale_x, scale_y)) 540 | # スケール後の中心位置を求める 541 | after_bb = glyph.boundingBox() 542 | after_center_x = (after_bb[0] + after_bb[2]) / 2 543 | after_center_y = (after_bb[1] + after_bb[3]) / 2 544 | # 拡大で増えた分を考慮して中心位置を調整 545 | glyph.transform( 546 | psMat.translate( 547 | before_center_x - after_center_x, 548 | before_center_y - after_center_y, 549 | ) 550 | ) 551 | glyph.width = original_width 552 | 553 | 554 | def visualize_zenkaku_space(jp_font): 555 | """全角スペースを可視化する""" 556 | # 全角スペースを差し替え 557 | glyph = jp_font[0x3000] 558 | width_to = glyph.width 559 | glyph.clear() 560 | jp_font.mergeFonts(fontforge.open(f"{SOURCE_FONTS_DIR}/{IDEOGRAPHIC_SPACE}")) 561 | # 幅を設定し位置調整 562 | jp_font.selection.select("U+3000") 563 | for glyph in jp_font.selection.byGlyphs: 564 | width_from = glyph.width 565 | glyph.transform(psMat.translate((width_to - width_from) / 2, 0)) 566 | glyph.width = width_to 567 | jp_font.selection.none() 568 | 569 | 570 | def add_box_drawing_block_elements(jp_font, eng_font): 571 | """Box Drawing, Block Elements を追加する""" 572 | global hack_font 573 | if hack_font is None: 574 | hack_font = fontforge.open(f"{SOURCE_FONTS_DIR}/hack/Hack-Regular.ttf") 575 | hack_font.em = EM_ASCENT + EM_DESCENT 576 | half_width = eng_font[0x0030].width 577 | # 対象記号を選択 578 | for uni in range(0x2500, 0x259F + 1): 579 | hack_font.selection.select(("more", "unicode"), uni) 580 | # マージする記号のみを残す 581 | hack_font.selection.invert() 582 | for glyph in hack_font.selection.byGlyphs: 583 | hack_font.removeGlyph(glyph) 584 | # 位置合わせ 585 | for glyph in hack_font.glyphs(): 586 | if glyph.isWorthOutputting(): 587 | glyph.transform(psMat.translate((half_width - glyph.width) / 2, 0)) 588 | glyph.width = half_width 589 | # マージする範囲をあらかじめ削除 590 | eng_font.selection.none() 591 | for uni in range(0x2500, 0x259F + 1): 592 | try: 593 | eng_font.selection.select(("more", "unicode"), uni) 594 | except Exception: 595 | pass 596 | for glyph in eng_font.selection.byGlyphs: 597 | glyph.clear() 598 | # jpdoc 版の場合は罫線を日本語フォント優先にする 599 | if not options.get("jpdoc"): 600 | jp_font.selection.none() 601 | for uni in range(0x2500, 0x259F + 1): 602 | try: 603 | jp_font.selection.select(("more", "unicode"), uni) 604 | except Exception: 605 | pass 606 | for glyph in jp_font.selection.byGlyphs: 607 | glyph.clear() 608 | jp_font.mergeFonts(hack_font) 609 | 610 | 611 | def add_nerd_font_glyphs(jp_font, eng_font): 612 | """Nerd Fontのグリフを追加する""" 613 | global nerd_font 614 | # Nerd Fontのグリフを追加する 615 | if nerd_font is None: 616 | nerd_font = fontforge.open(f"{SOURCE_FONTS_DIR}/SymbolsNerdFont-Regular.ttf") 617 | nerd_font.em = EM_ASCENT + EM_DESCENT 618 | glyph_names = set() 619 | for nerd_glyph in nerd_font.glyphs(): 620 | # Nerd Fontsのグリフ名をユニークにするため接尾辞を付ける 621 | nerd_glyph.glyphname = f"{nerd_glyph.glyphname}-nf" 622 | # postテーブルでのグリフ名重複対策 623 | # fonttools merge で合成した後、MacOSで `'post'テーブルの使用性` エラーが発生することへの対処 624 | if nerd_glyph.glyphname in glyph_names: 625 | nerd_glyph.glyphname = f"{nerd_glyph.glyphname}-{nerd_glyph.encoding}" 626 | glyph_names.add(nerd_glyph.glyphname) 627 | # 幅を調整する 628 | half_width = eng_font[0x0030].width 629 | # Powerline Symbols の調整 630 | if 0xE0B0 <= nerd_glyph.unicode <= 0xE0D7: 631 | # 位置と幅合わせ 632 | if nerd_glyph.width < half_width: 633 | nerd_glyph.transform( 634 | psMat.translate((half_width - nerd_glyph.width) / 2, 0) 635 | ) 636 | elif nerd_glyph.width > half_width: 637 | nerd_glyph.transform(psMat.scale(half_width / nerd_glyph.width, 1)) 638 | # グリフの高さ・位置を調整する 639 | nerd_glyph.transform(psMat.scale(1, 1.21)) 640 | nerd_glyph.transform(psMat.translate(0, -24)) 641 | elif nerd_glyph.width < (EM_ASCENT + EM_DESCENT) * 0.6: 642 | # 幅が狭いグリフは中央寄せとみなして調整する 643 | nerd_glyph.transform( 644 | psMat.translate((half_width - nerd_glyph.width) / 2, 0) 645 | ) 646 | # 幅を設定 647 | nerd_glyph.width = half_width 648 | # 日本語フォントにマージするため、既に存在する場合は削除する 649 | for nerd_glyph in nerd_font.glyphs(): 650 | if nerd_glyph.unicode != -1: 651 | # 既に存在する場合は削除する 652 | try: 653 | for glyph in jp_font.selection.select( 654 | ("unicode", None), nerd_glyph.unicode 655 | ).byGlyphs: 656 | glyph.clear() 657 | except Exception: 658 | pass 659 | try: 660 | for glyph in eng_font.selection.select( 661 | ("unicode", None), nerd_glyph.unicode 662 | ).byGlyphs: 663 | glyph.clear() 664 | except Exception: 665 | pass 666 | jp_font.mergeFonts(nerd_font) 667 | jp_font.selection.none() 668 | eng_font.selection.none() 669 | 670 | 671 | def delete_glyphs_with_duplicate_glyph_names(font): 672 | """重複するグリフ名を持つグリフをリネームする""" 673 | glyph_name_set = set() 674 | for glyph in font.glyphs(): 675 | if glyph.glyphname in glyph_name_set: 676 | glyph.glyphname = f"{glyph.glyphname}_{glyph.encoding}" 677 | else: 678 | glyph_name_set.add(glyph.glyphname) 679 | 680 | 681 | def edit_meta_data(font, weight: str, variant: str, cap_height: int, x_height: int): 682 | """フォント内のメタデータを編集する""" 683 | font.ascent = EM_ASCENT 684 | font.descent = EM_DESCENT 685 | 686 | font.os2_typoascent = OS2_ASCENT 687 | font.os2_typodescent = -OS2_DESCENT 688 | font.os2_winascent = OS2_ASCENT 689 | font.os2_windescent = OS2_DESCENT 690 | font.os2_typolinegap = 0 691 | 692 | font.hhea_ascent = OS2_ASCENT 693 | font.hhea_descent = -OS2_DESCENT 694 | font.hhea_linegap = 0 695 | 696 | font.os2_xheight = x_height 697 | font.os2_capheight = cap_height 698 | 699 | if "Regular" == weight or "Italic" == weight: 700 | font.os2_weight = 400 701 | elif "Bold" in weight: 702 | font.os2_weight = 700 703 | 704 | font.sfnt_names = ( 705 | ( 706 | "English (US)", 707 | "License", 708 | """This Font Software is licensed under the SIL Open Font License, 709 | Version 1.1. This license is available with a FAQ 710 | at: http://scripts.sil.org/OFL""", 711 | ), 712 | ("English (US)", "License URL", "http://scripts.sil.org/OFL"), 713 | ("English (US)", "Version", VERSION), 714 | ) 715 | font.familyname = f"{FONT_NAME} {variant}".strip() 716 | font.fontname = f"{FONT_NAME}{variant}-{weight}".replace(" ", "").strip() 717 | font.fullname = f"{FONT_NAME} {variant}".strip() + f" {weight}" 718 | font.os2_vendor = VENDER_NAME 719 | font.copyright = COPYRIGHT 720 | 721 | 722 | if __name__ == "__main__": 723 | main() 724 | -------------------------------------------------------------------------------- /fonttools_script.py: -------------------------------------------------------------------------------- 1 | #!/bin/env python3 2 | 3 | import configparser 4 | import glob 5 | import os 6 | import sys 7 | import xml.etree.ElementTree as ET 8 | from pathlib import Path 9 | 10 | from fontTools import merge, ttLib, ttx 11 | from ttfautohint import options, ttfautohint 12 | 13 | # iniファイルを読み込む 14 | settings = configparser.ConfigParser() 15 | settings.read("build.ini", encoding="utf-8") 16 | 17 | FONT_NAME = settings.get("DEFAULT", "FONT_NAME") 18 | FONTFORGE_PREFIX = settings.get("DEFAULT", "FONTFORGE_PREFIX") 19 | FONTTOOLS_PREFIX = settings.get("DEFAULT", "FONTTOOLS_PREFIX") 20 | BUILD_FONTS_DIR = settings.get("DEFAULT", "BUILD_FONTS_DIR") 21 | HALF_WIDTH_12 = int(settings.get("DEFAULT", "HALF_WIDTH_12")) 22 | FULL_WIDTH_35 = int(settings.get("DEFAULT", "FULL_WIDTH_35")) 23 | WIDTH_35_STR = settings.get("DEFAULT", "WIDTH_35_STR") 24 | 25 | 26 | def main(): 27 | # 第一引数を取得 28 | # 特定のバリエーションのみを処理するための指定 29 | specific_variant = sys.argv[1] if len(sys.argv) > 1 else None 30 | 31 | edit_fonts(specific_variant) 32 | 33 | 34 | def edit_fonts(specific_variant: str): 35 | """フォントを編集する""" 36 | 37 | if specific_variant is None: 38 | specific_variant = "" 39 | 40 | # ファイルをパターンで指定 41 | file_pattern = f"{FONTFORGE_PREFIX}{FONT_NAME}{specific_variant}*-eng.ttf" 42 | filenames = glob.glob(f"{BUILD_FONTS_DIR}/{file_pattern}") 43 | # ファイルが見つからない場合はエラー 44 | if len(filenames) == 0: 45 | print(f"Error: {file_pattern} not found") 46 | return 47 | paths = [Path(f) for f in filenames] 48 | for path in paths: 49 | print(f"edit {str(path)}") 50 | style = path.stem.split("-")[1] 51 | variant = path.stem.split("-")[0].replace(f"{FONTFORGE_PREFIX}{FONT_NAME}", "") 52 | add_hinting(str(path), str(path).replace(".ttf", "-hinted.ttf")) 53 | merge_fonts(style, variant) 54 | fix_font_tables(style, variant) 55 | 56 | # 一時ファイルを削除 57 | # スタイル部分以降はワイルドカードで指定 58 | for filename in glob.glob( 59 | f"{BUILD_FONTS_DIR}/{FONTTOOLS_PREFIX}{FONT_NAME}{specific_variant}*" 60 | ): 61 | os.remove(filename) 62 | for filename in glob.glob( 63 | f"{BUILD_FONTS_DIR}/{FONTFORGE_PREFIX}{FONT_NAME}{specific_variant}*" 64 | ): 65 | os.remove(filename) 66 | 67 | 68 | def add_hinting(input_font_path, output_font_path): 69 | """フォントにヒンティングを付ける""" 70 | args = [ 71 | "-l", 72 | "6", 73 | "-r", 74 | "45", 75 | "-D", 76 | "latn", 77 | "-f", 78 | "none", 79 | "-S", 80 | "-W", 81 | "-X", 82 | "14-", 83 | "-x", 84 | "0", 85 | "-I", 86 | input_font_path, 87 | output_font_path, 88 | ] 89 | options_ = options.parse_args(args) 90 | print("exec hinting", options_) 91 | ttfautohint(**options_) 92 | 93 | 94 | def merge_fonts(style, variant): 95 | """フォントを結合する""" 96 | eng_font_path = f"{BUILD_FONTS_DIR}/{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{style}-eng-hinted.ttf" 97 | jp_font_path = ( 98 | f"{BUILD_FONTS_DIR}/{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{style}-jp.ttf" 99 | ) 100 | # vhea, vmtxテーブルを削除 101 | jp_font_object = ttLib.TTFont(jp_font_path) 102 | if "vhea" in jp_font_object: 103 | del jp_font_object["vhea"] 104 | if "vmtx" in jp_font_object: 105 | del jp_font_object["vmtx"] 106 | jp_font_object.save(jp_font_path) 107 | # フォントを結合 108 | merger = merge.Merger() 109 | merged_font = merger.merge([eng_font_path, jp_font_path]) 110 | merged_font.save( 111 | f"{BUILD_FONTS_DIR}/{FONTTOOLS_PREFIX}{FONT_NAME}{variant}-{style}_merged.ttf" 112 | ) 113 | 114 | 115 | def fix_font_tables(style, variant): 116 | """フォントテーブルを編集する""" 117 | 118 | input_font_name = f"{FONTTOOLS_PREFIX}{FONT_NAME}{variant}-{style}_merged.ttf" 119 | output_name_base = f"{FONTTOOLS_PREFIX}{FONT_NAME}{variant}-{style}" 120 | completed_name_base = f"{FONT_NAME.replace(' ', '')}{variant}-{style}" 121 | 122 | # OS/2, post テーブルのみのttxファイルを出力 123 | xml = dump_ttx(input_font_name, output_name_base) 124 | # OS/2 テーブルを編集 125 | fix_os2_table(xml, style, flag_35=WIDTH_35_STR in variant) 126 | # post テーブルを編集 127 | fix_post_table(xml, flag_35=WIDTH_35_STR in variant) 128 | # cmap テーブルを編集 129 | fix_cmap_table(xml, style, variant) 130 | 131 | # ttxファイルを上書き保存 132 | xml.write( 133 | f"{BUILD_FONTS_DIR}/{output_name_base}.ttx", 134 | encoding="utf-8", 135 | xml_declaration=True, 136 | ) 137 | 138 | # ttxファイルをttfファイルに適用 139 | ttx.main( 140 | [ 141 | "-o", 142 | f"{BUILD_FONTS_DIR}/{output_name_base}_os2_post.ttf", 143 | "-m", 144 | f"{BUILD_FONTS_DIR}/{input_font_name}", 145 | f"{BUILD_FONTS_DIR}/{output_name_base}.ttx", 146 | ] 147 | ) 148 | 149 | # ファイル名を変更 150 | os.rename( 151 | f"{BUILD_FONTS_DIR}/{output_name_base}_os2_post.ttf", 152 | f"{BUILD_FONTS_DIR}/{completed_name_base}.ttf", 153 | ) 154 | 155 | 156 | def dump_ttx(input_name_base, output_name_base) -> ET: 157 | """OS/2, post テーブルのみのttxファイルを出力""" 158 | ttx.main( 159 | [ 160 | "-t", 161 | "OS/2", 162 | "-t", 163 | "post", 164 | "-t", 165 | "cmap", 166 | "-f", 167 | "-o", 168 | f"{BUILD_FONTS_DIR}/{output_name_base}.ttx", 169 | f"{BUILD_FONTS_DIR}/{input_name_base}", 170 | ] 171 | ) 172 | 173 | return ET.parse(f"{BUILD_FONTS_DIR}/{output_name_base}.ttx") 174 | 175 | 176 | def fix_os2_table(xml: ET, style: str, flag_35: bool = False): 177 | """OS/2 テーブルを編集する""" 178 | # xAvgCharWidthを編集 179 | # タグ形式: 180 | if flag_35: 181 | x_avg_char_width = FULL_WIDTH_35 182 | else: 183 | x_avg_char_width = HALF_WIDTH_12 184 | xml.find("OS_2/xAvgCharWidth").set("value", str(x_avg_char_width)) 185 | 186 | # fsSelectionを編集 187 | # タグ形式: 188 | # スタイルに応じたビットを立てる 189 | fs_selection = None 190 | if style == "Regular": 191 | fs_selection = "00000001 01000000" 192 | elif style == "Italic": 193 | fs_selection = "00000001 00000001" 194 | elif style == "Bold": 195 | fs_selection = "00000001 00100000" 196 | elif style == "BoldItalic": 197 | fs_selection = "00000001 00100001" 198 | 199 | if fs_selection is not None: 200 | xml.find("OS_2/fsSelection").set("value", fs_selection) 201 | 202 | # panoseを編集 203 | # タグ形式: 204 | # 205 | # 206 | # 207 | # 208 | # 209 | # 210 | # 211 | # 212 | # 213 | # 214 | # 215 | # 216 | if style == "Regular" or style == "Italic": 217 | bWeight = 5 218 | else: 219 | bWeight = 8 220 | if flag_35: 221 | panose = { 222 | "bFamilyType": 2, 223 | "bSerifStyle": 11, 224 | "bWeight": bWeight, 225 | "bProportion": 3, 226 | "bContrast": 2, 227 | "bStrokeVariation": 2, 228 | "bArmStyle": 3, 229 | "bLetterForm": 2, 230 | "bMidline": 2, 231 | "bXHeight": 7, 232 | } 233 | else: 234 | panose = { 235 | "bFamilyType": 2, 236 | "bSerifStyle": 11, 237 | "bWeight": bWeight, 238 | "bProportion": 9, 239 | "bContrast": 2, 240 | "bStrokeVariation": 2, 241 | "bArmStyle": 3, 242 | "bLetterForm": 2, 243 | "bMidline": 2, 244 | "bXHeight": 7, 245 | } 246 | 247 | for key, value in panose.items(): 248 | xml.find(f"OS_2/panose/{key}").set("value", str(value)) 249 | 250 | 251 | def fix_post_table(xml: ET, flag_35): 252 | """post テーブルを編集する""" 253 | # isFixedPitchを編集 254 | # タグ形式: 255 | is_fixed_pitch = 0 if flag_35 else 1 256 | xml.find("post/isFixedPitch").set("value", str(is_fixed_pitch)) 257 | # underlinePosition, underlineThicknessを編集 258 | # 259 | # 260 | # EM 1000 -> 2048 の拡大率に合わせて値を調整 261 | xml.find("post/underlinePosition").set("value", "-317") 262 | xml.find("post/underlineThickness").set("value", "102") 263 | 264 | 265 | def fix_cmap_table(xml: ET, style: str, variant: str): 266 | """異体字シーケンスを搭載するために cmap テーブルを編集する。 267 | pyftmerge で結合すると異体字シーケンスを司るテーブル cmap_format_14 が 268 | 消えてしまうため、マージする前の編集済み日本語フォントから該当テーブル情報を取り出して適用する。""" 269 | # タグ形式: 270 | # 271 | # 272 | # 273 | # 274 | source_xml = dump_ttx( 275 | f"{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{style}-jp.ttf", 276 | f"{FONTFORGE_PREFIX}{FONT_NAME}{variant}-{style}-jp", 277 | ) 278 | source_cmap_format_14 = source_xml.find("cmap/cmap_format_14") 279 | target_cmap = xml.find("cmap") 280 | target_cmap.append(source_cmap_format_14) 281 | 282 | 283 | if __name__ == "__main__": 284 | main() 285 | -------------------------------------------------------------------------------- /make.ps1: -------------------------------------------------------------------------------- 1 | # ini から VERSION を取得 2 | $ini = Get-Content .\build.ini 3 | $version = ($ini | Select-String -Pattern "VERSION").ToString().Split("=")[1].Trim() 4 | 5 | # スクリプトファイルがある場所に移動する 6 | Set-Location -Path $PSScriptRoot 7 | # 各ファイルを置くフォルダを作成 8 | New-Item -ItemType Directory -Force -Path ".\release_files\" 9 | # ビルドフォルダを削除 10 | Remove-Item -Path .\build -Recurse -Force 11 | 12 | # 並列処理内で、処理が重いNerd Fontsのビルドを優先して処理する 13 | $option_and_output_folder = @( 14 | @("--nerd-font", "NF-"), # ビルド 1:2幅 + Nerd Fonts 15 | @("--35 --nerd-font", "35NF-"), # ビルド 3:5幅 + Nerd Fonts 16 | @("--nerd-font --liga", "NFLG-"), # ビルド 1:2幅 + Nerd Fonts + リガチャ 17 | @("--35 --nerd-font --liga", "35NFLG-"), # ビルド 3:5幅 + Nerd Fonts + リガチャ 18 | @("", "-"), # ビルド 1:2幅 19 | @("--35", "35-"), # ビルド 3:5幅 20 | @("--liga", "LG-"), # ビルド 1:2幅 + リガチャ 21 | @("--35 --liga", "35LG-"), # ビルド 3:5幅 + リガチャ 22 | @("--jpdoc", "JPDOC-"), # ビルド 1:2幅 JPDOC版 23 | @("--35 --jpdoc", "35JPDOC-"), # ビルド 3:5幅 JPDOC版 24 | @("--hidden-zenkaku-space ", "HS-"), # ビルド 1:2 全角スペース不可視 25 | @("--hidden-zenkaku-space --35", "35HS-"), # ビルド 3:5 全角スペース不可視 26 | @("--hidden-zenkaku-space --liga", "HSLG-"), # ビルド 1:2 全角スペース不可視 + リガチャ 27 | @("--hidden-zenkaku-space --35 --liga", "35HSLG-"), # ビルド 3:5 全角スペース不可視 + リガチャ 28 | @("--hidden-zenkaku-space --jpdoc", "HSJPDOC-"), # ビルド 1:2 全角スペース不可視 JPDOC版 29 | @("--hidden-zenkaku-space --35 --jpdoc", "35HSJPDOC-") # ビルド 3:5 全角スペース不可視 JPDOC版 30 | ) 31 | 32 | $option_and_output_folder | Foreach-Object -ThrottleLimit 4 -Parallel { 33 | Write-Host "fontforge script start. option: `"$($_[0])`"" 34 | Invoke-Expression "& `"C:\Program Files (x86)\FontForgeBuilds\bin\ffpython.exe`" .\fontforge_script.py --do-not-delete-build-dir $($_[0])" ` 35 | && Write-Host "fonttools script start. option: `"$($_[1])`"" ` 36 | && python fonttools_script.py $_[1] 37 | } 38 | 39 | $move_file_src_dest = @( 40 | @("UDEVGothic*HS*-*.ttf", "UDEVGothic_HS_$version"), 41 | @("UDEVGothic*NF*-*.ttf", "UDEVGothic_NF_$version"), 42 | @("UDEVGothic*-*.ttf", "UDEVGothic_$version") 43 | ) 44 | 45 | $timestamp = Get-Date -Format "yyyyMMddHHmmss" 46 | $move_dir = ".\release_files\build_$timestamp" 47 | 48 | $move_file_src_dest | Foreach-Object { 49 | $folder_path = "$move_dir\$($_[1])" 50 | New-Item -ItemType Directory -Force -Path $folder_path 51 | Move-Item -Path ".\build\$($_[0])" -Destination $folder_path -Force 52 | } 53 | -------------------------------------------------------------------------------- /old_script/cmap_patch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 異体字シーケンス用のパッチ。 4 | # pyftmerge後にはGlyphIDが変わってしまうことから、機械的にcmapを復元させることが難しい。 5 | 6 | BASE_DIR="$(cd $(dirname $0); pwd)" 7 | BUILD_TMP_DIR="${BASE_DIR}/build_tmp" 8 | 9 | FAMILYNAME="$1" 10 | PREFIX="$2" 11 | 12 | FONT_PATTERN=${PREFIX}${FAMILYNAME}'*.ttf' 13 | 14 | CMAP_MASTER="${BASE_DIR}/source/cmap_format_14_master" 15 | TMP_CMAP_MASTER='tmp_cmap_format_14_master' 16 | TMP_TTX='tmp_cmap_format_14' 17 | 18 | CMAP_MASTER_XML="${BASE_DIR}/source/cmap_format_14.xml" 19 | 20 | GENERATED_CMAP="${BUILD_TMP_DIR}/gen_cmap" 21 | 22 | function buildCmap() { 23 | ttx_path="$1" 24 | 25 | # 適用するttxファイルを作成 26 | ( 27 | egrep -v 'cmap_format_14| uvs=' "$ttx_path" | awk '/<\/cmap>/ {exit} {print}' 28 | cat "$CMAP_MASTER_XML" | egrep 'cmap_format_14|name=' 29 | echo '' 30 | awk 'BEGIN {prFlag = 0} // {prFlag = 1} prFlag == 1 {print}' "$ttx_path" 31 | ) > $GENERATED_CMAP 32 | } 33 | 34 | function proc() { 35 | font="$1" 36 | 37 | if [ ! -f "$font" ]; then 38 | echo "File not found: $font" 39 | return 40 | fi 41 | 42 | ttx -t cmap -t post $font 43 | mv ${font} ${font}_orig 44 | buildCmap "${font%%.ttf}.ttx" 45 | ttx -o ${font} -m ${font}_orig $GENERATED_CMAP 46 | } 47 | 48 | echo '### Start cmap_patch ###' 49 | 50 | for f in ${BUILD_TMP_DIR}/${FONT_PATTERN}; do 51 | proc "$f" 52 | done 53 | 54 | rm -f "${BUILD_TMP_DIR}/"*.ttx 55 | -------------------------------------------------------------------------------- /old_script/copyright.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_DIR="$(cd $(dirname $0); pwd)/build_tmp" 4 | 5 | FAMILYNAME="$1" 6 | PREFIX="$2" 7 | 8 | FONT_PATTERN=${PREFIX}${FAMILYNAME}'*.ttf' 9 | 10 | COPYRIGHT='[BIZ UDGothic] 11 | Copyright 2022 The BIZ UDGothic Project Authors (https://github.com/googlefonts/morisawa-biz-ud-gothic) 12 | 13 | [JetBrains Mono] 14 | Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) 15 | 16 | [Nerd Fonts] 17 | Copyright (c) 2014, Ryan L McIntyre (https://ryanlmcintyre.com). 18 | 19 | [UDEV Gothic] 20 | Copyright (c) 2022, Yuko Otawara' 21 | 22 | for P in ${BASE_DIR}/${FONT_PATTERN} 23 | do 24 | ttx -t name -t post "$P" 25 | mv "${P%%.ttf}.ttx" ${BASE_DIR}/tmp.ttx 26 | cat ${BASE_DIR}/tmp.ttx | perl -pe "s?###COPYRIGHT###?$COPYRIGHT?" > "${P%%.ttf}.ttx" 27 | 28 | mv "$P" "${P}_orig" 29 | ttx -m "${P}_orig" "${P%%.ttf}.ttx" 30 | done 31 | 32 | rm -f "${BASE_DIR}/"*.ttx 33 | -------------------------------------------------------------------------------- /old_script/generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_DIR=$(cd $(dirname $0); pwd) 4 | 5 | WORK_DIR="$BASE_DIR/build_tmp" 6 | if [ ! -d "$WORK_DIR" ] 7 | then 8 | mkdir "$WORK_DIR" 9 | fi 10 | 11 | VERSION="$1" 12 | FAMILYNAME="$2" 13 | DISP_FAMILYNAME="$3" 14 | DISP_FAMILYNAME_JP="UDEV ゴシック" 15 | LIGA_FLAG="$4" # 0: リガチャなし 1: リガチャあり 16 | JPDOC_FLAG="$5" # 0: JetBrains Monoの記号優先 1: 日本語ドキュメントで使用頻度の高い記号はBIZ UDゴシック優先 17 | NERD_FONTS_FLAG="$6" # 0: Nerd Fonts なし 1: Nerd Fonts あり 18 | W35_FLAG="$7" # 0: 通常幅 1: 半角3:全角5幅 19 | ITALIC_FLAG="$8" # 0: 非イタリック 1: イタリック 20 | 21 | EM_ASCENT=1802 22 | EM_DESCENT=246 23 | EM=$(($EM_ASCENT + $EM_DESCENT)) 24 | 25 | ASCENT=$(($EM_ASCENT + 160)) 26 | DESCENT=$(($EM_DESCENT + 170)) 27 | TYPO_LINE_GAP=0 28 | 29 | ORIG_FULL_WIDTH=2048 30 | ORIG_HALF_WIDTH=$(($ORIG_FULL_WIDTH / 2)) 31 | 32 | HALF_WIDTH=$(($EM / 2)) 33 | SHRINK_X=90 34 | SHRINK_Y=99 35 | 36 | ITALIC_ANGLE=-9 37 | 38 | if [ $W35_FLAG -eq 1 ] 39 | then 40 | ASCENT=$(($EM_ASCENT + 180)) 41 | DESCENT=$(($EM_DESCENT + 220)) 42 | HALF_WIDTH=1227 43 | FULL_WIDTH=$(($HALF_WIDTH / 3 * 5)) 44 | SHRINK_X=100 45 | SHRINK_Y=100 46 | fi 47 | 48 | FONTS_DIRECTORIES="${BASE_DIR}/source/" 49 | 50 | SRC_FONT_JBMONO_REGULAR='JetBrainsMonoNL-Regular.ttf' 51 | SRC_FONT_JBMONO_BOLD='JetBrainsMonoNL-Bold.ttf' 52 | if [ "$LIGA_FLAG" == 0 -a "$ITALIC_FLAG" == 1 ] 53 | then 54 | SRC_FONT_JBMONO_REGULAR='JetBrainsMonoNL-Italic.ttf' 55 | SRC_FONT_JBMONO_BOLD='JetBrainsMonoNL-BoldItalic.ttf' 56 | elif [ "$LIGA_FLAG" == 1 -a "$ITALIC_FLAG" == 0 ] 57 | then 58 | SRC_FONT_JBMONO_REGULAR='JetBrainsMono-Regular.ttf' 59 | SRC_FONT_JBMONO_BOLD='JetBrainsMono-Bold.ttf' 60 | elif [ "$LIGA_FLAG" == 1 -a "$ITALIC_FLAG" == 1 ] 61 | then 62 | SRC_FONT_JBMONO_REGULAR='JetBrainsMono-Italic.ttf' 63 | SRC_FONT_JBMONO_BOLD='JetBrainsMono-BoldItalic.ttf' 64 | fi 65 | SRC_FONT_BIZUD_REGULAR='fontforge_export_BIZUDGothic-Regular.ttf' 66 | SRC_FONT_BIZUD_BOLD='fontforge_export_BIZUDGothic-Bold.ttf' 67 | 68 | PATH_JBMONO_REGULAR=`find $FONTS_DIRECTORIES -follow -name "$SRC_FONT_JBMONO_REGULAR"` 69 | PATH_JBMONO_BOLD=`find $FONTS_DIRECTORIES -follow -name "$SRC_FONT_JBMONO_BOLD"` 70 | PATH_BIZUD_REGULAR=`find $FONTS_DIRECTORIES -follow -name "$SRC_FONT_BIZUD_REGULAR"` 71 | PATH_BIZUD_BOLD=`find $FONTS_DIRECTORIES -follow -name "$SRC_FONT_BIZUD_BOLD"` 72 | PATH_IDEOGRAPHIC_SPACE=`find $FONTS_DIRECTORIES -follow -name 'ideographic_space.sfd'` 73 | PATH_ZERO_REGULAR=`find $FONTS_DIRECTORIES -follow -name 'zero-Regular.sfd'` 74 | PATH_ZERO_BOLD=`find $FONTS_DIRECTORIES -follow -name 'zero-Bold.sfd'` 75 | PATH_NERD_FONTS=`find $FONTS_DIRECTORIES -follow -name 'JetBrainsMonoNerdFont-Regular.ttf'` 76 | 77 | MODIFIED_FONT_JBMONO_REGULAR='modified_jbmono_regular.sfd' 78 | MODIFIED_FONT_JBMONO_BOLD='modified_jbmono_bold.sfd' 79 | MODIFIED_FONT_BIZUD_REGULAR='modified_bizud_regular.ttf' 80 | MODIFIED_FONT_BIZUD_BOLD='modified_bizud_bold.ttf' 81 | MODIFIED_FONT_NERD_FONTS_REGULAR='tmp_nerd_fonts_regular.ttf' 82 | MODIFIED_FONT_NERD_FONTS_BOLD='tmp_nerd_fonts_bold.ttf' 83 | MODIFIED_FONT_BIZUD35_REGULAR='tmp_bizud_regular.ttf' 84 | MODIFIED_FONT_BIZUD35_BOLD='tmp_bizud_bold.ttf' 85 | 86 | if [ -z "$SRC_FONT_JBMONO_REGULAR" -o \ 87 | -z "$SRC_FONT_JBMONO_BOLD" -o \ 88 | -z "$SRC_FONT_BIZUD_REGULAR" -o \ 89 | -z "$SRC_FONT_BIZUD_BOLD" ] 90 | then 91 | echo 'ソースフォントファイルが存在しない' 92 | exit 1 93 | fi 94 | 95 | GEN_SCRIPT_JBMONO='gen_script_jbmono.pe' 96 | 97 | NERD_ICON_LIST=' 98 | # IEC Power Symbols 99 | SelectMore(0u23fb, 0u23fe) 100 | SelectMore(0u2b58) 101 | # Octicons 102 | SelectMore(0u2665) 103 | SelectMore(0u26a1) 104 | SelectMore(0uf400, 0uf532) 105 | # Pomicons 106 | SelectMore(0ue000, 0ue00a) 107 | # Powerline -> JetBrains Mono標準のものを使用する 108 | #SelectMore(0ue0a0, 0ue0a2) 109 | #SelectMore(0ue0b0, 0ue0b3) 110 | # Powerline Extra 111 | SelectMore(0ue0a3) 112 | SelectMore(0ue0b4, 0ue0c8) 113 | SelectMore(0ue0ca) 114 | SelectMore(0ue0cc, 0ue0d4) 115 | # Font Awesome Extension 116 | SelectMore(0ue200, 0ue2a9) 117 | # Weather Icons 118 | SelectMore(0ue300, 0ue3e3) 119 | # Seti-UI + Custom 120 | SelectMore(0ue5fa, 0ue6ac) 121 | # Devicons 122 | SelectMore(0ue700, 0ue7c5) 123 | # Codicons 124 | SelectMore(0uea60, 0uebeb) 125 | # Font Awesome 126 | SelectMore(0uf000, 0uf2e0) 127 | # Font Logos 128 | SelectMore(0uf300, 0uf32f) 129 | # Material Design 130 | SelectMore(0uf0001, 0uf1af0) 131 | # Other 132 | SelectMore(0u2630) 133 | ' 134 | 135 | # JetBrains Monoの調整 136 | cat > "${WORK_DIR}/${GEN_SCRIPT_JBMONO}" << _EOT_ 137 | 138 | # Set parameters 139 | input_list = ["${PATH_JBMONO_REGULAR}", \\ 140 | "${PATH_JBMONO_BOLD}"] 141 | output_list = ["${MODIFIED_FONT_JBMONO_REGULAR}", \\ 142 | "${MODIFIED_FONT_JBMONO_BOLD}"] 143 | zero_list = ["${PATH_ZERO_REGULAR}", \\ 144 | "${PATH_ZERO_BOLD}"] 145 | fontstyle_list = ["Regular", "Bold"] 146 | if (${ITALIC_FLAG} == 1) 147 | fontstyle_list = ["Italic", "Bold Italic"] 148 | endif 149 | fontweight_list = [400, 700] 150 | panoseweight_list = [5, 8] 151 | 152 | i = 0 153 | while (i < SizeOf(input_list)) 154 | # フォントファイルを開く 155 | Print("Open " + input_list[i]) 156 | Open(input_list[i]) 157 | 158 | # 0 をスラッシュゼロにする 159 | Select(0u0030); Clear() 160 | MergeFonts(zero_list[i]) 161 | # スラッシュゼロの斜体変形 162 | if (${ITALIC_FLAG} == 1) 163 | Select(0u0030) 164 | Italic(${ITALIC_ANGLE}, 1, 0, 1, 1, 1, 1) 165 | Move(-44, 0) 166 | endif 167 | 168 | # サイズ調整 169 | SelectWorthOutputting() 170 | UnlinkReference() 171 | ScaleToEm(${EM_ASCENT}, ${EM_DESCENT}) 172 | if (${W35_FLAG} == 0) 173 | Scale(${SHRINK_X}, ${SHRINK_Y}, 0, 0) 174 | endif 175 | 176 | # 半角スペースから幅を取得 177 | Select(0u0020) 178 | glyphWidth = GlyphInfo("Width") 179 | 180 | # 幅の調整 181 | SelectWorthOutputting() 182 | move_x = (${HALF_WIDTH} - glyphWidth) / 2 183 | Move(move_x, 0) 184 | foreach 185 | w = GlyphInfo("Width") 186 | if (w > 0) 187 | SetWidth(${HALF_WIDTH}, 0) 188 | endif 189 | endloop 190 | 191 | # 等幅版だと幾何学模様 (U+25A0-U+25FF) グリフが横幅をはみ出しすぎるので縮小する 192 | if (${W35_FLAG} == 0) 193 | Select(0u25A0, 0u25FF) 194 | foreach 195 | if (WorthOutputting()) 196 | Scale(91, 91) 197 | SetWidth(${HALF_WIDTH}, 0) 198 | endif 199 | endloop 200 | endif 201 | 202 | # JPDOC版では、日本語ドキュメントで使用頻度の高い記号にBIZ UDゴシックの全角グリフを優先して適用する 203 | if ($JPDOC_FLAG == 1) 204 | SelectNone() 205 | SelectMore(0u00A7) # § 206 | SelectMore(0u00B1) # ± 207 | SelectMore(0u00B6) # ¶ 208 | SelectMore(0u00F7) # ÷ 209 | SelectMore(0u00D7) # × 210 | SelectMore(0u21D2) # ⇒ 211 | SelectMore(0u21D4) # ⇔ 212 | SelectMore(0u25A0, 0u25A1) # ■-□ 213 | SelectMore(0u25B2, 0u25B3) # ▲-△ 214 | SelectMore(0u25BC, 0u25BD) # ▼-▽ 215 | SelectMore(0u25C6, 0u25C7) # ◆-◇ 216 | SelectMore(0u25CB) # ○ 217 | SelectMore(0u25CE, 0u25CF) # ◎-● 218 | SelectMore(0u25E5) # ◥ 219 | SelectMore(0u25EF) # ◯ 220 | SelectMore(0u221A) # √ 221 | SelectMore(0u221E) # ∞ 222 | SelectMore(0u2010) # ‐ 223 | SelectMore(0u2018, 0u201A) # ‘-‚ 224 | SelectMore(0u201C, 0u201E) # “-„ 225 | SelectMore(0u2020, 0u2021) # †-‡ 226 | SelectMore(0u2026) # … 227 | SelectMore(0u2030) # ‰ 228 | SelectMore(0u2190, 0u2193) # ←-↓ 229 | SelectMore(0u2200) # ∀ 230 | SelectMore(0u2202, 0u2203) # ∂-∃ 231 | SelectMore(0u2208) # ∈ 232 | SelectMore(0u220B) # ∋ 233 | SelectMore(0u2211) # ∑ 234 | SelectMore(0u2225) # ∥ 235 | SelectMore(0u2227, 0u222C) # ∧-∬ 236 | SelectMore(0u2260, 0u2261) # ≠-≡ 237 | SelectMore(0u2282, 0u2283) # ⊂-⊃ 238 | SelectMore(0u2286, 0u2287) # ⊆-⊇ 239 | SelectMore(0u2500, 0u257F) # ─-╿ (Box Drawing) 240 | Clear() 241 | endif 242 | 243 | # FULLWIDTH RIGHT CURLY BRACKET は全角優先にするため削除 244 | Select(0uFF5B) # { 245 | SelectMore(0uFF5D) # } 246 | Clear() 247 | 248 | # BIZ UDゴシックから削除するグリフリストの作成 249 | array_end = 65535 250 | exist_glyph_array = Array(array_end) 251 | j = 0 252 | while (j < array_end) 253 | if (WorthOutputting(j)) 254 | exist_glyph_array[j] = 1 255 | else 256 | exist_glyph_array[j] = 0 257 | endif 258 | j++ 259 | endloop 260 | 261 | # パスの小数点以下を切り捨て 262 | SelectWorthOutputting() 263 | RoundToInt() 264 | 265 | # 修正後のフォントファイルを保存 266 | Print("Save " + output_list[i]) 267 | Save("${WORK_DIR}/" + output_list[i]) 268 | Close() 269 | 270 | # 出力フォントファイルの作成 271 | New() 272 | Reencode("unicode") 273 | ScaleToEm(${EM_ASCENT}, ${EM_DESCENT}) 274 | 275 | MergeFonts("${WORK_DIR}/" + output_list[i]) 276 | 277 | Print("Save " + output_list[i]) 278 | SetOS2Value("Weight", fontweight_list[i]) # Book or Bold 279 | SetOS2Value("Width", 5) # Medium 280 | SetOS2Value("FSType", 0) 281 | SetOS2Value("VendorID", "twr") 282 | SetOS2Value("IBMFamily", 2057) # SS Typewriter Gothic 283 | SetOS2Value("WinAscentIsOffset", 0) 284 | SetOS2Value("WinDescentIsOffset", 0) 285 | SetOS2Value("TypoAscentIsOffset", 0) 286 | SetOS2Value("TypoDescentIsOffset", 0) 287 | SetOS2Value("HHeadAscentIsOffset", 0) 288 | SetOS2Value("HHeadDescentIsOffset", 0) 289 | SetOS2Value("WinAscent", ${ASCENT}) 290 | SetOS2Value("WinDescent", ${DESCENT}) 291 | SetOS2Value("TypoAscent", ${ASCENT}) 292 | SetOS2Value("TypoDescent", -${DESCENT}) 293 | SetOS2Value("TypoLineGap", ${TYPO_LINE_GAP}) 294 | SetOS2Value("HHeadAscent", ${ASCENT}) 295 | SetOS2Value("HHeadDescent", -${DESCENT}) 296 | SetOS2Value("HHeadLineGap", 0) 297 | if (${W35_FLAG} == 0) 298 | SetPanose([2, 11, panoseweight_list[i], 9, 2, 2, 3, 2, 2, 7]) 299 | else 300 | SetPanose([2, 11, panoseweight_list[i], 3, 2, 2, 3, 2, 2, 7]) 301 | endif 302 | 303 | fontname_style = fontstyle_list[i] 304 | # 斜体の設定 305 | if (Strstr(fontstyle_list[i], 'Italic') >= 0) 306 | SetItalicAngle(${ITALIC_ANGLE}) 307 | if (Strstr(fontstyle_list[i], ' Italic') >= 0) 308 | splited_style = StrSplit(fontstyle_list[i], " ") 309 | fontname_style = splited_style[0] + splited_style[1] 310 | endif 311 | endif 312 | 313 | fontfamily = "$FAMILYNAME" 314 | disp_fontfamily = "$DISP_FAMILYNAME" 315 | base_style = fontstyle_list[i] 316 | copyright = "###COPYRIGHT###" 317 | version = "$VERSION" 318 | 319 | # TTF名設定 - 英語 320 | SetTTFName(0x409, 0, copyright) 321 | SetTTFName(0x409, 1, disp_fontfamily) 322 | SetTTFName(0x409, 2, fontstyle_list[i]) 323 | SetTTFName(0x409, 3, disp_fontfamily + " : " + Strftime("%d-%m-%Y", 0)) 324 | SetTTFName(0x409, 4, disp_fontfamily + " " + fontstyle_list[i]) 325 | SetTTFName(0x409, 5, version) 326 | SetTTFName(0x409, 6, fontfamily + "-" + fontname_style) 327 | # TTF名設定 - 日本語 328 | # SetTTFName(0x411, 1, "${DISP_FAMILYNAME_JP}") 329 | # SetTTFName(0x411, 2, fontstyle_list[i]) 330 | # SetTTFName(0x411, 3, "FontForge 2.0 : " + \$fullname + " : " + Strftime("%d-%m-%Y", 0)) 331 | # SetTTFName(0x411, 4, "${DISP_FAMILYNAME_JP}" + " " + fontstyle_list[i]) 332 | 333 | #Generate("${WORK_DIR}/" + output_list[i], '') 334 | Generate("${WORK_DIR}/" + fontfamily + "-" + fontname_style + ".ttf", "") 335 | Close() 336 | 337 | i += 1 338 | endloop 339 | 340 | # BIZ UDゴシックの調整 341 | input_list = ["${PATH_BIZUD_REGULAR}", \\ 342 | "${PATH_BIZUD_BOLD}"] 343 | output_list = ["${MODIFIED_FONT_BIZUD_REGULAR}", \\ 344 | "${MODIFIED_FONT_BIZUD_BOLD}"] 345 | 346 | i = 0 347 | while (i < SizeOf(input_list)) 348 | New() 349 | Reencode("unicode") 350 | ScaleToEm(${EM_ASCENT}, ${EM_DESCENT}) 351 | 352 | MergeFonts(input_list[i]) 353 | 354 | SelectWorthOutputting() 355 | UnlinkReference() 356 | 357 | # リガチャが含まれる行にひらがな等の全角文字を入力すると、リガチャが解除される事象への対策 358 | if ($LIGA_FLAG == 1) 359 | lookups = GetLookups("GSUB"); numlookups = SizeOf(lookups); j = 0; 360 | while (j < numlookups) 361 | RemoveLookup(lookups[j]) 362 | j++ 363 | endloop 364 | endif 365 | 366 | # JetBrains Monoに含まれるグリフの削除 367 | j = 0 368 | while (j < array_end) 369 | if (WorthOutputting(j)) 370 | Select(j) 371 | if (exist_glyph_array[j] == 1) 372 | Clear() 373 | endif 374 | endif 375 | j++ 376 | endloop 377 | 378 | # 斜体に変形 379 | if (${ITALIC_FLAG} == 1) 380 | SelectWorthOutputting() 381 | Italic(${ITALIC_ANGLE}) 382 | foreach 383 | w = GlyphInfo("Width") 384 | if (w > 0 && w > ${HALF_WIDTH}) 385 | SetWidth(${ORIG_FULL_WIDTH}, 0) 386 | elseif (w > 0) 387 | SetWidth(${ORIG_HALF_WIDTH}, 0) 388 | endif 389 | endloop 390 | endif 391 | 392 | # 全角スペースの可視化 393 | Select(0u3000); Clear() 394 | MergeFonts("${PATH_IDEOGRAPHIC_SPACE}") 395 | 396 | # 全角系の括弧位置を調整する 397 | bracket_move = $((${ORIG_FULL_WIDTH} / 6)) 398 | Select(0uff08) # ( 399 | SelectMore(0uff3b) # [ 400 | SelectMore(0uff5b) # { 401 | Move(-bracket_move, 0); SetWidth(${ORIG_FULL_WIDTH}) 402 | Select(0uff09) # ) 403 | SelectMore(0uff3d) # ] 404 | SelectMore(0uff5d) # } 405 | Move(bracket_move, 0); SetWidth(${ORIG_FULL_WIDTH}) 406 | 407 | # 高さ調整 408 | SetOS2Value("WinAscentIsOffset", 0) 409 | SetOS2Value("WinDescentIsOffset", 0) 410 | SetOS2Value("TypoAscentIsOffset", 0) 411 | SetOS2Value("TypoDescentIsOffset", 0) 412 | SetOS2Value("HHeadAscentIsOffset", 0) 413 | SetOS2Value("HHeadDescentIsOffset", 0) 414 | SetOS2Value("WinAscent", ${ASCENT}) 415 | SetOS2Value("WinDescent", ${DESCENT}) 416 | SetOS2Value("TypoAscent", ${ASCENT}) 417 | SetOS2Value("TypoDescent", -${DESCENT}) 418 | SetOS2Value("TypoLineGap", ${TYPO_LINE_GAP}) 419 | SetOS2Value("HHeadAscent", ${ASCENT}) 420 | SetOS2Value("HHeadDescent", -${DESCENT}) 421 | SetOS2Value("HHeadLineGap", 0) 422 | 423 | # 修正後のフォントファイルを保存 424 | Print("Save " + output_list[i]) 425 | Generate("${WORK_DIR}/" + output_list[i]) 426 | Close() 427 | 428 | i++ 429 | endloop 430 | 431 | # Nerd Fonts グリフの準備 432 | if (${NERD_FONTS_FLAG} == 1) 433 | input_list = ["${WORK_DIR}/${MODIFIED_FONT_BIZUD_REGULAR}", \\ 434 | "${WORK_DIR}/${MODIFIED_FONT_BIZUD_BOLD}"] 435 | output_list = ["${MODIFIED_FONT_NERD_FONTS_REGULAR}", \\ 436 | "${MODIFIED_FONT_NERD_FONTS_BOLD}"] 437 | 438 | i = 0 439 | while (i < SizeOf(input_list)) 440 | Open("$PATH_NERD_FONTS") 441 | 442 | # 必要なグリフのみ残し、残りを削除 443 | SelectNone() 444 | $NERD_ICON_LIST 445 | # 選択していない箇所を選択して削除する 446 | SelectInvert(); Clear() 447 | 448 | lookups = GetLookups("GSUB"); numlookups = SizeOf(lookups); j = 0; 449 | while (j < numlookups) 450 | RemoveLookup(lookups[j]); j++ 451 | endloop 452 | lookups = GetLookups("GPOS"); numlookups = SizeOf(lookups); j = 0; 453 | while (j < numlookups) 454 | RemoveLookup(lookups[j]); j++ 455 | endloop 456 | 457 | # サイズ調整 458 | SelectWorthOutputting() 459 | ScaleToEm(${EM_ASCENT}, ${EM_DESCENT}) 460 | if (${W35_FLAG} == 0) 461 | Scale(${SHRINK_X}, ${SHRINK_Y}, 0, 0) 462 | endif 463 | SetWidth(${HALF_WIDTH}, 0) 464 | 465 | MergeFonts(input_list[i]) 466 | if (${W35_FLAG} == 1) 467 | SelectNone() 468 | $NERD_ICON_LIST 469 | SelectInvert() 470 | move_x = ${FULL_WIDTH} - 2048 471 | Move(move_x, 0) 472 | endif 473 | 474 | # JetBrains Monoに含まれるグリフの削除 475 | j = 0 476 | while (j < array_end) 477 | if (WorthOutputting(j)) 478 | Select(j) 479 | if (exist_glyph_array[j] == 1) 480 | Clear() 481 | endif 482 | endif 483 | j++ 484 | endloop 485 | 486 | # 高さ調整 487 | SetOS2Value("WinAscentIsOffset", 0) 488 | SetOS2Value("WinDescentIsOffset", 0) 489 | SetOS2Value("TypoAscentIsOffset", 0) 490 | SetOS2Value("TypoDescentIsOffset", 0) 491 | SetOS2Value("HHeadAscentIsOffset", 0) 492 | SetOS2Value("HHeadDescentIsOffset", 0) 493 | SetOS2Value("WinAscent", ${ASCENT}) 494 | SetOS2Value("WinDescent", ${DESCENT}) 495 | SetOS2Value("TypoAscent", ${ASCENT}) 496 | SetOS2Value("TypoDescent", -${DESCENT}) 497 | SetOS2Value("TypoLineGap", ${TYPO_LINE_GAP}) 498 | SetOS2Value("HHeadAscent", ${ASCENT}) 499 | SetOS2Value("HHeadDescent", -${DESCENT}) 500 | SetOS2Value("HHeadLineGap", 0) 501 | 502 | Generate("${WORK_DIR}/" + output_list[i], "") 503 | Close() 504 | 505 | i += 1 506 | endloop 507 | elseif (${W35_FLAG} == 1) 508 | # 35幅版の準備 509 | 510 | input_list = ["${WORK_DIR}/${MODIFIED_FONT_BIZUD_REGULAR}", \\ 511 | "${WORK_DIR}/${MODIFIED_FONT_BIZUD_BOLD}"] 512 | output_list = ["${MODIFIED_FONT_BIZUD35_REGULAR}", \\ 513 | "${MODIFIED_FONT_BIZUD35_BOLD}"] 514 | 515 | i = 0 516 | while (i < SizeOf(input_list)) 517 | New() 518 | Reencode("unicode") 519 | ScaleToEm(${EM_ASCENT}, ${EM_DESCENT}) 520 | 521 | MergeFonts(input_list[i]) 522 | 523 | # 各グリフの幅調整 524 | SelectWorthOutputting() 525 | move_x = ${FULL_WIDTH} - 2048 526 | Move(move_x, 0) 527 | 528 | # 高さ調整 529 | SetOS2Value("WinAscentIsOffset", 0) 530 | SetOS2Value("WinDescentIsOffset", 0) 531 | SetOS2Value("TypoAscentIsOffset", 0) 532 | SetOS2Value("TypoDescentIsOffset", 0) 533 | SetOS2Value("HHeadAscentIsOffset", 0) 534 | SetOS2Value("HHeadDescentIsOffset", 0) 535 | SetOS2Value("WinAscent", ${ASCENT}) 536 | SetOS2Value("WinDescent", ${DESCENT}) 537 | SetOS2Value("TypoAscent", ${ASCENT}) 538 | SetOS2Value("TypoDescent", -${DESCENT}) 539 | SetOS2Value("TypoLineGap", ${TYPO_LINE_GAP}) 540 | SetOS2Value("HHeadAscent", ${ASCENT}) 541 | SetOS2Value("HHeadDescent", -${DESCENT}) 542 | SetOS2Value("HHeadLineGap", 0) 543 | 544 | Generate("${WORK_DIR}/" + output_list[i], "") 545 | Close() 546 | 547 | i += 1 548 | endloop 549 | endif 550 | _EOT_ 551 | 552 | /usr/local/bin/fontforge -script ${WORK_DIR}/${GEN_SCRIPT_JBMONO} 553 | 554 | for f in `ls "${WORK_DIR}/${FAMILYNAME}"*.ttf` 555 | do 556 | python3 -m ttfautohint -l 6 -r 45 -a nnn -D latn -f none -S -W -X "13-" -I "$f" "${f}_hinted" 557 | done 558 | 559 | # vhea, vmtxテーブル削除 560 | # for f in "${WORK_DIR}/${MODIFIED_FONT_BIZUD_REGULAR}" "${WORK_DIR}/${MODIFIED_FONT_BIZUD_BOLD}" 561 | # do 562 | # target="${WORK_DIR}/${f##*/}" 563 | # pyftsubset "${target}" '*' --drop-tables+=vhea --drop-tables+=vmtx --layout-features='*' --glyph-names --symbol-cmap --legacy-cmap --notdef-glyph --notdef-outline --recommended-glyphs --name-IDs='*' --name-legacy --name-languages='*' 564 | # done 565 | 566 | if [ $ITALIC_FLAG -eq 1 ] 567 | then 568 | regular_name='Italic' 569 | bold_name='BoldItalic' 570 | else 571 | regular_name='Regular' 572 | bold_name='Bold' 573 | fi 574 | 575 | if [ $NERD_FONTS_FLAG -eq 1 ] 576 | then 577 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_NERD_FONTS_REGULAR}" 578 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf" 579 | 580 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_NERD_FONTS_BOLD}" 581 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf" 582 | elif [ $W35_FLAG -eq 1 ] 583 | then 584 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD35_REGULAR}" 585 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf" 586 | 587 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD35_BOLD}" 588 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf" 589 | else 590 | # pyftmerge "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD_REGULAR%%.ttf}.subset.ttf" 591 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD_REGULAR}" 592 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${regular_name}.ttf" 593 | 594 | # pyftmerge "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD_BOLD%%.ttf}.subset.ttf" 595 | pyftmerge "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf_hinted" "${WORK_DIR}/${MODIFIED_FONT_BIZUD_BOLD}" 596 | mv -f merged.ttf "${WORK_DIR}/${FAMILYNAME}-${bold_name}.ttf" 597 | fi 598 | -------------------------------------------------------------------------------- /old_script/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_DIR=$(cd $(dirname $0); pwd) 4 | WORK_DIR="$BASE_DIR/build_tmp" 5 | BUILD_DIR="$BASE_DIR/build" 6 | 7 | VERSION='1.3.1' 8 | 9 | FAMILYNAME="UDEVGothic" 10 | DISP_FAMILYNAME="UDEV Gothic" 11 | FAMILYNAME_LIGA="UDEVGothicLG" 12 | DISP_FAMILYNAME_LIGA="UDEV Gothic LG" 13 | FAMILYNAME_JPDOC="UDEVGothicJPDOC" 14 | DISP_FAMILYNAME_JPDOC="UDEV Gothic JPDOC" 15 | FAMILYNAME_NF="UDEVGothicNF" 16 | DISP_FAMILYNAME_NF="UDEV Gothic NF" 17 | FAMILYNAME_NF_LIGA="UDEVGothicNFLG" 18 | DISP_FAMILYNAME_NF_LIGA="UDEV Gothic NFLG" 19 | FAMILYNAME_35="UDEVGothic35" 20 | DISP_FAMILYNAME_35="UDEV Gothic 35" 21 | FAMILYNAME_LIGA_35="UDEVGothic35LG" 22 | DISP_FAMILYNAME_LIGA_35="UDEV Gothic 35LG" 23 | FAMILYNAME_JPDOC_35="UDEVGothic35JPDOC" 24 | DISP_FAMILYNAME_JPDOC_35="UDEV Gothic 35JPDOC" 25 | FAMILYNAME_NF_35="UDEVGothic35NF" 26 | DISP_FAMILYNAME_NF_35="UDEV Gothic 35NF" 27 | FAMILYNAME_NF_LIGA_35="UDEVGothic35NFLG" 28 | DISP_FAMILYNAME_NF_LIGA_35="UDEV Gothic 35NFLG" 29 | 30 | if [ ! -d "$BUILD_DIR" ] 31 | then 32 | mkdir "$BUILD_DIR" 33 | fi 34 | 35 | for italic_flag in 0 1 36 | do 37 | # リガチャなし版の生成 38 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME" "$DISP_FAMILYNAME" 0 0 0 0 $italic_flag 39 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME" "" 0 40 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME" 41 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME" 42 | mv "$WORK_DIR/$FAMILYNAME"*.ttf "$BUILD_DIR" 43 | rm -rf "$WORK_DIR" 44 | 45 | # リガチャあり版の生成 46 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_LIGA" "$DISP_FAMILYNAME_LIGA" 1 0 0 0 $italic_flag 47 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_LIGA" "" 0 48 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME_LIGA" 49 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_LIGA" 50 | mv "$WORK_DIR/$FAMILYNAME_LIGA"*.ttf "$BUILD_DIR" 51 | rm -rf "$WORK_DIR" 52 | 53 | # JPDOC版の生成 54 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_JPDOC" "$DISP_FAMILYNAME_JPDOC" 0 1 0 0 $italic_flag 55 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_JPDOC" "" 0 56 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME_JPDOC" 57 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_JPDOC" 58 | mv "$WORK_DIR/$FAMILYNAME_JPDOC"*.ttf "$BUILD_DIR" 59 | rm -rf "$WORK_DIR" 60 | 61 | # Nerd Fonts版の生成 - リガチャなし 62 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_NF" "$DISP_FAMILYNAME_NF" 0 0 1 0 $italic_flag 63 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_NF" "" 0 64 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_NF" 65 | mv "$WORK_DIR/$FAMILYNAME_NF"*.ttf "$BUILD_DIR" 66 | rm -rf "$WORK_DIR" 67 | 68 | # Nerd Fonts版の生成 - リガチャあり 69 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_NF_LIGA" "$DISP_FAMILYNAME_NF_LIGA" 1 0 1 0 $italic_flag 70 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_NF_LIGA" "" 0 71 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_NF_LIGA" 72 | mv "$WORK_DIR/$FAMILYNAME_NF_LIGA"*.ttf "$BUILD_DIR" 73 | rm -rf "$WORK_DIR" 74 | 75 | # リガチャなし版の生成 (3:5幅) 76 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_35" "$DISP_FAMILYNAME_35" 0 0 0 1 $italic_flag 77 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_35" "" 1 78 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME_35" 79 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_35" 80 | mv "$WORK_DIR/$FAMILYNAME_35"*.ttf "$BUILD_DIR" 81 | rm -rf "$WORK_DIR" 82 | 83 | # リガチャあり版の生成 (3:5幅) 84 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_LIGA_35" "$DISP_FAMILYNAME_LIGA_35" 1 0 0 1 $italic_flag 85 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_LIGA_35" "" 1 86 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME_LIGA_35" 87 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_LIGA_35" 88 | mv "$WORK_DIR/$FAMILYNAME_LIGA_35"*.ttf "$BUILD_DIR" 89 | rm -rf "$WORK_DIR" 90 | 91 | # JPDOC版の生成 (3:5幅) 92 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_JPDOC_35" "$DISP_FAMILYNAME_JPDOC_35" 0 1 0 1 $italic_flag 93 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_JPDOC_35" "" 1 94 | "${BASE_DIR}/cmap_patch.sh" "$FAMILYNAME_JPDOC_35" 95 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_JPDOC_35" 96 | mv "$WORK_DIR/$FAMILYNAME_JPDOC_35"*.ttf "$BUILD_DIR" 97 | rm -rf "$WORK_DIR" 98 | 99 | # Nerd Fonts版の生成 - リガチャなし (3:5幅) 100 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_NF_35" "$DISP_FAMILYNAME_NF_35" 0 0 1 1 $italic_flag 101 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_NF_35" "" 1 102 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_NF_35" 103 | mv "$WORK_DIR/$FAMILYNAME_NF_35"*.ttf "$BUILD_DIR" 104 | rm -rf "$WORK_DIR" 105 | 106 | # Nerd Fonts版の生成 - リガチャあり (3:5幅) 107 | "${BASE_DIR}/generator.sh" "$VERSION" "$FAMILYNAME_NF_LIGA_35" "$DISP_FAMILYNAME_NF_LIGA_35" 1 0 1 1 $italic_flag 108 | "${BASE_DIR}/os2_patch.sh" "$FAMILYNAME_NF_LIGA_35" "" 1 109 | "${BASE_DIR}/copyright.sh" "$FAMILYNAME_NF_LIGA_35" 110 | mv "$WORK_DIR/$FAMILYNAME_NF_LIGA_35"*.ttf "$BUILD_DIR" 111 | rm -rf "$WORK_DIR" 112 | done 113 | -------------------------------------------------------------------------------- /old_script/os2_patch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_DIR="$(cd $(dirname $0); pwd)/build_tmp" 4 | 5 | FAMILYNAME="$1" 6 | PREFIX="$2" 7 | W35_FLAG="$3" 8 | 9 | xAvgCharWidth_SETVAL=1024 10 | FONT_PATTERN=${PREFIX}${FAMILYNAME}'*.ttf' 11 | 12 | if [ $W35_FLAG -eq 1 ] 13 | then 14 | xAvgCharWidth_SETVAL=2045 15 | fi 16 | 17 | for P in ${BASE_DIR}/${FONT_PATTERN} 18 | do 19 | ttx -t OS/2 -t post "$P" 20 | 21 | xAvgCharWidth_value=$(grep xAvgCharWidth "${P%%.ttf}.ttx" | awk -F\" '{print $2}') 22 | sed -i.bak -e 's,xAvgCharWidth value="'$xAvgCharWidth_value'",xAvgCharWidth value="'${xAvgCharWidth_SETVAL}'",' "${P%%.ttf}.ttx" 23 | 24 | fsSelection_value=$(grep fsSelection "${P%%.ttf}.ttx" | awk -F\" '{print $2}') 25 | if [ `echo $P | grep Regular` ]; then 26 | fsSelection_sed_value='00000001 01000000' 27 | elif [ `echo $P | grep BoldItalic` ]; then 28 | fsSelection_sed_value='00000001 00100001' 29 | elif [ `echo $P | grep Bold` ]; then 30 | fsSelection_sed_value='00000001 00100000' 31 | elif [ `echo $P | grep Italic` ]; then 32 | fsSelection_sed_value='00000001 00000001' 33 | else 34 | fsSelection_sed_value='00000001 00000000' 35 | fi 36 | sed -i.bak -e 's,fsSelection value="'"$fsSelection_value"'",fsSelection value="'"$fsSelection_sed_value"'",' "${P%%.ttf}.ttx" 37 | 38 | underlinePosition_value=$(grep 'underlinePosition value' "${P%%.ttf}.ttx" | awk -F\" '{print $2}') 39 | sed -i.bak -e 's,underlinePosition value="'$underlinePosition_value'",underlinePosition value="-70",' "${P%%.ttf}.ttx" 40 | 41 | sed -i.bak -e 's,,,' "${P%%.ttf}.ttx" 42 | 43 | mv "$P" "${P}_orig" 44 | ttx -m "${P}_orig" "${P%%.ttf}.ttx" 45 | done 46 | 47 | rm -f "${BASE_DIR}/"*.ttx 48 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | fonttools==4.40.0 2 | ttfautohint-py==0.5.1 3 | -------------------------------------------------------------------------------- /source/BIZUDGothic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/BIZUDGothic-Bold.ttf -------------------------------------------------------------------------------- /source/BIZUDGothic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/BIZUDGothic-Regular.ttf -------------------------------------------------------------------------------- /source/JetBrainsMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMono-Bold.ttf -------------------------------------------------------------------------------- /source/JetBrainsMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMono-BoldItalic.ttf -------------------------------------------------------------------------------- /source/JetBrainsMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMono-Italic.ttf -------------------------------------------------------------------------------- /source/JetBrainsMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMono-Regular.ttf -------------------------------------------------------------------------------- /source/JetBrainsMonoNL-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMonoNL-Bold.ttf -------------------------------------------------------------------------------- /source/JetBrainsMonoNL-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMonoNL-BoldItalic.ttf -------------------------------------------------------------------------------- /source/JetBrainsMonoNL-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMonoNL-Italic.ttf -------------------------------------------------------------------------------- /source/JetBrainsMonoNL-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMonoNL-Regular.ttf -------------------------------------------------------------------------------- /source/JetBrainsMonoNerdFont-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/JetBrainsMonoNerdFont-Regular.ttf -------------------------------------------------------------------------------- /source/LICENSE_BIZUDGothic: -------------------------------------------------------------------------------- 1 | Copyright 2022 The BIZ UDGothic Project Authors (https://github.com/googlefonts/morisawa-biz-ud-mincho) 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | https://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /source/LICENSE_JetBrainsMono: -------------------------------------------------------------------------------- 1 | Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | https://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /source/LICENSE_NerdFonts: -------------------------------------------------------------------------------- 1 | # Nerd Fonts Licensing 2 | 3 | There are various sources used under various licenses: 4 | 5 | * Nerd Fonts source fonts, patched fonts, and folders with explict OFL SIL files are licensed under SIL OPEN FONT LICENSE Version 1.1 (see below). 6 | * Nerd Fonts original source code files (such as `.sh`, `.py`, `font-patcher` and others) are licensed under the MIT License (MIT) (see below). 7 | * Many other licenses are present in this project for even more detailed breakdown see: [License Audit](https://github.com/ryanoasis/nerd-fonts/blob/master/license-audit.md). 8 | 9 | ## Source files not in folders containing an explicit license are using the MIT License (MIT) 10 | 11 | The MIT License (MIT) 12 | 13 | Copyright (c) 2014 Ryan L McIntyre 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. 32 | 33 | ## Various Fonts, Patched Fonts, SVGs, Glyph Fonts, and any files in a folder with explicit SIL OFL 1.1 License 34 | 35 | Copyright (c) 2014, Ryan L McIntyre (https://ryanlmcintyre.com). 36 | 37 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 38 | This license is copied below, and is also available with a FAQ at: 39 | http://scripts.sil.org/OFL 40 | 41 | ----------------------------------------------------------- 42 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 43 | ----------------------------------------------------------- 44 | 45 | PREAMBLE 46 | The goals of the Open Font License (OFL) are to stimulate worldwide 47 | development of collaborative font projects, to support the font creation 48 | efforts of academic and linguistic communities, and to provide a free and 49 | open framework in which fonts may be shared and improved in partnership 50 | with others. 51 | 52 | The OFL allows the licensed fonts to be used, studied, modified and 53 | redistributed freely as long as they are not sold by themselves. The 54 | fonts, including any derivative works, can be bundled, embedded, 55 | redistributed and/or sold with any software provided that any reserved 56 | names are not used by derivative works. The fonts and derivatives, 57 | however, cannot be released under any other type of license. The 58 | requirement for fonts to remain under this license does not apply 59 | to any document created using the fonts or their derivatives. 60 | 61 | DEFINITIONS 62 | "Font Software" refers to the set of files released by the Copyright 63 | Holder(s) under this license and clearly marked as such. This may 64 | include source files, build scripts and documentation. 65 | 66 | "Reserved Font Name" refers to any names specified as such after the 67 | copyright statement(s). 68 | 69 | "Original Version" refers to the collection of Font Software components as 70 | distributed by the Copyright Holder(s). 71 | 72 | "Modified Version" refers to any derivative made by adding to, deleting, 73 | or substituting -- in part or in whole -- any of the components of the 74 | Original Version, by changing formats or by porting the Font Software to a 75 | new environment. 76 | 77 | "Author" refers to any designer, engineer, programmer, technical 78 | writer or other person who contributed to the Font Software. 79 | 80 | PERMISSION & CONDITIONS 81 | Permission is hereby granted, free of charge, to any person obtaining 82 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 83 | redistribute, and sell modified and unmodified copies of the Font 84 | Software, subject to the following conditions: 85 | 86 | 1) Neither the Font Software nor any of its individual components, 87 | in Original or Modified Versions, may be sold by itself. 88 | 89 | 2) Original or Modified Versions of the Font Software may be bundled, 90 | redistributed and/or sold with any software, provided that each copy 91 | contains the above copyright notice and this license. These can be 92 | included either as stand-alone text files, human-readable headers or 93 | in the appropriate machine-readable metadata fields within text or 94 | binary files as long as those fields can be easily viewed by the user. 95 | 96 | 3) No Modified Version of the Font Software may use the Reserved Font 97 | Name(s) unless explicit written permission is granted by the corresponding 98 | Copyright Holder. This restriction only applies to the primary font name as 99 | presented to the users. 100 | 101 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 102 | Software shall not be used to promote, endorse or advertise any 103 | Modified Version, except to acknowledge the contribution(s) of the 104 | Copyright Holder(s) and the Author(s) or with their explicit written 105 | permission. 106 | 107 | 5) The Font Software, modified or unmodified, in part or in whole, 108 | must be distributed entirely under this license, and must not be 109 | distributed under any other license. The requirement for fonts to 110 | remain under this license does not apply to any document created 111 | using the Font Software. 112 | 113 | TERMINATION 114 | This license becomes null and void if any of the above conditions are 115 | not met. 116 | 117 | DISCLAIMER 118 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 119 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 120 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 121 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 122 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 123 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 124 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 125 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 126 | OTHER DEALINGS IN THE FONT SOFTWARE. 127 | -------------------------------------------------------------------------------- /source/SymbolsNerdFont-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/SymbolsNerdFont-Regular.ttf -------------------------------------------------------------------------------- /source/fontforge_export_BIZUDGothic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/fontforge_export_BIZUDGothic-Bold.ttf -------------------------------------------------------------------------------- /source/fontforge_export_BIZUDGothic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuru7/udev-gothic/d6342e7cf87dc0fd0d683363e11e320f55ea0ea2/source/fontforge_export_BIZUDGothic-Regular.ttf -------------------------------------------------------------------------------- /source/zero-Bold.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.2 2 | FontName: UDEVGothic-Regular 3 | FullName: UDEV Gothic Regular 4 | FamilyName: UDEV Gothic 5 | Weight: Book 6 | Copyright: Copyright (c) 2022, Yuko OTAWARA 7 | Version: 0.0.1 ; ttfautohint (v1.8.3) -l 6 -r 45 -G 200 -x 14 -D latn -f none -a nnn -W -X "13-" 8 | ItalicAngle: 0 9 | UnderlinePosition: -59.082 10 | UnderlineWidth: 49.8047 11 | Ascent: 800 12 | Descent: 200 13 | InvalidEm: 0 14 | sfntRevision: 0x00010000 15 | LayerCount: 2 16 | Layer: 0 1 "+gMyXYgAA" 1 17 | Layer: 1 1 "+Uk2XYgAA" 0 18 | XUID: [1021 1004 1376950171 8412536] 19 | StyleMap: 0x0040 20 | FSType: 0 21 | OS2Version: 4 22 | OS2_WeightWidthSlopeOnly: 1 23 | OS2_UseTypoMetrics: 0 24 | CreationTime: 1648089091 25 | ModificationTime: 1648223232 26 | PfmFamily: 17 27 | TTFWeight: 400 28 | TTFWidth: 5 29 | LineGap: 0 30 | VLineGap: 0 31 | Panose: 2 11 5 9 2 2 3 2 2 7 32 | OS2TypoAscent: 880 33 | OS2TypoAOffset: 0 34 | OS2TypoDescent: -120 35 | OS2TypoDOffset: 0 36 | OS2TypoLinegap: 0 37 | OS2WinAscent: 880 38 | OS2WinAOffset: 0 39 | OS2WinDescent: 186 40 | OS2WinDOffset: 0 41 | HheadAscent: 880 42 | HheadAOffset: 0 43 | HheadDescent: -186 44 | HheadDOffset: 0 45 | OS2SubXSize: 650 46 | OS2SubYSize: 700 47 | OS2SubXOff: 0 48 | OS2SubYOff: 140 49 | OS2SupXSize: 650 50 | OS2SupYSize: 700 51 | OS2SupXOff: 0 52 | OS2SupYOff: 480 53 | OS2StrikeYSize: 50 54 | OS2StrikeYPos: 259 55 | OS2CapHeight: 730 56 | OS2XHeight: 550 57 | OS2FamilyClass: 2057 58 | OS2Vendor: 'twr ' 59 | OS2CodePages: 2002019f.dfd70000 60 | OS2UnicodeRanges: e00402ff.3ac7fdfb.0200003a.00000000 61 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 0" { "'aalt' Access All Alternates lookup 0 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 62 | Lookup: 3 0 0 "'aalt' Access All Alternates lookup 1" { "'aalt' Access All Alternates lookup 1 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 63 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 2" { "'ccmp' Glyph Composition/Decomposition lookup 2 subtable" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 64 | Lookup: 1 0 0 "'frac' Diagonal Fractions lookup 3" { "'frac' Diagonal Fractions lookup 3 subtable" } ['frac' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 65 | Lookup: 1 0 0 "'numr' Numerators lookup 4" { "'numr' Numerators lookup 4 subtable" } ['numr' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 66 | Lookup: 4 0 0 "'dlig' Discretionary Ligatures lookup 5" { "'dlig' Discretionary Ligatures lookup 5 subtable" } ['dlig' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 67 | Lookup: 1 0 0 "'expt' Expert Forms lookup 6" { "'expt' Expert Forms lookup 6 subtable" } ['expt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 68 | Lookup: 1 0 0 "'fwid' Full Widths lookup 7" { "'fwid' Full Widths lookup 7 subtable" ("full") } ['fwid' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 69 | Lookup: 1 0 0 "'hojo' Hojo (JIS X 0212-1990) Kanji Forms lookup 8" { "'hojo' Hojo (JIS X 0212-1990) Kanji Forms lookup 8 subtable" } ['hojo' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 70 | Lookup: 1 0 0 "'hwid' Half Widths lookup 9" { "'hwid' Half Widths lookup 9 subtable" ("hw") } ['hwid' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 71 | Lookup: 1 0 0 "'jp78' JIS78 Forms lookup 10" { "'jp78' JIS78 Forms lookup 10 subtable" } ['jp78' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 72 | Lookup: 1 0 0 "'jp83' JIS83 Forms lookup 11" { "'jp83' JIS83 Forms lookup 11 subtable" } ['jp83' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 73 | Lookup: 1 0 0 "'jp90' JIS90 Forms lookup 12" { "'jp90' JIS90 Forms lookup 12 subtable" } ['jp90' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 74 | Lookup: 1 0 0 "'nalt' Alternate Annotation Forms lookup 13" { "'nalt' Alternate Annotation Forms lookup 13 subtable" } ['nalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 75 | Lookup: 3 0 0 "'nalt' Alternate Annotation Forms lookup 14" { "'nalt' Alternate Annotation Forms lookup 14 subtable" } ['nalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 76 | Lookup: 1 0 0 "'nlck' NLC Kanji Forms lookup 15" { "'nlck' NLC Kanji Forms lookup 15 subtable" } ['nlck' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 77 | Lookup: 4 0 1 "'liga' Standard Ligatures lookup 16" { "'liga' Standard Ligatures lookup 16 subtable" } ['liga' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 78 | Lookup: 1 0 0 "'ruby' Ruby Notational Forms lookup 17" { "'ruby' Ruby Notational Forms lookup 17 subtable" } ['ruby' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 79 | Lookup: 1 0 0 "'sups' Superscript lookup 18" { "'sups' Superscript lookup 18 subtable" ("superior") } ['sups' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 80 | Lookup: 1 0 0 "'trad' Traditional Forms lookup 19" { "'trad' Traditional Forms lookup 19 subtable" } ['trad' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 81 | Lookup: 3 0 0 "'trad' Traditional Forms lookup 20" { "'trad' Traditional Forms lookup 20 subtable" } ['trad' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 82 | Lookup: 1 0 0 "'zero' Slashed Zero lookup 21" { "'zero' Slashed Zero lookup 21 subtable" } ['zero' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 83 | Lookup: 1 0 0 "'vert' Vertical Alternates lookup 22" { "'vert' Vertical Alternates lookup 22 subtable" } ['vert' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 84 | Lookup: 1 0 0 "'vkna' Vertical Kana Alternates lookup 23" { "'vkna' Vertical Kana Alternates lookup 23 subtable" } ['vkna' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 85 | Lookup: 1 0 0 "'vrt2' Vertical Rotation & Alternates lookup 24" { "'vrt2' Vertical Rotation & Alternates lookup 24 subtable" ("vert") } ['vrt2' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 86 | Lookup: 1 0 0 "'locl' Localized Forms in Cyrillic lookup 25" { "'locl' Localized Forms in Cyrillic lookup 25 subtable" } ['locl' ('cyrl' <'dflt' > ) ] 87 | MarkAttachClasses: 1 88 | DEI: 91125 89 | TtTable: prep 90 | PUSHB_2 91 | 4 92 | 0 93 | WCVTP 94 | PUSHW_2 95 | 32767 96 | 13 97 | PUSHB_1 98 | 19 99 | CALL 100 | SVTCA[y-axis] 101 | MPPEM 102 | PUSHW_1 103 | 200 104 | GT 105 | IF 106 | PUSHB_2 107 | 1 108 | 1 109 | INSTCTRL 110 | EIF 111 | PUSHB_1 112 | 1 113 | PUSHW_2 114 | 2048 115 | 2048 116 | MUL 117 | WCVTF 118 | PUSHB_1 119 | 4 120 | RCVT 121 | NOT 122 | IF 123 | PUSHB_2 124 | 0 125 | 7 126 | WS 127 | PUSHB_8 128 | 0 129 | 0 130 | 90 131 | 0 132 | 58 133 | 38 134 | 6 135 | 0 136 | LOOPCALL 137 | PUSHB_2 138 | 0 139 | 7 140 | WS 141 | NPUSHB 142 | 14 143 | 109 144 | 4 145 | 97 146 | 4 147 | 77 148 | 8 149 | 65 150 | 4 151 | 45 152 | 8 153 | 27 154 | 7 155 | 6 156 | 10 157 | LOOPCALL 158 | PUSHB_2 159 | 0 160 | 7 161 | WS 162 | NPUSHB 163 | 14 164 | 115 165 | 2 166 | 103 167 | 2 168 | 87 169 | 6 170 | 71 171 | 2 172 | 55 173 | 6 174 | 36 175 | 5 176 | 6 177 | 10 178 | LOOPCALL 179 | EIF 180 | PUSHB_2 181 | 0 182 | 13 183 | WS 184 | PUSHW_8 185 | 7040 186 | 6272 187 | 4992 188 | 4224 189 | 2944 190 | 1792 191 | 6 192 | 11 193 | LOOPCALL 194 | PUSHB_2 195 | 0 196 | 19 197 | WS 198 | PUSHW_8 199 | 64 200 | 64 201 | 64 202 | 64 203 | 64 204 | 64 205 | 6 206 | 11 207 | LOOPCALL 208 | PUSHW_2 209 | 3 210 | -100 211 | WCVTP 212 | PUSHB_2 213 | 36 214 | 1 215 | GETINFO 216 | LTEQ 217 | IF 218 | PUSHB_1 219 | 64 220 | GETINFO 221 | IF 222 | PUSHW_2 223 | 3 224 | -100 225 | WCVTP 226 | PUSHB_2 227 | 40 228 | 1 229 | GETINFO 230 | LTEQ 231 | IF 232 | PUSHW_1 233 | 2048 234 | GETINFO 235 | IF 236 | PUSHW_2 237 | 3 238 | -100 239 | WCVTP 240 | EIF 241 | ELSE 242 | PUSHB_2 243 | 39 244 | 1 245 | GETINFO 246 | LTEQ 247 | IF 248 | PUSHW_3 249 | 2176 250 | 1 251 | 1088 252 | GETINFO 253 | MUL 254 | EQ 255 | IF 256 | PUSHW_2 257 | 3 258 | -100 259 | WCVTP 260 | EIF 261 | EIF 262 | EIF 263 | EIF 264 | EIF 265 | NPUSHB 266 | 14 267 | 111 268 | 4 269 | 99 270 | 4 271 | 79 272 | 8 273 | 67 274 | 4 275 | 47 276 | 8 277 | 29 278 | 7 279 | 6 280 | 14 281 | LOOPCALL 282 | PUSHW_1 283 | 511 284 | SCANCTRL 285 | PUSHB_1 286 | 4 287 | SCANTYPE 288 | PUSHB_2 289 | 2 290 | 0 291 | WCVTP 292 | PUSHB_4 293 | 5 294 | 100 295 | 6 296 | 0 297 | WCVTP 298 | WCVTP 299 | EndTTInstrs 300 | TtTable: fpgm 301 | PUSHB_1 302 | 0 303 | FDEF 304 | DUP 305 | PUSHB_1 306 | 0 307 | NEQ 308 | IF 309 | RCVT 310 | EIF 311 | DUP 312 | DUP 313 | MPPEM 314 | PUSHW_1 315 | 14 316 | LTEQ 317 | MPPEM 318 | PUSHB_1 319 | 6 320 | GTEQ 321 | AND 322 | IF 323 | PUSHB_1 324 | 52 325 | ELSE 326 | PUSHB_1 327 | 40 328 | EIF 329 | ADD 330 | FLOOR 331 | DUP 332 | ROLL 333 | NEQ 334 | IF 335 | PUSHB_1 336 | 2 337 | CINDEX 338 | SUB 339 | PUSHW_2 340 | 2048 341 | 2048 342 | MUL 343 | MUL 344 | SWAP 345 | DIV 346 | ELSE 347 | POP 348 | POP 349 | PUSHB_1 350 | 0 351 | EIF 352 | PUSHB_1 353 | 0 354 | RS 355 | SWAP 356 | WCVTP 357 | PUSHB_3 358 | 0 359 | 1 360 | 0 361 | RS 362 | ADD 363 | WS 364 | ENDF 365 | PUSHB_1 366 | 1 367 | FDEF 368 | PUSHB_1 369 | 32 370 | ADD 371 | FLOOR 372 | ENDF 373 | PUSHB_1 374 | 2 375 | FDEF 376 | SWAP 377 | POP 378 | SWAP 379 | POP 380 | ENDF 381 | PUSHB_1 382 | 3 383 | FDEF 384 | DUP 385 | ABS 386 | PUSHB_4 387 | 3 388 | 20 389 | 21 390 | 0 391 | WS 392 | RS 393 | PUSHB_1 394 | 19 395 | RS 396 | DUP 397 | ADD 398 | ADD 399 | WS 400 | PUSHB_2 401 | 2 402 | 20 403 | RS 404 | WS 405 | PUSHB_2 406 | 37 407 | 3 408 | RS 409 | PUSHB_1 410 | 2 411 | RS 412 | EQ 413 | JROT 414 | DUP 415 | PUSHB_1 416 | 12 417 | SWAP 418 | PUSHB_1 419 | 2 420 | RS 421 | RS 422 | SUB 423 | ABS 424 | PUSHB_1 425 | 4 426 | LT 427 | JROT 428 | PUSHB_3 429 | 2 430 | 2 431 | 2 432 | RS 433 | ADD 434 | WS 435 | PUSHB_1 436 | 33 437 | NEG 438 | JMPR 439 | POP 440 | PUSHB_1 441 | 2 442 | RS 443 | RS 444 | PUSHB_3 445 | 14 446 | 21 447 | 1 448 | WS 449 | JMPR 450 | DUP 451 | PUSHB_1 452 | 2 453 | RS 454 | SWAP 455 | WS 456 | PUSHB_3 457 | 19 458 | 1 459 | 19 460 | RS 461 | ADD 462 | WS 463 | SWAP 464 | PUSHB_1 465 | 0 466 | LT 467 | IF 468 | NEG 469 | EIF 470 | PUSHB_3 471 | 22 472 | 1 473 | 2 474 | RS 475 | ADD 476 | WS 477 | ENDF 478 | PUSHB_1 479 | 4 480 | FDEF 481 | PUSHB_1 482 | 3 483 | CALL 484 | PUSHB_1 485 | 21 486 | RS 487 | IF 488 | SWAP 489 | POP 490 | SWAP 491 | POP 492 | PUSHB_1 493 | 22 494 | RS 495 | RS 496 | SWAP 497 | PUSHB_1 498 | 0 499 | LT 500 | IF 501 | NEG 502 | EIF 503 | ELSE 504 | DUP 505 | ABS 506 | DUP 507 | PUSHB_1 508 | 192 509 | LT 510 | PUSHB_1 511 | 4 512 | MINDEX 513 | AND 514 | PUSHB_3 515 | 40 516 | 1 517 | 13 518 | RS 519 | RCVT 520 | MUL 521 | RCVT 522 | PUSHB_1 523 | 6 524 | RCVT 525 | IF 526 | POP 527 | PUSHB_1 528 | 3 529 | CINDEX 530 | EIF 531 | GT 532 | OR 533 | IF 534 | POP 535 | SWAP 536 | POP 537 | ELSE 538 | ROLL 539 | IF 540 | DUP 541 | PUSHB_1 542 | 80 543 | LT 544 | IF 545 | POP 546 | PUSHB_1 547 | 64 548 | EIF 549 | ELSE 550 | DUP 551 | PUSHB_1 552 | 56 553 | LT 554 | IF 555 | POP 556 | PUSHB_1 557 | 56 558 | EIF 559 | EIF 560 | DUP 561 | PUSHB_2 562 | 1 563 | 13 564 | RS 565 | RCVT 566 | MUL 567 | RCVT 568 | SUB 569 | ABS 570 | PUSHB_1 571 | 40 572 | LT 573 | IF 574 | POP 575 | PUSHB_2 576 | 1 577 | 13 578 | RS 579 | RCVT 580 | MUL 581 | RCVT 582 | DUP 583 | PUSHB_1 584 | 48 585 | LT 586 | IF 587 | POP 588 | PUSHB_1 589 | 48 590 | EIF 591 | ELSE 592 | DUP 593 | PUSHB_1 594 | 192 595 | LT 596 | IF 597 | DUP 598 | FLOOR 599 | DUP 600 | ROLL 601 | ROLL 602 | SUB 603 | DUP 604 | PUSHB_1 605 | 10 606 | LT 607 | IF 608 | ADD 609 | ELSE 610 | DUP 611 | PUSHB_1 612 | 32 613 | LT 614 | IF 615 | POP 616 | PUSHB_1 617 | 10 618 | ADD 619 | ELSE 620 | DUP 621 | PUSHB_1 622 | 54 623 | LT 624 | IF 625 | POP 626 | PUSHB_1 627 | 54 628 | ADD 629 | ELSE 630 | ADD 631 | EIF 632 | EIF 633 | EIF 634 | ELSE 635 | PUSHB_1 636 | 2 637 | CINDEX 638 | PUSHB_1 639 | 12 640 | RS 641 | MUL 642 | PUSHB_1 643 | 0 644 | GT 645 | IF 646 | PUSHB_1 647 | 0 648 | MPPEM 649 | PUSHB_1 650 | 10 651 | LT 652 | IF 653 | POP 654 | PUSHB_1 655 | 12 656 | RS 657 | ELSE 658 | MPPEM 659 | PUSHB_1 660 | 30 661 | LT 662 | IF 663 | POP 664 | PUSHB_1 665 | 30 666 | MPPEM 667 | SUB 668 | PUSHW_1 669 | 4096 670 | MUL 671 | PUSHB_1 672 | 12 673 | RS 674 | MUL 675 | PUSHW_1 676 | 1280 677 | DIV 678 | EIF 679 | EIF 680 | ABS 681 | SUB 682 | EIF 683 | PUSHB_1 684 | 1 685 | CALL 686 | EIF 687 | EIF 688 | SWAP 689 | PUSHB_1 690 | 0 691 | LT 692 | IF 693 | NEG 694 | EIF 695 | EIF 696 | DUP 697 | ABS 698 | PUSHB_1 699 | 22 700 | RS 701 | SWAP 702 | WS 703 | EIF 704 | ENDF 705 | PUSHB_1 706 | 5 707 | FDEF 708 | DUP 709 | RCVT 710 | DUP 711 | PUSHB_1 712 | 4 713 | CINDEX 714 | SUB 715 | ABS 716 | DUP 717 | PUSHB_1 718 | 7 719 | RS 720 | LT 721 | IF 722 | PUSHB_1 723 | 7 724 | SWAP 725 | WS 726 | PUSHB_1 727 | 8 728 | SWAP 729 | WS 730 | ELSE 731 | POP 732 | POP 733 | EIF 734 | PUSHB_1 735 | 1 736 | ADD 737 | ENDF 738 | PUSHB_1 739 | 6 740 | FDEF 741 | SWAP 742 | POP 743 | SWAP 744 | POP 745 | PUSHB_1 746 | 3 747 | CALL 748 | DUP 749 | ABS 750 | PUSHB_2 751 | 7 752 | 98 753 | WS 754 | DUP 755 | PUSHB_1 756 | 8 757 | SWAP 758 | WS 759 | PUSHB_1 760 | 6 761 | RCVT 762 | IF 763 | ELSE 764 | PUSHB_2 765 | 1 766 | 13 767 | RS 768 | RCVT 769 | MUL 770 | PUSHB_2 771 | 1 772 | 13 773 | RS 774 | PUSHB_1 775 | 6 776 | ADD 777 | RCVT 778 | MUL 779 | PUSHB_1 780 | 5 781 | LOOPCALL 782 | POP 783 | DUP 784 | PUSHB_1 785 | 8 786 | RS 787 | DUP 788 | ROLL 789 | DUP 790 | ROLL 791 | PUSHB_1 792 | 1 793 | CALL 794 | PUSHB_2 795 | 48 796 | 5 797 | CINDEX 798 | PUSHB_1 799 | 4 800 | MINDEX 801 | LTEQ 802 | IF 803 | ADD 804 | LT 805 | ELSE 806 | SUB 807 | GT 808 | EIF 809 | IF 810 | SWAP 811 | EIF 812 | POP 813 | EIF 814 | DUP 815 | PUSHB_1 816 | 64 817 | GTEQ 818 | IF 819 | PUSHB_1 820 | 1 821 | CALL 822 | ELSE 823 | POP 824 | PUSHB_1 825 | 64 826 | EIF 827 | SWAP 828 | PUSHB_1 829 | 0 830 | LT 831 | IF 832 | NEG 833 | EIF 834 | ENDF 835 | PUSHB_1 836 | 7 837 | FDEF 838 | PUSHB_1 839 | 9 840 | RS 841 | CALL 842 | PUSHB_3 843 | 0 844 | 2 845 | 0 846 | RS 847 | ADD 848 | WS 849 | ENDF 850 | PUSHB_1 851 | 8 852 | FDEF 853 | PUSHB_1 854 | 9 855 | SWAP 856 | WS 857 | SWAP 858 | DUP 859 | PUSHB_1 860 | 0 861 | SWAP 862 | WS 863 | SUB 864 | PUSHB_1 865 | 2 866 | DIV 867 | FLOOR 868 | PUSHB_1 869 | 1 870 | MUL 871 | PUSHB_1 872 | 1 873 | ADD 874 | PUSHB_1 875 | 7 876 | LOOPCALL 877 | ENDF 878 | PUSHB_1 879 | 9 880 | FDEF 881 | DUP 882 | DUP 883 | RCVT 884 | DUP 885 | PUSHB_1 886 | 14 887 | RS 888 | MUL 889 | PUSHW_1 890 | 1024 891 | DIV 892 | DUP 893 | PUSHB_1 894 | 0 895 | LT 896 | IF 897 | PUSHB_1 898 | 64 899 | ADD 900 | EIF 901 | FLOOR 902 | PUSHB_1 903 | 1 904 | MUL 905 | ADD 906 | WCVTP 907 | PUSHB_1 908 | 1 909 | ADD 910 | ENDF 911 | PUSHB_1 912 | 10 913 | FDEF 914 | PUSHB_3 915 | 9 916 | 14 917 | 0 918 | RS 919 | RCVT 920 | WS 921 | LOOPCALL 922 | POP 923 | PUSHB_3 924 | 0 925 | 1 926 | 0 927 | RS 928 | ADD 929 | WS 930 | ENDF 931 | PUSHB_1 932 | 11 933 | FDEF 934 | PUSHB_1 935 | 0 936 | RS 937 | SWAP 938 | WCVTP 939 | PUSHB_3 940 | 0 941 | 1 942 | 0 943 | RS 944 | ADD 945 | WS 946 | ENDF 947 | PUSHB_1 948 | 12 949 | FDEF 950 | DUP 951 | DUP 952 | RCVT 953 | DUP 954 | PUSHB_1 955 | 1 956 | CALL 957 | SWAP 958 | PUSHB_1 959 | 0 960 | RS 961 | PUSHB_1 962 | 4 963 | CINDEX 964 | ADD 965 | DUP 966 | RCVT 967 | ROLL 968 | SWAP 969 | SUB 970 | DUP 971 | ABS 972 | DUP 973 | PUSHB_1 974 | 32 975 | LT 976 | IF 977 | POP 978 | PUSHB_1 979 | 0 980 | ELSE 981 | PUSHB_1 982 | 48 983 | LT 984 | IF 985 | PUSHB_1 986 | 32 987 | ELSE 988 | PUSHB_1 989 | 64 990 | EIF 991 | EIF 992 | SWAP 993 | PUSHB_1 994 | 0 995 | LT 996 | IF 997 | NEG 998 | EIF 999 | PUSHB_1 1000 | 3 1001 | CINDEX 1002 | SWAP 1003 | SUB 1004 | WCVTP 1005 | WCVTP 1006 | PUSHB_1 1007 | 1 1008 | ADD 1009 | ENDF 1010 | PUSHB_1 1011 | 13 1012 | FDEF 1013 | DUP 1014 | DUP 1015 | RCVT 1016 | DUP 1017 | PUSHB_1 1018 | 1 1019 | CALL 1020 | SWAP 1021 | PUSHB_1 1022 | 0 1023 | RS 1024 | PUSHB_1 1025 | 4 1026 | CINDEX 1027 | ADD 1028 | DUP 1029 | RCVT 1030 | ROLL 1031 | SWAP 1032 | SUB 1033 | DUP 1034 | ABS 1035 | PUSHB_1 1036 | 36 1037 | LT 1038 | IF 1039 | PUSHB_1 1040 | 0 1041 | ELSE 1042 | PUSHB_1 1043 | 64 1044 | EIF 1045 | SWAP 1046 | PUSHB_1 1047 | 0 1048 | LT 1049 | IF 1050 | NEG 1051 | EIF 1052 | PUSHB_1 1053 | 3 1054 | CINDEX 1055 | SWAP 1056 | SUB 1057 | WCVTP 1058 | WCVTP 1059 | PUSHB_1 1060 | 1 1061 | ADD 1062 | ENDF 1063 | PUSHB_1 1064 | 14 1065 | FDEF 1066 | DUP 1067 | PUSHB_1 1068 | 0 1069 | SWAP 1070 | WS 1071 | PUSHB_4 1072 | 13 1073 | 12 1074 | 0 1075 | 3 1076 | RCVT 1077 | LT 1078 | IF 1079 | POP 1080 | ELSE 1081 | SWAP 1082 | POP 1083 | EIF 1084 | LOOPCALL 1085 | POP 1086 | ENDF 1087 | PUSHB_1 1088 | 15 1089 | FDEF 1090 | PUSHB_2 1091 | 2 1092 | 2 1093 | RCVT 1094 | PUSHB_1 1095 | 100 1096 | SUB 1097 | WCVTP 1098 | ENDF 1099 | PUSHB_1 1100 | 16 1101 | FDEF 1102 | PUSHB_1 1103 | 1 1104 | ADD 1105 | DUP 1106 | DUP 1107 | PUSHB_1 1108 | 15 1109 | RS 1110 | MD[orig] 1111 | PUSHB_1 1112 | 0 1113 | LT 1114 | IF 1115 | DUP 1116 | PUSHB_1 1117 | 15 1118 | SWAP 1119 | WS 1120 | EIF 1121 | PUSHB_1 1122 | 16 1123 | RS 1124 | MD[orig] 1125 | PUSHB_1 1126 | 0 1127 | GT 1128 | IF 1129 | DUP 1130 | PUSHB_1 1131 | 16 1132 | SWAP 1133 | WS 1134 | EIF 1135 | ENDF 1136 | PUSHB_1 1137 | 17 1138 | FDEF 1139 | DUP 1140 | PUSHB_1 1141 | 16 1142 | DIV 1143 | FLOOR 1144 | PUSHB_1 1145 | 1 1146 | MUL 1147 | DUP 1148 | PUSHW_1 1149 | 1024 1150 | MUL 1151 | ROLL 1152 | SWAP 1153 | SUB 1154 | PUSHB_1 1155 | 17 1156 | RS 1157 | ADD 1158 | DUP 1159 | ROLL 1160 | ADD 1161 | DUP 1162 | PUSHB_1 1163 | 17 1164 | SWAP 1165 | WS 1166 | SWAP 1167 | ENDF 1168 | PUSHB_1 1169 | 18 1170 | FDEF 1171 | MPPEM 1172 | EQ 1173 | IF 1174 | PUSHB_2 1175 | 4 1176 | 100 1177 | WCVTP 1178 | EIF 1179 | DEPTH 1180 | PUSHB_1 1181 | 13 1182 | NEG 1183 | SWAP 1184 | JROT 1185 | ENDF 1186 | PUSHB_1 1187 | 19 1188 | FDEF 1189 | MPPEM 1190 | LTEQ 1191 | IF 1192 | MPPEM 1193 | GTEQ 1194 | IF 1195 | PUSHB_2 1196 | 4 1197 | 100 1198 | WCVTP 1199 | EIF 1200 | ELSE 1201 | POP 1202 | EIF 1203 | DEPTH 1204 | PUSHB_1 1205 | 19 1206 | NEG 1207 | SWAP 1208 | JROT 1209 | ENDF 1210 | PUSHB_1 1211 | 20 1212 | FDEF 1213 | PUSHB_2 1214 | 0 1215 | 18 1216 | RS 1217 | NEQ 1218 | IF 1219 | PUSHB_2 1220 | 18 1221 | 18 1222 | RS 1223 | PUSHB_1 1224 | 1 1225 | SUB 1226 | WS 1227 | PUSHB_1 1228 | 17 1229 | CALL 1230 | EIF 1231 | PUSHB_1 1232 | 0 1233 | RS 1234 | PUSHB_1 1235 | 2 1236 | CINDEX 1237 | WS 1238 | PUSHB_2 1239 | 15 1240 | 2 1241 | CINDEX 1242 | WS 1243 | PUSHB_2 1244 | 16 1245 | 2 1246 | CINDEX 1247 | WS 1248 | PUSHB_1 1249 | 1 1250 | SZPS 1251 | SWAP 1252 | DUP 1253 | PUSHB_1 1254 | 3 1255 | CINDEX 1256 | LT 1257 | IF 1258 | PUSHB_2 1259 | 1 1260 | 0 1261 | RS 1262 | ADD 1263 | PUSHB_1 1264 | 4 1265 | CINDEX 1266 | WS 1267 | ROLL 1268 | ROLL 1269 | DUP 1270 | ROLL 1271 | SWAP 1272 | SUB 1273 | PUSHB_1 1274 | 16 1275 | LOOPCALL 1276 | POP 1277 | SWAP 1278 | PUSHB_1 1279 | 1 1280 | SUB 1281 | DUP 1282 | ROLL 1283 | SWAP 1284 | SUB 1285 | PUSHB_1 1286 | 16 1287 | LOOPCALL 1288 | POP 1289 | ELSE 1290 | PUSHB_2 1291 | 1 1292 | 0 1293 | RS 1294 | ADD 1295 | PUSHB_1 1296 | 2 1297 | CINDEX 1298 | WS 1299 | PUSHB_1 1300 | 2 1301 | CINDEX 1302 | SUB 1303 | PUSHB_1 1304 | 16 1305 | LOOPCALL 1306 | POP 1307 | EIF 1308 | PUSHB_1 1309 | 15 1310 | RS 1311 | GC[orig] 1312 | PUSHB_1 1313 | 16 1314 | RS 1315 | GC[orig] 1316 | ADD 1317 | PUSHB_1 1318 | 2 1319 | DIV 1320 | DUP 1321 | PUSHB_1 1322 | 0 1323 | LT 1324 | IF 1325 | PUSHB_1 1326 | 64 1327 | ADD 1328 | EIF 1329 | FLOOR 1330 | PUSHB_1 1331 | 1 1332 | MUL 1333 | DUP 1334 | PUSHB_1 1335 | 14 1336 | RS 1337 | MUL 1338 | PUSHW_1 1339 | 1024 1340 | DIV 1341 | DUP 1342 | PUSHB_1 1343 | 0 1344 | LT 1345 | IF 1346 | PUSHB_1 1347 | 64 1348 | ADD 1349 | EIF 1350 | FLOOR 1351 | PUSHB_1 1352 | 1 1353 | MUL 1354 | ADD 1355 | PUSHB_2 1356 | 0 1357 | 0 1358 | SZP0 1359 | SWAP 1360 | WCVTP 1361 | PUSHB_1 1362 | 1 1363 | RS 1364 | PUSHB_1 1365 | 0 1366 | MIAP[no-rnd] 1367 | PUSHB_3 1368 | 1 1369 | 1 1370 | 1 1371 | RS 1372 | ADD 1373 | WS 1374 | ENDF 1375 | PUSHB_1 1376 | 21 1377 | FDEF 1378 | SVTCA[y-axis] 1379 | PUSHB_2 1380 | 0 1381 | 2 1382 | RCVT 1383 | EQ 1384 | IF 1385 | PUSHB_1 1386 | 18 1387 | SWAP 1388 | WS 1389 | DUP 1390 | RCVT 1391 | PUSHB_1 1392 | 14 1393 | SWAP 1394 | WS 1395 | PUSHB_1 1396 | 13 1397 | SWAP 1398 | PUSHB_1 1399 | 6 1400 | ADD 1401 | WS 1402 | DUP 1403 | ADD 1404 | PUSHB_8 1405 | 24 1406 | 24 1407 | 1 1408 | 0 1409 | 17 1410 | 0 1411 | 19 1412 | 0 1413 | WS 1414 | WS 1415 | WS 1416 | ROLL 1417 | ADD 1418 | DUP 1419 | PUSHB_1 1420 | 20 1421 | SWAP 1422 | WS 1423 | PUSHB_1 1424 | 1 1425 | SUB 1426 | PUSHB_2 1427 | 20 1428 | 8 1429 | CALL 1430 | PUSHB_1 1431 | 139 1432 | CALL 1433 | ELSE 1434 | CLEAR 1435 | EIF 1436 | ENDF 1437 | PUSHB_1 1438 | 22 1439 | FDEF 1440 | PUSHB_2 1441 | 0 1442 | 21 1443 | CALL 1444 | ENDF 1445 | PUSHB_1 1446 | 23 1447 | FDEF 1448 | PUSHB_2 1449 | 1 1450 | 21 1451 | CALL 1452 | ENDF 1453 | PUSHB_1 1454 | 24 1455 | FDEF 1456 | PUSHB_2 1457 | 2 1458 | 21 1459 | CALL 1460 | ENDF 1461 | PUSHB_1 1462 | 25 1463 | FDEF 1464 | PUSHB_2 1465 | 3 1466 | 21 1467 | CALL 1468 | ENDF 1469 | PUSHB_1 1470 | 26 1471 | FDEF 1472 | PUSHB_2 1473 | 4 1474 | 21 1475 | CALL 1476 | ENDF 1477 | PUSHB_1 1478 | 27 1479 | FDEF 1480 | PUSHB_2 1481 | 5 1482 | 21 1483 | CALL 1484 | ENDF 1485 | PUSHB_1 1486 | 28 1487 | FDEF 1488 | PUSHB_2 1489 | 6 1490 | 21 1491 | CALL 1492 | ENDF 1493 | PUSHB_1 1494 | 29 1495 | FDEF 1496 | PUSHB_2 1497 | 7 1498 | 21 1499 | CALL 1500 | ENDF 1501 | PUSHB_1 1502 | 30 1503 | FDEF 1504 | PUSHB_2 1505 | 8 1506 | 21 1507 | CALL 1508 | ENDF 1509 | PUSHB_1 1510 | 31 1511 | FDEF 1512 | PUSHB_2 1513 | 9 1514 | 21 1515 | CALL 1516 | ENDF 1517 | PUSHB_1 1518 | 43 1519 | FDEF 1520 | SWAP 1521 | DUP 1522 | PUSHB_1 1523 | 16 1524 | DIV 1525 | FLOOR 1526 | PUSHB_1 1527 | 1 1528 | MUL 1529 | PUSHB_1 1530 | 6 1531 | ADD 1532 | MPPEM 1533 | EQ 1534 | IF 1535 | SWAP 1536 | DUP 1537 | MDAP[no-rnd] 1538 | PUSHB_1 1539 | 1 1540 | DELTAP1 1541 | ELSE 1542 | POP 1543 | POP 1544 | EIF 1545 | ENDF 1546 | PUSHB_1 1547 | 44 1548 | FDEF 1549 | SWAP 1550 | DUP 1551 | PUSHB_1 1552 | 16 1553 | DIV 1554 | FLOOR 1555 | PUSHB_1 1556 | 1 1557 | MUL 1558 | PUSHB_1 1559 | 22 1560 | ADD 1561 | MPPEM 1562 | EQ 1563 | IF 1564 | SWAP 1565 | DUP 1566 | MDAP[no-rnd] 1567 | PUSHB_1 1568 | 1 1569 | DELTAP2 1570 | ELSE 1571 | POP 1572 | POP 1573 | EIF 1574 | ENDF 1575 | PUSHB_1 1576 | 45 1577 | FDEF 1578 | SWAP 1579 | DUP 1580 | PUSHB_1 1581 | 16 1582 | DIV 1583 | FLOOR 1584 | PUSHB_1 1585 | 1 1586 | MUL 1587 | PUSHB_1 1588 | 38 1589 | ADD 1590 | MPPEM 1591 | EQ 1592 | IF 1593 | SWAP 1594 | DUP 1595 | MDAP[no-rnd] 1596 | PUSHB_1 1597 | 1 1598 | DELTAP3 1599 | ELSE 1600 | POP 1601 | POP 1602 | EIF 1603 | ENDF 1604 | PUSHB_1 1605 | 32 1606 | FDEF 1607 | SVTCA[y-axis] 1608 | PUSHB_1 1609 | 15 1610 | CALL 1611 | PUSHB_2 1612 | 0 1613 | 2 1614 | RCVT 1615 | EQ 1616 | IF 1617 | PUSHB_1 1618 | 18 1619 | SWAP 1620 | WS 1621 | DUP 1622 | RCVT 1623 | PUSHB_1 1624 | 14 1625 | SWAP 1626 | WS 1627 | PUSHB_1 1628 | 13 1629 | SWAP 1630 | PUSHB_1 1631 | 6 1632 | ADD 1633 | WS 1634 | DUP 1635 | ADD 1636 | PUSHB_1 1637 | 1 1638 | SUB 1639 | PUSHB_6 1640 | 24 1641 | 24 1642 | 1 1643 | 0 1644 | 17 1645 | 0 1646 | WS 1647 | WS 1648 | ROLL 1649 | ADD 1650 | PUSHB_2 1651 | 20 1652 | 8 1653 | CALL 1654 | PUSHB_1 1655 | 139 1656 | CALL 1657 | ELSE 1658 | CLEAR 1659 | EIF 1660 | ENDF 1661 | PUSHB_1 1662 | 33 1663 | FDEF 1664 | PUSHB_2 1665 | 0 1666 | 32 1667 | CALL 1668 | ENDF 1669 | PUSHB_1 1670 | 34 1671 | FDEF 1672 | PUSHB_2 1673 | 1 1674 | 32 1675 | CALL 1676 | ENDF 1677 | PUSHB_1 1678 | 35 1679 | FDEF 1680 | PUSHB_2 1681 | 2 1682 | 32 1683 | CALL 1684 | ENDF 1685 | PUSHB_1 1686 | 36 1687 | FDEF 1688 | PUSHB_2 1689 | 3 1690 | 32 1691 | CALL 1692 | ENDF 1693 | PUSHB_1 1694 | 37 1695 | FDEF 1696 | PUSHB_2 1697 | 4 1698 | 32 1699 | CALL 1700 | ENDF 1701 | PUSHB_1 1702 | 38 1703 | FDEF 1704 | PUSHB_2 1705 | 5 1706 | 32 1707 | CALL 1708 | ENDF 1709 | PUSHB_1 1710 | 39 1711 | FDEF 1712 | PUSHB_2 1713 | 6 1714 | 32 1715 | CALL 1716 | ENDF 1717 | PUSHB_1 1718 | 40 1719 | FDEF 1720 | PUSHB_2 1721 | 7 1722 | 32 1723 | CALL 1724 | ENDF 1725 | PUSHB_1 1726 | 41 1727 | FDEF 1728 | PUSHB_2 1729 | 8 1730 | 32 1731 | CALL 1732 | ENDF 1733 | PUSHB_1 1734 | 42 1735 | FDEF 1736 | PUSHB_2 1737 | 9 1738 | 32 1739 | CALL 1740 | ENDF 1741 | PUSHB_1 1742 | 46 1743 | FDEF 1744 | DUP 1745 | ALIGNRP 1746 | PUSHB_1 1747 | 1 1748 | ADD 1749 | ENDF 1750 | PUSHB_1 1751 | 47 1752 | FDEF 1753 | DUP 1754 | ADD 1755 | PUSHB_1 1756 | 24 1757 | ADD 1758 | DUP 1759 | RS 1760 | SWAP 1761 | PUSHB_1 1762 | 1 1763 | ADD 1764 | RS 1765 | PUSHB_1 1766 | 2 1767 | CINDEX 1768 | SUB 1769 | PUSHB_1 1770 | 1 1771 | ADD 1772 | PUSHB_1 1773 | 46 1774 | LOOPCALL 1775 | POP 1776 | ENDF 1777 | PUSHB_1 1778 | 48 1779 | FDEF 1780 | PUSHB_1 1781 | 47 1782 | CALL 1783 | PUSHB_1 1784 | 47 1785 | LOOPCALL 1786 | ENDF 1787 | PUSHB_1 1788 | 49 1789 | FDEF 1790 | DUP 1791 | DUP 1792 | GC[orig] 1793 | DUP 1794 | DUP 1795 | PUSHB_1 1796 | 14 1797 | RS 1798 | MUL 1799 | PUSHW_1 1800 | 1024 1801 | DIV 1802 | DUP 1803 | PUSHB_1 1804 | 0 1805 | LT 1806 | IF 1807 | PUSHB_1 1808 | 64 1809 | ADD 1810 | EIF 1811 | FLOOR 1812 | PUSHB_1 1813 | 1 1814 | MUL 1815 | ADD 1816 | SWAP 1817 | SUB 1818 | SHPIX 1819 | SWAP 1820 | DUP 1821 | ROLL 1822 | NEQ 1823 | IF 1824 | DUP 1825 | GC[orig] 1826 | DUP 1827 | DUP 1828 | PUSHB_1 1829 | 14 1830 | RS 1831 | MUL 1832 | PUSHW_1 1833 | 1024 1834 | DIV 1835 | DUP 1836 | PUSHB_1 1837 | 0 1838 | LT 1839 | IF 1840 | PUSHB_1 1841 | 64 1842 | ADD 1843 | EIF 1844 | FLOOR 1845 | PUSHB_1 1846 | 1 1847 | MUL 1848 | ADD 1849 | SWAP 1850 | SUB 1851 | SHPIX 1852 | ELSE 1853 | POP 1854 | EIF 1855 | ENDF 1856 | PUSHB_1 1857 | 50 1858 | FDEF 1859 | SVTCA[y-axis] 1860 | PUSHB_2 1861 | 0 1862 | 2 1863 | RCVT 1864 | EQ 1865 | IF 1866 | PUSHB_2 1867 | 14 1868 | 6 1869 | RCVT 1870 | WS 1871 | PUSHB_1 1872 | 1 1873 | SZPS 1874 | PUSHB_1 1875 | 49 1876 | LOOPCALL 1877 | PUSHB_2 1878 | 5 1879 | 1 1880 | SZP2 1881 | RCVT 1882 | IF 1883 | IUP[y] 1884 | EIF 1885 | ELSE 1886 | CLEAR 1887 | EIF 1888 | ENDF 1889 | PUSHB_1 1890 | 51 1891 | FDEF 1892 | SVTCA[y-axis] 1893 | PUSHB_1 1894 | 15 1895 | CALL 1896 | PUSHB_2 1897 | 0 1898 | 2 1899 | RCVT 1900 | EQ 1901 | IF 1902 | PUSHB_2 1903 | 14 1904 | 6 1905 | RCVT 1906 | WS 1907 | PUSHB_1 1908 | 1 1909 | SZPS 1910 | PUSHB_1 1911 | 49 1912 | LOOPCALL 1913 | PUSHB_2 1914 | 5 1915 | 1 1916 | SZP2 1917 | RCVT 1918 | IF 1919 | IUP[y] 1920 | EIF 1921 | ELSE 1922 | CLEAR 1923 | EIF 1924 | ENDF 1925 | PUSHB_1 1926 | 52 1927 | FDEF 1928 | DUP 1929 | SHC[rp1] 1930 | PUSHB_1 1931 | 1 1932 | ADD 1933 | ENDF 1934 | PUSHB_1 1935 | 53 1936 | FDEF 1937 | SVTCA[y-axis] 1938 | PUSHB_2 1939 | 14 1940 | 6 1941 | RCVT 1942 | WS 1943 | PUSHB_1 1944 | 1 1945 | RCVT 1946 | MUL 1947 | PUSHW_1 1948 | 1024 1949 | DIV 1950 | DUP 1951 | PUSHB_1 1952 | 0 1953 | LT 1954 | IF 1955 | PUSHB_1 1956 | 64 1957 | ADD 1958 | EIF 1959 | FLOOR 1960 | PUSHB_1 1961 | 1 1962 | MUL 1963 | PUSHB_1 1964 | 1 1965 | CALL 1966 | PUSHB_1 1967 | 14 1968 | RS 1969 | MUL 1970 | PUSHW_1 1971 | 1024 1972 | DIV 1973 | DUP 1974 | PUSHB_1 1975 | 0 1976 | LT 1977 | IF 1978 | PUSHB_1 1979 | 64 1980 | ADD 1981 | EIF 1982 | FLOOR 1983 | PUSHB_1 1984 | 1 1985 | MUL 1986 | PUSHB_1 1987 | 1 1988 | CALL 1989 | PUSHB_1 1990 | 0 1991 | SZPS 1992 | PUSHB_5 1993 | 0 1994 | 0 1995 | 0 1996 | 0 1997 | 0 1998 | WCVTP 1999 | MIAP[no-rnd] 2000 | SWAP 2001 | SHPIX 2002 | PUSHB_2 2003 | 52 2004 | 1 2005 | SZP2 2006 | LOOPCALL 2007 | POP 2008 | ENDF 2009 | PUSHB_1 2010 | 54 2011 | FDEF 2012 | DUP 2013 | ALIGNRP 2014 | DUP 2015 | GC[orig] 2016 | DUP 2017 | PUSHB_1 2018 | 14 2019 | RS 2020 | MUL 2021 | PUSHW_1 2022 | 1024 2023 | DIV 2024 | DUP 2025 | PUSHB_1 2026 | 0 2027 | LT 2028 | IF 2029 | PUSHB_1 2030 | 64 2031 | ADD 2032 | EIF 2033 | FLOOR 2034 | PUSHB_1 2035 | 1 2036 | MUL 2037 | ADD 2038 | PUSHB_1 2039 | 0 2040 | RS 2041 | SUB 2042 | SHPIX 2043 | ENDF 2044 | PUSHB_1 2045 | 55 2046 | FDEF 2047 | MDAP[no-rnd] 2048 | SLOOP 2049 | ALIGNRP 2050 | ENDF 2051 | PUSHB_1 2052 | 56 2053 | FDEF 2054 | DUP 2055 | ALIGNRP 2056 | DUP 2057 | GC[orig] 2058 | DUP 2059 | PUSHB_1 2060 | 14 2061 | RS 2062 | MUL 2063 | PUSHW_1 2064 | 1024 2065 | DIV 2066 | DUP 2067 | PUSHB_1 2068 | 0 2069 | LT 2070 | IF 2071 | PUSHB_1 2072 | 64 2073 | ADD 2074 | EIF 2075 | FLOOR 2076 | PUSHB_1 2077 | 1 2078 | MUL 2079 | ADD 2080 | PUSHB_1 2081 | 0 2082 | RS 2083 | SUB 2084 | PUSHB_1 2085 | 1 2086 | RS 2087 | MUL 2088 | SHPIX 2089 | ENDF 2090 | PUSHB_1 2091 | 57 2092 | FDEF 2093 | PUSHB_2 2094 | 2 2095 | 0 2096 | SZPS 2097 | CINDEX 2098 | DUP 2099 | MDAP[no-rnd] 2100 | DUP 2101 | GC[orig] 2102 | PUSHB_1 2103 | 0 2104 | SWAP 2105 | WS 2106 | PUSHB_1 2107 | 2 2108 | CINDEX 2109 | MD[grid] 2110 | ROLL 2111 | ROLL 2112 | GC[orig] 2113 | SWAP 2114 | GC[orig] 2115 | SWAP 2116 | SUB 2117 | DUP 2118 | IF 2119 | DIV 2120 | ELSE 2121 | POP 2122 | EIF 2123 | PUSHB_1 2124 | 1 2125 | SWAP 2126 | WS 2127 | PUSHB_3 2128 | 56 2129 | 1 2130 | 1 2131 | SZP2 2132 | SZP1 2133 | LOOPCALL 2134 | ENDF 2135 | PUSHB_1 2136 | 58 2137 | FDEF 2138 | PUSHB_1 2139 | 0 2140 | SZPS 2141 | PUSHB_1 2142 | 23 2143 | SWAP 2144 | WS 2145 | PUSHB_1 2146 | 4 2147 | CINDEX 2148 | PUSHB_1 2149 | 4 2150 | CINDEX 2151 | GC[orig] 2152 | SWAP 2153 | GC[orig] 2154 | SWAP 2155 | SUB 2156 | PUSHB_2 2157 | 12 2158 | 0 2159 | WS 2160 | PUSHB_1 2161 | 11 2162 | RS 2163 | CALL 2164 | NEG 2165 | ROLL 2166 | MDAP[no-rnd] 2167 | SWAP 2168 | DUP 2169 | DUP 2170 | ALIGNRP 2171 | ROLL 2172 | SHPIX 2173 | ENDF 2174 | PUSHB_1 2175 | 59 2176 | FDEF 2177 | PUSHB_1 2178 | 0 2179 | SZPS 2180 | PUSHB_1 2181 | 23 2182 | SWAP 2183 | WS 2184 | PUSHB_1 2185 | 4 2186 | CINDEX 2187 | PUSHB_1 2188 | 4 2189 | CINDEX 2190 | DUP 2191 | MDAP[no-rnd] 2192 | GC[orig] 2193 | SWAP 2194 | GC[orig] 2195 | SWAP 2196 | SUB 2197 | DUP 2198 | PUSHB_1 2199 | 6 2200 | SWAP 2201 | WS 2202 | PUSHB_2 2203 | 12 2204 | 0 2205 | WS 2206 | PUSHB_1 2207 | 11 2208 | RS 2209 | CALL 2210 | DUP 2211 | PUSHB_1 2212 | 96 2213 | LT 2214 | IF 2215 | DUP 2216 | PUSHB_1 2217 | 64 2218 | LTEQ 2219 | IF 2220 | PUSHB_4 2221 | 4 2222 | 32 2223 | 5 2224 | 32 2225 | ELSE 2226 | PUSHB_4 2227 | 4 2228 | 38 2229 | 5 2230 | 26 2231 | EIF 2232 | WS 2233 | WS 2234 | SWAP 2235 | DUP 2236 | PUSHB_1 2237 | 10 2238 | RS 2239 | DUP 2240 | ROLL 2241 | SWAP 2242 | GC[orig] 2243 | SWAP 2244 | GC[orig] 2245 | SWAP 2246 | SUB 2247 | SWAP 2248 | GC[cur] 2249 | ADD 2250 | PUSHB_1 2251 | 6 2252 | RS 2253 | PUSHB_1 2254 | 2 2255 | DIV 2256 | DUP 2257 | PUSHB_1 2258 | 0 2259 | LT 2260 | IF 2261 | PUSHB_1 2262 | 64 2263 | ADD 2264 | EIF 2265 | FLOOR 2266 | PUSHB_1 2267 | 1 2268 | MUL 2269 | ADD 2270 | DUP 2271 | PUSHB_1 2272 | 1 2273 | CALL 2274 | DUP 2275 | ROLL 2276 | ROLL 2277 | SUB 2278 | DUP 2279 | PUSHB_1 2280 | 4 2281 | RS 2282 | ADD 2283 | ABS 2284 | SWAP 2285 | PUSHB_1 2286 | 5 2287 | RS 2288 | SUB 2289 | ABS 2290 | LT 2291 | IF 2292 | PUSHB_1 2293 | 4 2294 | RS 2295 | SUB 2296 | ELSE 2297 | PUSHB_1 2298 | 5 2299 | RS 2300 | ADD 2301 | EIF 2302 | PUSHB_1 2303 | 3 2304 | CINDEX 2305 | PUSHB_1 2306 | 2 2307 | DIV 2308 | DUP 2309 | PUSHB_1 2310 | 0 2311 | LT 2312 | IF 2313 | PUSHB_1 2314 | 64 2315 | ADD 2316 | EIF 2317 | FLOOR 2318 | PUSHB_1 2319 | 1 2320 | MUL 2321 | SUB 2322 | SWAP 2323 | DUP 2324 | DUP 2325 | PUSHB_1 2326 | 4 2327 | MINDEX 2328 | SWAP 2329 | GC[cur] 2330 | SUB 2331 | SHPIX 2332 | ELSE 2333 | SWAP 2334 | PUSHB_1 2335 | 10 2336 | RS 2337 | GC[cur] 2338 | PUSHB_1 2339 | 2 2340 | CINDEX 2341 | PUSHB_1 2342 | 10 2343 | RS 2344 | GC[orig] 2345 | SWAP 2346 | GC[orig] 2347 | SWAP 2348 | SUB 2349 | ADD 2350 | DUP 2351 | PUSHB_1 2352 | 6 2353 | RS 2354 | PUSHB_1 2355 | 2 2356 | DIV 2357 | DUP 2358 | PUSHB_1 2359 | 0 2360 | LT 2361 | IF 2362 | PUSHB_1 2363 | 64 2364 | ADD 2365 | EIF 2366 | FLOOR 2367 | PUSHB_1 2368 | 1 2369 | MUL 2370 | ADD 2371 | SWAP 2372 | DUP 2373 | PUSHB_1 2374 | 1 2375 | CALL 2376 | SWAP 2377 | PUSHB_1 2378 | 6 2379 | RS 2380 | ADD 2381 | PUSHB_1 2382 | 1 2383 | CALL 2384 | PUSHB_1 2385 | 5 2386 | CINDEX 2387 | SUB 2388 | PUSHB_1 2389 | 5 2390 | CINDEX 2391 | PUSHB_1 2392 | 2 2393 | DIV 2394 | DUP 2395 | PUSHB_1 2396 | 0 2397 | LT 2398 | IF 2399 | PUSHB_1 2400 | 64 2401 | ADD 2402 | EIF 2403 | FLOOR 2404 | PUSHB_1 2405 | 1 2406 | MUL 2407 | PUSHB_1 2408 | 4 2409 | MINDEX 2410 | SUB 2411 | DUP 2412 | PUSHB_1 2413 | 4 2414 | CINDEX 2415 | ADD 2416 | ABS 2417 | SWAP 2418 | PUSHB_1 2419 | 3 2420 | CINDEX 2421 | ADD 2422 | ABS 2423 | LT 2424 | IF 2425 | POP 2426 | ELSE 2427 | SWAP 2428 | POP 2429 | EIF 2430 | SWAP 2431 | DUP 2432 | DUP 2433 | PUSHB_1 2434 | 4 2435 | MINDEX 2436 | SWAP 2437 | GC[cur] 2438 | SUB 2439 | SHPIX 2440 | EIF 2441 | ENDF 2442 | PUSHB_1 2443 | 60 2444 | FDEF 2445 | PUSHB_1 2446 | 0 2447 | SZPS 2448 | PUSHB_1 2449 | 23 2450 | SWAP 2451 | WS 2452 | DUP 2453 | DUP 2454 | DUP 2455 | PUSHB_1 2456 | 5 2457 | MINDEX 2458 | DUP 2459 | MDAP[no-rnd] 2460 | GC[orig] 2461 | SWAP 2462 | GC[orig] 2463 | SWAP 2464 | SUB 2465 | SWAP 2466 | ALIGNRP 2467 | SHPIX 2468 | ENDF 2469 | PUSHB_1 2470 | 61 2471 | FDEF 2472 | PUSHB_1 2473 | 0 2474 | SZPS 2475 | PUSHB_1 2476 | 23 2477 | SWAP 2478 | WS 2479 | DUP 2480 | PUSHB_1 2481 | 10 2482 | SWAP 2483 | WS 2484 | DUP 2485 | DUP 2486 | DUP 2487 | GC[cur] 2488 | SWAP 2489 | GC[orig] 2490 | PUSHB_1 2491 | 1 2492 | CALL 2493 | SWAP 2494 | SUB 2495 | SHPIX 2496 | ENDF 2497 | PUSHB_1 2498 | 62 2499 | FDEF 2500 | PUSHB_1 2501 | 0 2502 | SZPS 2503 | PUSHB_1 2504 | 23 2505 | SWAP 2506 | WS 2507 | PUSHB_1 2508 | 3 2509 | CINDEX 2510 | PUSHB_1 2511 | 2 2512 | CINDEX 2513 | GC[orig] 2514 | SWAP 2515 | GC[orig] 2516 | SWAP 2517 | SUB 2518 | PUSHB_1 2519 | 0 2520 | EQ 2521 | IF 2522 | MDAP[no-rnd] 2523 | DUP 2524 | ALIGNRP 2525 | SWAP 2526 | POP 2527 | ELSE 2528 | PUSHB_1 2529 | 2 2530 | CINDEX 2531 | PUSHB_1 2532 | 2 2533 | CINDEX 2534 | GC[orig] 2535 | SWAP 2536 | GC[orig] 2537 | SWAP 2538 | SUB 2539 | DUP 2540 | PUSHB_1 2541 | 5 2542 | CINDEX 2543 | PUSHB_1 2544 | 4 2545 | CINDEX 2546 | GC[orig] 2547 | SWAP 2548 | GC[orig] 2549 | SWAP 2550 | SUB 2551 | PUSHB_1 2552 | 6 2553 | CINDEX 2554 | PUSHB_1 2555 | 5 2556 | CINDEX 2557 | MD[grid] 2558 | PUSHB_1 2559 | 2 2560 | CINDEX 2561 | SUB 2562 | PUSHW_2 2563 | 2048 2564 | 2048 2565 | MUL 2566 | MUL 2567 | SWAP 2568 | DUP 2569 | IF 2570 | DIV 2571 | ELSE 2572 | POP 2573 | EIF 2574 | MUL 2575 | PUSHW_1 2576 | 1024 2577 | DIV 2578 | DUP 2579 | PUSHB_1 2580 | 0 2581 | LT 2582 | IF 2583 | PUSHB_1 2584 | 64 2585 | ADD 2586 | EIF 2587 | FLOOR 2588 | PUSHB_1 2589 | 1 2590 | MUL 2591 | ADD 2592 | SWAP 2593 | MDAP[no-rnd] 2594 | SWAP 2595 | DUP 2596 | DUP 2597 | ALIGNRP 2598 | ROLL 2599 | SHPIX 2600 | SWAP 2601 | POP 2602 | EIF 2603 | ENDF 2604 | PUSHB_1 2605 | 63 2606 | FDEF 2607 | PUSHB_1 2608 | 0 2609 | SZPS 2610 | PUSHB_1 2611 | 23 2612 | SWAP 2613 | WS 2614 | DUP 2615 | PUSHB_1 2616 | 10 2617 | RS 2618 | DUP 2619 | MDAP[no-rnd] 2620 | GC[orig] 2621 | SWAP 2622 | GC[orig] 2623 | SWAP 2624 | SUB 2625 | DUP 2626 | ADD 2627 | PUSHB_1 2628 | 32 2629 | ADD 2630 | FLOOR 2631 | PUSHB_1 2632 | 2 2633 | DIV 2634 | DUP 2635 | PUSHB_1 2636 | 0 2637 | LT 2638 | IF 2639 | PUSHB_1 2640 | 64 2641 | ADD 2642 | EIF 2643 | FLOOR 2644 | PUSHB_1 2645 | 1 2646 | MUL 2647 | SWAP 2648 | DUP 2649 | DUP 2650 | ALIGNRP 2651 | ROLL 2652 | SHPIX 2653 | ENDF 2654 | PUSHB_1 2655 | 64 2656 | FDEF 2657 | SWAP 2658 | DUP 2659 | MDAP[no-rnd] 2660 | GC[cur] 2661 | PUSHB_1 2662 | 2 2663 | CINDEX 2664 | GC[cur] 2665 | PUSHB_1 2666 | 23 2667 | RS 2668 | IF 2669 | LT 2670 | ELSE 2671 | GT 2672 | EIF 2673 | IF 2674 | DUP 2675 | ALIGNRP 2676 | EIF 2677 | MDAP[no-rnd] 2678 | PUSHB_2 2679 | 48 2680 | 1 2681 | SZP1 2682 | CALL 2683 | ENDF 2684 | PUSHB_1 2685 | 65 2686 | FDEF 2687 | SWAP 2688 | DUP 2689 | MDAP[no-rnd] 2690 | GC[cur] 2691 | PUSHB_1 2692 | 2 2693 | CINDEX 2694 | GC[cur] 2695 | PUSHB_1 2696 | 23 2697 | RS 2698 | IF 2699 | GT 2700 | ELSE 2701 | LT 2702 | EIF 2703 | IF 2704 | DUP 2705 | ALIGNRP 2706 | EIF 2707 | MDAP[no-rnd] 2708 | PUSHB_2 2709 | 48 2710 | 1 2711 | SZP1 2712 | CALL 2713 | ENDF 2714 | PUSHB_1 2715 | 66 2716 | FDEF 2717 | SWAP 2718 | DUP 2719 | MDAP[no-rnd] 2720 | GC[cur] 2721 | PUSHB_1 2722 | 2 2723 | CINDEX 2724 | GC[cur] 2725 | PUSHB_1 2726 | 23 2727 | RS 2728 | IF 2729 | LT 2730 | ELSE 2731 | GT 2732 | EIF 2733 | IF 2734 | DUP 2735 | ALIGNRP 2736 | EIF 2737 | SWAP 2738 | DUP 2739 | MDAP[no-rnd] 2740 | GC[cur] 2741 | PUSHB_1 2742 | 2 2743 | CINDEX 2744 | GC[cur] 2745 | PUSHB_1 2746 | 23 2747 | RS 2748 | IF 2749 | GT 2750 | ELSE 2751 | LT 2752 | EIF 2753 | IF 2754 | DUP 2755 | ALIGNRP 2756 | EIF 2757 | MDAP[no-rnd] 2758 | PUSHB_2 2759 | 48 2760 | 1 2761 | SZP1 2762 | CALL 2763 | ENDF 2764 | PUSHB_1 2765 | 67 2766 | FDEF 2767 | PUSHB_1 2768 | 58 2769 | CALL 2770 | SWAP 2771 | DUP 2772 | MDAP[no-rnd] 2773 | GC[cur] 2774 | PUSHB_1 2775 | 2 2776 | CINDEX 2777 | GC[cur] 2778 | PUSHB_1 2779 | 23 2780 | RS 2781 | IF 2782 | LT 2783 | ELSE 2784 | GT 2785 | EIF 2786 | IF 2787 | DUP 2788 | ALIGNRP 2789 | EIF 2790 | MDAP[no-rnd] 2791 | PUSHB_2 2792 | 48 2793 | 1 2794 | SZP1 2795 | CALL 2796 | ENDF 2797 | PUSHB_1 2798 | 68 2799 | FDEF 2800 | PUSHB_1 2801 | 59 2802 | CALL 2803 | ROLL 2804 | DUP 2805 | DUP 2806 | ALIGNRP 2807 | PUSHB_1 2808 | 6 2809 | SWAP 2810 | WS 2811 | ROLL 2812 | SHPIX 2813 | SWAP 2814 | DUP 2815 | MDAP[no-rnd] 2816 | GC[cur] 2817 | PUSHB_1 2818 | 2 2819 | CINDEX 2820 | GC[cur] 2821 | PUSHB_1 2822 | 23 2823 | RS 2824 | IF 2825 | LT 2826 | ELSE 2827 | GT 2828 | EIF 2829 | IF 2830 | DUP 2831 | ALIGNRP 2832 | EIF 2833 | MDAP[no-rnd] 2834 | PUSHB_2 2835 | 48 2836 | 1 2837 | SZP1 2838 | CALL 2839 | PUSHB_1 2840 | 6 2841 | RS 2842 | MDAP[no-rnd] 2843 | PUSHB_1 2844 | 48 2845 | CALL 2846 | ENDF 2847 | PUSHB_1 2848 | 69 2849 | FDEF 2850 | PUSHB_1 2851 | 0 2852 | SZPS 2853 | PUSHB_1 2854 | 4 2855 | CINDEX 2856 | PUSHB_1 2857 | 4 2858 | MINDEX 2859 | DUP 2860 | DUP 2861 | DUP 2862 | GC[cur] 2863 | SWAP 2864 | GC[orig] 2865 | SUB 2866 | PUSHB_1 2867 | 12 2868 | SWAP 2869 | WS 2870 | MDAP[no-rnd] 2871 | GC[orig] 2872 | SWAP 2873 | GC[orig] 2874 | SWAP 2875 | SUB 2876 | PUSHB_1 2877 | 11 2878 | RS 2879 | CALL 2880 | SWAP 2881 | DUP 2882 | ALIGNRP 2883 | DUP 2884 | MDAP[no-rnd] 2885 | SWAP 2886 | SHPIX 2887 | PUSHB_2 2888 | 48 2889 | 1 2890 | SZP1 2891 | CALL 2892 | ENDF 2893 | PUSHB_1 2894 | 70 2895 | FDEF 2896 | PUSHB_2 2897 | 10 2898 | 4 2899 | CINDEX 2900 | WS 2901 | PUSHB_1 2902 | 0 2903 | SZPS 2904 | PUSHB_1 2905 | 4 2906 | CINDEX 2907 | PUSHB_1 2908 | 4 2909 | CINDEX 2910 | DUP 2911 | MDAP[no-rnd] 2912 | GC[orig] 2913 | SWAP 2914 | GC[orig] 2915 | SWAP 2916 | SUB 2917 | DUP 2918 | PUSHB_1 2919 | 6 2920 | SWAP 2921 | WS 2922 | PUSHB_2 2923 | 12 2924 | 0 2925 | WS 2926 | PUSHB_1 2927 | 11 2928 | RS 2929 | CALL 2930 | DUP 2931 | PUSHB_1 2932 | 96 2933 | LT 2934 | IF 2935 | DUP 2936 | PUSHB_1 2937 | 64 2938 | LTEQ 2939 | IF 2940 | PUSHB_4 2941 | 4 2942 | 32 2943 | 5 2944 | 32 2945 | ELSE 2946 | PUSHB_4 2947 | 4 2948 | 38 2949 | 5 2950 | 26 2951 | EIF 2952 | WS 2953 | WS 2954 | SWAP 2955 | DUP 2956 | GC[orig] 2957 | PUSHB_1 2958 | 6 2959 | RS 2960 | PUSHB_1 2961 | 2 2962 | DIV 2963 | DUP 2964 | PUSHB_1 2965 | 0 2966 | LT 2967 | IF 2968 | PUSHB_1 2969 | 64 2970 | ADD 2971 | EIF 2972 | FLOOR 2973 | PUSHB_1 2974 | 1 2975 | MUL 2976 | ADD 2977 | DUP 2978 | PUSHB_1 2979 | 1 2980 | CALL 2981 | DUP 2982 | ROLL 2983 | ROLL 2984 | SUB 2985 | DUP 2986 | PUSHB_1 2987 | 4 2988 | RS 2989 | ADD 2990 | ABS 2991 | SWAP 2992 | PUSHB_1 2993 | 5 2994 | RS 2995 | SUB 2996 | ABS 2997 | LT 2998 | IF 2999 | PUSHB_1 3000 | 4 3001 | RS 3002 | SUB 3003 | ELSE 3004 | PUSHB_1 3005 | 5 3006 | RS 3007 | ADD 3008 | EIF 3009 | PUSHB_1 3010 | 3 3011 | CINDEX 3012 | PUSHB_1 3013 | 2 3014 | DIV 3015 | DUP 3016 | PUSHB_1 3017 | 0 3018 | LT 3019 | IF 3020 | PUSHB_1 3021 | 64 3022 | ADD 3023 | EIF 3024 | FLOOR 3025 | PUSHB_1 3026 | 1 3027 | MUL 3028 | SUB 3029 | PUSHB_1 3030 | 2 3031 | CINDEX 3032 | GC[cur] 3033 | SUB 3034 | SHPIX 3035 | SWAP 3036 | DUP 3037 | ALIGNRP 3038 | SWAP 3039 | SHPIX 3040 | ELSE 3041 | POP 3042 | DUP 3043 | DUP 3044 | GC[cur] 3045 | SWAP 3046 | GC[orig] 3047 | PUSHB_1 3048 | 1 3049 | CALL 3050 | SWAP 3051 | SUB 3052 | SHPIX 3053 | POP 3054 | EIF 3055 | PUSHB_2 3056 | 48 3057 | 1 3058 | SZP1 3059 | CALL 3060 | ENDF 3061 | PUSHB_1 3062 | 71 3063 | FDEF 3064 | PUSHB_2 3065 | 0 3066 | 58 3067 | CALL 3068 | MDAP[no-rnd] 3069 | PUSHB_2 3070 | 48 3071 | 1 3072 | SZP1 3073 | CALL 3074 | ENDF 3075 | PUSHB_1 3076 | 72 3077 | FDEF 3078 | PUSHB_2 3079 | 0 3080 | 59 3081 | CALL 3082 | POP 3083 | SWAP 3084 | DUP 3085 | DUP 3086 | ALIGNRP 3087 | PUSHB_1 3088 | 6 3089 | SWAP 3090 | WS 3091 | SWAP 3092 | SHPIX 3093 | PUSHB_2 3094 | 48 3095 | 1 3096 | SZP1 3097 | CALL 3098 | PUSHB_1 3099 | 6 3100 | RS 3101 | MDAP[no-rnd] 3102 | PUSHB_1 3103 | 48 3104 | CALL 3105 | ENDF 3106 | PUSHB_1 3107 | 73 3108 | FDEF 3109 | PUSHB_1 3110 | 0 3111 | SZP2 3112 | DUP 3113 | GC[orig] 3114 | PUSHB_1 3115 | 0 3116 | SWAP 3117 | WS 3118 | PUSHB_3 3119 | 0 3120 | 1 3121 | 1 3122 | SZP2 3123 | SZP1 3124 | SZP0 3125 | MDAP[no-rnd] 3126 | PUSHB_1 3127 | 54 3128 | LOOPCALL 3129 | ENDF 3130 | PUSHB_1 3131 | 74 3132 | FDEF 3133 | PUSHB_1 3134 | 0 3135 | SZP2 3136 | DUP 3137 | GC[orig] 3138 | PUSHB_1 3139 | 0 3140 | SWAP 3141 | WS 3142 | PUSHB_3 3143 | 0 3144 | 1 3145 | 1 3146 | SZP2 3147 | SZP1 3148 | SZP0 3149 | MDAP[no-rnd] 3150 | PUSHB_1 3151 | 54 3152 | LOOPCALL 3153 | ENDF 3154 | PUSHB_1 3155 | 75 3156 | FDEF 3157 | PUSHB_2 3158 | 0 3159 | 1 3160 | SZP1 3161 | SZP0 3162 | PUSHB_1 3163 | 55 3164 | LOOPCALL 3165 | ENDF 3166 | PUSHB_1 3167 | 76 3168 | FDEF 3169 | PUSHB_1 3170 | 57 3171 | LOOPCALL 3172 | ENDF 3173 | PUSHB_1 3174 | 77 3175 | FDEF 3176 | PUSHB_1 3177 | 0 3178 | SZPS 3179 | RCVT 3180 | SWAP 3181 | DUP 3182 | MDAP[no-rnd] 3183 | DUP 3184 | GC[cur] 3185 | ROLL 3186 | SWAP 3187 | SUB 3188 | SHPIX 3189 | PUSHB_2 3190 | 48 3191 | 1 3192 | SZP1 3193 | CALL 3194 | ENDF 3195 | PUSHB_1 3196 | 78 3197 | FDEF 3198 | PUSHB_1 3199 | 10 3200 | SWAP 3201 | WS 3202 | PUSHB_1 3203 | 77 3204 | CALL 3205 | ENDF 3206 | PUSHB_1 3207 | 79 3208 | FDEF 3209 | PUSHB_3 3210 | 0 3211 | 0 3212 | 70 3213 | CALL 3214 | ENDF 3215 | PUSHB_1 3216 | 80 3217 | FDEF 3218 | PUSHB_3 3219 | 0 3220 | 1 3221 | 70 3222 | CALL 3223 | ENDF 3224 | PUSHB_1 3225 | 81 3226 | FDEF 3227 | PUSHB_3 3228 | 1 3229 | 0 3230 | 70 3231 | CALL 3232 | ENDF 3233 | PUSHB_1 3234 | 82 3235 | FDEF 3236 | PUSHB_3 3237 | 1 3238 | 1 3239 | 70 3240 | CALL 3241 | ENDF 3242 | PUSHB_1 3243 | 83 3244 | FDEF 3245 | PUSHB_3 3246 | 0 3247 | 0 3248 | 71 3249 | CALL 3250 | ENDF 3251 | PUSHB_1 3252 | 84 3253 | FDEF 3254 | PUSHB_3 3255 | 0 3256 | 1 3257 | 71 3258 | CALL 3259 | ENDF 3260 | PUSHB_1 3261 | 85 3262 | FDEF 3263 | PUSHB_3 3264 | 1 3265 | 0 3266 | 71 3267 | CALL 3268 | ENDF 3269 | PUSHB_1 3270 | 86 3271 | FDEF 3272 | PUSHB_3 3273 | 1 3274 | 1 3275 | 71 3276 | CALL 3277 | ENDF 3278 | PUSHB_1 3279 | 87 3280 | FDEF 3281 | PUSHB_4 3282 | 0 3283 | 0 3284 | 0 3285 | 67 3286 | CALL 3287 | ENDF 3288 | PUSHB_1 3289 | 88 3290 | FDEF 3291 | PUSHB_4 3292 | 0 3293 | 1 3294 | 0 3295 | 67 3296 | CALL 3297 | ENDF 3298 | PUSHB_1 3299 | 89 3300 | FDEF 3301 | PUSHB_4 3302 | 1 3303 | 0 3304 | 0 3305 | 67 3306 | CALL 3307 | ENDF 3308 | PUSHB_1 3309 | 90 3310 | FDEF 3311 | PUSHB_4 3312 | 1 3313 | 1 3314 | 0 3315 | 67 3316 | CALL 3317 | ENDF 3318 | PUSHB_1 3319 | 91 3320 | FDEF 3321 | PUSHB_4 3322 | 0 3323 | 0 3324 | 1 3325 | 67 3326 | CALL 3327 | ENDF 3328 | PUSHB_1 3329 | 92 3330 | FDEF 3331 | PUSHB_4 3332 | 0 3333 | 1 3334 | 1 3335 | 67 3336 | CALL 3337 | ENDF 3338 | PUSHB_1 3339 | 93 3340 | FDEF 3341 | PUSHB_4 3342 | 1 3343 | 0 3344 | 1 3345 | 67 3346 | CALL 3347 | ENDF 3348 | PUSHB_1 3349 | 94 3350 | FDEF 3351 | PUSHB_4 3352 | 1 3353 | 1 3354 | 1 3355 | 67 3356 | CALL 3357 | ENDF 3358 | PUSHB_1 3359 | 95 3360 | FDEF 3361 | PUSHB_3 3362 | 0 3363 | 0 3364 | 69 3365 | CALL 3366 | ENDF 3367 | PUSHB_1 3368 | 96 3369 | FDEF 3370 | PUSHB_3 3371 | 0 3372 | 1 3373 | 69 3374 | CALL 3375 | ENDF 3376 | PUSHB_1 3377 | 97 3378 | FDEF 3379 | PUSHB_3 3380 | 1 3381 | 0 3382 | 69 3383 | CALL 3384 | ENDF 3385 | PUSHB_1 3386 | 98 3387 | FDEF 3388 | PUSHB_3 3389 | 1 3390 | 1 3391 | 69 3392 | CALL 3393 | ENDF 3394 | PUSHB_1 3395 | 99 3396 | FDEF 3397 | PUSHB_3 3398 | 0 3399 | 0 3400 | 72 3401 | CALL 3402 | ENDF 3403 | PUSHB_1 3404 | 100 3405 | FDEF 3406 | PUSHB_3 3407 | 0 3408 | 1 3409 | 72 3410 | CALL 3411 | ENDF 3412 | PUSHB_1 3413 | 101 3414 | FDEF 3415 | PUSHB_3 3416 | 1 3417 | 0 3418 | 72 3419 | CALL 3420 | ENDF 3421 | PUSHB_1 3422 | 102 3423 | FDEF 3424 | PUSHB_3 3425 | 1 3426 | 1 3427 | 72 3428 | CALL 3429 | ENDF 3430 | PUSHB_1 3431 | 103 3432 | FDEF 3433 | PUSHB_4 3434 | 0 3435 | 0 3436 | 0 3437 | 68 3438 | CALL 3439 | ENDF 3440 | PUSHB_1 3441 | 104 3442 | FDEF 3443 | PUSHB_4 3444 | 0 3445 | 1 3446 | 0 3447 | 68 3448 | CALL 3449 | ENDF 3450 | PUSHB_1 3451 | 105 3452 | FDEF 3453 | PUSHB_4 3454 | 1 3455 | 0 3456 | 0 3457 | 68 3458 | CALL 3459 | ENDF 3460 | PUSHB_1 3461 | 106 3462 | FDEF 3463 | PUSHB_4 3464 | 1 3465 | 1 3466 | 0 3467 | 68 3468 | CALL 3469 | ENDF 3470 | PUSHB_1 3471 | 107 3472 | FDEF 3473 | PUSHB_4 3474 | 0 3475 | 0 3476 | 1 3477 | 68 3478 | CALL 3479 | ENDF 3480 | PUSHB_1 3481 | 108 3482 | FDEF 3483 | PUSHB_4 3484 | 0 3485 | 1 3486 | 1 3487 | 68 3488 | CALL 3489 | ENDF 3490 | PUSHB_1 3491 | 109 3492 | FDEF 3493 | PUSHB_4 3494 | 1 3495 | 0 3496 | 1 3497 | 68 3498 | CALL 3499 | ENDF 3500 | PUSHB_1 3501 | 110 3502 | FDEF 3503 | PUSHB_4 3504 | 1 3505 | 1 3506 | 1 3507 | 68 3508 | CALL 3509 | ENDF 3510 | PUSHB_1 3511 | 111 3512 | FDEF 3513 | PUSHB_2 3514 | 0 3515 | 60 3516 | CALL 3517 | MDAP[no-rnd] 3518 | PUSHB_2 3519 | 48 3520 | 1 3521 | SZP1 3522 | CALL 3523 | ENDF 3524 | PUSHB_1 3525 | 112 3526 | FDEF 3527 | PUSHB_2 3528 | 0 3529 | 60 3530 | CALL 3531 | PUSHB_1 3532 | 64 3533 | CALL 3534 | ENDF 3535 | PUSHB_1 3536 | 113 3537 | FDEF 3538 | PUSHB_2 3539 | 0 3540 | 60 3541 | CALL 3542 | PUSHB_1 3543 | 65 3544 | CALL 3545 | ENDF 3546 | PUSHB_1 3547 | 114 3548 | FDEF 3549 | PUSHB_1 3550 | 0 3551 | SZPS 3552 | PUSHB_2 3553 | 0 3554 | 60 3555 | CALL 3556 | PUSHB_1 3557 | 66 3558 | CALL 3559 | ENDF 3560 | PUSHB_1 3561 | 115 3562 | FDEF 3563 | PUSHB_2 3564 | 1 3565 | 60 3566 | CALL 3567 | PUSHB_1 3568 | 64 3569 | CALL 3570 | ENDF 3571 | PUSHB_1 3572 | 116 3573 | FDEF 3574 | PUSHB_2 3575 | 1 3576 | 60 3577 | CALL 3578 | PUSHB_1 3579 | 65 3580 | CALL 3581 | ENDF 3582 | PUSHB_1 3583 | 117 3584 | FDEF 3585 | PUSHB_1 3586 | 0 3587 | SZPS 3588 | PUSHB_2 3589 | 1 3590 | 60 3591 | CALL 3592 | PUSHB_1 3593 | 66 3594 | CALL 3595 | ENDF 3596 | PUSHB_1 3597 | 118 3598 | FDEF 3599 | PUSHB_2 3600 | 0 3601 | 61 3602 | CALL 3603 | MDAP[no-rnd] 3604 | PUSHB_2 3605 | 48 3606 | 1 3607 | SZP1 3608 | CALL 3609 | ENDF 3610 | PUSHB_1 3611 | 119 3612 | FDEF 3613 | PUSHB_2 3614 | 0 3615 | 61 3616 | CALL 3617 | PUSHB_1 3618 | 64 3619 | CALL 3620 | ENDF 3621 | PUSHB_1 3622 | 120 3623 | FDEF 3624 | PUSHB_2 3625 | 0 3626 | 61 3627 | CALL 3628 | PUSHB_1 3629 | 65 3630 | CALL 3631 | ENDF 3632 | PUSHB_1 3633 | 121 3634 | FDEF 3635 | PUSHB_2 3636 | 0 3637 | 61 3638 | CALL 3639 | PUSHB_1 3640 | 66 3641 | CALL 3642 | ENDF 3643 | PUSHB_1 3644 | 122 3645 | FDEF 3646 | PUSHB_2 3647 | 1 3648 | 61 3649 | CALL 3650 | PUSHB_1 3651 | 64 3652 | CALL 3653 | ENDF 3654 | PUSHB_1 3655 | 123 3656 | FDEF 3657 | PUSHB_2 3658 | 1 3659 | 61 3660 | CALL 3661 | PUSHB_1 3662 | 65 3663 | CALL 3664 | ENDF 3665 | PUSHB_1 3666 | 124 3667 | FDEF 3668 | PUSHB_2 3669 | 1 3670 | 61 3671 | CALL 3672 | PUSHB_1 3673 | 66 3674 | CALL 3675 | ENDF 3676 | PUSHB_1 3677 | 125 3678 | FDEF 3679 | PUSHB_2 3680 | 0 3681 | 62 3682 | CALL 3683 | MDAP[no-rnd] 3684 | PUSHB_2 3685 | 48 3686 | 1 3687 | SZP1 3688 | CALL 3689 | ENDF 3690 | PUSHB_1 3691 | 126 3692 | FDEF 3693 | PUSHB_2 3694 | 0 3695 | 62 3696 | CALL 3697 | PUSHB_1 3698 | 64 3699 | CALL 3700 | ENDF 3701 | PUSHB_1 3702 | 127 3703 | FDEF 3704 | PUSHB_2 3705 | 0 3706 | 62 3707 | CALL 3708 | PUSHB_1 3709 | 65 3710 | CALL 3711 | ENDF 3712 | PUSHB_1 3713 | 128 3714 | FDEF 3715 | PUSHB_2 3716 | 0 3717 | 62 3718 | CALL 3719 | PUSHB_1 3720 | 66 3721 | CALL 3722 | ENDF 3723 | PUSHB_1 3724 | 129 3725 | FDEF 3726 | PUSHB_2 3727 | 1 3728 | 62 3729 | CALL 3730 | PUSHB_1 3731 | 64 3732 | CALL 3733 | ENDF 3734 | PUSHB_1 3735 | 130 3736 | FDEF 3737 | PUSHB_2 3738 | 1 3739 | 62 3740 | CALL 3741 | PUSHB_1 3742 | 65 3743 | CALL 3744 | ENDF 3745 | PUSHB_1 3746 | 131 3747 | FDEF 3748 | PUSHB_2 3749 | 1 3750 | 62 3751 | CALL 3752 | PUSHB_1 3753 | 66 3754 | CALL 3755 | ENDF 3756 | PUSHB_1 3757 | 132 3758 | FDEF 3759 | PUSHB_2 3760 | 0 3761 | 63 3762 | CALL 3763 | MDAP[no-rnd] 3764 | PUSHB_2 3765 | 48 3766 | 1 3767 | SZP1 3768 | CALL 3769 | ENDF 3770 | PUSHB_1 3771 | 133 3772 | FDEF 3773 | PUSHB_2 3774 | 0 3775 | 63 3776 | CALL 3777 | PUSHB_1 3778 | 64 3779 | CALL 3780 | ENDF 3781 | PUSHB_1 3782 | 134 3783 | FDEF 3784 | PUSHB_2 3785 | 0 3786 | 63 3787 | CALL 3788 | PUSHB_1 3789 | 65 3790 | CALL 3791 | ENDF 3792 | PUSHB_1 3793 | 135 3794 | FDEF 3795 | PUSHB_2 3796 | 0 3797 | 63 3798 | CALL 3799 | PUSHB_1 3800 | 66 3801 | CALL 3802 | ENDF 3803 | PUSHB_1 3804 | 136 3805 | FDEF 3806 | PUSHB_2 3807 | 1 3808 | 63 3809 | CALL 3810 | PUSHB_1 3811 | 64 3812 | CALL 3813 | ENDF 3814 | PUSHB_1 3815 | 137 3816 | FDEF 3817 | PUSHB_2 3818 | 1 3819 | 63 3820 | CALL 3821 | PUSHB_1 3822 | 65 3823 | CALL 3824 | ENDF 3825 | PUSHB_1 3826 | 138 3827 | FDEF 3828 | PUSHB_2 3829 | 1 3830 | 63 3831 | CALL 3832 | PUSHB_1 3833 | 66 3834 | CALL 3835 | ENDF 3836 | PUSHB_1 3837 | 139 3838 | FDEF 3839 | PUSHB_3 3840 | 11 3841 | 0 3842 | 3 3843 | RCVT 3844 | LT 3845 | IF 3846 | PUSHB_1 3847 | 6 3848 | ELSE 3849 | PUSHB_3 3850 | 4 3851 | 2 3852 | 3 3853 | RCVT 3854 | IF 3855 | SWAP 3856 | POP 3857 | ELSE 3858 | POP 3859 | EIF 3860 | EIF 3861 | WS 3862 | CALL 3863 | PUSHB_1 3864 | 8 3865 | NEG 3866 | PUSHB_1 3867 | 3 3868 | DEPTH 3869 | LT 3870 | JROT 3871 | PUSHB_2 3872 | 5 3873 | 1 3874 | SZP2 3875 | RCVT 3876 | IF 3877 | IUP[y] 3878 | EIF 3879 | ENDF 3880 | EndTTInstrs 3881 | ShortTable: cvt 119 3882 | 0 3883 | 0 3884 | 0 3885 | 0 3886 | 0 3887 | 0 3888 | 0 3889 | 0 3890 | 0 3891 | 0 3892 | 0 3893 | 0 3894 | 0 3895 | 0 3896 | 0 3897 | 0 3898 | 0 3899 | 0 3900 | 0 3901 | 0 3902 | 0 3903 | 0 3904 | 0 3905 | 0 3906 | 0 3907 | 162 3908 | 162 3909 | 163 3910 | 163 3911 | 1495 3912 | 0 3913 | 1126 3914 | 0 3915 | -369 3916 | 1802 3917 | -380 3918 | 1516 3919 | -20 3920 | 1147 3921 | -16 3922 | -369 3923 | 1802 3924 | -380 3925 | 162 3926 | 162 3927 | 163 3928 | 163 3929 | 1495 3930 | 0 3931 | 1495 3932 | 1126 3933 | 0 3934 | -369 3935 | 1802 3936 | -380 3937 | 1516 3938 | -20 3939 | 1516 3940 | 1143 3941 | -16 3942 | -369 3943 | 1802 3944 | -380 3945 | 50 3946 | 50 3947 | 50 3948 | 50 3949 | 1372 3950 | 102 3951 | 1802 3952 | -380 3953 | 1372 3954 | 102 3955 | 1802 3956 | -380 3957 | 162 3958 | 162 3959 | 163 3960 | 163 3961 | 1495 3962 | 0 3963 | 1495 3964 | 1126 3965 | 0 3966 | -369 3967 | 1802 3968 | -380 3969 | 1516 3970 | -20 3971 | 1591 3972 | 1147 3973 | -16 3974 | -369 3975 | 1802 3976 | -380 3977 | 126 3978 | 126 3979 | 129 3980 | 129 3981 | 645 3982 | -226 3983 | 1802 3984 | -380 3985 | 665 3986 | -246 3987 | 1802 3988 | -380 3989 | 126 3990 | 126 3991 | 129 3992 | 129 3993 | 1700 3994 | 829 3995 | 1802 3996 | -380 3997 | 1720 3998 | 809 3999 | 1802 4000 | -380 4001 | EndShort 4002 | ShortTable: maxp 16 4003 | 1 4004 | 0 4005 | 15042 4006 | 440 4007 | 110 4008 | 91 4009 | 5 4010 | 2 4011 | 660 4012 | 1014 4013 | 141 4014 | 0 4015 | 1368 4016 | 3648 4017 | 3 4018 | 1 4019 | EndShort 4020 | LangName: 1033 "" "" "" "FontForge 2.0 : UDEV Gothic Regular : 24-03-2022" "" "Version 0.0.1 ; ttfautohint (v1.8.3) -l 6 -r 45 -G 200 -x 14 -D latn -f none -a nnn -W -X +ACIA-13-+ACIA" 4021 | GaspTable: 1 65535 15 1 4022 | Encoding: UnicodeFull 4023 | UnicodeInterp: none 4024 | NameList: AGL For New Fonts 4025 | DisplaySize: -48 4026 | AntiAlias: 1 4027 | FitToEm: 0 4028 | WinInfo: 0 13 9 4029 | BeginPrivate: 0 4030 | EndPrivate 4031 | BeginChars: 1116914 1 4032 | 4033 | StartChar: zero 4034 | Encoding: 48 48 0 4035 | Width: 600 4036 | Flags: W 4037 | LayerCount: 2 4038 | Fore 4039 | SplineSet 4040 | 300 98 m 128,-1,1 4041 | 352 98 352 98 383 128 c 128,-1,2 4042 | 414 158 414 158 414 208 c 2,3,-1 4043 | 414 425.76056338 l 1,4,-1 4044 | 194.840996966 160.300362522 l 1,5,6 4045 | 202.555087011 141.978948054 202.555087011 141.978948054 217 128 c 0,7,0 4046 | 248 98 248 98 300 98 c 128,-1,1 4047 | 300 -10 m 128,-1,9 4048 | 229 -10 229 -10 177 17 c 128,-1,10 4049 | 125 44 125 44 96.5 93 c 128,-1,11 4050 | 68 142 68 142 68 208 c 2,12,-1 4051 | 68 522 l 2,13,14 4052 | 68 588 68 588 96.5 637 c 128,-1,15 4053 | 125 686 125 686 177 713 c 128,-1,16 4054 | 229 740 229 740 300 740 c 128,-1,17 4055 | 371 740 371 740 423 713 c 128,-1,18 4056 | 475 686 475 686 503.5 637 c 128,-1,19 4057 | 532 588 532 588 532 522 c 2,20,-1 4058 | 532 208 l 2,21,22 4059 | 532 142 532 142 503.5 93 c 128,-1,23 4060 | 475 44 475 44 423 17 c 128,-1,8 4061 | 371 -10 371 -10 300 -10 c 128,-1,9 4062 | 408.345820781 561.348458974 m 1,24,25 4063 | 400.867884169 584.916835243 400.867884169 584.916835243 383.5 602 c 0,26,27 4064 | 353 632 353 632 300 632 c 128,-1,28 4065 | 247 632 247 632 216.5 602 c 128,-1,29 4066 | 186 572 186 572 186 522 c 2,30,-1 4067 | 186 292.028169014 l 1,31,-1 4068 | 408.345820781 561.348458974 l 1,24,25 4069 | EndSplineSet 4070 | EndChar 4071 | EndChars 4072 | EndSplineFont 4073 | -------------------------------------------------------------------------------- /source/zero-Regular.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.2 2 | FontName: UDEVGothic-Regular 3 | FullName: UDEV Gothic Regular 4 | FamilyName: UDEV Gothic 5 | Weight: Book 6 | Copyright: Copyright (c) 2022, Yuko OTAWARA 7 | Version: 0.0.1 ; ttfautohint (v1.8.3) -l 6 -r 45 -G 200 -x 14 -D latn -f none -a nnn -W -X "13-" 8 | ItalicAngle: 0 9 | UnderlinePosition: -59.082 10 | UnderlineWidth: 49.8047 11 | Ascent: 800 12 | Descent: 200 13 | InvalidEm: 0 14 | sfntRevision: 0x00010000 15 | LayerCount: 2 16 | Layer: 0 1 "+gMyXYgAA" 1 17 | Layer: 1 1 "+Uk2XYgAA" 0 18 | XUID: [1021 1004 1376950171 8412536] 19 | StyleMap: 0x0040 20 | FSType: 0 21 | OS2Version: 4 22 | OS2_WeightWidthSlopeOnly: 1 23 | OS2_UseTypoMetrics: 0 24 | CreationTime: 1648089091 25 | ModificationTime: 1648215143 26 | PfmFamily: 17 27 | TTFWeight: 400 28 | TTFWidth: 5 29 | LineGap: 0 30 | VLineGap: 0 31 | Panose: 2 11 5 9 2 2 3 2 2 7 32 | OS2TypoAscent: 880 33 | OS2TypoAOffset: 0 34 | OS2TypoDescent: -120 35 | OS2TypoDOffset: 0 36 | OS2TypoLinegap: 0 37 | OS2WinAscent: 880 38 | OS2WinAOffset: 0 39 | OS2WinDescent: 186 40 | OS2WinDOffset: 0 41 | HheadAscent: 880 42 | HheadAOffset: 0 43 | HheadDescent: -186 44 | HheadDOffset: 0 45 | OS2SubXSize: 650 46 | OS2SubYSize: 700 47 | OS2SubXOff: 0 48 | OS2SubYOff: 140 49 | OS2SupXSize: 650 50 | OS2SupYSize: 700 51 | OS2SupXOff: 0 52 | OS2SupYOff: 480 53 | OS2StrikeYSize: 50 54 | OS2StrikeYPos: 259 55 | OS2CapHeight: 730 56 | OS2XHeight: 550 57 | OS2FamilyClass: 2057 58 | OS2Vendor: 'twr ' 59 | OS2CodePages: 2002019f.dfd70000 60 | OS2UnicodeRanges: e00402ff.3ac7fdfb.0200003a.00000000 61 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 0" { "'aalt' Access All Alternates lookup 0 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 62 | Lookup: 3 0 0 "'aalt' Access All Alternates lookup 1" { "'aalt' Access All Alternates lookup 1 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 63 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 2" { "'ccmp' Glyph Composition/Decomposition lookup 2 subtable" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 64 | Lookup: 1 0 0 "'frac' Diagonal Fractions lookup 3" { "'frac' Diagonal Fractions lookup 3 subtable" } ['frac' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 65 | Lookup: 1 0 0 "'numr' Numerators lookup 4" { "'numr' Numerators lookup 4 subtable" } ['numr' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 66 | Lookup: 4 0 0 "'dlig' Discretionary Ligatures lookup 5" { "'dlig' Discretionary Ligatures lookup 5 subtable" } ['dlig' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 67 | Lookup: 1 0 0 "'expt' Expert Forms lookup 6" { "'expt' Expert Forms lookup 6 subtable" } ['expt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 68 | Lookup: 1 0 0 "'fwid' Full Widths lookup 7" { "'fwid' Full Widths lookup 7 subtable" ("full") } ['fwid' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 69 | Lookup: 1 0 0 "'hojo' Hojo (JIS X 0212-1990) Kanji Forms lookup 8" { "'hojo' Hojo (JIS X 0212-1990) Kanji Forms lookup 8 subtable" } ['hojo' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 70 | Lookup: 1 0 0 "'hwid' Half Widths lookup 9" { "'hwid' Half Widths lookup 9 subtable" ("hw") } ['hwid' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 71 | Lookup: 1 0 0 "'jp78' JIS78 Forms lookup 10" { "'jp78' JIS78 Forms lookup 10 subtable" } ['jp78' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 72 | Lookup: 1 0 0 "'jp83' JIS83 Forms lookup 11" { "'jp83' JIS83 Forms lookup 11 subtable" } ['jp83' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 73 | Lookup: 1 0 0 "'jp90' JIS90 Forms lookup 12" { "'jp90' JIS90 Forms lookup 12 subtable" } ['jp90' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 74 | Lookup: 1 0 0 "'nalt' Alternate Annotation Forms lookup 13" { "'nalt' Alternate Annotation Forms lookup 13 subtable" } ['nalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 75 | Lookup: 3 0 0 "'nalt' Alternate Annotation Forms lookup 14" { "'nalt' Alternate Annotation Forms lookup 14 subtable" } ['nalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 76 | Lookup: 1 0 0 "'nlck' NLC Kanji Forms lookup 15" { "'nlck' NLC Kanji Forms lookup 15 subtable" } ['nlck' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 77 | Lookup: 4 0 1 "'liga' Standard Ligatures lookup 16" { "'liga' Standard Ligatures lookup 16 subtable" } ['liga' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 78 | Lookup: 1 0 0 "'ruby' Ruby Notational Forms lookup 17" { "'ruby' Ruby Notational Forms lookup 17 subtable" } ['ruby' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 79 | Lookup: 1 0 0 "'sups' Superscript lookup 18" { "'sups' Superscript lookup 18 subtable" ("superior") } ['sups' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 80 | Lookup: 1 0 0 "'trad' Traditional Forms lookup 19" { "'trad' Traditional Forms lookup 19 subtable" } ['trad' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 81 | Lookup: 3 0 0 "'trad' Traditional Forms lookup 20" { "'trad' Traditional Forms lookup 20 subtable" } ['trad' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 82 | Lookup: 1 0 0 "'zero' Slashed Zero lookup 21" { "'zero' Slashed Zero lookup 21 subtable" } ['zero' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 83 | Lookup: 1 0 0 "'vert' Vertical Alternates lookup 22" { "'vert' Vertical Alternates lookup 22 subtable" } ['vert' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 84 | Lookup: 1 0 0 "'vkna' Vertical Kana Alternates lookup 23" { "'vkna' Vertical Kana Alternates lookup 23 subtable" } ['vkna' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 85 | Lookup: 1 0 0 "'vrt2' Vertical Rotation & Alternates lookup 24" { "'vrt2' Vertical Rotation & Alternates lookup 24 subtable" ("vert") } ['vrt2' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 86 | Lookup: 1 0 0 "'locl' Localized Forms in Cyrillic lookup 25" { "'locl' Localized Forms in Cyrillic lookup 25 subtable" } ['locl' ('cyrl' <'dflt' > ) ] 87 | MarkAttachClasses: 1 88 | DEI: 91125 89 | TtTable: prep 90 | PUSHB_2 91 | 4 92 | 0 93 | WCVTP 94 | PUSHW_2 95 | 32767 96 | 13 97 | PUSHB_1 98 | 19 99 | CALL 100 | SVTCA[y-axis] 101 | MPPEM 102 | PUSHW_1 103 | 200 104 | GT 105 | IF 106 | PUSHB_2 107 | 1 108 | 1 109 | INSTCTRL 110 | EIF 111 | PUSHB_1 112 | 1 113 | PUSHW_2 114 | 2048 115 | 2048 116 | MUL 117 | WCVTF 118 | PUSHB_1 119 | 4 120 | RCVT 121 | NOT 122 | IF 123 | PUSHB_2 124 | 0 125 | 7 126 | WS 127 | PUSHB_8 128 | 0 129 | 0 130 | 90 131 | 0 132 | 58 133 | 38 134 | 6 135 | 0 136 | LOOPCALL 137 | PUSHB_2 138 | 0 139 | 7 140 | WS 141 | NPUSHB 142 | 14 143 | 109 144 | 4 145 | 97 146 | 4 147 | 77 148 | 8 149 | 65 150 | 4 151 | 45 152 | 8 153 | 27 154 | 7 155 | 6 156 | 10 157 | LOOPCALL 158 | PUSHB_2 159 | 0 160 | 7 161 | WS 162 | NPUSHB 163 | 14 164 | 115 165 | 2 166 | 103 167 | 2 168 | 87 169 | 6 170 | 71 171 | 2 172 | 55 173 | 6 174 | 36 175 | 5 176 | 6 177 | 10 178 | LOOPCALL 179 | EIF 180 | PUSHB_2 181 | 0 182 | 13 183 | WS 184 | PUSHW_8 185 | 7040 186 | 6272 187 | 4992 188 | 4224 189 | 2944 190 | 1792 191 | 6 192 | 11 193 | LOOPCALL 194 | PUSHB_2 195 | 0 196 | 19 197 | WS 198 | PUSHW_8 199 | 64 200 | 64 201 | 64 202 | 64 203 | 64 204 | 64 205 | 6 206 | 11 207 | LOOPCALL 208 | PUSHW_2 209 | 3 210 | -100 211 | WCVTP 212 | PUSHB_2 213 | 36 214 | 1 215 | GETINFO 216 | LTEQ 217 | IF 218 | PUSHB_1 219 | 64 220 | GETINFO 221 | IF 222 | PUSHW_2 223 | 3 224 | -100 225 | WCVTP 226 | PUSHB_2 227 | 40 228 | 1 229 | GETINFO 230 | LTEQ 231 | IF 232 | PUSHW_1 233 | 2048 234 | GETINFO 235 | IF 236 | PUSHW_2 237 | 3 238 | -100 239 | WCVTP 240 | EIF 241 | ELSE 242 | PUSHB_2 243 | 39 244 | 1 245 | GETINFO 246 | LTEQ 247 | IF 248 | PUSHW_3 249 | 2176 250 | 1 251 | 1088 252 | GETINFO 253 | MUL 254 | EQ 255 | IF 256 | PUSHW_2 257 | 3 258 | -100 259 | WCVTP 260 | EIF 261 | EIF 262 | EIF 263 | EIF 264 | EIF 265 | NPUSHB 266 | 14 267 | 111 268 | 4 269 | 99 270 | 4 271 | 79 272 | 8 273 | 67 274 | 4 275 | 47 276 | 8 277 | 29 278 | 7 279 | 6 280 | 14 281 | LOOPCALL 282 | PUSHW_1 283 | 511 284 | SCANCTRL 285 | PUSHB_1 286 | 4 287 | SCANTYPE 288 | PUSHB_2 289 | 2 290 | 0 291 | WCVTP 292 | PUSHB_4 293 | 5 294 | 100 295 | 6 296 | 0 297 | WCVTP 298 | WCVTP 299 | EndTTInstrs 300 | TtTable: fpgm 301 | PUSHB_1 302 | 0 303 | FDEF 304 | DUP 305 | PUSHB_1 306 | 0 307 | NEQ 308 | IF 309 | RCVT 310 | EIF 311 | DUP 312 | DUP 313 | MPPEM 314 | PUSHW_1 315 | 14 316 | LTEQ 317 | MPPEM 318 | PUSHB_1 319 | 6 320 | GTEQ 321 | AND 322 | IF 323 | PUSHB_1 324 | 52 325 | ELSE 326 | PUSHB_1 327 | 40 328 | EIF 329 | ADD 330 | FLOOR 331 | DUP 332 | ROLL 333 | NEQ 334 | IF 335 | PUSHB_1 336 | 2 337 | CINDEX 338 | SUB 339 | PUSHW_2 340 | 2048 341 | 2048 342 | MUL 343 | MUL 344 | SWAP 345 | DIV 346 | ELSE 347 | POP 348 | POP 349 | PUSHB_1 350 | 0 351 | EIF 352 | PUSHB_1 353 | 0 354 | RS 355 | SWAP 356 | WCVTP 357 | PUSHB_3 358 | 0 359 | 1 360 | 0 361 | RS 362 | ADD 363 | WS 364 | ENDF 365 | PUSHB_1 366 | 1 367 | FDEF 368 | PUSHB_1 369 | 32 370 | ADD 371 | FLOOR 372 | ENDF 373 | PUSHB_1 374 | 2 375 | FDEF 376 | SWAP 377 | POP 378 | SWAP 379 | POP 380 | ENDF 381 | PUSHB_1 382 | 3 383 | FDEF 384 | DUP 385 | ABS 386 | PUSHB_4 387 | 3 388 | 20 389 | 21 390 | 0 391 | WS 392 | RS 393 | PUSHB_1 394 | 19 395 | RS 396 | DUP 397 | ADD 398 | ADD 399 | WS 400 | PUSHB_2 401 | 2 402 | 20 403 | RS 404 | WS 405 | PUSHB_2 406 | 37 407 | 3 408 | RS 409 | PUSHB_1 410 | 2 411 | RS 412 | EQ 413 | JROT 414 | DUP 415 | PUSHB_1 416 | 12 417 | SWAP 418 | PUSHB_1 419 | 2 420 | RS 421 | RS 422 | SUB 423 | ABS 424 | PUSHB_1 425 | 4 426 | LT 427 | JROT 428 | PUSHB_3 429 | 2 430 | 2 431 | 2 432 | RS 433 | ADD 434 | WS 435 | PUSHB_1 436 | 33 437 | NEG 438 | JMPR 439 | POP 440 | PUSHB_1 441 | 2 442 | RS 443 | RS 444 | PUSHB_3 445 | 14 446 | 21 447 | 1 448 | WS 449 | JMPR 450 | DUP 451 | PUSHB_1 452 | 2 453 | RS 454 | SWAP 455 | WS 456 | PUSHB_3 457 | 19 458 | 1 459 | 19 460 | RS 461 | ADD 462 | WS 463 | SWAP 464 | PUSHB_1 465 | 0 466 | LT 467 | IF 468 | NEG 469 | EIF 470 | PUSHB_3 471 | 22 472 | 1 473 | 2 474 | RS 475 | ADD 476 | WS 477 | ENDF 478 | PUSHB_1 479 | 4 480 | FDEF 481 | PUSHB_1 482 | 3 483 | CALL 484 | PUSHB_1 485 | 21 486 | RS 487 | IF 488 | SWAP 489 | POP 490 | SWAP 491 | POP 492 | PUSHB_1 493 | 22 494 | RS 495 | RS 496 | SWAP 497 | PUSHB_1 498 | 0 499 | LT 500 | IF 501 | NEG 502 | EIF 503 | ELSE 504 | DUP 505 | ABS 506 | DUP 507 | PUSHB_1 508 | 192 509 | LT 510 | PUSHB_1 511 | 4 512 | MINDEX 513 | AND 514 | PUSHB_3 515 | 40 516 | 1 517 | 13 518 | RS 519 | RCVT 520 | MUL 521 | RCVT 522 | PUSHB_1 523 | 6 524 | RCVT 525 | IF 526 | POP 527 | PUSHB_1 528 | 3 529 | CINDEX 530 | EIF 531 | GT 532 | OR 533 | IF 534 | POP 535 | SWAP 536 | POP 537 | ELSE 538 | ROLL 539 | IF 540 | DUP 541 | PUSHB_1 542 | 80 543 | LT 544 | IF 545 | POP 546 | PUSHB_1 547 | 64 548 | EIF 549 | ELSE 550 | DUP 551 | PUSHB_1 552 | 56 553 | LT 554 | IF 555 | POP 556 | PUSHB_1 557 | 56 558 | EIF 559 | EIF 560 | DUP 561 | PUSHB_2 562 | 1 563 | 13 564 | RS 565 | RCVT 566 | MUL 567 | RCVT 568 | SUB 569 | ABS 570 | PUSHB_1 571 | 40 572 | LT 573 | IF 574 | POP 575 | PUSHB_2 576 | 1 577 | 13 578 | RS 579 | RCVT 580 | MUL 581 | RCVT 582 | DUP 583 | PUSHB_1 584 | 48 585 | LT 586 | IF 587 | POP 588 | PUSHB_1 589 | 48 590 | EIF 591 | ELSE 592 | DUP 593 | PUSHB_1 594 | 192 595 | LT 596 | IF 597 | DUP 598 | FLOOR 599 | DUP 600 | ROLL 601 | ROLL 602 | SUB 603 | DUP 604 | PUSHB_1 605 | 10 606 | LT 607 | IF 608 | ADD 609 | ELSE 610 | DUP 611 | PUSHB_1 612 | 32 613 | LT 614 | IF 615 | POP 616 | PUSHB_1 617 | 10 618 | ADD 619 | ELSE 620 | DUP 621 | PUSHB_1 622 | 54 623 | LT 624 | IF 625 | POP 626 | PUSHB_1 627 | 54 628 | ADD 629 | ELSE 630 | ADD 631 | EIF 632 | EIF 633 | EIF 634 | ELSE 635 | PUSHB_1 636 | 2 637 | CINDEX 638 | PUSHB_1 639 | 12 640 | RS 641 | MUL 642 | PUSHB_1 643 | 0 644 | GT 645 | IF 646 | PUSHB_1 647 | 0 648 | MPPEM 649 | PUSHB_1 650 | 10 651 | LT 652 | IF 653 | POP 654 | PUSHB_1 655 | 12 656 | RS 657 | ELSE 658 | MPPEM 659 | PUSHB_1 660 | 30 661 | LT 662 | IF 663 | POP 664 | PUSHB_1 665 | 30 666 | MPPEM 667 | SUB 668 | PUSHW_1 669 | 4096 670 | MUL 671 | PUSHB_1 672 | 12 673 | RS 674 | MUL 675 | PUSHW_1 676 | 1280 677 | DIV 678 | EIF 679 | EIF 680 | ABS 681 | SUB 682 | EIF 683 | PUSHB_1 684 | 1 685 | CALL 686 | EIF 687 | EIF 688 | SWAP 689 | PUSHB_1 690 | 0 691 | LT 692 | IF 693 | NEG 694 | EIF 695 | EIF 696 | DUP 697 | ABS 698 | PUSHB_1 699 | 22 700 | RS 701 | SWAP 702 | WS 703 | EIF 704 | ENDF 705 | PUSHB_1 706 | 5 707 | FDEF 708 | DUP 709 | RCVT 710 | DUP 711 | PUSHB_1 712 | 4 713 | CINDEX 714 | SUB 715 | ABS 716 | DUP 717 | PUSHB_1 718 | 7 719 | RS 720 | LT 721 | IF 722 | PUSHB_1 723 | 7 724 | SWAP 725 | WS 726 | PUSHB_1 727 | 8 728 | SWAP 729 | WS 730 | ELSE 731 | POP 732 | POP 733 | EIF 734 | PUSHB_1 735 | 1 736 | ADD 737 | ENDF 738 | PUSHB_1 739 | 6 740 | FDEF 741 | SWAP 742 | POP 743 | SWAP 744 | POP 745 | PUSHB_1 746 | 3 747 | CALL 748 | DUP 749 | ABS 750 | PUSHB_2 751 | 7 752 | 98 753 | WS 754 | DUP 755 | PUSHB_1 756 | 8 757 | SWAP 758 | WS 759 | PUSHB_1 760 | 6 761 | RCVT 762 | IF 763 | ELSE 764 | PUSHB_2 765 | 1 766 | 13 767 | RS 768 | RCVT 769 | MUL 770 | PUSHB_2 771 | 1 772 | 13 773 | RS 774 | PUSHB_1 775 | 6 776 | ADD 777 | RCVT 778 | MUL 779 | PUSHB_1 780 | 5 781 | LOOPCALL 782 | POP 783 | DUP 784 | PUSHB_1 785 | 8 786 | RS 787 | DUP 788 | ROLL 789 | DUP 790 | ROLL 791 | PUSHB_1 792 | 1 793 | CALL 794 | PUSHB_2 795 | 48 796 | 5 797 | CINDEX 798 | PUSHB_1 799 | 4 800 | MINDEX 801 | LTEQ 802 | IF 803 | ADD 804 | LT 805 | ELSE 806 | SUB 807 | GT 808 | EIF 809 | IF 810 | SWAP 811 | EIF 812 | POP 813 | EIF 814 | DUP 815 | PUSHB_1 816 | 64 817 | GTEQ 818 | IF 819 | PUSHB_1 820 | 1 821 | CALL 822 | ELSE 823 | POP 824 | PUSHB_1 825 | 64 826 | EIF 827 | SWAP 828 | PUSHB_1 829 | 0 830 | LT 831 | IF 832 | NEG 833 | EIF 834 | ENDF 835 | PUSHB_1 836 | 7 837 | FDEF 838 | PUSHB_1 839 | 9 840 | RS 841 | CALL 842 | PUSHB_3 843 | 0 844 | 2 845 | 0 846 | RS 847 | ADD 848 | WS 849 | ENDF 850 | PUSHB_1 851 | 8 852 | FDEF 853 | PUSHB_1 854 | 9 855 | SWAP 856 | WS 857 | SWAP 858 | DUP 859 | PUSHB_1 860 | 0 861 | SWAP 862 | WS 863 | SUB 864 | PUSHB_1 865 | 2 866 | DIV 867 | FLOOR 868 | PUSHB_1 869 | 1 870 | MUL 871 | PUSHB_1 872 | 1 873 | ADD 874 | PUSHB_1 875 | 7 876 | LOOPCALL 877 | ENDF 878 | PUSHB_1 879 | 9 880 | FDEF 881 | DUP 882 | DUP 883 | RCVT 884 | DUP 885 | PUSHB_1 886 | 14 887 | RS 888 | MUL 889 | PUSHW_1 890 | 1024 891 | DIV 892 | DUP 893 | PUSHB_1 894 | 0 895 | LT 896 | IF 897 | PUSHB_1 898 | 64 899 | ADD 900 | EIF 901 | FLOOR 902 | PUSHB_1 903 | 1 904 | MUL 905 | ADD 906 | WCVTP 907 | PUSHB_1 908 | 1 909 | ADD 910 | ENDF 911 | PUSHB_1 912 | 10 913 | FDEF 914 | PUSHB_3 915 | 9 916 | 14 917 | 0 918 | RS 919 | RCVT 920 | WS 921 | LOOPCALL 922 | POP 923 | PUSHB_3 924 | 0 925 | 1 926 | 0 927 | RS 928 | ADD 929 | WS 930 | ENDF 931 | PUSHB_1 932 | 11 933 | FDEF 934 | PUSHB_1 935 | 0 936 | RS 937 | SWAP 938 | WCVTP 939 | PUSHB_3 940 | 0 941 | 1 942 | 0 943 | RS 944 | ADD 945 | WS 946 | ENDF 947 | PUSHB_1 948 | 12 949 | FDEF 950 | DUP 951 | DUP 952 | RCVT 953 | DUP 954 | PUSHB_1 955 | 1 956 | CALL 957 | SWAP 958 | PUSHB_1 959 | 0 960 | RS 961 | PUSHB_1 962 | 4 963 | CINDEX 964 | ADD 965 | DUP 966 | RCVT 967 | ROLL 968 | SWAP 969 | SUB 970 | DUP 971 | ABS 972 | DUP 973 | PUSHB_1 974 | 32 975 | LT 976 | IF 977 | POP 978 | PUSHB_1 979 | 0 980 | ELSE 981 | PUSHB_1 982 | 48 983 | LT 984 | IF 985 | PUSHB_1 986 | 32 987 | ELSE 988 | PUSHB_1 989 | 64 990 | EIF 991 | EIF 992 | SWAP 993 | PUSHB_1 994 | 0 995 | LT 996 | IF 997 | NEG 998 | EIF 999 | PUSHB_1 1000 | 3 1001 | CINDEX 1002 | SWAP 1003 | SUB 1004 | WCVTP 1005 | WCVTP 1006 | PUSHB_1 1007 | 1 1008 | ADD 1009 | ENDF 1010 | PUSHB_1 1011 | 13 1012 | FDEF 1013 | DUP 1014 | DUP 1015 | RCVT 1016 | DUP 1017 | PUSHB_1 1018 | 1 1019 | CALL 1020 | SWAP 1021 | PUSHB_1 1022 | 0 1023 | RS 1024 | PUSHB_1 1025 | 4 1026 | CINDEX 1027 | ADD 1028 | DUP 1029 | RCVT 1030 | ROLL 1031 | SWAP 1032 | SUB 1033 | DUP 1034 | ABS 1035 | PUSHB_1 1036 | 36 1037 | LT 1038 | IF 1039 | PUSHB_1 1040 | 0 1041 | ELSE 1042 | PUSHB_1 1043 | 64 1044 | EIF 1045 | SWAP 1046 | PUSHB_1 1047 | 0 1048 | LT 1049 | IF 1050 | NEG 1051 | EIF 1052 | PUSHB_1 1053 | 3 1054 | CINDEX 1055 | SWAP 1056 | SUB 1057 | WCVTP 1058 | WCVTP 1059 | PUSHB_1 1060 | 1 1061 | ADD 1062 | ENDF 1063 | PUSHB_1 1064 | 14 1065 | FDEF 1066 | DUP 1067 | PUSHB_1 1068 | 0 1069 | SWAP 1070 | WS 1071 | PUSHB_4 1072 | 13 1073 | 12 1074 | 0 1075 | 3 1076 | RCVT 1077 | LT 1078 | IF 1079 | POP 1080 | ELSE 1081 | SWAP 1082 | POP 1083 | EIF 1084 | LOOPCALL 1085 | POP 1086 | ENDF 1087 | PUSHB_1 1088 | 15 1089 | FDEF 1090 | PUSHB_2 1091 | 2 1092 | 2 1093 | RCVT 1094 | PUSHB_1 1095 | 100 1096 | SUB 1097 | WCVTP 1098 | ENDF 1099 | PUSHB_1 1100 | 16 1101 | FDEF 1102 | PUSHB_1 1103 | 1 1104 | ADD 1105 | DUP 1106 | DUP 1107 | PUSHB_1 1108 | 15 1109 | RS 1110 | MD[orig] 1111 | PUSHB_1 1112 | 0 1113 | LT 1114 | IF 1115 | DUP 1116 | PUSHB_1 1117 | 15 1118 | SWAP 1119 | WS 1120 | EIF 1121 | PUSHB_1 1122 | 16 1123 | RS 1124 | MD[orig] 1125 | PUSHB_1 1126 | 0 1127 | GT 1128 | IF 1129 | DUP 1130 | PUSHB_1 1131 | 16 1132 | SWAP 1133 | WS 1134 | EIF 1135 | ENDF 1136 | PUSHB_1 1137 | 17 1138 | FDEF 1139 | DUP 1140 | PUSHB_1 1141 | 16 1142 | DIV 1143 | FLOOR 1144 | PUSHB_1 1145 | 1 1146 | MUL 1147 | DUP 1148 | PUSHW_1 1149 | 1024 1150 | MUL 1151 | ROLL 1152 | SWAP 1153 | SUB 1154 | PUSHB_1 1155 | 17 1156 | RS 1157 | ADD 1158 | DUP 1159 | ROLL 1160 | ADD 1161 | DUP 1162 | PUSHB_1 1163 | 17 1164 | SWAP 1165 | WS 1166 | SWAP 1167 | ENDF 1168 | PUSHB_1 1169 | 18 1170 | FDEF 1171 | MPPEM 1172 | EQ 1173 | IF 1174 | PUSHB_2 1175 | 4 1176 | 100 1177 | WCVTP 1178 | EIF 1179 | DEPTH 1180 | PUSHB_1 1181 | 13 1182 | NEG 1183 | SWAP 1184 | JROT 1185 | ENDF 1186 | PUSHB_1 1187 | 19 1188 | FDEF 1189 | MPPEM 1190 | LTEQ 1191 | IF 1192 | MPPEM 1193 | GTEQ 1194 | IF 1195 | PUSHB_2 1196 | 4 1197 | 100 1198 | WCVTP 1199 | EIF 1200 | ELSE 1201 | POP 1202 | EIF 1203 | DEPTH 1204 | PUSHB_1 1205 | 19 1206 | NEG 1207 | SWAP 1208 | JROT 1209 | ENDF 1210 | PUSHB_1 1211 | 20 1212 | FDEF 1213 | PUSHB_2 1214 | 0 1215 | 18 1216 | RS 1217 | NEQ 1218 | IF 1219 | PUSHB_2 1220 | 18 1221 | 18 1222 | RS 1223 | PUSHB_1 1224 | 1 1225 | SUB 1226 | WS 1227 | PUSHB_1 1228 | 17 1229 | CALL 1230 | EIF 1231 | PUSHB_1 1232 | 0 1233 | RS 1234 | PUSHB_1 1235 | 2 1236 | CINDEX 1237 | WS 1238 | PUSHB_2 1239 | 15 1240 | 2 1241 | CINDEX 1242 | WS 1243 | PUSHB_2 1244 | 16 1245 | 2 1246 | CINDEX 1247 | WS 1248 | PUSHB_1 1249 | 1 1250 | SZPS 1251 | SWAP 1252 | DUP 1253 | PUSHB_1 1254 | 3 1255 | CINDEX 1256 | LT 1257 | IF 1258 | PUSHB_2 1259 | 1 1260 | 0 1261 | RS 1262 | ADD 1263 | PUSHB_1 1264 | 4 1265 | CINDEX 1266 | WS 1267 | ROLL 1268 | ROLL 1269 | DUP 1270 | ROLL 1271 | SWAP 1272 | SUB 1273 | PUSHB_1 1274 | 16 1275 | LOOPCALL 1276 | POP 1277 | SWAP 1278 | PUSHB_1 1279 | 1 1280 | SUB 1281 | DUP 1282 | ROLL 1283 | SWAP 1284 | SUB 1285 | PUSHB_1 1286 | 16 1287 | LOOPCALL 1288 | POP 1289 | ELSE 1290 | PUSHB_2 1291 | 1 1292 | 0 1293 | RS 1294 | ADD 1295 | PUSHB_1 1296 | 2 1297 | CINDEX 1298 | WS 1299 | PUSHB_1 1300 | 2 1301 | CINDEX 1302 | SUB 1303 | PUSHB_1 1304 | 16 1305 | LOOPCALL 1306 | POP 1307 | EIF 1308 | PUSHB_1 1309 | 15 1310 | RS 1311 | GC[orig] 1312 | PUSHB_1 1313 | 16 1314 | RS 1315 | GC[orig] 1316 | ADD 1317 | PUSHB_1 1318 | 2 1319 | DIV 1320 | DUP 1321 | PUSHB_1 1322 | 0 1323 | LT 1324 | IF 1325 | PUSHB_1 1326 | 64 1327 | ADD 1328 | EIF 1329 | FLOOR 1330 | PUSHB_1 1331 | 1 1332 | MUL 1333 | DUP 1334 | PUSHB_1 1335 | 14 1336 | RS 1337 | MUL 1338 | PUSHW_1 1339 | 1024 1340 | DIV 1341 | DUP 1342 | PUSHB_1 1343 | 0 1344 | LT 1345 | IF 1346 | PUSHB_1 1347 | 64 1348 | ADD 1349 | EIF 1350 | FLOOR 1351 | PUSHB_1 1352 | 1 1353 | MUL 1354 | ADD 1355 | PUSHB_2 1356 | 0 1357 | 0 1358 | SZP0 1359 | SWAP 1360 | WCVTP 1361 | PUSHB_1 1362 | 1 1363 | RS 1364 | PUSHB_1 1365 | 0 1366 | MIAP[no-rnd] 1367 | PUSHB_3 1368 | 1 1369 | 1 1370 | 1 1371 | RS 1372 | ADD 1373 | WS 1374 | ENDF 1375 | PUSHB_1 1376 | 21 1377 | FDEF 1378 | SVTCA[y-axis] 1379 | PUSHB_2 1380 | 0 1381 | 2 1382 | RCVT 1383 | EQ 1384 | IF 1385 | PUSHB_1 1386 | 18 1387 | SWAP 1388 | WS 1389 | DUP 1390 | RCVT 1391 | PUSHB_1 1392 | 14 1393 | SWAP 1394 | WS 1395 | PUSHB_1 1396 | 13 1397 | SWAP 1398 | PUSHB_1 1399 | 6 1400 | ADD 1401 | WS 1402 | DUP 1403 | ADD 1404 | PUSHB_8 1405 | 24 1406 | 24 1407 | 1 1408 | 0 1409 | 17 1410 | 0 1411 | 19 1412 | 0 1413 | WS 1414 | WS 1415 | WS 1416 | ROLL 1417 | ADD 1418 | DUP 1419 | PUSHB_1 1420 | 20 1421 | SWAP 1422 | WS 1423 | PUSHB_1 1424 | 1 1425 | SUB 1426 | PUSHB_2 1427 | 20 1428 | 8 1429 | CALL 1430 | PUSHB_1 1431 | 139 1432 | CALL 1433 | ELSE 1434 | CLEAR 1435 | EIF 1436 | ENDF 1437 | PUSHB_1 1438 | 22 1439 | FDEF 1440 | PUSHB_2 1441 | 0 1442 | 21 1443 | CALL 1444 | ENDF 1445 | PUSHB_1 1446 | 23 1447 | FDEF 1448 | PUSHB_2 1449 | 1 1450 | 21 1451 | CALL 1452 | ENDF 1453 | PUSHB_1 1454 | 24 1455 | FDEF 1456 | PUSHB_2 1457 | 2 1458 | 21 1459 | CALL 1460 | ENDF 1461 | PUSHB_1 1462 | 25 1463 | FDEF 1464 | PUSHB_2 1465 | 3 1466 | 21 1467 | CALL 1468 | ENDF 1469 | PUSHB_1 1470 | 26 1471 | FDEF 1472 | PUSHB_2 1473 | 4 1474 | 21 1475 | CALL 1476 | ENDF 1477 | PUSHB_1 1478 | 27 1479 | FDEF 1480 | PUSHB_2 1481 | 5 1482 | 21 1483 | CALL 1484 | ENDF 1485 | PUSHB_1 1486 | 28 1487 | FDEF 1488 | PUSHB_2 1489 | 6 1490 | 21 1491 | CALL 1492 | ENDF 1493 | PUSHB_1 1494 | 29 1495 | FDEF 1496 | PUSHB_2 1497 | 7 1498 | 21 1499 | CALL 1500 | ENDF 1501 | PUSHB_1 1502 | 30 1503 | FDEF 1504 | PUSHB_2 1505 | 8 1506 | 21 1507 | CALL 1508 | ENDF 1509 | PUSHB_1 1510 | 31 1511 | FDEF 1512 | PUSHB_2 1513 | 9 1514 | 21 1515 | CALL 1516 | ENDF 1517 | PUSHB_1 1518 | 43 1519 | FDEF 1520 | SWAP 1521 | DUP 1522 | PUSHB_1 1523 | 16 1524 | DIV 1525 | FLOOR 1526 | PUSHB_1 1527 | 1 1528 | MUL 1529 | PUSHB_1 1530 | 6 1531 | ADD 1532 | MPPEM 1533 | EQ 1534 | IF 1535 | SWAP 1536 | DUP 1537 | MDAP[no-rnd] 1538 | PUSHB_1 1539 | 1 1540 | DELTAP1 1541 | ELSE 1542 | POP 1543 | POP 1544 | EIF 1545 | ENDF 1546 | PUSHB_1 1547 | 44 1548 | FDEF 1549 | SWAP 1550 | DUP 1551 | PUSHB_1 1552 | 16 1553 | DIV 1554 | FLOOR 1555 | PUSHB_1 1556 | 1 1557 | MUL 1558 | PUSHB_1 1559 | 22 1560 | ADD 1561 | MPPEM 1562 | EQ 1563 | IF 1564 | SWAP 1565 | DUP 1566 | MDAP[no-rnd] 1567 | PUSHB_1 1568 | 1 1569 | DELTAP2 1570 | ELSE 1571 | POP 1572 | POP 1573 | EIF 1574 | ENDF 1575 | PUSHB_1 1576 | 45 1577 | FDEF 1578 | SWAP 1579 | DUP 1580 | PUSHB_1 1581 | 16 1582 | DIV 1583 | FLOOR 1584 | PUSHB_1 1585 | 1 1586 | MUL 1587 | PUSHB_1 1588 | 38 1589 | ADD 1590 | MPPEM 1591 | EQ 1592 | IF 1593 | SWAP 1594 | DUP 1595 | MDAP[no-rnd] 1596 | PUSHB_1 1597 | 1 1598 | DELTAP3 1599 | ELSE 1600 | POP 1601 | POP 1602 | EIF 1603 | ENDF 1604 | PUSHB_1 1605 | 32 1606 | FDEF 1607 | SVTCA[y-axis] 1608 | PUSHB_1 1609 | 15 1610 | CALL 1611 | PUSHB_2 1612 | 0 1613 | 2 1614 | RCVT 1615 | EQ 1616 | IF 1617 | PUSHB_1 1618 | 18 1619 | SWAP 1620 | WS 1621 | DUP 1622 | RCVT 1623 | PUSHB_1 1624 | 14 1625 | SWAP 1626 | WS 1627 | PUSHB_1 1628 | 13 1629 | SWAP 1630 | PUSHB_1 1631 | 6 1632 | ADD 1633 | WS 1634 | DUP 1635 | ADD 1636 | PUSHB_1 1637 | 1 1638 | SUB 1639 | PUSHB_6 1640 | 24 1641 | 24 1642 | 1 1643 | 0 1644 | 17 1645 | 0 1646 | WS 1647 | WS 1648 | ROLL 1649 | ADD 1650 | PUSHB_2 1651 | 20 1652 | 8 1653 | CALL 1654 | PUSHB_1 1655 | 139 1656 | CALL 1657 | ELSE 1658 | CLEAR 1659 | EIF 1660 | ENDF 1661 | PUSHB_1 1662 | 33 1663 | FDEF 1664 | PUSHB_2 1665 | 0 1666 | 32 1667 | CALL 1668 | ENDF 1669 | PUSHB_1 1670 | 34 1671 | FDEF 1672 | PUSHB_2 1673 | 1 1674 | 32 1675 | CALL 1676 | ENDF 1677 | PUSHB_1 1678 | 35 1679 | FDEF 1680 | PUSHB_2 1681 | 2 1682 | 32 1683 | CALL 1684 | ENDF 1685 | PUSHB_1 1686 | 36 1687 | FDEF 1688 | PUSHB_2 1689 | 3 1690 | 32 1691 | CALL 1692 | ENDF 1693 | PUSHB_1 1694 | 37 1695 | FDEF 1696 | PUSHB_2 1697 | 4 1698 | 32 1699 | CALL 1700 | ENDF 1701 | PUSHB_1 1702 | 38 1703 | FDEF 1704 | PUSHB_2 1705 | 5 1706 | 32 1707 | CALL 1708 | ENDF 1709 | PUSHB_1 1710 | 39 1711 | FDEF 1712 | PUSHB_2 1713 | 6 1714 | 32 1715 | CALL 1716 | ENDF 1717 | PUSHB_1 1718 | 40 1719 | FDEF 1720 | PUSHB_2 1721 | 7 1722 | 32 1723 | CALL 1724 | ENDF 1725 | PUSHB_1 1726 | 41 1727 | FDEF 1728 | PUSHB_2 1729 | 8 1730 | 32 1731 | CALL 1732 | ENDF 1733 | PUSHB_1 1734 | 42 1735 | FDEF 1736 | PUSHB_2 1737 | 9 1738 | 32 1739 | CALL 1740 | ENDF 1741 | PUSHB_1 1742 | 46 1743 | FDEF 1744 | DUP 1745 | ALIGNRP 1746 | PUSHB_1 1747 | 1 1748 | ADD 1749 | ENDF 1750 | PUSHB_1 1751 | 47 1752 | FDEF 1753 | DUP 1754 | ADD 1755 | PUSHB_1 1756 | 24 1757 | ADD 1758 | DUP 1759 | RS 1760 | SWAP 1761 | PUSHB_1 1762 | 1 1763 | ADD 1764 | RS 1765 | PUSHB_1 1766 | 2 1767 | CINDEX 1768 | SUB 1769 | PUSHB_1 1770 | 1 1771 | ADD 1772 | PUSHB_1 1773 | 46 1774 | LOOPCALL 1775 | POP 1776 | ENDF 1777 | PUSHB_1 1778 | 48 1779 | FDEF 1780 | PUSHB_1 1781 | 47 1782 | CALL 1783 | PUSHB_1 1784 | 47 1785 | LOOPCALL 1786 | ENDF 1787 | PUSHB_1 1788 | 49 1789 | FDEF 1790 | DUP 1791 | DUP 1792 | GC[orig] 1793 | DUP 1794 | DUP 1795 | PUSHB_1 1796 | 14 1797 | RS 1798 | MUL 1799 | PUSHW_1 1800 | 1024 1801 | DIV 1802 | DUP 1803 | PUSHB_1 1804 | 0 1805 | LT 1806 | IF 1807 | PUSHB_1 1808 | 64 1809 | ADD 1810 | EIF 1811 | FLOOR 1812 | PUSHB_1 1813 | 1 1814 | MUL 1815 | ADD 1816 | SWAP 1817 | SUB 1818 | SHPIX 1819 | SWAP 1820 | DUP 1821 | ROLL 1822 | NEQ 1823 | IF 1824 | DUP 1825 | GC[orig] 1826 | DUP 1827 | DUP 1828 | PUSHB_1 1829 | 14 1830 | RS 1831 | MUL 1832 | PUSHW_1 1833 | 1024 1834 | DIV 1835 | DUP 1836 | PUSHB_1 1837 | 0 1838 | LT 1839 | IF 1840 | PUSHB_1 1841 | 64 1842 | ADD 1843 | EIF 1844 | FLOOR 1845 | PUSHB_1 1846 | 1 1847 | MUL 1848 | ADD 1849 | SWAP 1850 | SUB 1851 | SHPIX 1852 | ELSE 1853 | POP 1854 | EIF 1855 | ENDF 1856 | PUSHB_1 1857 | 50 1858 | FDEF 1859 | SVTCA[y-axis] 1860 | PUSHB_2 1861 | 0 1862 | 2 1863 | RCVT 1864 | EQ 1865 | IF 1866 | PUSHB_2 1867 | 14 1868 | 6 1869 | RCVT 1870 | WS 1871 | PUSHB_1 1872 | 1 1873 | SZPS 1874 | PUSHB_1 1875 | 49 1876 | LOOPCALL 1877 | PUSHB_2 1878 | 5 1879 | 1 1880 | SZP2 1881 | RCVT 1882 | IF 1883 | IUP[y] 1884 | EIF 1885 | ELSE 1886 | CLEAR 1887 | EIF 1888 | ENDF 1889 | PUSHB_1 1890 | 51 1891 | FDEF 1892 | SVTCA[y-axis] 1893 | PUSHB_1 1894 | 15 1895 | CALL 1896 | PUSHB_2 1897 | 0 1898 | 2 1899 | RCVT 1900 | EQ 1901 | IF 1902 | PUSHB_2 1903 | 14 1904 | 6 1905 | RCVT 1906 | WS 1907 | PUSHB_1 1908 | 1 1909 | SZPS 1910 | PUSHB_1 1911 | 49 1912 | LOOPCALL 1913 | PUSHB_2 1914 | 5 1915 | 1 1916 | SZP2 1917 | RCVT 1918 | IF 1919 | IUP[y] 1920 | EIF 1921 | ELSE 1922 | CLEAR 1923 | EIF 1924 | ENDF 1925 | PUSHB_1 1926 | 52 1927 | FDEF 1928 | DUP 1929 | SHC[rp1] 1930 | PUSHB_1 1931 | 1 1932 | ADD 1933 | ENDF 1934 | PUSHB_1 1935 | 53 1936 | FDEF 1937 | SVTCA[y-axis] 1938 | PUSHB_2 1939 | 14 1940 | 6 1941 | RCVT 1942 | WS 1943 | PUSHB_1 1944 | 1 1945 | RCVT 1946 | MUL 1947 | PUSHW_1 1948 | 1024 1949 | DIV 1950 | DUP 1951 | PUSHB_1 1952 | 0 1953 | LT 1954 | IF 1955 | PUSHB_1 1956 | 64 1957 | ADD 1958 | EIF 1959 | FLOOR 1960 | PUSHB_1 1961 | 1 1962 | MUL 1963 | PUSHB_1 1964 | 1 1965 | CALL 1966 | PUSHB_1 1967 | 14 1968 | RS 1969 | MUL 1970 | PUSHW_1 1971 | 1024 1972 | DIV 1973 | DUP 1974 | PUSHB_1 1975 | 0 1976 | LT 1977 | IF 1978 | PUSHB_1 1979 | 64 1980 | ADD 1981 | EIF 1982 | FLOOR 1983 | PUSHB_1 1984 | 1 1985 | MUL 1986 | PUSHB_1 1987 | 1 1988 | CALL 1989 | PUSHB_1 1990 | 0 1991 | SZPS 1992 | PUSHB_5 1993 | 0 1994 | 0 1995 | 0 1996 | 0 1997 | 0 1998 | WCVTP 1999 | MIAP[no-rnd] 2000 | SWAP 2001 | SHPIX 2002 | PUSHB_2 2003 | 52 2004 | 1 2005 | SZP2 2006 | LOOPCALL 2007 | POP 2008 | ENDF 2009 | PUSHB_1 2010 | 54 2011 | FDEF 2012 | DUP 2013 | ALIGNRP 2014 | DUP 2015 | GC[orig] 2016 | DUP 2017 | PUSHB_1 2018 | 14 2019 | RS 2020 | MUL 2021 | PUSHW_1 2022 | 1024 2023 | DIV 2024 | DUP 2025 | PUSHB_1 2026 | 0 2027 | LT 2028 | IF 2029 | PUSHB_1 2030 | 64 2031 | ADD 2032 | EIF 2033 | FLOOR 2034 | PUSHB_1 2035 | 1 2036 | MUL 2037 | ADD 2038 | PUSHB_1 2039 | 0 2040 | RS 2041 | SUB 2042 | SHPIX 2043 | ENDF 2044 | PUSHB_1 2045 | 55 2046 | FDEF 2047 | MDAP[no-rnd] 2048 | SLOOP 2049 | ALIGNRP 2050 | ENDF 2051 | PUSHB_1 2052 | 56 2053 | FDEF 2054 | DUP 2055 | ALIGNRP 2056 | DUP 2057 | GC[orig] 2058 | DUP 2059 | PUSHB_1 2060 | 14 2061 | RS 2062 | MUL 2063 | PUSHW_1 2064 | 1024 2065 | DIV 2066 | DUP 2067 | PUSHB_1 2068 | 0 2069 | LT 2070 | IF 2071 | PUSHB_1 2072 | 64 2073 | ADD 2074 | EIF 2075 | FLOOR 2076 | PUSHB_1 2077 | 1 2078 | MUL 2079 | ADD 2080 | PUSHB_1 2081 | 0 2082 | RS 2083 | SUB 2084 | PUSHB_1 2085 | 1 2086 | RS 2087 | MUL 2088 | SHPIX 2089 | ENDF 2090 | PUSHB_1 2091 | 57 2092 | FDEF 2093 | PUSHB_2 2094 | 2 2095 | 0 2096 | SZPS 2097 | CINDEX 2098 | DUP 2099 | MDAP[no-rnd] 2100 | DUP 2101 | GC[orig] 2102 | PUSHB_1 2103 | 0 2104 | SWAP 2105 | WS 2106 | PUSHB_1 2107 | 2 2108 | CINDEX 2109 | MD[grid] 2110 | ROLL 2111 | ROLL 2112 | GC[orig] 2113 | SWAP 2114 | GC[orig] 2115 | SWAP 2116 | SUB 2117 | DUP 2118 | IF 2119 | DIV 2120 | ELSE 2121 | POP 2122 | EIF 2123 | PUSHB_1 2124 | 1 2125 | SWAP 2126 | WS 2127 | PUSHB_3 2128 | 56 2129 | 1 2130 | 1 2131 | SZP2 2132 | SZP1 2133 | LOOPCALL 2134 | ENDF 2135 | PUSHB_1 2136 | 58 2137 | FDEF 2138 | PUSHB_1 2139 | 0 2140 | SZPS 2141 | PUSHB_1 2142 | 23 2143 | SWAP 2144 | WS 2145 | PUSHB_1 2146 | 4 2147 | CINDEX 2148 | PUSHB_1 2149 | 4 2150 | CINDEX 2151 | GC[orig] 2152 | SWAP 2153 | GC[orig] 2154 | SWAP 2155 | SUB 2156 | PUSHB_2 2157 | 12 2158 | 0 2159 | WS 2160 | PUSHB_1 2161 | 11 2162 | RS 2163 | CALL 2164 | NEG 2165 | ROLL 2166 | MDAP[no-rnd] 2167 | SWAP 2168 | DUP 2169 | DUP 2170 | ALIGNRP 2171 | ROLL 2172 | SHPIX 2173 | ENDF 2174 | PUSHB_1 2175 | 59 2176 | FDEF 2177 | PUSHB_1 2178 | 0 2179 | SZPS 2180 | PUSHB_1 2181 | 23 2182 | SWAP 2183 | WS 2184 | PUSHB_1 2185 | 4 2186 | CINDEX 2187 | PUSHB_1 2188 | 4 2189 | CINDEX 2190 | DUP 2191 | MDAP[no-rnd] 2192 | GC[orig] 2193 | SWAP 2194 | GC[orig] 2195 | SWAP 2196 | SUB 2197 | DUP 2198 | PUSHB_1 2199 | 6 2200 | SWAP 2201 | WS 2202 | PUSHB_2 2203 | 12 2204 | 0 2205 | WS 2206 | PUSHB_1 2207 | 11 2208 | RS 2209 | CALL 2210 | DUP 2211 | PUSHB_1 2212 | 96 2213 | LT 2214 | IF 2215 | DUP 2216 | PUSHB_1 2217 | 64 2218 | LTEQ 2219 | IF 2220 | PUSHB_4 2221 | 4 2222 | 32 2223 | 5 2224 | 32 2225 | ELSE 2226 | PUSHB_4 2227 | 4 2228 | 38 2229 | 5 2230 | 26 2231 | EIF 2232 | WS 2233 | WS 2234 | SWAP 2235 | DUP 2236 | PUSHB_1 2237 | 10 2238 | RS 2239 | DUP 2240 | ROLL 2241 | SWAP 2242 | GC[orig] 2243 | SWAP 2244 | GC[orig] 2245 | SWAP 2246 | SUB 2247 | SWAP 2248 | GC[cur] 2249 | ADD 2250 | PUSHB_1 2251 | 6 2252 | RS 2253 | PUSHB_1 2254 | 2 2255 | DIV 2256 | DUP 2257 | PUSHB_1 2258 | 0 2259 | LT 2260 | IF 2261 | PUSHB_1 2262 | 64 2263 | ADD 2264 | EIF 2265 | FLOOR 2266 | PUSHB_1 2267 | 1 2268 | MUL 2269 | ADD 2270 | DUP 2271 | PUSHB_1 2272 | 1 2273 | CALL 2274 | DUP 2275 | ROLL 2276 | ROLL 2277 | SUB 2278 | DUP 2279 | PUSHB_1 2280 | 4 2281 | RS 2282 | ADD 2283 | ABS 2284 | SWAP 2285 | PUSHB_1 2286 | 5 2287 | RS 2288 | SUB 2289 | ABS 2290 | LT 2291 | IF 2292 | PUSHB_1 2293 | 4 2294 | RS 2295 | SUB 2296 | ELSE 2297 | PUSHB_1 2298 | 5 2299 | RS 2300 | ADD 2301 | EIF 2302 | PUSHB_1 2303 | 3 2304 | CINDEX 2305 | PUSHB_1 2306 | 2 2307 | DIV 2308 | DUP 2309 | PUSHB_1 2310 | 0 2311 | LT 2312 | IF 2313 | PUSHB_1 2314 | 64 2315 | ADD 2316 | EIF 2317 | FLOOR 2318 | PUSHB_1 2319 | 1 2320 | MUL 2321 | SUB 2322 | SWAP 2323 | DUP 2324 | DUP 2325 | PUSHB_1 2326 | 4 2327 | MINDEX 2328 | SWAP 2329 | GC[cur] 2330 | SUB 2331 | SHPIX 2332 | ELSE 2333 | SWAP 2334 | PUSHB_1 2335 | 10 2336 | RS 2337 | GC[cur] 2338 | PUSHB_1 2339 | 2 2340 | CINDEX 2341 | PUSHB_1 2342 | 10 2343 | RS 2344 | GC[orig] 2345 | SWAP 2346 | GC[orig] 2347 | SWAP 2348 | SUB 2349 | ADD 2350 | DUP 2351 | PUSHB_1 2352 | 6 2353 | RS 2354 | PUSHB_1 2355 | 2 2356 | DIV 2357 | DUP 2358 | PUSHB_1 2359 | 0 2360 | LT 2361 | IF 2362 | PUSHB_1 2363 | 64 2364 | ADD 2365 | EIF 2366 | FLOOR 2367 | PUSHB_1 2368 | 1 2369 | MUL 2370 | ADD 2371 | SWAP 2372 | DUP 2373 | PUSHB_1 2374 | 1 2375 | CALL 2376 | SWAP 2377 | PUSHB_1 2378 | 6 2379 | RS 2380 | ADD 2381 | PUSHB_1 2382 | 1 2383 | CALL 2384 | PUSHB_1 2385 | 5 2386 | CINDEX 2387 | SUB 2388 | PUSHB_1 2389 | 5 2390 | CINDEX 2391 | PUSHB_1 2392 | 2 2393 | DIV 2394 | DUP 2395 | PUSHB_1 2396 | 0 2397 | LT 2398 | IF 2399 | PUSHB_1 2400 | 64 2401 | ADD 2402 | EIF 2403 | FLOOR 2404 | PUSHB_1 2405 | 1 2406 | MUL 2407 | PUSHB_1 2408 | 4 2409 | MINDEX 2410 | SUB 2411 | DUP 2412 | PUSHB_1 2413 | 4 2414 | CINDEX 2415 | ADD 2416 | ABS 2417 | SWAP 2418 | PUSHB_1 2419 | 3 2420 | CINDEX 2421 | ADD 2422 | ABS 2423 | LT 2424 | IF 2425 | POP 2426 | ELSE 2427 | SWAP 2428 | POP 2429 | EIF 2430 | SWAP 2431 | DUP 2432 | DUP 2433 | PUSHB_1 2434 | 4 2435 | MINDEX 2436 | SWAP 2437 | GC[cur] 2438 | SUB 2439 | SHPIX 2440 | EIF 2441 | ENDF 2442 | PUSHB_1 2443 | 60 2444 | FDEF 2445 | PUSHB_1 2446 | 0 2447 | SZPS 2448 | PUSHB_1 2449 | 23 2450 | SWAP 2451 | WS 2452 | DUP 2453 | DUP 2454 | DUP 2455 | PUSHB_1 2456 | 5 2457 | MINDEX 2458 | DUP 2459 | MDAP[no-rnd] 2460 | GC[orig] 2461 | SWAP 2462 | GC[orig] 2463 | SWAP 2464 | SUB 2465 | SWAP 2466 | ALIGNRP 2467 | SHPIX 2468 | ENDF 2469 | PUSHB_1 2470 | 61 2471 | FDEF 2472 | PUSHB_1 2473 | 0 2474 | SZPS 2475 | PUSHB_1 2476 | 23 2477 | SWAP 2478 | WS 2479 | DUP 2480 | PUSHB_1 2481 | 10 2482 | SWAP 2483 | WS 2484 | DUP 2485 | DUP 2486 | DUP 2487 | GC[cur] 2488 | SWAP 2489 | GC[orig] 2490 | PUSHB_1 2491 | 1 2492 | CALL 2493 | SWAP 2494 | SUB 2495 | SHPIX 2496 | ENDF 2497 | PUSHB_1 2498 | 62 2499 | FDEF 2500 | PUSHB_1 2501 | 0 2502 | SZPS 2503 | PUSHB_1 2504 | 23 2505 | SWAP 2506 | WS 2507 | PUSHB_1 2508 | 3 2509 | CINDEX 2510 | PUSHB_1 2511 | 2 2512 | CINDEX 2513 | GC[orig] 2514 | SWAP 2515 | GC[orig] 2516 | SWAP 2517 | SUB 2518 | PUSHB_1 2519 | 0 2520 | EQ 2521 | IF 2522 | MDAP[no-rnd] 2523 | DUP 2524 | ALIGNRP 2525 | SWAP 2526 | POP 2527 | ELSE 2528 | PUSHB_1 2529 | 2 2530 | CINDEX 2531 | PUSHB_1 2532 | 2 2533 | CINDEX 2534 | GC[orig] 2535 | SWAP 2536 | GC[orig] 2537 | SWAP 2538 | SUB 2539 | DUP 2540 | PUSHB_1 2541 | 5 2542 | CINDEX 2543 | PUSHB_1 2544 | 4 2545 | CINDEX 2546 | GC[orig] 2547 | SWAP 2548 | GC[orig] 2549 | SWAP 2550 | SUB 2551 | PUSHB_1 2552 | 6 2553 | CINDEX 2554 | PUSHB_1 2555 | 5 2556 | CINDEX 2557 | MD[grid] 2558 | PUSHB_1 2559 | 2 2560 | CINDEX 2561 | SUB 2562 | PUSHW_2 2563 | 2048 2564 | 2048 2565 | MUL 2566 | MUL 2567 | SWAP 2568 | DUP 2569 | IF 2570 | DIV 2571 | ELSE 2572 | POP 2573 | EIF 2574 | MUL 2575 | PUSHW_1 2576 | 1024 2577 | DIV 2578 | DUP 2579 | PUSHB_1 2580 | 0 2581 | LT 2582 | IF 2583 | PUSHB_1 2584 | 64 2585 | ADD 2586 | EIF 2587 | FLOOR 2588 | PUSHB_1 2589 | 1 2590 | MUL 2591 | ADD 2592 | SWAP 2593 | MDAP[no-rnd] 2594 | SWAP 2595 | DUP 2596 | DUP 2597 | ALIGNRP 2598 | ROLL 2599 | SHPIX 2600 | SWAP 2601 | POP 2602 | EIF 2603 | ENDF 2604 | PUSHB_1 2605 | 63 2606 | FDEF 2607 | PUSHB_1 2608 | 0 2609 | SZPS 2610 | PUSHB_1 2611 | 23 2612 | SWAP 2613 | WS 2614 | DUP 2615 | PUSHB_1 2616 | 10 2617 | RS 2618 | DUP 2619 | MDAP[no-rnd] 2620 | GC[orig] 2621 | SWAP 2622 | GC[orig] 2623 | SWAP 2624 | SUB 2625 | DUP 2626 | ADD 2627 | PUSHB_1 2628 | 32 2629 | ADD 2630 | FLOOR 2631 | PUSHB_1 2632 | 2 2633 | DIV 2634 | DUP 2635 | PUSHB_1 2636 | 0 2637 | LT 2638 | IF 2639 | PUSHB_1 2640 | 64 2641 | ADD 2642 | EIF 2643 | FLOOR 2644 | PUSHB_1 2645 | 1 2646 | MUL 2647 | SWAP 2648 | DUP 2649 | DUP 2650 | ALIGNRP 2651 | ROLL 2652 | SHPIX 2653 | ENDF 2654 | PUSHB_1 2655 | 64 2656 | FDEF 2657 | SWAP 2658 | DUP 2659 | MDAP[no-rnd] 2660 | GC[cur] 2661 | PUSHB_1 2662 | 2 2663 | CINDEX 2664 | GC[cur] 2665 | PUSHB_1 2666 | 23 2667 | RS 2668 | IF 2669 | LT 2670 | ELSE 2671 | GT 2672 | EIF 2673 | IF 2674 | DUP 2675 | ALIGNRP 2676 | EIF 2677 | MDAP[no-rnd] 2678 | PUSHB_2 2679 | 48 2680 | 1 2681 | SZP1 2682 | CALL 2683 | ENDF 2684 | PUSHB_1 2685 | 65 2686 | FDEF 2687 | SWAP 2688 | DUP 2689 | MDAP[no-rnd] 2690 | GC[cur] 2691 | PUSHB_1 2692 | 2 2693 | CINDEX 2694 | GC[cur] 2695 | PUSHB_1 2696 | 23 2697 | RS 2698 | IF 2699 | GT 2700 | ELSE 2701 | LT 2702 | EIF 2703 | IF 2704 | DUP 2705 | ALIGNRP 2706 | EIF 2707 | MDAP[no-rnd] 2708 | PUSHB_2 2709 | 48 2710 | 1 2711 | SZP1 2712 | CALL 2713 | ENDF 2714 | PUSHB_1 2715 | 66 2716 | FDEF 2717 | SWAP 2718 | DUP 2719 | MDAP[no-rnd] 2720 | GC[cur] 2721 | PUSHB_1 2722 | 2 2723 | CINDEX 2724 | GC[cur] 2725 | PUSHB_1 2726 | 23 2727 | RS 2728 | IF 2729 | LT 2730 | ELSE 2731 | GT 2732 | EIF 2733 | IF 2734 | DUP 2735 | ALIGNRP 2736 | EIF 2737 | SWAP 2738 | DUP 2739 | MDAP[no-rnd] 2740 | GC[cur] 2741 | PUSHB_1 2742 | 2 2743 | CINDEX 2744 | GC[cur] 2745 | PUSHB_1 2746 | 23 2747 | RS 2748 | IF 2749 | GT 2750 | ELSE 2751 | LT 2752 | EIF 2753 | IF 2754 | DUP 2755 | ALIGNRP 2756 | EIF 2757 | MDAP[no-rnd] 2758 | PUSHB_2 2759 | 48 2760 | 1 2761 | SZP1 2762 | CALL 2763 | ENDF 2764 | PUSHB_1 2765 | 67 2766 | FDEF 2767 | PUSHB_1 2768 | 58 2769 | CALL 2770 | SWAP 2771 | DUP 2772 | MDAP[no-rnd] 2773 | GC[cur] 2774 | PUSHB_1 2775 | 2 2776 | CINDEX 2777 | GC[cur] 2778 | PUSHB_1 2779 | 23 2780 | RS 2781 | IF 2782 | LT 2783 | ELSE 2784 | GT 2785 | EIF 2786 | IF 2787 | DUP 2788 | ALIGNRP 2789 | EIF 2790 | MDAP[no-rnd] 2791 | PUSHB_2 2792 | 48 2793 | 1 2794 | SZP1 2795 | CALL 2796 | ENDF 2797 | PUSHB_1 2798 | 68 2799 | FDEF 2800 | PUSHB_1 2801 | 59 2802 | CALL 2803 | ROLL 2804 | DUP 2805 | DUP 2806 | ALIGNRP 2807 | PUSHB_1 2808 | 6 2809 | SWAP 2810 | WS 2811 | ROLL 2812 | SHPIX 2813 | SWAP 2814 | DUP 2815 | MDAP[no-rnd] 2816 | GC[cur] 2817 | PUSHB_1 2818 | 2 2819 | CINDEX 2820 | GC[cur] 2821 | PUSHB_1 2822 | 23 2823 | RS 2824 | IF 2825 | LT 2826 | ELSE 2827 | GT 2828 | EIF 2829 | IF 2830 | DUP 2831 | ALIGNRP 2832 | EIF 2833 | MDAP[no-rnd] 2834 | PUSHB_2 2835 | 48 2836 | 1 2837 | SZP1 2838 | CALL 2839 | PUSHB_1 2840 | 6 2841 | RS 2842 | MDAP[no-rnd] 2843 | PUSHB_1 2844 | 48 2845 | CALL 2846 | ENDF 2847 | PUSHB_1 2848 | 69 2849 | FDEF 2850 | PUSHB_1 2851 | 0 2852 | SZPS 2853 | PUSHB_1 2854 | 4 2855 | CINDEX 2856 | PUSHB_1 2857 | 4 2858 | MINDEX 2859 | DUP 2860 | DUP 2861 | DUP 2862 | GC[cur] 2863 | SWAP 2864 | GC[orig] 2865 | SUB 2866 | PUSHB_1 2867 | 12 2868 | SWAP 2869 | WS 2870 | MDAP[no-rnd] 2871 | GC[orig] 2872 | SWAP 2873 | GC[orig] 2874 | SWAP 2875 | SUB 2876 | PUSHB_1 2877 | 11 2878 | RS 2879 | CALL 2880 | SWAP 2881 | DUP 2882 | ALIGNRP 2883 | DUP 2884 | MDAP[no-rnd] 2885 | SWAP 2886 | SHPIX 2887 | PUSHB_2 2888 | 48 2889 | 1 2890 | SZP1 2891 | CALL 2892 | ENDF 2893 | PUSHB_1 2894 | 70 2895 | FDEF 2896 | PUSHB_2 2897 | 10 2898 | 4 2899 | CINDEX 2900 | WS 2901 | PUSHB_1 2902 | 0 2903 | SZPS 2904 | PUSHB_1 2905 | 4 2906 | CINDEX 2907 | PUSHB_1 2908 | 4 2909 | CINDEX 2910 | DUP 2911 | MDAP[no-rnd] 2912 | GC[orig] 2913 | SWAP 2914 | GC[orig] 2915 | SWAP 2916 | SUB 2917 | DUP 2918 | PUSHB_1 2919 | 6 2920 | SWAP 2921 | WS 2922 | PUSHB_2 2923 | 12 2924 | 0 2925 | WS 2926 | PUSHB_1 2927 | 11 2928 | RS 2929 | CALL 2930 | DUP 2931 | PUSHB_1 2932 | 96 2933 | LT 2934 | IF 2935 | DUP 2936 | PUSHB_1 2937 | 64 2938 | LTEQ 2939 | IF 2940 | PUSHB_4 2941 | 4 2942 | 32 2943 | 5 2944 | 32 2945 | ELSE 2946 | PUSHB_4 2947 | 4 2948 | 38 2949 | 5 2950 | 26 2951 | EIF 2952 | WS 2953 | WS 2954 | SWAP 2955 | DUP 2956 | GC[orig] 2957 | PUSHB_1 2958 | 6 2959 | RS 2960 | PUSHB_1 2961 | 2 2962 | DIV 2963 | DUP 2964 | PUSHB_1 2965 | 0 2966 | LT 2967 | IF 2968 | PUSHB_1 2969 | 64 2970 | ADD 2971 | EIF 2972 | FLOOR 2973 | PUSHB_1 2974 | 1 2975 | MUL 2976 | ADD 2977 | DUP 2978 | PUSHB_1 2979 | 1 2980 | CALL 2981 | DUP 2982 | ROLL 2983 | ROLL 2984 | SUB 2985 | DUP 2986 | PUSHB_1 2987 | 4 2988 | RS 2989 | ADD 2990 | ABS 2991 | SWAP 2992 | PUSHB_1 2993 | 5 2994 | RS 2995 | SUB 2996 | ABS 2997 | LT 2998 | IF 2999 | PUSHB_1 3000 | 4 3001 | RS 3002 | SUB 3003 | ELSE 3004 | PUSHB_1 3005 | 5 3006 | RS 3007 | ADD 3008 | EIF 3009 | PUSHB_1 3010 | 3 3011 | CINDEX 3012 | PUSHB_1 3013 | 2 3014 | DIV 3015 | DUP 3016 | PUSHB_1 3017 | 0 3018 | LT 3019 | IF 3020 | PUSHB_1 3021 | 64 3022 | ADD 3023 | EIF 3024 | FLOOR 3025 | PUSHB_1 3026 | 1 3027 | MUL 3028 | SUB 3029 | PUSHB_1 3030 | 2 3031 | CINDEX 3032 | GC[cur] 3033 | SUB 3034 | SHPIX 3035 | SWAP 3036 | DUP 3037 | ALIGNRP 3038 | SWAP 3039 | SHPIX 3040 | ELSE 3041 | POP 3042 | DUP 3043 | DUP 3044 | GC[cur] 3045 | SWAP 3046 | GC[orig] 3047 | PUSHB_1 3048 | 1 3049 | CALL 3050 | SWAP 3051 | SUB 3052 | SHPIX 3053 | POP 3054 | EIF 3055 | PUSHB_2 3056 | 48 3057 | 1 3058 | SZP1 3059 | CALL 3060 | ENDF 3061 | PUSHB_1 3062 | 71 3063 | FDEF 3064 | PUSHB_2 3065 | 0 3066 | 58 3067 | CALL 3068 | MDAP[no-rnd] 3069 | PUSHB_2 3070 | 48 3071 | 1 3072 | SZP1 3073 | CALL 3074 | ENDF 3075 | PUSHB_1 3076 | 72 3077 | FDEF 3078 | PUSHB_2 3079 | 0 3080 | 59 3081 | CALL 3082 | POP 3083 | SWAP 3084 | DUP 3085 | DUP 3086 | ALIGNRP 3087 | PUSHB_1 3088 | 6 3089 | SWAP 3090 | WS 3091 | SWAP 3092 | SHPIX 3093 | PUSHB_2 3094 | 48 3095 | 1 3096 | SZP1 3097 | CALL 3098 | PUSHB_1 3099 | 6 3100 | RS 3101 | MDAP[no-rnd] 3102 | PUSHB_1 3103 | 48 3104 | CALL 3105 | ENDF 3106 | PUSHB_1 3107 | 73 3108 | FDEF 3109 | PUSHB_1 3110 | 0 3111 | SZP2 3112 | DUP 3113 | GC[orig] 3114 | PUSHB_1 3115 | 0 3116 | SWAP 3117 | WS 3118 | PUSHB_3 3119 | 0 3120 | 1 3121 | 1 3122 | SZP2 3123 | SZP1 3124 | SZP0 3125 | MDAP[no-rnd] 3126 | PUSHB_1 3127 | 54 3128 | LOOPCALL 3129 | ENDF 3130 | PUSHB_1 3131 | 74 3132 | FDEF 3133 | PUSHB_1 3134 | 0 3135 | SZP2 3136 | DUP 3137 | GC[orig] 3138 | PUSHB_1 3139 | 0 3140 | SWAP 3141 | WS 3142 | PUSHB_3 3143 | 0 3144 | 1 3145 | 1 3146 | SZP2 3147 | SZP1 3148 | SZP0 3149 | MDAP[no-rnd] 3150 | PUSHB_1 3151 | 54 3152 | LOOPCALL 3153 | ENDF 3154 | PUSHB_1 3155 | 75 3156 | FDEF 3157 | PUSHB_2 3158 | 0 3159 | 1 3160 | SZP1 3161 | SZP0 3162 | PUSHB_1 3163 | 55 3164 | LOOPCALL 3165 | ENDF 3166 | PUSHB_1 3167 | 76 3168 | FDEF 3169 | PUSHB_1 3170 | 57 3171 | LOOPCALL 3172 | ENDF 3173 | PUSHB_1 3174 | 77 3175 | FDEF 3176 | PUSHB_1 3177 | 0 3178 | SZPS 3179 | RCVT 3180 | SWAP 3181 | DUP 3182 | MDAP[no-rnd] 3183 | DUP 3184 | GC[cur] 3185 | ROLL 3186 | SWAP 3187 | SUB 3188 | SHPIX 3189 | PUSHB_2 3190 | 48 3191 | 1 3192 | SZP1 3193 | CALL 3194 | ENDF 3195 | PUSHB_1 3196 | 78 3197 | FDEF 3198 | PUSHB_1 3199 | 10 3200 | SWAP 3201 | WS 3202 | PUSHB_1 3203 | 77 3204 | CALL 3205 | ENDF 3206 | PUSHB_1 3207 | 79 3208 | FDEF 3209 | PUSHB_3 3210 | 0 3211 | 0 3212 | 70 3213 | CALL 3214 | ENDF 3215 | PUSHB_1 3216 | 80 3217 | FDEF 3218 | PUSHB_3 3219 | 0 3220 | 1 3221 | 70 3222 | CALL 3223 | ENDF 3224 | PUSHB_1 3225 | 81 3226 | FDEF 3227 | PUSHB_3 3228 | 1 3229 | 0 3230 | 70 3231 | CALL 3232 | ENDF 3233 | PUSHB_1 3234 | 82 3235 | FDEF 3236 | PUSHB_3 3237 | 1 3238 | 1 3239 | 70 3240 | CALL 3241 | ENDF 3242 | PUSHB_1 3243 | 83 3244 | FDEF 3245 | PUSHB_3 3246 | 0 3247 | 0 3248 | 71 3249 | CALL 3250 | ENDF 3251 | PUSHB_1 3252 | 84 3253 | FDEF 3254 | PUSHB_3 3255 | 0 3256 | 1 3257 | 71 3258 | CALL 3259 | ENDF 3260 | PUSHB_1 3261 | 85 3262 | FDEF 3263 | PUSHB_3 3264 | 1 3265 | 0 3266 | 71 3267 | CALL 3268 | ENDF 3269 | PUSHB_1 3270 | 86 3271 | FDEF 3272 | PUSHB_3 3273 | 1 3274 | 1 3275 | 71 3276 | CALL 3277 | ENDF 3278 | PUSHB_1 3279 | 87 3280 | FDEF 3281 | PUSHB_4 3282 | 0 3283 | 0 3284 | 0 3285 | 67 3286 | CALL 3287 | ENDF 3288 | PUSHB_1 3289 | 88 3290 | FDEF 3291 | PUSHB_4 3292 | 0 3293 | 1 3294 | 0 3295 | 67 3296 | CALL 3297 | ENDF 3298 | PUSHB_1 3299 | 89 3300 | FDEF 3301 | PUSHB_4 3302 | 1 3303 | 0 3304 | 0 3305 | 67 3306 | CALL 3307 | ENDF 3308 | PUSHB_1 3309 | 90 3310 | FDEF 3311 | PUSHB_4 3312 | 1 3313 | 1 3314 | 0 3315 | 67 3316 | CALL 3317 | ENDF 3318 | PUSHB_1 3319 | 91 3320 | FDEF 3321 | PUSHB_4 3322 | 0 3323 | 0 3324 | 1 3325 | 67 3326 | CALL 3327 | ENDF 3328 | PUSHB_1 3329 | 92 3330 | FDEF 3331 | PUSHB_4 3332 | 0 3333 | 1 3334 | 1 3335 | 67 3336 | CALL 3337 | ENDF 3338 | PUSHB_1 3339 | 93 3340 | FDEF 3341 | PUSHB_4 3342 | 1 3343 | 0 3344 | 1 3345 | 67 3346 | CALL 3347 | ENDF 3348 | PUSHB_1 3349 | 94 3350 | FDEF 3351 | PUSHB_4 3352 | 1 3353 | 1 3354 | 1 3355 | 67 3356 | CALL 3357 | ENDF 3358 | PUSHB_1 3359 | 95 3360 | FDEF 3361 | PUSHB_3 3362 | 0 3363 | 0 3364 | 69 3365 | CALL 3366 | ENDF 3367 | PUSHB_1 3368 | 96 3369 | FDEF 3370 | PUSHB_3 3371 | 0 3372 | 1 3373 | 69 3374 | CALL 3375 | ENDF 3376 | PUSHB_1 3377 | 97 3378 | FDEF 3379 | PUSHB_3 3380 | 1 3381 | 0 3382 | 69 3383 | CALL 3384 | ENDF 3385 | PUSHB_1 3386 | 98 3387 | FDEF 3388 | PUSHB_3 3389 | 1 3390 | 1 3391 | 69 3392 | CALL 3393 | ENDF 3394 | PUSHB_1 3395 | 99 3396 | FDEF 3397 | PUSHB_3 3398 | 0 3399 | 0 3400 | 72 3401 | CALL 3402 | ENDF 3403 | PUSHB_1 3404 | 100 3405 | FDEF 3406 | PUSHB_3 3407 | 0 3408 | 1 3409 | 72 3410 | CALL 3411 | ENDF 3412 | PUSHB_1 3413 | 101 3414 | FDEF 3415 | PUSHB_3 3416 | 1 3417 | 0 3418 | 72 3419 | CALL 3420 | ENDF 3421 | PUSHB_1 3422 | 102 3423 | FDEF 3424 | PUSHB_3 3425 | 1 3426 | 1 3427 | 72 3428 | CALL 3429 | ENDF 3430 | PUSHB_1 3431 | 103 3432 | FDEF 3433 | PUSHB_4 3434 | 0 3435 | 0 3436 | 0 3437 | 68 3438 | CALL 3439 | ENDF 3440 | PUSHB_1 3441 | 104 3442 | FDEF 3443 | PUSHB_4 3444 | 0 3445 | 1 3446 | 0 3447 | 68 3448 | CALL 3449 | ENDF 3450 | PUSHB_1 3451 | 105 3452 | FDEF 3453 | PUSHB_4 3454 | 1 3455 | 0 3456 | 0 3457 | 68 3458 | CALL 3459 | ENDF 3460 | PUSHB_1 3461 | 106 3462 | FDEF 3463 | PUSHB_4 3464 | 1 3465 | 1 3466 | 0 3467 | 68 3468 | CALL 3469 | ENDF 3470 | PUSHB_1 3471 | 107 3472 | FDEF 3473 | PUSHB_4 3474 | 0 3475 | 0 3476 | 1 3477 | 68 3478 | CALL 3479 | ENDF 3480 | PUSHB_1 3481 | 108 3482 | FDEF 3483 | PUSHB_4 3484 | 0 3485 | 1 3486 | 1 3487 | 68 3488 | CALL 3489 | ENDF 3490 | PUSHB_1 3491 | 109 3492 | FDEF 3493 | PUSHB_4 3494 | 1 3495 | 0 3496 | 1 3497 | 68 3498 | CALL 3499 | ENDF 3500 | PUSHB_1 3501 | 110 3502 | FDEF 3503 | PUSHB_4 3504 | 1 3505 | 1 3506 | 1 3507 | 68 3508 | CALL 3509 | ENDF 3510 | PUSHB_1 3511 | 111 3512 | FDEF 3513 | PUSHB_2 3514 | 0 3515 | 60 3516 | CALL 3517 | MDAP[no-rnd] 3518 | PUSHB_2 3519 | 48 3520 | 1 3521 | SZP1 3522 | CALL 3523 | ENDF 3524 | PUSHB_1 3525 | 112 3526 | FDEF 3527 | PUSHB_2 3528 | 0 3529 | 60 3530 | CALL 3531 | PUSHB_1 3532 | 64 3533 | CALL 3534 | ENDF 3535 | PUSHB_1 3536 | 113 3537 | FDEF 3538 | PUSHB_2 3539 | 0 3540 | 60 3541 | CALL 3542 | PUSHB_1 3543 | 65 3544 | CALL 3545 | ENDF 3546 | PUSHB_1 3547 | 114 3548 | FDEF 3549 | PUSHB_1 3550 | 0 3551 | SZPS 3552 | PUSHB_2 3553 | 0 3554 | 60 3555 | CALL 3556 | PUSHB_1 3557 | 66 3558 | CALL 3559 | ENDF 3560 | PUSHB_1 3561 | 115 3562 | FDEF 3563 | PUSHB_2 3564 | 1 3565 | 60 3566 | CALL 3567 | PUSHB_1 3568 | 64 3569 | CALL 3570 | ENDF 3571 | PUSHB_1 3572 | 116 3573 | FDEF 3574 | PUSHB_2 3575 | 1 3576 | 60 3577 | CALL 3578 | PUSHB_1 3579 | 65 3580 | CALL 3581 | ENDF 3582 | PUSHB_1 3583 | 117 3584 | FDEF 3585 | PUSHB_1 3586 | 0 3587 | SZPS 3588 | PUSHB_2 3589 | 1 3590 | 60 3591 | CALL 3592 | PUSHB_1 3593 | 66 3594 | CALL 3595 | ENDF 3596 | PUSHB_1 3597 | 118 3598 | FDEF 3599 | PUSHB_2 3600 | 0 3601 | 61 3602 | CALL 3603 | MDAP[no-rnd] 3604 | PUSHB_2 3605 | 48 3606 | 1 3607 | SZP1 3608 | CALL 3609 | ENDF 3610 | PUSHB_1 3611 | 119 3612 | FDEF 3613 | PUSHB_2 3614 | 0 3615 | 61 3616 | CALL 3617 | PUSHB_1 3618 | 64 3619 | CALL 3620 | ENDF 3621 | PUSHB_1 3622 | 120 3623 | FDEF 3624 | PUSHB_2 3625 | 0 3626 | 61 3627 | CALL 3628 | PUSHB_1 3629 | 65 3630 | CALL 3631 | ENDF 3632 | PUSHB_1 3633 | 121 3634 | FDEF 3635 | PUSHB_2 3636 | 0 3637 | 61 3638 | CALL 3639 | PUSHB_1 3640 | 66 3641 | CALL 3642 | ENDF 3643 | PUSHB_1 3644 | 122 3645 | FDEF 3646 | PUSHB_2 3647 | 1 3648 | 61 3649 | CALL 3650 | PUSHB_1 3651 | 64 3652 | CALL 3653 | ENDF 3654 | PUSHB_1 3655 | 123 3656 | FDEF 3657 | PUSHB_2 3658 | 1 3659 | 61 3660 | CALL 3661 | PUSHB_1 3662 | 65 3663 | CALL 3664 | ENDF 3665 | PUSHB_1 3666 | 124 3667 | FDEF 3668 | PUSHB_2 3669 | 1 3670 | 61 3671 | CALL 3672 | PUSHB_1 3673 | 66 3674 | CALL 3675 | ENDF 3676 | PUSHB_1 3677 | 125 3678 | FDEF 3679 | PUSHB_2 3680 | 0 3681 | 62 3682 | CALL 3683 | MDAP[no-rnd] 3684 | PUSHB_2 3685 | 48 3686 | 1 3687 | SZP1 3688 | CALL 3689 | ENDF 3690 | PUSHB_1 3691 | 126 3692 | FDEF 3693 | PUSHB_2 3694 | 0 3695 | 62 3696 | CALL 3697 | PUSHB_1 3698 | 64 3699 | CALL 3700 | ENDF 3701 | PUSHB_1 3702 | 127 3703 | FDEF 3704 | PUSHB_2 3705 | 0 3706 | 62 3707 | CALL 3708 | PUSHB_1 3709 | 65 3710 | CALL 3711 | ENDF 3712 | PUSHB_1 3713 | 128 3714 | FDEF 3715 | PUSHB_2 3716 | 0 3717 | 62 3718 | CALL 3719 | PUSHB_1 3720 | 66 3721 | CALL 3722 | ENDF 3723 | PUSHB_1 3724 | 129 3725 | FDEF 3726 | PUSHB_2 3727 | 1 3728 | 62 3729 | CALL 3730 | PUSHB_1 3731 | 64 3732 | CALL 3733 | ENDF 3734 | PUSHB_1 3735 | 130 3736 | FDEF 3737 | PUSHB_2 3738 | 1 3739 | 62 3740 | CALL 3741 | PUSHB_1 3742 | 65 3743 | CALL 3744 | ENDF 3745 | PUSHB_1 3746 | 131 3747 | FDEF 3748 | PUSHB_2 3749 | 1 3750 | 62 3751 | CALL 3752 | PUSHB_1 3753 | 66 3754 | CALL 3755 | ENDF 3756 | PUSHB_1 3757 | 132 3758 | FDEF 3759 | PUSHB_2 3760 | 0 3761 | 63 3762 | CALL 3763 | MDAP[no-rnd] 3764 | PUSHB_2 3765 | 48 3766 | 1 3767 | SZP1 3768 | CALL 3769 | ENDF 3770 | PUSHB_1 3771 | 133 3772 | FDEF 3773 | PUSHB_2 3774 | 0 3775 | 63 3776 | CALL 3777 | PUSHB_1 3778 | 64 3779 | CALL 3780 | ENDF 3781 | PUSHB_1 3782 | 134 3783 | FDEF 3784 | PUSHB_2 3785 | 0 3786 | 63 3787 | CALL 3788 | PUSHB_1 3789 | 65 3790 | CALL 3791 | ENDF 3792 | PUSHB_1 3793 | 135 3794 | FDEF 3795 | PUSHB_2 3796 | 0 3797 | 63 3798 | CALL 3799 | PUSHB_1 3800 | 66 3801 | CALL 3802 | ENDF 3803 | PUSHB_1 3804 | 136 3805 | FDEF 3806 | PUSHB_2 3807 | 1 3808 | 63 3809 | CALL 3810 | PUSHB_1 3811 | 64 3812 | CALL 3813 | ENDF 3814 | PUSHB_1 3815 | 137 3816 | FDEF 3817 | PUSHB_2 3818 | 1 3819 | 63 3820 | CALL 3821 | PUSHB_1 3822 | 65 3823 | CALL 3824 | ENDF 3825 | PUSHB_1 3826 | 138 3827 | FDEF 3828 | PUSHB_2 3829 | 1 3830 | 63 3831 | CALL 3832 | PUSHB_1 3833 | 66 3834 | CALL 3835 | ENDF 3836 | PUSHB_1 3837 | 139 3838 | FDEF 3839 | PUSHB_3 3840 | 11 3841 | 0 3842 | 3 3843 | RCVT 3844 | LT 3845 | IF 3846 | PUSHB_1 3847 | 6 3848 | ELSE 3849 | PUSHB_3 3850 | 4 3851 | 2 3852 | 3 3853 | RCVT 3854 | IF 3855 | SWAP 3856 | POP 3857 | ELSE 3858 | POP 3859 | EIF 3860 | EIF 3861 | WS 3862 | CALL 3863 | PUSHB_1 3864 | 8 3865 | NEG 3866 | PUSHB_1 3867 | 3 3868 | DEPTH 3869 | LT 3870 | JROT 3871 | PUSHB_2 3872 | 5 3873 | 1 3874 | SZP2 3875 | RCVT 3876 | IF 3877 | IUP[y] 3878 | EIF 3879 | ENDF 3880 | EndTTInstrs 3881 | ShortTable: cvt 119 3882 | 0 3883 | 0 3884 | 0 3885 | 0 3886 | 0 3887 | 0 3888 | 0 3889 | 0 3890 | 0 3891 | 0 3892 | 0 3893 | 0 3894 | 0 3895 | 0 3896 | 0 3897 | 0 3898 | 0 3899 | 0 3900 | 0 3901 | 0 3902 | 0 3903 | 0 3904 | 0 3905 | 0 3906 | 0 3907 | 162 3908 | 162 3909 | 163 3910 | 163 3911 | 1495 3912 | 0 3913 | 1126 3914 | 0 3915 | -369 3916 | 1802 3917 | -380 3918 | 1516 3919 | -20 3920 | 1147 3921 | -16 3922 | -369 3923 | 1802 3924 | -380 3925 | 162 3926 | 162 3927 | 163 3928 | 163 3929 | 1495 3930 | 0 3931 | 1495 3932 | 1126 3933 | 0 3934 | -369 3935 | 1802 3936 | -380 3937 | 1516 3938 | -20 3939 | 1516 3940 | 1143 3941 | -16 3942 | -369 3943 | 1802 3944 | -380 3945 | 50 3946 | 50 3947 | 50 3948 | 50 3949 | 1372 3950 | 102 3951 | 1802 3952 | -380 3953 | 1372 3954 | 102 3955 | 1802 3956 | -380 3957 | 162 3958 | 162 3959 | 163 3960 | 163 3961 | 1495 3962 | 0 3963 | 1495 3964 | 1126 3965 | 0 3966 | -369 3967 | 1802 3968 | -380 3969 | 1516 3970 | -20 3971 | 1591 3972 | 1147 3973 | -16 3974 | -369 3975 | 1802 3976 | -380 3977 | 126 3978 | 126 3979 | 129 3980 | 129 3981 | 645 3982 | -226 3983 | 1802 3984 | -380 3985 | 665 3986 | -246 3987 | 1802 3988 | -380 3989 | 126 3990 | 126 3991 | 129 3992 | 129 3993 | 1700 3994 | 829 3995 | 1802 3996 | -380 3997 | 1720 3998 | 809 3999 | 1802 4000 | -380 4001 | EndShort 4002 | ShortTable: maxp 16 4003 | 1 4004 | 0 4005 | 15042 4006 | 440 4007 | 110 4008 | 91 4009 | 5 4010 | 2 4011 | 660 4012 | 1014 4013 | 141 4014 | 0 4015 | 1368 4016 | 3648 4017 | 3 4018 | 1 4019 | EndShort 4020 | LangName: 1033 "" "" "" "FontForge 2.0 : UDEV Gothic Regular : 24-03-2022" "" "Version 0.0.1 ; ttfautohint (v1.8.3) -l 6 -r 45 -G 200 -x 14 -D latn -f none -a nnn -W -X +ACIA-13-+ACIA" 4021 | GaspTable: 1 65535 15 1 4022 | Encoding: UnicodeFull 4023 | UnicodeInterp: none 4024 | NameList: AGL For New Fonts 4025 | DisplaySize: -48 4026 | AntiAlias: 1 4027 | FitToEm: 0 4028 | WinInfo: 0 13 9 4029 | BeginPrivate: 0 4030 | EndPrivate 4031 | BeginChars: 1116914 1 4032 | 4033 | StartChar: zero 4034 | Encoding: 48 48 0 4035 | Width: 600 4036 | Flags: W 4037 | LayerCount: 2 4038 | Fore 4039 | SplineSet 4040 | 300 67 m 128,-1,1 4041 | 360 67 360 67 396.5 105.5 c 128,-1,2 4042 | 433 144 433 144 433 205 c 2,3,-1 4043 | 433 471.309859155 l 1,4,-1 4044 | 173.618396776 157.129325672 l 1,5,6 4045 | 182.542570003 127.605782325 182.542570003 127.605782325 203.5 105.5 c 0,7,0 4046 | 240 67 240 67 300 67 c 128,-1,1 4047 | 300 -10 m 0,8,9 4048 | 199 -10 199 -10 139.5 48.5 c 128,-1,10 4049 | 80 107 80 107 80 205 c 2,11,-1 4050 | 80 525 l 2,12,13 4051 | 80 623 80 623 139.5 681.5 c 128,-1,14 4052 | 199 740 199 740 300 740 c 128,-1,15 4053 | 401 740 401 740 460.5 681.5 c 128,-1,16 4054 | 520 623 520 623 520 525 c 2,17,-1 4055 | 520 205 l 2,18,19 4056 | 520 140 520 140 493 91.5 c 128,-1,20 4057 | 466 43 466 43 416.5 16.5 c 128,-1,21 4058 | 367 -10 367 -10 300 -10 c 0,8,9 4059 | 427.328422591 569.594990745 m 1,22,23 4060 | 418.612068411 601.176311402 418.612068411 601.176311402 396.5 624.5 c 0,24,25 4061 | 360 663 360 663 300 663 c 128,-1,26 4062 | 240 663 240 663 203.5 624.5 c 128,-1,27 4063 | 167 586 167 586 167 525 c 2,28,-1 4064 | 167 254.267605634 l 1,29,-1 4065 | 427.328422591 569.594990745 l 1,22,23 4066 | EndSplineSet 4067 | EndChar 4068 | EndChars 4069 | EndSplineFont 4070 | --------------------------------------------------------------------------------