Releases: premex-ab/fontforge-wasm
Release list
FontForge WASM 0.3.0-alpha.1
FontForge for WebAssembly is becoming a reusable engine port, with conversion as its first API. The development plan covers native scripting/CLI semantics, format and feature parity, stateful editing and a future web editor: ROADMAP.md.
This alpha adds SFD, BDF, FNT, OTB and Palm PDB import/export, plus PCF import. The registry and demo now distinguish import-only and export-only formats: 25 imports and 27 exports. All 675 source/output combinations passed with the actual WASM engine, alongside independent FontTools checks and Chrome/WebKit demo/offline tests.
The headless initialization fix allows embedded bitmap strikes to load without desktop dialogs. SFD retains contour order and bitmap source data. Bitmap exports default to 16 px monochrome; bitmap-to-outline conversion preserves rectangular pixels, without smoothing. PCF uses 16-bit character codes. Variable/color fonts, compressed EOT, full CID/collection handling, native scripting and Python remain outside the current conversion API.
Install the attached npm-compatible package (npm install ./warting-fontforge-wasm-0.3.0-alpha.1.tgz). This is a GitHub release, not an npm registry publication. Checksums and upstream source archives are attached; the matching tag supplies wrapper/build source and notices.
v0.2.0-alpha.1 — Web, legacy and container formats
Broader local font conversion
This alpha expands the standalone WebAssembly package and interactive demo to 22 export formats and 19 import formats:
- Web/desktop: TTF, OTF, WOFF, WOFF2, uncompressed EOT.
- Legacy outlines: SVG fonts, PFA, PFB, PS, PT3, CFF, T42 and T11.
- Containers/sources: DFONT, SUIT, MacBinary BIN, TTC and zipped UFO.
- Bitmap: Windows FON, with 16-pixel Windows ANSI export and pixel-preserving rectangular outline import.
- Export-only metrics: AFM, PFM and TFM.
The existing convert(bytes, options) Promise API is retained. FORMATS provides a capability registry, inputFormat disambiguates legacy containers, and faceIndex selects a TTC face. TTC export contains one face. UFO input/output is ZIP bytes.
WOFF2/Brotli, FontForge and GNU libiconv run in WASM. Compressed webfonts are decoded with size bounds before validating their SFNT tables. No upload or server fallback is involved.
The demo includes a hosted example for every input format, manual Convert, timestamped progress, measured native conversion time, a cache-reset test mode, and separately labelled TTF previews for legacy output.
Validation
- All 418 supported source/output combinations exercised with the actual WASM engine.
- Independent fontTools checks for Unicode, outlines, names, widths, shaping tables and container/metrics structure.
- All 19 hosted inputs and 22 exports tested in Chromium and WebKit, including previews and WOFF2 conversion offline.
- Cache upgrade/reset regression tests and an isolated installed-package check.
Alpha limitations
Conversion is not lossless. Legacy formats can lose shaping tables and character coverage. Type 11's exported CID mapping covers BMP Unicode; arbitrary CID-only imports may lack recoverable Unicode mappings. Compressed/XOR-obfuscated EOT, variable/color fonts, CFF2 and multiple-master/CID subfont collections remain unsupported. Bitmap imports preserve pixels rather than reconstructing smooth curves. See the README and demo format notes.
Install and source
Download warting-fontforge-wasm-0.2.0-alpha.1.tgz, then run:
npm install ./warting-fontforge-wasm-0.2.0-alpha.1.tgzDistributed through GitHub Releases, not the npm registry. GPL-3.0-or-later; the matching tag contains wrapper/build source, upstream-sources.tar.gz contains locked upstream archives and Emscripten runtime sources, and SHA256SUMS covers the release assets.
v0.1.0-alpha.1 · FontForge in WebAssembly
First experimental release of an independent FontForge WebAssembly conversion engine.
- Actual FontForge 20251009, compiled with Emscripten 5.0.7.
- Static TTF ↔ OTF/CFF conversion in disposable browser and Node.js workers.
- Promise API, TypeScript declarations, cancellation, input limits and timeout.
- OpenType ligatures and kerning enabled and independently checked with fontTools.
- Chrome and WebKit tests cover real conversion, FontFace loading, and conversion after the asset server stops. No COOP/COEP headers are required.
- Browser example with light/dark appearance and an optional offline asset cache.
Install the attached npm-compatible package:
npm install ./warting-fontforge-wasm-0.1.0-alpha.1.tgzThis release is distributed through GitHub, not the npm registry. Node.js 22+ is required for Node usage. See the README for browser asset and CSP setup.
Alpha limitations: static TTF/OTF inputs only. WOFF/WOFF2 need a separate decoder. Variable fonts, collections, color fonts and CFF2 are rejected. Outline conversion can alter hinting or unsupported tables; this is not a lossless converter or an audited font sanitizer.
License: GPL-3.0-or-later. This independent project is not affiliated with or endorsed by FontForge. The package includes upstream notices. The tag contains the wrapper and build scripts; upstream-sources.tar.gz contains the verified native dependency archives and Emscripten runtime sources needed to rebuild/relink. SHA256SUMS covers both release assets.