Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
*.mp4 binary
*.wav binary
*.db binary
*.ttf binary
*.otf binary
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ collections/
<Book Title>.htm # the book DOM (validated by CI)
meta.json, appearance.json, publish-settings.json, images…
screenshots/*-reference.png # committed baselines, when the owning test uses them
fonts/
<Font>/*.ttf + license file # fonts a test installs before it runs; see fonts/README.md
manifest.json # required entry per collection: purpose, usedBy, automation
scripts/ # validation run by CI and by `pnpm validate`
```
Expand Down
Binary file added fonts/Alef/Alef-Bold.ttf
Binary file not shown.
Binary file added fonts/Alef/Alef-Regular.ttf
Binary file not shown.
94 changes: 94 additions & 0 deletions fonts/Alef/OFL.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
Copyright (c) 2012, HaGilda & Mushon Zer-Aviv (<http://alef.hagilda.com|alef@hagilda.com>),
with Reserved Font Name Alef.

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


-----------------------------------------------------------
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.
7 changes: 7 additions & 0 deletions fonts/Luciole/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Ces fontes sont distribuées gratuitement sous Licence publique Creative Commons Attribution 4.0 International :
https://creativecommons.org/licenses/by/4.0/legalcode.fr

These fonts are freely available under Creative Commons Attribution 4.0 International Public License:
https://creativecommons.org/licenses/by/4.0/legalcode

Luciole & Laurent Bourcellier & Jonathan Perez
Binary file added fonts/Luciole/Luciole-Regular.ttf
Binary file not shown.
61 changes: 61 additions & 0 deletions fonts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# fonts/

Fonts that a test installs on the machine before it runs, because the test is about how Bloom
treats a font of that kind and a clean Windows runner has none.

Bloom reads each installed font's internal metadata (the name table's copyright, license and
license URL, and the OS/2 `fsType`) and sorts it into one of four verdicts, shown in the font
chooser as a mark beside the font (`src/BloomExe/FontProcessing/FontMetadata.cs` in BloomDesktop):

| Verdict | Mark | What Bloom found |
| ------------ | ---------------- | ------------------------------------------------------------------ |
| `ok` | check | a license it recognises as free (OFL, GPL, Apache, ...) |
| `unsuitable` | exclamation mark | a Microsoft font, "All rights reserved", "may not copy", ... |
| `unknown` | question mark | nothing it can read either way |
| `invalid` | exclamation mark | a file format Bloom cannot embed |

A GitHub Actions `windows-latest` runner has only Microsoft fonts and a few Bloom ships, so it
has no `unsuitable` font that is not Microsoft's, and no `unknown` font at all. The two fonts
here fill those gaps. Both are genuinely free to redistribute; they land in those verdicts
only because their internal metadata does not say so in a form Bloom's heuristics recognise.

## The fonts

### Alef (verdict: `unsuitable`, "All rights reserved")

- Files: `Alef/Alef-Regular.ttf`, `Alef/Alef-Bold.ttf`, version 1.002.
- License: SIL Open Font License 1.1 (`Alef/OFL.txt`), copyright HaGilda & Mushon Zer-Aviv.
- Source: Google Fonts, https://github.com/google/fonts/tree/main/ofl/alef (the files are
byte-for-byte that repository's, fetched 2026-09-03).
- Why it gets this verdict: the font's copyright string is "Copyright (c) 2012 by Hagilda. All
rights reserved." and its license fields are empty, so Bloom's "all rights reserved and no
license" rule fires before anything else. The font is OFL regardless; the metadata is just
incomplete.

### Luciole (verdict: `unknown`)

- Files: `Luciole/Luciole-Regular.ttf`, version 1.001.
- License: Creative Commons Attribution 4.0 International (`Luciole/LICENSE.txt`), by Laurent
Bourcellier & Jonathan Perez, 2019. CC BY asks for attribution: this README and the LICENSE
file beside the font are it.
- Source: https://www.luciole-vision.com/luciole-en.html, the `Luciole.zip` download (fetched
2026-09-03; the file is byte-for-byte the one in that zip).
- Why it gets this verdict: the license field says, in French and English, that the font is
free under CC BY 4.0, and the license URL points at creativecommons.org, but Bloom's rules
look for "Creative Commons" only in the copyright string, so nothing matches and it gives up
with "no reliable information".

## Who uses them

`src/BloomE2E/tests/font-chooser.spec.ts` in BloomDesktop (Notion test case 358), which needs
one installed font of each verdict. The nightly workflow installs everything under this folder
per user before the e2e suite (`src/BloomE2E/scripts/install-test-fonts.ps1`); a developer whose
machine lacks a font of some kind can run the same script.

## Adding a font

Keep only what a test needs (one weight is usually enough), put the upstream license text beside
the files, and record here: the verdict Bloom gives and which metadata produces it, the real
license, and the exact source and date. Everything in this repo is public, so a font must be
one we may redistribute. Check the verdict before you commit: install the font, open Bloom's
Format dialog, and hover the mark, or read `fonts/metadata` from Bloom's API.
17 changes: 17 additions & 0 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,22 @@
],
"automation": "automated"
}
},
"fonts": {
"description": "Fonts a test installs before it runs; fonts/README.md has each font's license, source, and the verdict Bloom gives it.",
"Alef": {
"purpose": "A genuinely free (OFL) font whose metadata says only 'All rights reserved', so Bloom marks it unsuitable: the non-Microsoft exclamation-mark case for the font chooser test.",
"license": "SIL Open Font License 1.1 (fonts/Alef/OFL.txt)",
"source": "https://github.com/google/fonts/tree/main/ofl/alef",
"bloomVerdict": "unsuitable",
"usedBy": ["BloomDesktop src/BloomE2E tests/font-chooser.spec.ts"]
},
"Luciole": {
"purpose": "A genuinely free (CC BY 4.0) font whose license metadata Bloom's heuristics cannot read, so Bloom marks it unknown: the question-mark case for the font chooser test.",
"license": "Creative Commons Attribution 4.0 International (fonts/Luciole/LICENSE.txt)",
"source": "https://www.luciole-vision.com/luciole-en.html",
"bloomVerdict": "unknown",
"usedBy": ["BloomDesktop src/BloomE2E tests/font-chooser.spec.ts"]
}
}
}
Loading