# Reader font provenance

All font binaries in this directory are copied without modification from an official upstream repository. Local variable-font files use bracket-free names because PowerShell treats square brackets as wildcard syntax; the upstream path and immutable blob identifier are recorded below.

## Google Fonts families

Source: [google/fonts](https://github.com/google/fonts) at commit [`389b770410cc0b7c21c85673bfa2077420fe7f65`](https://github.com/google/fonts/commit/389b770410cc0b7c21c85673bfa2077420fe7f65), committed 2026-07-16. Every family directory retains the upstream `METADATA.pb` and `OFL.txt`.

| Local file | Upstream path | Git blob SHA | SHA-256 |
|---|---|---|---|
| `eb_garamond/EBGaramond-Variable.ttf` | `ofl/ebgaramond/EBGaramond[wght].ttf` | `52d34b86ec20977f222ce37e8158e6b3002c0a31` | `ef9512f92f6d579e5dc75af59a5a4b1b8b47d2eda89e00b954d44520e5369027` |
| `eb_garamond/EBGaramond-VariableItalic.ttf` | `ofl/ebgaramond/EBGaramond-Italic[wght].ttf` | `f9ad996001c8ee72fd43b4b8e67c8924b7f615b1` | `bba2c4499c93c9612b90b9825d32b07da52fce2fe57562a1eb6b833553f93c4e` |
| `merriweather/Merriweather-Variable.ttf` | `ofl/merriweather/Merriweather[opsz,wdth,wght].ttf` | `cb775b80fa0a6f3b2aea114869a7171695b50a62` | `d0ed0e359e396af7ad05e73dffd11a3a4c326ea0d0283c56bd9361cb2cc86a96` |
| `merriweather/Merriweather-VariableItalic.ttf` | `ofl/merriweather/Merriweather-Italic[opsz,wdth,wght].ttf` | `f16120757a8a92cfa12a5fc9a7dcbaa2f8297ab6` | `f68a8f4989258679e4fbaf50aa42400132b5373c2d9d2514ba82ef6e85947a0b` |
| `open_sans/OpenSans-Variable.ttf` | `ofl/opensans/OpenSans[wdth,wght].ttf` | `9db85693b027f3b05f6d77471d215f20707127c1` | `36643644f318a812aab2d2ed3bb98f8cf0872527f835fe9398d95fe6b9adb878` |
| `open_sans/OpenSans-VariableItalic.ttf` | `ofl/opensans/OpenSans-Italic[wdth,wght].ttf` | `6c2997999ce43d4ab5b377b712f2b10aca5e4bc1` | `fe269381e992f32e135801740998544d6235061e37c93ec067ad2be3edd5b17b` |
| `pt_sans/PT_Sans-Web-Regular.ttf` | `ofl/ptsans/PT_Sans-Web-Regular.ttf` | `83a21b724c47127a95e725b5c6bdfa30fcc1a7be` | `9cc831490532009bae2b3ce0d39c62adfc889060beb421593bfd9d2396d0f10a` |
| `pt_sans/PT_Sans-Web-Italic.ttf` | `ofl/ptsans/PT_Sans-Web-Italic.ttf` | `180a5d68d3f9979aa58d59ff7c775d7aac095573` | `5a90fe2d0cd798700935240580bdcc12c0ffc9102c0c7163b3418e13bc21debd` |
| `pt_sans/PT_Sans-Web-Bold.ttf` | `ofl/ptsans/PT_Sans-Web-Bold.ttf` | `3d4e6fe2f9f5282806cda0553d3ab321605ae37c` | `3128bd5ecf01816e59a23d54c57a7a6b14615b07db53ff277c77376010265b05` |
| `pt_sans/PT_Sans-Web-BoldItalic.ttf` | `ofl/ptsans/PT_Sans-Web-BoldItalic.ttf` | `eb61f14b6b07a0e278374a4b551ccca8bd7a21fc` | `81ac221cdd02bccfa679c74adb122478e9d092e65a722e31ca11469961483785` |
| `pt_serif/PT_Serif-Web-Regular.ttf` | `ofl/ptserif/PT_Serif-Web-Regular.ttf` | `5310691a999658437d6db608b9447d606598753e` | `a4951fade06ff8f09b7673aa81ffb65a8cd409e24d3289a6dc670bc4dda2557a` |
| `pt_serif/PT_Serif-Web-Italic.ttf` | `ofl/ptserif/PT_Serif-Web-Italic.ttf` | `b690e26058970205f7cb1bcb4434827281a1707c` | `f57e95ff9dc85691a3b2e193f2028db36f6663939a46c0fc4f286d618b80b7ce` |
| `pt_serif/PT_Serif-Web-Bold.ttf` | `ofl/ptserif/PT_Serif-Web-Bold.ttf` | `0483e59fa9d9669c5e98a2b2a1b7cd059db98888` | `038ba7336bd7ea14f12ad155bed51a4345cac5153275d521dec3ba04021c526e` |
| `pt_serif/PT_Serif-Web-BoldItalic.ttf` | `ofl/ptserif/PT_Serif-Web-BoldItalic.ttf` | `49d504b59335962a547ef7fa6ba74040ebf3521a` | `f003788ba08981eb0988b3557a6f224a53dab49c20e283e8b74d5af3c466f8be` |
| `roboto/Roboto-Variable.ttf` | `ofl/roboto/Roboto[wdth,wght].ttf` | `5522a368d9072fd88c299916e61fcff369949061` | `d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134` |
| `roboto/Roboto-VariableItalic.ttf` | `ofl/roboto/Roboto-Italic[wdth,wght].ttf` | `a122c13964daac37f1186a22603a5180d2dba5d6` | `9725a847af6b460ffca162ae66d20dad48b01876137947180b42d7dcd7887182` |

## Droid families

Source: [AOSP `platform/frameworks/base`](https://android.googlesource.com/platform/frameworks/base/) at commit [`b046b20f1a5406ddda60c548036ed9e887da49df`](https://android.googlesource.com/platform/frameworks/base/+/b046b20f1a5406ddda60c548036ed9e887da49df), directory `data/fonts`. The upstream `NOTICE` and `MODULE_LICENSE_APACHE2` files are retained under `licenses/aosp`.

| Local file | Upstream file | Git blob SHA | SHA-256 |
|---|---|---|---|
| `droid_sans/DroidSans.ttf` | `DroidSans.ttf` | `ad1efca88aed8d9e2d179f27dd713e2a1562fe5f` | `f51b88945f4c1b236f44b8d55a2d304316869127e95248c435c23f1e4142a7db` |
| `droid_sans/DroidSans-Bold.ttf` | `DroidSans-Bold.ttf` | `d065b64eb1863f83c2c982264f9442f2313a44a9` | `2f529a3e60c007979d95d29794c3660694217fb882429fb33919d2245fe969e9` |
| `droid_serif/DroidSerif-Regular.ttf` | `DroidSerif-Regular.ttf` | `5b4fe815d2d856632c200f9b10c45cbc814c86f4` | `ae32140265dbe0dfde24b9abd222be9210a531888f014ff9b2326aba2d6fd777` |
| `droid_serif/DroidSerif-Italic.ttf` | `DroidSerif-Italic.ttf` | `2972809daaa8d600a3509389124c428492d4868e` | `02c0108dea583e393fbcbec39c7093e9a3095a09d65e37fafff9a9b7a89123a4` |
| `droid_serif/DroidSerif-Bold.ttf` | `DroidSerif-Bold.ttf` | `838d255888b41224581339799f83e1f6f3f3dc41` | `c746c6383a03effbcad6ccb028e4b39e87071ff1a146a24fb2110a23e05776bb` |
| `droid_serif/DroidSerif-BoldItalic.ttf` | `DroidSerif-BoldItalic.ttf` | `0b1601f61bd7fe0697ee3228841bfa8b5f49ec70` | `1aba99421b31afe890182663270c28bc619f00d8746234da3dda054cd5bf09b0` |

## Local verification

The binary inspection checks the TTF scaler signature (`00 01 00 00`), family/subfamily names, OS/2 weight, variable axes, and Unicode `cmap`. Every bundled file contains U+0401, U+0451, U+0410–U+042F, and U+0430–U+044F. Droid Sans has no official italic file in the pinned AOSP directory, so its italic text is intentionally synthesized by WebView; every other selectable family has a real italic face.
