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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +70 -0
  3. data/.github/workflows/links.yml +100 -0
  4. data/.github/workflows/rake-metanorma.yaml +21 -3
  5. data/.github/workflows/release.yml +2 -0
  6. data/.gitignore +9 -7
  7. data/README.adoc +100 -0
  8. data/docs/.vitepress/config.ts +153 -32
  9. data/docs/.vitepress/data/cli-commands.json +461 -0
  10. data/docs/.vitepress/data/exit-codes.json +21 -0
  11. data/docs/.vitepress/data/features.json +44 -0
  12. data/docs/.vitepress/theme/components/HeroCodeBlock.vue +98 -0
  13. data/docs/.vitepress/theme/components/WithinHero.vue +30 -0
  14. data/docs/.vitepress/theme/index.ts +12 -0
  15. data/docs/.vitepress/theme/style.css +152 -0
  16. data/docs/api/errors.md +211 -0
  17. data/docs/api/font.md +101 -0
  18. data/docs/api/fontconfig.md +82 -0
  19. data/docs/api/formula.md +103 -0
  20. data/docs/api/index.md +49 -0
  21. data/docs/api/manifest.md +209 -0
  22. data/docs/cli/cache.md +100 -0
  23. data/docs/cli/config.md +123 -0
  24. data/docs/cli/create-formula.md +65 -0
  25. data/docs/cli/exit-codes.md +73 -0
  26. data/docs/cli/fontconfig.md +85 -0
  27. data/docs/cli/import.md +136 -0
  28. data/docs/cli/index-cmd.md +37 -0
  29. data/docs/cli/index.md +80 -0
  30. data/docs/cli/install.md +52 -0
  31. data/docs/cli/list.md +39 -0
  32. data/docs/cli/manifest.md +110 -0
  33. data/docs/cli/repo.md +142 -0
  34. data/docs/cli/status.md +39 -0
  35. data/docs/cli/uninstall.md +34 -0
  36. data/docs/cli/update.md +31 -0
  37. data/docs/cli/version.md +38 -0
  38. data/docs/components/CliCommand.vue +77 -0
  39. data/docs/components/CliExamples.vue +17 -0
  40. data/docs/components/CliOptions.vue +26 -0
  41. data/docs/components/ExitCodes.vue +18 -0
  42. data/docs/guide/ci.md +4 -0
  43. data/docs/guide/concepts/fonts.md +158 -0
  44. data/docs/guide/concepts/formats.md +234 -0
  45. data/docs/guide/concepts/index.md +109 -0
  46. data/docs/guide/concepts/licenses.md +236 -0
  47. data/docs/guide/concepts/requirements.md +388 -0
  48. data/docs/guide/concepts/variable-fonts.md +212 -0
  49. data/docs/guide/formulas.md +192 -0
  50. data/docs/guide/how-it-works.md +428 -0
  51. data/docs/guide/index.md +26 -47
  52. data/docs/guide/installation.md +105 -0
  53. data/docs/guide/manifests.md +132 -0
  54. data/docs/guide/quick-start.md +76 -0
  55. data/docs/guide/why.md +4 -0
  56. data/docs/index.md +55 -23
  57. data/docs/lychee.toml +33 -0
  58. data/docs/package-lock.json +1539 -770
  59. data/docs/package.json +4 -6
  60. data/docs/public/apple-touch-icon.png +0 -0
  61. data/docs/public/favicon-96x96.png +0 -0
  62. data/docs/public/favicon.ico +0 -0
  63. data/docs/public/favicon.svg +1 -0
  64. data/docs/public/logo-full.svg +1 -0
  65. data/docs/public/logo.svg +1 -0
  66. data/docs/public/site.webmanifest +21 -0
  67. data/docs/public/web-app-manifest-192x192.png +0 -0
  68. data/docs/public/web-app-manifest-512x512.png +0 -0
  69. data/lib/fontist/cli.rb +0 -1
  70. data/lib/fontist/font_file.rb +65 -14
  71. data/lib/fontist/indexes/index_mixin.rb +109 -20
  72. data/lib/fontist/system_index.rb +30 -1
  73. data/lib/fontist/version.rb +1 -1
  74. metadata +59 -8
  75. data/.github/workflows/deploy-pages.yml +0 -54
  76. data/docs/guide/api-ruby.md +0 -189
  77. data/docs/public/hero.png +0 -0
  78. data/docs/public/logo.png +0 -0
  79. data/docs/reference/index.md +0 -143
  80. /data/{docs/google-fonts-multi-format-usage.md → google-fonts-multi-format-usage.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0aad02a62b4c3f295e80229cbca11af23ccbad51850b3f87dc4e6652e548947
4
- data.tar.gz: c97a29591a24ee8c84ecb3316a3f66dade12994c752196b1ff86f48c266b3df5
3
+ metadata.gz: 53b62fd1983ad3739ec4869071a9a3517ead3f581f0cbc04987bd5cc8ac6bdbf
4
+ data.tar.gz: ce3a64130bfcb4310f3adeeb79c8a62cfe3412f20c1cacb6c68482b11ad60ef6
5
5
  SHA512:
6
- metadata.gz: 7b6c0acf8fe7acd3a49770beaba2a5e6c1af8a742eb5db204ab8955be9ffaf013723d20170fe557d49983eb8234cfe7283ab2ba3a94c0231e7a0c10454219c3f
7
- data.tar.gz: 6715acf2088a92c6d51e33d4fb07b88b48318fdb39a2f05084369109801149ecf57d9ed4f7cadef389cd39f9e26442548d7c121909013ce20909b6c6bc677609
6
+ metadata.gz: 36addd8934bcbd3a128c6850921cd66739e992ecaae65464c01457509f7b68c410a83a55efbf5698f0ae88b789f9d620ffb17751effcea718b2f876b4531c99d
7
+ data.tar.gz: 27f7c34fdfbd88460a95d0b3bdb03c34fc1aa4cdbcd2cd835d520e6363b288e5fd5a8417b69227c34fd3bf45f78c86b8b0fd2cf139e13931bfcced52271941f4
@@ -0,0 +1,70 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'docs/**'
9
+ - '.github/workflows/docs.yml'
10
+ pull_request:
11
+ paths:
12
+ - 'docs/**'
13
+ workflow_dispatch:
14
+
15
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16
+ permissions:
17
+ contents: read
18
+ pages: write
19
+ id-token: write
20
+
21
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
22
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
23
+ concurrency:
24
+ group: ${{ github.workflow }}-${{ github.ref }}
25
+ cancel-in-progress: false
26
+
27
+ jobs:
28
+ build:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v6
33
+
34
+ - name: Setup Pages
35
+ id: pages
36
+ uses: actions/configure-pages@v5
37
+
38
+ - name: Setup Node
39
+ uses: actions/setup-node@v6
40
+ with:
41
+ node-version: 24
42
+ cache: 'npm'
43
+ cache-dependency-path: docs/package-lock.json
44
+
45
+ - name: Install dependencies
46
+ run: npm ci
47
+ working-directory: docs
48
+
49
+ - name: Build
50
+ run: npm run build
51
+ working-directory: docs
52
+
53
+ - name: Upload artifact
54
+ uses: actions/upload-pages-artifact@v4
55
+ with:
56
+ path: docs/.vitepress/dist
57
+
58
+ # Deployment job
59
+ deploy:
60
+ environment:
61
+ name: github-pages
62
+ url: ${{ steps.deployment.outputs.page_url }}
63
+ if: github.ref_name == github.event.repository.default_branch
64
+ runs-on: ubuntu-latest
65
+ needs: build
66
+ steps:
67
+ - name: Deploy to GitHub Pages
68
+ id: deployment
69
+ uses: actions/deploy-pages@v4
70
+
@@ -0,0 +1,100 @@
1
+ name: Link Checker
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'docs/**'
9
+ pull_request:
10
+ paths:
11
+ - 'docs/**'
12
+ schedule:
13
+ # Run weekly on Sunday at 00:00 UTC
14
+ - cron: '0 0 * * 0'
15
+ workflow_dispatch:
16
+
17
+ permissions:
18
+ contents: read
19
+ pull-requests: write
20
+
21
+ jobs:
22
+ link_checker:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v6
26
+
27
+ - name: Setup Node
28
+ uses: actions/setup-node@v6
29
+ with:
30
+ node-version: 24
31
+ cache: 'npm'
32
+ cache-dependency-path: docs/package-lock.json
33
+
34
+ - name: Install dependencies
35
+ run: npm ci
36
+ working-directory: docs
37
+
38
+ - name: Build
39
+ run: npm run build
40
+ working-directory: docs
41
+
42
+ - name: Restore lychee cache
43
+ uses: actions/cache@v4
44
+ with:
45
+ path: .lycheecache
46
+ key: cache-lychee-${{ github.sha }}
47
+ restore-keys: cache-lychee-
48
+
49
+ - name: Check if site was built
50
+ run: |
51
+ if [ ! -d "dist" ]; then
52
+ echo "Error: dist directory not created"
53
+ exit 1
54
+ fi
55
+ echo "Site built successfully"
56
+ ls -la dist/
57
+ working-directory: docs/.vitepress
58
+
59
+ - name: Link Checker
60
+ uses: lycheeverse/lychee-action@v2
61
+ with:
62
+ args: >-
63
+ --verbose
64
+ --no-progress
65
+ --config lychee.toml
66
+ --root-dir "$(pwd)/.vitepress/dist"
67
+ --base-url file://${{ github.workspace }}/docs/.vitepress/dist
68
+ '.vitepress/dist/**/*.html'
69
+ fail: true
70
+ output: link-check-results.md
71
+ format: markdown
72
+ workingDirectory: docs
73
+
74
+ - name: Upload link check results
75
+ if: always()
76
+ uses: actions/upload-artifact@v4
77
+ with:
78
+ name: link-check-results
79
+ path: link-check-results.md
80
+ retention-days: 30
81
+
82
+ - name: Comment PR with results
83
+ if: failure() && github.event_name == 'pull_request'
84
+ uses: actions/github-script@v7
85
+ with:
86
+ script: |
87
+ const fs = require('fs');
88
+ let comment = '## 🔗 Link Check Failed\n\n';
89
+
90
+ if (fs.existsSync('link-check-results.md')) {
91
+ const results = fs.readFileSync('link-check-results.md', 'utf8');
92
+ comment += '### Results\n\n' + results + '\n\n';
93
+ }
94
+
95
+ github.rest.issues.createComment({
96
+ issue_number: context.issue.number,
97
+ owner: context.repo.owner,
98
+ repo: context.repo.repo,
99
+ body: comment
100
+ });
@@ -18,6 +18,7 @@ env:
18
18
 
19
19
  jobs:
20
20
  prepare:
21
+ # commented for https://github.com/fontist/fontist/issues/428#issuecomment-3992198584
21
22
  uses: metanorma/ci/.github/workflows/prepare-rake.yml@main
22
23
 
23
24
  metanorma:
@@ -34,11 +35,11 @@ jobs:
34
35
  matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
35
36
 
36
37
  steps:
37
- - uses: actions/checkout@v4
38
+ - uses: actions/checkout@v6
38
39
  with:
39
40
  repository: metanorma/metanorma
40
41
 
41
- - uses: actions/checkout@master
42
+ - uses: actions/checkout@v6
42
43
  with:
43
44
  path: "fontist"
44
45
 
@@ -51,6 +52,23 @@ jobs:
51
52
  bundler: ${{ env.BUNDLER_VER }}
52
53
  bundler-cache: true
53
54
 
54
- - uses: metanorma/metanorma-build-scripts/inkscape-setup-action@main
55
+ - uses: metanorma/ci/inkscape-setup-action@main
56
+
57
+ - name: Configure Git credentials
58
+ env:
59
+ GIT_TOKEN: ${{ secrets.FONTIST_CI_PAT_TOKEN }}
60
+ run: |
61
+ git config --global user.name 'Fontist CI'
62
+ git config --global user.email 'fontist@ribose.com'
63
+ git config --global credential.helper store
64
+ echo "https://fontist-ci:${GIT_TOKEN}@github.com" > ~/.git-credentials
65
+ shell: bash
66
+
67
+ - run: |
68
+ bundle exec fontist update
69
+ bundle exec fontist repo setup metanorma https://github.com/metanorma/fontist-formulas-private.git
70
+ bundle exec fontist repo update metanorma
71
+ shell: bash
55
72
 
56
73
  - run: bundle exec rake
74
+ shell: bash
@@ -15,11 +15,13 @@ on:
15
15
  permissions:
16
16
  contents: read
17
17
  packages: write
18
+ id-token: write
18
19
 
19
20
  jobs:
20
21
  release:
21
22
  permissions:
22
23
  contents: write
24
+ packages: write
23
25
  id-token: write
24
26
  uses: fontist/support/.github/workflows/release.yml@main
25
27
  with:
data/.gitignore CHANGED
@@ -9,12 +9,13 @@
9
9
  Gemfile.lock
10
10
 
11
11
  # fonts
12
- # /spec/fixtures/fonts/*
13
- # /spec/fixtures/fonts/DejaVuSerif.ttf
14
- # /spec/fixtures/formulas/
15
- # /spec/fixtures/*
16
- # !/spec/fixtures/system.yml
17
- # !/spec/fixtures/google_fonts/
12
+ /spec/fixtures/fonts/*
13
+ /spec/fixtures/fonts/DejaVuSerif.ttf
14
+ /spec/fixtures/fonts/Rupali.ttf
15
+ /spec/fixtures/formulas/
16
+ /spec/fixtures/*
17
+ !/spec/fixtures/system.yml
18
+ !/spec/fixtures/fonts/corrupt/*
18
19
 
19
20
  # rspec failure tracking
20
21
  .rspec_status
@@ -27,7 +28,8 @@ Gemfile.lock
27
28
  .kilocode
28
29
  .claude
29
30
  old-docs/
30
- .md
31
+ CLAUDE.md
31
32
 
32
33
  # macOS font catalogs (downloaded via rake task)
33
34
  /spec/fixtures/macos_catalogs/com_apple_MobileAsset_Font*.xml
35
+
data/README.adoc CHANGED
@@ -69,6 +69,106 @@ legacy `ttfunk` and `extract_ttc` gems), and `marcel` for MIME type detection
69
69
  (replacing `mime-types`). These changes improve cross-platform compatibility
70
70
  and eliminate external binary dependencies.
71
71
 
72
+ === Prerequisites
73
+
74
+ Some of Fontist's dependencies require native compilation during installation.
75
+ The following build tools are required depending on your platform.
76
+
77
+ ==== Ubuntu/Debian
78
+
79
+ [source,sh]
80
+ ----
81
+ sudo apt-get install build-essential ruby-dev git
82
+ ----
83
+
84
+ * `build-essential` provides `gcc` and `g++` compilers needed for native gem extensions
85
+ * `ruby-dev` provides Ruby headers required for gem compilation
86
+ * `git` is required for `fontist update` and `fontist repo` commands
87
+
88
+ ==== Fedora/RHEL/CentOS
89
+
90
+ [source,sh]
91
+ ----
92
+ sudo dnf install gcc gcc-c++ make ruby-devel git
93
+ ----
94
+
95
+ For RHEL/CentOS 7 or earlier, use `yum` instead of `dnf`.
96
+
97
+ ==== macOS
98
+
99
+ [source,sh]
100
+ ----
101
+ xcode-select --install
102
+ ----
103
+
104
+ This installs the Xcode Command Line Tools which include:
105
+
106
+ * `clang` compiler (compatible with gcc/g++)
107
+ * `git` command-line tool
108
+ * Required headers and libraries for native gem compilation
109
+
110
+ ==== Windows
111
+
112
+ 1. Install Ruby using https://rubyinstaller.org/downloads/[RubyInstaller] *with DevKit*
113
+ (select the "Ruby+Devkit" version)
114
+
115
+ 2. After installation, run the following in a command prompt to set up MSYS2:
116
+ +
117
+ [source,cmd]
118
+ ----
119
+ ridk install
120
+ ----
121
+ +
122
+ Select option 3 (MSYS2 and MINGW development toolchain) when prompted.
123
+
124
+ 3. Install https://git-scm.com/download/win[Git for Windows]
125
+
126
+ ==== Optional: Fontconfig (Linux)
127
+
128
+ On Linux systems, if you want to use `fontist fontconfig update` to make Fontist
129
+ fonts available to other applications, install fontconfig:
130
+
131
+ [source,sh]
132
+ ----
133
+ # Ubuntu/Debian
134
+ sudo apt-get install fontconfig
135
+
136
+ # Fedora/RHEL/CentOS
137
+ sudo dnf install fontconfig
138
+ ----
139
+
140
+ ==== Why are build tools needed?
141
+
142
+ Fontist depends on several gems that include native C/C++ extensions:
143
+
144
+ [cols="1,1,2"]
145
+ |===
146
+ |Gem |Compiler |Purpose
147
+
148
+ |`json`
149
+ |gcc
150
+ |JSON processing
151
+
152
+ |`brotli` (via fontisan)
153
+ |gcc
154
+ |WOFF2 font decompression
155
+
156
+ |`seven-zip` (via excavate)
157
+ |g++
158
+ |7z archive extraction
159
+
160
+ |`libmspack` (via excavate)
161
+ |gcc
162
+ |CAB/CHM archive extraction
163
+
164
+ |`ffi-libarchive-binary` (via excavate)
165
+ |gcc
166
+ |Archive extraction (zip, tar, etc.)
167
+ |===
168
+
169
+ NOTE: Some gems like `nokogiri` and `ffi` provide prebuilt binaries for common
170
+ platforms, so they typically don't require compilation.
171
+
72
172
 
73
173
  == Using the command-line interface (CLI)
74
174
 
@@ -1,7 +1,18 @@
1
1
  import { defineConfig } from "vitepress";
2
+ import { fileURLToPath, URL } from "node:url";
2
3
 
3
4
  // https://vitepress.dev/reference/site-config
4
5
  export default defineConfig({
6
+ // Register custom components
7
+ vite: {
8
+ resolve: {
9
+ alias: {
10
+ "@components": fileURLToPath(new URL("../components", import.meta.url)),
11
+ },
12
+ },
13
+ },
14
+ lang: "en-US",
15
+
5
16
  // https://vitepress.dev/guide/routing#generating-clean-url
6
17
  cleanUrls: true,
7
18
 
@@ -9,63 +20,173 @@ export default defineConfig({
9
20
  description:
10
21
  "Fontist brings cross-platform font management to the command line for Windows, Linux, and macOS. Free and open source.",
11
22
 
12
- // https://github.com/vuejs/vitepress/issues/3508
13
- base: process.env.BASE_PATH,
23
+ lastUpdated: true,
24
+
25
+ // Base path for deployment (e.g., /fontist/ for fontist.org/fontist/)
26
+ base: process.env.BASE_PATH || "/fontist/",
27
+
28
+ head: [
29
+ [
30
+ "link",
31
+ { rel: "icon", type: "image/png", href: "/favicon-96x96.png", sizes: "96x96" },
32
+ ],
33
+ ["link", { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }],
34
+ ["link", { rel: "shortcut icon", href: "/favicon.ico" }],
35
+ [
36
+ "link",
37
+ { rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
38
+ ],
39
+ ["link", { rel: "manifest", href: "/site.webmanifest" }],
40
+ ["meta", { property: "og:type", content: "website" }],
41
+ ["meta", { property: "og:title", content: "Fontist" }],
42
+ [
43
+ "meta",
44
+ {
45
+ property: "og:description",
46
+ content:
47
+ "Fontist brings cross-platform font management to the command line for Windows, Linux, and macOS.",
48
+ },
49
+ ],
50
+ ["meta", { property: "og:image", content: "/logo-full.svg" }],
51
+ ["meta", { name: "twitter:card", content: "summary_large_image" }],
52
+ ],
14
53
 
15
54
  // https://vitepress.dev/reference/default-theme-config
16
55
  themeConfig: {
17
- logo: "/logo.png",
56
+ logo: "/logo-full.svg",
57
+ siteTitle: false,
58
+
59
+ // Local search with MiniSearch
60
+ search: {
61
+ provider: "local",
62
+ options: {
63
+ detailedView: true,
64
+ miniSearch: {
65
+ searchOptions: {
66
+ fuzzy: 0.2,
67
+ prefix: true,
68
+ boost: { title: 4, text: 2, titles: 1 },
69
+ },
70
+ },
71
+ },
72
+ },
18
73
 
19
74
  nav: [
20
- { text: "Home", link: "/" },
75
+ { text: "← Fontist.org", link: "https://www.fontist.org" },
21
76
  { text: "Guide", link: "/guide/" },
22
- { text: "Reference", link: "/reference/" },
23
- {
24
- text: "Formulas",
25
- link: "https://fontist.org/formulas/",
26
- target: "_self",
27
- },
77
+ { text: "CLI", link: "/cli/" },
78
+ { text: "API", link: "/api/" },
79
+ { text: "Formulas", link: "https://www.fontist.org/formulas/", target: "_self" },
80
+ { text: "Fontisan", link: "https://www.fontist.org/fontisan/", target: "_self" },
28
81
  ],
29
82
 
30
83
  sidebar: {
31
84
  "/guide/": [
32
85
  {
33
- text: "Guide",
86
+ text: "Getting Started",
87
+ items: [
88
+ { text: "Introduction", link: "/guide/" },
89
+ { text: "Installation", link: "/guide/installation" },
90
+ { text: "Quick Start", link: "/guide/quick-start" },
91
+ ],
92
+ },
93
+ {
94
+ text: "Concepts",
34
95
  items: [
96
+ { text: "Overview", link: "/guide/concepts/" },
97
+ { text: "Fonts & Styles", link: "/guide/concepts/fonts" },
98
+ { text: "Variable Fonts", link: "/guide/concepts/variable-fonts" },
99
+ { text: "Formats & Containers", link: "/guide/concepts/formats" },
100
+ { text: "Licenses", link: "/guide/concepts/licenses" },
101
+ { text: "Requirements", link: "/guide/concepts/requirements" },
102
+ ],
103
+ },
104
+ {
105
+ text: "Learn More",
106
+ collapsed: true,
107
+ items: [
108
+ { text: "How Fontist Works", link: "/guide/how-it-works" },
35
109
  { text: "Why Fontist?", link: "/guide/why" },
36
- { text: "Getting started", link: "/guide/" },
37
- { text: "Using Fontist in CI", link: "/guide/ci" },
38
- { text: "Fontist with Fontconfig", link: "/guide/fontconfig" },
39
- { text: "Using Fontist with a proxy", link: "/guide/proxy" },
40
- {
41
- text: "Create a new Fontist Formula",
42
- link: "https://fontist.org/formulas/guide/create-formula",
43
- target: "_self",
44
- },
110
+ { text: "Manifests", link: "/guide/manifests" },
111
+ { text: "Formulas", link: "/guide/formulas" },
45
112
  ],
46
113
  },
47
114
  {
48
- text: "API",
115
+ text: "Guides",
116
+ collapsed: true,
49
117
  items: [
50
- { text: "Fontist Ruby library", link: "/guide/api-ruby" },
118
+ { text: "CI/CD Integration", link: "/guide/ci" },
119
+ { text: "Fontconfig", link: "/guide/fontconfig" },
120
+ { text: "Proxy Setup", link: "/guide/proxy" },
51
121
  {
52
- text: "Ruby API reference",
53
- link: "https://fontist.org/fontist/reference/api-ruby/",
122
+ text: "Create a Formula",
123
+ link: "https://www.fontist.org/formulas/guide/create-formula",
54
124
  target: "_self",
55
125
  },
56
126
  ],
57
127
  },
58
128
  ],
59
- "/reference/": [
129
+ "/cli/": [
130
+ {
131
+ text: "CLI Reference",
132
+ items: [
133
+ { text: "Overview", link: "/cli/" },
134
+ ],
135
+ },
136
+ {
137
+ text: "Core Commands",
138
+ items: [
139
+ { text: "install", link: "/cli/install" },
140
+ { text: "uninstall", link: "/cli/uninstall" },
141
+ { text: "list", link: "/cli/list" },
142
+ { text: "status", link: "/cli/status" },
143
+ { text: "update", link: "/cli/update" },
144
+ { text: "version", link: "/cli/version" },
145
+ ],
146
+ },
147
+ {
148
+ text: "Subcommands",
149
+ collapsed: true,
150
+ items: [
151
+ { text: "manifest", link: "/cli/manifest" },
152
+ { text: "cache", link: "/cli/cache" },
153
+ { text: "config", link: "/cli/config" },
154
+ { text: "repo", link: "/cli/repo" },
155
+ { text: "fontconfig", link: "/cli/fontconfig" },
156
+ { text: "import", link: "/cli/import" },
157
+ { text: "index", link: "/cli/index-cmd" },
158
+ { text: "create-formula", link: "/cli/create-formula" },
159
+ ],
160
+ },
60
161
  {
61
162
  text: "Reference",
163
+ collapsed: true,
62
164
  items: [
63
- { text: "Fontist CLI reference", link: "/reference/" },
64
- {
65
- text: "Ruby API reference",
66
- link: "https://fontist.org/fontist/reference/api-ruby/",
67
- target: "_self",
68
- },
165
+ { text: "Exit Codes", link: "/cli/exit-codes" },
166
+ ],
167
+ },
168
+ ],
169
+ "/api/": [
170
+ {
171
+ text: "API Reference",
172
+ items: [
173
+ { text: "Overview", link: "/api/" },
174
+ ],
175
+ },
176
+ {
177
+ text: "Classes",
178
+ items: [
179
+ { text: "Fontist::Font", link: "/api/font" },
180
+ { text: "Fontist::Formula", link: "/api/formula" },
181
+ { text: "Fontist::Manifest", link: "/api/manifest" },
182
+ { text: "Fontist::Fontconfig", link: "/api/fontconfig" },
183
+ ],
184
+ },
185
+ {
186
+ text: "Errors",
187
+ collapsed: true,
188
+ items: [
189
+ { text: "Fontist::Errors", link: "/api/errors" },
69
190
  ],
70
191
  },
71
192
  ],
@@ -77,7 +198,7 @@ export default defineConfig({
77
198
 
78
199
  footer: {
79
200
  message: `Fontist is <a href="https://open.ribose.com/">riboseopen</a>`,
80
- copyright: `Copyright &copy; 2023 Ribose Group Inc. All rights reserved.`,
201
+ copyright: `Copyright &copy; 2026 Ribose Group Inc. All rights reserved.`,
81
202
  },
82
203
  },
83
204
  });