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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +56 -196
- data/Gemfile +1 -1
- data/docs/.gitignore +17 -0
- data/docs/.vitepress/config.ts +317 -0
- data/docs/.vitepress/theme/components/ApiMethod.vue +127 -0
- data/docs/.vitepress/theme/components/Badge.vue +51 -0
- data/docs/.vitepress/theme/components/FeatureComparison.vue +87 -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 +22 -0
- data/docs/.vitepress/theme/style.css +330 -0
- data/docs/api/conversion-options.md +141 -0
- data/docs/api/converters/curve-converter.md +34 -0
- data/docs/api/converters/hint-converter.md +34 -0
- data/docs/api/converters/outline-converter.md +27 -0
- data/docs/api/font-loader.md +111 -0
- data/docs/api/font-writer.md +103 -0
- data/docs/api/index.md +79 -0
- data/docs/api/models/glyph-accessor.md +43 -0
- data/docs/api/models/glyph.md +40 -0
- data/docs/api/models/table-analyzer.md +35 -0
- data/docs/api/sfnt-font.md +53 -0
- data/docs/api/type1-font.md +43 -0
- data/docs/api/validators/font-validator.md +31 -0
- data/docs/api/validators/helper.md +36 -0
- data/docs/api/validators/profile.md +39 -0
- data/docs/cli/convert.md +87 -0
- data/docs/cli/dump-table.md +110 -0
- data/docs/cli/export.md +176 -0
- data/docs/cli/features.md +124 -0
- data/docs/cli/glyphs.md +90 -0
- data/docs/cli/index.md +208 -0
- data/docs/cli/info.md +254 -0
- data/docs/cli/instance.md +122 -0
- data/docs/cli/ls.md +95 -0
- data/docs/cli/optical-size.md +94 -0
- data/docs/cli/pack.md +125 -0
- data/docs/cli/scripts.md +105 -0
- data/docs/cli/subset.md +39 -0
- data/docs/cli/tables.md +84 -0
- data/docs/cli/unicode.md +101 -0
- data/docs/cli/validate.md +48 -0
- data/docs/cli/variable.md +126 -0
- data/docs/cli/version.md +46 -0
- data/docs/guide/cli/convert.md +108 -0
- data/docs/guide/cli/export.md +138 -0
- data/docs/guide/cli/index.md +99 -0
- data/docs/guide/cli/info.md +144 -0
- data/docs/guide/cli/pack.md +155 -0
- data/docs/guide/cli/subset.md +118 -0
- data/docs/guide/cli/validate.md +139 -0
- data/docs/guide/color-fonts/bitmaps.md +177 -0
- data/docs/guide/color-fonts/colr-cpal.md +175 -0
- data/docs/guide/color-fonts/index.md +140 -0
- data/docs/guide/color-fonts/svg.md +154 -0
- data/docs/guide/color.md +51 -0
- data/docs/guide/comparisons/font-validator.md +222 -0
- data/docs/guide/comparisons/fonttools.md +200 -0
- data/docs/guide/comparisons/index.md +83 -0
- data/docs/guide/comparisons/lcdf-typetools.md +205 -0
- data/docs/guide/contributing.md +279 -0
- data/docs/guide/conversion/collections.md +251 -0
- data/docs/guide/conversion/curves.md +246 -0
- data/docs/guide/conversion/index.md +157 -0
- data/docs/guide/conversion/options.md +251 -0
- data/docs/guide/conversion/ttf-otf.md +184 -0
- data/docs/guide/conversion/type1.md +208 -0
- data/docs/guide/conversion/web.md +240 -0
- data/docs/guide/conversion.md +39 -0
- data/docs/guide/formats/collections.md +147 -0
- data/docs/guide/formats/dfont.md +99 -0
- data/docs/guide/formats/index.md +65 -0
- data/docs/guide/formats/otf.md +103 -0
- data/docs/guide/formats/svg.md +97 -0
- data/docs/guide/formats/ttf.md +105 -0
- data/docs/guide/formats/type1.md +118 -0
- data/docs/guide/formats/woff.md +115 -0
- data/docs/guide/hinting/autohint.md +141 -0
- data/docs/guide/hinting/conversion.md +161 -0
- data/docs/guide/hinting/index.md +86 -0
- data/docs/guide/hinting/postscript.md +149 -0
- data/docs/guide/hinting/truetype.md +135 -0
- data/docs/guide/hinting.md +44 -0
- data/docs/guide/index.md +152 -0
- data/docs/guide/installation.md +116 -0
- data/docs/guide/migrations/extract-ttc.md +549 -0
- data/docs/guide/migrations/font-validator.md +260 -0
- data/docs/guide/migrations/fonttools.md +208 -0
- data/docs/guide/migrations/index.md +64 -0
- data/docs/guide/migrations/otfinfo.md +197 -0
- data/docs/guide/quick-start.md +204 -0
- data/docs/guide/type1.md +58 -0
- data/docs/guide/universal-outline.md +151 -0
- data/docs/guide/validation/custom.md +195 -0
- data/docs/guide/validation/helpers.md +188 -0
- data/docs/guide/validation/index.md +132 -0
- data/docs/guide/validation/profiles.md +156 -0
- data/docs/guide/validation.md +47 -0
- data/docs/guide/variable-fonts/advanced.md +231 -0
- data/docs/guide/variable-fonts/axes.md +209 -0
- data/docs/guide/variable-fonts/conversion.md +197 -0
- data/docs/guide/variable-fonts/index.md +84 -0
- data/docs/guide/variable-fonts/instances.md +187 -0
- data/docs/guide/variable-fonts/named-instances.md +194 -0
- data/docs/guide/variable-fonts/static.md +168 -0
- data/docs/guide/variable.md +58 -0
- data/docs/guide/woff.md +59 -0
- data/docs/index.md +136 -0
- data/docs/lychee.toml +37 -0
- data/docs/package-lock.json +2560 -0
- data/docs/package.json +15 -0
- 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/fontisan.gemspec +1 -1
- data/lib/fontisan/commands/features_command.rb +0 -1
- data/lib/fontisan/commands/info_command.rb +5 -5
- data/lib/fontisan/commands/scripts_command.rb +0 -1
- data/lib/fontisan/converters/format_converter.rb +2 -1
- data/lib/fontisan/converters/type1_converter.rb +65 -60
- data/lib/fontisan/hints/hint_converter.rb +2 -1
- data/lib/fontisan/loading_modes.rb +0 -2
- data/lib/fontisan/open_type_font.rb +0 -40
- data/lib/fontisan/sfnt_font.rb +41 -22
- data/lib/fontisan/tables/glyf/compound_glyph.rb +0 -1
- data/lib/fontisan/true_type_collection.rb +8 -8
- data/lib/fontisan/true_type_font.rb +1 -59
- data/lib/fontisan/type1/afm_parser.rb +2 -1
- data/lib/fontisan/type1/cff_to_type1_converter.rb +24 -19
- data/lib/fontisan/type1/private_dict.rb +28 -7
- data/lib/fontisan/type1/seac_expander.rb +22 -17
- data/lib/fontisan/variable/delta_applicator.rb +3 -3
- data/lib/fontisan/variation/optimizer.rb +0 -1
- data/lib/fontisan/version.rb +1 -1
- data/lib/fontisan/woff2_font.rb +2 -2
- data/lib/fontisan/woff_font.rb +3 -3
- data/lib/fontisan.rb +3 -2
- 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
|