├── .gitignore
├── LICENSE
├── README.md
├── build.sh
├── config_sample.py
├── fira.fea
├── fira.glyphs
├── fira
├── FiraCode-Bold.otf
├── FiraCode-Bold.ttf
├── FiraCode-Light.otf
├── FiraCode-Light.ttf
├── FiraCode-Medium.otf
├── FiraCode-Medium.ttf
├── FiraCode-Regular.otf
├── FiraCode-Regular.ttf
├── FiraCode-Retina.otf
├── FiraCode-Retina.ttf
├── FiraCode-SemiBold.otf
└── FiraCode-SemiBold.ttf
├── fonts
├── Anonymous Pro
│ ├── build.sh
│ └── config.py
├── DejaVu Sans Mono
│ ├── build.sh
│ └── config.py
├── Fantasque Sans Mono
│ ├── build.sh
│ └── config.py
├── Hack
│ ├── build.sh
│ └── config.py
├── Hermit
│ ├── build.sh
│ └── config.py
├── IBM Plex Mono
│ ├── build.sh
│ └── config.py
├── Roboto Mono
│ ├── build.sh
│ └── config.py
├── Source Code Pro
│ ├── build.sh
│ └── config.py
├── Space Mono
│ ├── build.sh
│ └── config.py
└── Ubuntu Mono
│ ├── build.sh
│ └── config.py
├── index.html
├── input
├── Anonymous Pro
│ ├── AnonymousPro-Bold.ttf
│ ├── AnonymousPro-BoldItalic.ttf
│ ├── AnonymousPro-Italic.ttf
│ ├── AnonymousPro-Regular.ttf
│ └── OFL.txt
├── DejaVu Sans Mono
│ ├── DejaVuSansMono-Bold.ttf
│ ├── DejaVuSansMono-BoldOblique.ttf
│ ├── DejaVuSansMono-Oblique.ttf
│ ├── DejaVuSansMono.ttf
│ └── LICENSE
├── Fantasque Sans Mono
│ ├── FantasqueSansMono-Bold.otf
│ ├── FantasqueSansMono-Bold.ttf
│ ├── FantasqueSansMono-BoldItalic.otf
│ ├── FantasqueSansMono-BoldItalic.ttf
│ ├── FantasqueSansMono-Italic.otf
│ ├── FantasqueSansMono-Italic.ttf
│ ├── FantasqueSansMono-Regular.otf
│ ├── FantasqueSansMono-Regular.ttf
│ └── LICENSE.txt
├── Hack
│ ├── Hack-Bold.ttf
│ ├── Hack-BoldItalic.ttf
│ ├── Hack-Italic.ttf
│ └── Hack-Regular.ttf
├── Hermit
│ ├── Hermit-Bold.otf
│ ├── Hermit-BoldItalic.otf
│ ├── Hermit-Light.otf
│ ├── Hermit-LightItalic.otf
│ ├── Hermit-Regular.otf
│ ├── Hermit-RegularItalic.otf
│ └── LICENSE
├── IBM Plex Mono
│ ├── IBMPlexMono-Bold.otf
│ ├── IBMPlexMono-BoldItalic.otf
│ ├── IBMPlexMono-ExtraLight.otf
│ ├── IBMPlexMono-ExtraLightItalic.otf
│ ├── IBMPlexMono-Italic.otf
│ ├── IBMPlexMono-Light.otf
│ ├── IBMPlexMono-LightItalic.otf
│ ├── IBMPlexMono-Medium.otf
│ ├── IBMPlexMono-MediumItalic.otf
│ ├── IBMPlexMono-Regular.otf
│ ├── IBMPlexMono-SemiBold.otf
│ ├── IBMPlexMono-SemiBoldItalic.otf
│ ├── IBMPlexMono-Text.otf
│ ├── IBMPlexMono-TextItalic.otf
│ ├── IBMPlexMono-Thin.otf
│ ├── IBMPlexMono-ThinItalic.otf
│ └── LICENSE.txt
├── Roboto Mono
│ ├── LICENSE.txt
│ ├── RobotoMono-Bold.ttf
│ ├── RobotoMono-BoldItalic.ttf
│ ├── RobotoMono-ExtraLight.ttf
│ ├── RobotoMono-ExtraLightItalic.ttf
│ ├── RobotoMono-Italic.ttf
│ ├── RobotoMono-Light.ttf
│ ├── RobotoMono-LightItalic.ttf
│ ├── RobotoMono-Medium.ttf
│ ├── RobotoMono-MediumItalic.ttf
│ ├── RobotoMono-Regular.ttf
│ ├── RobotoMono-SemiBold.ttf
│ ├── RobotoMono-SemiBoldItalic.ttf
│ ├── RobotoMono-Thin.ttf
│ └── RobotoMono-ThinItalic.ttf
├── Source Code Pro
│ ├── OFL.txt
│ ├── SourceCodePro-Black.ttf
│ ├── SourceCodePro-BlackItalic.ttf
│ ├── SourceCodePro-Bold.ttf
│ ├── SourceCodePro-BoldItalic.ttf
│ ├── SourceCodePro-ExtraBold.ttf
│ ├── SourceCodePro-ExtraBoldItalic.ttf
│ ├── SourceCodePro-ExtraLight.ttf
│ ├── SourceCodePro-ExtraLightItalic.ttf
│ ├── SourceCodePro-Italic.ttf
│ ├── SourceCodePro-Light.ttf
│ ├── SourceCodePro-LightItalic.ttf
│ ├── SourceCodePro-Medium.ttf
│ ├── SourceCodePro-MediumItalic.ttf
│ ├── SourceCodePro-Regular.ttf
│ ├── SourceCodePro-SemiBold.ttf
│ └── SourceCodePro-SemiBoldItalic.ttf
├── Space Mono
│ ├── OFL.txt
│ ├── SpaceMono-Bold.ttf
│ ├── SpaceMono-BoldItalic.ttf
│ ├── SpaceMono-Italic.ttf
│ └── SpaceMono-Regular.ttf
└── Ubuntu Mono
│ ├── UFL.txt
│ ├── UbuntuMono-Bold.ttf
│ ├── UbuntuMono-BoldItalic.ttf
│ ├── UbuntuMono-Italic.ttf
│ └── UbuntuMono-Regular.ttf
├── ligate.py
├── py
├── extract_fira_data.py
├── fontname.py
└── utils.py
├── scripts
├── build_family.sh
├── clean.sh
├── fetch_fira.sh
├── generate_build.sh
├── list_fonts.sh
├── progress_bar.sh
├── release.sh
├── showcases.sh
└── update_builds.sh
├── server.sh
├── showcase.gif
├── ssi-server
├── LICENSE
├── README.md
├── about.html
├── index.html
├── ssi.py
├── ssi_expander.py
└── ssi_server.py
└── test
├── UnicodeBMPFallback.ttf
├── fira.css
└── showcases.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | ignore
2 | output
3 | logs
4 | __pycache__
5 | tmp.fea
6 | fonts.css
7 | fonts.html
8 | .vscode
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Ezequiel Leonel Ramis Folberg
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Liga
2 |
3 | **Add ligatures to any programming font!**
4 |
5 | 
6 |
7 | This script copies the ligatures (glyphs and rendering information) from [FiraCode](https://github.com/tonsky/FiraCode) into any other TrueType or OpenType font.
8 |
9 | This repo contains a [Fontforge python script](ligate.py) that you can use to add the FiraCode ligatures to any font, as well as submodules for some popular programming fonts and [another script](build.sh) for ligating all of them at once.
10 |
11 | Pre-ligated versions are available under [releases](https://github.com/EzequielRamis/liga/releases).
12 |
13 | ## Requirements
14 |
15 | **Using the Fonts**: See the [FiraCode README](https://github.com/tonsky/FiraCode) for a list of supported editors.
16 |
17 | **Script**: This script requires FontForge python bindings. For Debian/Ubuntu they are available in `python-fontforge` package. For Arch, OpenSUSE and NixOS, they are included in the `fontforge` package. For macOS, they are available via brew (`brew install fontforge`).
18 |
19 | It also requires a python library called `glyphsLib`.
20 |
21 | ## Using the Script
22 |
23 | ### Automatic
24 |
25 | Use automatic mode to easily convert a font family.
26 |
27 | 1. Generate a script and configuration template with:
28 |
29 | ```
30 | $ scripts/generate_build.sh "FONT_FAMILY_NAME"
31 | ```
32 |
33 | For example:
34 |
35 | ```
36 | $ scripts/generate_build.sh "Space Mono"
37 | ```
38 |
39 | 2. Put the family font(s) into `input/FONT_FAMILY_NAME`
40 | 3. Go to `fonts/FONT_FAMILY_NAME`
41 | 4. Edit `config.py` to disable ligatures you don't want, change glyphs scale factor, and/or enable any (non-ligature) characters you want from FiraCode in addition to the ligatures.
42 | 5. Edit `build.sh` to edit the output family font name, the output directory, the ligatures' weight and many more settings.
43 | 6. Return to the git root directory
44 | 7. Run
45 | ```
46 | $ fonts/FONT_FAMILY_NAME/build.sh
47 | ```
48 | The ligated fonts will be located in the `output` directory.
49 |
50 | ### Manual
51 |
52 | 1. Move/copy the font you want to ligate into `input` (or somewhere else convenient).
53 | 2. Edit `config_sample.py` to disable any ligatures you don't want, etc.
54 | 3. Run the script:
55 |
56 | ```
57 | $ python ligate.py path/to/input/font.ttf
58 | --output-dir=path/to/output/dir/ \
59 | --output-name='Name of Ligated Font'
60 | ```
61 |
62 | For exmaple:
63 |
64 | ```
65 | $ python ligate.py input/Hack/Hack-Regular.ttf
66 | --output-dir='output/Ligated Hack' \
67 | --output-name='Liga Hack'
68 | ```
69 |
70 | Which will produce `output/Ligated Hack/LigaHack-Regular.ttf`.
71 |
72 | The font weight will be inherited from the original file; the font name will be replaced with whatever you specified in `--output-name`. You can also use `--prefix` instead, in which case the original name will be preserved and whatever you put in `--prefix` will be prepended to it.
73 |
74 | `ligate.py` supports some additional command line options to, for example, change which font ligatures are copied from or enable copying of individual character glyphs; run `python ligate.py --help` to list them.
75 |
76 | ## FAQ
77 |
78 | **I don't know what do the `features`' values from a `config.py` mean? Where are they from?**
79 |
80 | In a `config.py` you have a dictionary called `"features"` with keys and values. Each key is the name of some feature defined in `fira.fea`, a file that specifies font properties, and each value is a list of strings, that may be empty.
81 |
82 | In this file. each feature contains rules that makes certain ligatures work. The majority of these rules are grouped into named blocks called `lookups`. I say "named" because these are the strings that are contained in the corresponding value's list.
83 |
84 | If you don't know how to read that `fira.fea` file, I recommend you to [visit this page](https://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html).
85 |
86 | ## Credit
87 |
88 | This repo is a redesign of the [ToxicFrog/Ligaturizer](https://github.com/ToxicFrog/Ligaturizer) implementation because, principally, it does not work with the Firacode's ligatures above v3.1, missing incredible features like infinite arrow combinations.
89 |
90 | ## Contributions
91 |
92 | Contributions always welcome! Please submit a Pull Request, or create an Issue if you have an idea for a feature/enhancement (or bug).
93 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | shopt -s globstar
4 |
5 | pushd $(dirname "$0") || exit
6 |
7 | builds=(fonts/**/build.sh)
8 |
9 | printf "Building %d font families\n" ${#builds[@]}
10 | scripts/clean.sh
11 | for b in "${builds[@]}"; do
12 | "$b"
13 | done
14 |
15 | popd || exit
16 |
--------------------------------------------------------------------------------
/config_sample.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fira/FiraCode-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Bold.otf
--------------------------------------------------------------------------------
/fira/FiraCode-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Bold.ttf
--------------------------------------------------------------------------------
/fira/FiraCode-Light.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Light.otf
--------------------------------------------------------------------------------
/fira/FiraCode-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Light.ttf
--------------------------------------------------------------------------------
/fira/FiraCode-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Medium.otf
--------------------------------------------------------------------------------
/fira/FiraCode-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Medium.ttf
--------------------------------------------------------------------------------
/fira/FiraCode-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Regular.otf
--------------------------------------------------------------------------------
/fira/FiraCode-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Regular.ttf
--------------------------------------------------------------------------------
/fira/FiraCode-Retina.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Retina.otf
--------------------------------------------------------------------------------
/fira/FiraCode-Retina.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-Retina.ttf
--------------------------------------------------------------------------------
/fira/FiraCode-SemiBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-SemiBold.otf
--------------------------------------------------------------------------------
/fira/FiraCode-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/fira/FiraCode-SemiBold.ttf
--------------------------------------------------------------------------------
/fonts/Anonymous Pro/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | # PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | OUTPUT_NAME="Liganon"
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$OUTPUT_NAME"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Anonymous Pro"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/OFL.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Anonymous Pro/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/DejaVu Sans Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | # OUTPUT_NAME=""
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$PREFIX""DejaVu Sans Mono"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/DejaVu Sans Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/LICENSE" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/DejaVu Sans Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Fantasque Sans Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | # OUTPUT_NAME=""
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$PREFIX""Fantasque Sans Mono"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Fantasque Sans Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/LICENSE.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Fantasque Sans Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | # "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | # "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | # "question_period",
134 | # "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Hack/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | # OUTPUT_NAME=""
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$PREFIX""Hack"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Hack"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | # cp "$INPUT_DIR/LICENSE.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Hack/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Hermit/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | # PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | OUTPUT_NAME="Liga Kermit"
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$OUTPUT_NAME"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Hermit"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/LICENSE" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Hermit/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | # "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | # "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | # "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | # "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | # "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | # "question_equal",
133 | # "question_period",
134 | # "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | # "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/IBM Plex Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | # PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | OUTPUT_NAME="Liga Flex Mono"
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$OUTPUT_NAME"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/IBM Plex Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/LICENSE.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/IBM Plex Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | # "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | # "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | # "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Roboto Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | # OUTPUT_NAME=""
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$PREFIX""Roboto Mono"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Roboto Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/LICENSE.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Roboto Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Source Code Pro/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | # PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | OUTPUT_NAME="Liga Src"
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$OUTPUT_NAME"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Source Code Pro"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/OFL.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Source Code Pro/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 0.95,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | # "colon",
31 | # "equal",
32 | "exclam",
33 | "greater",
34 | # "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | # "lowercase_hyphen",
146 | # "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | # "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Space Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | # OUTPUT_NAME=""
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$PREFIX""Space Mono"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Space Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/OFL.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Space Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | "ampersand",
24 | "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | "colon",
31 | "equal",
32 | "exclam",
33 | "greater",
34 | "hyphen",
35 | "less",
36 | "numbersign",
37 | # "percent",
38 | "period",
39 | "plus",
40 | # "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | "period_period",
129 | # "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | # "question_period",
134 | # "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/fonts/Ubuntu Mono/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
4 |
5 | # Project root path relative to this .sh file
6 | LIGA_DIR=$SRC/../..
7 | SCRIPTS_DIR=$LIGA_DIR/scripts
8 | source "$SCRIPTS_DIR"/build_family.sh
9 | declare -A FONT_WEIGHT
10 |
11 | # String to prefix the name of the generated font with.
12 | # PREFIX="Liga "
13 |
14 | # Name of the generated font. Completely replaces the original and prefix
15 | # variable will be ignored.
16 | OUTPUT_NAME="Ubuntu Mono Ligated"
17 |
18 | # Where the generated font files will be located
19 | OUTPUT_DIR="$LIGA_DIR/output/$OUTPUT_NAME"
20 |
21 | # Where the input font files are located
22 | INPUT_DIR="$LIGA_DIR/input/Ubuntu Mono"
23 |
24 | # The python file to copy the configuration from.
25 | CONFIG="$SRC/config.py"
26 |
27 | # The variable below is a associative array in which keys must be the basename
28 | # of each font file (without extensions), and values the following options:
29 | # - Light
30 | # - Regular
31 | # - Retina
32 | # - Medium
33 | # - SemiBold
34 | # - Bold
35 | # This serves the purpose of handwrite the weight of the FiraCode file in case
36 | # the automatic weight detection doesn't fit well.
37 |
38 | FONT_WEIGHT=(
39 | # Example
40 | # ["IBMPlexMono-Thin"]="Light"
41 | # ["IBMPlexMono-Regular"]="Regular"
42 | # ["IBMPlexMono-Text"]="Retina"
43 | # ["IBMPlexMono-Bold"]="Bold"
44 | )
45 |
46 | # If this variable is set to true, only the files specified in $FONT_WEIGHT
47 | # will be ligated. Otherwise, all the font files will also be.
48 | FILTER_BY_FONT_WEIGHT=false
49 |
50 | # Copy glyphs for (some) individual characters from the ligature font as well.
51 | # This will result in punctuation that matches the ligatures more closely, but
52 | # may not fit in as well with the rest of the font.
53 | COPY_GLYPHS=true
54 |
55 | # Remove the currently existing ligatures from the input font file. It is
56 | # recommended in case of glitches presented in the resulting font.
57 | REMOVE_ORIGINAL_LIGATURES=true
58 |
59 | pushd "$LIGA_DIR" || exit
60 | build_family
61 | popd || exit
62 |
63 | # Finally you could copy the font license to the output
64 | # directory, like:
65 | cp "$INPUT_DIR/UFL.txt" "$OUTPUT_DIR"
66 |
--------------------------------------------------------------------------------
/fonts/Ubuntu Mono/config.py:
--------------------------------------------------------------------------------
1 | # This is an autogenerated configuration that includes, principally, a set of
2 | # curated features that ligate.py will attempt to copy from Fira Code to your
3 | # output font. Each feature may have a list of lookups (it can also have an
4 | # empty list). Features/lookups that aren't present in the version of Fira Code
5 | # you're using will be skipped. To disable features/lookups, simply comment
6 | # them out in this file.
7 | #
8 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
9 |
10 | config = {
11 | # When copying character glyphs from FiraCode, sometimes it is necessary to
12 | # adjust manually the glyph size by a scale factor. It will be ignored if
13 | # it's less than or equal to 0.
14 | "scale": 1.0,
15 | # Like above, sometimes it is necessary to translate it vertically by a
16 | # factor and direction. It can be any float, including zero and negatives.
17 | "yTranslate": 0.0,
18 | # Copy glyphs for individual characters from the ligature font as well.
19 | # Each item value is a postscript name from the FiraCode family, that can
20 | # be queried from the FontForge's GUI. It's also useful for characters
21 | # outside ligature contexts.
22 | "glyphs": [
23 | # "ampersand",
24 | # "asciicircum",
25 | "asciitilde",
26 | "asterisk",
27 | "asteriskmath",
28 | "backslash",
29 | "bar",
30 | # "colon",
31 | # "equal",
32 | # "exclam",
33 | # "greater",
34 | "hyphen",
35 | # "less",
36 | # "numbersign",
37 | # "percent",
38 | # "period",
39 | # "plus",
40 | # "question",
41 | # "semicolon",
42 | "slash",
43 | "underscore",
44 | # "at",
45 | # "braceleft",
46 | # "braceright",
47 | # "bracketleft",
48 | # "bracketright",
49 | # "dollar",
50 | # "parenleft",
51 | # "parenright",
52 | ],
53 | "features": {
54 | "calt": [
55 | "less_bar_greater",
56 | "bar_bar_bar_greater",
57 | "less_bar_bar_bar",
58 | "bar_bar_greater",
59 | "less_bar_bar",
60 | "bar_greater",
61 | "less_bar",
62 | "bar_bar_bar",
63 | "greater_greater_greater",
64 | "less_less_less",
65 | "bar_bar",
66 | "greater_greater",
67 | "less_less",
68 | "less_exclam_hyphen_hyphen",
69 | "asciitilde_asciitilde_greater",
70 | "asterisk_asterisk_asterisk",
71 | "colon_colon_colon",
72 | "colon_colon_equal",
73 | "equal_equal_equal",
74 | "exclam_equal_equal",
75 | "exclam_exclam_period",
76 | "less_asciitilde_asciitilde",
77 | "less_asciitilde_greater",
78 | "less_asterisk_greater",
79 | "less_dollar_greater",
80 | "less_plus_greater",
81 | "less_slash_greater",
82 | "numbersign_underscore_parenleft",
83 | "period_period_equal",
84 | "period_period_less",
85 | # "period_period_period",
86 | "plus_plus_plus",
87 | "slash_slash_slash",
88 | "w_w_w",
89 | # "ampersand_ampersand",
90 | "asciicircum_equal",
91 | "asciitilde_asciitilde",
92 | "asciitilde_at",
93 | "asciitilde_greater",
94 | "asciitilde_hyphen",
95 | "asterisk_asterisk",
96 | "asterisk_greater",
97 | "asterisk_slash",
98 | "bar_braceright",
99 | "bar_bracketright",
100 | "braceleft_bar",
101 | "bracketleft_bar",
102 | "bracketright_numbersign",
103 | "colon_colon",
104 | "colon_equal",
105 | "dollar_greater",
106 | "equal_equal",
107 | "exclam_equal",
108 | "exclam_exclam",
109 | "greater_equal",
110 | "hyphen_asciitilde",
111 | "hyphen_hyphen",
112 | "less_asciitilde",
113 | "less_asterisk",
114 | "less_dollar",
115 | "less_equal",
116 | "less_greater",
117 | "less_plus",
118 | "less_slash",
119 | "numbersign_braceleft",
120 | "numbersign_bracketleft",
121 | "numbersign_colon",
122 | "numbersign_equal",
123 | "numbersign_exclam",
124 | "numbersign_parenleft",
125 | "numbersign_question",
126 | "numbersign_underscore",
127 | # "percent_percent",
128 | # "period_period",
129 | "period_question",
130 | "plus_greater",
131 | "plus_plus",
132 | "question_equal",
133 | "question_period",
134 | "question_question",
135 | # "semicolon_semicolon",
136 | "slash_asterisk",
137 | "slash_greater",
138 | "slash_slash",
139 | "center",
140 | "slash_backslash",
141 | "backslash_slash",
142 | "hexadecimal_x",
143 | "equal_arrows",
144 | "hyphen_arrows",
145 | "lowercase_hyphen",
146 | "lowercase_plus",
147 | "lowercase_asterisk",
148 | "lowercase_asteriskmath",
149 | "uppercase_colon",
150 | # "numbersigns",
151 | "underscores",
152 | ],
153 | "ss02": [],
154 | "ss03": [],
155 | "ss04": [],
156 | "ss05": [],
157 | "ss06": [
158 | "backslash_thin",
159 | ],
160 | "ss07": [
161 | "equal_asciitilde",
162 | "exclam_asciitilde",
163 | ],
164 | "ss08": [],
165 | "ss09": [
166 | "restore_greater_greater_equal",
167 | "restore_less_less_equal",
168 | "restore_bar_bar_equal",
169 | "restore_bar_equal",
170 | ],
171 | "cv15": [],
172 | "cv16": [],
173 | "cv17": [],
174 | "cv18": [],
175 | "cv19": [],
176 | "cv20": [
177 | "less_equal_cv20",
178 | ],
179 | "cv21": [
180 | "equal_less_cv21",
181 | ],
182 | "cv22": [
183 | "equal_less_cv22",
184 | ],
185 | "cv23": [],
186 | "cv24": [
187 | "slash_equal_as_not_equal",
188 | ],
189 | "cv25": [
190 | "period_hyphen",
191 | ],
192 | "cv26": [
193 | "colon_hyphen",
194 | ],
195 | "cv27": [
196 | "bracketleft_bracketright",
197 | ],
198 | "cv28": [],
199 | "cv29": [],
200 | "cv30": [],
201 | "cv31": [],
202 | "cv32": [
203 | "period_equal",
204 | ],
205 | },
206 | }
207 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Font Tester
7 |
8 |
9 |
10 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
51 |
54 |
57 |
58 |
61 |
62 |
65 |
70 |
71 |
72 |
73 |
74 |
107 |
--------------------------------------------------------------------------------
/input/Anonymous Pro/AnonymousPro-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Anonymous Pro/AnonymousPro-Bold.ttf
--------------------------------------------------------------------------------
/input/Anonymous Pro/AnonymousPro-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Anonymous Pro/AnonymousPro-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Anonymous Pro/AnonymousPro-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Anonymous Pro/AnonymousPro-Italic.ttf
--------------------------------------------------------------------------------
/input/Anonymous Pro/AnonymousPro-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Anonymous Pro/AnonymousPro-Regular.ttf
--------------------------------------------------------------------------------
/input/Anonymous Pro/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com),
2 | with Reserved Font Name Anonymous Pro.
3 |
4 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
5 | This license is copied below, and is also available with a FAQ at:
6 | http://scripts.sil.org/OFL
7 |
8 |
9 | -----------------------------------------------------------
10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11 | -----------------------------------------------------------
12 |
13 | PREAMBLE
14 | The goals of the Open Font License (OFL) are to stimulate worldwide
15 | development of collaborative font projects, to support the font creation
16 | efforts of academic and linguistic communities, and to provide a free and
17 | open framework in which fonts may be shared and improved in partnership
18 | with others.
19 |
20 | The OFL allows the licensed fonts to be used, studied, modified and
21 | redistributed freely as long as they are not sold by themselves. The
22 | fonts, including any derivative works, can be bundled, embedded,
23 | redistributed and/or sold with any software provided that any reserved
24 | names are not used by derivative works. The fonts and derivatives,
25 | however, cannot be released under any other type of license. The
26 | requirement for fonts to remain under this license does not apply
27 | to any document created using the fonts or their derivatives.
28 |
29 | DEFINITIONS
30 | "Font Software" refers to the set of files released by the Copyright
31 | Holder(s) under this license and clearly marked as such. This may
32 | include source files, build scripts and documentation.
33 |
34 | "Reserved Font Name" refers to any names specified as such after the
35 | copyright statement(s).
36 |
37 | "Original Version" refers to the collection of Font Software components as
38 | distributed by the Copyright Holder(s).
39 |
40 | "Modified Version" refers to any derivative made by adding to, deleting,
41 | or substituting -- in part or in whole -- any of the components of the
42 | Original Version, by changing formats or by porting the Font Software to a
43 | new environment.
44 |
45 | "Author" refers to any designer, engineer, programmer, technical
46 | writer or other person who contributed to the Font Software.
47 |
48 | PERMISSION & CONDITIONS
49 | Permission is hereby granted, free of charge, to any person obtaining
50 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
51 | redistribute, and sell modified and unmodified copies of the Font
52 | Software, subject to the following conditions:
53 |
54 | 1) Neither the Font Software nor any of its individual components,
55 | in Original or Modified Versions, may be sold by itself.
56 |
57 | 2) Original or Modified Versions of the Font Software may be bundled,
58 | redistributed and/or sold with any software, provided that each copy
59 | contains the above copyright notice and this license. These can be
60 | included either as stand-alone text files, human-readable headers or
61 | in the appropriate machine-readable metadata fields within text or
62 | binary files as long as those fields can be easily viewed by the user.
63 |
64 | 3) No Modified Version of the Font Software may use the Reserved Font
65 | Name(s) unless explicit written permission is granted by the corresponding
66 | Copyright Holder. This restriction only applies to the primary font name as
67 | presented to the users.
68 |
69 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70 | Software shall not be used to promote, endorse or advertise any
71 | Modified Version, except to acknowledge the contribution(s) of the
72 | Copyright Holder(s) and the Author(s) or with their explicit written
73 | permission.
74 |
75 | 5) The Font Software, modified or unmodified, in part or in whole,
76 | must be distributed entirely under this license, and must not be
77 | distributed under any other license. The requirement for fonts to
78 | remain under this license does not apply to any document created
79 | using the Font Software.
80 |
81 | TERMINATION
82 | This license becomes null and void if any of the above conditions are
83 | not met.
84 |
85 | DISCLAIMER
86 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94 | OTHER DEALINGS IN THE FONT SOFTWARE.
95 |
--------------------------------------------------------------------------------
/input/DejaVu Sans Mono/DejaVuSansMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/DejaVu Sans Mono/DejaVuSansMono-Bold.ttf
--------------------------------------------------------------------------------
/input/DejaVu Sans Mono/DejaVuSansMono-BoldOblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/DejaVu Sans Mono/DejaVuSansMono-BoldOblique.ttf
--------------------------------------------------------------------------------
/input/DejaVu Sans Mono/DejaVuSansMono-Oblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/DejaVu Sans Mono/DejaVuSansMono-Oblique.ttf
--------------------------------------------------------------------------------
/input/DejaVu Sans Mono/DejaVuSansMono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/DejaVu Sans Mono/DejaVuSansMono.ttf
--------------------------------------------------------------------------------
/input/DejaVu Sans Mono/LICENSE:
--------------------------------------------------------------------------------
1 | Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
2 | Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
3 |
4 |
5 | Bitstream Vera Fonts Copyright
6 | ------------------------------
7 |
8 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
9 | a trademark of Bitstream, Inc.
10 |
11 | Permission is hereby granted, free of charge, to any person obtaining a copy
12 | of the fonts accompanying this license ("Fonts") and associated
13 | documentation files (the "Font Software"), to reproduce and distribute the
14 | Font Software, including without limitation the rights to use, copy, merge,
15 | publish, distribute, and/or sell copies of the Font Software, and to permit
16 | persons to whom the Font Software is furnished to do so, subject to the
17 | following conditions:
18 |
19 | The above copyright and trademark notices and this permission notice shall
20 | be included in all copies of one or more of the Font Software typefaces.
21 |
22 | The Font Software may be modified, altered, or added to, and in particular
23 | the designs of glyphs or characters in the Fonts may be modified and
24 | additional glyphs or characters may be added to the Fonts, only if the fonts
25 | are renamed to names not containing either the words "Bitstream" or the word
26 | "Vera".
27 |
28 | This License becomes null and void to the extent applicable to Fonts or Font
29 | Software that has been modified and is distributed under the "Bitstream
30 | Vera" names.
31 |
32 | The Font Software may be sold as part of a larger software package but no
33 | copy of one or more of the Font Software typefaces may be sold by itself.
34 |
35 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
36 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
37 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
38 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
39 | FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
40 | ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
41 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
42 | THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
43 | FONT SOFTWARE.
44 |
45 | Except as contained in this notice, the names of Gnome, the Gnome
46 | Foundation, and Bitstream Inc., shall not be used in advertising or
47 | otherwise to promote the sale, use or other dealings in this Font Software
48 | without prior written authorization from the Gnome Foundation or Bitstream
49 | Inc., respectively. For further information, contact: fonts at gnome dot
50 | org.
51 |
52 | Arev Fonts Copyright
53 | ------------------------------
54 |
55 | Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
56 |
57 | Permission is hereby granted, free of charge, to any person obtaining
58 | a copy of the fonts accompanying this license ("Fonts") and
59 | associated documentation files (the "Font Software"), to reproduce
60 | and distribute the modifications to the Bitstream Vera Font Software,
61 | including without limitation the rights to use, copy, merge, publish,
62 | distribute, and/or sell copies of the Font Software, and to permit
63 | persons to whom the Font Software is furnished to do so, subject to
64 | the following conditions:
65 |
66 | The above copyright and trademark notices and this permission notice
67 | shall be included in all copies of one or more of the Font Software
68 | typefaces.
69 |
70 | The Font Software may be modified, altered, or added to, and in
71 | particular the designs of glyphs or characters in the Fonts may be
72 | modified and additional glyphs or characters may be added to the
73 | Fonts, only if the fonts are renamed to names not containing either
74 | the words "Tavmjong Bah" or the word "Arev".
75 |
76 | This License becomes null and void to the extent applicable to Fonts
77 | or Font Software that has been modified and is distributed under the
78 | "Tavmjong Bah Arev" names.
79 |
80 | The Font Software may be sold as part of a larger software package but
81 | no copy of one or more of the Font Software typefaces may be sold by
82 | itself.
83 |
84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
88 | TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92 | OTHER DEALINGS IN THE FONT SOFTWARE.
93 |
94 | Except as contained in this notice, the name of Tavmjong Bah shall not
95 | be used in advertising or otherwise to promote the sale, use or other
96 | dealings in this Font Software without prior written authorization
97 | from Tavmjong Bah. For further information, contact: tavmjong @ free
98 | . fr.
99 |
100 | TeX Gyre DJV Math
101 | -----------------
102 | Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
103 |
104 | Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
105 | (on behalf of TeX users groups) are in public domain.
106 |
107 | Letters imported from Euler Fraktur from AMSfonts are (c) American
108 | Mathematical Society (see below).
109 | Bitstream Vera Fonts Copyright
110 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
111 | is a trademark of Bitstream, Inc.
112 |
113 | Permission is hereby granted, free of charge, to any person obtaining a copy
114 | of the fonts accompanying this license (“Fonts”) and associated
115 | documentation
116 | files (the “Font Software”), to reproduce and distribute the Font Software,
117 | including without limitation the rights to use, copy, merge, publish,
118 | distribute,
119 | and/or sell copies of the Font Software, and to permit persons to whom
120 | the Font Software is furnished to do so, subject to the following
121 | conditions:
122 |
123 | The above copyright and trademark notices and this permission notice
124 | shall be
125 | included in all copies of one or more of the Font Software typefaces.
126 |
127 | The Font Software may be modified, altered, or added to, and in particular
128 | the designs of glyphs or characters in the Fonts may be modified and
129 | additional
130 | glyphs or characters may be added to the Fonts, only if the fonts are
131 | renamed
132 | to names not containing either the words “Bitstream” or the word “Vera”.
133 |
134 | This License becomes null and void to the extent applicable to Fonts or
135 | Font Software
136 | that has been modified and is distributed under the “Bitstream Vera”
137 | names.
138 |
139 | The Font Software may be sold as part of a larger software package but
140 | no copy
141 | of one or more of the Font Software typefaces may be sold by itself.
142 |
143 | THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
144 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
145 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
146 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
147 | FOUNDATION
148 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
149 | SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
150 | ACTION
151 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
152 | INABILITY TO USE
153 | THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
154 | Except as contained in this notice, the names of GNOME, the GNOME
155 | Foundation,
156 | and Bitstream Inc., shall not be used in advertising or otherwise to promote
157 | the sale, use or other dealings in this Font Software without prior written
158 | authorization from the GNOME Foundation or Bitstream Inc., respectively.
159 | For further information, contact: fonts at gnome dot org.
160 |
161 | AMSFonts (v. 2.2) copyright
162 |
163 | The PostScript Type 1 implementation of the AMSFonts produced by and
164 | previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
165 | available for general use. This has been accomplished through the
166 | cooperation
167 | of a consortium of scientific publishers with Blue Sky Research and Y&Y.
168 | Members of this consortium include:
169 |
170 | Elsevier Science IBM Corporation Society for Industrial and Applied
171 | Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
172 |
173 | In order to assure the authenticity of these fonts, copyright will be
174 | held by
175 | the American Mathematical Society. This is not meant to restrict in any way
176 | the legitimate use of the fonts, such as (but not limited to) electronic
177 | distribution of documents containing these fonts, inclusion of these fonts
178 | into other public domain or commercial font collections or computer
179 | applications, use of the outline data to create derivative fonts and/or
180 | faces, etc. However, the AMS does require that the AMS copyright notice be
181 | removed from any derivative versions of the fonts which have been altered in
182 | any way. In addition, to ensure the fidelity of TeX documents using Computer
183 | Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
184 | has requested that any alterations which yield different font metrics be
185 | given a different name.
186 |
187 | $Id$
188 |
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Bold.otf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Bold.ttf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-BoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-BoldItalic.otf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Italic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Italic.otf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Italic.ttf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Regular.otf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/FantasqueSansMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Fantasque Sans Mono/FantasqueSansMono-Regular.ttf
--------------------------------------------------------------------------------
/input/Fantasque Sans Mono/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2017, Jany Belluz (jany.belluz@hotmail.fr)
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/input/Hack/Hack-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hack/Hack-Bold.ttf
--------------------------------------------------------------------------------
/input/Hack/Hack-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hack/Hack-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Hack/Hack-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hack/Hack-Italic.ttf
--------------------------------------------------------------------------------
/input/Hack/Hack-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hack/Hack-Regular.ttf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-Bold.otf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-BoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-BoldItalic.otf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-Light.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-Light.otf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-LightItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-LightItalic.otf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-Regular.otf
--------------------------------------------------------------------------------
/input/Hermit/Hermit-RegularItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Hermit/Hermit-RegularItalic.otf
--------------------------------------------------------------------------------
/input/Hermit/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013, Pablo Caro - http://pcaro.es/
2 | with Reserved Font Name Hermit.
3 |
4 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
5 | This license is copied below, and is also available with a FAQ at:
6 | http://scripts.sil.org/OFL
7 |
8 |
9 | -----------------------------------------------------------
10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11 | -----------------------------------------------------------
12 |
13 | PREAMBLE
14 | The goals of the Open Font License (OFL) are to stimulate worldwide
15 | development of collaborative font projects, to support the font creation
16 | efforts of academic and linguistic communities, and to provide a free and
17 | open framework in which fonts may be shared and improved in partnership
18 | with others.
19 |
20 | The OFL allows the licensed fonts to be used, studied, modified and
21 | redistributed freely as long as they are not sold by themselves. The
22 | fonts, including any derivative works, can be bundled, embedded,
23 | redistributed and/or sold with any software provided that any reserved
24 | names are not used by derivative works. The fonts and derivatives,
25 | however, cannot be released under any other type of license. The
26 | requirement for fonts to remain under this license does not apply
27 | to any document created using the fonts or their derivatives.
28 |
29 | DEFINITIONS
30 | "Font Software" refers to the set of files released by the Copyright
31 | Holder(s) under this license and clearly marked as such. This may
32 | include source files, build scripts and documentation.
33 |
34 | "Reserved Font Name" refers to any names specified as such after the
35 | copyright statement(s).
36 |
37 | "Original Version" refers to the collection of Font Software components as
38 | distributed by the Copyright Holder(s).
39 |
40 | "Modified Version" refers to any derivative made by adding to, deleting,
41 | or substituting -- in part or in whole -- any of the components of the
42 | Original Version, by changing formats or by porting the Font Software to a
43 | new environment.
44 |
45 | "Author" refers to any designer, engineer, programmer, technical
46 | writer or other person who contributed to the Font Software.
47 |
48 | PERMISSION & CONDITIONS
49 | Permission is hereby granted, free of charge, to any person obtaining
50 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
51 | redistribute, and sell modified and unmodified copies of the Font
52 | Software, subject to the following conditions:
53 |
54 | 1) Neither the Font Software nor any of its individual components,
55 | in Original or Modified Versions, may be sold by itself.
56 |
57 | 2) Original or Modified Versions of the Font Software may be bundled,
58 | redistributed and/or sold with any software, provided that each copy
59 | contains the above copyright notice and this license. These can be
60 | included either as stand-alone text files, human-readable headers or
61 | in the appropriate machine-readable metadata fields within text or
62 | binary files as long as those fields can be easily viewed by the user.
63 |
64 | 3) No Modified Version of the Font Software may use the Reserved Font
65 | Name(s) unless explicit written permission is granted by the corresponding
66 | Copyright Holder. This restriction only applies to the primary font name as
67 | presented to the users.
68 |
69 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70 | Software shall not be used to promote, endorse or advertise any
71 | Modified Version, except to acknowledge the contribution(s) of the
72 | Copyright Holder(s) and the Author(s) or with their explicit written
73 | permission.
74 |
75 | 5) The Font Software, modified or unmodified, in part or in whole,
76 | must be distributed entirely under this license, and must not be
77 | distributed under any other license. The requirement for fonts to
78 | remain under this license does not apply to any document created
79 | using the Font Software.
80 |
81 | TERMINATION
82 | This license becomes null and void if any of the above conditions are
83 | not met.
84 |
85 | DISCLAIMER
86 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94 | OTHER DEALINGS IN THE FONT SOFTWARE.
95 |
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Bold.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-BoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-BoldItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-ExtraLight.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-ExtraLight.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-ExtraLightItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-ExtraLightItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Italic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Italic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Light.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Light.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-LightItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-LightItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Medium.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-MediumItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-MediumItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Regular.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-SemiBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-SemiBold.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-SemiBoldItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-SemiBoldItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Text.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Text.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-TextItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-TextItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-Thin.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-Thin.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/IBMPlexMono-ThinItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/IBM Plex Mono/IBMPlexMono-ThinItalic.otf
--------------------------------------------------------------------------------
/input/IBM Plex Mono/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 |
5 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Bold.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-ExtraLight.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Italic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Light.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-LightItalic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Medium.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-MediumItalic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Regular.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-SemiBold.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-Thin.ttf
--------------------------------------------------------------------------------
/input/Roboto Mono/RobotoMono-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Roboto Mono/RobotoMono-ThinItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Black.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-BlackItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Bold.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-ExtraBold.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-ExtraLight.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Italic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Light.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-LightItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Medium.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-MediumItalic.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-Regular.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-SemiBold.ttf
--------------------------------------------------------------------------------
/input/Source Code Pro/SourceCodePro-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Source Code Pro/SourceCodePro-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/input/Space Mono/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright 2016 Google Inc. All Rights Reserved.
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/input/Space Mono/SpaceMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Space Mono/SpaceMono-Bold.ttf
--------------------------------------------------------------------------------
/input/Space Mono/SpaceMono-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Space Mono/SpaceMono-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Space Mono/SpaceMono-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Space Mono/SpaceMono-Italic.ttf
--------------------------------------------------------------------------------
/input/Space Mono/SpaceMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Space Mono/SpaceMono-Regular.ttf
--------------------------------------------------------------------------------
/input/Ubuntu Mono/UFL.txt:
--------------------------------------------------------------------------------
1 | -------------------------------
2 | UBUNTU FONT LICENCE Version 1.0
3 | -------------------------------
4 |
5 | PREAMBLE
6 | This licence allows the licensed fonts to be used, studied, modified and
7 | redistributed freely. The fonts, including any derivative works, can be
8 | bundled, embedded, and redistributed provided the terms of this licence
9 | are met. The fonts and derivatives, however, cannot be released under
10 | any other licence. The requirement for fonts to remain under this
11 | licence does not require any document created using the fonts or their
12 | derivatives to be published under this licence, as long as the primary
13 | purpose of the document is not to be a vehicle for the distribution of
14 | the fonts.
15 |
16 | DEFINITIONS
17 | "Font Software" refers to the set of files released by the Copyright
18 | Holder(s) under this licence and clearly marked as such. This may
19 | include source files, build scripts and documentation.
20 |
21 | "Original Version" refers to the collection of Font Software components
22 | as received under this licence.
23 |
24 | "Modified Version" refers to any derivative made by adding to, deleting,
25 | or substituting -- in part or in whole -- any of the components of the
26 | Original Version, by changing formats or by porting the Font Software to
27 | a new environment.
28 |
29 | "Copyright Holder(s)" refers to all individuals and companies who have a
30 | copyright ownership of the Font Software.
31 |
32 | "Substantially Changed" refers to Modified Versions which can be easily
33 | identified as dissimilar to the Font Software by users of the Font
34 | Software comparing the Original Version with the Modified Version.
35 |
36 | To "Propagate" a work means to do anything with it that, without
37 | permission, would make you directly or secondarily liable for
38 | infringement under applicable copyright law, except executing it on a
39 | computer or modifying a private copy. Propagation includes copying,
40 | distribution (with or without modification and with or without charging
41 | a redistribution fee), making available to the public, and in some
42 | countries other activities as well.
43 |
44 | PERMISSION & CONDITIONS
45 | This licence does not grant any rights under trademark law and all such
46 | rights are reserved.
47 |
48 | Permission is hereby granted, free of charge, to any person obtaining a
49 | copy of the Font Software, to propagate the Font Software, subject to
50 | the below conditions:
51 |
52 | 1) Each copy of the Font Software must contain the above copyright
53 | notice and this licence. These can be included either as stand-alone
54 | text files, human-readable headers or in the appropriate machine-
55 | readable metadata fields within text or binary files as long as those
56 | fields can be easily viewed by the user.
57 |
58 | 2) The font name complies with the following:
59 | (a) The Original Version must retain its name, unmodified.
60 | (b) Modified Versions which are Substantially Changed must be renamed to
61 | avoid use of the name of the Original Version or similar names entirely.
62 | (c) Modified Versions which are not Substantially Changed must be
63 | renamed to both (i) retain the name of the Original Version and (ii) add
64 | additional naming elements to distinguish the Modified Version from the
65 | Original Version. The name of such Modified Versions must be the name of
66 | the Original Version, with "derivative X" where X represents the name of
67 | the new work, appended to that name.
68 |
69 | 3) The name(s) of the Copyright Holder(s) and any contributor to the
70 | Font Software shall not be used to promote, endorse or advertise any
71 | Modified Version, except (i) as required by this licence, (ii) to
72 | acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with
73 | their explicit written permission.
74 |
75 | 4) The Font Software, modified or unmodified, in part or in whole, must
76 | be distributed entirely under this licence, and must not be distributed
77 | under any other licence. The requirement for fonts to remain under this
78 | licence does not affect any document created using the Font Software,
79 | except any version of the Font Software extracted from a document
80 | created using the Font Software may only be distributed under this
81 | licence.
82 |
83 | TERMINATION
84 | This licence becomes null and void if any of the above conditions are
85 | not met.
86 |
87 | DISCLAIMER
88 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
89 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
90 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
91 | COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
92 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
93 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
94 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
95 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
96 | DEALINGS IN THE FONT SOFTWARE.
97 |
--------------------------------------------------------------------------------
/input/Ubuntu Mono/UbuntuMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Ubuntu Mono/UbuntuMono-Bold.ttf
--------------------------------------------------------------------------------
/input/Ubuntu Mono/UbuntuMono-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Ubuntu Mono/UbuntuMono-BoldItalic.ttf
--------------------------------------------------------------------------------
/input/Ubuntu Mono/UbuntuMono-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Ubuntu Mono/UbuntuMono-Italic.ttf
--------------------------------------------------------------------------------
/input/Ubuntu Mono/UbuntuMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/input/Ubuntu Mono/UbuntuMono-Regular.ttf
--------------------------------------------------------------------------------
/py/extract_fira_data.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | from glyphsLib import GSFont
4 | import utils as u
5 |
6 |
7 | def extract_features():
8 | file = open("fira.fea", "w")
9 | font = GSFont("fira.glyphs")
10 | for feature in font.featurePrefixes:
11 | file.write(feature.code + "\n")
12 | for feature in font.features:
13 | code = u.add_backslash_to_glyphs(feature.code)
14 | file.write(
15 | f"feature {feature.name} "
16 | + "{\n\t"
17 | + u.remove_last_newlines(code).replace("\n", "\n\t")
18 | + "\n}"
19 | + f" {feature.name};\n\n"
20 | )
21 | file.close()
22 |
23 |
24 | def extract_classes():
25 | font = GSFont("fira.glyphs")
26 | for _class in font.classes:
27 | file = open(f"classes/{_class.name}.fea", "w")
28 | file.write(_class.code)
29 | file.close()
30 |
31 |
32 | FEAT_FILE_COMMENT = """# This is an autogenerated configuration that includes, principally, a set of
33 | # curated features that ligate.py will attempt to copy from Fira Code to your
34 | # output font. Each feature may have a list of lookups (it can also have an
35 | # empty list). Features/lookups that aren't present in the version of Fira Code
36 | # you're using will be skipped. To disable features/lookups, simply comment
37 | # them out in this file.
38 | #
39 | # If you don't know what are these features, take a look at https://github.com/tonsky/FiraCode#readme.
40 | """
41 |
42 | SCALE_FILE_COMMENT = """# When copying character glyphs from FiraCode, sometimes it is necessary to
43 | # adjust manually the glyph size by a scale factor. It will be ignored if
44 | # it's less than or equal to 0.
45 | """
46 |
47 | YTRAN_FILE_COMMENT = """# Like above, sometimes it is necessary to translate it vertically by a
48 | # factor and direction. It can be any float, including zero and negatives.
49 | """
50 |
51 | GLYPH_FILE_COMMENT = """# Copy glyphs for individual characters from the ligature font as well.
52 | # Each item value is a postscript name from the FiraCode family, that can
53 | # be queried from the FontForge's GUI. It's also useful for characters
54 | # outside ligature contexts.
55 | """
56 |
57 | FEAT_BLACKLIST = {
58 | "aalt",
59 | "subs",
60 | "sups",
61 | "numr",
62 | "dnom",
63 | "frac",
64 | "ordn",
65 | "tnum",
66 | "onum",
67 | "case",
68 | "liga",
69 | "locl",
70 | "zero",
71 | "salt",
72 | "ccmp",
73 | "sinf",
74 | "hwid",
75 | "ss01",
76 | "ss10",
77 | }.union(set([f"cv{str(i).zfill(2)}" for i in range(1, 15)]))
78 |
79 | LOOKUP_BLACKLIST = {"caltGreekUCdiph", "caltGreekUC"}
80 |
81 | GLYPH_WHITELIST = f"""
82 | "ampersand",
83 | "asciicircum",
84 | "asciitilde",
85 | "asterisk",
86 | "asteriskmath",
87 | "backslash",
88 | "bar",
89 | "colon",
90 | "equal",
91 | "exclam",
92 | "greater",
93 | "hyphen",
94 | "less",
95 | "numbersign",
96 | "percent",
97 | "period",
98 | "plus",
99 | "question",
100 | "semicolon",
101 | "slash",
102 | "underscore",
103 | # "at",
104 | # "braceleft",
105 | # "braceright",
106 | # "bracketleft",
107 | # "bracketright",
108 | # "dollar",
109 | # "parenleft",
110 | # "parenright",
111 | """
112 |
113 |
114 | def create_config_set_file():
115 | font = GSFont("fira.glyphs")
116 | file = open("config_sample.py", "w")
117 | file.write(f"{FEAT_FILE_COMMENT}" + "\nconfig = {\n")
118 | file.write(f" {SCALE_FILE_COMMENT}" + ' "scale": 1.0,\n')
119 | file.write(f" {YTRAN_FILE_COMMENT}" + ' "yTranslate": 0.0,\n')
120 | file.write(f' {GLYPH_FILE_COMMENT} "glyphs": [{GLYPH_WHITELIST} ],\n')
121 | file.write(' "features": {\n')
122 | for feature in font.features:
123 | if feature.name not in FEAT_BLACKLIST:
124 | ls = u.lookups(feature.code)
125 | if len(ls) > 0:
126 | fls = "[\n"
127 | for i in range(len(ls)):
128 | if ls[i] not in LOOKUP_BLACKLIST:
129 | fls += f' "{ls[i]}",\n'
130 | fls += " ]"
131 | else:
132 | fls = "[]"
133 | file.write(f' "{feature.name}": {fls},\n')
134 | file.write(" },\n")
135 | file.write("}\n")
136 | file.close()
137 |
138 |
139 | def main():
140 | extract_features()
141 | # extract_classes()
142 | create_config_set_file()
143 |
144 |
145 | if __name__ == "__main__":
146 | main()
147 |
--------------------------------------------------------------------------------
/py/fontname.py:
--------------------------------------------------------------------------------
1 | def camelcase(s):
2 | return "".join([ss[0].upper() + ss[1:] for ss in s.split(" ") if len(ss) > 0])
3 |
4 |
5 | def slice_postscript(s):
6 | sp = s.split("-")
7 | return (sp[:-1], sp[-1])
8 |
9 |
10 | def slice_fullname(s):
11 | sp = s.split(" ")
12 | return (sp[:-1], sp[-1])
13 |
14 |
15 | def add_postscript_style(s, w):
16 | if w:
17 | return f"{s}-{w}"
18 | else:
19 | return s
20 |
21 |
22 | def add_fullname_style(s, w):
23 | if w:
24 | return f"{s} {w}"
25 | else:
26 | return s
27 |
28 |
29 | # Assume that a general fullname has this pattern:
30 | # "FAMILY [STYLE]" where STYLE is an optional set of words separated (or not)
31 | # by a space.
32 | # The STYLE set is a permutation whose elements must be:
33 | # - Only a one WEIGHT_WORD
34 | # - Zero or more words defined in STYLE_WORDS
35 | # This would avoid some naming bugs that appear generally in italic fonts.
36 |
37 | STYLE_WORDS = [
38 | "italic",
39 | "normal",
40 | "oblique",
41 | ]
42 |
43 | WEIGHT_WORDS = [
44 | "ultralight",
45 | "ultlt",
46 | "extralight",
47 | "extlt",
48 | "thin",
49 | "light",
50 | "regular",
51 | "retina",
52 | "text",
53 | "medium",
54 | "medm",
55 | "semibold",
56 | "semibld",
57 | "smbld",
58 | "demibold",
59 | "demibld",
60 | "dmbld",
61 | "bld",
62 | "bold",
63 | "heavy",
64 | "extrabold",
65 | "extbld",
66 | "ultrabold",
67 | "ultbld",
68 | "black",
69 | ]
70 |
71 |
72 | def split_family_style(old_name, separator):
73 | words = old_name.split(separator)
74 | k = len(words) - 1
75 | while k >= 0 and (
76 | words[k].lower() in STYLE_WORDS
77 | or words[k].lower() in WEIGHT_WORDS
78 | # Cartesian products
79 | or words[k].lower() in [i + j for i in STYLE_WORDS for j in WEIGHT_WORDS]
80 | or words[k].lower() in [j + i for i in STYLE_WORDS for j in WEIGHT_WORDS]
81 | ):
82 | k -= 1
83 | count = k + 1
84 | return (separator.join(words[:count]), separator.join(words[count:]))
85 |
86 |
87 | def safe_add_fullname_style(old_flname, name):
88 | family, style = split_family_style(old_flname, " ")
89 | if len(family) > 0:
90 | name_styled = add_fullname_style(name, style)
91 | else:
92 | name_styled = name
93 | return name_styled
94 |
95 |
96 | # A postscript has the same pattern but its words are separated by a hypen
97 |
98 |
99 | def safe_add_postname_style(old_psname, name):
100 | name = camelcase(name)
101 | family, style = split_family_style(old_psname, "-")
102 | if len(family) > 0:
103 | name_styled = add_postscript_style(name, style)
104 | else:
105 | name_styled = name
106 | return name_styled
107 |
--------------------------------------------------------------------------------
/py/utils.py:
--------------------------------------------------------------------------------
1 | import re
2 | import os
3 | from pathlib import Path
4 |
5 | def relative_from_project(p):
6 | liga = Path(__file__).resolve().parent.parent
7 | return os.path.relpath(p, liga)
8 |
9 |
10 | def lookups(s):
11 | return re.findall("(?<=lookup )([\s\S]*?)(?= \{)", s)
12 |
13 |
14 | def remove_last_newlines(s):
15 | while s[-1:] == "\n" and len(s) > 0:
16 | s = s[:-1]
17 | return s
18 |
19 |
20 | def remove_duplicates(l):
21 | return list(dict.fromkeys(l))
22 |
23 |
24 | def add_lookups_prefix(code):
25 | return re.sub(
26 | "(?<=\})\s+(?=\w+;)", " fira_", re.sub("lookup ", "lookup fira_", code)
27 | )
28 |
29 |
30 | def add_backslash_to_glyphs(code):
31 | splitted_code = code.split("\n")
32 | new_code = []
33 | for line in splitted_code:
34 | if re.search("(sub|by)\s+", line) is not None:
35 | splitted_line = re.split("\s+", re.sub("#.+", "", line))
36 | line_res = []
37 | for token in splitted_line:
38 | if token != "":
39 | if token not in ["sub", "ignore", "by", ";"] and (
40 | (token[0] == "[" and token[1] not in ["@", "\\"])
41 | or (token[0] not in ["[", "@", "\\"])
42 | ):
43 | if token[0] != "[":
44 | line_res.append("\\" + token)
45 | else:
46 | line_res.append("[\\" + token[1:])
47 | else:
48 | line_res.append(token)
49 | else:
50 | line_res.append(" ")
51 | new_line = " ".join(line_res)
52 | else:
53 | new_line = line
54 | new_code.append(new_line)
55 | return "\n".join(new_code)
56 |
57 |
58 | def uni(number):
59 | return hex(number).upper().replace("0X", "uni")
60 |
61 |
62 | def uni_range(start, end):
63 | return "\n".join([f' "{uni(u)}",' for u in range(start, end + 1)])
64 |
--------------------------------------------------------------------------------
/scripts/build_family.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # shellcheck source=/dev/null
4 | source "$SCRIPTS_DIR/progress_bar.sh"
5 | shopt -s extglob
6 |
7 | declare -A CSS_WEIGHTS
8 |
9 | # from fc-scan weight to css font-weight
10 | CSS_WEIGHTS=(
11 | ["0"]="100" # thin
12 | ["40"]="200" # extra light
13 | ["50"]="300" # light
14 | ["80"]="400" # regular
15 | ["90"]="450" # retina
16 | ["100"]="500" # medium
17 | ["180"]="600" # semi bold
18 | ["200"]="700" # bold
19 | ["210"]="900" # black
20 | )
21 |
22 | insert_top() {
23 | { echo "$1"; cat "$2" 2> /dev/null; } >"$2".new
24 | mv "$2"{.new,}
25 | }
26 |
27 | build_family() {
28 | if [[ -z "$OUTPUT_NAME" ]]; then
29 | ARGS="--prefix '$PREFIX'"
30 | else
31 | ARGS="--output-name '$OUTPUT_NAME'"
32 | fi
33 |
34 | if [[ -z "$OUTPUT_DIR" ]]; then
35 | OUTPUT_DIR="output/$PREFIX$(basename "$INPUT_DIR")"
36 | fi
37 |
38 | if [[ -n "$CONFIG" ]]; then
39 | ARGS="$ARGS --config-file '$CONFIG'"
40 | fi
41 |
42 | if $COPY_GLYPHS; then
43 | ARGS="$ARGS --copy-character-glyphs"
44 | fi
45 |
46 | if $REMOVE_ORIGINAL_LIGATURES; then
47 | ARGS="$ARGS --remove-original-ligatures"
48 | fi
49 |
50 | if [ -d "$INPUT_DIR" ]; then
51 | mkdir -p "$OUTPUT_DIR"
52 | files=("$INPUT_DIR"/*.+(ttf|otf))
53 | filtered_files=()
54 | if $FILTER_BY_FONT_WEIGHT; then
55 | for file in "${files[@]}"; do
56 | b=$(basename "$file" ".ttf")
57 | b=$(basename "$b" ".otf")
58 | w=${FONT_WEIGHT["$b"]}
59 | if [[ -n "$w" ]]; then
60 | filtered_files+=("$file")
61 | fi
62 | done
63 | else
64 | for file in "${files[@]}"; do
65 | filtered_files+=("$file")
66 | done
67 | fi
68 | total=${#filtered_files[@]}
69 | setup_scroll_area "$total"
70 | F_INPUT_DIR="$(python -c "import py.utils as u; print(u.relative_from_project(\"$INPUT_DIR\"))")"
71 | printf "\nFound %d fonts from %s directory to be ligated ✨\n" "$total" "$F_INPUT_DIR"
72 | for ((k = 0; k < total ; k++)); do
73 | draw_progress_bar "$k"
74 | file=${filtered_files[$k]}
75 | b=$(basename "$file" ".ttf")
76 | b=$(basename "$b" ".otf")
77 | w=${FONT_WEIGHT["$b"]}
78 | EXT="${file##*.}"
79 | if [[ -n "$w" ]]; then
80 | LIGATURE="--ligature-font-file 'fira/FiraCode-$w.$EXT'"
81 | else
82 | LIGATURE=""
83 | fi
84 | local attempt=1
85 | while (( $(find "$OUTPUT_DIR" -regex ".+\.\(otf\|ttf\)" -type f | wc -l) <= k )); do
86 | echo ""
87 | if (( attempt > 1 )); then
88 | echo -e "Fontforge has a bad day... attempt #$attempt\n"
89 | fi
90 | ERROR=$(eval "python ligate.py '$file' \
91 | --output-dir '$OUTPUT_DIR'" \
92 | "$LIGATURE" "$ARGS" 3>&1 1>&2 2>&3)
93 | if [[ -n "$ERROR" ]]; then
94 | mkdir -p "logs/$INPUT_DIR"
95 | LOG="logs/$b.$EXT.log"
96 | insert_top "" "$LOG"
97 | insert_top "$ERROR" "$LOG"
98 | insert_top "[$(date -R)]" "$LOG"
99 | fi
100 | # shellcheck disable=SC2126
101 | ERROR_COUNT=$(echo -n "$ERROR" | grep -A1 '====' | wc -l)
102 | if (( ERROR_COUNT > 1)); then
103 | printf "\n \033[0;31m✗\033[0m There are some errors saved at %s\n" "$LOG"
104 | else
105 | echo -e "\n \033[0;32m✓\033[0m Font ligated"
106 | fi
107 | ((attempt=attempt+1))
108 | done
109 |
110 | # Add font data to the Font Tester .html page
111 | OUTPUT_FILE=$(ls -Art "$OUTPUT_DIR" | tail -n 1)
112 | COMPL_OUT_FILE="$OUTPUT_DIR/$OUTPUT_FILE"
113 | POST=$(fc-scan "$COMPL_OUT_FILE" -f "%{postscriptname}")
114 | FULL=$(fc-scan "$COMPL_OUT_FILE" -f "%{fullname}")
115 | CSS_WEIGHT=${CSS_WEIGHTS[$(fc-scan "$COMPL_OUT_FILE" -f "%{weight}")]}
116 | REL_IFILE="$(python -c "import py.utils as u; print(u.relative_from_project(\"$file\"))")"
117 | REL_OFILE="$(python -c "import py.utils as u; print(u.relative_from_project(\"$COMPL_OUT_FILE\"))")"
118 | echo -e "" \
119 | >> "test/fonts.html"
120 |
121 | echo "@font-face {font-family:'$POST';src:url('../$REL_OFILE');font-weight:$CSS_WEIGHT;font-style:italic}" \
122 | >> "test/fonts.css"
123 |
124 | echo "@font-face {font-family:'$POST';src:url('../$REL_IFILE');font-weight:$CSS_WEIGHT;font-style:normal}" \
125 | >> "test/fonts.css"
126 |
127 | done
128 | destroy_scroll_area
129 | print_bar_text "$total"; echo ""
130 | else
131 | echo "Error: directory $INPUT_DIR does not exist"
132 | exit 1
133 | fi
134 | }
135 |
--------------------------------------------------------------------------------
/scripts/clean.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | shopt -s globstar
4 |
5 | rm -rf test/fonts.css test/fonts.html output logs ./**/__pycache__
--------------------------------------------------------------------------------
/scripts/fetch_fira.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | version=6.2
4 |
5 | tmpDir=$(mktemp -d)
6 |
7 | wget "https://github.com/tonsky/FiraCode/releases/download/$version/Fira_Code_v$version.zip" \
8 | -O "$tmpDir/fira.zip"
9 | 7z x -o"$tmpDir" "$tmpDir/fira.zip"
10 |
11 | rm -rf ./fira/*
12 | mv "$tmpDir"/ttf/* ./fira/
13 |
14 | rm -rf "$tmpDir"
15 |
16 | wget "https://raw.githubusercontent.com/tonsky/FiraCode/$version/FiraCode.glyphs" \
17 | -O ./fira.glyphs
18 |
19 | for f in ./fira/*.ttf; do
20 | fo=$(basename "$f" .ttf)
21 | fontforge -quiet -lang=ff -c "Open('$f'); Generate('./fira/$fo.otf'); Close();"
22 | done
--------------------------------------------------------------------------------
/scripts/generate_build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SRC=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
4 | LIGA_DIR=$SRC/..
5 |
6 | DIR=$1
7 | FONTS="$LIGA_DIR/fonts/$DIR"
8 |
9 | mkdir -p "$FONTS"
10 | mkdir -p "$LIGA_DIR/input/$DIR"
11 |
12 | cp "$LIGA_DIR/config_sample.py" "$FONTS/config.py"
13 |
14 | echo -ne "#!/usr/bin/env bash
15 |
16 | SRC=\$(realpath \"\$(dirname \"\${BASH_SOURCE[0]}\")\")
17 |
18 | # Project root path relative to this .sh file
19 | LIGA_DIR=\$SRC/../..
20 | SCRIPTS_DIR=\$LIGA_DIR/scripts
21 | source \"\$SCRIPTS_DIR\"/build_family.sh
22 | declare -A FONT_WEIGHT
23 |
24 | # String to prefix the name of the generated font with.
25 | PREFIX=\"Liga \"
26 |
27 | # Name of the generated font. Completely replaces the original and prefix
28 | # variable will be ignored.
29 | # OUTPUT_NAME=\"\"
30 |
31 | # Where the generated font files will be located
32 | OUTPUT_DIR=\"\$LIGA_DIR/output/\$PREFIX\"\"$DIR\"
33 |
34 | # Where the input font files are located
35 | INPUT_DIR=\"\$LIGA_DIR/input/$DIR\"
36 |
37 | # The python file to copy the configuration from.
38 | CONFIG=\"\$SRC/config.py\"
39 |
40 | # The variable below is a associative array in which keys must be the basename
41 | # of each font file (without extensions), and values the following options:
42 | # - Light
43 | # - Regular
44 | # - Retina
45 | # - Medium
46 | # - SemiBold
47 | # - Bold
48 | # This serves the purpose of handwrite the weight of the FiraCode file in case
49 | # the automatic weight detection doesn't fit well.
50 |
51 | FONT_WEIGHT=(
52 | # Example
53 | # [\"IBMPlexMono-Thin\"]=\"Light\"
54 | # [\"IBMPlexMono-Regular\"]=\"Regular\"
55 | # [\"IBMPlexMono-Text\"]=\"Retina\"
56 | # [\"IBMPlexMono-Bold\"]=\"Bold\"
57 | )
58 |
59 | # If this variable is set to true, only the files specified in \$FONT_WEIGHT
60 | # will be ligated. Otherwise, all the font files will also be.
61 | FILTER_BY_FONT_WEIGHT=false
62 |
63 | # Copy glyphs for (some) individual characters from the ligature font as well.
64 | # This will result in punctuation that matches the ligatures more closely, but
65 | # may not fit in as well with the rest of the font.
66 | COPY_GLYPHS=true
67 |
68 | # Remove the currently existing ligatures from the input font file. It is
69 | # recommended in case of glitches presented in the resulting font.
70 | REMOVE_ORIGINAL_LIGATURES=true
71 |
72 | pushd \"\$LIGA_DIR\" || exit
73 | build_family
74 | popd || exit
75 |
76 | # Finally you could copy the font license to the output
77 | # directory, like:
78 | # cp \"\$INPUT_DIR/LICENSE.txt\" \"\$OUTPUT_DIR\"
79 | " \
80 | > "$FONTS/build.sh"
81 |
82 | chmod +x "$FONTS/build.sh"
83 |
--------------------------------------------------------------------------------
/scripts/list_fonts.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | shopt -s globstar
4 |
5 | if [ "$(command -v exa)" ]; then
6 | exa -l -s mod -r fonts/**/build.sh
7 | else
8 | ls -l --sort time fonts/**/build.sh
9 | fi
10 |
--------------------------------------------------------------------------------
/scripts/progress_bar.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # https://github.com/pollev/bash_progress_bar - See license at end of file
3 |
4 | # Usage:
5 | # Source this script
6 | # enable_trapping <- optional to clean up properly if user presses ctrl-c
7 | # setup_scroll_area <- create empty progress bar
8 | # draw_progress_bar 10 <- advance progress bar
9 | # draw_progress_bar 40 <- advance progress bar
10 | # block_progress_bar 45 <- turns the progress bar yellow to indicate some action is requested from the user
11 | # draw_progress_bar 90 <- advance progress bar
12 | # destroy_scroll_area <- remove progress bar
13 |
14 | # Constants
15 | CODE_SAVE_CURSOR="\033[s"
16 | CODE_RESTORE_CURSOR="\033[u"
17 | CODE_CURSOR_IN_SCROLL_AREA="\033[1A"
18 |
19 | # Variables
20 | TRAP_SET="false"
21 |
22 | CURRENT_NR_LINES=0
23 | CURRENT_NR_COLS=0
24 | CURRENT_TOTAL=1
25 |
26 | setup_scroll_area() {
27 | trap_on_interrupt
28 |
29 | lines=$(tput lines)
30 | CURRENT_NR_LINES=$lines
31 | cols=$(tput cols)
32 | CURRENT_NR_COLS=$cols
33 | CURRENT_TOTAL=$1
34 | ((lines=lines-1))
35 | # Scroll down a bit to avoid visual glitch when the screen area shrinks by one row
36 | echo -en "\n"
37 |
38 | # Save cursor
39 | echo -en "$CODE_SAVE_CURSOR"
40 | # Set scroll region (this will place the cursor in the top left)
41 | echo -en "\033[0;${lines}r"
42 |
43 | # Restore cursor but ensure its inside the scrolling area
44 | echo -en "$CODE_RESTORE_CURSOR"
45 | echo -en "$CODE_CURSOR_IN_SCROLL_AREA"
46 |
47 | # Start empty progress bar
48 | draw_progress_bar 0 "$CURRENT_TOTAL"
49 | }
50 |
51 | destroy_scroll_area() {
52 | lines=$(tput lines)
53 | # Save cursor
54 | echo -en "$CODE_SAVE_CURSOR"
55 | # Set scroll region (this will place the cursor in the top left)
56 | echo -en "\033[0;${lines}r"
57 |
58 | # Restore cursor but ensure its inside the scrolling area
59 | echo -en "$CODE_RESTORE_CURSOR"
60 | echo -en "$CODE_CURSOR_IN_SCROLL_AREA"
61 |
62 | # We are done so clear the scroll bar
63 | clear_progress_bar
64 |
65 | # Scroll down a bit to avoid visual glitch when the screen area grows by one row
66 | echo -en "\n\n"
67 |
68 | # Once the scroll area is cleared, we want to remove any trap previously set. Otherwise, ctrl+c will exit our shell
69 | if [ "$TRAP_SET" = "true" ]; then
70 | trap - INT
71 | fi
72 | }
73 |
74 | draw_progress_bar() {
75 | current=$1
76 | lines=$(tput lines)
77 | cols=$(tput cols)
78 | ((lines=lines))
79 |
80 | # Check if the window has been resized. If so, reset the scroll area
81 | if ((lines != CURRENT_NR_LINES)) || ((cols != CURRENT_NR_COLS)); then
82 | setup_scroll_area "$CURRENT_TOTAL"
83 | fi
84 |
85 | # Save cursor
86 | echo -en "$CODE_SAVE_CURSOR"
87 |
88 | # Move cursor position to last row
89 | echo -en "\033[${lines};0f"
90 |
91 | # Clear progress bar
92 | tput el
93 |
94 | # Draw progress bar
95 | print_bar_text "$current" "$total"
96 |
97 | # Restore cursor position
98 | echo -en "$CODE_RESTORE_CURSOR"
99 | }
100 |
101 | clear_progress_bar() {
102 | lines=$(tput lines)
103 | ((lines=lines))
104 | # Save cursor
105 | echo -en "$CODE_SAVE_CURSOR"
106 |
107 | # Move cursor position to last row
108 | echo -en "\033[${lines};0f"
109 |
110 | # clear progress bar
111 | tput el
112 |
113 | # Restore cursor position
114 | echo -en "$CODE_RESTORE_CURSOR"
115 | }
116 |
117 | print_bar_text() {
118 | current=$1
119 | total=$CURRENT_TOTAL
120 | percentage=$((current*100/total))
121 | cols=$(tput cols)
122 | ((half_cols=cols/2))
123 | ((bar_size=half_cols-(${#total}*2+6)))
124 |
125 | # Prepare progress bar
126 | ((complete_size=bar_size*percentage/100))
127 | ((remainder_size=bar_size-complete_size))
128 |
129 | local left_bit=""
130 | if (( complete_size > 0 )); then
131 | left_bit=""
132 | fi
133 | local bit=""
134 | if (( complete_size > 1 )); then
135 | bit=""
136 | fi
137 | local right_bit=""
138 | if (( remainder_size == 0 )); then
139 | right_bit=""
140 | fi
141 | progress_bar=$(echo -ne $left_bit; printf_new $bit $complete_size; printf_new "" $remainder_size; echo -ne $right_bit);
142 |
143 | # Print progress bar
144 | white_space=$(printf_new "|" "$half_cols");
145 | echo -en "$white_space $progress_bar $(printf "%${#total}s" "$current")/$total"
146 | }
147 |
148 | trap_on_interrupt() {
149 | # If this function is called, we setup an interrupt handler to cleanup the progress bar
150 | TRAP_SET="true"
151 | trap cleanup_on_interrupt INT
152 | }
153 |
154 | cleanup_on_interrupt() {
155 | destroy_scroll_area
156 | exit
157 | }
158 |
159 | printf_new() {
160 | str=$1
161 | num=$2
162 | for ((i=0; i test/showcases.txt
--------------------------------------------------------------------------------
/scripts/update_builds.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | BUILDS=()
4 |
5 | mapfile -t BUILDS < <(find fonts -mindepth 1 -type d -not -path fonts/ignore | perl -p -e "s/fonts\///g")
6 |
7 | for item in "${BUILDS[@]}"; do
8 | ./scripts/generate_build.sh "$item"
9 | done
--------------------------------------------------------------------------------
/server.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ssi-server/ssi_server.py
--------------------------------------------------------------------------------
/showcase.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/showcase.gif
--------------------------------------------------------------------------------
/ssi-server/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
203 |
--------------------------------------------------------------------------------
/ssi-server/README.md:
--------------------------------------------------------------------------------
1 | ssi-server
2 | ==========
3 |
4 | Server Side Includes in Python's SimpleHTTPServer
5 |
6 | Use this in the same way as Python's SimpleHTTPServer:
7 |
8 | ./ssi_server.py [port]
9 |
10 | The only difference is that, for files ending in '.html', ssi_server will
11 | inline SSI (Server Side Includes) of the form:
12 |
13 |
14 |
15 | Quick start:
16 |
17 | git clone https://github.com/danvk/ssi-server.git
18 | cd ssi-server
19 | ./ssi_server
20 | (visit localhost:8000) in your browser.
21 |
--------------------------------------------------------------------------------
/ssi-server/about.html:
--------------------------------------------------------------------------------
1 | ssi_server is like Python's SimpleHTTPServer, but with minimal support for Server Side Includes (SSI).
2 |
--------------------------------------------------------------------------------
/ssi-server/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ssi_server demo
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ssi-server/ssi.py:
--------------------------------------------------------------------------------
1 | '''
2 | Shared code for ssi_server.py and ssi_expander.py.
3 | '''
4 |
5 | import re
6 | import os.path
7 | import warnings
8 |
9 | error_tmpl = """
10 |
11 | %s
12 |
13 | """
14 |
15 | def InlineIncludes(path, web_path):
16 | """Read a file, expanding statements."""
17 | def get_include_file_content(x):
18 | file_to_read = x.group(2)
19 | recursive_web_path = web_path
20 | if len(os.path.dirname(web_path)) >2:
21 | file_to_read = os.path.join(os.path.dirname(web_path),file_to_read)[1:]
22 | recursive_web_path = "/%s/" % os.path.dirname(file_to_read)
23 | if os.path.exists(file_to_read):
24 | # Recursively process ssi calls in the included file
25 | return InlineIncludes(file_to_read, recursive_web_path)
26 | else:
27 | error = "File not found: %s" % file_to_read
28 | warnings.warn(error)
29 | return error_tmpl % error
30 |
31 | content = open(path).read()
32 | content = re.sub(r'',
33 | get_include_file_content,
34 | content)
35 | return content
36 |
--------------------------------------------------------------------------------
/ssi-server/ssi_expander.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | '''
3 | This script copies the files in one directory to another, expanding any SSI
4 | statements it encounters along the way.
5 |
6 | Usage:
7 |
8 | ./ssi_expander.py [source_directory] destination_directory
9 |
10 | If source_directory is not specified, then the current directory is used.
11 | '''
12 |
13 | import os
14 | import ssi
15 | import sys
16 |
17 | def process(source, dest):
18 | for dirpath, dirnames, filenames in os.walk(source):
19 | dest_dir = os.path.realpath(os.path.join(dest, os.path.relpath(dirpath, source)))
20 | os.mkdir(dest_dir)
21 | for filename in filenames:
22 | src_path = os.path.abspath(os.path.join(dirpath, filename))
23 | dest_path = os.path.join(dest_dir, filename)
24 | if not filename.endswith('.html'):
25 | os.symlink(src_path, dest_path)
26 | else:
27 | file(dest_path, 'w').write(ssi.InlineIncludes(src_path, "/%s" % os.path.relpath(src_path)))
28 |
29 | # ignore hidden directories
30 | for dirname in dirnames[:]:
31 | if dirname.startswith('.'):
32 | dirnames.remove(dirname)
33 |
34 |
35 | if __name__ == '__main__':
36 | if len(sys.argv) == 2:
37 | source = '.'
38 | dest = sys.argv[1]
39 | elif len(sys.argv) == 3:
40 | source, dest = sys.argv[1:]
41 | else:
42 | sys.stderr.write('Usage: %s [source_directory] destination_directory\n' % sys.argv[0])
43 | sys.exit(1)
44 |
45 | process(source, dest)
46 |
--------------------------------------------------------------------------------
/ssi-server/ssi_server.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | '''
3 | Use this in the same way as Python's SimpleHTTPServer:
4 |
5 | ./ssi_server.py [port]
6 |
7 | The only difference is that, for files ending in '.html', ssi_server will
8 | inline SSI (Server Side Includes) of the form:
9 |
10 |
11 |
12 | Run ./ssi_server.py in this directory and visit localhost:8000 for an exmaple.
13 | '''
14 |
15 | import os
16 | import ssi
17 | try:
18 | # This works for Python 2
19 | from SimpleHTTPServer import SimpleHTTPRequestHandler
20 | import SimpleHTTPServer
21 | except ImportError:
22 | # This works for Python 3
23 | from http.server import SimpleHTTPRequestHandler
24 | import http.server as SimpleHTTPServer
25 | import tempfile
26 |
27 |
28 | class SSIRequestHandler(SimpleHTTPRequestHandler):
29 | """Adds minimal support for directives.
30 |
31 | The key bit is translate_path, which intercepts requests and serves them
32 | using a temporary file which inlines the #includes.
33 | """
34 |
35 | def __init__(self, request, client_address, server):
36 | self.temp_files = []
37 | SimpleHTTPRequestHandler.__init__(self, request, client_address, server)
38 |
39 | def do_GET(self):
40 | SimpleHTTPRequestHandler.do_GET(self)
41 | self.delete_temp_files()
42 |
43 | def do_HEAD(self):
44 | SimpleHTTPRequestHandler.do_HEAD(self)
45 | self.delete_temp_files()
46 |
47 | def translate_path(self, path):
48 | fs_path = SimpleHTTPRequestHandler.translate_path(self, path)
49 | if self.path.endswith('/'):
50 | for index in "index.html", "index.htm", "index.shtml":
51 | index = os.path.join(fs_path, index)
52 | if os.path.exists(index):
53 | fs_path = index
54 | break
55 |
56 | if (fs_path.endswith('.html') or fs_path.endswith(".shtml")) and os.path.exists(fs_path):
57 | content = ssi.InlineIncludes(fs_path, path)
58 | fs_path = self.create_temp_file(fs_path, content)
59 | return fs_path
60 |
61 | def delete_temp_files(self):
62 | for temp_file in self.temp_files:
63 | os.remove(temp_file)
64 |
65 | def create_temp_file(self, original_path, content):
66 | _, ext = os.path.splitext(original_path)
67 | if ext == ".shtml":
68 | ext = ".html"
69 | fd, path = tempfile.mkstemp(suffix=ext)
70 | try:
71 | os.write(fd, content) # This works for Python 2
72 | except TypeError:
73 | os.write(fd, bytes(content, 'UTF-8')) # This works for Python 3
74 | os.close(fd)
75 |
76 | self.temp_files.append(path)
77 | return path
78 |
79 |
80 | if __name__ == '__main__':
81 | SimpleHTTPServer.test(HandlerClass=SSIRequestHandler)
82 |
--------------------------------------------------------------------------------
/test/UnicodeBMPFallback.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EzequielRamis/liga/169e73ca05a26987b08a72c64f84c8519471e8b0/test/UnicodeBMPFallback.ttf
--------------------------------------------------------------------------------
/test/fira.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "FiraCode";
3 | src: url("../fira/FiraCode-Light.otf");
4 | font-weight: 300;
5 | }
6 | @font-face {
7 | font-family: "FiraCode";
8 | src: url("../fira/FiraCode-Regular.otf");
9 | font-weight: 400;
10 | }
11 | @font-face {
12 | font-family: "FiraCode";
13 | src: url("../fira/FiraCode-Retina.otf");
14 | font-weight: 450;
15 | }
16 | @font-face {
17 | font-family: "FiraCode";
18 | src: url("../fira/FiraCode-Medium.otf");
19 | font-weight: 500;
20 | }
21 | @font-face {
22 | font-family: "FiraCode";
23 | src: url("../fira/FiraCode-SemiBold.otf");
24 | font-weight: 600;
25 | }
26 | @font-face {
27 | font-family: "FiraCode";
28 | src: url("../fira/FiraCode-Bold.otf");
29 | font-weight: 700;
30 | }
31 |
--------------------------------------------------------------------------------