QR forever (designer QR codes that never expire) - fotojockovic.com/qr ===================================================================== Makes static QR codes (and Micro QR codes) in the browser. Nothing is uploaded; no server, no tracking. 1. Our own work, written for this tool (MIT licence): - src-rs/ -> qr.wasm: the whole QR engine in Rust, with no third-party crates: * encoder for QR Code Model 2, versions 1-40, levels L/M/Q/H, and Micro QR M1-M4: optimal segmentation into numeric / alphanumeric / byte / kanji segments by dynamic programming, ECI 26 (UTF-8) for non-ASCII text, Reed-Solomon over GF(256), block interleaving, module placement, all 8 (Micro: 4) masks scored by the ISO/IEC 18004 penalty rules * decoder: adaptive binarisation, finder search by 1:1:3:1:1 run ratios with vertical / horizontal / diagonal cross-checks, triple selection, version estimate and version-information BCH decoding, orientation-aware alignment-pattern search, least-squares homography refined with every alignment pattern, module sampling, format information (BCH), Berlekamp-Massey / Chien / Forney Reed-Solomon correction with per-block error counts, bit-stream parsing (incl. ECI, kanji, structured append) * scan simulation (distance, focus blur, dim light and noise, glare, perspective) for the scan check * halftone blending for photo QR codes - app.js, render.js (vector renderer: contour tracing, rounded / liquid / classy outlines, module glyphs, eyes, frames), export.js (PDF writer with shadings and CMYK, EPS level 3 writer, PNG pHYs, ZIP, CSV), font.js (TrueType outline reader), payload.js (content standards), icons.js (our own logo glyphs and an SVG path parser), engine.js, worker.js, i18n.js, lang/*.js, index.html, style.css, og.jpg. 2. Standards and published methods used (ideas and specifications only; no code copied): - ISO/IEC 18004:2015, QR Code bar code symbology specification (incl. Micro QR). - Optimal segmentation idea as described publicly by Project Nayuki ("Optimal text segmentation for QR Codes"); our implementation is our own. - H.-K. Chu, C.-S. Chang, R.-R. Lee, N. J. Mitra, "Halftone QR Codes", ACM SIGGRAPH Asia 2013 (core sub-module idea for photo QR codes). - Finder-pattern search in the spirit of the public ZXing description (1:1:3:1:1 ratios, cross-checks). - EPC069-12 v2 "Quick Response Code: Guidelines to Enable Data Capture for the Initiation of a SEPA Credit Transfer" (European Payments Council). - NBS IPS QR code: National Bank of Serbia, "Generator / Validator NBS IPS QR kodova - API" guidelines and "Preporuke" (ips.nbs.rs, read 2026-10-16): tags K, V, C, R, N, I, P, SF, S, RO; account and model-97 checks (ISO 7064 MOD 97-10). - SPAYD (Short Payment Descriptor), Czech Banking Association. - Wi-Fi network config format (WIFI:T:...;S:...;P:...;;), MeCard, vCard 3.0 (RFC 2426), iCalendar VEVENT (RFC 5545), mailto (RFC 6068), tel (RFC 3966), geo (RFC 5870). - PDF 1.5 and PostScript Level 3 reference manuals (Adobe), PNG specification (pHYs), ZIP APPNOTE (PKWARE). 3. Fonts (fonts/), SIL Open Font License 1.1 (https://openfontlicense.org), taken from the same subsets used by /stars (instanced at one weight, subset to Latin, Latin Extended, Greek and Cyrillic where the family has them; renamed files only). Text in exported files is converted to outlines. Manrope - Copyright 2018 The Manrope Project Authors (github.com/googlefonts/manrope) Montserrat - Copyright 2024 The Montserrat.Git Project Authors (github.com/JulietaUla/Montserrat.git) Jost - Copyright 2020 The Jost Project Authors (github.com/indestructible-type) Cinzel - Copyright 2020 The Cinzel Project Authors (github.com/NDISCOVER/Cinzel) EB Garamond - Copyright 2017 The EB Garamond Project Authors (github.com/octaviopardo/EBGaramond12) Great Vibes - Copyright 2015 The Great Vibes Pro Project Authors (github.com/googlefonts/great-vibes) DM Mono - Copyright 2020 The DM Mono Project Authors (github.com/googlefonts/dm-mono) None of these fonts has a Reserved Font Name. Interface fonts Inter Tight and Instrument Serif are loaded from Google Fonts (SIL OFL 1.1). 4. Brand icons in the logo picker (icons.js, BRAND): Simple Icons 13.21.0 (https://simpleicons.org), CC0 1.0 Universal. The logos are trademarks of their respective owners; they are offered only so people can mark codes that link to their own profiles on those services. No endorsement is implied. 5. Sample pictures for photo QR (samples/*.jpg: square crops, resized). The Metropolitan Museum of Art, Open Access, CC0 1.0 (same files as /wall): samples/vangogh.jpg - Vincent van Gogh, Wheat Field with Cypresses, 1889, object 436535 samples/vermeer.jpg - Johannes Vermeer, Young Woman with a Water Pitcher, ca. 1662, object 437881 samples/legray.jpg - Gustave Le Gray, Mediterranean Sea - Sete, 1857, object 283124 6. Language flags in the language picker (/static/tools/common/i18n.js): our own drawings. Build tools (not shipped): Rust / cargo (MIT/Apache-2.0), binaryen wasm optimiser via npm "binaryen" (Apache-2.0). Testing only (not shipped): zxing-cpp (Apache-2.0) was used to cross-check our encoder and decoder; Puppeteer (Apache-2.0) for browser tests. Self-hosted web fonts (2026-10-19): Inter Tight, Instrument Serif. SIL Open Font License 1.1. The woff2 files are the ones Google Fonts serves (latin, latin-ext, cyrillic, greek subsets where the family has them), stored on our own server under /static/tools/common/fonts// with each family's licence text (OFL.txt) next to them; stylesheet /static/tools/common/fonts/ui.css. No font request goes to Google.