fontisan 0.2.14 → 0.2.17

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +79 -4
  3. data/Gemfile +6 -3
  4. data/docs/.gitignore +17 -0
  5. data/docs/.vitepress/config.ts +317 -0
  6. data/docs/.vitepress/theme/components/ApiMethod.vue +127 -0
  7. data/docs/.vitepress/theme/components/Badge.vue +51 -0
  8. data/docs/.vitepress/theme/components/FeatureComparison.vue +87 -0
  9. data/docs/.vitepress/theme/components/HeroCodeBlock.vue +98 -0
  10. data/docs/.vitepress/theme/components/WithinHero.vue +30 -0
  11. data/docs/.vitepress/theme/index.ts +22 -0
  12. data/docs/.vitepress/theme/style.css +330 -0
  13. data/docs/api/conversion-options.md +141 -0
  14. data/docs/api/converters/curve-converter.md +34 -0
  15. data/docs/api/converters/hint-converter.md +34 -0
  16. data/docs/api/converters/outline-converter.md +27 -0
  17. data/docs/api/font-loader.md +117 -0
  18. data/docs/api/font-writer.md +103 -0
  19. data/docs/api/index.md +79 -0
  20. data/docs/api/models/glyph-accessor.md +43 -0
  21. data/docs/api/models/glyph.md +40 -0
  22. data/docs/api/models/table-analyzer.md +35 -0
  23. data/docs/api/sfnt-font.md +53 -0
  24. data/docs/api/type1-font.md +43 -0
  25. data/docs/api/validators/font-validator.md +31 -0
  26. data/docs/api/validators/helper.md +36 -0
  27. data/docs/api/validators/profile.md +39 -0
  28. data/docs/cli/convert.md +87 -0
  29. data/docs/cli/dump-table.md +110 -0
  30. data/docs/cli/export.md +176 -0
  31. data/docs/cli/features.md +124 -0
  32. data/docs/cli/glyphs.md +90 -0
  33. data/docs/cli/index.md +208 -0
  34. data/docs/cli/info.md +254 -0
  35. data/docs/cli/instance.md +122 -0
  36. data/docs/cli/ls.md +95 -0
  37. data/docs/cli/optical-size.md +94 -0
  38. data/docs/cli/pack.md +125 -0
  39. data/docs/cli/scripts.md +105 -0
  40. data/docs/cli/subset.md +39 -0
  41. data/docs/cli/tables.md +84 -0
  42. data/docs/cli/unicode.md +101 -0
  43. data/docs/cli/validate.md +48 -0
  44. data/docs/cli/variable.md +126 -0
  45. data/docs/cli/version.md +46 -0
  46. data/docs/guide/cli/convert.md +108 -0
  47. data/docs/guide/cli/export.md +138 -0
  48. data/docs/guide/cli/index.md +99 -0
  49. data/docs/guide/cli/info.md +144 -0
  50. data/docs/guide/cli/pack.md +155 -0
  51. data/docs/guide/cli/subset.md +118 -0
  52. data/docs/guide/cli/validate.md +139 -0
  53. data/docs/guide/color-fonts/bitmaps.md +177 -0
  54. data/docs/guide/color-fonts/colr-cpal.md +175 -0
  55. data/docs/guide/color-fonts/index.md +140 -0
  56. data/docs/guide/color-fonts/svg.md +154 -0
  57. data/docs/guide/color.md +51 -0
  58. data/docs/guide/comparisons/font-validator.md +222 -0
  59. data/docs/guide/comparisons/fonttools.md +200 -0
  60. data/docs/guide/comparisons/index.md +83 -0
  61. data/docs/guide/comparisons/lcdf-typetools.md +205 -0
  62. data/docs/guide/contributing.md +279 -0
  63. data/docs/guide/conversion/collections.md +251 -0
  64. data/docs/guide/conversion/curves.md +246 -0
  65. data/docs/guide/conversion/index.md +157 -0
  66. data/docs/guide/conversion/options.md +251 -0
  67. data/docs/guide/conversion/ttf-otf.md +184 -0
  68. data/docs/guide/conversion/type1.md +208 -0
  69. data/docs/guide/conversion/web.md +240 -0
  70. data/docs/guide/conversion.md +39 -0
  71. data/docs/guide/formats/collections.md +147 -0
  72. data/docs/guide/formats/dfont.md +99 -0
  73. data/docs/guide/formats/index.md +65 -0
  74. data/docs/guide/formats/otf.md +103 -0
  75. data/docs/guide/formats/svg.md +97 -0
  76. data/docs/guide/formats/ttf.md +105 -0
  77. data/docs/guide/formats/type1.md +118 -0
  78. data/docs/guide/formats/woff.md +115 -0
  79. data/docs/guide/hinting/autohint.md +141 -0
  80. data/docs/guide/hinting/conversion.md +161 -0
  81. data/docs/guide/hinting/index.md +86 -0
  82. data/docs/guide/hinting/postscript.md +149 -0
  83. data/docs/guide/hinting/truetype.md +135 -0
  84. data/docs/guide/hinting.md +44 -0
  85. data/docs/guide/index.md +152 -0
  86. data/docs/guide/installation.md +116 -0
  87. data/docs/guide/migrations/extract-ttc.md +549 -0
  88. data/docs/guide/migrations/font-validator.md +260 -0
  89. data/docs/guide/migrations/fonttools.md +208 -0
  90. data/docs/guide/migrations/index.md +64 -0
  91. data/docs/guide/migrations/otfinfo.md +197 -0
  92. data/docs/guide/quick-start.md +204 -0
  93. data/docs/guide/type1.md +58 -0
  94. data/docs/guide/universal-outline.md +151 -0
  95. data/docs/guide/validation/custom.md +195 -0
  96. data/docs/guide/validation/helpers.md +188 -0
  97. data/docs/guide/validation/index.md +132 -0
  98. data/docs/guide/validation/profiles.md +156 -0
  99. data/docs/guide/validation.md +47 -0
  100. data/docs/guide/variable-fonts/advanced.md +231 -0
  101. data/docs/guide/variable-fonts/axes.md +209 -0
  102. data/docs/guide/variable-fonts/conversion.md +197 -0
  103. data/docs/guide/variable-fonts/index.md +84 -0
  104. data/docs/guide/variable-fonts/instances.md +187 -0
  105. data/docs/guide/variable-fonts/named-instances.md +194 -0
  106. data/docs/guide/variable-fonts/static.md +168 -0
  107. data/docs/guide/variable.md +58 -0
  108. data/docs/guide/woff.md +59 -0
  109. data/docs/index.md +136 -0
  110. data/docs/lychee.toml +37 -0
  111. data/docs/package-lock.json +2560 -0
  112. data/docs/package.json +15 -0
  113. data/docs/public/apple-touch-icon.png +0 -0
  114. data/docs/public/favicon-96x96.png +0 -0
  115. data/docs/public/favicon.ico +0 -0
  116. data/docs/public/favicon.svg +1 -0
  117. data/docs/public/logo-full.svg +1 -0
  118. data/docs/public/logo.svg +1 -0
  119. data/docs/public/site.webmanifest +21 -0
  120. data/docs/public/web-app-manifest-192x192.png +0 -0
  121. data/docs/public/web-app-manifest-512x512.png +0 -0
  122. data/fontisan.gemspec +2 -1
  123. data/lib/fontisan/commands/features_command.rb +0 -1
  124. data/lib/fontisan/commands/scripts_command.rb +0 -1
  125. data/lib/fontisan/constants.rb +29 -6
  126. data/lib/fontisan/font_loader.rb +184 -318
  127. data/lib/fontisan/loading_modes.rb +0 -2
  128. data/lib/fontisan/sfnt_font.rb +4 -3
  129. data/lib/fontisan/tables/glyf/compound_glyph.rb +0 -1
  130. data/lib/fontisan/variable/delta_applicator.rb +3 -3
  131. data/lib/fontisan/variation/optimizer.rb +0 -1
  132. data/lib/fontisan/version.rb +1 -1
  133. data/lib/fontisan.rb +3 -2
  134. metadata +136 -4
@@ -0,0 +1,126 @@
1
+ ---
2
+ title: variable
3
+ ---
4
+
5
+ # variable
6
+
7
+ Inspect variable font axes and named instances.
8
+
9
+ ## Quick Reference
10
+
11
+ ```bash
12
+ fontisan variable <font> [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ | Option | Description |
18
+ |--------|-------------|
19
+ | `--format FORMAT` | Output format (text, yaml, json) |
20
+ | `--instances` | Show named instances |
21
+ | `--axes` | Show axes only |
22
+
23
+ ## Output
24
+
25
+ Shows:
26
+ - Variation axes with ranges and defaults
27
+ - Named instances (presets)
28
+ - Axis flags (hidden, etc.)
29
+
30
+ ## Examples
31
+
32
+ ```bash
33
+ # Full variable font info
34
+ fontisan variable VariableFont.ttf
35
+
36
+ # Show only axes
37
+ fontisan variable VariableFont.ttf --axes
38
+
39
+ # Show named instances
40
+ fontisan variable VariableFont.ttf --instances
41
+
42
+ # JSON output for processing
43
+ fontisan variable VariableFont.ttf --format json
44
+ ```
45
+
46
+ ## Sample Output
47
+
48
+ ```
49
+ Variable Font: VariableFont.ttf
50
+ ================================
51
+
52
+ Axes (2)
53
+ --------
54
+ Tag Name Min Default Max Flags
55
+ ------ ----------- ----- ------- ----- -----
56
+ wght Weight 100 400 900 -
57
+ wdth Width 75% 100% 125% -
58
+
59
+ Named Instances (6)
60
+ -------------------
61
+ Name Coordinates
62
+ ------------------ --------------------
63
+ Thin wght:100
64
+ Light wght:300
65
+ Regular wght:400
66
+ Medium wght:500
67
+ Bold wght:700
68
+ Black wght:900
69
+ ```
70
+
71
+ ## Understanding Axes
72
+
73
+ ### Standard Axes
74
+
75
+ | Tag | Name | Typical Range | Description |
76
+ |-----|------|---------------|-------------|
77
+ | `wght` | Weight | 1-999 | Font weight (thin to black) |
78
+ | `wdth` | Width | 50-200 | Width percentage |
79
+ | `slnt` | Slant | -90 to +90 | Slant angle in degrees |
80
+ | `ital` | Italic | 0-1 | Italic toggle |
81
+ | `opsz` | Optical Size | 8-144 | Point size for optical sizing |
82
+
83
+ ### Registered Axes
84
+
85
+ | Tag | Name | Description |
86
+ |-----|------|-------------|
87
+ | `GRAD` | Grade | Weight change without width change |
88
+ | `XTRA` | X-tra | X-height adjustment |
89
+ | `XOPQ` | X-opaque | Horizontal stroke adjustment |
90
+ | `YOPQ` | Y-opaque | Vertical stroke adjustment |
91
+ | `YTRA` | Y-tra | Y-height adjustment |
92
+ | `YTLC` | Y-lowercase | Lowercase height |
93
+ | `YTUC` | Y-uppercase | Uppercase height |
94
+ | `YTAS` | Y-ascender | Ascender height |
95
+ | `YTDE` | Y-descender | Descender depth |
96
+ | `YTFI` | Y-figure | Figure height |
97
+
98
+ ## Use Cases
99
+
100
+ ### Discover Available Instances
101
+
102
+ ```bash
103
+ fontisan variable font.ttf --instances
104
+ ```
105
+
106
+ ### Get Axis Range for Instance Generation
107
+
108
+ ```bash
109
+ # Get weight range
110
+ fontisan variable font.ttf --format json | jq '.axes[] | select(.tag=="wght")'
111
+ ```
112
+
113
+ ### Check if Font is Variable
114
+
115
+ ```bash
116
+ if fontisan variable font.ttf 2>/dev/null; then
117
+ echo "Variable font"
118
+ else
119
+ echo "Static font"
120
+ fi
121
+ ```
122
+
123
+ ## Related Commands
124
+
125
+ - [instance](/cli/instance) — Generate static instances
126
+ - [info](/cli/info) — Get font information
@@ -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
+ ```