-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathschema.json
263 lines (263 loc) · 9.53 KB
/
schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Maple Mono Build Configuration Schema",
"description": "Schema for the build configuration of Maple Mono",
"type": "object",
"definitions": {
"freeze_options": {
"type": "string",
"enum": [
"ignore",
"disable",
"enable"
],
"enumDescriptions": [
"Do nothing",
"Remove the features from font file",
"Enable the features as default ligatures"
]
}
},
"properties": {
"pool_size": {
"type": "number",
"description": "The number of parallel tasks. Default is 4. When run in codespace, this will be 1",
"default": 4
},
"family_name": {
"type": "string",
"description": "The font family name",
"default": "Maple Mono"
},
"use_hinted": {
"type": "boolean",
"description": "Whether to use hinted TTF as base font",
"default": true
},
"ligature": {
"type": "boolean",
"description": "Whether to enable ligature.\nIf set to false, all the ligatures will be removed and 'ssXX' options in 'feature_freeze' will no longer effect",
"default": true
},
"feature_freeze": {
"type": "object",
"description": "Freeze some font features (No effect on Variable font) \n enable: Move ligature rules to `calt`, which will enable the ligatures without setting up `cvXX` / `ssXX` / `zero` in font features config, just as default ligatures \n disable: Remove the ligature rules in `cvXX` / `ssXX` / `zero`, which will no longer effect, even if you enable it manually \n ignore: Do nothing",
"properties": {
"cv01": {
"description": "Classic '@', '$', '%', '&', 'Q', '=>', '->'",
"$ref": "#/definitions/freeze_options"
},
"cv02": {
"description": "Alternative 'a' (with top alarm)",
"$ref": "#/definitions/freeze_options"
},
"cv03": {
"description": "Alternative regular 'i' (without bottom left bar)",
"$ref": "#/definitions/freeze_options"
},
"cv04": {
"description": "Alternative 'l' (with bottom left bar) and '1' (without bottom bar), will be overrided by cv35 in italic style",
"$ref": "#/definitions/freeze_options"
},
"cv31": {
"description": "[Italic Only] Alternative 'a' (with top alarm)",
"$ref": "#/definitions/freeze_options"
},
"cv32": {
"description": "[Italic Only] Alternative 'f' (without bottom tail)",
"$ref": "#/definitions/freeze_options"
},
"cv33": {
"description": "[Italic Only] Alternative 'i' (with bottom left bar) and 'j'",
"$ref": "#/definitions/freeze_options"
},
"cv34": {
"description": "[Italic Only] Alternative 'k' (without center circle)",
"$ref": "#/definitions/freeze_options"
},
"cv35": {
"description": "[Italic Only] Alternative 'l' (without center tail)",
"$ref": "#/definitions/freeze_options"
},
"cv36": {
"description": "[Italic Only] Alternative 'x' (without top and bottom tails)",
"$ref": "#/definitions/freeze_options"
},
"cv37": {
"description": "[Italic Only] Alternative 'y' (with straight intersection)",
"$ref": "#/definitions/freeze_options"
},
"cv96": {
"description": "[CN Only] Full width '“'(double quote left), '”'(double quote right), '‘'(single quote left), '’'(single quote right)",
"$ref": "#/definitions/freeze_options"
},
"cv97": {
"description": "[CN Only] Full width '…'(ellipsis)",
"$ref": "#/definitions/freeze_options"
},
"cv98": {
"description": "[CN Only] Full width '—'(emdash)",
"$ref": "#/definitions/freeze_options"
},
"cv99": {
"description": "[CN Only] Traditional punctuations",
"$ref": "#/definitions/freeze_options"
},
"ss01": {
"description": "Broken equals ligatures (==, ===, !=, !==, =/=)",
"$ref": "#/definitions/freeze_options"
},
"ss02": {
"description": "Broken compare and equal ligatures (<=, >=)",
"$ref": "#/definitions/freeze_options"
},
"ss03": {
"description": "Enable arbitrary tag (allow to use any case letters in all tags)",
"$ref": "#/definitions/freeze_options"
},
"ss04": {
"description": "Break multiple underscores (__, #__)",
"$ref": "#/definitions/freeze_options"
},
"ss05": {
"description": "Restore the thickness of backslash in escape letters (\\\\, \\', \\[, ...)",
"$ref": "#/definitions/freeze_options"
},
"ss06": {
"description": "[Italic Only] Break connected strokes between italic letters (al, ul, il ...)",
"$ref": "#/definitions/freeze_options"
},
"ss07": {
"description": "Relax the conditions for enabling multiple greater ligatures (>>, >>>)",
"$ref": "#/definitions/freeze_options"
},
"ss08": {
"description": "Enable double headed arrows and reverse arrows (>>=, -<<, ->>, >- ...)",
"$ref": "#/definitions/freeze_options"
},
"zero": {
"description": "Dot style '0'",
"$ref": "#/definitions/freeze_options"
}
}
},
"github_mirror": {
"type": "string",
"description": "Github mirror config, will download from https://{github_mirror}/<user>/<repo>/releases/download/<tag>/<file>",
"default": "github.com"
},
"nerd_font": {
"type": "object",
"description": "Config for Nerd-Font",
"properties": {
"enable": {
"type": "boolean",
"description": "Whether to enable Nerd-Font",
"default": true
},
"version": {
"type": "string",
"description": "Target version of Nerd-Font. If font-patcher not exists when need to use it or there is no prebuild font for current version, will download from Github",
"default": "3.2.1"
},
"mono": {
"type": "boolean",
"description": "Whether to make icon width fixed",
"default": false
},
"font_forge_bin":{
"type": "string",
"description": "Font Forge bin path. Default: \n Windows: C:/Program Files (x86)/FontForgeBuilds/bin/fontforge.exe \n MacOS: /Applications/FontForge.app/Contents/Resources/opt/local/bin/fontforge\" \n Linux: /usr/bin/fontforge"
},
"use_font_patcher": {
"type": "boolean",
"description": "Prefer to use Font Patcher instead of using prebuilt NerdFont base font. If you want to custom build Nerd-Font using font-patcher, you need to set this to True",
"default": false
},
"glyphs": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"--complete"
],
"description": "Symbol Fonts settings. if is not [\"--complete\"], will use font-patcher to generate fonts. Full args: https://github.com/ryanoasis/nerd-fonts?tab=readme-ov-file#font-patcher"
},
"extra_args": {
"type": "array",
"items": {
"type": "string"
},
"default": [],
"description": "Extra arguments for font-patcher, default args: [\"-l\", \"--careful\", \"--outputdir\", output_nf], if \"mono\" is set to true, \"--mono\" will be added, full args: https://github.com/ryanoasis/nerd-fonts?tab=readme-ov-file#font-patcher"
}
},
"required": [
"enable",
"version",
"mono",
"use_font_patcher",
"glyphs",
"extra_args"
]
},
"cn": {
"type": "object",
"description": "Config for Chinese font",
"properties": {
"enable": {
"type": "boolean",
"description": "Whether to build Chinese fonts. Skip if Chinese base fonts are not founded",
"default": true
},
"with_nerd_font": {
"type": "boolean",
"description": "Whether to patch Nerd-Font",
"default": true
},
"fix_meta_table": {
"type": "boolean",
"description": "Fix design language and supported languages in META table",
"default": true
},
"clean_cache": {
"type": "boolean",
"description": "Whether to clean instantiated base CN fonts",
"default": false
},
"narrow": {
"type": "boolean",
"description": "[Experimental] Whether to narrow CN characters. THIS WILL BREAK THE 2:1 METRIC\nOnly supported in VSCode currently",
"default": false
},
"use_hinted": {
"type": "boolean",
"description": "whether to hint CN font (will increase about 33% size)",
"default": false
},
"use_static_base_font": {
"type": "boolean",
"description": "whether to use large pre-instantiated static CN font as base font (instantiate will cost 40-50 minutes)",
"default": true
}
},
"required": [
"enable",
"with_nerd_font",
"fix_meta_table",
"clean_cache",
"narrow",
"use_hinted",
"use_static_base_font"
]
}
},
"required": [
"family_name",
"use_hinted",
"ligature",
"nerd_font",
"cn"
]
}