Open-source licenses
Last updated: 2026-10-22
TextExhibits’s tool runs entirely in your browser. It is built with the open-source fonts and libraries below, and we are grateful to their authors. Each one is used under its own license, linked here. The rest of TextExhibits is not open source.
HEIC/HEIF photo decoder: libheif (GNU LGPL v3)
iPhone photos (HEIC/HEIF) are converted in your browser with libheif 1.23.5, which includes the libde265 HEVC decoder. Both are © struktur AG, Dirk Farin and contributors, licensed under the GNU Lesser General Public License v3, which incorporates the GNU General Public License v3. We use the unmodified WebAssembly build published as the libheif-js package.
- The decoder is not part of TextExhibits’s own code. It is kept as separate files under /vendor/libheif-1.23.5/ and downloaded only when a chat contains HEIC photos.
- Source code: libheif, libde265 and the libheif-js build scripts. If you would like the exact source for the version we ship, email [email protected] and we will send it.
- Because they are separate, unmodified files, you can replace them with your own build of the same version, for example with a local proxy or browser extension that serves your files at that path.
Fonts used in the PDF
| Font | Used for | License |
|---|---|---|
| DejaVu Sans, DejaVu Sans Mono | Latin, Greek, Cyrillic, Hebrew, Arabic and most symbols | Bitstream Vera / DejaVu license |
| Noto Emoji (Google) | Emoji, drawn in black and white | SIL Open Font License 1.1 |
| Noto Sans SC, TC, JP and KR (Google and Adobe), version 5.3.1 | Chinese, Japanese and Korean text, downloaded only when a chat contains it | SIL Open Font License 1.1: SC, TC, JP, KR |
| Noto Sans Devanagari, Bengali, Gurmukhi, Gujarati, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Myanmar, Ethiopic and Khmer, and Noto Serif Tibetan (Google), version 5.3.0; Noto Sans for currency signs DejaVu lacks (₼ ₾ ₿ ⃀) | Those scripts and signs, downloaded only when a chat contains them | SIL Open Font License 1.1: Devanagari, Bengali, Gurmukhi, Gujarati, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Tibetan, Myanmar, Ethiopic, Khmer, Noto Sans |
The Noto fonts for CJK and the other scripts come from the Fontsource packages (the CJK fonts split into small files by character range) and are converted from WOFF2 to TrueType so the PDF library can embed them. Only the characters a PDF uses are embedded in it. The website itself uses Inter (SIL Open Font License 1.1).
Text shaping: HarfBuzz (MIT)
Scripts such as Devanagari, Thai, Sinhala and Burmese need their letters combined and positioned by rules in the font (shaping). TextExhibits does this in your browser with HarfBuzz, the shaping engine used by Chrome, Firefox, Android and LibreOffice, through the unmodified WebAssembly build in the harfbuzzjs package version 1.6.3 (MIT license; HarfBuzz itself is under the Old MIT license). It is downloaded only together with those fonts.
Libraries
The PDF is built with pdf-lib and @pdf-lib/fontkit, ZIP exports are read with fflate, and right-to-left text is ordered with bidi-js. These and the packages they include are under the MIT, zlib and 0BSD licenses. The full list with each license text is generated from the code we ship.