fontist 2.1.2 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/docs.yml +70 -0
- data/.github/workflows/links.yml +100 -0
- data/.github/workflows/rake-metanorma.yaml +21 -3
- data/.github/workflows/release.yml +2 -0
- data/.gitignore +9 -7
- data/README.adoc +100 -0
- data/docs/.vitepress/config.ts +153 -32
- data/docs/.vitepress/data/cli-commands.json +461 -0
- data/docs/.vitepress/data/exit-codes.json +21 -0
- data/docs/.vitepress/data/features.json +44 -0
- data/docs/.vitepress/theme/components/HeroCodeBlock.vue +98 -0
- data/docs/.vitepress/theme/components/WithinHero.vue +30 -0
- data/docs/.vitepress/theme/index.ts +12 -0
- data/docs/.vitepress/theme/style.css +152 -0
- data/docs/api/errors.md +211 -0
- data/docs/api/font.md +101 -0
- data/docs/api/fontconfig.md +82 -0
- data/docs/api/formula.md +103 -0
- data/docs/api/index.md +49 -0
- data/docs/api/manifest.md +209 -0
- data/docs/cli/cache.md +100 -0
- data/docs/cli/config.md +123 -0
- data/docs/cli/create-formula.md +65 -0
- data/docs/cli/exit-codes.md +73 -0
- data/docs/cli/fontconfig.md +85 -0
- data/docs/cli/import.md +136 -0
- data/docs/cli/index-cmd.md +37 -0
- data/docs/cli/index.md +80 -0
- data/docs/cli/install.md +52 -0
- data/docs/cli/list.md +39 -0
- data/docs/cli/manifest.md +110 -0
- data/docs/cli/repo.md +142 -0
- data/docs/cli/status.md +39 -0
- data/docs/cli/uninstall.md +34 -0
- data/docs/cli/update.md +31 -0
- data/docs/cli/version.md +38 -0
- data/docs/components/CliCommand.vue +77 -0
- data/docs/components/CliExamples.vue +17 -0
- data/docs/components/CliOptions.vue +26 -0
- data/docs/components/ExitCodes.vue +18 -0
- data/docs/guide/ci.md +4 -0
- data/docs/guide/concepts/fonts.md +158 -0
- data/docs/guide/concepts/formats.md +234 -0
- data/docs/guide/concepts/index.md +109 -0
- data/docs/guide/concepts/licenses.md +236 -0
- data/docs/guide/concepts/requirements.md +388 -0
- data/docs/guide/concepts/variable-fonts.md +212 -0
- data/docs/guide/formulas.md +192 -0
- data/docs/guide/how-it-works.md +428 -0
- data/docs/guide/index.md +26 -47
- data/docs/guide/installation.md +105 -0
- data/docs/guide/manifests.md +132 -0
- data/docs/guide/quick-start.md +76 -0
- data/docs/guide/why.md +4 -0
- data/docs/index.md +55 -23
- data/docs/lychee.toml +33 -0
- data/docs/package-lock.json +1539 -770
- data/docs/package.json +4 -6
- data/docs/public/apple-touch-icon.png +0 -0
- data/docs/public/favicon-96x96.png +0 -0
- data/docs/public/favicon.ico +0 -0
- data/docs/public/favicon.svg +1 -0
- data/docs/public/logo-full.svg +1 -0
- data/docs/public/logo.svg +1 -0
- data/docs/public/site.webmanifest +21 -0
- data/docs/public/web-app-manifest-192x192.png +0 -0
- data/docs/public/web-app-manifest-512x512.png +0 -0
- data/lib/fontist/cli.rb +0 -1
- data/lib/fontist/font_file.rb +65 -14
- data/lib/fontist/indexes/index_mixin.rb +109 -20
- data/lib/fontist/system_index.rb +30 -1
- data/lib/fontist/version.rb +1 -1
- metadata +59 -8
- data/.github/workflows/deploy-pages.yml +0 -54
- data/docs/guide/api-ruby.md +0 -189
- data/docs/public/hero.png +0 -0
- data/docs/public/logo.png +0 -0
- data/docs/reference/index.md +0 -143
- /data/{docs/google-fonts-multi-format-usage.md → google-fonts-multi-format-usage.md} +0 -0
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
{
|
|
2
|
+
"install": {
|
|
3
|
+
"description": "Install one or more fonts",
|
|
4
|
+
"syntax": "fontist install FONT... [options]",
|
|
5
|
+
"arguments": [
|
|
6
|
+
{ "name": "FONT", "description": "One or more font names to install", "required": true, "variadic": true }
|
|
7
|
+
],
|
|
8
|
+
"options": [
|
|
9
|
+
{ "name": "force", "alias": "f", "type": "boolean", "description": "Install even if already installed in system" },
|
|
10
|
+
{ "name": "formula", "alias": "F", "type": "boolean", "description": "Install whole formula instead of a font" },
|
|
11
|
+
{ "name": "accept-all-licenses", "alias": "a", "type": "boolean", "description": "Accept all license agreements" },
|
|
12
|
+
{ "name": "hide-licenses", "alias": "h", "type": "boolean", "description": "Hide license texts" },
|
|
13
|
+
{ "name": "no-progress", "alias": "p", "type": "boolean", "description": "Hide download progress" },
|
|
14
|
+
{ "name": "version", "alias": "V", "type": "string", "description": "Specify particular version of a font" },
|
|
15
|
+
{ "name": "smallest", "alias": "s", "type": "boolean", "description": "Install the smallest font by file size if several" },
|
|
16
|
+
{ "name": "newest", "alias": "n", "type": "boolean", "description": "Install the newest version of a font if several" },
|
|
17
|
+
{ "name": "size-limit", "alias": "S", "type": "numeric", "description": "Specify upper limit for file size of a formula to be installed (default is 500 MB)" },
|
|
18
|
+
{ "name": "update-fontconfig", "alias": "u", "type": "boolean", "description": "Update fontconfig" },
|
|
19
|
+
{ "name": "location", "alias": "l", "type": "string", "enum": ["fontist", "user", "system"], "description": "Install location: fontist (default), user, system" }
|
|
20
|
+
],
|
|
21
|
+
"examples": [
|
|
22
|
+
{ "description": "Install a single font", "command": "fontist install \"Roboto\"" },
|
|
23
|
+
{ "description": "Install multiple fonts", "command": "fontist install \"Fira Code\" \"Open Sans\"" },
|
|
24
|
+
{ "description": "Force reinstall", "command": "fontist install \"Roboto\" --force" },
|
|
25
|
+
{ "description": "Install to user directory", "command": "fontist install \"Roboto\" --location user" },
|
|
26
|
+
{ "description": "Accept licenses automatically (for CI)", "command": "fontist install \"Roboto\" --accept-all-licenses --hide-licenses" },
|
|
27
|
+
{ "description": "Install a specific version", "command": "fontist install \"Roboto\" --version 2.0" },
|
|
28
|
+
{ "description": "Install whole formula", "command": "fontist install \"Roboto\" --formula" }
|
|
29
|
+
],
|
|
30
|
+
"related": ["uninstall", "list", "status"]
|
|
31
|
+
},
|
|
32
|
+
"uninstall": {
|
|
33
|
+
"description": "Uninstall font by font or formula name",
|
|
34
|
+
"syntax": "fontist uninstall FONT",
|
|
35
|
+
"aliases": ["remove"],
|
|
36
|
+
"arguments": [
|
|
37
|
+
{ "name": "FONT", "description": "Font or formula name to uninstall", "required": true }
|
|
38
|
+
],
|
|
39
|
+
"options": [],
|
|
40
|
+
"examples": [
|
|
41
|
+
{ "description": "Uninstall a font", "command": "fontist uninstall \"Roboto\"" },
|
|
42
|
+
{ "description": "Using the remove alias", "command": "fontist remove \"Roboto\"" }
|
|
43
|
+
],
|
|
44
|
+
"related": ["install", "status"]
|
|
45
|
+
},
|
|
46
|
+
"status": {
|
|
47
|
+
"description": "Show paths of installed fonts",
|
|
48
|
+
"syntax": "fontist status [FONT]",
|
|
49
|
+
"arguments": [
|
|
50
|
+
{ "name": "FONT", "description": "Optional font name to filter results", "required": false }
|
|
51
|
+
],
|
|
52
|
+
"options": [],
|
|
53
|
+
"examples": [
|
|
54
|
+
{ "description": "Show all installed fonts", "command": "fontist status" },
|
|
55
|
+
{ "description": "Show paths for a specific font", "command": "fontist status \"Open Sans\"" }
|
|
56
|
+
],
|
|
57
|
+
"related": ["list", "install"]
|
|
58
|
+
},
|
|
59
|
+
"list": {
|
|
60
|
+
"description": "List installation status of fonts in fontist",
|
|
61
|
+
"syntax": "fontist list [FONT]",
|
|
62
|
+
"arguments": [
|
|
63
|
+
{ "name": "FONT", "description": "Optional font name to filter results", "required": false }
|
|
64
|
+
],
|
|
65
|
+
"options": [],
|
|
66
|
+
"examples": [
|
|
67
|
+
{ "description": "List all fonts and their status", "command": "fontist list" },
|
|
68
|
+
{ "description": "Check status of a specific font", "command": "fontist list \"Fira Mono\"" }
|
|
69
|
+
],
|
|
70
|
+
"related": ["status", "install"]
|
|
71
|
+
},
|
|
72
|
+
"update": {
|
|
73
|
+
"description": "Update formulas from the repository",
|
|
74
|
+
"syntax": "fontist update",
|
|
75
|
+
"arguments": [],
|
|
76
|
+
"options": [],
|
|
77
|
+
"examples": [
|
|
78
|
+
{ "description": "Update all formulas", "command": "fontist update" }
|
|
79
|
+
],
|
|
80
|
+
"related": ["version"]
|
|
81
|
+
},
|
|
82
|
+
"version": {
|
|
83
|
+
"description": "Show fontist version and formulas repository information",
|
|
84
|
+
"syntax": "fontist version",
|
|
85
|
+
"arguments": [],
|
|
86
|
+
"options": [],
|
|
87
|
+
"examples": [
|
|
88
|
+
{ "description": "Show version information", "command": "fontist version" }
|
|
89
|
+
],
|
|
90
|
+
"related": ["update"]
|
|
91
|
+
},
|
|
92
|
+
"create-formula": {
|
|
93
|
+
"description": "Create a new formula with fonts from a URL",
|
|
94
|
+
"syntax": "fontist create-formula URL [options]",
|
|
95
|
+
"arguments": [
|
|
96
|
+
{ "name": "URL", "description": "URL to download fonts from", "required": true }
|
|
97
|
+
],
|
|
98
|
+
"options": [
|
|
99
|
+
{ "name": "name", "alias": null, "type": "string", "description": "Font name, e.g., 'Times New Roman'" },
|
|
100
|
+
{ "name": "mirror", "alias": null, "type": "array", "description": "Mirror URLs (can be repeated)" },
|
|
101
|
+
{ "name": "subdir", "alias": null, "type": "string", "description": "Subdirectory to take fonts from, e.g., 'fonts/static_otf'" },
|
|
102
|
+
{ "name": "file-pattern", "alias": null, "type": "string", "description": "File pattern to match, e.g., '*.otf'" },
|
|
103
|
+
{ "name": "name-prefix", "alias": null, "type": "string", "description": "Prefix to add to all font family names" }
|
|
104
|
+
],
|
|
105
|
+
"examples": [
|
|
106
|
+
{ "description": "Create a formula from a font archive", "command": "fontist create-formula https://example.com/fonts.zip --name \"Custom Font\"" },
|
|
107
|
+
{ "description": "Create formula with subdirectory filter", "command": "fontist create-formula https://example.com/fonts.zip --subdir \"fonts/otf\"" }
|
|
108
|
+
],
|
|
109
|
+
"related": []
|
|
110
|
+
},
|
|
111
|
+
"rebuild-index": {
|
|
112
|
+
"description": "Rebuild formula index (used by formulas maintainers)",
|
|
113
|
+
"syntax": "fontist rebuild-index",
|
|
114
|
+
"arguments": [],
|
|
115
|
+
"options": [],
|
|
116
|
+
"examples": [
|
|
117
|
+
{ "description": "Rebuild the formula index", "command": "fontist rebuild-index" }
|
|
118
|
+
],
|
|
119
|
+
"related": []
|
|
120
|
+
},
|
|
121
|
+
"macos-catalogs": {
|
|
122
|
+
"description": "List available macOS font catalogs",
|
|
123
|
+
"syntax": "fontist macos-catalogs",
|
|
124
|
+
"arguments": [],
|
|
125
|
+
"options": [],
|
|
126
|
+
"examples": [
|
|
127
|
+
{ "description": "List available macOS font catalogs", "command": "fontist macos-catalogs" }
|
|
128
|
+
],
|
|
129
|
+
"related": ["import macos"]
|
|
130
|
+
},
|
|
131
|
+
"manifest": {
|
|
132
|
+
"description": "Manage font manifests",
|
|
133
|
+
"syntax": "fontist manifest SUBCOMMAND ...ARGS",
|
|
134
|
+
"subcommands": {
|
|
135
|
+
"install": {
|
|
136
|
+
"description": "Install fonts from a manifest file (YAML)",
|
|
137
|
+
"syntax": "fontist manifest install MANIFEST [options]",
|
|
138
|
+
"arguments": [
|
|
139
|
+
{ "name": "MANIFEST", "description": "Path to manifest YAML file", "required": true }
|
|
140
|
+
],
|
|
141
|
+
"options": [
|
|
142
|
+
{ "name": "accept-all-licenses", "alias": "a", "type": "boolean", "description": "Accept all license agreements" },
|
|
143
|
+
{ "name": "hide-licenses", "alias": "h", "type": "boolean", "description": "Hide license texts" },
|
|
144
|
+
{ "name": "location", "alias": "l", "type": "string", "enum": ["fontist", "user", "system"], "description": "Install location: fontist (default), user, system" }
|
|
145
|
+
],
|
|
146
|
+
"examples": [
|
|
147
|
+
{ "description": "Install fonts from manifest", "command": "fontist manifest install fonts.yml" },
|
|
148
|
+
{ "description": "Install with auto-accept licenses", "command": "fontist manifest install fonts.yml --accept-all-licenses --hide-licenses" }
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
"locations": {
|
|
152
|
+
"description": "Get locations of fonts from a manifest file",
|
|
153
|
+
"syntax": "fontist manifest locations MANIFEST [options]",
|
|
154
|
+
"arguments": [
|
|
155
|
+
{ "name": "MANIFEST", "description": "Path to manifest YAML file", "required": true }
|
|
156
|
+
],
|
|
157
|
+
"options": [
|
|
158
|
+
{ "name": "show-timing", "alias": "t", "type": "boolean", "description": "Show timing information for manifest resolution" }
|
|
159
|
+
],
|
|
160
|
+
"examples": [
|
|
161
|
+
{ "description": "Get font locations from manifest", "command": "fontist manifest locations fonts.yml" }
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"repo": {
|
|
167
|
+
"description": "Manage custom font repositories",
|
|
168
|
+
"syntax": "fontist repo SUBCOMMAND ...ARGS",
|
|
169
|
+
"subcommands": {
|
|
170
|
+
"setup": {
|
|
171
|
+
"description": "Setup a custom fontist repo and fetch its formulas",
|
|
172
|
+
"syntax": "fontist repo setup NAME URL",
|
|
173
|
+
"arguments": [
|
|
174
|
+
{ "name": "NAME", "description": "Name for the repository", "required": true },
|
|
175
|
+
{ "name": "URL", "description": "Git repository URL", "required": true }
|
|
176
|
+
],
|
|
177
|
+
"options": [],
|
|
178
|
+
"examples": [
|
|
179
|
+
{ "description": "Setup a custom repository", "command": "fontist repo setup my-fonts https://github.com/user/font-formulas" }
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
"update": {
|
|
183
|
+
"description": "Update formulas in a fontist repo",
|
|
184
|
+
"syntax": "fontist repo update NAME",
|
|
185
|
+
"arguments": [
|
|
186
|
+
{ "name": "NAME", "description": "Name of the repository", "required": true }
|
|
187
|
+
],
|
|
188
|
+
"options": [],
|
|
189
|
+
"examples": [
|
|
190
|
+
{ "description": "Update a custom repository", "command": "fontist repo update my-fonts" }
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"remove": {
|
|
194
|
+
"description": "Remove a fontist repo",
|
|
195
|
+
"syntax": "fontist repo remove NAME",
|
|
196
|
+
"arguments": [
|
|
197
|
+
{ "name": "NAME", "description": "Name of the repository", "required": true }
|
|
198
|
+
],
|
|
199
|
+
"options": [],
|
|
200
|
+
"examples": [
|
|
201
|
+
{ "description": "Remove a custom repository", "command": "fontist repo remove my-fonts" }
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
"list": {
|
|
205
|
+
"description": "List all fontist repos",
|
|
206
|
+
"syntax": "fontist repo list",
|
|
207
|
+
"arguments": [],
|
|
208
|
+
"options": [],
|
|
209
|
+
"examples": [
|
|
210
|
+
{ "description": "List all repositories", "command": "fontist repo list" }
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
"info": {
|
|
214
|
+
"description": "Show information about a repo",
|
|
215
|
+
"syntax": "fontist repo info NAME",
|
|
216
|
+
"arguments": [
|
|
217
|
+
{ "name": "NAME", "description": "Name of the repository", "required": true }
|
|
218
|
+
],
|
|
219
|
+
"options": [],
|
|
220
|
+
"examples": [
|
|
221
|
+
{ "description": "Get info about a repository", "command": "fontist repo info my-fonts" }
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"import": {
|
|
227
|
+
"description": "Import fonts from external sources",
|
|
228
|
+
"syntax": "fontist import SUBCOMMAND ...ARGS",
|
|
229
|
+
"subcommands": {
|
|
230
|
+
"google": {
|
|
231
|
+
"description": "Import Google fonts",
|
|
232
|
+
"syntax": "fontist import google [options]",
|
|
233
|
+
"arguments": [],
|
|
234
|
+
"options": [
|
|
235
|
+
{ "name": "source-path", "alias": null, "type": "string", "description": "Path to checked-out google/fonts repository" },
|
|
236
|
+
{ "name": "output-path", "alias": null, "type": "string", "description": "Output path for generated formulas (default: ./Formulas/google)" },
|
|
237
|
+
{ "name": "font-name", "alias": "f", "type": "string", "description": "Import specific font family by name" },
|
|
238
|
+
{ "name": "force", "alias": null, "type": "boolean", "description": "Overwrite existing formulas" },
|
|
239
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Enable verbose output" },
|
|
240
|
+
{ "name": "import-cache", "alias": null, "type": "string", "description": "Directory for import cache (default: ~/.fontist/import_cache)" }
|
|
241
|
+
],
|
|
242
|
+
"examples": [
|
|
243
|
+
{ "description": "Import all Google fonts", "command": "fontist import google" },
|
|
244
|
+
{ "description": "Import specific font", "command": "fontist import google --font-name \"Roboto\"" }
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
"macos": {
|
|
248
|
+
"description": "Import macOS supplementary fonts",
|
|
249
|
+
"syntax": "fontist import macos [options]",
|
|
250
|
+
"arguments": [],
|
|
251
|
+
"options": [
|
|
252
|
+
{ "name": "plist", "alias": null, "type": "string", "description": "Path to macOS font catalog XML" },
|
|
253
|
+
{ "name": "output-path", "alias": null, "type": "string", "description": "Output directory for generated formulas (default: formulas/macos)" },
|
|
254
|
+
{ "name": "font-name", "alias": "f", "type": "string", "description": "Import specific font by name" },
|
|
255
|
+
{ "name": "force", "alias": null, "type": "boolean", "description": "Overwrite existing formulas" },
|
|
256
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Enable verbose output" }
|
|
257
|
+
],
|
|
258
|
+
"examples": [
|
|
259
|
+
{ "description": "Import macOS fonts", "command": "fontist import macos --plist /path/to/catalog.xml" }
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
"sil": {
|
|
263
|
+
"description": "Import formulas from SIL International",
|
|
264
|
+
"syntax": "fontist import sil [options]",
|
|
265
|
+
"arguments": [],
|
|
266
|
+
"options": [
|
|
267
|
+
{ "name": "output-path", "alias": null, "type": "string", "description": "Output directory for generated formulas" },
|
|
268
|
+
{ "name": "font-name", "alias": "f", "type": "string", "description": "Import specific font by name" },
|
|
269
|
+
{ "name": "force", "alias": null, "type": "boolean", "description": "Overwrite existing formulas" },
|
|
270
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Enable verbose output" }
|
|
271
|
+
],
|
|
272
|
+
"examples": [
|
|
273
|
+
{ "description": "Import SIL fonts", "command": "fontist import sil" }
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"fontconfig": {
|
|
279
|
+
"description": "Manage fontconfig configuration",
|
|
280
|
+
"syntax": "fontist fontconfig SUBCOMMAND ...ARGS",
|
|
281
|
+
"subcommands": {
|
|
282
|
+
"update": {
|
|
283
|
+
"description": "Update fontconfig configuration to use fontist fonts",
|
|
284
|
+
"syntax": "fontist fontconfig update",
|
|
285
|
+
"arguments": [],
|
|
286
|
+
"options": [],
|
|
287
|
+
"examples": [
|
|
288
|
+
{ "description": "Update fontconfig", "command": "fontist fontconfig update" }
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
"remove": {
|
|
292
|
+
"description": "Remove fontist file from fontconfig configuration",
|
|
293
|
+
"syntax": "fontist fontconfig remove [options]",
|
|
294
|
+
"arguments": [],
|
|
295
|
+
"options": [
|
|
296
|
+
{ "name": "force", "alias": "f", "type": "boolean", "description": "Proceed even if file does not exist" }
|
|
297
|
+
],
|
|
298
|
+
"examples": [
|
|
299
|
+
{ "description": "Remove fontconfig integration", "command": "fontist fontconfig remove" }
|
|
300
|
+
]
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"config": {
|
|
305
|
+
"description": "Manage fontist configuration",
|
|
306
|
+
"syntax": "fontist config SUBCOMMAND ...ARGS",
|
|
307
|
+
"subcommands": {
|
|
308
|
+
"show": {
|
|
309
|
+
"description": "Show values of the current config",
|
|
310
|
+
"syntax": "fontist config show",
|
|
311
|
+
"arguments": [],
|
|
312
|
+
"options": [],
|
|
313
|
+
"examples": [
|
|
314
|
+
{ "description": "Show current config", "command": "fontist config show" }
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"set": {
|
|
318
|
+
"description": "Set a config attribute to a value",
|
|
319
|
+
"syntax": "fontist config set KEY VALUE",
|
|
320
|
+
"arguments": [
|
|
321
|
+
{ "name": "KEY", "description": "Config key to set", "required": true },
|
|
322
|
+
{ "name": "VALUE", "description": "Value to set", "required": true }
|
|
323
|
+
],
|
|
324
|
+
"options": [],
|
|
325
|
+
"examples": [
|
|
326
|
+
{ "description": "Set fonts path", "command": "fontist config set fonts_path /var/myfonts" }
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
"delete": {
|
|
330
|
+
"description": "Delete a config attribute (reset to default)",
|
|
331
|
+
"syntax": "fontist config delete KEY",
|
|
332
|
+
"arguments": [
|
|
333
|
+
{ "name": "KEY", "description": "Config key to delete", "required": true }
|
|
334
|
+
],
|
|
335
|
+
"options": [],
|
|
336
|
+
"examples": [
|
|
337
|
+
{ "description": "Reset fonts path to default", "command": "fontist config delete fonts_path" }
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
"keys": {
|
|
341
|
+
"description": "Print all available config attributes",
|
|
342
|
+
"syntax": "fontist config keys",
|
|
343
|
+
"arguments": [],
|
|
344
|
+
"options": [],
|
|
345
|
+
"examples": [
|
|
346
|
+
{ "description": "List available config keys", "command": "fontist config keys" }
|
|
347
|
+
]
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
"config_keys": [
|
|
351
|
+
{ "key": "fonts_path", "default": "~/.fontist/fonts", "description": "Where to put font files" },
|
|
352
|
+
{ "key": "open_timeout", "default": "60", "description": "HTTP open timeout in seconds" },
|
|
353
|
+
{ "key": "read_timeout", "default": "60", "description": "HTTP read timeout in seconds" }
|
|
354
|
+
]
|
|
355
|
+
},
|
|
356
|
+
"cache": {
|
|
357
|
+
"description": "Manage fontist cache",
|
|
358
|
+
"syntax": "fontist cache SUBCOMMAND ...ARGS",
|
|
359
|
+
"subcommands": {
|
|
360
|
+
"clear": {
|
|
361
|
+
"description": "Clear fontist download cache",
|
|
362
|
+
"syntax": "fontist cache clear",
|
|
363
|
+
"arguments": [],
|
|
364
|
+
"options": [],
|
|
365
|
+
"examples": [
|
|
366
|
+
{ "description": "Clear download cache", "command": "fontist cache clear" }
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
"clear-import": {
|
|
370
|
+
"description": "Clear import cache",
|
|
371
|
+
"syntax": "fontist cache clear-import [options]",
|
|
372
|
+
"arguments": [],
|
|
373
|
+
"options": [
|
|
374
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Show detailed output" }
|
|
375
|
+
],
|
|
376
|
+
"examples": [
|
|
377
|
+
{ "description": "Clear import cache", "command": "fontist cache clear-import" }
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
"info": {
|
|
381
|
+
"description": "Show cache information",
|
|
382
|
+
"syntax": "fontist cache info",
|
|
383
|
+
"arguments": [],
|
|
384
|
+
"options": [],
|
|
385
|
+
"examples": [
|
|
386
|
+
{ "description": "Show cache size and location", "command": "fontist cache info" }
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
"index": {
|
|
392
|
+
"description": "Manage system font index",
|
|
393
|
+
"syntax": "fontist index SUBCOMMAND ...ARGS",
|
|
394
|
+
"subcommands": {
|
|
395
|
+
"rebuild": {
|
|
396
|
+
"description": "Rebuild system font index from scratch (cold build)",
|
|
397
|
+
"syntax": "fontist index rebuild [options]",
|
|
398
|
+
"arguments": [],
|
|
399
|
+
"options": [
|
|
400
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Show detailed progress and statistics" },
|
|
401
|
+
{ "name": "output", "alias": "o", "type": "string", "description": "Save index to specified path (for inspection)" }
|
|
402
|
+
],
|
|
403
|
+
"examples": [
|
|
404
|
+
{ "description": "Rebuild system font index", "command": "fontist index rebuild" },
|
|
405
|
+
{ "description": "Rebuild with verbose output", "command": "fontist index rebuild --verbose" }
|
|
406
|
+
]
|
|
407
|
+
},
|
|
408
|
+
"update": {
|
|
409
|
+
"description": "Update system font index incrementally",
|
|
410
|
+
"syntax": "fontist index update [options]",
|
|
411
|
+
"arguments": [],
|
|
412
|
+
"options": [
|
|
413
|
+
{ "name": "verbose", "alias": "v", "type": "boolean", "description": "Show detailed progress and statistics" }
|
|
414
|
+
],
|
|
415
|
+
"examples": [
|
|
416
|
+
{ "description": "Update system font index", "command": "fontist index update" }
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
"info": {
|
|
420
|
+
"description": "Show system font index information",
|
|
421
|
+
"syntax": "fontist index info",
|
|
422
|
+
"arguments": [],
|
|
423
|
+
"options": [],
|
|
424
|
+
"examples": [
|
|
425
|
+
{ "description": "Show index info", "command": "fontist index info" }
|
|
426
|
+
]
|
|
427
|
+
},
|
|
428
|
+
"path": {
|
|
429
|
+
"description": "Show the system font index file path",
|
|
430
|
+
"syntax": "fontist index path",
|
|
431
|
+
"arguments": [],
|
|
432
|
+
"options": [],
|
|
433
|
+
"examples": [
|
|
434
|
+
{ "description": "Show index file path", "command": "fontist index path" }
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
"list": {
|
|
438
|
+
"description": "List all system fonts from the index",
|
|
439
|
+
"syntax": "fontist index list [options]",
|
|
440
|
+
"arguments": [],
|
|
441
|
+
"options": [
|
|
442
|
+
{ "name": "format", "alias": null, "type": "string", "default": "yaml", "description": "Output format: yaml or json" },
|
|
443
|
+
{ "name": "limit", "alias": null, "type": "numeric", "description": "Limit number of fonts to display" }
|
|
444
|
+
],
|
|
445
|
+
"examples": [
|
|
446
|
+
{ "description": "List all system fonts", "command": "fontist index list" },
|
|
447
|
+
{ "description": "List as JSON", "command": "fontist index list --format json" }
|
|
448
|
+
]
|
|
449
|
+
},
|
|
450
|
+
"clear": {
|
|
451
|
+
"description": "Delete system font index (will be rebuilt on next use)",
|
|
452
|
+
"syntax": "fontist index clear",
|
|
453
|
+
"arguments": [],
|
|
454
|
+
"options": [],
|
|
455
|
+
"examples": [
|
|
456
|
+
{ "description": "Clear system font index", "command": "fontist index clear" }
|
|
457
|
+
]
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"codes": [
|
|
3
|
+
{ "code": 0, "name": "SUCCESS", "description": "Command completed successfully" },
|
|
4
|
+
{ "code": 1, "name": "UNKNOWN_ERROR", "description": "Unknown or unexpected error" },
|
|
5
|
+
{ "code": 2, "name": "NON_SUPPORTED_FONT_ERROR", "description": "Font is not supported by fontist" },
|
|
6
|
+
{ "code": 3, "name": "MISSING_FONT_ERROR", "description": "Font could not be found on the system or in formulas" },
|
|
7
|
+
{ "code": 4, "name": "LICENSING_ERROR", "description": "License agreement required but not accepted" },
|
|
8
|
+
{ "code": 5, "name": "MANIFEST_COULD_NOT_BE_FOUND_ERROR", "description": "Manifest file not found at specified path" },
|
|
9
|
+
{ "code": 6, "name": "MANIFEST_COULD_NOT_BE_READ_ERROR", "description": "Manifest file could not be read (invalid YAML or permissions)" },
|
|
10
|
+
{ "code": 7, "name": "FONT_INDEX_CORRUPTED", "description": "Font index file is corrupted and needs to be rebuilt" },
|
|
11
|
+
{ "code": 8, "name": "REPO_NOT_FOUND", "description": "Repository not found" },
|
|
12
|
+
{ "code": 9, "name": "MAIN_REPO_NOT_FOUND", "description": "Main formulas repository not found" },
|
|
13
|
+
{ "code": 10, "name": "REPO_COULD_NOT_BE_UPDATED", "description": "Repository could not be updated (network or git error)" },
|
|
14
|
+
{ "code": 11, "name": "MANUAL_FONT_ERROR", "description": "Manual font installation required (font cannot be downloaded)" },
|
|
15
|
+
{ "code": 12, "name": "SIZE_LIMIT_ERROR", "description": "Formula exceeds size limit. Use --size-limit, --newest, or --smallest options" },
|
|
16
|
+
{ "code": 13, "name": "FORMULA_NOT_FOUND", "description": "Formula not found for the requested font" },
|
|
17
|
+
{ "code": 14, "name": "FONTCONFIG_NOT_FOUND", "description": "Fontconfig is not installed or not found" },
|
|
18
|
+
{ "code": 15, "name": "FONTCONFIG_FILE_NOT_FOUND", "description": "Fontconfig configuration file not found" },
|
|
19
|
+
{ "code": 16, "name": "INVALID_CONFIG_ATTRIBUTE", "description": "Invalid configuration attribute specified" }
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"features": [
|
|
3
|
+
{
|
|
4
|
+
"title": "Cross-Platform",
|
|
5
|
+
"icon": "🌐",
|
|
6
|
+
"description": "Same commands work identically on Windows, macOS, and Linux. No platform-specific paths to remember."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"title": "Formula-Based",
|
|
10
|
+
"icon": "📦",
|
|
11
|
+
"description": "3000+ fonts available through community-maintained formulas with automatic download and license handling."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"title": "Manifest Support",
|
|
15
|
+
"icon": "📋",
|
|
16
|
+
"description": "Define font requirements in YAML for reproducible installations across environments."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "CI/CD Ready",
|
|
20
|
+
"icon": "🔄",
|
|
21
|
+
"description": "Perfect for automated environments with non-interactive installation and GitHub Action available."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"title": "System Font Detection",
|
|
25
|
+
"icon": "🔍",
|
|
26
|
+
"description": "Detects and indexes fonts already installed on your system. No redundant downloads."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"title": "Multiple Locations",
|
|
30
|
+
"icon": "📁",
|
|
31
|
+
"description": "Install to fontist directory, user fonts, or system fonts. Flexible for different use cases."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"title": "Fontconfig Integration",
|
|
35
|
+
"icon": "⚡",
|
|
36
|
+
"description": "Optional fontconfig integration for seamless font discovery in Linux environments."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"title": "Custom Repositories",
|
|
40
|
+
"icon": "🔗",
|
|
41
|
+
"description": "Add private formula repositories for internal or custom fonts."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
defineProps({
|
|
3
|
+
title: {
|
|
4
|
+
type: String,
|
|
5
|
+
default: 'Terminal'
|
|
6
|
+
}
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<div class="hero-code-block">
|
|
12
|
+
<div class="code-header">
|
|
13
|
+
<span class="dot"></span>
|
|
14
|
+
<span class="dot"></span>
|
|
15
|
+
<span class="dot"></span>
|
|
16
|
+
<span class="code-title">{{ title }}</span>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="code-content"><slot /></div>
|
|
19
|
+
</div>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<style scoped>
|
|
23
|
+
.hero-code-block {
|
|
24
|
+
background: var(--vp-c-bg-soft);
|
|
25
|
+
border: 1px solid var(--vp-c-divider);
|
|
26
|
+
border-radius: 12px;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
29
|
+
max-width: 550px;
|
|
30
|
+
width: 100%;
|
|
31
|
+
font-size: 0.85rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@media (max-width: 768px) {
|
|
35
|
+
.hero-code-block {
|
|
36
|
+
max-width: 100%;
|
|
37
|
+
font-size: 0.8rem;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.code-header {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 0.5rem;
|
|
45
|
+
padding: 0.75rem 1rem;
|
|
46
|
+
background: var(--vp-c-bg-alt);
|
|
47
|
+
border-bottom: 1px solid var(--vp-c-divider);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dot {
|
|
51
|
+
width: 12px;
|
|
52
|
+
height: 12px;
|
|
53
|
+
border-radius: 50%;
|
|
54
|
+
flex-shrink: 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.dot:nth-child(1) { background: #ff5f56; }
|
|
58
|
+
.dot:nth-child(2) { background: #ffbd2e; }
|
|
59
|
+
.dot:nth-child(3) { background: #28c840; }
|
|
60
|
+
|
|
61
|
+
.code-title {
|
|
62
|
+
margin-left: auto;
|
|
63
|
+
font-size: 0.8rem;
|
|
64
|
+
color: var(--vp-c-text-3);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.code-content {
|
|
68
|
+
margin: 0;
|
|
69
|
+
padding: 1.25rem;
|
|
70
|
+
font-family: var(--vp-font-family-mono);
|
|
71
|
+
font-size: inherit;
|
|
72
|
+
line-height: 1.7;
|
|
73
|
+
overflow-x: auto;
|
|
74
|
+
-webkit-overflow-scrolling: touch;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.code-content :deep(.line) {
|
|
78
|
+
display: block;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.code-content :deep(.prompt) {
|
|
82
|
+
color: var(--vp-c-brand-1);
|
|
83
|
+
font-weight: 500;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.code-content :deep(.success) {
|
|
87
|
+
color: #28c840;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.code-content :deep(.comment) {
|
|
91
|
+
color: var(--vp-c-text-3);
|
|
92
|
+
font-style: italic;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.code-content :deep(.cmd) {
|
|
96
|
+
font-weight: 600;
|
|
97
|
+
}
|
|
98
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ClientOnly>
|
|
3
|
+
<Teleport to=".VPHero > .container">
|
|
4
|
+
<div class="within-hero__slot-container">
|
|
5
|
+
<slot />
|
|
6
|
+
</div>
|
|
7
|
+
</Teleport>
|
|
8
|
+
</ClientOnly>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
.within-hero__slot-container {
|
|
13
|
+
order: 2;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.VPHero > .container > .main {
|
|
17
|
+
width: unset;
|
|
18
|
+
flex-shrink: unset;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.VPHero > .container {
|
|
22
|
+
gap: 32px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media (min-width: 960px) {
|
|
26
|
+
.VPHero > .container {
|
|
27
|
+
gap: 64px;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
</style>
|