fontisan 0.2.13 → 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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +56 -196
  3. data/Gemfile +1 -1
  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 +111 -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 +1 -1
  123. data/lib/fontisan/commands/features_command.rb +0 -1
  124. data/lib/fontisan/commands/info_command.rb +5 -5
  125. data/lib/fontisan/commands/scripts_command.rb +0 -1
  126. data/lib/fontisan/converters/format_converter.rb +2 -1
  127. data/lib/fontisan/converters/type1_converter.rb +65 -60
  128. data/lib/fontisan/hints/hint_converter.rb +2 -1
  129. data/lib/fontisan/loading_modes.rb +0 -2
  130. data/lib/fontisan/open_type_font.rb +0 -40
  131. data/lib/fontisan/sfnt_font.rb +41 -22
  132. data/lib/fontisan/tables/glyf/compound_glyph.rb +0 -1
  133. data/lib/fontisan/true_type_collection.rb +8 -8
  134. data/lib/fontisan/true_type_font.rb +1 -59
  135. data/lib/fontisan/type1/afm_parser.rb +2 -1
  136. data/lib/fontisan/type1/cff_to_type1_converter.rb +24 -19
  137. data/lib/fontisan/type1/private_dict.rb +28 -7
  138. data/lib/fontisan/type1/seac_expander.rb +22 -17
  139. data/lib/fontisan/variable/delta_applicator.rb +3 -3
  140. data/lib/fontisan/variation/optimizer.rb +0 -1
  141. data/lib/fontisan/version.rb +1 -1
  142. data/lib/fontisan/woff2_font.rb +2 -2
  143. data/lib/fontisan/woff_font.rb +3 -3
  144. data/lib/fontisan.rb +3 -2
  145. metadata +122 -4
@@ -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
+ ```
@@ -0,0 +1,118 @@
1
+ ---
2
+ title: subset
3
+ ---
4
+
5
+ # subset
6
+
7
+ Create font subsets.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ fontisan subset 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
+ | `--chars TEXT` | Characters to include |
26
+ | `--chars-file PATH` | File with characters |
27
+ | `--unicodes RANGE` | Unicode ranges |
28
+ | `--glyphs LIST` | Glyph names/IDs |
29
+ | `--output PATH` | Output file |
30
+ | `--output-format FORMAT` | Output format |
31
+ | `--retain-gids` | Retain glyph IDs |
32
+
33
+ ## Examples
34
+
35
+ ### By Characters
36
+
37
+ ```bash
38
+ # Subset to specific characters
39
+ fontisan subset font.ttf --chars "ABCDEFabcdef0123456789" --output subset.ttf
40
+
41
+ # Subset to ASCII
42
+ fontisan subset font.ttf --chars "$(printf '%s' {a..z} {A..Z} {0..9})" --output ascii.ttf
43
+ ```
44
+
45
+ ### By Unicode Range
46
+
47
+ ```bash
48
+ # Basic Latin only
49
+ fontisan subset font.ttf --unicodes "U+0000-007F" --output basic-latin.ttf
50
+
51
+ # Latin + Latin-1
52
+ fontisan subset font.ttf --unicodes "U+0000-00FF" --output latin1.ttf
53
+
54
+ # Multiple ranges
55
+ fontisan subset font.ttf --unicodes "U+0000-007F,U+00A0-00FF" --output extended.ttf
56
+ ```
57
+
58
+ ### By Glyph Names
59
+
60
+ ```bash
61
+ # Specific glyphs
62
+ fontisan subset font.ttf --glyphs "A,B,C,a,b,c,zero,one,two" --output subset.ttf
63
+ ```
64
+
65
+ ### From File
66
+
67
+ ```bash
68
+ # Read characters from file
69
+ echo "Hello World" > chars.txt
70
+ fontisan subset font.ttf --chars-file chars.txt --output subset.ttf
71
+ ```
72
+
73
+ ### Retain Glyph IDs
74
+
75
+ ```bash
76
+ # Keep original glyph IDs
77
+ fontisan subset font.ttf --chars "ABC" --retain-gids --output subset.ttf
78
+ ```
79
+
80
+ ### With Format Conversion
81
+
82
+ ```bash
83
+ # Subset and convert to WOFF2
84
+ fontisan subset font.ttf --chars "ABC" --output-format woff2 --output subset.woff2
85
+ ```
86
+
87
+ ## Subsetting Strategies
88
+
89
+ ### Web Font Optimization
90
+
91
+ ```bash
92
+ # Subset to page content
93
+ fontisan subset font.ttf --chars "$(cat content.html)" --output web-font.woff2
94
+ ```
95
+
96
+ ### Latin Only
97
+
98
+ ```bash
99
+ # Standard Latin subset
100
+ fontisan subset font.ttf --unicodes "U+0000-024F,U+1E00-1EFF" --output latin.woff2
101
+ ```
102
+
103
+ ### Character Set Presets
104
+
105
+ ```bash
106
+ # ASCII
107
+ fontisan subset font.ttf --unicodes "U+0000-007F" --output ascii.ttf
108
+
109
+ # Basic Multilingual Plane (BMP)
110
+ fontisan subset font.ttf --unicodes "U+0000-FFFF" --output bmp.ttf
111
+ ```
112
+
113
+ ## Notes
114
+
115
+ - Subsetting removes unused glyphs and tables
116
+ - CFF fonts may require special handling
117
+ - Variable fonts are subset while preserving variation
118
+ - OpenType features are preserved for included glyphs