fontisan 0.4.25 → 0.4.26
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/TODO.improvements/03-fontisan-audit-command.md +52 -22
- data/lib/fontisan/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d9d761c9308f66218312a055b752135a728413c634fba54caa309c37076a03f0
|
|
4
|
+
data.tar.gz: 8ec9394bfde51dec443f7b854ab29d698a9cb70c63543ea4067b0fc23ffd10fc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a123990197a2754d9039c7c12f9ed8432165ded5f1c8c1b10c6f150d03907ecd09bc0baf50d40e853ccbad4c340b0694718ea74759b6dacb7fe3796212e8c703
|
|
7
|
+
data.tar.gz: c0510eee21f156b9f9d7e0110da16372a4c8418774144294efa7fcfcb7b049da72b42f6d683b1a8043e91b2f5ce66d201f3ec84173eead40d5bdab36d8d41ca2
|
|
@@ -45,28 +45,58 @@ ucode owns the Unicode-coverage axis (UCD parsing, block/script aggregation, per
|
|
|
45
45
|
|
|
46
46
|
**The fontisan audit does NOT bundle UCDXML parsing.** Block aggregation is delegated: fontisan audit accepts an optional pre-built ucode index path, OR emits the codepoint list and lets the consumer (fontist-archive) run ucode separately.
|
|
47
47
|
|
|
48
|
-
## Beyond ucode:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
48
|
+
## Beyond ucode: fontisan as the pure-Ruby replacement for ALL font validators
|
|
49
|
+
|
|
50
|
+
**Positioning correction (after self-debate):** fontisan's stated mission is *"replaces two tools: otfinfo and extract_ttc"*. The natural extension: `fontisan audit` should replace **every** non-Ruby font validator — `fontbakery`, `ots-sanitize`, MS Font Validator, Apple `ftxvalidator`, `ttfautohint`'s verify mode. Each of these is a non-Ruby dependency that fontisan can eliminate for any Ruby-based font workflow.
|
|
51
|
+
|
|
52
|
+
The first-draft of this TODO deferred to those tools ("fontbakery owns this; wrap it"). That was wrong — fontbakery being mature is exactly the reason fontisan should match it: eliminating Python from font toolchains is the value proposition. fontTools tracks the OT spec; fontisan tracks it the same way. The "always behind Chrome" concern is a maintenance discipline, not a reason not to build it.
|
|
53
|
+
|
|
54
|
+
### The full audit axis inventory
|
|
55
|
+
|
|
56
|
+
Each axis below is currently owned by a non-Ruby tool. fontisan's audit command should provide a pure-Ruby equivalent.
|
|
57
|
+
|
|
58
|
+
| Axis | Replaces | Why fontisan |
|
|
59
|
+
|------|----------|--------------|
|
|
60
|
+
| Identity + style + features | `otfinfo` (LCDF) | Already replaced; `audit` is the structured-report sibling of `info` |
|
|
61
|
+
| Subset report | (no current tool) | fontisan-unique — leverages subset infrastructure |
|
|
62
|
+
| Cross-format equivalence | `ttx` diff (fontTools) | Less noisy; first-class "is this the same font?" |
|
|
63
|
+
| License/rights extraction | (manual OS/2 reading) | One-liner compliance check |
|
|
64
|
+
| Collection integrity | (no current tool for TTC) | TTC is undertooled; CJK/Apple narrow but real |
|
|
65
|
+
| **OTS-rejection predictor** | **`ots-sanitize` (C++)** | Pure-Ruby; no system dependency; cross-platform |
|
|
66
|
+
| **Variable-font readiness** | **`fontbakery` (Python)** | Pure-Ruby replacement; eliminate Python from font toolchains |
|
|
67
|
+
| **Hinting audit** | **`ftxvalidator` + FontLab** | Pure-Ruby; covers Windows/embedded use cases |
|
|
68
|
+
| **Format-round-trip report** | **`ttx` diff** | Verifies fontisan's own conversions + cross-tool comparison |
|
|
69
|
+
| **WOFF2 spec validation** | (informal) | fontisan has the encoder; expose validation |
|
|
70
|
+
| **Glyph name validation** | (informal) | OT spec regex/length/reserved-name rules |
|
|
71
|
+
| **cmap subtable validation** | (informal) | Format 4 segment mismatches, format 12 group ordering — common bugs |
|
|
72
|
+
| **Table directory validation** | (informal) | Checksum, alignment, offset arithmetic |
|
|
73
|
+
| **OpenType conformance** | **`fontbakery` + MS Font Validator** | Hundreds of OT spec "should"/"must" rules |
|
|
74
|
+
|
|
75
|
+
### Build order (priority)
|
|
76
|
+
|
|
77
|
+
Phase 1 (baseline + immediate-value workflow reports):
|
|
78
|
+
1. Identity + style + features (archival format)
|
|
79
|
+
2. Subset report
|
|
80
|
+
3. Cross-format equivalence
|
|
81
|
+
4. License/rights extraction
|
|
82
|
+
|
|
83
|
+
Phase 2 (replace the validators — incremental):
|
|
84
|
+
5. Table directory validation (checksums, alignment — easy, foundational)
|
|
85
|
+
6. cmap subtable validation (common real-world bugs)
|
|
86
|
+
7. OTS-rejection predictor (port `ots-sanitize` rule set)
|
|
87
|
+
8. Glyph name validation (cheap OT spec rules)
|
|
88
|
+
|
|
89
|
+
Phase 3 (broader scope):
|
|
90
|
+
9. Variable-font readiness (port fontbakery's GF-VF check subset)
|
|
91
|
+
10. Hinting audit
|
|
92
|
+
11. WOFF2 spec validation
|
|
93
|
+
12. Format-round-trip report
|
|
94
|
+
13. Collection integrity
|
|
95
|
+
14. Full OpenType conformance (long-running — tracks OT spec evolution)
|
|
96
|
+
|
|
97
|
+
### Cross-language integration policy
|
|
98
|
+
|
|
99
|
+
When fontisan reaches parity with fontbakery/ots-sanitize on a given check, it's the consumer's choice: use the pure-Ruby implementation (zero system deps) OR shell out to the established tool (mature, may have checks fontisan hasn't ported yet). fontisan shouldn't *force* the replacement — it should *earn* it by being correct and cross-platform.
|
|
70
100
|
|
|
71
101
|
## Approach
|
|
72
102
|
|
data/lib/fontisan/version.rb
CHANGED