Every vendored font ships its own licence

Two of the five shipped without one. bebas-neue/LICENSE was 24 lines and
poppins/LICENSE 29 -- our own notes files named LICENSE, pointing at
openfontlicense.org instead of carrying the text. The OFL requires the licence
to travel WITH the font, and these fonts go out in the repo we intend to give
away.

Both now carry their FAMILY'S OWN upstream OFL, fetched verbatim from
google/fonts, which is what brings the real copyright line with it -- Dharma
Type for Bebas Neue, the Poppins Project Authors for Poppins. No licence text
was authored here. Source URL and sha256 are recorded. figtree keeps its OFL
and loses only the six lines of ours that sat above it.

Our prose moved to documentation/vendored-fonts.md, OUTSIDE the served tree,
and that placement is the whole lesson. My first attempt put a NOTES.md beside
each LICENSE, which check:public-hygiene rejected as "documentation in a served
folder" -- three new hard findings, plus a fourth for an internal folder name I
had relocated with the text. The old bebas-neue LICENSE had said exactly this
in its own words, "prose does not belong in a public served folder"; I quoted
that line and then did it anyway. The licence travels with the font; the
explanation travels with the repo.

Whole shipped tree, measured before and after rather than sampled:
role nouns 6 -> 0, hygiene warnings 18 -> 14, findings 1 -> 1 (the pre-existing
assets/ contract one, not mine).
This commit is contained in:
Doxa Maps 2026-09-28 01:23:01 +00:00
parent 488ac03bef
commit 5629981dde
4 changed files with 274 additions and 54 deletions

View file

@ -1,24 +1,93 @@
Bebas Neue — SIL Open Font License, Version 1.1
Designer: Ryoichi Tsunekawa (Dharma Type). Distributed via Google Fonts.
Full text: https://openfontlicense.org/ (OFL-1.1)
Copyright © 2010 by Dharma Type.
WHY THIS FILE IS IN THIS REPO
DX-life's /regions pages set --font-family-heading to 'Bebas Neue'. Their own site does not
ship the file either — @nuxt/fonts downloads it at build and self-hosts it, which is why their
computed font-family reads "Bebas Neue", "Bebas Neue Fallback: ...". We cannot @font-face from
their origin: their font file is served without CORS headers, so a cross-origin face silently
fails and every heading fell back to a condensed system stack. That substitution was the ONLY
remaining difference between our regions dashboard and theirs (7 computed properties, all of
them this one font and its knock-on sizes).
So the font is vendored here, from Google Fonts, under the OFL that permits redistribution —
self-hosted, never a CDN, the same rule public/assets/vendor/tabulator/ follows.
Subsets and unicode-ranges are Google's own (css2 API, v16), reproduced verbatim in the
@font-face declared by library/composables/useDocumentFont.js.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
NOTE ON THIS FILENAME — it is deliberately extensionless.
check:public-hygiene refuses *.md / *.markdown / *.txt anywhere in the served tree ("no docs in a
served folder", Driver rule 2026-09-16), and it is right to: prose does not belong in a public
mirror. But the OFL requires this licence to accompany the font files wherever they are
redistributed, and the font files DO ship — they are fetched by the @font-face at runtime. So the
licence travels with them under the conventional extensionless name, which satisfies the rule
without weakening it. Do not rename this to LICENSE.txt.
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -1,10 +1,3 @@
Figtree — SIL Open Font License, Version 1.1
Designer: Erik D. Kennedy. Distributed via Google Fonts.
Vendored as the free stand-in for Brandon Grotesque (commercial), by Driver decision
2026-09-24. Chosen by MEASUREMENT, not by name: at 500/19.5312px Figtree renders
'FULL PROFILE' at 126px against Brandon's 128px on live doxa.life — the closest of 19
libre grotesques tested. See _probe-glyph-width.mjs.
Copyright 2022 The Figtree Project Authors (https://github.com/erikdkennedy/figtree)
This Font Software is licensed under the SIL Open Font License, Version 1.1.

View file

@ -1,29 +1,93 @@
Poppins — SIL Open Font License, Version 1.1
Designers: Indian Type Foundry, Jonny Pinhorn. Distributed via Google Fonts.
Full text: https://openfontlicense.org/ (OFL-1.1)
Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
WHY THIS FILE IS IN THIS REPO
Poppins is DX-life's --font-family-base: the body face of every line of text on the pages the
regions plugin clones. Their own site self-hosts it via @nuxt/fonts; we could not use theirs, so
it is vendored here from Google Fonts under the OFL, which permits redistribution.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
WHY IT WAS NEEDED — and why no CSS check caught it.
A computed-style diff of our region dashboard against live doxa.life reported 68 of 68 properties
IDENTICAL while our body text was rendering in a system fallback, because BOTH sides merely NAME
"Poppins" first in font-family and a first-family comparison therefore matched. The difference only
became visible against a glyph-width oracle: the same string at the same size measured 334.58px
here against 317px on their page — 5.5% wider, i.e. a different face.
document.fonts.check() is NOT a usable oracle for this: it returned true for families never
vendored (Oswald, Brandon Grotesque) and false for Bebas Neue on DX-life's own page.
See _qa-cycle/02-builder-cycle/_probe-glyph-width.mjs.
WHAT IS HERE, AND WHY ONLY THIS
Weights 400/500/600/700 only — the four the regions surface actually asks for (measured across
their _globals, _cards, _buttons and _filters SCSS: medium x10, regular x4, bold x2, plus the
600 in the prayer-coverage legend). Subsets latin + latin-ext only. 44 KB in total, with Google's
own unicode-ranges reproduced in the @font-face so the subset split behaves as it does on their
site. Extra weights and scripts are deliberately NOT vendored — bloat is a repo rule here.
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
FILENAME: extensionless on purpose. check:public-hygiene refuses *.txt in a served folder and is
right to, while the OFL requires this licence to accompany redistributed font files. Do not
rename this to LICENSE.txt.
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -0,0 +1,94 @@
# Vendored fonts — licences and why each one is here
The fonts ship in `data/fonts/<family>/`, which `bun run tree` stages into the served tree at
`dx-maps/assets/fonts/`. Each family's `LICENSE` is its OWN upstream OFL text, verbatim, carrying
that family's real copyright line. Nothing in this file is part of any licence.
★ THESE NOTES LIVE HERE, NOT BESIDE THE FONTS, AND THAT IS THE POINT. check:public-hygiene fails on
`documentation in a served folder`: a NOTES.md next to each LICENSE is prose a reader of the drop-in
tree should not be served. The old bebas-neue LICENSE said so in its own text -- "prose does not
belong in a public served folder" -- and I put three NOTES.md files there anyway before the gate
caught it. The licence travels with the font; the explanation travels with the repo.
## bebas-neue
| | |
|---|---|
| Licence source | `https://raw.githubusercontent.com/google/fonts/main/ofl/bebasneue/OFL.txt` |
| sha256 | `72082f6cb4d04be2ecf7cc7d9e1e7d73787f0af8a5a278a47cade70c16b78341` |
| Fetched | 2026-09-28 |
```
Bebas Neue — SIL Open Font License, Version 1.1
Designer: Ryoichi Tsunekawa (Dharma Type). Distributed via Google Fonts.
Full text: https://openfontlicense.org/ (OFL-1.1)
WHY THIS FILE IS IN THIS REPO
DX-life's /regions pages set --font-family-heading to 'Bebas Neue'. Their own site does not
ship the file either — @nuxt/fonts downloads it at build and self-hosts it, which is why their
computed font-family reads "Bebas Neue", "Bebas Neue Fallback: ...". We cannot @font-face from
their origin: their font file is served without CORS headers, so a cross-origin face silently
fails and every heading fell back to a condensed system stack. That substitution was the ONLY
remaining difference between our regions dashboard and theirs (7 computed properties, all of
them this one font and its knock-on sizes).
So the font is vendored here, from Google Fonts, under the OFL that permits redistribution —
self-hosted, never a CDN, the same rule public/assets/vendor/tabulator/ follows.
Subsets and unicode-ranges are Google's own (css2 API, v16), reproduced verbatim in the
@font-face declared by library/composables/useDocumentFont.js.
NOTE ON THIS FILENAME — it is deliberately extensionless.
check:public-hygiene refuses *.md / *.markdown / *.txt anywhere in the served tree ("no docs in a
served folder", product rule 2026-09-16), and it is right to: prose does not belong in a public
mirror. But the OFL requires this licence to accompany the font files wherever they are
redistributed, and the font files DO ship — they are fetched by the @font-face at runtime. So the
licence travels with them under the conventional extensionless name, which satisfies the rule
without weakening it. Do not rename this to LICENSE.txt.
```
## poppins
| | |
|---|---|
| Licence source | `https://raw.githubusercontent.com/google/fonts/main/ofl/poppins/OFL.txt` |
| sha256 | `6be04893d770899a015649c7aa3b582f871b272f8747a92b78b17c3e5c8b2573` |
| Fetched | 2026-09-28 |
```
Poppins — SIL Open Font License, Version 1.1
Designers: Indian Type Foundry, Jonny Pinhorn. Distributed via Google Fonts.
Full text: https://openfontlicense.org/ (OFL-1.1)
WHY THIS FILE IS IN THIS REPO
Poppins is DX-life's --font-family-base: the body face of every line of text on the pages the
regions plugin clones. Their own site self-hosts it via @nuxt/fonts; we could not use theirs, so
it is vendored here from Google Fonts under the OFL, which permits redistribution.
WHY IT WAS NEEDED — and why no CSS check caught it.
A computed-style diff of our region dashboard against live doxa.life reported 68 of 68 properties
IDENTICAL while our body text was rendering in a system fallback, because BOTH sides merely NAME
"Poppins" first in font-family and a first-family comparison therefore matched. The difference only
became visible against a glyph-width oracle: the same string at the same size measured 334.58px
here against 317px on their page — 5.5% wider, i.e. a different face.
document.fonts.check() is NOT a usable oracle for this: it returned true for families never
vendored (Oswald, Brandon Grotesque) and false for Bebas Neue on DX-life's own page.
See the builder-cycle probes: _probe-glyph-width.mjs.
WHAT IS HERE, AND WHY ONLY THIS
Weights 400/500/600/700 only — the four the regions surface actually asks for (measured across
their _globals, _cards, _buttons and _filters SCSS: medium x10, regular x4, bold x2, plus the
600 in the prayer-coverage legend). Subsets latin + latin-ext only. 44 KB in total, with Google's
own unicode-ranges reproduced in the @font-face so the subset split behaves as it does on their
site. Extra weights and scripts are deliberately NOT vendored — bloat is a repo rule here.
FILENAME: extensionless on purpose. check:public-hygiene refuses *.txt in a served folder and is
right to, while the OFL requires this licence to accompany redistributed font files. Do not
rename this to LICENSE.txt.
```
## figtree
Its LICENSE is the family's own OFL text, left intact (our prose was stripped from the top).
```
Figtree — SIL Open Font License, Version 1.1
Designer: Erik D. Kennedy. Distributed via Google Fonts.
Vendored as the free stand-in for Brandon Grotesque (commercial), by product decision
2026-09-24. Chosen by MEASUREMENT, not by name: at 500/19.5312px Figtree renders
'FULL PROFILE' at 126px against Brandon's 128px on live doxa.life — the closest of 19
libre grotesques tested. See _probe-glyph-width.mjs.
```