fontisan 0.2.14 → 0.2.16

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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +79 -4
  3. data/docs/.gitignore +17 -0
  4. data/docs/.vitepress/config.ts +317 -0
  5. data/docs/.vitepress/theme/components/ApiMethod.vue +127 -0
  6. data/docs/.vitepress/theme/components/Badge.vue +51 -0
  7. data/docs/.vitepress/theme/components/FeatureComparison.vue +87 -0
  8. data/docs/.vitepress/theme/components/HeroCodeBlock.vue +98 -0
  9. data/docs/.vitepress/theme/components/WithinHero.vue +30 -0
  10. data/docs/.vitepress/theme/index.ts +22 -0
  11. data/docs/.vitepress/theme/style.css +330 -0
  12. data/docs/api/conversion-options.md +141 -0
  13. data/docs/api/converters/curve-converter.md +34 -0
  14. data/docs/api/converters/hint-converter.md +34 -0
  15. data/docs/api/converters/outline-converter.md +27 -0
  16. data/docs/api/font-loader.md +111 -0
  17. data/docs/api/font-writer.md +103 -0
  18. data/docs/api/index.md +79 -0
  19. data/docs/api/models/glyph-accessor.md +43 -0
  20. data/docs/api/models/glyph.md +40 -0
  21. data/docs/api/models/table-analyzer.md +35 -0
  22. data/docs/api/sfnt-font.md +53 -0
  23. data/docs/api/type1-font.md +43 -0
  24. data/docs/api/validators/font-validator.md +31 -0
  25. data/docs/api/validators/helper.md +36 -0
  26. data/docs/api/validators/profile.md +39 -0
  27. data/docs/cli/convert.md +87 -0
  28. data/docs/cli/dump-table.md +110 -0
  29. data/docs/cli/export.md +176 -0
  30. data/docs/cli/features.md +124 -0
  31. data/docs/cli/glyphs.md +90 -0
  32. data/docs/cli/index.md +208 -0
  33. data/docs/cli/info.md +254 -0
  34. data/docs/cli/instance.md +122 -0
  35. data/docs/cli/ls.md +95 -0
  36. data/docs/cli/optical-size.md +94 -0
  37. data/docs/cli/pack.md +125 -0
  38. data/docs/cli/scripts.md +105 -0
  39. data/docs/cli/subset.md +39 -0
  40. data/docs/cli/tables.md +84 -0
  41. data/docs/cli/unicode.md +101 -0
  42. data/docs/cli/validate.md +48 -0
  43. data/docs/cli/variable.md +126 -0
  44. data/docs/cli/version.md +46 -0
  45. data/docs/guide/cli/convert.md +108 -0
  46. data/docs/guide/cli/export.md +138 -0
  47. data/docs/guide/cli/index.md +99 -0
  48. data/docs/guide/cli/info.md +144 -0
  49. data/docs/guide/cli/pack.md +155 -0
  50. data/docs/guide/cli/subset.md +118 -0
  51. data/docs/guide/cli/validate.md +139 -0
  52. data/docs/guide/color-fonts/bitmaps.md +177 -0
  53. data/docs/guide/color-fonts/colr-cpal.md +175 -0
  54. data/docs/guide/color-fonts/index.md +140 -0
  55. data/docs/guide/color-fonts/svg.md +154 -0
  56. data/docs/guide/color.md +51 -0
  57. data/docs/guide/comparisons/font-validator.md +222 -0
  58. data/docs/guide/comparisons/fonttools.md +200 -0
  59. data/docs/guide/comparisons/index.md +83 -0
  60. data/docs/guide/comparisons/lcdf-typetools.md +205 -0
  61. data/docs/guide/contributing.md +279 -0
  62. data/docs/guide/conversion/collections.md +251 -0
  63. data/docs/guide/conversion/curves.md +246 -0
  64. data/docs/guide/conversion/index.md +157 -0
  65. data/docs/guide/conversion/options.md +251 -0
  66. data/docs/guide/conversion/ttf-otf.md +184 -0
  67. data/docs/guide/conversion/type1.md +208 -0
  68. data/docs/guide/conversion/web.md +240 -0
  69. data/docs/guide/conversion.md +39 -0
  70. data/docs/guide/formats/collections.md +147 -0
  71. data/docs/guide/formats/dfont.md +99 -0
  72. data/docs/guide/formats/index.md +65 -0
  73. data/docs/guide/formats/otf.md +103 -0
  74. data/docs/guide/formats/svg.md +97 -0
  75. data/docs/guide/formats/ttf.md +105 -0
  76. data/docs/guide/formats/type1.md +118 -0
  77. data/docs/guide/formats/woff.md +115 -0
  78. data/docs/guide/hinting/autohint.md +141 -0
  79. data/docs/guide/hinting/conversion.md +161 -0
  80. data/docs/guide/hinting/index.md +86 -0
  81. data/docs/guide/hinting/postscript.md +149 -0
  82. data/docs/guide/hinting/truetype.md +135 -0
  83. data/docs/guide/hinting.md +44 -0
  84. data/docs/guide/index.md +152 -0
  85. data/docs/guide/installation.md +116 -0
  86. data/docs/guide/migrations/extract-ttc.md +549 -0
  87. data/docs/guide/migrations/font-validator.md +260 -0
  88. data/docs/guide/migrations/fonttools.md +208 -0
  89. data/docs/guide/migrations/index.md +64 -0
  90. data/docs/guide/migrations/otfinfo.md +197 -0
  91. data/docs/guide/quick-start.md +204 -0
  92. data/docs/guide/type1.md +58 -0
  93. data/docs/guide/universal-outline.md +151 -0
  94. data/docs/guide/validation/custom.md +195 -0
  95. data/docs/guide/validation/helpers.md +188 -0
  96. data/docs/guide/validation/index.md +132 -0
  97. data/docs/guide/validation/profiles.md +156 -0
  98. data/docs/guide/validation.md +47 -0
  99. data/docs/guide/variable-fonts/advanced.md +231 -0
  100. data/docs/guide/variable-fonts/axes.md +209 -0
  101. data/docs/guide/variable-fonts/conversion.md +197 -0
  102. data/docs/guide/variable-fonts/index.md +84 -0
  103. data/docs/guide/variable-fonts/instances.md +187 -0
  104. data/docs/guide/variable-fonts/named-instances.md +194 -0
  105. data/docs/guide/variable-fonts/static.md +168 -0
  106. data/docs/guide/variable.md +58 -0
  107. data/docs/guide/woff.md +59 -0
  108. data/docs/index.md +136 -0
  109. data/docs/lychee.toml +37 -0
  110. data/docs/package-lock.json +2560 -0
  111. data/docs/package.json +15 -0
  112. data/docs/public/apple-touch-icon.png +0 -0
  113. data/docs/public/favicon-96x96.png +0 -0
  114. data/docs/public/favicon.ico +0 -0
  115. data/docs/public/favicon.svg +1 -0
  116. data/docs/public/logo-full.svg +1 -0
  117. data/docs/public/logo.svg +1 -0
  118. data/docs/public/site.webmanifest +21 -0
  119. data/docs/public/web-app-manifest-192x192.png +0 -0
  120. data/docs/public/web-app-manifest-512x512.png +0 -0
  121. data/fontisan.gemspec +1 -1
  122. data/lib/fontisan/commands/features_command.rb +0 -1
  123. data/lib/fontisan/commands/scripts_command.rb +0 -1
  124. data/lib/fontisan/loading_modes.rb +0 -2
  125. data/lib/fontisan/sfnt_font.rb +4 -3
  126. data/lib/fontisan/tables/glyf/compound_glyph.rb +0 -1
  127. data/lib/fontisan/variable/delta_applicator.rb +3 -3
  128. data/lib/fontisan/variation/optimizer.rb +0 -1
  129. data/lib/fontisan/version.rb +1 -1
  130. data/lib/fontisan.rb +3 -2
  131. metadata +122 -4
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: version
3
+ ---
4
+
5
+ # version
6
+
7
+ Display the Fontisan version information.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ fontisan version
13
+ ```
14
+
15
+ ## Description
16
+
17
+ Shows the currently installed version of Fontisan. This is useful for:
18
+
19
+ - Verifying installation
20
+ - Checking compatibility
21
+ - Reporting issues with version information
22
+
23
+ ## Examples
24
+
25
+ ```bash
26
+ # Show version
27
+ fontisan version
28
+
29
+ # Output:
30
+ # fontisan 0.1.0
31
+ ```
32
+
33
+ ## Programmatic Access
34
+
35
+ You can also get the version programmatically:
36
+
37
+ ```ruby
38
+ require 'fontisan'
39
+
40
+ puts Fontisan::VERSION
41
+ ```
42
+
43
+ ## Related Commands
44
+
45
+ - [info](/cli/info) — Get font information
46
+ - [tables](/cli/tables) — List font tables
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: convert
3
+ ---
4
+
5
+ # convert
6
+
7
+ Convert between font formats.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ fontisan convert INPUT --to FORMAT [options]
13
+ ```
14
+
15
+ ## Arguments
16
+
17
+ | Argument | Description |
18
+ |----------|-------------|
19
+ | `INPUT` | Input font file |
20
+ | `--to FORMAT` | Output format (ttf, otf, woff, woff2) |
21
+ | `--output PATH` | Output file path |
22
+
23
+ ## Options
24
+
25
+ ### Opening Options
26
+
27
+ | Option | Description |
28
+ |--------|-------------|
29
+ | `--decompose` | Decompose composite glyphs |
30
+ | `--convert-curves` | Convert quadratic ↔ cubic curves |
31
+ | `--scale-to-1000` | Scale to 1000 UPM |
32
+ | `--autohint` | Apply automatic hinting |
33
+ | `--generate-unicode` | Generate Unicode from glyph names |
34
+ | `--preserve-custom-tables` | Preserve non-standard tables |
35
+
36
+ ### Generating Options
37
+
38
+ | Option | Description |
39
+ |--------|-------------|
40
+ | `--hinting-mode MODE` | preserve, auto, none, full |
41
+ | `--optimize-tables` | Enable table optimization |
42
+ | `--preserve-metadata` | Keep copyright/license info |
43
+ | `--strip-metadata` | Remove metadata |
44
+ | `--target-format FORMAT` | Collection target format |
45
+
46
+ ### Presets
47
+
48
+ | Option | Description |
49
+ |--------|-------------|
50
+ | `--preset NAME` | Use named preset |
51
+ | `--show-options` | Show recommended options |
52
+
53
+ ## Presets
54
+
55
+ | Preset | Description |
56
+ |--------|-------------|
57
+ | `type1_to_modern` | Type 1 → OpenType |
58
+ | `modern_to_type1` | OpenType → Type 1 |
59
+ | `web_optimized` | Any → WOFF2 |
60
+ | `archive_to_modern` | Collection → OTF |
61
+
62
+ ## Examples
63
+
64
+ ### Basic Conversion
65
+
66
+ ```bash
67
+ # TTF to OTF
68
+ fontisan convert input.ttf --to otf --output output.otf
69
+
70
+ # OTF to WOFF2
71
+ fontisan convert input.otf --to woff2 --output output.woff2
72
+ ```
73
+
74
+ ### With Options
75
+
76
+ ```bash
77
+ # Convert with autohint
78
+ fontisan convert input.ttf --to otf --autohint --output output.otf
79
+
80
+ # Convert with curve conversion
81
+ fontisan convert input.ttf --to otf --convert-curves --output output.otf
82
+ ```
83
+
84
+ ### Using Presets
85
+
86
+ ```bash
87
+ # Type 1 to modern
88
+ fontisan convert font.pfb --to otf --preset type1_to_modern --output font.otf
89
+
90
+ # Web optimized
91
+ fontisan convert font.otf --to woff2 --preset web_optimized --output font.woff2
92
+ ```
93
+
94
+ ### Show Options
95
+
96
+ ```bash
97
+ # See what options will be used
98
+ fontisan convert input.ttf --to otf --show-options
99
+ ```
100
+
101
+ ## Batch Conversion
102
+
103
+ ```bash
104
+ # Convert all TTF files
105
+ for f in *.ttf; do
106
+ fontisan convert "$f" --to woff2 --output "${f%.ttf}.woff2"
107
+ done
108
+ ```
@@ -0,0 +1,138 @@
1
+ ---
2
+ title: export
3
+ ---
4
+
5
+ # export
6
+
7
+ Export font data to various formats.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ fontisan export FONT [options]
13
+ ```
14
+
15
+ ## Arguments
16
+
17
+ | Argument | Description |
18
+ |----------|-------------|
19
+ | `FONT` | Input font file |
20
+
21
+ ## Options
22
+
23
+ | Option | Description |
24
+ |--------|-------------|
25
+ | `--format FORMAT` | Export format (ttx, svg, ufo) |
26
+ | `--output PATH` | Output file/directory |
27
+ | `--tables LIST` | Export specific tables |
28
+
29
+ ## Export Formats
30
+
31
+ | Format | Description |
32
+ |--------|-------------|
33
+ | `ttx` | XML dump of font tables |
34
+ | `svg` | SVG font format |
35
+ | `ufo` | Unified Font Object |
36
+
37
+ ## Examples
38
+
39
+ ### Export to TTX
40
+
41
+ ```bash
42
+ # Export all tables
43
+ fontisan export font.ttf --format ttx --output font.ttx
44
+
45
+ # Export specific tables
46
+ fontisan export font.ttf --format ttx --tables head,name,cmap --output font-partial.ttx
47
+ ```
48
+
49
+ ### Export to SVG
50
+
51
+ ```bash
52
+ # Create SVG font
53
+ fontisan export font.ttf --format svg --output font.svg
54
+ ```
55
+
56
+ ### Export to UFO
57
+
58
+ ```bash
59
+ # Create UFO package
60
+ fontisan export font.ttf --format ufo --output font.ufo
61
+ ```
62
+
63
+ ## TTX Format
64
+
65
+ TTX is an XML representation of font tables:
66
+
67
+ ```xml
68
+ <?xml version="1.0"?>
69
+ <ttFont>
70
+ <head>
71
+ <tableVersion value="1.0"/>
72
+ <fontRevision value="1.0"/>
73
+ <unitsPerEm value="1000"/>
74
+ ...
75
+ </head>
76
+ <name>
77
+ <namerecord nameID="1">Example</namerecord>
78
+ ...
79
+ </name>
80
+ </ttFont>
81
+ ```
82
+
83
+ ### Export Specific Tables
84
+
85
+ ```bash
86
+ # Just head and name
87
+ fontisan export font.ttf --format ttx --tables head,name --output tables.ttx
88
+ ```
89
+
90
+ ### Compare Tables
91
+
92
+ ```bash
93
+ # Export from two fonts
94
+ fontisan export font1.ttf --format ttx --tables name --output name1.ttx
95
+ fontisan export font2.ttf --format ttx --tables name --output name2.ttx
96
+
97
+ # Compare
98
+ diff name1.ttx name2.ttx
99
+ ```
100
+
101
+ ## SVG Export
102
+
103
+ Creates an SVG font file:
104
+
105
+ ```bash
106
+ fontisan export font.ttf --format svg --output font.svg
107
+ ```
108
+
109
+ Result:
110
+ ```xml
111
+ <svg xmlns="http://www.w3.org/2000/svg">
112
+ <font>
113
+ <font-face font-family="Example"/>
114
+ <glyph unicode="A" d="M0 0 L100 0..."/>
115
+ <glyph unicode="B" d="M0 0 L100 0..."/>
116
+ </font>
117
+ </svg>
118
+ ```
119
+
120
+ ## UFO Export
121
+
122
+ Creates a UFO (Unified Font Object) package:
123
+
124
+ ```bash
125
+ fontisan export font.ttf --format ufo --output font.ufo
126
+ ```
127
+
128
+ Structure:
129
+ ```
130
+ font.ufo/
131
+ ├── fontinfo.plist
132
+ ├── glyphs/
133
+ │ ├── A.glif
134
+ │ ├── B.glif
135
+ │ └── ...
136
+ ├── glyphs.contents
137
+ └── metainfo.plist
138
+ ```
@@ -0,0 +1,99 @@
1
+ ---
2
+ title: CLI Overview
3
+ ---
4
+
5
+ # CLI Overview
6
+
7
+ Fontisan includes a comprehensive command-line interface.
8
+
9
+ ## Available Commands
10
+
11
+ | Command | Description |
12
+ |---------|-------------|
13
+ | `convert` | Convert between font formats |
14
+ | `info` | Get font information |
15
+ | `validate` | Validate fonts |
16
+ | `subset` | Subset fonts |
17
+ | `pack` | Create font collections |
18
+ | `unpack` | Extract from collections |
19
+ | `export` | Export to TTX, SVG, etc. |
20
+ | `ls` | List fonts in collection |
21
+ | `instance` | Generate variable font instances |
22
+
23
+ ## Global Options
24
+
25
+ ```bash
26
+ fontisan [options] <command>
27
+
28
+ Options:
29
+ --format FORMAT Output format (text, yaml, json)
30
+ --verbose Verbose output
31
+ --quiet Suppress non-error output
32
+ --help Show help
33
+ --version Show version
34
+ ```
35
+
36
+ ## Getting Help
37
+
38
+ ```bash
39
+ # General help
40
+ fontisan --help
41
+
42
+ # Command help
43
+ fontisan convert --help
44
+ fontisan validate --help
45
+ ```
46
+
47
+ ## Output Formats
48
+
49
+ ### Text (default)
50
+
51
+ ```bash
52
+ fontisan info font.ttf
53
+ ```
54
+
55
+ ### YAML
56
+
57
+ ```bash
58
+ fontisan info font.ttf --format yaml
59
+ ```
60
+
61
+ ### JSON
62
+
63
+ ```bash
64
+ fontisan info font.ttf --format json
65
+ ```
66
+
67
+ ## Guides
68
+
69
+ - [convert](/guide/cli/convert) — Format conversion
70
+ - [info](/guide/cli/info) — Font information
71
+ - [validate](/guide/cli/validate) — Validation
72
+ - [subset](/guide/cli/subset) — Subsetting
73
+ - [pack](/guide/cli/pack) — Collections
74
+
75
+ ## Examples
76
+
77
+ ### Basic Conversion
78
+
79
+ ```bash
80
+ fontisan convert input.ttf --to otf --output output.otf
81
+ ```
82
+
83
+ ### Validate for Web
84
+
85
+ ```bash
86
+ fontisan validate font.ttf --profile web
87
+ ```
88
+
89
+ ### Extract Collection
90
+
91
+ ```bash
92
+ fontisan unpack fonts.ttc --output-dir ./extracted
93
+ ```
94
+
95
+ ### Generate Instance
96
+
97
+ ```bash
98
+ fontisan instance variable.ttf --wght 700 --output bold.ttf
99
+ ```
@@ -0,0 +1,144 @@
1
+ ---
2
+ title: info
3
+ ---
4
+
5
+ # info
6
+
7
+ Get font information.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ fontisan info FONT [options]
13
+ ```
14
+
15
+ ## Arguments
16
+
17
+ | Argument | Description |
18
+ |----------|-------------|
19
+ | `FONT` | Font file to analyze |
20
+
21
+ ## Options
22
+
23
+ | Option | Description |
24
+ |--------|-------------|
25
+ | `--format FORMAT` | Output format (text, yaml, json) |
26
+ | `--tables` | Show table information |
27
+ | `--glyphs` | Show glyph information |
28
+ | `--unicode` | Show Unicode coverage |
29
+ | `--features` | Show OpenType features |
30
+ | `--verbose` | Detailed output |
31
+
32
+ ## Examples
33
+
34
+ ### Basic Info
35
+
36
+ ```bash
37
+ fontisan info font.ttf
38
+
39
+ # Font: font.ttf
40
+ # Format: TrueType
41
+ # Family: Example
42
+ # Style: Regular
43
+ # Version: 1.000
44
+ # Glyphs: 268
45
+ # Tables: 14
46
+ ```
47
+
48
+ ### Table Information
49
+
50
+ ```bash
51
+ fontisan info font.ttf --tables
52
+
53
+ # Tables:
54
+ # head - Font header (54 bytes)
55
+ # hhea - Horizontal header (36 bytes)
56
+ # maxp - Maximum profile (32 bytes)
57
+ # name - Naming table (2456 bytes)
58
+ # cmap - Character mapping (1234 bytes)
59
+ # ...
60
+ ```
61
+
62
+ ### Unicode Coverage
63
+
64
+ ```bash
65
+ fontisan info font.ttf --unicode
66
+
67
+ # Unicode Coverage:
68
+ # Basic Latin (U+0000-U+007F)
69
+ # Latin-1 Supplement (U+0080-U+00FF)
70
+ # Latin Extended-A (U+0100-U+017F)
71
+ # ...
72
+ ```
73
+
74
+ ### OpenType Features
75
+
76
+ ```bash
77
+ fontisan info font.ttf --features
78
+
79
+ # OpenType Features:
80
+ # GSUB:
81
+ # liga - Ligatures
82
+ # kern - Kerning
83
+ # GPOS:
84
+ # kern - Kerning
85
+ # mark - Mark positioning
86
+ ```
87
+
88
+ ### YAML Output
89
+
90
+ ```bash
91
+ fontisan info font.ttf --format yaml
92
+
93
+ # family: Example
94
+ # style: Regular
95
+ # version: 1.000
96
+ # glyphs: 268
97
+ # tables:
98
+ # head: 54
99
+ # hhea: 36
100
+ # ...
101
+ ```
102
+
103
+ ### JSON Output
104
+
105
+ ```bash
106
+ fontisan info font.ttf --format json
107
+
108
+ # {
109
+ # "family": "Example",
110
+ # "style": "Regular",
111
+ # "version": "1.000",
112
+ # "glyphs": 268
113
+ # }
114
+ ```
115
+
116
+ ## Variable Font Info
117
+
118
+ ```bash
119
+ fontisan info variable.ttf
120
+
121
+ # Variable Font Axes: 2
122
+ # wght (Weight): 100 - 900, default: 400
123
+ # wdth (Width): 75 - 125, default: 100
124
+ #
125
+ # Named Instances: 6
126
+ # 0: Thin (wght=100)
127
+ # 1: Light (wght=300)
128
+ # 2: Regular (wght=400)
129
+ # ...
130
+ ```
131
+
132
+ ## Collection Info
133
+
134
+ ```bash
135
+ fontisan info fonts.ttc
136
+
137
+ # Collection: fonts.ttc
138
+ # Format: TTC
139
+ # Fonts: 4
140
+ # Size: 256 KB
141
+ #
142
+ # Shared Tables: 4
143
+ # Space Saved: 45%
144
+ ```
@@ -0,0 +1,155 @@
1
+ ---
2
+ title: pack/unpack
3
+ ---
4
+
5
+ # pack/unpack
6
+
7
+ Create and extract font collections.
8
+
9
+ ## pack
10
+
11
+ Create font collections.
12
+
13
+ ### Usage
14
+
15
+ ```bash
16
+ fontisan pack FONT ... --output COLLECTION [options]
17
+ ```
18
+
19
+ ### Arguments
20
+
21
+ | Argument | Description |
22
+ |----------|-------------|
23
+ | `FONT ...` | Input font files |
24
+ | `--output PATH` | Output collection |
25
+
26
+ ### Options
27
+
28
+ | Option | Description |
29
+ |--------|-------------|
30
+ | `--deduplicate` | Deduplicate tables |
31
+ | `--format FORMAT` | Collection format (ttc, otc, dfont) |
32
+
33
+ ### Examples
34
+
35
+ ```bash
36
+ # Create TTC
37
+ fontisan pack regular.ttf bold.ttf italic.ttf --output family.ttc
38
+
39
+ # Create OTC
40
+ fontisan pack regular.otf bold.otf --output family.otc
41
+
42
+ # With deduplication
43
+ fontisan pack *.ttf --output family.ttc --deduplicate
44
+
45
+ # Create dfont
46
+ fontisan pack regular.ttf bold.ttf --output family.dfont
47
+ ```
48
+
49
+ ## unpack
50
+
51
+ Extract fonts from collections.
52
+
53
+ ### Usage
54
+
55
+ ```bash
56
+ fontisan unpack COLLECTION [options]
57
+ ```
58
+
59
+ ### Arguments
60
+
61
+ | Argument | Description |
62
+ |----------|-------------|
63
+ | `COLLECTION` | Collection file |
64
+
65
+ ### Options
66
+
67
+ | Option | Description |
68
+ |--------|-------------|
69
+ | `--output-dir DIR` | Output directory |
70
+ | `--index N` | Extract specific font |
71
+ | `--output PATH` | Output file (with --index) |
72
+ | `--format FORMAT` | Convert to format |
73
+
74
+ ### Examples
75
+
76
+ ```bash
77
+ # Extract all to directory
78
+ fontisan unpack family.ttc --output-dir ./extracted
79
+
80
+ # Extract specific font
81
+ fontisan unpack family.ttc --index 0 --output regular.ttf
82
+
83
+ # Extract with conversion
84
+ fontisan unpack family.ttc --output-dir ./otf --format otf
85
+
86
+ # Extract from dfont
87
+ fontisan unpack font.dfont --output-dir ./fonts
88
+ ```
89
+
90
+ ## ls
91
+
92
+ List fonts in collections.
93
+
94
+ ### Usage
95
+
96
+ ```bash
97
+ fontisan ls COLLECTION
98
+ ```
99
+
100
+ ### Examples
101
+
102
+ ```bash
103
+ fontisan ls family.ttc
104
+
105
+ # Collection: family.ttc
106
+ # Fonts: 4
107
+ #
108
+ # 0. Family Regular
109
+ # PostScript: Family-Regular
110
+ # Format: TrueType
111
+ # Glyphs: 268, Tables: 14
112
+ #
113
+ # 1. Family Bold
114
+ # PostScript: Family-Bold
115
+ # Format: TrueType
116
+ # Glyphs: 268, Tables: 14
117
+ ```
118
+
119
+ ## Workflow Examples
120
+
121
+ ### Extract, Modify, Repack
122
+
123
+ ```bash
124
+ # Extract
125
+ fontisan unpack family.ttc --output-dir ./temp
126
+
127
+ # Modify fonts...
128
+
129
+ # Repack
130
+ fontisan pack temp/*.ttf --output family-new.ttc --deduplicate
131
+ ```
132
+
133
+ ### Convert Collection Format
134
+
135
+ ```bash
136
+ # TTC to OTC
137
+ fontisan unpack family.ttc --output-dir ./temp --format otf
138
+ fontisan pack temp/*.otf --output family.otc
139
+
140
+ # Or directly
141
+ fontisan convert family.ttc --to otc --output family.otc
142
+ ```
143
+
144
+ ### Analyze Collection
145
+
146
+ ```bash
147
+ # List contents
148
+ fontisan ls family.ttc
149
+
150
+ # Get info
151
+ fontisan info family.ttc
152
+
153
+ # Validate all
154
+ fontisan validate family.ttc
155
+ ```