├── .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 | | [](screenshots/macvim.png) | [](screenshots/cicachange.gif) |
9 | | **Julia Ready** | **GVim on Windows** |
10 | | [](screenshots/julia.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('
' % (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 |
--------------------------------------------------------------------------------
/sourceFonts/svg/f3001.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/f3002.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/f3100.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/f3101.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/f3102.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b1.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b2.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b3.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b4.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe0b5.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe566.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe567.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sourceFonts/svg/fe568.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------