├── .circleci └── config.yml ├── .commit_template ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── CHANGELOG.md ├── COPYRIGHT.txt ├── Dockerfile ├── LICENSE.txt ├── Makefile ├── README.md ├── cica.py ├── dist ├── .gitkeep └── noemoji │ └── .gitkeep ├── docker-compose.yml ├── entrypoint.sh ├── export_pua.py ├── index.html ├── screenshots ├── cicachange.gif ├── gvim.png ├── julia.png └── macvim.png ├── sourceFonts ├── gopher.sfd ├── m-Bold.sfd ├── m-Regular.sfd ├── nerd.sfd ├── reiwa-Bold.sfd ├── reiwa.sfd └── svg │ ├── f3000.svg │ ├── f3001.svg │ ├── f3002.svg │ ├── f3100.svg │ ├── f3101.svg │ ├── f3102.svg │ ├── fe0b0.svg │ ├── fe0b1.svg │ ├── fe0b2.svg │ ├── fe0b3.svg │ ├── fe0b4.svg │ ├── fe0b5.svg │ ├── fe566.svg │ ├── fe567.svg │ └── fe568.svg ├── test └── test_glyphs.py └── tmp └── .gitkeep /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: docker:17.05.0-ce-git 6 | steps: 7 | - checkout 8 | - setup_remote_docker 9 | - run: 10 | name: Install dependencies 11 | command: | 12 | apk add --no-cache \ 13 | py-pip=9.0.0-r1 14 | pip install \ 15 | docker-compose==1.12.0 \ 16 | awscli==1.11.76 17 | - run: 18 | name: Build 19 | command: | 20 | docker-compose build && docker-compose run --rm cica 21 | publish-github-release: 22 | required: 23 | - build 24 | filters: 25 | tags: 26 | only: /^v\d+\.\d+\.\d+$/ 27 | docker: 28 | - image: circleci/golang:1.8 29 | steps: 30 | - attach_workspace: 31 | at: ./dist 32 | - run: 33 | name: Publish Release on GitHub 34 | command: | 35 | go get github.com/tcnksm/ghr 36 | VERSION=$(my-binary --version) 37 | ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} ./dist/ 38 | -------------------------------------------------------------------------------- /.commit_template: -------------------------------------------------------------------------------- 1 | 2 | 3 | # ==== Emojis ==== 4 | # 🐛 :bug: バグ修正 5 | # 👍 :+1: 機能改善 6 | # ✨ :sparkles: 部分的な機能追加 7 | # 🎉 :tada: 盛大に祝うべき大きな機能追加 8 | # ♻️ :recycle: リファクタリング 9 | # 🚿 :shower: 不要な機能・使われなくなった機能の削除 10 | # 💚 :green_heart: テストやCIの修正・改善 11 | # 👕 :shirt: Lintエラーの修正やコードスタイルの修正 12 | # 🚀 :rocket: パフォーマンス改善 13 | # 🆙 :up: 依存パッケージなどのアップデート 14 | # 🔒 :lock: 新機能の公開範囲の制限 15 | # 👮 :cop: セキュリティ関連の改善 16 | 17 | # ==== Format ==== 18 | # :emoji: Subject 19 | # 20 | # Commit body... 21 | 22 | # ==== The Seven Rules ==== 23 | # 1. Separate subject from body with a blank line 24 | # 2. Limit the subject line to 50 characters 25 | # 3. Capitalize the subject line 26 | # 4. Do not end the subject line with a period 27 | # 5. Use the imperative mood in the subject line 28 | # 6. Wrap the body at 72 characters 29 | # 7. Use the body to explain what and why vs. how 30 | # 31 | # How to Write a Git Commit Message http://chris.beams.io/posts/git-commit/ 32 | 33 | # for http://memo.goodpatch.co/2016/07/beautiful-commits-with-emojis/ 34 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | index.html linguist-vendored 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [miiton] 4 | patreon: miiton # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | name: Build 8 | runs-on: ubuntu-latest 9 | steps: 10 | # Check out the source repository to standard location 11 | - name: Check out the repository 12 | uses: actions/checkout@v2 13 | 14 | # Build a container in the root of our repository and make it run 15 | - name: Execute build 16 | uses: ./ 17 | 18 | # Upload built results as an artifact 19 | - name: Upload artifacts 20 | uses: actions/upload-artifact@v1 21 | with: 22 | name: Cica-nightly-${{ github.sha }} 23 | path: dist 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp/* 2 | sourceFonts/* 3 | Cica/* 4 | .DS_Store 5 | *.orig 6 | dist/* 7 | ubuntu-font-family-0.83* 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 2019-06-26 v5.0.0 2 | 3 | * ✨ 独自のアイコングリフを導入 4 | * 👍 NerdFontのMaterial Design Iconsを導入しました #45 #46 5 | * 👍 大文字シータΘ と小文字シータθ を判読しやすいようにしました 6 | 7 | # 2019-05-27 v4.1.3 8 | 9 | * 三点リーダーを半角に変更しました #41 #43 10 | 11 | # 2019-04-02 v4.1.2 12 | 13 | * U+32FFに `令和(㋿)` を追加しました #42 14 | 15 | # 2018-09-17 v4.1.0, v4.1.1 16 | 17 | * Icons for Devsを追加しました #37 18 | 19 | # 2018-09-15 v4.0.0 20 | 21 | * UbuntuMonoをHackに変更しました 22 | * ライセンスの競合を無くし、 SIL Open Font License 1.1 になりました 23 | * 以前のバージョンはライセンスに問題があったので非公開にしました 24 | 25 | # 2018-01-04 v2.0.5 26 | 27 | 上半身Gopherを復活させました #20 28 | 29 | # 🎉 2017-10-09 v2.0.0 30 | 31 | NERDTreeなどでファイルタイプ別にアイコンを表示させる為のNerd Fontsを統合し、 32 | v2としてリリースしました。 33 | 34 | また、CicaEは廃止し、Cica1本にしました。 35 | 36 | ## NERDFontsを追加 37 | 38 | 詳細はこちら -> https://github.com/ryanoasis/nerd-fonts 39 | 40 | これによりCicaE v1 から DevIcon のUnicodeが変更になりました。 41 | 42 | ## スタイル追加 43 | 44 | Italicをそれぞれ追加し、以下の通りになりました。 45 | 46 | - Cica Regular 47 | - Cica RegularItalic 48 | - Cica Bold 49 | - Cica BoldItalic 50 | 51 | ## ambiguousグリフの変更(全角半角が曖昧なグリフ) 52 | 53 | Rounded Mgen+、UbuntuMonoどちらも半角幅になっているグリフを 54 | UbuntuMonoのグリフを採用するように変更しました。 55 | 56 | | グリフ | 変更前 | 変更後 | 57 | | ---- | ---- | ---- | 58 | | 0x00a4, # currency | Rounded Mgen+ | UbuntuMono | 59 | | 0x00a7, # section | Rounded Mgen+ | UbuntuMono | 60 | | 0x00a8, # dieresis | Rounded Mgen+ | UbuntuMono | 61 | | 0x00ad, # soft hyphen | Rounded Mgen+ | UbuntuMono | 62 | | 0x00b0, # degree | Rounded Mgen+ | UbuntuMono | 63 | | 0x00b1, # plus-minus | Rounded Mgen+ | UbuntuMono | 64 | | 0x00b4, # acute | Rounded Mgen+ | UbuntuMono | 65 | | 0x00b6, # pilcrow | Rounded Mgen+ | UbuntuMono | 66 | | 0x00d7, # multiply | Rounded Mgen+ | UbuntuMono | 67 | | 0x00f7, # divide | Rounded Mgen+ | UbuntuMono | 68 | | 0x2018, # left ' | Rounded Mgen+ | UbuntuMono | 69 | | 0x2019, # right ' | Rounded Mgen+ | UbuntuMono | 70 | | 0x201c, # left " | Rounded Mgen+ | UbuntuMono | 71 | | 0x201d, # right " | Rounded Mgen+ | UbuntuMono | 72 | | 0x2020, # dagger | Rounded Mgen+ | UbuntuMono | 73 | | 0x2021, # double dagger | Rounded Mgen+ | UbuntuMono | 74 | | 0x2026, # ... | Rounded Mgen+ | 変更なし | 75 | | 0x2122, # TM | Rounded Mgen+ | UbuntuMono | 76 | | 0x2191, # uparrow | Rounded Mgen+ | 変更なし | 77 | | 0x2193, # downarrow | Rounded Mgen+ | 変更なし | 78 | 79 | 80 | ## ビルドスクリプトをPythonに 81 | 82 | 全面的にPythonに書き換えました。 83 | 84 | -------------------------------------------------------------------------------- /COPYRIGHT.txt: -------------------------------------------------------------------------------- 1 | [Hack] 2 | Copyright (c) 2018 Source Foundry Authors / Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. 3 | 4 | [Source Han Sans] 5 | Copyright (c) 2014, 2015 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. 6 | 7 | [M+ OUTLINE FONTS] 8 | Copyright(c) 2015 M+ FONTS PROJECT 9 | 10 | [DejaVu Sans Mono] 11 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. 12 | DejaVu changes are in public domain 13 | 14 | [DevIcons] 15 | MIT (c) @vorillaz (https://github.com/vorillaz/devicons) 16 | 17 | [Powerline Extra Symbols] 18 | MIT (c) Ryan L McIntyre (https://github.com/ryanoasis/powerline-extra-symbols) 19 | 20 | [Font Awesome] 21 | Copyright Dave Gandy 2016. All rights reserved. 22 | 23 | [Font Awesome Extension] 24 | (https://github.com/AndreLZGava/font-awesome-extension) 25 | 26 | [Octicons] 27 | MIT (c) GitHub, Inc. 28 | 29 | [IEC Power Symbols] 30 | MIT (c) @jloughry (https://github.com/jloughry/Unicode) 31 | 32 | [Poweline Symbols] 33 | (https://github.com/powerline/powerline) 34 | 35 | [Seti-UI + Custom] 36 | Copyright (c) 2014 Jesse Weed 37 | 38 | [Icons for Devs] 39 | (https://github.com/mirmat/iconsfordevs) 40 | 41 | [Noto Emoji] 42 | Copyright 2013 Google Inc. All Rights Reserved. 43 | 44 | [Cica] 45 | Copyright (c) 2018, Takahiro Minami (https://tmnm.tech) -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | ENV HACK_VERSION v3.003 4 | ENV HACK_ARCHIVE_HASH 0c2604631b1f055041c68a0e09ae4801acab6c5072ba2db6a822f53c3f8290ac 5 | ENV MGENPLUS_GDRIVE_ID 1NWZvbjzMDIJyzwpTULi4Lk7uzayU7F7j 6 | ENV MGENPLUS_ARCHIVE_HASH ecea6764973d93936238f1c06ed246310bec320f63f350c2bdb7e8d1feee25cc 7 | ENV NOTO_EMOJI_VERSION v2.034 8 | ENV NOTO_EMOJI_FILE_HASH 415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5 9 | ENV DEJAVU_VERSION 2.37 10 | ENV DEJAVU_ARCHIVE_HASH 7576310b219e04159d35ff61dd4a4ec4cdba4f35c00e002a136f00e96a908b0a 11 | ENV ICONSFORDEVS_VERSION 6a0e325e057e29b341ac4733e8a05953fa614aa2 12 | ENV ICONSFORDEVS_FILE_HASH 87e6cd72233dfb4919feb957a4aee3ace140ee78ea1d9741fbaa4027589d2988 13 | ENV CICA_SOURCE_FONTS_PATH /work/sourceFonts 14 | 15 | RUN apt-get update && \ 16 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 17 | software-properties-common fontforge unar git curl python3 python3-pip && \ 18 | pip3 install gdown && \ 19 | mkdir /work 20 | WORKDIR /work 21 | COPY sourceFonts sourceFonts 22 | RUN curl --fail -L https://github.com/source-foundry/Hack/releases/download/$HACK_VERSION/Hack-$HACK_VERSION-ttf.zip -o /tmp/hack.zip && \ 23 | echo "${HACK_ARCHIVE_HASH} /tmp/hack.zip" | shasum -c && \ 24 | unar /tmp/hack.zip -o /tmp/hack && cp /tmp/hack/ttf/* sourceFonts/ && \ 25 | gdown https://drive.google.com/uc?id=$MGENPLUS_GDRIVE_ID -O /tmp/rounded-mgenplus.7z && \ 26 | echo "${MGENPLUS_ARCHIVE_HASH} /tmp/rounded-mgenplus.7z" | shasum -c && \ 27 | unar /tmp/rounded-mgenplus.7z -o /tmp && \ 28 | cp /tmp/rounded-mgenplus/rounded-mgenplus-1m-regular.ttf sourceFonts/ && \ 29 | cp /tmp/rounded-mgenplus/rounded-mgenplus-1m-bold.ttf sourceFonts/ && \ 30 | curl --fail -L https://github.com/googlefonts/noto-emoji/blob/$NOTO_EMOJI_VERSION/fonts/NotoEmoji-Regular.ttf?raw=true -o sourceFonts/NotoEmoji-Regular.ttf && \ 31 | echo "${NOTO_EMOJI_FILE_HASH} sourceFonts/NotoEmoji-Regular.ttf" | shasum -c && \ 32 | curl --fail -L http://sourceforge.net/projects/dejavu/files/dejavu/$DEJAVU_VERSION/dejavu-fonts-ttf-$DEJAVU_VERSION.zip -o /tmp/dejavu.zip && \ 33 | echo "${DEJAVU_ARCHIVE_HASH} /tmp/dejavu.zip" | shasum -c && \ 34 | unar /tmp/dejavu.zip -o /tmp && \ 35 | cp /tmp/dejavu-fonts-ttf-$DEJAVU_VERSION/ttf/DejaVuSansMono.ttf sourceFonts/ && \ 36 | cp /tmp/dejavu-fonts-ttf-$DEJAVU_VERSION/ttf/DejaVuSansMono-Bold.ttf sourceFonts/ && \ 37 | curl --fail -L https://github.com/mirmat/iconsfordevs/raw/$ICONSFORDEVS_VERSION/fonts/iconsfordevs.ttf -o sourceFonts/iconsfordevs.ttf && \ 38 | echo "${ICONSFORDEVS_FILE_HASH} sourceFonts/iconsfordevs.ttf" | shasum -c 39 | 40 | COPY cica.py cica.py 41 | COPY LICENSE.txt LICENSE.txt 42 | COPY COPYRIGHT.txt COPYRIGHT.txt 43 | 44 | ADD entrypoint.sh /usr/local/bin/entrypoint.sh 45 | 46 | ENTRYPOINT entrypoint.sh 47 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018, Takahiro Minami (https://tmnm.tech), 2 | with Reserved Font Name Cica 3 | 4 | - The Cica generate script is licensed under the MIT License. 5 | - And Cica Font Software is licensed under the SIL Open Font License v1.1. 6 | - Source font softwares are licensed under the 7 | - SIL Open Font License, Version 1.1 8 | - Hack : https://sourcefoundry.org/hack/ 9 | - Rounded Mgen+ : http://jikasei.me/font/rounded-mgenplus/ 10 | - MIT Licenses 11 | - Cica Generate Script : https://github.com/miiton/Cica 12 | - DevIcons : https://github.com/vorillaz/devicons 13 | - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols 14 | - Font Awesome : https://github.com/FortAwesome/Font-Awesome 15 | - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension 16 | - Octicons : https://github.com/primer/octicons 17 | - IEC Power Symbols : https://unicodepowersymbol.com/ 18 | - Powerline Symbols : https://github.com/powerline/powerline 19 | - Seti-UI + Custom : https://github.com/jesseweed/seti-ui 20 | - Icons for Devs : https://github.com/mirmat/iconsfordevs 21 | - Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.html 22 | - Noto Emoji : https://github.com/googlei18n/noto-emoji 23 | - Free license 24 | - DejaVu Sans Mono : https://dejavu-fonts.github.io/ 25 | 26 | 27 | ## SIL Open Font License 28 | 29 | Version 1.1 - 26 February 2007 30 | 31 | PREAMBLE 32 | The goals of the Open Font License (OFL) are to stimulate worldwide 33 | development of collaborative font projects, to support the font creation 34 | efforts of academic and linguistic communities, and to provide a free and 35 | open framework in which fonts may be shared and improved in partnership 36 | with others. 37 | 38 | The OFL allows the licensed fonts to be used, studied, modified and 39 | redistributed freely as long as they are not sold by themselves. The 40 | fonts, including any derivative works, can be bundled, embedded, 41 | redistributed and/or sold with any software provided that any reserved 42 | names are not used by derivative works. The fonts and derivatives, 43 | however, cannot be released under any other type of license. The 44 | requirement for fonts to remain under this license does not apply 45 | to any document created using the fonts or their derivatives. 46 | 47 | DEFINITIONS 48 | "Font Software" refers to the set of files released by the Copyright 49 | Holder(s) under this license and clearly marked as such. This may 50 | include source files, build scripts and documentation. 51 | 52 | "Reserved Font Name" refers to any names specified as such after the 53 | copyright statement(s). 54 | 55 | "Original Version" refers to the collection of Font Software components as 56 | distributed by the Copyright Holder(s). 57 | 58 | "Modified Version" refers to any derivative made by adding to, deleting, 59 | or substituting — in part or in whole — any of the components of the 60 | Original Version, by changing formats or by porting the Font Software to a 61 | new environment. 62 | 63 | "Author" refers to any designer, engineer, programmer, technical 64 | writer or other person who contributed to the Font Software. 65 | 66 | PERMISSION & CONDITIONS 67 | Permission is hereby granted, free of charge, to any person obtaining 68 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 69 | redistribute, and sell modified and unmodified copies of the Font 70 | Software, subject to the following conditions: 71 | 72 | 1) Neither the Font Software nor any of its individual components, 73 | in Original or Modified Versions, may be sold by itself. 74 | 75 | 2) Original or Modified Versions of the Font Software may be bundled, 76 | redistributed and/or sold with any software, provided that each copy 77 | contains the above copyright notice and this license. These can be 78 | included either as stand-alone text files, human-readable headers or 79 | in the appropriate machine-readable metadata fields within text or 80 | binary files as long as those fields can be easily viewed by the user. 81 | 82 | 3) No Modified Version of the Font Software may use the Reserved Font 83 | Name(s) unless explicit written permission is granted by the corresponding 84 | Copyright Holder. This restriction only applies to the primary font name as 85 | presented to the users. 86 | 87 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 88 | Software shall not be used to promote, endorse or advertise any 89 | Modified Version, except to acknowledge the contribution(s) of the 90 | Copyright Holder(s) and the Author(s) or with their explicit written 91 | permission. 92 | 93 | 5) The Font Software, modified or unmodified, in part or in whole, 94 | must be distributed entirely under this license, and must not be 95 | distributed under any other license. The requirement for fonts to 96 | remain under this license does not apply to any document created 97 | using the Font Software. 98 | 99 | TERMINATION 100 | This license becomes null and void if any of the above conditions are 101 | not met. 102 | 103 | DISCLAIMER 104 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 105 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 106 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 107 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 108 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 109 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 110 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 111 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 112 | OTHER DEALINGS IN THE FONT SOFTWARE. 113 | 114 | 115 | ## MIT License 116 | 117 | Copyright (c) 2018 Takahiro Minami 118 | 119 | Permission is hereby granted, free of charge, to any person obtaining a copy 120 | of this software and associated documentation files (the "Software"), to deal 121 | in the Software without restriction, including without limitation the rights 122 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 123 | copies of the Software, and to permit persons to whom the Software is 124 | furnished to do so, subject to the following conditions: 125 | 126 | The above copyright notice and this permission notice shall be included in 127 | all copies or substantial portions of the Software. 128 | 129 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 130 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 131 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 132 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 133 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 134 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 135 | THE SOFTWARE. 136 | 137 | 138 | ## BITSTREAM VERA LICENSE 139 | 140 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a 141 | trademark of Bitstream, Inc. 142 | 143 | Permission is hereby granted, free of charge, to any person obtaining a copy 144 | of the fonts accompanying this license ("Fonts") and associated documentation 145 | files (the "Font Software"), to reproduce and distribute the Font Software, 146 | including without limitation the rights to use, copy, merge, publish, 147 | distribute, and/or sell copies of the Font Software, and to permit persons 148 | to whom the Font Software is furnished to do so, subject to the following conditions: 149 | 150 | The above copyright and trademark notices and this permission notice shall be 151 | included in all copies of one or more of the Font Software typefaces. 152 | 153 | The Font Software may be modified, altered, or added to, and in particular 154 | the designs of glyphs or characters in the Fonts may be modified and additional 155 | glyphs or characters may be added to the Fonts, only if the fonts are renamed 156 | to names not containing either the words "Bitstream" or the word "Vera". 157 | 158 | This License becomes null and void to the extent applicable to Fonts or Font 159 | Software that has been modified and is distributed under the "Bitstream Vera" 160 | names. 161 | 162 | The Font Software may be sold as part of a larger software package but no copy 163 | of one or more of the Font Software typefaces may be sold by itself. 164 | 165 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 166 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, 167 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, 168 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION 169 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, 170 | SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION 171 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO 172 | USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. 173 | 174 | Except as contained in this notice, the names of Gnome, the Gnome Foundation, 175 | and Bitstream Inc., shall not be used in advertising or otherwise to promote 176 | the sale, use or other dealings in this Font Software without prior written 177 | authorization from the Gnome Foundation or Bitstream Inc., respectively. For 178 | further information, contact: fonts at gnome dot org. 179 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | build: 2 | @fontforge -lang=py -script cica.py 2> /dev/null 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # プログラミング用日本語等幅フォント Cica 2 | 3 | ## [ダウンロード](https://github.com/miiton/Cica/releases/latest) 4 | 5 | | | | 6 | | :----: | :----: | 7 | | **MacVim + NERDTree + CtrlP + LightLine** | **Cica v3との違い** | 8 | | [![MacVim](screenshots/macvim.png)](screenshots/macvim.png) | [![v3 and v4](screenshots/cicachange.gif)](screenshots/cicachange.gif) | 9 | | **Julia Ready** | **GVim on Windows** | 10 | | [![Julia on Jupyter](screenshots/julia.png)](screenshots/julia.png) | [![GVim on Windows](screenshots/gvim.png)](screenshots/gvim.png) | 11 | 12 | 13 | 14 | ## 特徴 15 | 16 | * 以下のフォントを合成後に調整した、プログラミング向けの等幅日本語フォントです 17 | - 英数字、記号類に [Hack](https://sourcefoundry.org/hack/) + [DejaVu Sans Mono](https://dejavu-fonts.github.io/) 18 | - それ以外の文字に [Rounded Mgen+](http://jikasei.me/font/rounded-mgenplus/) 19 | - [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts) (= Powerlineパッチ、その他適用済。Pomiconsは除外※) 20 | - [Noto Emoji](https://www.google.com/get/noto/) 21 | - [Icons for Devs](https://github.com/mirmat/iconsfordevs) 22 | - RictyジェネレータからForkした各種調整 23 | - 独自の調整として `m` の真ん中の棒を短く( `rn` と `m` を区別しやすく&ちょっと可愛らしく) 24 | * tmuxの画面分割に対応しています 25 | * 非HiDPI(非Retina)のWindowsでも文字が欠けません 26 | * 下付き文字や上付き文字など、特殊な文字の判読性を考慮([JuliaLang](https://julialang.org/) を想定しています) 27 | * ライセンス 28 | - フォントファイルは SIL Open Font License 1.1 です 29 | - 合成スクリプト等のソースコードは MIT です 30 | 31 | ``` 32 | o Cica 33 | |\ 34 | * * Icons for Devs 35 | |\ 36 | * * NERDFonts (without Pomicons※) 37 | |\ 38 | * * Noto Emoji (無しバージョンあり) 39 | |\ 40 | * * DejaVu Sans Mono 41 | |\ 42 | * * Hack 43 | \ 44 | * Rounded Mgen+ 45 | |\ 46 | | * 源の角ゴシック 47 | | 48 | * Rounded M+ 49 | | 50 | * M+ OUTLINE FONTS 51 | ``` 52 | 53 | - ※Nerd Fontsに含まれるPomiconsのグリフは商用利用が出来ないライセンスなのでジェネレータからは除外しています。 54 | - ※アイコン類はフォントをインストール後 [https:\/\/miiton.github.io\/Cica\/](https://miiton.github.io/Cica/) で確認出来ます。 55 | 56 | ## Q&A 57 | 58 | ### 矢印記号、半角なの...? 59 | 60 | ソースコード中で矢印記号はそう使わないと判断して半角幅にしました。 61 | とはいえMarkdown中では使うこともあると思うのですが、その場合 62 | あいまい文字が半角の環境で見切れてしまうので、それであれば 63 | 多少不格好でも判読できたほうが良いという判断です。 64 | 65 | 尚、絵文字の矢印を使うという手もあります(`U+F060 - U+F063 `) 66 | 67 | ### NerdTree、CtrlPでVueのアイコンが出ない 68 | 69 | Vueのアイコンを追加しました(v4.1.0) 70 | 71 | .vimrcで以下を追加すると表示できます。(要 [ryanoasis/vim\-devicons: Adds file type glyphs/icons to popular Vim plugins: NERDTree, vim\-airline, Powerline, Unite, vim\-startify and more](https://github.com/ryanoasis/vim-devicons)) 72 | 73 | ```vim 74 | let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {} 75 | let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['vue'] = '' 76 | " アイコン入力方法 : `[Ctrl+V]` > `[u]` > `e905` 77 | let g:NERDTreeExtensionHighlightColor = {} 78 | let g:NERDTreeExtensionHighlightColor['vue'] = '42B983' 79 | ``` 80 | 81 | 82 | ## 既知の問題 83 | 84 | * [Ubuntu 上の gVim で powerline 用フォントが少しずれます。 · Issue \#33 · miiton/Cica](https://github.com/miiton/Cica/issues/33) 85 | 86 | ## ビルド手順 87 | 88 | ### Dockerを使う場合 89 | 90 | ```sh 91 | git clone https://github.com/miiton/Cica.git 92 | cd Cica 93 | docker-compose build ; docker-compose run --rm cica # ./dist/ に出力される 94 | ``` 95 | 96 | ### 手動でやる場合 97 | 98 | 2018-08-27時点、Ubuntu 16.04 にて 99 | 100 | ```sh 101 | sudo apt-get update 102 | sudo apt-get -y install apt-file 103 | sudo apt-file update 104 | sudo apt-file search add-apt-repository 105 | sudo apt-get -y install software-properties-common 106 | sudo apt-get -y install fontforge unar 107 | git clone git@github.com:miiton/Cica.git 108 | cd Cica 109 | curl -L https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.zip -o hack.zip 110 | unar hack.zip 111 | cp ttf/* sourceFonts/ 112 | rm hack.zip 113 | rm -r ttf 114 | curl -LO https://osdn.jp/downloads/users/8/8598/rounded-mgenplus-20150602.7z 115 | unar rounded-mgenplus-20150602.7z 116 | cp rounded-mgenplus-20150602/rounded-mgenplus-1m-regular.ttf ./sourceFonts 117 | cp rounded-mgenplus-20150602/rounded-mgenplus-1m-bold.ttf ./sourceFonts 118 | curl -L https://github.com/googlefonts/noto-emoji/raw/main/fonts/NotoEmoji-Regular.ttf -o sourceFonts/NotoEmoji-Regular.ttf 119 | curl -LO http://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.zip 120 | unar dejavu-fonts-ttf-2.37.zip 121 | mv dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono.ttf ./sourceFonts/ 122 | mv dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-Bold.ttf ./sourceFonts/ 123 | curl -L https://github.com/mirmat/iconsfordevs/raw/master/fonts/iconsfordevs.ttf -o sourceFonts/iconsfordevs.ttf 124 | fontforge -lang=py -script cica.py 125 | ``` 126 | 127 | [fontforge のバージョンが古いと正常に動作しません #6](https://github.com/miiton/Cica/issues/6) 128 | 129 | ``` 130 | % fontforge --version 131 | 132 | Copyright (c) 2000-2012 by George Williams. 133 | Executable based on sources from 14:57 GMT 31-Jul-2012-ML. 134 | Library based on sources from 14:57 GMT 31-Jul-2012. 135 | fontforge 20120731 136 | libfontforge 20120731-ML 137 | ``` 138 | 139 | ## ライセンス 140 | 141 | * [LICENSE.txt](LICENSE.txt) 142 | 143 | ## 謝辞 144 | 145 | Cicaフォントの合成にあたり素晴らしいフォントを提供してくださっている製作者の方々に感謝いたします。 146 | 147 | - Hack : [Hack \| A typeface designed for source code](https://sourcefoundry.org/hack/) 148 | - Rounded Mgen+ : [自家製フォント工房](http://jikasei.me/) 149 | - M+ OUTLINE FONTS : [M\+ FONTS](https://mplus-fonts.osdn.jp/) 150 | - Rounded M+ : [自家製フォント工房](http://jikasei.me/) 151 | - 源の角ゴシック : [adobe\-fonts/source\-han\-sans: Source Han Sans \| 思源黑体 \| 思源黑體 \| 源ノ角ゴシック \| 본고딕](https://github.com/adobe-fonts/source-han-sans) 152 | - Noto Emoji : [googlei18n/noto\-emoji: Noto Emoji fonts](https://github.com/googlei18n/noto-emoji) 153 | - NERDFonts (without Pomicons) : [Nerd Fonts \- Iconic font aggregator, collection, and patcher](https://nerdfonts.com/) 154 | - DejaVu Sans Mono : [DejaVu Fonts](https://dejavu-fonts.github.io/) 155 | - Icons for Devs : [mirmat/iconsfordevs: Icons for Devs \- An iconic font made for developers](https://github.com/mirmat/iconsfordevs) 156 | -------------------------------------------------------------------------------- /cica.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import fontforge 4 | import psMat 5 | import os 6 | import sys 7 | import math 8 | import glob 9 | from datetime import datetime 10 | 11 | # ASCENT = 850 12 | # DESCENT = 174 13 | ASCENT = 820 14 | DESCENT = 204 15 | SOURCE = os.getenv('CICA_SOURCE_FONTS_PATH', './sourceFonts') 16 | LICENSE = open('./LICENSE.txt').read() 17 | COPYRIGHT = open('./COPYRIGHT.txt').read() 18 | VERSION = '5.0.3' 19 | FAMILY = 'Cica' 20 | 21 | fonts = [ 22 | { 23 | 'family': FAMILY, 24 | 'name': FAMILY + '-Regular', 25 | 'filename': FAMILY + '-Regular.ttf', 26 | 'weight': 400, 27 | 'weight_name': 'Regular', 28 | 'style_name': 'Regular', 29 | 'hack': 'Hack-Regular.ttf', 30 | 'mgen_plus': 'rounded-mgenplus-1m-regular.ttf', 31 | 'hack_weight_reduce': 0, 32 | 'mgen_weight_add': 0, 33 | 'italic': False, 34 | }, { 35 | 'family': FAMILY, 36 | 'name': FAMILY + '-RegularItalic', 37 | 'filename': FAMILY + '-RegularItalic.ttf', 38 | 'weight': 400, 39 | 'weight_name': 'Regular', 40 | 'style_name': 'Italic', 41 | 'hack': 'Hack-Regular.ttf', 42 | 'mgen_plus': 'rounded-mgenplus-1m-regular.ttf', 43 | 'hack_weight_reduce': 0, 44 | 'mgen_weight_add': 0, 45 | 'italic': True, 46 | }, { 47 | 'family': FAMILY, 48 | 'name': FAMILY + '-Bold', 49 | 'filename': FAMILY + '-Bold.ttf', 50 | 'weight': 700, 51 | 'weight_name': 'Bold', 52 | 'style_name': 'Bold', 53 | 'hack': 'Hack-Bold.ttf', 54 | 'mgen_plus': 'rounded-mgenplus-1m-bold.ttf', 55 | 'hack_weight_reduce': 0, 56 | 'mgen_weight_add': 0, 57 | 'italic': False, 58 | }, { 59 | 'family': FAMILY, 60 | 'name': FAMILY + '-BoldItalic', 61 | 'filename': FAMILY + '-BoldItalic.ttf', 62 | 'weight': 700, 63 | 'weight_name': 'Bold', 64 | 'style_name': 'Bold Italic', 65 | 'hack': 'Hack-Bold.ttf', 66 | 'mgen_plus': 'rounded-mgenplus-1m-bold.ttf', 67 | 'hack_weight_reduce': 0, 68 | 'mgen_weight_add': 0, 69 | 'italic': True, 70 | } 71 | ] 72 | 73 | def log(_str): 74 | now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 75 | print(now + " " + _str) 76 | 77 | def remove_glyph_from_hack(_font): 78 | """Rounded Mgen+を採用したいグリフをHackから削除 79 | """ 80 | glyphs = [ 81 | 0x2026, # … 82 | ] 83 | 84 | for g in glyphs: 85 | _font.selection.select(g) 86 | _font.clear() 87 | 88 | return _font 89 | 90 | 91 | def check_files(): 92 | err = 0 93 | for f in fonts: 94 | if not os.path.isfile(os.path.join(SOURCE, f.get('hack'))): 95 | log('%s not exists.' % f) 96 | err = 1 97 | 98 | if not os.path.isfile(os.path.join(SOURCE, f.get('mgen_plus'))): 99 | log('%s not exists.' % f) 100 | err = 1 101 | 102 | 103 | if err > 0: 104 | sys.exit(err) 105 | 106 | def set_os2_values(_font, _info): 107 | weight = _info.get('weight') 108 | style_name = _info.get('style_name') 109 | _font.os2_weight = weight 110 | _font.os2_width = 5 111 | _font.os2_fstype = 0 112 | if style_name == 'Regular': 113 | _font.os2_stylemap = 64 114 | elif style_name == 'Bold': 115 | _font.os2_stylemap = 32 116 | elif style_name == 'Italic': 117 | _font.os2_stylemap = 1 118 | elif style_name == 'Bold Italic': 119 | _font.os2_stylemap = 33 120 | _font.os2_vendor = 'TMNM' 121 | _font.os2_version = 1 122 | _font.os2_winascent = ASCENT 123 | _font.os2_winascent_add = False 124 | _font.os2_windescent = DESCENT 125 | _font.os2_windescent_add = False 126 | 127 | _font.os2_typoascent = -150 128 | _font.os2_typoascent_add = True 129 | _font.os2_typodescent = 100 130 | _font.os2_typodescent_add = True 131 | _font.os2_typolinegap = 0 132 | 133 | _font.hhea_ascent = -150 134 | _font.hhea_ascent_add = True 135 | _font.hhea_descent = 100 136 | _font.hhea_descent_add = True 137 | _font.hhea_linegap = 0 138 | _font.os2_panose = (2, 11, int(weight / 100), 9, 2, 2, 3, 2, 2, 7) 139 | return _font 140 | 141 | def align_to_center(_g): 142 | width = 0 143 | 144 | if _g.width > 700: 145 | width = 1024 146 | else: 147 | width = 512 148 | 149 | _g.width = width 150 | _g.left_side_bearing = _g.right_side_bearing = (_g.left_side_bearing + _g.right_side_bearing)/2 151 | _g.width = width 152 | 153 | return _g 154 | 155 | def align_to_left(_g): 156 | width = _g.width 157 | _g.left_side_bearing = 0 158 | _g.width = width 159 | 160 | def align_to_right(_g): 161 | width = _g.width 162 | bb = _g.boundingBox() 163 | left = width - (bb[2] - bb[0]) 164 | _g.left_side_bearing = left 165 | _g.width = width 166 | 167 | def add_dejavu(_f, conf): 168 | dejavu = None 169 | weight_name = conf.get('weight_name') 170 | if weight_name == "Regular": 171 | dejavu = fontforge.open(os.path.join(SOURCE, 'DejaVuSansMono.ttf')) 172 | elif weight_name == "Bold": 173 | dejavu = fontforge.open(os.path.join(SOURCE, 'DejaVuSansMono-Bold.ttf')) 174 | 175 | for g in dejavu.glyphs(): 176 | g.transform(psMat.compose(psMat.scale(0.45, 0.45), psMat.translate(-21, 0))) 177 | g.width = 512 178 | 179 | _f.importLookups(dejavu, dejavu.gpos_lookups) 180 | 181 | # 0x0300 - 0x036f - Combining Diacritical Marks 182 | for g in dejavu.glyphs(): 183 | if g.encoding < 0x0300 or g.encoding > 0x036f or g.encoding == 0x0398: 184 | continue 185 | else: 186 | if len(g.references) > 0: 187 | anchorPoints = g.anchorPoints 188 | g.anchorPoints = () 189 | g.transform(psMat.scale(2.22, 2.22)) 190 | g.transform(psMat.translate(50, 0)) 191 | g.width = 512 192 | g.anchorPoints = anchorPoints 193 | 194 | if g.encoding <= 0x0304: 195 | anchorPoints = g.anchorPoints 196 | g.anchorPoints = () 197 | g.transform(psMat.scale(1.2, 1.2)) 198 | g.transform(psMat.translate(-100, -60)) 199 | g.width = 512 200 | g.anchorPoints = anchorPoints 201 | elif g.encoding == 0x0305: 202 | g.transform(psMat.translate(0, -60)) 203 | elif g.encoding <= 0x0315: 204 | g.transform(psMat.translate(0, 0)) 205 | elif g.encoding <= 0x0317: 206 | g.transform(psMat.translate(0, 302)) 207 | elif g.encoding <= 0x0319: 208 | g.transform(psMat.translate(0, 200)) 209 | elif g.encoding <= 0x031b: 210 | g.transform(psMat.translate(0, -60)) 211 | elif g.encoding <= 0x031c: 212 | g.transform(psMat.translate(0, 22)) 213 | elif g.encoding <= 0x031f: 214 | g.transform(psMat.translate(0, 141)) 215 | elif g.encoding <= 0x0332: 216 | g.transform(psMat.translate(0, 90)) 217 | elif g.encoding == 0x0333: 218 | g.transform(psMat.compose(psMat.scale(0.9, 0.9), psMat.translate(-415, 29))) 219 | g.width = 512 220 | elif g.encoding <= 0x0338: 221 | g.transform(psMat.translate(0, 0)) 222 | elif g.encoding <= 0x033c: 223 | g.transform(psMat.translate(0, 138)) 224 | else: 225 | g.transform(psMat.translate(0, 0)) 226 | dejavu.selection.select(g.encoding) 227 | dejavu.copy() 228 | _f.selection.select(g.encoding) 229 | _f.paste() 230 | # 0x0370 - 0x03ff - GREEK 231 | for g in dejavu.glyphs(): 232 | if g.encoding < 0x0370 or g.encoding > 0x03ff or g.encoding == 0x0398: 233 | continue 234 | else: 235 | if len(g.references) == 0: 236 | bb = g.boundingBox() 237 | g.anchorPoints = (('Anchor-7', 'mark', 256, bb[3] + 20),) 238 | dejavu.selection.select(g.encoding) 239 | dejavu.copy() 240 | _f.selection.select(g.encoding) 241 | _f.paste() 242 | # 0x2100 - 0x214f Letterlike Symbols 243 | for g in dejavu.glyphs(): 244 | if g.encoding < 0x2100 or g.encoding > 0x214f or g.encoding == 0x2122: 245 | continue 246 | else: 247 | if len(g.references) == 0: 248 | dejavu.selection.select(g.encoding) 249 | dejavu.copy() 250 | _f.selection.select(g.encoding) 251 | _f.paste() 252 | # 0x2150 - 0x218f Number Forms 253 | for g in dejavu.glyphs(): 254 | if g.encoding < 0x2150 or g.encoding > 0x218f: 255 | continue 256 | else: 257 | if len(g.references) == 0: 258 | dejavu.selection.select(g.encoding) 259 | dejavu.copy() 260 | _f.selection.select(g.encoding) 261 | _f.paste() 262 | # 0x2190 - 0x21ff Arrows 263 | # TODO: 矢印を全角のままにしたパターンも生成したい 264 | for g in dejavu.glyphs(): 265 | if g.encoding < 0x2190 or g.encoding > 0x21ff: 266 | continue 267 | else: 268 | if len(g.references) == 0: 269 | dejavu.selection.select(g.encoding) 270 | dejavu.copy() 271 | _f.selection.select(g.encoding) 272 | _f.paste() 273 | # 0x2200 - 0x22ff Mathematical Operators 274 | for g in dejavu.glyphs(): 275 | if g.encoding < 0x2200 or g.encoding > 0x22ff: 276 | continue 277 | else: 278 | if len(g.references) == 0: 279 | dejavu.selection.select(g.encoding) 280 | dejavu.copy() 281 | _f.selection.select(g.encoding) 282 | _f.paste() 283 | # 0x2300 - 0x23ff Miscellaneous Technical 284 | for g in dejavu.glyphs(): 285 | if g.encoding < 0x2300 or g.encoding > 0x23ff: 286 | continue 287 | else: 288 | if len(g.references) == 0: 289 | dejavu.selection.select(g.encoding) 290 | dejavu.copy() 291 | _f.selection.select(g.encoding) 292 | _f.paste() 293 | dejavu.close() 294 | return _f 295 | 296 | def modify_nerd(_g): 297 | align_left = [ 298 | 0xe0b0, 0xe0b1, 0xe0b4, 0xe0b5, 0xe0b8, 0xe0b9, 0xe0bc, 299 | 0xe0bd, 0xe0c0, 0xe0c1, 0xe0c4, 0xe0c6, 0xe0c8, 0xe0cc, 0xe0cd, 300 | 0xe0d1, 0xe0d2, 301 | ] 302 | align_right = [ 303 | 0xe0b2, 0xe0b3, 0xe0b6, 0xe0b7, 0xe0b7, 0xe0ba, 0xe0bb, 0xe0be, 304 | 0xe0bf, 0xe0c2, 0xe0c3, 0xe0c5, 0xe0c7, 0xe0ca, 0xe0ce, 0xe0d4, 305 | ] 306 | # Powerline 307 | if _g.encoding >= 0xe0b0 and _g.encoding <= 0xe0d4: 308 | _g.transform(psMat.translate(0, 5)) 309 | _g.width = 1024 310 | 311 | if _g.encoding >= 0xe0b0 and _g.encoding <= 0xe0b7: 312 | _g.transform(psMat.compose(psMat.scale(1.0, 0.982), psMat.translate(0, -1))) 313 | if _g.encoding in align_right: 314 | bb = _g.boundingBox() 315 | left = 1024 - (bb[2] - bb[0]) 316 | _g.left_side_bearing = left 317 | _g.width = 1024 318 | if _g.encoding in align_left: 319 | _g.left_side_bearing = 0 320 | _g.width = 1024 321 | 322 | if _g.encoding >= 0xe0b8 and _g.encoding <= 0xe0bf: 323 | _g.transform(psMat.compose(psMat.scale(0.8, 0.982), psMat.translate(0, -1))) 324 | if _g.encoding in align_right: 325 | bb = _g.boundingBox() 326 | left = 1024 - (bb[2] - bb[0]) 327 | _g.left_side_bearing = left 328 | _g.width = 1024 329 | if _g.encoding in align_left: 330 | _g.left_side_bearing = 0 331 | _g.width = 1024 332 | 333 | if _g.encoding >= 0xe0c0 and _g.encoding <= 0xe0c3: 334 | _g.transform(psMat.scale(0.7, 1.0)) 335 | if _g.encoding in align_right: 336 | bb = _g.boundingBox() 337 | left = 1024 - (bb[2] - bb[0]) 338 | _g.left_side_bearing = left 339 | _g.width = 1024 340 | if _g.encoding in align_left: 341 | _g.left_side_bearing = 0 342 | _g.width = 1024 343 | if _g.encoding >= 0xe0c4 and _g.encoding <= 0xe0c7: 344 | if _g.encoding in align_right: 345 | bb = _g.boundingBox() 346 | left = 1024 - (bb[2] - bb[0]) 347 | _g.left_side_bearing = left 348 | _g.width = 1024 349 | if _g.encoding in align_left: 350 | _g.left_side_bearing = 0 351 | _g.width = 1024 352 | if _g.encoding == 0xe0c8 or _g.encoding == 0xe0ca: 353 | _g.transform(psMat.scale(0.7, 1.0)) 354 | if _g.encoding in align_right: 355 | bb = _g.boundingBox() 356 | left = 1024 - (bb[2] - bb[0]) 357 | _g.left_side_bearing = left 358 | _g.width = 1024 359 | if _g.encoding in align_left: 360 | _g.left_side_bearing = 0 361 | _g.width = 1024 362 | if _g.encoding == 0xe0ce: 363 | _g.transform(psMat.scale(0.8, 1.0)) 364 | bb = _g.boundingBox() 365 | left = 1024 - (bb[2] - bb[0]) 366 | _g.left_side_bearing = left 367 | _g.width = 1024 368 | if _g.encoding == 0xe0cf: 369 | _g.transform(psMat.scale(0.9, 1.0)) 370 | _g = align_to_center(_g) 371 | if _g.encoding == 0xe0d0: 372 | _g = align_to_center(_g) 373 | if _g.encoding == 0xe0d1: 374 | _g.transform(psMat.compose(psMat.scale(1.0, 0.982), psMat.translate(0, -1))) 375 | _g.left_side_bearing = 0 376 | _g.width = 1024 377 | if _g.encoding == 0xe0d2 or _g.encoding == 0xe0d4: 378 | _g.transform(psMat.compose(psMat.scale(1.0, 0.982), psMat.translate(0, -1))) 379 | if _g.encoding in align_right: 380 | bb = _g.boundingBox() 381 | left = 1024 - (bb[2] - bb[0]) 382 | _g.left_side_bearing = left 383 | _g.width = 1024 384 | if _g.encoding in align_left: 385 | _g.left_side_bearing = 0 386 | _g.width = 1024 387 | elif _g.encoding >= 0xf000 and _g.encoding <= 0xf2e0: 388 | _g.transform(psMat.compose(psMat.scale(0.75, 0.75), psMat.translate(0, 55))) 389 | _g.width = 1024 390 | _g = align_to_center(_g) 391 | else: 392 | _g.transform(psMat.translate(0, -55)) 393 | _g.width = 1024 394 | _g = align_to_center(_g) 395 | 396 | return _g 397 | 398 | 399 | def modify_iconsfordevs(_g): 400 | _g.transform(psMat.compose(psMat.scale(2), psMat.translate(0, -126))) 401 | _g.width = 1024 402 | _g = align_to_center(_g) 403 | return _g 404 | 405 | def vertical_line_to_broken_bar(_f): 406 | _f.selection.select(0x00a6) 407 | _f.copy() 408 | _f.selection.select(0x007c) 409 | _f.paste() 410 | return _f 411 | 412 | def emdash_to_broken_dash(_f): 413 | _f.selection.select(0x006c) 414 | _f.copy() 415 | _f.selection.select(0x2014) 416 | _f.pasteInto() 417 | _f.intersect() 418 | return _f 419 | 420 | def mathglyph_to_double(_f): 421 | pass 422 | 423 | def zenkaku_space(_f): 424 | _f.selection.select(0x2610) 425 | _f.copy() 426 | _f.selection.select(0x3000) 427 | _f.paste() 428 | _f.selection.select(0x271a) 429 | _f.copy() 430 | _f.selection.select(0x3000) 431 | _f.pasteInto() 432 | _f.intersect() 433 | for g in _f.selection.byGlyphs: 434 | g = align_to_center(g) 435 | return _f 436 | 437 | def zero(_f): 438 | _f.selection.select(0x4f) 439 | _f.copy() 440 | _f.selection.select(0x30) 441 | _f.paste() 442 | _f.selection.select(0xb7) 443 | _f.copy() 444 | _f.selection.select(0x30) 445 | _f.pasteInto() 446 | for g in _f.selection.byGlyphs: 447 | g = align_to_center(g) 448 | return _f 449 | 450 | def modify_WM(_f): 451 | _f.selection.select(0x57) 452 | _f.transform(psMat.scale(0.95, 1.0)) 453 | _f.copy() 454 | _f.selection.select(0x4d) 455 | _f.paste() 456 | _f.transform(psMat.compose(psMat.rotate(math.radians(180)), psMat.translate(0, 627))) 457 | for g in _f.selection.byGlyphs: 458 | g = align_to_center(g) 459 | return _f 460 | 461 | def modify_m(_f, _weight): 462 | m = fontforge.open(os.path.join(SOURCE, 'm-Regular.sfd')) 463 | if _weight == 'Bold': 464 | m.close() 465 | m = fontforge.open(os.path.join(SOURCE, 'm-Bold.sfd')) 466 | m.selection.select(0x6d) 467 | m.copy() 468 | _f.selection.select(0x6d) 469 | _f.paste() 470 | for g in m.glyphs(): 471 | if g.encoding == 0x6d: 472 | anchorPoints = g.anchorPoints 473 | for g in _f.glyphs(): 474 | if g.encoding == 0x6d: 475 | g.anchorPoints = anchorPoints 476 | 477 | return _f 478 | 479 | 480 | def add_smalltriangle(_f): 481 | _f.selection.select(0x25bc) 482 | _f.copy() 483 | _f.selection.select(0x25be) 484 | _f.paste() 485 | _f.transform(psMat.compose(psMat.scale(0.64), psMat.translate(0, 68))) 486 | _f.copy() 487 | _f.selection.select(0x25b8) 488 | _f.paste() 489 | _f.transform(psMat.rotate(math.radians(90))) 490 | _f.transform(psMat.translate(0, 212)) 491 | 492 | for g in _f.glyphs(): 493 | if g.encoding == 0x25be or g.encoding == 0x25b8: 494 | g.width = 512 495 | g = align_to_center(g) 496 | 497 | return _f 498 | 499 | def fix_box_drawings_block_elements(_f): 500 | left = [ 501 | 0x2510, 0x2518, 0x2524, 0x2555, 0x2556, 0x2557, 0x255b, 0x255c, 0x255d, 502 | 0x2561, 0x2562, 0x2563, 0x256e, 0x256f, 0x2574, 0x2578, 503 | 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 504 | 0x2596, 0x2598, 505 | 0xf2510, 0xf2518, 0xf2524, 0xf2555, 0xf2556, 0xf2557, 0xf255b, 0xf255c, 0xf255d, 506 | 0xff2561, 0xf2562, 0xf2563, 0xf256e, 0xf256f, 0xf2574, 0xf2578 507 | ] 508 | right = [ 509 | 0x250c, 0x2514, 0x251c, 0x2552, 0x2553, 0x2554, 0x2558, 0x2559, 0x255a, 510 | 0x255e, 0x255f, 0x2560, 0x256d, 0x2570, 0x2576, 0x257a, 511 | 0x2590, 0x2595, 0x2597, 0x259d, 512 | 0xf250c, 0xf2514, 0xf251c, 0xf2552, 0xf2553, 0xf2554, 0xf2558, 0xf2559, 0xf255a, 513 | 0xf255e, 0xf255f, 0xf2560, 0xf256d, 0xf2570, 0xf2576, 0xf257a 514 | ] 515 | 516 | for g in _f.glyphs(): 517 | if g.encoding < 0x2500: 518 | continue 519 | if g.encoding > 0x259f and g.encoding < 0xf2500: 520 | continue 521 | if g.encoding in left: 522 | align_to_left(g) 523 | elif g.encoding in right: 524 | align_to_right(g) 525 | 526 | return _f 527 | 528 | def reiwa(_f, _weight): 529 | reiwa = fontforge.open(os.path.join(SOURCE, 'reiwa.sfd')) 530 | if _weight == 'Bold': 531 | reiwa.close() 532 | reiwa = fontforge.open(os.path.join(SOURCE, 'reiwa-Bold.sfd')) 533 | for g in reiwa.glyphs(): 534 | if g.isWorthOutputting: 535 | reiwa.selection.select(0x00) 536 | reiwa.copy() 537 | _f.selection.select(0x32ff) 538 | _f.paste() 539 | reiwa.close() 540 | return _f 541 | 542 | def fix_overflow(glyph): 543 | """上が820を超えている、または下が-204を超えているグリフを 544 | 1024x1024の枠にはまるように修正する 545 | ※全角のグリフのみに実施する 546 | """ 547 | if glyph.width < 1024: 548 | return glyph 549 | if glyph.isWorthOutputting: 550 | bb = glyph.boundingBox() 551 | height = bb[3] - bb[1] 552 | if height > 1024: 553 | # resize 554 | scale = 1024 / height 555 | glyph.transform(psMat.scale(scale, scale)) 556 | bb = glyph.boundingBox() 557 | bottom = bb[1] 558 | top = bb[3] 559 | if bottom < -204: 560 | glyph.transform(psMat.translate(0, -204 - bottom)) 561 | elif top > 820: 562 | glyph.transform(psMat.translate(0, 820 - top)) 563 | return glyph 564 | 565 | def import_svg(font): 566 | """オリジナルのsvgグリフをインポートする 567 | """ 568 | files = glob.glob(os.path.join(SOURCE, 'svg/*.svg')) 569 | for f in files: 570 | filename, _ = os.path.splitext(os.path.basename(f)) 571 | g = font.createChar(int(filename, 16)) 572 | g.width = 1024 573 | g.vwidth = 1024 574 | g.clear() 575 | g.importOutlines(f) 576 | g.transform(psMat.translate(0, -61)) 577 | # g = fix_overflow(g) 578 | return font 579 | 580 | 581 | def build_font(_f, emoji): 582 | hack = fontforge.open(os.path.join(SOURCE, _f.get('hack'))) 583 | log('remove_glyph_from_hack()') 584 | hack = remove_glyph_from_hack(hack) 585 | cica = fontforge.open(os.path.join(SOURCE, _f.get('mgen_plus'))) 586 | nerd = fontforge.open(os.path.join(SOURCE, 'nerd.sfd')) 587 | icons_for_devs = fontforge.open(os.path.join(SOURCE, 'iconsfordevs.ttf')) 588 | 589 | 590 | log('transform Hack') 591 | for g in hack.glyphs(): 592 | g.transform((0.42,0,0,0.42,0,0)) 593 | if _f.get('hack_weight_reduce') != 0: 594 | # g.changeWeight(_f.get('hack_weight_reduce'), 'auto', 0, 0, 'auto') 595 | g.stroke("circular", _f.get('hack_weight_reduce'), 'butt', 'round', 'removeexternal') 596 | g = align_to_center(g) 597 | hack = modify_m(hack, _f.get('weight_name')) 598 | 599 | 600 | alternate_expands = [ 601 | 0x306e, 602 | ] 603 | 604 | if _f.get('mgen_weight_add') != 0: 605 | for g in cica.glyphs(): 606 | # g.changeWeight(_f.get('mgen_weight_add'), 'auto', 0, 0, 'auto') 607 | g.stroke("caligraphic", _f.get('mgen_weight_add'), _f.get('mgen_weight_add'), 45, 'removeinternal') 608 | # g.stroke("circular", _f.get('mgen_weight_add'), 'butt', 'round', 'removeinternal') 609 | 610 | 611 | ignoring_center = [ 612 | 0x3001, 0x3002, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 613 | 0x300e, 0x300f, 0x3010, 0x3011, 0x3014, 0x3015, 0x3016, 0x3017, 614 | 0x3018, 0x3019, 0x301a, 0x301b, 0x301d, 0x301e, 0x3099, 0x309a, 615 | 0x309b, 0x309c, 616 | ] 617 | log('transform Mgen+') 618 | for g in cica.glyphs(): 619 | g.transform((0.91,0,0,0.91,0,0)) 620 | full_half_threshold = 700 621 | if _f.get('italic'): 622 | g.transform(psMat.skew(0.25)) 623 | skew_amount = g.font.ascent * 0.91 * 0.25 624 | g.width = g.width + skew_amount 625 | full_half_threshold += skew_amount 626 | if g.width > full_half_threshold: 627 | width = 1024 628 | else: 629 | width = 512 630 | g.transform(psMat.translate((width - g.width)/2, 0)) 631 | g.width = width 632 | if g.encoding in ignoring_center: 633 | pass 634 | else: 635 | g = align_to_center(g) 636 | 637 | log('modify border glyphs') 638 | for g in hack.glyphs(): 639 | if g.isWorthOutputting: 640 | if _f.get('italic'): 641 | g.transform(psMat.skew(0.25)) 642 | if g.encoding >= 0x2500 and g.encoding <= 0x257f: 643 | # 全角の罫線を0xf0000以降に退避 644 | cica.selection.select(g.encoding) 645 | cica.copy() 646 | cica.selection.select(g.encoding + 0xf0000) 647 | cica.paste() 648 | if g.encoding >= 0x2500 and g.encoding <= 0x25af: 649 | g.transform(psMat.compose(psMat.scale(1.024, 1.024), psMat.translate(0, -30))) 650 | g = align_to_center(g) 651 | hack.selection.select(g.encoding) 652 | hack.copy() 653 | cica.selection.select(g.encoding) 654 | cica.paste() 655 | 656 | log('modify nerd glyphs') 657 | for g in nerd.glyphs(): 658 | if g.encoding < 0xe0a0 or g.encoding > 0xfd46: 659 | continue 660 | g = modify_nerd(g) 661 | nerd.selection.select(g.encoding) 662 | nerd.copy() 663 | if g.encoding >= 0xf500: 664 | # Material Design IconsはNerd Fontsに従うとアラビア文字等を壊して 665 | # しまうので、0xf0000〜に配置する 666 | cica.selection.select(g.encoding + 0xf0000) 667 | cica.paste() 668 | else: 669 | cica.selection.select(g.encoding) 670 | cica.paste() 671 | 672 | log('modify icons_for_devs glyphs') 673 | for g in icons_for_devs.glyphs(): 674 | if g.encoding < 0xe900 or g.encoding > 0xe950: 675 | continue 676 | g = modify_iconsfordevs(g) 677 | icons_for_devs.selection.select(g.encoding) 678 | icons_for_devs.copy() 679 | cica.selection.select(g.encoding) 680 | cica.paste() 681 | 682 | cica = fix_box_drawings_block_elements(cica) 683 | cica = zenkaku_space(cica) 684 | cica = zero(cica) 685 | cica = modify_WM(cica) 686 | cica = vertical_line_to_broken_bar(cica) 687 | cica = emdash_to_broken_dash(cica) 688 | cica = reiwa(cica, _f.get('weight_name')) 689 | cica = add_gopher(cica) 690 | cica = modify_ellipsis(cica) 691 | if emoji: 692 | cica = add_notoemoji(cica) 693 | cica = add_smalltriangle(cica) 694 | cica = add_dejavu(cica, _f) 695 | cica = resize_supersub(cica) 696 | 697 | log("fix_overflow()") 698 | for g in cica.glyphs(): 699 | g = fix_overflow(g) 700 | log("import_svg()") 701 | cica = import_svg(cica) 702 | cica.ascent = ASCENT 703 | cica.descent = DESCENT 704 | cica.upos = 45 705 | cica.fontname = _f.get('family') 706 | cica.familyname = _f.get('family') 707 | cica.fullname = _f.get('name') 708 | cica.weight = _f.get('weight_name') 709 | cica = set_os2_values(cica, _f) 710 | cica.appendSFNTName(0x411,0, COPYRIGHT) 711 | cica.appendSFNTName(0x411,1, _f.get('family')) 712 | cica.appendSFNTName(0x411,2, _f.get('style_name')) 713 | # cica.appendSFNTName(0x411,3, "") 714 | cica.appendSFNTName(0x411,4, _f.get('name')) 715 | cica.appendSFNTName(0x411,5, "Version " + VERSION) 716 | cica.appendSFNTName(0x411,6, _f.get('family') + "-" + _f.get('weight_name')) 717 | # cica.appendSFNTName(0x411,7, "") 718 | # cica.appendSFNTName(0x411,8, "") 719 | # cica.appendSFNTName(0x411,9, "") 720 | # cica.appendSFNTName(0x411,10, "") 721 | # cica.appendSFNTName(0x411,11, "") 722 | # cica.appendSFNTName(0x411,12, "") 723 | cica.appendSFNTName(0x411,13, LICENSE) 724 | # cica.appendSFNTName(0x411,14, "") 725 | # cica.appendSFNTName(0x411,15, "") 726 | cica.appendSFNTName(0x411,16, _f.get('family')) 727 | cica.appendSFNTName(0x411,17, _f.get('style_name')) 728 | cica.appendSFNTName(0x409,0, COPYRIGHT) 729 | cica.appendSFNTName(0x409,1, _f.get('family')) 730 | cica.appendSFNTName(0x409,2, _f.get('style_name')) 731 | cica.appendSFNTName(0x409,3, VERSION + ";" + _f.get('family') + "-" + _f.get('style_name')) 732 | cica.appendSFNTName(0x409,4, _f.get('name')) 733 | cica.appendSFNTName(0x409,5, "Version " + VERSION) 734 | cica.appendSFNTName(0x409,6, _f.get('name')) 735 | # cica.appendSFNTName(0x409,7, "") 736 | # cica.appendSFNTName(0x409,8, "") 737 | # cica.appendSFNTName(0x409,9, "") 738 | # cica.appendSFNTName(0x409,10, "") 739 | # cica.appendSFNTName(0x409,11, "") 740 | # cica.appendSFNTName(0x409,12, "") 741 | cica.appendSFNTName(0x409,13, LICENSE) 742 | # cica.appendSFNTName(0x409,14, "") 743 | # cica.appendSFNTName(0x409,15, "") 744 | cica.appendSFNTName(0x409,16, _f.get('family')) 745 | cica.appendSFNTName(0x409,17, _f.get('style_name')) 746 | if emoji: 747 | fontpath = './dist/%s' % _f.get('filename') 748 | else: 749 | fontpath = './dist/noemoji/%s' % _f.get('filename') 750 | 751 | cica.generate(fontpath) 752 | 753 | cica.close() 754 | hack.close() 755 | nerd.close() 756 | icons_for_devs.close() 757 | 758 | 759 | def add_notoemoji(_f): 760 | notoemoji = fontforge.open(os.path.join(SOURCE, 'NotoEmoji-Regular.ttf')) 761 | for g in notoemoji.glyphs(): 762 | if g.isWorthOutputting and g.encoding > 0x04f9: 763 | g.transform((0.42,0,0,0.42,0,0)) 764 | g = align_to_center(g) 765 | notoemoji.selection.select(g.encoding) 766 | notoemoji.copy() 767 | _f.selection.select(g.encoding) 768 | _f.paste() 769 | notoemoji.close() 770 | return _f 771 | 772 | def add_gopher(_f): 773 | gopher = fontforge.open(os.path.join(SOURCE, 'gopher.sfd')) 774 | for g in gopher.glyphs(): 775 | if g.isWorthOutputting: 776 | gopher.selection.select(0x40) 777 | gopher.copy() 778 | _f.selection.select(0xE160) 779 | _f.paste() 780 | g.transform(psMat.compose(psMat.scale(-1, 1), psMat.translate(g.width, 0))) 781 | gopher.copy() 782 | _f.selection.select(0xE161) 783 | _f.paste() 784 | gopher.close() 785 | return _f 786 | 787 | def resize_supersub(_f): 788 | superscripts = [ 789 | {"src": 0x0031, "dest": 0x00b9}, {"src": 0x0032, "dest": 0x00b2}, 790 | {"src": 0x0033, "dest": 0x00b3}, {"src": 0x0030, "dest": 0x2070}, 791 | {"src": 0x0069, "dest": 0x2071}, {"src": 0x0034, "dest": 0x2074}, 792 | {"src": 0x0037, "dest": 0x2077}, {"src": 0x0038, "dest": 0x2078}, 793 | {"src": 0x0039, "dest": 0x2079}, {"src": 0x002b, "dest": 0x207a}, 794 | {"src": 0x002d, "dest": 0x207b}, {"src": 0x003d, "dest": 0x207c}, 795 | {"src": 0x0028, "dest": 0x207d}, {"src": 0x0029, "dest": 0x207e}, 796 | {"src": 0x006e, "dest": 0x207f}, 797 | # ↓上付きの大文字 798 | {"src": 0x0041, "dest": 0x1d2c}, {"src": 0x00c6, "dest": 0x1d2d}, 799 | {"src": 0x0042, "dest": 0x1d2e}, {"src": 0x0044, "dest": 0x1d30}, 800 | {"src": 0x0045, "dest": 0x1d31}, {"src": 0x018e, "dest": 0x1d32}, 801 | {"src": 0x0047, "dest": 0x1d33}, {"src": 0x0048, "dest": 0x1d34}, 802 | {"src": 0x0049, "dest": 0x1d35}, {"src": 0x004a, "dest": 0x1d36}, 803 | {"src": 0x004b, "dest": 0x1d37}, {"src": 0x004c, "dest": 0x1d38}, 804 | {"src": 0x004d, "dest": 0x1d39}, {"src": 0x004e, "dest": 0x1d3a}, 805 | ## ↓REVERSED N なのでNを左右反転させる必要あり 806 | {"src": 0x004e, "dest": 0x1d3b, "reversed": True}, 807 | {"src": 0x004f, "dest": 0x1d3c}, {"src": 0x0222, "dest": 0x1d3d}, 808 | {"src": 0x0050, "dest": 0x1d3e}, {"src": 0x0052, "dest": 0x1d3f}, 809 | {"src": 0x0054, "dest": 0x1d40}, {"src": 0x0055, "dest": 0x1d41}, 810 | {"src": 0x0057, "dest": 0x1d42}, 811 | # ↓上付きの小文字 812 | {"src": 0x0061, "dest": 0x1d43}, {"src": 0x0250, "dest": 0x1d44}, 813 | {"src": 0x0251, "dest": 0x1d45}, {"src": 0x1d02, "dest": 0x1d46}, 814 | {"src": 0x0062, "dest": 0x1d47}, {"src": 0x0064, "dest": 0x1d48}, 815 | {"src": 0x0065, "dest": 0x1d49}, {"src": 0x0259, "dest": 0x1d4a}, 816 | {"src": 0x025b, "dest": 0x1d4b}, {"src": 0x025c, "dest": 0x1d4c}, 817 | {"src": 0x0067, "dest": 0x1d4d}, 818 | ## ↓TURNED i なので 180度回す必要あり 819 | {"src": 0x0069, "dest": 0x1d4e, "turned": True}, 820 | {"src": 0x006b, "dest": 0x1d4f}, {"src": 0x006d, "dest": 0x1d50}, 821 | {"src": 0x014b, "dest": 0x1d51}, {"src": 0x006f, "dest": 0x1d52}, 822 | {"src": 0x0254, "dest": 0x1d53}, {"src": 0x1d16, "dest": 0x1d54}, 823 | {"src": 0x1d17, "dest": 0x1d55}, {"src": 0x0070, "dest": 0x1d56}, 824 | {"src": 0x0074, "dest": 0x1d57}, {"src": 0x0075, "dest": 0x1d58}, 825 | {"src": 0x1d1d, "dest": 0x1d59}, {"src": 0x026f, "dest": 0x1d5a}, 826 | {"src": 0x0076, "dest": 0x1d5b}, {"src": 0x1d25, "dest": 0x1d5c}, 827 | {"src": 0x03b2, "dest": 0x1d5d}, {"src": 0x03b3, "dest": 0x1d5e}, 828 | {"src": 0x03b4, "dest": 0x1d5f}, {"src": 0x03c6, "dest": 0x1d60}, 829 | {"src": 0x03c7, "dest": 0x1d61}, 830 | {"src": 0x0056, "dest": 0x2c7d}, {"src": 0x0068, "dest": 0x02b0}, 831 | {"src": 0x0266, "dest": 0x02b1}, {"src": 0x006a, "dest": 0x02b2}, 832 | {"src": 0x006c, "dest": 0x02e1}, {"src": 0x0073, "dest": 0x02e2}, 833 | {"src": 0x0078, "dest": 0x02e3}, {"src": 0x0072, "dest": 0x02b3}, 834 | {"src": 0x0077, "dest": 0x02b7}, {"src": 0x0079, "dest": 0x02b8}, 835 | {"src": 0x0063, "dest": 0x1d9c}, {"src": 0x0066, "dest": 0x1da0}, 836 | {"src": 0x007a, "dest": 0x1dbb}, {"src": 0x0061, "dest": 0x00aa}, 837 | {"src": 0x0252, "dest": 0x1d9b}, {"src": 0x0255, "dest": 0x1d9d}, 838 | {"src": 0x00f0, "dest": 0x1d9e}, {"src": 0x025c, "dest": 0x1d9f}, 839 | {"src": 0x025f, "dest": 0x1da1}, {"src": 0x0261, "dest": 0x1da2}, 840 | {"src": 0x0265, "dest": 0x1da3}, {"src": 0x0268, "dest": 0x1da4}, 841 | {"src": 0x0269, "dest": 0x1da5}, {"src": 0x026a, "dest": 0x1da6}, 842 | {"src": 0x1d7b, "dest": 0x1da7}, {"src": 0x029d, "dest": 0x1da8}, 843 | {"src": 0x026d, "dest": 0x1da9}, {"src": 0x1d85, "dest": 0x1daa}, 844 | {"src": 0x029f, "dest": 0x1dab}, {"src": 0x0271, "dest": 0x1dac}, 845 | {"src": 0x0270, "dest": 0x1dad}, {"src": 0x0272, "dest": 0x1dae}, 846 | {"src": 0x0273, "dest": 0x1daf}, {"src": 0x0274, "dest": 0x1db0}, 847 | {"src": 0x0275, "dest": 0x1db1}, {"src": 0x0278, "dest": 0x1db2}, 848 | {"src": 0x0282, "dest": 0x1db3}, {"src": 0x0283, "dest": 0x1db4}, 849 | {"src": 0x01ab, "dest": 0x1db5}, {"src": 0x0289, "dest": 0x1db6}, 850 | {"src": 0x028a, "dest": 0x1db7}, {"src": 0x1d1c, "dest": 0x1db8}, 851 | {"src": 0x028b, "dest": 0x1db9}, {"src": 0x028c, "dest": 0x1dba}, 852 | {"src": 0x0290, "dest": 0x1dbc}, {"src": 0x0291, "dest": 0x1dbd}, 853 | {"src": 0x0292, "dest": 0x1dbe}, {"src": 0x03b8, "dest": 0x1dbf}, 854 | 855 | ] 856 | subscripts = [ 857 | {"src": 0x0069, "dest": 0x1d62}, {"src": 0x0072, "dest": 0x1d63}, 858 | {"src": 0x0075, "dest": 0x1d64}, {"src": 0x0076, "dest": 0x1d65}, 859 | {"src": 0x006a, "dest": 0x2c7c}, 860 | {"src": 0x0030, "dest": 0x2080}, {"src": 0x0031, "dest": 0x2081}, 861 | {"src": 0x0032, "dest": 0x2082}, {"src": 0x0033, "dest": 0x2083}, 862 | {"src": 0x0034, "dest": 0x2084}, {"src": 0x0035, "dest": 0x2085}, 863 | {"src": 0x0036, "dest": 0x2086}, {"src": 0x0037, "dest": 0x2087}, 864 | {"src": 0x0038, "dest": 0x2088}, {"src": 0x0039, "dest": 0x2089}, 865 | {"src": 0x002b, "dest": 0x208a}, {"src": 0x002d, "dest": 0x208b}, 866 | {"src": 0x003d, "dest": 0x208c}, {"src": 0x0028, "dest": 0x208d}, 867 | {"src": 0x0029, "dest": 0x208e}, {"src": 0x0061, "dest": 0x2090}, 868 | {"src": 0x0065, "dest": 0x2091}, {"src": 0x006f, "dest": 0x2092}, 869 | {"src": 0x0078, "dest": 0x2093}, {"src": 0x0259, "dest": 0x2094}, 870 | {"src": 0x0068, "dest": 0x2095}, {"src": 0x006b, "dest": 0x2096}, 871 | {"src": 0x006c, "dest": 0x2097}, {"src": 0x006d, "dest": 0x2098}, 872 | {"src": 0x006e, "dest": 0x2099}, {"src": 0x0070, "dest": 0x209a}, 873 | {"src": 0x0073, "dest": 0x209b}, {"src": 0x0074, "dest": 0x209c} 874 | ] 875 | 876 | for g in superscripts: 877 | _f.selection.select(g["src"]) 878 | _f.copy() 879 | _f.selection.select(g["dest"]) 880 | _f.paste() 881 | for g in subscripts: 882 | _f.selection.select(g["src"]) 883 | _f.copy() 884 | _f.selection.select(g["dest"]) 885 | _f.paste() 886 | 887 | for g in _f.glyphs("encoding"): 888 | if g.encoding > 0x2c7d: 889 | continue 890 | elif in_scripts(g.encoding, superscripts): 891 | if g.encoding == 0x1d5d or g.encoding == 0x1d61: 892 | g.transform(psMat.scale(0.70, 0.70)) 893 | elif g.encoding == 0x1d3b: 894 | g.transform(psMat.scale(0.75, 0.75)) 895 | g.transform(psMat.compose(psMat.scale(-1, 1), psMat.translate(g.width, 0))) 896 | elif g.encoding == 0x1d4e: 897 | g.transform(psMat.scale(0.75, 0.75)) 898 | g.transform(psMat.rotate(3.14159)) 899 | g.transform(psMat.translate(0, 512)) 900 | else: 901 | g.transform(psMat.scale(0.75, 0.75)) 902 | bb = g.boundingBox() 903 | g.transform(psMat.translate(0, 244)) 904 | align_to_center(g) 905 | elif in_scripts(g.encoding, subscripts): 906 | if g.encoding == 0x1d66 or g.encoding == 0x1d6a: 907 | g.transform(psMat.scale(0.70, 0.70)) 908 | else: 909 | g.transform(psMat.scale(0.75, 0.75)) 910 | bb = g.boundingBox() 911 | y = -144 912 | if bb[1] < -60: # DESCENT - 144 913 | y = -60 914 | g.transform(psMat.translate(0, y)) 915 | align_to_center(g) 916 | return _f 917 | 918 | def in_scripts(encoding, scripts): 919 | for s in scripts: 920 | if encoding == s["dest"]: 921 | return True 922 | return False 923 | 924 | 925 | def scripts_from(encoding, scripts): 926 | for s in scripts: 927 | if encoding == s["dest"]: 928 | return s["src"] 929 | raise ValueError 930 | 931 | def modify_ellipsis(_f): 932 | """3点リーダーを半角にする 933 | DejaVuSansMono の U+22EF(⋯) をU+2026(…)、U+22EE(⋮)、U+22F0(⋰)、U+22F1(⋱) 934 | にコピーした上で回転させて生成 935 | 936 | 三点リーダの文字幅について · Issue #41 · miiton/Cica https://github.com/miiton/Cica/issues/41 937 | """ 938 | _f.selection.select(0x22ef) 939 | _f.copy() 940 | _f.selection.select(0x2026) 941 | _f.paste() 942 | _f.selection.select(0x22ee) 943 | _f.paste() 944 | _f.selection.select(0x22f0) 945 | _f.paste() 946 | _f.selection.select(0x22f1) 947 | _f.paste() 948 | for g in _f.glyphs("encoding"): 949 | if g.encoding < 0x22ee: 950 | continue 951 | elif g.encoding > 0x22f1: 952 | break 953 | elif g.encoding == 0x22ee: 954 | bb = g.boundingBox() 955 | cx = (bb[2] + bb[0]) / 2 956 | cy = (bb[3] + bb[1]) / 2 957 | trcen = psMat.translate(-cx, -cy) 958 | rotcen = psMat.compose(trcen, psMat.compose(psMat.rotate(math.radians(90)), psMat.inverse(trcen))) 959 | g.transform(rotcen) 960 | elif g.encoding == 0x22f0: 961 | bb = g.boundingBox() 962 | cx = (bb[2] + bb[0]) / 2 963 | cy = (bb[3] + bb[1]) / 2 964 | trcen = psMat.translate(-cx, -cy) 965 | rotcen = psMat.compose(trcen, psMat.compose(psMat.rotate(math.radians(45)), psMat.inverse(trcen))) 966 | g.transform(rotcen) 967 | elif g.encoding == 0x22f1: 968 | bb = g.boundingBox() 969 | cx = (bb[2] + bb[0]) / 2 970 | cy = (bb[3] + bb[1]) / 2 971 | trcen = psMat.translate(-cx, -cy) 972 | rotcen = psMat.compose(trcen, psMat.compose(psMat.rotate(math.radians(-45)), psMat.inverse(trcen))) 973 | g.transform(rotcen) 974 | return _f 975 | 976 | 977 | 978 | def main(): 979 | check_files() 980 | for _f in fonts: 981 | log("Started: dist/" + _f["filename"]) 982 | build_font(_f, True) 983 | log("Finished: dist/" + _f["filename"]) 984 | log("") 985 | log("Started: dist/noemoji/" + _f["filename"]) 986 | build_font(_f, False) 987 | log("Finished: dist/noemoji/" + _f["filename"]) 988 | log("") 989 | 990 | 991 | if __name__ == '__main__': 992 | main() 993 | -------------------------------------------------------------------------------- /dist/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/dist/.gitkeep -------------------------------------------------------------------------------- /dist/noemoji/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/dist/noemoji/.gitkeep -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | 3 | services: 4 | cica: 5 | build: . 6 | volumes: 7 | - ./dist:/work/dist 8 | - ./cica.py:/work/cica.py 9 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | fontforge -lang=py -script cica.py 3 | -------------------------------------------------------------------------------- /export_pua.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import fontforge 4 | 5 | 6 | cica = fontforge.open('./dist/Cica-Regular.ttf') 7 | for g in cica.glyphs(): 8 | if g.isWorthOutputting and g.encoding >= 0xe0a0 and g.encoding <= 0xf4a8: 9 | print('
%s
&#%s;
' % (hex(g.unicode), g.encoding)) 10 | -------------------------------------------------------------------------------- /screenshots/cicachange.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/screenshots/cicachange.gif -------------------------------------------------------------------------------- /screenshots/gvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/screenshots/gvim.png -------------------------------------------------------------------------------- /screenshots/julia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/screenshots/julia.png -------------------------------------------------------------------------------- /screenshots/macvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/screenshots/macvim.png -------------------------------------------------------------------------------- /sourceFonts/gopher.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.0 2 | FontName: Untitled1 3 | FullName: Untitled1 4 | FamilyName: Untitled1 5 | Weight: Regular 6 | Copyright: Copyright (c) 2016, t_minami 7 | UComments: "2016-7-10: Created with FontForge (http://fontforge.org)" 8 | Version: 001.000 9 | ItalicAngle: 0 10 | UnderlinePosition: -100 11 | UnderlineWidth: 50 12 | Ascent: 800 13 | Descent: 200 14 | InvalidEm: 0 15 | LayerCount: 2 16 | Layer: 0 0 "+gMyXYgAA" 1 17 | Layer: 1 0 "+Uk2XYgAA" 0 18 | XUID: [1021 1020 87180521 13282] 19 | OS2Version: 0 20 | OS2_WeightWidthSlopeOnly: 0 21 | OS2_UseTypoMetrics: 1 22 | CreationTime: 1468125543 23 | ModificationTime: 1468128387 24 | OS2TypoAscent: 0 25 | OS2TypoAOffset: 1 26 | OS2TypoDescent: 0 27 | OS2TypoDOffset: 1 28 | OS2TypoLinegap: 0 29 | OS2WinAscent: 0 30 | OS2WinAOffset: 1 31 | OS2WinDescent: 0 32 | OS2WinDOffset: 1 33 | HheadAscent: 0 34 | HheadAOffset: 1 35 | HheadDescent: 0 36 | HheadDOffset: 1 37 | OS2Vendor: 'PfEd' 38 | DEI: 91125 39 | Encoding: ISO8859-1 40 | UnicodeInterp: none 41 | NameList: AGL For New Fonts 42 | DisplaySize: -128 43 | AntiAlias: 1 44 | FitToEm: 0 45 | WinInfo: 64 8 2 46 | BeginChars: 256 1 47 | 48 | StartChar: at 49 | Encoding: 64 64 0 50 | Width: 1000 51 | VWidth: 611 52 | Flags: HW 53 | LayerCount: 2 54 | Fore 55 | SplineSet 56 | 971.799804688 60.5478515625 m 1 57 | 971.11328125 60.5478515625 970.59765625 60.7197265625 970.254882812 61.0625 c 128 58 | 969.912109375 61.4052734375 968.709960938 61.5771484375 966.650390625 61.5771484375 c 2 59 | 966.650390625 63.6376953125 l 2 60 | 966.650390625 64.32421875 966.134765625 64.66796875 965.10546875 64.66796875 c 0 61 | 964.76171875 64.66796875 964.58984375 65.0107421875 964.58984375 65.697265625 c 2 62 | 962.530273438 65.697265625 l 1 63 | 962.014648438 66.7275390625 l 0 64 | 961.5 67.7578125 l 1 65 | 958.41015625 68.787109375 l 2 66 | 956.865234375 69.302734375 l 0 67 | 956.349609375 69.8173828125 l 1 68 | 954.290039062 70.84765625 l 2 69 | 953.259765625 70.84765625 953.259765625 70.84765625 952.745117188 70.84765625 c 0 70 | 952.23046875 70.84765625 l 257 71 | 951.71484375 71.8779296875 l 0 72 | 951.200195312 72.9072265625 l 1 73 | 947.080078125 73.9375 l 1 74 | 946.049804688 73.9375 l 0 75 | 945.36328125 73.9375 945.01953125 74.2802734375 945.01953125 74.9677734375 c 2 76 | 940.900390625 77.02734375 l 1 77 | 939.870117188 77.02734375 l 1 78 | 935.75 77.02734375 l 1 79 | 934.719726562 77.02734375 l 2 80 | 934.033203125 77.02734375 933.346679688 77.19921875 932.66015625 77.54296875 c 128 81 | 931.97265625 77.8857421875 931.287109375 78.0576171875 930.599609375 78.0576171875 c 2 82 | 906.91015625 78.0576171875 l 1 83 | 904.849609375 113.764648438 903.8203125 149.470703125 903.8203125 185.177734375 c 128 84 | 903.8203125 220.884765625 903.3046875 256.590820312 902.275390625 292.297851562 c 128 85 | 901.245117188 328.004882812 899.012695312 363.5390625 895.580078125 398.90234375 c 128 86 | 892.147460938 434.265625 885.623046875 468.770507812 876.009765625 502.41796875 c 1 87 | 945.36328125 527.137695312 962.702148438 569.7109375 928.025390625 630.137695312 c 128 88 | 893.34765625 690.564453125 846.139648438 699.490234375 786.400390625 656.91796875 c 1 89 | 746.573242188 691.250976562 700.39453125 713.739257812 647.865234375 724.3828125 c 128 90 | 595.334960938 735.025390625 540.573242188 740.34765625 483.580078125 740.34765625 c 1 91 | 427.2734375 736.227539062 373.712890625 727.47265625 322.900390625 714.08203125 c 128 92 | 272.086914062 700.692382812 227.796875 679.234375 190.030273438 649.70703125 c 1 93 | 174.922851562 657.947265625 160.16015625 662.92578125 145.740234375 664.642578125 c 128 94 | 131.3203125 666.359375 117.586914062 665.500976562 104.540039062 662.067382812 c 1 95 | 104.540039062 660.0078125 l 1 96 | 102.995117188 659.4921875 l 0 97 | 101.96484375 659.149414062 101.107421875 658.977539062 100.419921875 658.977539062 c 2 98 | 98.875 658.462890625 l 0 99 | 97.8447265625 658.119140625 96.9873046875 657.604492188 96.2998046875 656.91796875 c 2 100 | 95.26953125 656.91796875 l 1 101 | 93.724609375 655.887695312 l 0 102 | 92.6953125 655.200195312 91.8369140625 654.857421875 91.150390625 654.857421875 c 2 103 | 90.1201171875 654.857421875 l 1 104 | 87.0302734375 652.797851562 l 1 105 | 86 652.797851562 l 1 106 | 82.91015625 649.70703125 l 1 107 | 81.8798828125 649.70703125 l 1 108 | 77.759765625 648.677734375 l 1 109 | 77.759765625 648.677734375 l 1 110 | 77.759765625 646.6171875 l 2 111 | 73.6396484375 644.557617188 l 1 112 | 73.125 644.557617188 l 0 113 | 72.6103515625 644.557617188 l 1 114 | 69.51953125 641.467773438 l 1 115 | 69.0048828125 641.467773438 l 0 116 | 68.662109375 641.467773438 68.490234375 641.124023438 68.490234375 640.4375 c 2 117 | 65.400390625 639.407226562 l 1 118 | 64.3701171875 637.34765625 l 2 119 | 63.6826171875 636.66015625 62.9970703125 636.317382812 62.3095703125 636.317382812 c 0 120 | 61.2802734375 635.287109375 l 2 121 | 57.16015625 631.16796875 l 2 122 | 57.16015625 630.48046875 56.98828125 629.794921875 56.64453125 629.107421875 c 0 123 | 56.1298828125 628.077148438 l 1 124 | 55.099609375 628.077148438 l 2 125 | 54.4130859375 628.077148438 54.0703125 627.5625 54.0703125 626.532226562 c 0 126 | 54.0703125 626.189453125 53.3828125 626.017578125 52.009765625 626.017578125 c 2 127 | 50.98046875 623.95703125 l 1 128 | 50.46484375 623.442382812 l 0 129 | 49.9501953125 622.927734375 l 1 130 | 47.8896484375 621.897460938 l 2 131 | 47.203125 621.897460938 46.8603515625 621.0390625 46.8603515625 619.322265625 c 0 132 | 46.8603515625 618.979492188 46.5166015625 618.807617188 45.830078125 618.807617188 c 2 133 | 45.830078125 617.77734375 l 2 134 | 44.45703125 617.77734375 43.76953125 617.60546875 43.76953125 617.262695312 c 128 135 | 43.76953125 616.919921875 43.4267578125 616.747070312 42.740234375 616.747070312 c 2 136 | 41.7099609375 614.6875 l 1 137 | 40.6796875 612.627929688 l 1 138 | 40.6796875 611.59765625 l 0 139 | 40.6796875 610.567382812 l 1 140 | 38.6201171875 606.447265625 l 1 141 | 38.6201171875 606.447265625 l 1 142 | 37.58984375 606.447265625 l 2 143 | 36.5595703125 603.357421875 l 1 144 | 36.5595703125 602.327148438 l 0 145 | 36.5595703125 601.640625 35.873046875 601.297851562 34.5 601.297851562 c 2 146 | 34.5 599.237304688 l 1 147 | 33.9853515625 598.20703125 l 0 148 | 33.4697265625 597.177734375 l 2 149 | 35.5302734375 595.8046875 36.732421875 594.774414062 37.0751953125 594.087890625 c 0 150 | 37.58984375 593.057617188 l 1 151 | 37.58984375 592.02734375 l 1 152 | 36.5595703125 589.967773438 l 1 153 | 36.5595703125 587.907226562 l 2 154 | 36.5595703125 586.877929688 36.5595703125 586.877929688 36.5595703125 586.362304688 c 128 155 | 36.5595703125 586.01953125 35.873046875 585.84765625 34.5 585.84765625 c 2 156 | 34.5 551.857421875 l 2 157 | 34.5 551.170898438 34.8427734375 550.655273438 35.5302734375 550.3125 c 128 158 | 36.216796875 549.969726562 36.5595703125 549.110351562 36.5595703125 547.737304688 c 1 159 | 36.5595703125 547.737304688 l 1 160 | 37.58984375 543.6171875 l 1 161 | 37.58984375 542.587890625 l 1 162 | 38.6201171875 539.497070312 l 1 163 | 38.6201171875 538.982421875 l 0 164 | 38.6201171875 538.639648438 39.306640625 538.467773438 40.6796875 538.467773438 c 2 165 | 40.6796875 536.407226562 l 1 166 | 41.1953125 535.377929688 l 0 167 | 41.7099609375 534.34765625 l 1 168 | 42.740234375 532.287109375 l 1 169 | 42.740234375 531.2578125 l 0 170 | 42.740234375 530.5703125 43.0830078125 530.227539062 43.76953125 530.227539062 c 2 171 | 45.830078125 526.107421875 l 1 172 | 46.3447265625 526.107421875 l 0 173 | 46.8603515625 526.107421875 l 1 174 | 49.9501953125 523.017578125 l 1 175 | 49.9501953125 521.987304688 l 0 176 | 49.9501953125 521.30078125 50.29296875 520.95703125 50.98046875 520.95703125 c 2 177 | 52.009765625 518.897460938 l 1 178 | 60.25 510.657226562 l 1 179 | 61.2802734375 510.657226562 l 1 180 | 66.7734375 505.850585938 72.6103515625 501.559570312 78.7900390625 497.782226562 c 128 181 | 84.9697265625 494.005859375 93.552734375 490.744140625 104.540039062 487.997070312 c 1 182 | 104.540039062 489.02734375 l 1 183 | 81.193359375 422.420898438 73.9833984375 354.955078125 82.91015625 286.6328125 c 128 184 | 91.8369140625 218.309570312 97.330078125 149.127929688 99.3896484375 79.087890625 c 1 185 | 95.95703125 79.087890625 93.2099609375 78.400390625 91.150390625 77.02734375 c 0 186 | 87.716796875 74.9677734375 84.283203125 73.9375 80.849609375 73.9375 c 2 187 | 74.669921875 73.9375 l 2 188 | 73.6396484375 73.9375 73.6396484375 73.9375 72.0947265625 73.9375 c 128 189 | 71.0654296875 73.9375 70.20703125 73.5947265625 69.51953125 72.9072265625 c 0 190 | 68.490234375 72.9072265625 68.490234375 72.9072265625 66.9453125 72.9072265625 c 128 191 | 65.9150390625 72.9072265625 65.400390625 72.220703125 65.400390625 70.84765625 c 2 192 | 61.2802734375 70.84765625 l 1 193 | 60.25 70.84765625 l 1 194 | 56.1298828125 69.8173828125 l 1 195 | 55.099609375 69.8173828125 l 1 196 | 50.98046875 68.787109375 l 1 197 | 50.98046875 68.787109375 l 1 198 | 46.8603515625 67.7578125 l 1 199 | 46.3447265625 67.7578125 l 0 200 | 46.001953125 67.7578125 45.830078125 67.0703125 45.830078125 65.697265625 c 2 201 | 42.740234375 65.697265625 l 1 202 | 40.6796875 64.66796875 l 1 203 | 39.650390625 64.15234375 l 0 204 | 38.6201171875 63.6376953125 l 1 205 | 34.5 60.5478515625 l 2 206 | 33.4697265625 60.5478515625 33.4697265625 60.5478515625 32.955078125 60.5478515625 c 0 207 | 32.4404296875 60.5478515625 l 1 208 | 29.349609375 59.517578125 l 1 209 | 25.23046875 55.3974609375 l 1 210 | 24.2001953125 54.8828125 l 0 211 | 23.169921875 54.3671875 l 1 212 | 16.990234375 48.1875 l 2 213 | 16.302734375 47.5009765625 15.6171875 46.470703125 14.9296875 45.09765625 c 0 214 | 13.900390625 43.037109375 l 1 215 | 10.8095703125 38.91796875 l 1 216 | 7.7197265625 33.767578125 l 1 217 | 6.6904296875 29.6474609375 l 1 218 | 6.6904296875 27.587890625 l 2 219 | 6.6904296875 24.8408203125 7.376953125 22.265625 8.75 19.8623046875 c 128 220 | 10.123046875 17.4599609375 12.52734375 15.5703125 15.9599609375 14.197265625 c 1 221 | 16.6474609375 -5.7158203125 24.71484375 -13.6123046875 40.1650390625 -9.4921875 c 0 222 | 59.0478515625 -4.685546875 71.2373046875 0.46484375 76.73046875 5.95703125 c 2 223 | 77.759765625 6.9873046875 l 2 224 | 78.447265625 7.6748046875 79.4765625 8.3603515625 80.849609375 9.0478515625 c 0 225 | 82.91015625 10.0771484375 l 1 226 | 83.9404296875 10.0771484375 l 1 227 | 87.0302734375 11.107421875 l 1 228 | 87.544921875 11.107421875 l 0 229 | 87.8876953125 11.107421875 88.0595703125 11.4501953125 88.0595703125 12.1376953125 c 1 230 | 90.1201171875 12.1376953125 91.6650390625 12.48046875 92.6953125 13.16796875 c 0 231 | 94.240234375 14.197265625 l 2 232 | 94.9267578125 14.197265625 95.26953125 14.369140625 95.26953125 14.712890625 c 128 233 | 95.26953125 15.2275390625 95.26953125 15.2275390625 95.26953125 16.2578125 c 2 234 | 96.2998046875 17.287109375 l 2 235 | 96.2998046875 17.974609375 96.9873046875 19.6904296875 98.3603515625 22.4375 c 0 236 | 99.046875 24.4970703125 99.3896484375 26.900390625 99.3896484375 29.6474609375 c 2 237 | 99.3896484375 44.0673828125 l 1 238 | 99.3896484375 24.4970703125 l 2 239 | 96.642578125 3.8974609375 94.068359375 -16.8740234375 91.6650390625 -37.8173828125 c 1 240 | 919.26953125 -38.84765625 l 1 241 | 917.209960938 -16.5302734375 915.150390625 5.95703125 913.08984375 28.6171875 c 1 242 | 914.120117188 28.6171875 l 2 243 | 915.150390625 28.6171875 915.150390625 28.6171875 916.6953125 28.6171875 c 0 244 | 917.209960938 28.6171875 l 1 245 | 920.299804688 28.6171875 l 1 246 | 920.815429688 28.1025390625 l 0 247 | 921.330078125 27.587890625 l 1 248 | 922.360351562 27.587890625 l 1 249 | 923.389648438 27.587890625 l 0 250 | 924.077148438 27.587890625 924.419921875 26.900390625 924.419921875 25.52734375 c 2 251 | 925.450195312 24.4970703125 l 2 252 | 930.943359375 19.0048828125 942.959960938 13.8544921875 961.5 9.0478515625 c 0 253 | 976.607421875 4.927734375 984.502929688 13.16796875 985.190429688 33.767578125 c 1 254 | 994.1171875 30.3349609375 995.490234375 32.9091796875 989.309570312 41.4921875 c 128 255 | 983.129882812 50.0751953125 977.29296875 56.427734375 971.799804688 60.5478515625 c 1 256 | 971.799804688 60.5478515625 l 1 257 | 198.26953125 507.567382812 m 1 258 | 189.342773438 550.827148438 196.897460938 584.817382812 220.9296875 609.537109375 c 128 259 | 244.962890625 634.2578125 273.459960938 648.677734375 306.419921875 652.797851562 c 128 260 | 339.379882812 656.91796875 370.623046875 650.22265625 400.150390625 632.712890625 c 128 261 | 429.676757812 615.202148438 445.469726562 585.504882812 447.530273438 543.6171875 c 0 262 | 450.27734375 509.284179688 440.4921875 481.645507812 418.174804688 460.702148438 c 128 263 | 395.858398438 439.759765625 369.764648438 427.055664062 339.89453125 422.592773438 c 128 264 | 310.025390625 418.129882812 281.184570312 422.592773438 253.375 435.982421875 c 128 265 | 225.565429688 449.372070312 207.197265625 473.234375 198.26953125 507.567382812 c 1 266 | 198.26953125 507.567382812 l 1 267 | 585.549804688 346.887695312 m 1 268 | 577.997070312 340.020507812 570.443359375 336.415039062 562.889648438 336.072265625 c 128 269 | 555.336914062 335.729492188 548.126953125 336.587890625 541.259765625 338.647460938 c 1 270 | 541.259765625 329.034179688 541.947265625 318.905273438 543.3203125 308.262695312 c 128 271 | 544.693359375 297.619140625 544.349609375 286.8046875 542.290039062 275.817382812 c 0 272 | 539.54296875 271.697265625 535.766601562 268.779296875 530.959960938 267.0625 c 128 273 | 526.153320312 265.345703125 521.346679688 263.45703125 516.540039062 261.397460938 c 0 274 | 510.360351562 262.084960938 505.038085938 264.315429688 500.575195312 268.092773438 c 128 275 | 496.112304688 271.869140625 492.506835938 276.84765625 489.759765625 283.02734375 c 1 276 | 487.700195312 284.057617188 l 1 277 | 467.099609375 256.590820312 451.134765625 253.329101562 439.8046875 274.272460938 c 128 278 | 428.474609375 295.215820312 425.556640625 316.330078125 431.049804688 337.6171875 c 1 279 | 424.870117188 336.930664062 419.033203125 337.6171875 413.540039062 339.677734375 c 128 280 | 408.046875 341.737304688 403.240234375 346.544921875 399.120117188 354.09765625 c 0 281 | 392.252929688 367.14453125 392.940429688 380.877929688 401.1796875 395.297851562 c 128 282 | 409.419921875 409.717773438 421.092773438 418.30078125 436.200195312 421.047851562 c 1 283 | 440.3203125 404.567382812 457.487304688 397.014648438 487.700195312 398.387695312 c 128 284 | 517.913085938 399.760742188 536.453125 408.000976562 543.3203125 423.107421875 c 1 285 | 560.487304688 415.5546875 575.25 404.739257812 587.610351562 390.662109375 c 128 286 | 599.969726562 376.5859375 599.283203125 361.994140625 585.549804688 346.887695312 c 1 287 | 585.549804688 346.887695312 l 1 288 | 510.360351562 534.34765625 m 1 289 | 507.61328125 571.427734375 517.5703125 601.297851562 540.23046875 623.95703125 c 128 290 | 562.889648438 646.6171875 589.155273438 660.522460938 619.025390625 665.672851562 c 128 291 | 648.89453125 670.822265625 677.907226562 666.530273438 706.059570312 652.797851562 c 128 292 | 734.212890625 639.064453125 752.41015625 614.000976562 760.650390625 577.607421875 c 0 293 | 769.577148438 537.094726562 762.881835938 504.649414062 740.565429688 480.272460938 c 128 294 | 718.248046875 455.895507812 691.296875 440.9609375 659.709960938 435.467773438 c 128 295 | 628.123046875 429.974609375 597.051757812 435.124023438 566.495117188 450.91796875 c 128 296 | 535.938476562 466.7109375 517.2265625 494.520507812 510.360351562 534.34765625 c 1 297 | 510.360351562 534.34765625 l 1 298 | 260.0703125 572.45703125 m 1 299 | 249.083007812 572.45703125 239.985351562 568.337890625 232.775390625 560.09765625 c 128 300 | 225.565429688 551.857421875 221.959960938 542.587890625 221.959960938 532.287109375 c 0 301 | 221.959960938 520.614257812 225.565429688 510.657226562 232.775390625 502.41796875 c 128 302 | 239.985351562 494.177734375 249.083007812 490.057617188 260.0703125 490.057617188 c 0 303 | 269.682617188 490.057617188 278.266601562 494.177734375 285.8203125 502.41796875 c 128 304 | 293.373046875 510.657226562 297.150390625 520.614257812 297.150390625 532.287109375 c 0 305 | 297.150390625 542.587890625 293.544921875 551.857421875 286.334960938 560.09765625 c 128 306 | 279.125 568.337890625 270.370117188 572.45703125 260.0703125 572.45703125 c 1 307 | 260.0703125 572.45703125 l 1 308 | 275.51953125 510.657226562 m 1 309 | 272.7734375 510.657226562 270.884765625 511.6875 269.85546875 513.747070312 c 128 310 | 268.825195312 515.807617188 268.309570312 518.2109375 268.309570312 520.95703125 c 256 311 | 268.309570312 523.704101562 269.16796875 526.279296875 270.884765625 528.682617188 c 128 312 | 272.6015625 531.0859375 274.147460938 532.287109375 275.51953125 532.287109375 c 0 313 | 278.266601562 532.287109375 280.498046875 531.2578125 282.21484375 529.197265625 c 128 314 | 283.931640625 527.137695312 284.790039062 524.390625 284.790039062 520.95703125 c 0 315 | 284.790039062 518.2109375 283.931640625 515.807617188 282.21484375 513.747070312 c 128 316 | 280.498046875 511.6875 278.266601562 510.657226562 275.51953125 510.657226562 c 1 317 | 275.51953125 510.657226562 l 1 318 | 574.219726562 581.727539062 m 1 319 | 563.919921875 581.727539062 555.336914062 577.607421875 548.469726562 569.3671875 c 128 320 | 541.602539062 561.127929688 538.169921875 551.857421875 538.169921875 541.557617188 c 0 321 | 538.169921875 529.884765625 541.602539062 519.927734375 548.469726562 511.6875 c 128 322 | 555.336914062 503.447265625 563.919921875 499.327148438 574.219726562 499.327148438 c 256 323 | 584.51953125 499.327148438 593.102539062 503.447265625 599.969726562 511.6875 c 128 324 | 606.836914062 519.927734375 610.26953125 529.884765625 610.26953125 541.557617188 c 0 325 | 610.26953125 551.857421875 606.836914062 561.127929688 599.969726562 569.3671875 c 128 326 | 593.102539062 577.607421875 584.51953125 581.727539062 574.219726562 581.727539062 c 1 327 | 574.219726562 581.727539062 l 1 328 | 591.73046875 520.95703125 m 1 329 | 588.983398438 520.95703125 586.751953125 522.159179688 585.03515625 524.5625 c 128 330 | 583.318359375 526.965820312 582.459960938 529.540039062 582.459960938 532.287109375 c 256 331 | 582.459960938 535.034179688 583.318359375 537.4375 585.03515625 539.497070312 c 128 332 | 586.751953125 541.557617188 588.983398438 542.587890625 591.73046875 542.587890625 c 0 333 | 593.790039062 542.587890625 595.677734375 541.729492188 597.39453125 540.012695312 c 128 334 | 599.112304688 538.295898438 599.969726562 535.720703125 599.969726562 532.287109375 c 0 335 | 599.969726562 529.540039062 599.112304688 526.965820312 597.39453125 524.5625 c 128 336 | 595.677734375 522.159179688 593.790039062 520.95703125 591.73046875 520.95703125 c 1 337 | 591.73046875 520.95703125 l 1 338 | EndSplineSet 339 | EndChar 340 | EndChars 341 | EndSplineFont 342 | -------------------------------------------------------------------------------- /sourceFonts/m-Bold.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.0 2 | FontName: CicaDev-Regular 3 | FullName: CicaDev-Regular 4 | FamilyName: CicaDev 5 | Weight: Book 6 | Copyright: Copyright (c) 2018, Takahiro Minami (https://tmnm.tech)\n\nSource Font Softwares are licensed and copyrighted under the\n- Ubuntu Font Licence, Version 1.0\n - Ubuntu Mono : http://font.ubuntu.com/\n- CC BY 4.0\n - Seti-UI + Custom : https://github.com/jesseweed/seti-ui\n- MIT Licenses\n - DevIcons : https://github.com/vorillaz/devicons\n - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols\n - Font Awesome : https://github.com/FortAwesome/Font-Awesome\n - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension\n - Octicons : https://github.com/primer/octicons\n - IEC Power Symbols : https://unicodepowersymbol.com/\n - Powerline Symbols : https://github.com/powerline/powerline\n- Apache License 2.0\n - Noto Emoji : https://github.com/googlei18n/noto-emoji\n- SIL Open Font License, Version 1.1\n - Rounded Mgen+ : http://jikasei.me/font/rounded-mgenplus/\n- Free license\n - DejaVu Sans Mono : https://dejavu-fonts.github.io/\n 7 | Version: 4.0.0 8 | ItalicAngle: 0 9 | UnderlinePosition: -6 10 | UnderlineWidth: 51 11 | Ascent: 819 12 | Descent: 205 13 | InvalidEm: 0 14 | sfntRevision: 0x00010f1a 15 | LayerCount: 2 16 | Layer: 0 1 "Back" 1 17 | Layer: 1 1 "Fore" 0 18 | HasVMetrics: 1 19 | XUID: [1021 842 -796345161 12618039] 20 | StyleMap: 0x0040 21 | FSType: 0 22 | OS2Version: 1 23 | OS2_WeightWidthSlopeOnly: 0 24 | OS2_UseTypoMetrics: 0 25 | CreationTime: 1433194288 26 | ModificationTime: 1536990248 27 | PfmFamily: 17 28 | TTFWeight: 400 29 | TTFWidth: 5 30 | LineGap: 0 31 | VLineGap: 0 32 | Panose: 2 11 4 9 2 2 3 2 2 7 33 | OS2TypoAscent: 670 34 | OS2TypoAOffset: 0 35 | OS2TypoDescent: -104 36 | OS2TypoDOffset: 0 37 | OS2TypoLinegap: 0 38 | OS2WinAscent: 820 39 | OS2WinAOffset: 0 40 | OS2WinDescent: 204 41 | OS2WinDOffset: 0 42 | HheadAscent: 862 43 | HheadAOffset: 0 44 | HheadDescent: -199 45 | HheadDOffset: 0 46 | OS2SubXSize: 666 47 | OS2SubYSize: 716 48 | OS2SubXOff: 0 49 | OS2SubYOff: 143 50 | OS2SupXSize: 666 51 | OS2SupYSize: 716 52 | OS2SupXOff: 0 53 | OS2SupYOff: 490 54 | OS2StrikeYSize: 50 55 | OS2StrikeYPos: 264 56 | OS2FamilyClass: 2057 57 | OS2Vendor: 'TMNM' 58 | OS2CodePages: 4012019f.dfd70000 59 | OS2UnicodeRanges: e00002ff.6a47fdeb.00000012.00000000 60 | Lookup: 1 0 0 "'vert' Vertical Alternates (obs) lookup 0" { "'vert' Vertical Alternates (obs) lookup 0 subtable" } ['vert' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 61 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 1" { "'aalt' Access All Alternates lookup 1 subtable" } ['aalt' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 62 | Lookup: 1 0 0 "'jp90' JIS90 Forms lookup 2" { "'jp90' JIS90 Forms lookup 2 subtable" } ['jp90' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 63 | Lookup: 4 0 1 "'liga' Standard Ligatures in Hiragana & Katakana lookup 3" { "'liga' Standard Ligatures in Hiragana & Katakana lookup 3 subtable" } ['ccmp' ('DFLT' <'dflt' > 'kana' <'JAN ' 'dflt' > ) 'liga' ('DFLT' <'dflt' > 'kana' <'JAN ' 'dflt' > ) ] 64 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 4" { "'ccmp' Glyph Composition/Decomposition lookup 4 subtable" } ['ccmp' ('hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 65 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 5" { "'ccmp' Glyph Composition/Decomposition lookup 5 subtable" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 66 | Lookup: 1 0 0 "Single Substitution lookup 6" { "Single Substitution lookup 6 subtable" } [] 67 | Lookup: 6 0 0 "'ccmp' Glyph Composition/Decomposition lookup 7" { "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 0" "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 1" "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 2" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 68 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 8" { "'aalt' Access All Alternates lookup 8 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 69 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 9" { "'ccmp' Glyph Composition/Decomposition lookup 9 subtable" } ['ccmp' ('hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 70 | Lookup: 6 0 0 "'ccmp' Glyph Composition/Decomposition lookup 10" { "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 0" "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 1" "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 2" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 71 | Lookup: 1 0 0 "'vrt2' Vertical Rotation & Alternates lookup 11" { "'vrt2' Vertical Rotation & Alternates lookup 11 subtable" ("vert") } ['vrt2' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 72 | Lookup: 3 0 0 "'aalt' Access All Alternates lookup 12" { "'aalt' Access All Alternates lookup 12 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 73 | Lookup: 262 1 0 "'mkmk' Mark to Mark in Arabic lookup 0" { "'mkmk' Mark to Mark in Arabic lookup 0 subtable" } ['mkmk' ('arab' <'dflt' > ) ] 74 | Lookup: 262 1 0 "'mkmk' Mark to Mark in Arabic lookup 1" { "'mkmk' Mark to Mark in Arabic lookup 1 subtable" } ['mkmk' ('arab' <'dflt' > ) ] 75 | Lookup: 261 1 0 "'mark' Mark Positioning in Arabic lookup 2" { "'mark' Mark Positioning in Arabic lookup 2 subtable" } ['mark' ('arab' <'dflt' > ) ] 76 | Lookup: 260 1 0 "'mark' Mark Positioning in Arabic lookup 3" { "'mark' Mark Positioning in Arabic lookup 3 subtable" } ['mark' ('arab' <'dflt' > ) ] 77 | Lookup: 261 1 0 "'mark' Mark Positioning in Arabic lookup 4" { "'mark' Mark Positioning in Arabic lookup 4 subtable" } ['mark' ('arab' <'dflt' > ) ] 78 | Lookup: 260 1 0 "'mark' Mark Positioning in Arabic lookup 5" { "'mark' Mark Positioning in Arabic lookup 5 subtable" } ['mark' ('arab' <'dflt' > ) ] 79 | Lookup: 260 0 0 "'mark' Mark Positioning lookup 6" { "'mark' Mark Positioning lookup 6 anchor 0" "'mark' Mark Positioning lookup 6 anchor 1" } ['mark' ('cyrl' <'SRB ' 'dflt' > 'grek' <'dflt' > 'latn' <'ISM ' 'KSM ' 'LSM ' 'MOL ' 'NSM ' 'ROM ' 'SKS ' 'SSM ' 'dflt' > ) ] 80 | Lookup: 257 0 0 "'mark' Mark Positioning lookup 7" { "'mark' Mark Positioning lookup 7 subtable" } ['mark' ('cyrl' <'SRB ' 'dflt' > 'grek' <'dflt' > 'latn' <'ISM ' 'KSM ' 'LSM ' 'MOL ' 'NSM ' 'ROM ' 'SKS ' 'SSM ' 'dflt' > ) ] 81 | Lookup: 260 0 0 "'mark' Mark Positioning in Lao lookup 8" { "'mark' Mark Positioning in Lao lookup 8 subtable" } ['mark' ('lao ' <'dflt' > ) ] 82 | Lookup: 257 8 0 "'rtbd' Right Bounds in Lao lookup 9" { "'rtbd' Right Bounds in Lao lookup 9 subtable" } ['rtbd' ('lao ' <'dflt' > ) ] 83 | DEI: 91125 84 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 2" 0 0 0 1 85 | 1 0 3 86 | Coverage: 15 uni0456 uni0458 87 | FCoverage: 0 88 | FCoverage: 0 89 | FCoverage: 0 90 | 0 91 | EndFPST 92 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 1" 0 0 0 1 93 | 1 0 2 94 | Coverage: 15 uni0456 uni0458 95 | FCoverage: 0 96 | FCoverage: 0 97 | 0 98 | EndFPST 99 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 0" 0 0 0 1 100 | 1 0 1 101 | Coverage: 15 uni0456 uni0458 102 | FCoverage: 0 103 | 0 104 | EndFPST 105 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 2" 0 0 0 1 106 | 1 0 3 107 | Coverage: 19 i j uni0456 uni0458 108 | FCoverage: 0 109 | FCoverage: 0 110 | FCoverage: 0 111 | 1 112 | SeqLookup: 0 "Single Substitution lookup 6" 113 | EndFPST 114 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 1" 0 0 0 1 115 | 1 0 2 116 | Coverage: 19 i j uni0456 uni0458 117 | FCoverage: 0 118 | FCoverage: 0 119 | 1 120 | SeqLookup: 0 "Single Substitution lookup 6" 121 | EndFPST 122 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 0" 0 0 0 1 123 | 1 0 1 124 | Coverage: 19 i j uni0456 uni0458 125 | FCoverage: 0 126 | 1 127 | SeqLookup: 0 "Single Substitution lookup 6" 128 | EndFPST 129 | TtTable: prep 130 | PUSHW_1 131 | 511 132 | SCANCTRL 133 | PUSHB_1 134 | 1 135 | SCANTYPE 136 | SVTCA[y-axis] 137 | MPPEM 138 | PUSHB_1 139 | 8 140 | LT 141 | IF 142 | PUSHB_2 143 | 1 144 | 1 145 | INSTCTRL 146 | EIF 147 | PUSHB_2 148 | 70 149 | 6 150 | CALL 151 | IF 152 | POP 153 | PUSHB_1 154 | 16 155 | EIF 156 | MPPEM 157 | PUSHB_1 158 | 20 159 | GT 160 | IF 161 | POP 162 | PUSHB_1 163 | 128 164 | EIF 165 | SCVTCI 166 | PUSHB_1 167 | 6 168 | CALL 169 | NOT 170 | IF 171 | EIF 172 | PUSHB_1 173 | 20 174 | CALL 175 | EndTTInstrs 176 | TtTable: fpgm 177 | PUSHB_1 178 | 0 179 | FDEF 180 | PUSHB_1 181 | 0 182 | SZP0 183 | MPPEM 184 | PUSHB_1 185 | 42 186 | LT 187 | IF 188 | PUSHB_1 189 | 74 190 | SROUND 191 | EIF 192 | PUSHB_1 193 | 0 194 | SWAP 195 | MIAP[rnd] 196 | RTG 197 | PUSHB_1 198 | 6 199 | CALL 200 | IF 201 | RTDG 202 | EIF 203 | MPPEM 204 | PUSHB_1 205 | 42 206 | LT 207 | IF 208 | RDTG 209 | EIF 210 | DUP 211 | MDRP[rp0,rnd,grey] 212 | PUSHB_1 213 | 1 214 | SZP0 215 | MDAP[no-rnd] 216 | RTG 217 | ENDF 218 | PUSHB_1 219 | 1 220 | FDEF 221 | DUP 222 | MDRP[rp0,min,white] 223 | PUSHB_1 224 | 12 225 | CALL 226 | ENDF 227 | PUSHB_1 228 | 2 229 | FDEF 230 | MPPEM 231 | GT 232 | IF 233 | RCVT 234 | SWAP 235 | EIF 236 | POP 237 | ENDF 238 | PUSHB_1 239 | 3 240 | FDEF 241 | ROUND[Black] 242 | RTG 243 | DUP 244 | PUSHB_1 245 | 64 246 | LT 247 | IF 248 | POP 249 | PUSHB_1 250 | 64 251 | EIF 252 | ENDF 253 | PUSHB_1 254 | 4 255 | FDEF 256 | PUSHB_1 257 | 6 258 | CALL 259 | IF 260 | POP 261 | SWAP 262 | POP 263 | ROFF 264 | IF 265 | MDRP[rp0,min,rnd,black] 266 | ELSE 267 | MDRP[min,rnd,black] 268 | EIF 269 | ELSE 270 | MPPEM 271 | GT 272 | IF 273 | IF 274 | MIRP[rp0,min,rnd,black] 275 | ELSE 276 | MIRP[min,rnd,black] 277 | EIF 278 | ELSE 279 | SWAP 280 | POP 281 | PUSHB_1 282 | 5 283 | CALL 284 | IF 285 | PUSHB_1 286 | 70 287 | SROUND 288 | EIF 289 | IF 290 | MDRP[rp0,min,rnd,black] 291 | ELSE 292 | MDRP[min,rnd,black] 293 | EIF 294 | EIF 295 | EIF 296 | RTG 297 | ENDF 298 | PUSHB_1 299 | 5 300 | FDEF 301 | GFV 302 | NOT 303 | AND 304 | ENDF 305 | PUSHB_1 306 | 6 307 | FDEF 308 | PUSHB_2 309 | 34 310 | 1 311 | GETINFO 312 | LT 313 | IF 314 | PUSHB_1 315 | 32 316 | GETINFO 317 | NOT 318 | NOT 319 | ELSE 320 | PUSHB_1 321 | 0 322 | EIF 323 | ENDF 324 | PUSHB_1 325 | 7 326 | FDEF 327 | PUSHB_2 328 | 36 329 | 1 330 | GETINFO 331 | LT 332 | IF 333 | PUSHB_1 334 | 64 335 | GETINFO 336 | NOT 337 | NOT 338 | ELSE 339 | PUSHB_1 340 | 0 341 | EIF 342 | ENDF 343 | PUSHB_1 344 | 8 345 | FDEF 346 | SRP2 347 | SRP1 348 | DUP 349 | IP 350 | MDAP[rnd] 351 | ENDF 352 | PUSHB_1 353 | 9 354 | FDEF 355 | DUP 356 | RDTG 357 | PUSHB_1 358 | 6 359 | CALL 360 | IF 361 | MDRP[rnd,grey] 362 | ELSE 363 | MDRP[min,rnd,black] 364 | EIF 365 | DUP 366 | PUSHB_1 367 | 3 368 | CINDEX 369 | MD[grid] 370 | SWAP 371 | DUP 372 | PUSHB_1 373 | 4 374 | MINDEX 375 | MD[orig] 376 | PUSHB_1 377 | 0 378 | LT 379 | IF 380 | ROLL 381 | NEG 382 | ROLL 383 | SUB 384 | DUP 385 | PUSHB_1 386 | 0 387 | LT 388 | IF 389 | SHPIX 390 | ELSE 391 | POP 392 | POP 393 | EIF 394 | ELSE 395 | ROLL 396 | ROLL 397 | SUB 398 | DUP 399 | PUSHB_1 400 | 0 401 | GT 402 | IF 403 | SHPIX 404 | ELSE 405 | POP 406 | POP 407 | EIF 408 | EIF 409 | RTG 410 | ENDF 411 | PUSHB_1 412 | 10 413 | FDEF 414 | PUSHB_1 415 | 6 416 | CALL 417 | IF 418 | POP 419 | SRP0 420 | ELSE 421 | SRP0 422 | POP 423 | EIF 424 | ENDF 425 | PUSHB_1 426 | 11 427 | FDEF 428 | DUP 429 | MDRP[rp0,white] 430 | PUSHB_1 431 | 12 432 | CALL 433 | ENDF 434 | PUSHB_1 435 | 12 436 | FDEF 437 | DUP 438 | MDAP[rnd] 439 | PUSHB_1 440 | 7 441 | CALL 442 | NOT 443 | IF 444 | DUP 445 | DUP 446 | GC[orig] 447 | SWAP 448 | GC[cur] 449 | SUB 450 | ROUND[White] 451 | DUP 452 | IF 453 | DUP 454 | ABS 455 | DIV 456 | SHPIX 457 | ELSE 458 | POP 459 | POP 460 | EIF 461 | ELSE 462 | POP 463 | EIF 464 | ENDF 465 | PUSHB_1 466 | 13 467 | FDEF 468 | SRP2 469 | SRP1 470 | DUP 471 | DUP 472 | IP 473 | MDAP[rnd] 474 | DUP 475 | ROLL 476 | DUP 477 | GC[orig] 478 | ROLL 479 | GC[cur] 480 | SUB 481 | SWAP 482 | ROLL 483 | DUP 484 | ROLL 485 | SWAP 486 | MD[orig] 487 | PUSHB_1 488 | 0 489 | LT 490 | IF 491 | SWAP 492 | PUSHB_1 493 | 0 494 | GT 495 | IF 496 | PUSHB_1 497 | 64 498 | SHPIX 499 | ELSE 500 | POP 501 | EIF 502 | ELSE 503 | SWAP 504 | PUSHB_1 505 | 0 506 | LT 507 | IF 508 | PUSHB_1 509 | 64 510 | NEG 511 | SHPIX 512 | ELSE 513 | POP 514 | EIF 515 | EIF 516 | ENDF 517 | PUSHB_1 518 | 14 519 | FDEF 520 | PUSHB_1 521 | 6 522 | CALL 523 | IF 524 | RTDG 525 | MDRP[rp0,rnd,white] 526 | RTG 527 | POP 528 | POP 529 | ELSE 530 | DUP 531 | MDRP[rp0,rnd,white] 532 | ROLL 533 | MPPEM 534 | GT 535 | IF 536 | DUP 537 | ROLL 538 | SWAP 539 | MD[grid] 540 | DUP 541 | PUSHB_1 542 | 0 543 | NEQ 544 | IF 545 | SHPIX 546 | ELSE 547 | POP 548 | POP 549 | EIF 550 | ELSE 551 | POP 552 | POP 553 | EIF 554 | EIF 555 | ENDF 556 | PUSHB_1 557 | 15 558 | FDEF 559 | SWAP 560 | DUP 561 | MDRP[rp0,rnd,white] 562 | DUP 563 | MDAP[rnd] 564 | PUSHB_1 565 | 7 566 | CALL 567 | NOT 568 | IF 569 | SWAP 570 | DUP 571 | IF 572 | MPPEM 573 | GTEQ 574 | ELSE 575 | POP 576 | PUSHB_1 577 | 1 578 | EIF 579 | IF 580 | ROLL 581 | PUSHB_1 582 | 4 583 | MINDEX 584 | MD[grid] 585 | SWAP 586 | ROLL 587 | SWAP 588 | DUP 589 | ROLL 590 | MD[grid] 591 | ROLL 592 | SWAP 593 | SUB 594 | SHPIX 595 | ELSE 596 | POP 597 | POP 598 | POP 599 | POP 600 | EIF 601 | ELSE 602 | POP 603 | POP 604 | POP 605 | POP 606 | POP 607 | EIF 608 | ENDF 609 | PUSHB_1 610 | 16 611 | FDEF 612 | DUP 613 | MDRP[rp0,min,white] 614 | PUSHB_1 615 | 18 616 | CALL 617 | ENDF 618 | PUSHB_1 619 | 17 620 | FDEF 621 | DUP 622 | MDRP[rp0,white] 623 | PUSHB_1 624 | 18 625 | CALL 626 | ENDF 627 | PUSHB_1 628 | 18 629 | FDEF 630 | DUP 631 | MDAP[rnd] 632 | PUSHB_1 633 | 7 634 | CALL 635 | NOT 636 | IF 637 | DUP 638 | DUP 639 | GC[orig] 640 | SWAP 641 | GC[cur] 642 | SUB 643 | ROUND[White] 644 | ROLL 645 | DUP 646 | GC[orig] 647 | SWAP 648 | GC[cur] 649 | SWAP 650 | SUB 651 | ROUND[White] 652 | ADD 653 | DUP 654 | IF 655 | DUP 656 | ABS 657 | DIV 658 | SHPIX 659 | ELSE 660 | POP 661 | POP 662 | EIF 663 | ELSE 664 | POP 665 | POP 666 | EIF 667 | ENDF 668 | PUSHB_1 669 | 19 670 | FDEF 671 | DUP 672 | ROLL 673 | DUP 674 | ROLL 675 | SDPVTL[orthog] 676 | DUP 677 | PUSHB_1 678 | 3 679 | CINDEX 680 | MD[orig] 681 | ABS 682 | SWAP 683 | ROLL 684 | SPVTL[orthog] 685 | PUSHB_1 686 | 32 687 | LT 688 | IF 689 | ALIGNRP 690 | ELSE 691 | MDRP[grey] 692 | EIF 693 | ENDF 694 | PUSHB_1 695 | 20 696 | FDEF 697 | PUSHB_4 698 | 0 699 | 64 700 | 1 701 | 64 702 | WS 703 | WS 704 | SVTCA[x-axis] 705 | MPPEM 706 | PUSHW_1 707 | 4096 708 | MUL 709 | SVTCA[y-axis] 710 | MPPEM 711 | PUSHW_1 712 | 4096 713 | MUL 714 | DUP 715 | ROLL 716 | DUP 717 | ROLL 718 | NEQ 719 | IF 720 | DUP 721 | ROLL 722 | DUP 723 | ROLL 724 | GT 725 | IF 726 | SWAP 727 | DIV 728 | DUP 729 | PUSHB_1 730 | 0 731 | SWAP 732 | WS 733 | ELSE 734 | DIV 735 | DUP 736 | PUSHB_1 737 | 1 738 | SWAP 739 | WS 740 | EIF 741 | DUP 742 | PUSHB_1 743 | 64 744 | GT 745 | IF 746 | PUSHB_3 747 | 0 748 | 32 749 | 0 750 | RS 751 | MUL 752 | WS 753 | PUSHB_3 754 | 1 755 | 32 756 | 1 757 | RS 758 | MUL 759 | WS 760 | PUSHB_1 761 | 32 762 | MUL 763 | PUSHB_1 764 | 25 765 | NEG 766 | JMPR 767 | POP 768 | EIF 769 | ELSE 770 | POP 771 | POP 772 | EIF 773 | ENDF 774 | PUSHB_1 775 | 21 776 | FDEF 777 | PUSHB_1 778 | 1 779 | RS 780 | MUL 781 | SWAP 782 | PUSHB_1 783 | 0 784 | RS 785 | MUL 786 | SWAP 787 | ENDF 788 | EndTTInstrs 789 | ShortTable: cvt 6 790 | -220 791 | 0 792 | 520 793 | 730 794 | 33 795 | 633 796 | EndShort 797 | ShortTable: maxp 16 798 | 1 799 | 0 800 | 21272 801 | 2108 802 | 92 803 | 330 804 | 12 805 | 2 806 | 1 807 | 2 808 | 22 809 | 0 810 | 256 811 | 0 812 | 3 813 | 1 814 | EndShort 815 | LangName: 1033 "" "" "" "4.0.0;CicaDev-Regular" "" "Version 4.0.0" "" "Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries." "" "[Source Han Sans]+AAoA-Ryoko NISHIZUKA +iX9YWm28W1AA (kana & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Wenlong ZHANG +XyBlh5+Z (bopomofo); Sandoll Communication +wLCzzM7ku6SyyM8Ax3TBWAAA, Soo-young JANG +x6XCGMYB & Joo-yeon KANG +rBXI/MXw (hangul elements, letters & syllables)+AAoACgAA[M+- OUTLINE FONTS]+AAoA-Coji Morishita +aO5OC21pU/gA (coz)" "Dr. Ken Lunde (project architect, glyph set definition & overall production); Masataka HATTORI +Zw2Q6GtjjLQA (production & ideograph elements)" "http://jikasei.me/" "" "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech),+AAoA-with Reserved Font Name Cica+AAoACgAA-The Cica generate script is licensed under the MIT License+AAoACgAA-Source font softwares are licensed under the+AAoACgAA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - Cica Generate Script : https://github.com/miiton/Cica+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoACgAA-These licenses are copied below, and is also available with a FAQ at:+AAoACgAA-- http://font.ubuntu.com/licence/+AAoA-- http://scripts.sil.org/OFL+AAoA" "http://scripts.sil.org/OFL" "" "CicaDev" "Regular" 816 | LangName: 1041 "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech)+AAoACgAA-Source Font Softwares are licensed and copyrighted under the+AAoA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoA" "CicaDev" "Regular" "" "CicaDev-Regular" "Version 4.0.0" "" "" "" "" "" "" "" "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech),+AAoA-with Reserved Font Name Cica+AAoACgAA-The Cica generate script is licensed under the MIT License+AAoACgAA-Source font softwares are licensed under the+AAoACgAA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - Cica Generate Script : https://github.com/miiton/Cica+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoACgAA-These licenses are copied below, and is also available with a FAQ at:+AAoACgAA-- http://font.ubuntu.com/licence/+AAoA-- http://scripts.sil.org/OFL+AAoA" "" "" "CicaDev" "Regular" 817 | GaspTable: 1 65535 2 0 818 | Encoding: UnicodeFull 819 | UnicodeInterp: none 820 | NameList: AGL For New Fonts 821 | DisplaySize: -48 822 | AntiAlias: 1 823 | FitToEm: 0 824 | WinInfo: 60 20 11 825 | AnchorClass2: "Anchor-0" "'mkmk' Mark to Mark in Arabic lookup 0 subtable" "Anchor-1" "'mkmk' Mark to Mark in Arabic lookup 1 subtable" "Anchor-2" "'mark' Mark Positioning in Arabic lookup 2 subtable" "Anchor-3" "'mark' Mark Positioning in Arabic lookup 3 subtable" "Anchor-4" "'mark' Mark Positioning in Arabic lookup 4 subtable" "Anchor-5" "'mark' Mark Positioning in Arabic lookup 5 subtable" "Anchor-6" "'mark' Mark Positioning lookup 6 anchor 0" "Anchor-7" "'mark' Mark Positioning lookup 6 anchor 1" "Anchor-8" "'mark' Mark Positioning lookup 6 anchor 1" "Anchor-9" "'mark' Mark Positioning in Lao lookup 8 subtable" "Anchor-10" "'mark' Mark Positioning in Lao lookup 8 subtable" 826 | BeginChars: 1114709 1 827 | 828 | StartChar: m 829 | Encoding: 109 109 0 830 | Width: 512 831 | VWidth: 880 832 | GlyphClass: 2 833 | Flags: W 834 | AnchorPoint: "Anchor-6" 256 504 basechar 0 835 | LayerCount: 2 836 | Fore 837 | SplineSet 838 | 25 482 m 1,0,-1 839 | 104 482 l 1,1,-1 840 | 117 432 l 1,2,3 841 | 127 461 127 461 150.5 477 c 128,-1,4 842 | 174 493 174 493 203 493 c 0,5,6 843 | 233 493 233 493 257 475.5 c 128,-1,7 844 | 281 458 281 458 286 433 c 1,8,9 845 | 314 493 314 493 378 493 c 0,10,11 846 | 441 493 441 493 463 451 c 0,12,13 847 | 486 408 486 408 486 271 c 2,14,-1 848 | 486 0 l 1,15,-1 849 | 383 0 l 1,16,-1 850 | 383 309 l 2,17,18 851 | 383 362 383 362 375 381 c 0,19,20 852 | 367 399 367 399 345 399 c 0,21,22 853 | 324 399 324 399 316 381 c 0,23,24 854 | 307 363 307 363 307 309 c 2,25,-1 855 | 307 191.98046875 l 6,26,27 856 | 307 192 307 192 306 192 c 6,28,-1 857 | 205 192 l 5,29,-1 858 | 205 309 l 2,30,31 859 | 205 359 205 359 196 381 c 0,32,33 860 | 188 399 188 399 166 399 c 0,34,35 861 | 145 399 145 399 137 382 c 0,36,37 862 | 128 365 128 365 128 309 c 2,38,-1 863 | 128 0 l 1,39,-1 864 | 25 0 l 1,40,-1 865 | 25 482 l 1,0,-1 866 | EndSplineSet 867 | EndChar 868 | EndChars 869 | EndSplineFont 870 | -------------------------------------------------------------------------------- /sourceFonts/m-Regular.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.0 2 | FontName: CicaDev-Regular 3 | FullName: CicaDev-Regular 4 | FamilyName: CicaDev 5 | Weight: Book 6 | Copyright: Copyright (c) 2018, Takahiro Minami (https://tmnm.tech)\n\nSource Font Softwares are licensed and copyrighted under the\n- Ubuntu Font Licence, Version 1.0\n - Ubuntu Mono : http://font.ubuntu.com/\n- CC BY 4.0\n - Seti-UI + Custom : https://github.com/jesseweed/seti-ui\n- MIT Licenses\n - DevIcons : https://github.com/vorillaz/devicons\n - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols\n - Font Awesome : https://github.com/FortAwesome/Font-Awesome\n - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension\n - Octicons : https://github.com/primer/octicons\n - IEC Power Symbols : https://unicodepowersymbol.com/\n - Powerline Symbols : https://github.com/powerline/powerline\n- Apache License 2.0\n - Noto Emoji : https://github.com/googlei18n/noto-emoji\n- SIL Open Font License, Version 1.1\n - Rounded Mgen+ : http://jikasei.me/font/rounded-mgenplus/\n- Free license\n - DejaVu Sans Mono : https://dejavu-fonts.github.io/\n 7 | Version: 4.0.0 8 | ItalicAngle: 0 9 | UnderlinePosition: -6 10 | UnderlineWidth: 51 11 | Ascent: 819 12 | Descent: 205 13 | InvalidEm: 0 14 | sfntRevision: 0x00010f1a 15 | LayerCount: 2 16 | Layer: 0 1 "Back" 1 17 | Layer: 1 1 "Fore" 0 18 | HasVMetrics: 1 19 | XUID: [1021 842 -796345161 12618039] 20 | StyleMap: 0x0040 21 | FSType: 0 22 | OS2Version: 1 23 | OS2_WeightWidthSlopeOnly: 0 24 | OS2_UseTypoMetrics: 0 25 | CreationTime: 1433194288 26 | ModificationTime: 1536990224 27 | PfmFamily: 17 28 | TTFWeight: 400 29 | TTFWidth: 5 30 | LineGap: 0 31 | VLineGap: 0 32 | Panose: 2 11 4 9 2 2 3 2 2 7 33 | OS2TypoAscent: 670 34 | OS2TypoAOffset: 0 35 | OS2TypoDescent: -104 36 | OS2TypoDOffset: 0 37 | OS2TypoLinegap: 0 38 | OS2WinAscent: 820 39 | OS2WinAOffset: 0 40 | OS2WinDescent: 204 41 | OS2WinDOffset: 0 42 | HheadAscent: 862 43 | HheadAOffset: 0 44 | HheadDescent: -199 45 | HheadDOffset: 0 46 | OS2SubXSize: 666 47 | OS2SubYSize: 716 48 | OS2SubXOff: 0 49 | OS2SubYOff: 143 50 | OS2SupXSize: 666 51 | OS2SupYSize: 716 52 | OS2SupXOff: 0 53 | OS2SupYOff: 490 54 | OS2StrikeYSize: 50 55 | OS2StrikeYPos: 264 56 | OS2FamilyClass: 2057 57 | OS2Vendor: 'TMNM' 58 | OS2CodePages: 4012019f.dfd70000 59 | OS2UnicodeRanges: e00002ff.6a47fdeb.00000012.00000000 60 | Lookup: 1 0 0 "'vert' Vertical Alternates (obs) lookup 0" { "'vert' Vertical Alternates (obs) lookup 0 subtable" } ['vert' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 61 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 1" { "'aalt' Access All Alternates lookup 1 subtable" } ['aalt' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 62 | Lookup: 1 0 0 "'jp90' JIS90 Forms lookup 2" { "'jp90' JIS90 Forms lookup 2 subtable" } ['jp90' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 63 | Lookup: 4 0 1 "'liga' Standard Ligatures in Hiragana & Katakana lookup 3" { "'liga' Standard Ligatures in Hiragana & Katakana lookup 3 subtable" } ['ccmp' ('DFLT' <'dflt' > 'kana' <'JAN ' 'dflt' > ) 'liga' ('DFLT' <'dflt' > 'kana' <'JAN ' 'dflt' > ) ] 64 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 4" { "'ccmp' Glyph Composition/Decomposition lookup 4 subtable" } ['ccmp' ('hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 65 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 5" { "'ccmp' Glyph Composition/Decomposition lookup 5 subtable" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 66 | Lookup: 1 0 0 "Single Substitution lookup 6" { "Single Substitution lookup 6 subtable" } [] 67 | Lookup: 6 0 0 "'ccmp' Glyph Composition/Decomposition lookup 7" { "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 0" "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 1" "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 2" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 68 | Lookup: 1 0 0 "'aalt' Access All Alternates lookup 8" { "'aalt' Access All Alternates lookup 8 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 69 | Lookup: 4 0 0 "'ccmp' Glyph Composition/Decomposition lookup 9" { "'ccmp' Glyph Composition/Decomposition lookup 9 subtable" } ['ccmp' ('hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 70 | Lookup: 6 0 0 "'ccmp' Glyph Composition/Decomposition lookup 10" { "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 0" "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 1" "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 2" } ['ccmp' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'latn' <'dflt' > ) ] 71 | Lookup: 1 0 0 "'vrt2' Vertical Rotation & Alternates lookup 11" { "'vrt2' Vertical Rotation & Alternates lookup 11 subtable" ("vert") } ['vrt2' ('cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'dflt' > 'latn' <'dflt' > ) ] 72 | Lookup: 3 0 0 "'aalt' Access All Alternates lookup 12" { "'aalt' Access All Alternates lookup 12 subtable" } ['aalt' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'grek' <'dflt' > 'hani' <'dflt' > 'kana' <'JAN ' 'dflt' > 'latn' <'dflt' > ) ] 73 | Lookup: 262 1 0 "'mkmk' Mark to Mark in Arabic lookup 0" { "'mkmk' Mark to Mark in Arabic lookup 0 subtable" } ['mkmk' ('arab' <'dflt' > ) ] 74 | Lookup: 262 1 0 "'mkmk' Mark to Mark in Arabic lookup 1" { "'mkmk' Mark to Mark in Arabic lookup 1 subtable" } ['mkmk' ('arab' <'dflt' > ) ] 75 | Lookup: 261 1 0 "'mark' Mark Positioning in Arabic lookup 2" { "'mark' Mark Positioning in Arabic lookup 2 subtable" } ['mark' ('arab' <'dflt' > ) ] 76 | Lookup: 260 1 0 "'mark' Mark Positioning in Arabic lookup 3" { "'mark' Mark Positioning in Arabic lookup 3 subtable" } ['mark' ('arab' <'dflt' > ) ] 77 | Lookup: 261 1 0 "'mark' Mark Positioning in Arabic lookup 4" { "'mark' Mark Positioning in Arabic lookup 4 subtable" } ['mark' ('arab' <'dflt' > ) ] 78 | Lookup: 260 1 0 "'mark' Mark Positioning in Arabic lookup 5" { "'mark' Mark Positioning in Arabic lookup 5 subtable" } ['mark' ('arab' <'dflt' > ) ] 79 | Lookup: 260 0 0 "'mark' Mark Positioning lookup 6" { "'mark' Mark Positioning lookup 6 anchor 0" "'mark' Mark Positioning lookup 6 anchor 1" } ['mark' ('cyrl' <'SRB ' 'dflt' > 'grek' <'dflt' > 'latn' <'ISM ' 'KSM ' 'LSM ' 'MOL ' 'NSM ' 'ROM ' 'SKS ' 'SSM ' 'dflt' > ) ] 80 | Lookup: 257 0 0 "'mark' Mark Positioning lookup 7" { "'mark' Mark Positioning lookup 7 subtable" } ['mark' ('cyrl' <'SRB ' 'dflt' > 'grek' <'dflt' > 'latn' <'ISM ' 'KSM ' 'LSM ' 'MOL ' 'NSM ' 'ROM ' 'SKS ' 'SSM ' 'dflt' > ) ] 81 | Lookup: 260 0 0 "'mark' Mark Positioning in Lao lookup 8" { "'mark' Mark Positioning in Lao lookup 8 subtable" } ['mark' ('lao ' <'dflt' > ) ] 82 | Lookup: 257 8 0 "'rtbd' Right Bounds in Lao lookup 9" { "'rtbd' Right Bounds in Lao lookup 9 subtable" } ['rtbd' ('lao ' <'dflt' > ) ] 83 | DEI: 91125 84 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 2" 0 0 0 1 85 | 1 0 3 86 | Coverage: 15 uni0456 uni0458 87 | FCoverage: 0 88 | FCoverage: 0 89 | FCoverage: 0 90 | 0 91 | EndFPST 92 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 1" 0 0 0 1 93 | 1 0 2 94 | Coverage: 15 uni0456 uni0458 95 | FCoverage: 0 96 | FCoverage: 0 97 | 0 98 | EndFPST 99 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 10 contextual 0" 0 0 0 1 100 | 1 0 1 101 | Coverage: 15 uni0456 uni0458 102 | FCoverage: 0 103 | 0 104 | EndFPST 105 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 2" 0 0 0 1 106 | 1 0 3 107 | Coverage: 19 i j uni0456 uni0458 108 | FCoverage: 0 109 | FCoverage: 0 110 | FCoverage: 0 111 | 1 112 | SeqLookup: 0 "Single Substitution lookup 6" 113 | EndFPST 114 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 1" 0 0 0 1 115 | 1 0 2 116 | Coverage: 19 i j uni0456 uni0458 117 | FCoverage: 0 118 | FCoverage: 0 119 | 1 120 | SeqLookup: 0 "Single Substitution lookup 6" 121 | EndFPST 122 | ChainSub2: coverage "'ccmp' Glyph Composition/Decomposition lookup 7 contextual 0" 0 0 0 1 123 | 1 0 1 124 | Coverage: 19 i j uni0456 uni0458 125 | FCoverage: 0 126 | 1 127 | SeqLookup: 0 "Single Substitution lookup 6" 128 | EndFPST 129 | TtTable: prep 130 | PUSHW_1 131 | 511 132 | SCANCTRL 133 | PUSHB_1 134 | 1 135 | SCANTYPE 136 | SVTCA[y-axis] 137 | MPPEM 138 | PUSHB_1 139 | 8 140 | LT 141 | IF 142 | PUSHB_2 143 | 1 144 | 1 145 | INSTCTRL 146 | EIF 147 | PUSHB_2 148 | 70 149 | 6 150 | CALL 151 | IF 152 | POP 153 | PUSHB_1 154 | 16 155 | EIF 156 | MPPEM 157 | PUSHB_1 158 | 20 159 | GT 160 | IF 161 | POP 162 | PUSHB_1 163 | 128 164 | EIF 165 | SCVTCI 166 | PUSHB_1 167 | 6 168 | CALL 169 | NOT 170 | IF 171 | EIF 172 | PUSHB_1 173 | 20 174 | CALL 175 | EndTTInstrs 176 | TtTable: fpgm 177 | PUSHB_1 178 | 0 179 | FDEF 180 | PUSHB_1 181 | 0 182 | SZP0 183 | MPPEM 184 | PUSHB_1 185 | 42 186 | LT 187 | IF 188 | PUSHB_1 189 | 74 190 | SROUND 191 | EIF 192 | PUSHB_1 193 | 0 194 | SWAP 195 | MIAP[rnd] 196 | RTG 197 | PUSHB_1 198 | 6 199 | CALL 200 | IF 201 | RTDG 202 | EIF 203 | MPPEM 204 | PUSHB_1 205 | 42 206 | LT 207 | IF 208 | RDTG 209 | EIF 210 | DUP 211 | MDRP[rp0,rnd,grey] 212 | PUSHB_1 213 | 1 214 | SZP0 215 | MDAP[no-rnd] 216 | RTG 217 | ENDF 218 | PUSHB_1 219 | 1 220 | FDEF 221 | DUP 222 | MDRP[rp0,min,white] 223 | PUSHB_1 224 | 12 225 | CALL 226 | ENDF 227 | PUSHB_1 228 | 2 229 | FDEF 230 | MPPEM 231 | GT 232 | IF 233 | RCVT 234 | SWAP 235 | EIF 236 | POP 237 | ENDF 238 | PUSHB_1 239 | 3 240 | FDEF 241 | ROUND[Black] 242 | RTG 243 | DUP 244 | PUSHB_1 245 | 64 246 | LT 247 | IF 248 | POP 249 | PUSHB_1 250 | 64 251 | EIF 252 | ENDF 253 | PUSHB_1 254 | 4 255 | FDEF 256 | PUSHB_1 257 | 6 258 | CALL 259 | IF 260 | POP 261 | SWAP 262 | POP 263 | ROFF 264 | IF 265 | MDRP[rp0,min,rnd,black] 266 | ELSE 267 | MDRP[min,rnd,black] 268 | EIF 269 | ELSE 270 | MPPEM 271 | GT 272 | IF 273 | IF 274 | MIRP[rp0,min,rnd,black] 275 | ELSE 276 | MIRP[min,rnd,black] 277 | EIF 278 | ELSE 279 | SWAP 280 | POP 281 | PUSHB_1 282 | 5 283 | CALL 284 | IF 285 | PUSHB_1 286 | 70 287 | SROUND 288 | EIF 289 | IF 290 | MDRP[rp0,min,rnd,black] 291 | ELSE 292 | MDRP[min,rnd,black] 293 | EIF 294 | EIF 295 | EIF 296 | RTG 297 | ENDF 298 | PUSHB_1 299 | 5 300 | FDEF 301 | GFV 302 | NOT 303 | AND 304 | ENDF 305 | PUSHB_1 306 | 6 307 | FDEF 308 | PUSHB_2 309 | 34 310 | 1 311 | GETINFO 312 | LT 313 | IF 314 | PUSHB_1 315 | 32 316 | GETINFO 317 | NOT 318 | NOT 319 | ELSE 320 | PUSHB_1 321 | 0 322 | EIF 323 | ENDF 324 | PUSHB_1 325 | 7 326 | FDEF 327 | PUSHB_2 328 | 36 329 | 1 330 | GETINFO 331 | LT 332 | IF 333 | PUSHB_1 334 | 64 335 | GETINFO 336 | NOT 337 | NOT 338 | ELSE 339 | PUSHB_1 340 | 0 341 | EIF 342 | ENDF 343 | PUSHB_1 344 | 8 345 | FDEF 346 | SRP2 347 | SRP1 348 | DUP 349 | IP 350 | MDAP[rnd] 351 | ENDF 352 | PUSHB_1 353 | 9 354 | FDEF 355 | DUP 356 | RDTG 357 | PUSHB_1 358 | 6 359 | CALL 360 | IF 361 | MDRP[rnd,grey] 362 | ELSE 363 | MDRP[min,rnd,black] 364 | EIF 365 | DUP 366 | PUSHB_1 367 | 3 368 | CINDEX 369 | MD[grid] 370 | SWAP 371 | DUP 372 | PUSHB_1 373 | 4 374 | MINDEX 375 | MD[orig] 376 | PUSHB_1 377 | 0 378 | LT 379 | IF 380 | ROLL 381 | NEG 382 | ROLL 383 | SUB 384 | DUP 385 | PUSHB_1 386 | 0 387 | LT 388 | IF 389 | SHPIX 390 | ELSE 391 | POP 392 | POP 393 | EIF 394 | ELSE 395 | ROLL 396 | ROLL 397 | SUB 398 | DUP 399 | PUSHB_1 400 | 0 401 | GT 402 | IF 403 | SHPIX 404 | ELSE 405 | POP 406 | POP 407 | EIF 408 | EIF 409 | RTG 410 | ENDF 411 | PUSHB_1 412 | 10 413 | FDEF 414 | PUSHB_1 415 | 6 416 | CALL 417 | IF 418 | POP 419 | SRP0 420 | ELSE 421 | SRP0 422 | POP 423 | EIF 424 | ENDF 425 | PUSHB_1 426 | 11 427 | FDEF 428 | DUP 429 | MDRP[rp0,white] 430 | PUSHB_1 431 | 12 432 | CALL 433 | ENDF 434 | PUSHB_1 435 | 12 436 | FDEF 437 | DUP 438 | MDAP[rnd] 439 | PUSHB_1 440 | 7 441 | CALL 442 | NOT 443 | IF 444 | DUP 445 | DUP 446 | GC[orig] 447 | SWAP 448 | GC[cur] 449 | SUB 450 | ROUND[White] 451 | DUP 452 | IF 453 | DUP 454 | ABS 455 | DIV 456 | SHPIX 457 | ELSE 458 | POP 459 | POP 460 | EIF 461 | ELSE 462 | POP 463 | EIF 464 | ENDF 465 | PUSHB_1 466 | 13 467 | FDEF 468 | SRP2 469 | SRP1 470 | DUP 471 | DUP 472 | IP 473 | MDAP[rnd] 474 | DUP 475 | ROLL 476 | DUP 477 | GC[orig] 478 | ROLL 479 | GC[cur] 480 | SUB 481 | SWAP 482 | ROLL 483 | DUP 484 | ROLL 485 | SWAP 486 | MD[orig] 487 | PUSHB_1 488 | 0 489 | LT 490 | IF 491 | SWAP 492 | PUSHB_1 493 | 0 494 | GT 495 | IF 496 | PUSHB_1 497 | 64 498 | SHPIX 499 | ELSE 500 | POP 501 | EIF 502 | ELSE 503 | SWAP 504 | PUSHB_1 505 | 0 506 | LT 507 | IF 508 | PUSHB_1 509 | 64 510 | NEG 511 | SHPIX 512 | ELSE 513 | POP 514 | EIF 515 | EIF 516 | ENDF 517 | PUSHB_1 518 | 14 519 | FDEF 520 | PUSHB_1 521 | 6 522 | CALL 523 | IF 524 | RTDG 525 | MDRP[rp0,rnd,white] 526 | RTG 527 | POP 528 | POP 529 | ELSE 530 | DUP 531 | MDRP[rp0,rnd,white] 532 | ROLL 533 | MPPEM 534 | GT 535 | IF 536 | DUP 537 | ROLL 538 | SWAP 539 | MD[grid] 540 | DUP 541 | PUSHB_1 542 | 0 543 | NEQ 544 | IF 545 | SHPIX 546 | ELSE 547 | POP 548 | POP 549 | EIF 550 | ELSE 551 | POP 552 | POP 553 | EIF 554 | EIF 555 | ENDF 556 | PUSHB_1 557 | 15 558 | FDEF 559 | SWAP 560 | DUP 561 | MDRP[rp0,rnd,white] 562 | DUP 563 | MDAP[rnd] 564 | PUSHB_1 565 | 7 566 | CALL 567 | NOT 568 | IF 569 | SWAP 570 | DUP 571 | IF 572 | MPPEM 573 | GTEQ 574 | ELSE 575 | POP 576 | PUSHB_1 577 | 1 578 | EIF 579 | IF 580 | ROLL 581 | PUSHB_1 582 | 4 583 | MINDEX 584 | MD[grid] 585 | SWAP 586 | ROLL 587 | SWAP 588 | DUP 589 | ROLL 590 | MD[grid] 591 | ROLL 592 | SWAP 593 | SUB 594 | SHPIX 595 | ELSE 596 | POP 597 | POP 598 | POP 599 | POP 600 | EIF 601 | ELSE 602 | POP 603 | POP 604 | POP 605 | POP 606 | POP 607 | EIF 608 | ENDF 609 | PUSHB_1 610 | 16 611 | FDEF 612 | DUP 613 | MDRP[rp0,min,white] 614 | PUSHB_1 615 | 18 616 | CALL 617 | ENDF 618 | PUSHB_1 619 | 17 620 | FDEF 621 | DUP 622 | MDRP[rp0,white] 623 | PUSHB_1 624 | 18 625 | CALL 626 | ENDF 627 | PUSHB_1 628 | 18 629 | FDEF 630 | DUP 631 | MDAP[rnd] 632 | PUSHB_1 633 | 7 634 | CALL 635 | NOT 636 | IF 637 | DUP 638 | DUP 639 | GC[orig] 640 | SWAP 641 | GC[cur] 642 | SUB 643 | ROUND[White] 644 | ROLL 645 | DUP 646 | GC[orig] 647 | SWAP 648 | GC[cur] 649 | SWAP 650 | SUB 651 | ROUND[White] 652 | ADD 653 | DUP 654 | IF 655 | DUP 656 | ABS 657 | DIV 658 | SHPIX 659 | ELSE 660 | POP 661 | POP 662 | EIF 663 | ELSE 664 | POP 665 | POP 666 | EIF 667 | ENDF 668 | PUSHB_1 669 | 19 670 | FDEF 671 | DUP 672 | ROLL 673 | DUP 674 | ROLL 675 | SDPVTL[orthog] 676 | DUP 677 | PUSHB_1 678 | 3 679 | CINDEX 680 | MD[orig] 681 | ABS 682 | SWAP 683 | ROLL 684 | SPVTL[orthog] 685 | PUSHB_1 686 | 32 687 | LT 688 | IF 689 | ALIGNRP 690 | ELSE 691 | MDRP[grey] 692 | EIF 693 | ENDF 694 | PUSHB_1 695 | 20 696 | FDEF 697 | PUSHB_4 698 | 0 699 | 64 700 | 1 701 | 64 702 | WS 703 | WS 704 | SVTCA[x-axis] 705 | MPPEM 706 | PUSHW_1 707 | 4096 708 | MUL 709 | SVTCA[y-axis] 710 | MPPEM 711 | PUSHW_1 712 | 4096 713 | MUL 714 | DUP 715 | ROLL 716 | DUP 717 | ROLL 718 | NEQ 719 | IF 720 | DUP 721 | ROLL 722 | DUP 723 | ROLL 724 | GT 725 | IF 726 | SWAP 727 | DIV 728 | DUP 729 | PUSHB_1 730 | 0 731 | SWAP 732 | WS 733 | ELSE 734 | DIV 735 | DUP 736 | PUSHB_1 737 | 1 738 | SWAP 739 | WS 740 | EIF 741 | DUP 742 | PUSHB_1 743 | 64 744 | GT 745 | IF 746 | PUSHB_3 747 | 0 748 | 32 749 | 0 750 | RS 751 | MUL 752 | WS 753 | PUSHB_3 754 | 1 755 | 32 756 | 1 757 | RS 758 | MUL 759 | WS 760 | PUSHB_1 761 | 32 762 | MUL 763 | PUSHB_1 764 | 25 765 | NEG 766 | JMPR 767 | POP 768 | EIF 769 | ELSE 770 | POP 771 | POP 772 | EIF 773 | ENDF 774 | PUSHB_1 775 | 21 776 | FDEF 777 | PUSHB_1 778 | 1 779 | RS 780 | MUL 781 | SWAP 782 | PUSHB_1 783 | 0 784 | RS 785 | MUL 786 | SWAP 787 | ENDF 788 | EndTTInstrs 789 | ShortTable: cvt 6 790 | -220 791 | 0 792 | 520 793 | 730 794 | 33 795 | 633 796 | EndShort 797 | ShortTable: maxp 16 798 | 1 799 | 0 800 | 21272 801 | 2108 802 | 92 803 | 330 804 | 12 805 | 2 806 | 1 807 | 2 808 | 22 809 | 0 810 | 256 811 | 0 812 | 3 813 | 1 814 | EndShort 815 | LangName: 1033 "" "" "" "4.0.0;CicaDev-Regular" "" "Version 4.0.0" "" "Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries." "" "[Source Han Sans]+AAoA-Ryoko NISHIZUKA +iX9YWm28W1AA (kana & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Wenlong ZHANG +XyBlh5+Z (bopomofo); Sandoll Communication +wLCzzM7ku6SyyM8Ax3TBWAAA, Soo-young JANG +x6XCGMYB & Joo-yeon KANG +rBXI/MXw (hangul elements, letters & syllables)+AAoACgAA[M+- OUTLINE FONTS]+AAoA-Coji Morishita +aO5OC21pU/gA (coz)" "Dr. Ken Lunde (project architect, glyph set definition & overall production); Masataka HATTORI +Zw2Q6GtjjLQA (production & ideograph elements)" "http://jikasei.me/" "" "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech),+AAoA-with Reserved Font Name Cica+AAoACgAA-The Cica generate script is licensed under the MIT License+AAoACgAA-Source font softwares are licensed under the+AAoACgAA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - Cica Generate Script : https://github.com/miiton/Cica+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoACgAA-These licenses are copied below, and is also available with a FAQ at:+AAoACgAA-- http://font.ubuntu.com/licence/+AAoA-- http://scripts.sil.org/OFL+AAoA" "http://scripts.sil.org/OFL" "" "CicaDev" "Regular" 816 | LangName: 1041 "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech)+AAoACgAA-Source Font Softwares are licensed and copyrighted under the+AAoA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoA" "CicaDev" "Regular" "" "CicaDev-Regular" "Version 4.0.0" "" "" "" "" "" "" "" "Copyright (c) 2018, Takahiro Minami (https://tmnm.tech),+AAoA-with Reserved Font Name Cica+AAoACgAA-The Cica generate script is licensed under the MIT License+AAoACgAA-Source font softwares are licensed under the+AAoACgAA-- Ubuntu Font Licence, Version 1.0+AAoA - Ubuntu Mono : http://font.ubuntu.com/+AAoA-- CC BY 4.0+AAoA - Seti-UI +- Custom : https://github.com/jesseweed/seti-ui+AAoA-- MIT Licenses+AAoA - Cica Generate Script : https://github.com/miiton/Cica+AAoA - DevIcons : https://github.com/vorillaz/devicons+AAoA - Powerline Extra Symbols : https://github.com/ryanoasis/powerline-extra-symbols+AAoA - Font Awesome : https://github.com/FortAwesome/Font-Awesome+AAoA - Font Awesome Extension : https://github.com/AndreLZGava/font-awesome-extension+AAoA - Octicons : https://github.com/primer/octicons+AAoA - IEC Power Symbols : https://unicodepowersymbol.com/+AAoA - Powerline Symbols : https://github.com/powerline/powerline+AAoA-- Apache License 2.0+AAoA - Noto Emoji : https://github.com/googlei18n/noto-emoji+AAoA-- SIL Open Font License, Version 1.1+AAoA - Rounded Mgen+- : http://jikasei.me/font/rounded-mgenplus/+AAoA-- Free license+AAoA - DejaVu Sans Mono : https://dejavu-fonts.github.io/+AAoACgAA-These licenses are copied below, and is also available with a FAQ at:+AAoACgAA-- http://font.ubuntu.com/licence/+AAoA-- http://scripts.sil.org/OFL+AAoA" "" "" "CicaDev" "Regular" 817 | GaspTable: 1 65535 2 0 818 | Encoding: UnicodeFull 819 | UnicodeInterp: none 820 | NameList: AGL For New Fonts 821 | DisplaySize: -48 822 | AntiAlias: 1 823 | FitToEm: 0 824 | WinInfo: 60 20 11 825 | AnchorClass2: "Anchor-0" "'mkmk' Mark to Mark in Arabic lookup 0 subtable" "Anchor-1" "'mkmk' Mark to Mark in Arabic lookup 1 subtable" "Anchor-2" "'mark' Mark Positioning in Arabic lookup 2 subtable" "Anchor-3" "'mark' Mark Positioning in Arabic lookup 3 subtable" "Anchor-4" "'mark' Mark Positioning in Arabic lookup 4 subtable" "Anchor-5" "'mark' Mark Positioning in Arabic lookup 5 subtable" "Anchor-6" "'mark' Mark Positioning lookup 6 anchor 0" "Anchor-7" "'mark' Mark Positioning lookup 6 anchor 1" "Anchor-8" "'mark' Mark Positioning lookup 6 anchor 1" "Anchor-9" "'mark' Mark Positioning in Lao lookup 8 subtable" "Anchor-10" "'mark' Mark Positioning in Lao lookup 8 subtable" 826 | BeginChars: 1114709 1 827 | 828 | StartChar: m 829 | Encoding: 109 109 0 830 | Width: 512 831 | VWidth: 880 832 | GlyphClass: 2 833 | Flags: W 834 | AnchorPoint: "Anchor-8" 256 504 basechar 0 835 | AnchorPoint: "Anchor-7" 256 0 basechar 0 836 | AnchorPoint: "Anchor-6" 451 0 basechar 0 837 | LayerCount: 2 838 | Fore 839 | SplineSet 840 | 35 482 m 1,0,-1 841 | 100 482 l 1,1,-1 842 | 107 440 l 1,2,3 843 | 136 493 136 493 193 493 c 0,4,5 844 | 255 493 255 493 279 433 c 1,6,7 845 | 308 493 308 493 371 493 c 0,8,9 846 | 431 493 431 493 453 449 c 0,10,11 847 | 476 404 476 404 476 279 c 2,12,-1 848 | 476 0 l 1,13,-1 849 | 404 0 l 1,14,-1 850 | 404 276 l 2,15,16 851 | 404 330 404 330 401 359.5 c 128,-1,17 852 | 398 389 398 389 392 403 c 0,18,19 853 | 382 427 382 427 350 427 c 0,20,21 854 | 319 427 319 427 305 401 c 0,22,23 855 | 295 382 295 382 294 357.5 c 0,24,25 856 | 291 276 l 2,26,-1 857 | 291 192 l 5,27,-1 858 | 219 192 l 5,28,-1 859 | 219 276 l 2,29,30 860 | 219 294 219 294 216 358.5 c 0,31,32 861 | 215 388 215 388 207 403 c 0,33,34 862 | 195 427 195 427 163 427 c 128,-1,35 863 | 131 427 131 427 120 402 c 0,36,37 864 | 113 387 113 387 110 357 c 128,-1,38 865 | 107 327 107 327 107 276 c 2,39,-1 866 | 107 0 l 1,40,-1 867 | 35 0 l 1,41,-1 868 | 35 482 l 1,0,-1 869 | EndSplineSet 870 | EndChar 871 | EndChars 872 | EndSplineFont 873 | -------------------------------------------------------------------------------- /sourceFonts/reiwa-Bold.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.0 2 | FontName: Untitled2 3 | FullName: Untitled2 4 | FamilyName: Untitled2 5 | Weight: Regular 6 | Copyright: Copyright (c) 2019, Takahiro Minami 7 | UComments: "2019-4-2: Created with FontForge (http://fontforge.org)" 8 | Version: 001.000 9 | ItalicAngle: 0 10 | UnderlinePosition: -100 11 | UnderlineWidth: 50 12 | Ascent: 800 13 | Descent: 200 14 | InvalidEm: 0 15 | LayerCount: 2 16 | Layer: 0 0 "Back" 1 17 | Layer: 1 0 "Fore" 0 18 | XUID: [1021 842 -796345161 3796510] 19 | OS2Version: 0 20 | OS2_WeightWidthSlopeOnly: 0 21 | OS2_UseTypoMetrics: 1 22 | CreationTime: 1554166826 23 | ModificationTime: 1554167346 24 | OS2TypoAscent: 0 25 | OS2TypoAOffset: 1 26 | OS2TypoDescent: 0 27 | OS2TypoDOffset: 1 28 | OS2TypoLinegap: 0 29 | OS2WinAscent: 0 30 | OS2WinAOffset: 1 31 | OS2WinDescent: 0 32 | OS2WinDOffset: 1 33 | HheadAscent: 0 34 | HheadAOffset: 1 35 | HheadDescent: 0 36 | HheadDOffset: 1 37 | OS2Vendor: 'PfEd' 38 | DEI: 91125 39 | Encoding: ISO8859-1 40 | UnicodeInterp: none 41 | NameList: AGL For New Fonts 42 | DisplaySize: -128 43 | AntiAlias: 1 44 | FitToEm: 0 45 | WinInfo: 0 8 2 46 | BeginChars: 256 1 47 | 48 | StartChar: uni0000 49 | Encoding: 0 0 0 50 | Width: 1024 51 | VWidth: 931 52 | Flags: HW 53 | LayerCount: 2 54 | Fore 55 | SplineSet 56 | 228.012288234 745.336610066 m 0 57 | 238.727894398 768.240878735 257.670964071 783.500000001 282.299804688 783.5 c 0 58 | 306.284262726 783.5 325.15974491 769.173285492 337.015309231 747.097407104 c 0 59 | 361.120702448 699.547042403 385.8436241 660.342756222 411.49728114 628.517102298 c 0 60 | 429.505302987 606.40730193 459.084862557 574.359342758 499.549973789 533.297919908 c 0 61 | 507.914308731 524.849430086 513.814291377 513.115601953 515.973196104 502.960062969 c 1 62 | 517.373442439 504.863362725 518.925104778 506.67384212 520.625631329 508.374368671 c 0 63 | 530.037720177 517.786457519 542.802012163 522.5 556 522.5 c 2 64 | 589.5 522.5 l 1 65 | 589.5 630.007975352 l 1 66 | 582.210992033 627.835754435 572.588748325 625.294075641 568.164983595 624.239535024 c 0 67 | 553.953734054 620.561749339 544.661546019 622.586671632 534.874624834 628.567567911 c 0 68 | 525.844921016 634.085720245 518.591263822 642.901648384 514.874243284 652.194199728 c 0 69 | 510.452962085 662.142082424 510.77561392 674.68241745 515.847524158 684.826237921 c 0 70 | 520.696292117 694.523773841 528.76743811 702.035765721 539.773352395 705.704403816 c 0 71 | 593.851381533 721.532119661 637.397237511 739.522361392 668.525559858 757.730847169 c 0 72 | 678.662990357 764.133434853 686.027528862 766.5 696 766.5 c 0 73 | 699.720717253 766.5 703.696324905 765.575895675 705.498688655 765.166267551 c 0 74 | 719.082850069 762.672126439 729.550689838 754.975962331 735.3781222 746.022556315 c 0 75 | 743.509751327 735.187535972 746.177387334 722.654095193 743.660161824 710.067967634 c 0 76 | 741.080732582 697.170821423 732.865858149 685.901888854 721.53200796 679.719788749 c 0 77 | 708.5283783 672.289143229 691.377755344 664.084173037 677.5 658.374342006 c 1 78 | 677.5 522.5 l 1 79 | 695 522.5 l 2 80 | 706.115365659 522.5 716.776370128 518.835754402 725.5 512.147210663 c 1 81 | 725.5 620 l 2 82 | 725.5 639.148780695 733.029863151 656.706537094 746.823583723 670.069203899 c 0 83 | 760.500889555 683.319093922 778.017949595 690.499999999 797 690.5 c 2 84 | 874 690.5 l 2 85 | 892.981305484 690.5 910.498700826 683.319490745 924.176416277 670.069203899 c 0 86 | 937.96964623 656.707012382 945.500000001 639.149656959 945.5 620 c 2 87 | 945.5 6 l 2 88 | 945.5 -5.82070391568 940.600028301 -17.1752836868 931.968969756 -25.2669010721 c 0 89 | 923.744710948 -32.9771437047 912.879439439 -37.5 901.5 -37.5 c 0 90 | 890.112071803 -37.5 879.156288356 -32.9050256973 871.125631329 -24.8743686708 c 0 91 | 862.928235886 -16.6769732277 858.5 -5.48766104579 858.5 6 c 2 92 | 858.5 22.5 l 1 93 | 810.5 22.5 l 1 94 | 810.5 -1 l 2 95 | 810.5 -12.3037425078 805.733143547 -23.0155937942 797.874368671 -30.8743686708 c 0 96 | 790.015593794 -38.7331435472 779.30374251 -43.5 768 -43.5 c 0 97 | 756.696257493 -43.5 745.984406204 -38.7331435468 738.125631329 -30.8743686708 c 0 98 | 730.266856453 -23.0155937942 725.5 -12.3037425079 725.5 -1 c 2 99 | 725.5 202.01671067 l 1 100 | 719.926438341 199.007648736 713.561093745 197.709405179 707.580220421 198.024187987 c 0 101 | 695.429503851 198.663699384 683.652320374 208.280708596 680.580489186 217.79228227 c 0 102 | 679.244240959 220.63337079 677.879999877 223.538314363 677.5 224.347790218 c 2 103 | 677.5 -26 l 2 104 | 677.5 -37.4876610459 673.071764114 -48.6769732275 664.874368671 -56.8743686708 c 0 105 | 656.676973228 -65.071764114 645.487661044 -69.5 634 -69.5 c 0 106 | 622.512258605 -69.5 611.416934273 -65.1286860963 603.031030244 -57.2669010721 c 0 107 | 594.399971696 -49.1752836823 589.500000002 -37.8207039204 589.5 -26 c 2 108 | 589.5 181.368920724 l 1 109 | 580.4965282 154.595399083 570.485654284 128.045396729 562.701563434 109.567942508 c 0 110 | 556.653707853 94.2733655855 545.800744331 88.5 533.5 88.5 c 0 111 | 521.686528378 88.5 510.509505582 94.565857109 504.075718668 104.859916167 c 0 112 | 496.585144339 117.344206715 492.5 130.356849778 492.5 144 c 0 113 | 492.5 155.264094617 495.344152957 166.819495521 500.229862964 176.590915533 c 0 114 | 530.909792471 242.859563268 557.649424835 327.299305346 578.676965081 424.5 c 1 115 | 556 424.5 l 2 116 | 542.80201216 424.5 530.037720179 429.213542481 520.625631329 438.625631329 c 0 117 | 514.642973274 444.608289385 510.502833604 451.951853025 508.316328566 459.910298527 c 1 118 | 502.876050488 450.158131996 493.774984451 442.160711148 482.595328275 438.758207092 c 0 119 | 468.901380301 434.590483796 454.420510789 438.85310945 444.598594184 448.358389659 c 0 120 | 437.422008742 455.153989543 430.578728029 461.780315657 424.070921645 468.240013971 c 1 121 | 424.402428328 465.856068192 424.579996463 463.435409755 424.600212267 461.000000123 c 0 122 | 424.502975843 449.285870937 421.345252249 438.976545455 414.394429134 429.121188036 c 0 123 | 406.745109337 419.166327439 395.974849735 412.500000002 383.099609375 412.5 c 2 124 | 187.900390625 412.5 l 2 125 | 175.025150254 412.5 164.254890704 419.166327383 156.605570817 429.121188103 c 0 126 | 149.654747852 438.976545313 146.497024156 449.285871223 146.399787733 460.999999878 c 0 127 | 146.406961249 461.8641975 146.430990052 462.721412643 146.472377372 463.5718034 c 1 128 | 139.878782477 456.656095767 133.19308392 449.922396829 126.415337393 443.371937282 c 0 129 | 119.670968233 436.94852942 110.675067204 432.5 100.700195312 432.5 c 0 130 | 96.3167080399 432.5 93.3352984004 433.273950513 87.6361225632 435.327960561 c 0 131 | 79.4595118257 438.176340516 69.2613678414 448.835612432 64.5974632565 457.477759669 c 0 132 | 59.3209570589 466.700387424 57.5099940639 475.09048167 57.5974391871 483.869286202 c 0 133 | 57.4769402727 488.708144568 56.9493868655 485.761273831 59.7341980924 498.85724029 c 0 134 | 60.5412048511 503.060748647 66.8555370343 517.563958238 74.2989664935 524.738516909 c 0 135 | 104.70436251 552.734803005 133.190098876 585.911503799 160.758681672 625.529430993 c 0 136 | 184.673621257 659.55439135 207.09185534 699.430266165 228.012288234 745.336610066 c 0 137 | 408.700195312 358.5 m 2 138 | 426.501056448 358.5 442.279314063 349.867994703 453.290426541 335.773770734 c 0 139 | 463.957519905 322.119891226 469.400390624 305.587893974 469.400390625 288 c 2 140 | 469.400390625 89.0348631429 l 2 141 | 469.471541262 71.177448332 468.005950787 56.7019885817 463.599456034 43.6634006835 c 0 142 | 458.222217269 29.1174791039 449.23306637 17.557646919 436.126047404 10.5536874771 c 0 143 | 419.335553512 1.61221101137 394.992089708 -0.811683334786 359.268185906 -1.5 c 0 144 | 346.513633396 -1.5 335.168099517 4.08789832571 326.724672228 12.6258208488 c 0 145 | 319.073552646 20.1931870291 312.191325603 34.2691337331 310.619782675 40.6783801994 c 0 146 | 306.376688778 57.8026176881 308.19753998 65.6324528722 314.355040004 76.2681347351 c 0 147 | 320.117776434 86.2219522032 330.750866383 94.4999999999 343.900390624 94.5000000001 c 2 148 | 344.520196732 94.5000000001 l 1 149 | 345.138449821 94.4561510485 l 2 150 | 354.22518674 93.8116837673 362.109822774 93.4999999999 368.700195312 93.5 c 0 151 | 374.260787449 93.5 378.707761351 93.7057897749 381.599609375 93.9418684114 c 2 152 | 381.599609375 260.5 l 1 153 | 290.200195312 260.5 l 1 154 | 290.200195312 -42.7982352067 l 2 155 | 290.483359524 -55.0766781701 286.41664072 -66.7436133335 278.756069371 -76.9814716088 c 0 156 | 270.441869262 -87.8761441648 259.091756149 -93.5000000002 246.299804688 -93.5 c 0 157 | 233.066601888 -93.5 221.170528658 -86.7273715483 213.5 -76.5 c 0 158 | 206.238762763 -66.8183503501 202.400390625 -55.1099873021 202.400390625 -43 c 2 159 | 202.400390625 260.5 l 1 160 | 126.299804688 260.5 l 2 161 | 113.362814799 260.5 101.54151222 266.775358652 93.8112347894 277.119256711 c 0 162 | 86.921317338 286.604837939 83.6823998537 298.563652244 83.221703122 308.86562298 c 2 163 | 83.1955422332 310.000000023 l 1 164 | 83.2048471544 310.403475954 l 2 165 | 83.4751776174 322.125427476 86.8512199936 333.307568641 94.0860009574 342.743705262 c 0 166 | 101.971556992 352.74003049 113.710574828 358.5 126.299804688 358.5 c 2 167 | 408.700195312 358.5 l 2 168 | 810.5 123.5 m 1 169 | 858.5 123.5 l 1 170 | 858.5 591.5 l 1 171 | 810.5 591.5 l 1 172 | 810.5 123.5 l 1 173 | 185.055218334 507.396146351 m 1 174 | 185.993812738 507.465066384 186.94239092 507.5 187.900390625 507.5 c 2 175 | 383.099609375 507.5 l 2 176 | 384.423041173 507.5 385.744225999 507.430145647 387.057051911 507.293315793 c 1 177 | 369.822034696 526.886365258 356.520093652 544.617649368 347.236552985 560.591226536 c 0 178 | 318.886272474 607.703467233 297.623142388 643.116872542 285.865327418 662.785973448 c 1 179 | 268.261054154 626.902496822 248.069329559 593.301309517 223.431118565 558.456926732 c 0 180 | 211.054787944 540.635975355 198.26264374 523.611794807 185.055218334 507.396146351 c 1 181 | 725.5 305.71757815 m 1 182 | 725.5 434.852789337 l 1 183 | 716.776370128 428.164245598 706.115365659 424.5 695 424.5 c 2 184 | 677.5 424.5 l 1 185 | 677.5 392 l 1 186 | 677.5 392 677.534757366 391.358296071 678.429625053 389.904136079 c 2 187 | 678.91803169 389.171526124 l 1 188 | 679.234849678 388.611001991 l 2 189 | 693.163976291 363.967162599 708.584468026 336.338003528 725.5 305.71757815 c 1 190 | EndSplineSet 191 | EndChar 192 | EndChars 193 | EndSplineFont 194 | -------------------------------------------------------------------------------- /sourceFonts/reiwa.sfd: -------------------------------------------------------------------------------- 1 | SplineFontDB: 3.0 2 | FontName: Untitled2 3 | FullName: Untitled2 4 | FamilyName: Untitled2 5 | Weight: Regular 6 | Copyright: Copyright (c) 2019, Takahiro Minami 7 | UComments: "2019-4-2: Created with FontForge (http://fontforge.org)" 8 | Version: 001.000 9 | ItalicAngle: 0 10 | UnderlinePosition: -100 11 | UnderlineWidth: 50 12 | Ascent: 800 13 | Descent: 200 14 | InvalidEm: 0 15 | LayerCount: 2 16 | Layer: 0 0 "Back" 1 17 | Layer: 1 0 "Fore" 0 18 | XUID: [1021 842 -796345161 11493245] 19 | OS2Version: 0 20 | OS2_WeightWidthSlopeOnly: 0 21 | OS2_UseTypoMetrics: 1 22 | CreationTime: 1554163552 23 | ModificationTime: 1554163593 24 | OS2TypoAscent: 0 25 | OS2TypoAOffset: 1 26 | OS2TypoDescent: 0 27 | OS2TypoDOffset: 1 28 | OS2TypoLinegap: 0 29 | OS2WinAscent: 0 30 | OS2WinAOffset: 1 31 | OS2WinDescent: 0 32 | OS2WinDOffset: 1 33 | HheadAscent: 0 34 | HheadAOffset: 1 35 | HheadDescent: 0 36 | HheadDOffset: 1 37 | OS2Vendor: 'PfEd' 38 | DEI: 91125 39 | Encoding: ISO8859-1 40 | UnicodeInterp: none 41 | NameList: AGL For New Fonts 42 | DisplaySize: -128 43 | AntiAlias: 1 44 | FitToEm: 0 45 | WinInfo: 0 8 2 46 | BeginChars: 256 1 47 | 48 | StartChar: uni0000 49 | Encoding: 0 0 0 50 | Width: 1024 51 | VWidth: 931 52 | Flags: HW 53 | LayerCount: 2 54 | Fore 55 | SplineSet 56 | 678 743 m 0 57 | 684 747 690 749 696 749 c 0 58 | 697.333333333 749 699.333333333 748.666666667 702 748 c 0 59 | 710.666666667 746.666666667 717 742.666666667 721 736 c 0 60 | 726.333333333 729.333333333 728.166666667 721.833333333 726.5 713.5 c 128 61 | 724.833333333 705.166666667 720.333333333 699 713 695 c 0 62 | 699 687 683.666666667 679.666666667 667 673 c 0 63 | 662.333333333 671.666666667 660 668.666666667 660 664 c 2 64 | 660 512 l 2 65 | 660 507.333333333 662.333333333 505 667 505 c 2 66 | 695 505 l 2 67 | 703.666666667 505 711.166666667 502 717.5 496 c 128 68 | 723.833333333 490 727 482.5 727 473.5 c 128 69 | 727 464.5 723.833333333 457 717.5 451 c 128 70 | 711.166666667 445 703.666666667 442 695 442 c 2 71 | 667 442 l 2 72 | 662.333333333 442 660 440 660 436 c 2 73 | 660 392 l 2 74 | 660 388 661.333333333 384 664 380 c 0 75 | 681.333333333 349.333333333 701 314 723 274 c 0 76 | 727 265.333333333 729 257 729 249 c 0 77 | 729 240.333333333 726.666666667 231.333333333 722 222 c 0 78 | 719.333333333 217.333333333 714.833333333 215.166666667 708.5 215.5 c 128 79 | 702.166666667 215.833333333 698.333333333 218.666666667 697 224 c 0 80 | 686.333333333 246.666666667 675 271 663 297 c 0 81 | 662.333333333 297.666666667 661.666666667 298 661 298 c 128 82 | 660.333333333 298 660 297.333333333 660 296 c 2 83 | 660 -26 l 2 84 | 660 -33.3333333333 657.5 -39.5 652.5 -44.5 c 128 85 | 647.5 -49.5 641.333333333 -52 634 -52 c 128 86 | 626.666666667 -52 620.333333333 -49.5 615 -44.5 c 128 87 | 609.666666667 -39.5 607 -33.3333333333 607 -26 c 2 88 | 607 300 l 2 89 | 607 301 607 301 607 301 c 129 90 | 607 301 607 301 607 301 c 1 91 | 586.333333333 224.333333333 566 162.333333333 546 115 c 0 92 | 544 109 539.833333333 106 533.5 106 c 128 93 | 527.166666667 106 522.333333333 108.666666667 519 114 c 0 94 | 513 124 510 134 510 144 c 0 95 | 510 152.666666667 512 161 516 169 c 0 96 | 549.333333333 241 577 330 599 436 c 0 97 | 599.666666667 440 598 442 594 442 c 2 98 | 556 442 l 2 99 | 546.666666667 442 539 445 533 451 c 128 100 | 527 457 524 464.5 524 473.5 c 128 101 | 524 482.5 527 490 533 496 c 128 102 | 539 502 546.666666667 505 556 505 c 2 103 | 601 505 l 2 104 | 605 505 607 507.333333333 607 512 c 2 105 | 607 646 l 2 106 | 607 648 606.5 649.5 605.5 650.5 c 128 107 | 604.5 651.5 603 652 601 652 c 0 108 | 587 647.333333333 574.333333333 643.666666667 563 641 c 0 109 | 556.333333333 639 550 639.833333333 544 643.5 c 128 110 | 538 647.166666667 533.666666667 652.333333333 531 659 c 0 111 | 528.333333333 665 528.5 671 531.5 677 c 128 112 | 534.5 683 539 687 545 689 c 0 113 | 599.666666667 705 644 723 678 743 c 0 114 | 793 112 m 2 115 | 793 108 795.333333333 106 800 106 c 2 116 | 870 106 l 2 117 | 874 106 876 108 876 112 c 2 118 | 876 602 l 2 119 | 876 606.666666667 874 609 870 609 c 2 120 | 800 609 l 2 121 | 795.333333333 609 793 606.666666667 793 602 c 2 122 | 793 112 l 2 123 | 743 620 m 2 124 | 743 634.666666667 748.333333333 647.166666667 759 657.5 c 128 125 | 769.666666667 667.833333333 782.333333333 673 797 673 c 2 126 | 874 673 l 2 127 | 888.666666667 673 901.333333333 667.833333333 912 657.5 c 128 128 | 922.666666667 647.166666667 928 634.666666667 928 620 c 2 129 | 928 6 l 2 130 | 928 -1.33333333333 925.333333333 -7.5 920 -12.5 c 128 131 | 914.666666667 -17.5 908.5 -20 901.5 -20 c 128 132 | 894.5 -20 888.5 -17.5 883.5 -12.5 c 128 133 | 878.5 -7.5 876 -1.33333333333 876 6 c 2 134 | 876 34 l 2 135 | 876 38 874 40 870 40 c 2 136 | 800 40 l 2 137 | 795.333333333 40 793 38 793 34 c 2 138 | 793 -1 l 2 139 | 793 -7.66666666667 790.5 -13.5 785.5 -18.5 c 128 140 | 780.5 -23.5 774.666666667 -26 768 -26 c 128 141 | 761.333333333 -26 755.5 -23.5 750.5 -18.5 c 128 142 | 745.5 -13.5 743 -7.66666666667 743 -1 c 2 143 | 743 620 l 2 144 | 408.700195312 341 m 2 145 | 420.900065104 341 431.166666667 335.666666667 439.5 325 c 128 146 | 447.766927083 314.418333333 451.900390625 302.085 451.900390625 288 c 2 147 | 451.900390625 89 l 2 148 | 451.966796875 72.3333333333 450.366536458 59.1666666667 447.099609375 49.5 c 0 149 | 443.033203125 38.5 436.633463542 30.6666666667 427.900390625 26 c 0 150 | 416.633463542 20 393.699869792 16.6666666667 359.099609375 16 c 0 151 | 351.699869792 16 345.033203125 19 339.099609375 25 c 128 152 | 333.033203125 31 329.033203125 38.3333333333 327.099609375 47 c 0 153 | 325.033203125 54.3333333333 325.833333333 61.1666666667 329.5 67.5 c 128 154 | 333.166666667 73.8333333333 337.966796875 77 343.900390625 77 c 0 155 | 353.300130208 76.3333333333 361.566731771 76 368.700195312 76 c 0 156 | 376.900065104 76 383.033203125 76.3333333333 387.099609375 77 c 0 157 | 391.699869792 77.6666666667 394.900065104 79 396.700195312 81 c 0 158 | 398.299804688 83.0866242038 399.099609375 86.4199575372 399.099609375 91 c 2 159 | 399.099609375 271 l 2 160 | 399.033203125 275.666666667 397.166666667 278 393.5 278 c 2 161 | 278.299804688 278 l 2 162 | 274.566731771 278 272.700195312 275.666666667 272.700195312 271 c 2 163 | 272.700195312 -43 l 2 164 | 272.900065104 -51.6666666667 270.366536458 -59.3333333333 265.099609375 -66 c 0 165 | 260.366536458 -72.6666666667 254.099934896 -76 246.299804688 -76 c 0 166 | 238.766601562 -76 232.5 -72.6666666667 227.5 -66 c 128 167 | 222.43359375 -59.2447916667 219.900390625 -51.578125 219.900390625 -43 c 2 168 | 219.900390625 271 l 2 169 | 219.966796875 275.666666667 218.099934896 278 214.299804688 278 c 2 170 | 126.299804688 278 l 2 171 | 118.766601562 278 112.633463542 281.166666667 107.900390625 287.5 c 128 172 | 103.300130208 293.833333333 100.900065104 301.333333333 100.700195312 310 c 0 173 | 100.900065104 318.666666667 103.300130208 326 107.900390625 332 c 128 174 | 112.633463542 338 118.766601563 341 126.299804688 341 c 2 175 | 408.700195312 341 l 2 176 | 383.099609375 490 m 2 177 | 390.366536458 490 396.099934896 487.166666667 400.299804688 481.5 c 0 178 | 404.766601562 475.833333333 407.033203125 469 407.099609375 461 c 128 179 | 407.033203125 453 404.766601562 445.833333333 400.299804688 439.5 c 0 180 | 395.433268229 433.166666667 389.699869792 430 383.099609375 430 c 2 181 | 187.900390625 430 l 2 182 | 181.300130208 430 175.566731771 433.166666667 170.700195312 439.5 c 0 183 | 166.233398438 445.833333333 163.966796875 453 163.900390625 461 c 128 184 | 163.966796875 469 166.233398438 475.833333333 170.700195312 481.5 c 0 185 | 175.566731771 487.166666667 181.300130208 490 187.900390625 490 c 2 186 | 383.099609375 490 l 2 187 | 243.900390625 738 m 0 188 | 252.633463542 756.666666667 265.433268229 766 282.299804688 766 c 0 189 | 298.766601562 766 311.833333333 757 321.5 739 c 0 190 | 345.833333333 691 371.300130208 650.5 397.900390625 617.5 c 0 191 | 416.633463542 594.5 446.366536458 562.333333333 487.099609375 521 c 0 192 | 493.699869792 514.333333333 497.699869792 506.666666667 499.099609375 498 c 0 193 | 499.699869792 495.333333333 499.966796875 492.666666667 499.900390625 490 c 0 194 | 499.966796875 485.333333333 498.099934896 479 494.299804688 471 c 0 195 | 490.766601562 463 485.166666667 457.833333333 477.5 455.5 c 128 196 | 469.833333333 453.166666667 462.900065104 455 456.700195312 461 c 0 197 | 410.233398438 505 378.766601562 541.166666667 362.299804688 569.5 c 0 198 | 316.766601562 645.166666667 291.699869792 687 287.099609375 695 c 0 199 | 286.366536458 696.333333333 285.300130208 697 283.900390625 697 c 128 200 | 282.633463542 697 281.833333333 696.333333333 281.5 695 c 0 201 | 263.166666667 653 239.033203125 610.833333333 209.099609375 568.5 c 0 202 | 179.699869792 526.166666667 148.099934896 488.666666667 114.299804688 456 c 0 203 | 110.099934896 452 105.566731771 450 100.700195312 450 c 0 204 | 98.9000651042 450 97.3001302083 450.333333333 95.900390625 451 c 0 205 | 89.3001302083 453 83.966796875 458 79.900390625 466 c 0 206 | 76.6334635417 471.333333333 75.033203125 477.333333333 75.099609375 484 c 0 207 | 75.033203125 486.666666667 75.3001302083 488.666666667 75.900390625 490 c 0 208 | 77.3001302083 499.333333333 80.7666015625 506.666666667 86.2998046875 512 c 0 209 | 117.433268229 540.666666667 147.033203125 575.166666667 175.099609375 615.5 c 0 210 | 199.699869792 650.5 222.633463542 691.333333333 243.900390625 738 c 0 211 | EndSplineSet 212 | EndChar 213 | EndChars 214 | EndSplineFont 215 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3000.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3000 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3001.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3001 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3002.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3002 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3100.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3100 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3101.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3101 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/f3102.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | f3102 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b0.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b0 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b1 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b2 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b3 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b4 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe0b5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe0b5 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe566.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe566 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe567.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe567 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sourceFonts/svg/fe568.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fe568 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/test_glyphs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import unittest 5 | import fontforge 6 | 7 | def check_overflow(ttfpath): 8 | f = fontforge.open(ttfpath) 9 | for g in f.glyphs(): 10 | if g.isWorthOutputting(): 11 | bb = g.boundingBox() 12 | overflowX = bb[2] - bb[0] 13 | overflowY = bb[3] - bb[1] 14 | if overflowX > 1024 or overflowY > 1024: 15 | return False 16 | return True 17 | 18 | 19 | 20 | class TestGlyphs(unittest.TestCase): 21 | """test glyph 22 | """ 23 | 24 | def test_regular(self): 25 | """check_overflow for regular 26 | """ 27 | actual = check_overflow('./dist/Cica-Regular.ttf') 28 | self.assertEqual(True, actual) 29 | 30 | def test_regular_italic(self): 31 | """check_overflow for regular 32 | """ 33 | actual = check_overflow('./dist/Cica-RegularItalic.ttf') 34 | self.assertEqual(True, actual) 35 | 36 | def test_bold(self): 37 | """check_overflow for bold 38 | """ 39 | actual = check_overflow('./dist/Cica-Bold.ttf') 40 | self.assertEqual(True, actual) 41 | 42 | def test_bold_italic(self): 43 | """check_overflow for bold italic 44 | """ 45 | actual = check_overflow('./dist/Cica-BoldItalic.ttf') 46 | self.assertEqual(True, actual) 47 | 48 | if __name__ == "__main__": 49 | unittest.main() 50 | -------------------------------------------------------------------------------- /tmp/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miiton/Cica/6ab81ed2f16eada4a76b0c9cef3b014f667ef3f5/tmp/.gitkeep --------------------------------------------------------------------------------