Attributions — FormReady

This page lists every third-party library, font and asset FormReady uses, with its version, licence and source.

Every third-party component FormReady ships, with its exact version, licence and source. Firm reuse rules: MIT / Apache-2.0 / BSD / ISC only (never GPL/AGPL); copied code is reviewed by Cipher before it ships and tested by Nova like hand-written code. Anything not listed here is original FormReady work, written in-house.

Review status: pending Lex review (required before staging sign-off) and Cipher re-check of the pinned artefacts below.

JavaScript libraries

pdf-lib — 1.17.1 — MIT

@pdf-lib/fontkit — 1.1.1 — MIT

@embedpdf/pdfium — 2.15.1 — MIT (wrapper) / BSD-style (PDFium core) — NOT USED BY THE LIVE EDITOR

pdf.js — 3.11.174 — Apache-2.0

Tesseract.js — 5.1.1 — Apache-2.0 (SELF-HOSTED)

Fabric.js — 5.3.1 — MIT — NOT SHIPPED

JSZip — 3.10.1 — MIT (elected)

qrcode-generator — 1.4.4 — MIT

Cropper.js — NOT ADOPTED

Cropper.js (MIT, https://github.com/fengyuanchen/cropperjs) was evaluated for the Exam Resizer crop UI under the firm's open-source reuse permission. It was not adopted: the crop UI shipped in Phase 1 is hand-built in-house (FRUI.createCropStage in assets/js/ui.js — fixed-aspect crop box, pointer-drag repositioning, zoom) and already meets the spec. No Cropper.js code, CSS or assets ship with FormReady. Recorded here so the evaluation is auditable.

FFmpeg.wasm (@ffmpeg/ffmpeg + @ffmpeg/core) — NOT ADOPTED

Evaluated for the Video to Audio tool (licence gate: docs/licence-gate-additions.md, 22 Oct 2026). The JS wrapper is MIT, but the distributed Wasm core is declared GPL-2.0-or-later (built with GPL components including x264/x265 and the non-free fdk-aac). FormReady ships MIT/Apache/BSD/OFL code only, so FFmpeg.wasm is not adopted: no FFmpeg code, Wasm or assets ship with FormReady. Video to Audio uses the browser's own Web Audio / WebCodecs platform instead.

lamejs (and forks) — NOT ADOPTED

Evaluated for MP3 encoding in the Video to Audio tool (same gate). lamejs is a JavaScript rewrite of libmp3lame; its own LICENSE file imposes LGPL terms, and the maintained fork @breezystack/lamejs declares LGPL-3.0. LGPL fails the house rule, so lamejs is not adopted in any form: no LAME-derived code ships with FormReady, and the tool does not promise MP3 output — it labels the format the user's browser actually produces (WAV, or a browser-encoded format where supported).

Fonts (self-hosted, no font CDN at runtime)

Served from assets/fonts/ on our own origin. Both are licensed under the SIL Open Font License, Version 1.1 (https://scripts.sil.org/OFL).

Fredoka — variable font, weights 500/600 used

Nunito — weights 400/600/700/800 used

PDF Editor matched fonts — assets/fonts/v3/ (60 files, ~974 KB total)

Used ONLY by the PDF Editor: when edited text must be re-typeset, it is written in the closest legal match to the document's own font — the genuine open font when one exists (tier 1), a metric-compatible clone for the common proprietary fonts (tier 2), or a family fallback (tier 3). Files are subset WOFF builds (Latin basic + Latin-1 + punctuation + ₹/€/™ + fi/fl ligatures), produced by scripts/build-font-assets.py from the OFL sources below and loaded lazily — only the family + style an edit actually needs (~13–25 KB). All SIL Open Font License 1.1; the licence text ships with the fonts at assets/fonts/v3/OFL.txt.

Icons and illustrations

Everything else

All HTML, CSS (assets/css/styles.css, components.css, motion.css — claymorphism design system by Rio) and JavaScript (assets/js/, except the vendored pdf.js worker noted above) are original work by the NexaForge team for FormReady. Analytics and advertising on FormReady are provided by Google Analytics and Google AdSense — see the Privacy Policy for what they measure and how to opt out. No other analytics, advertising or tracking libraries are used.

PDF Editor (Beta)