NOTICE
======
This repository is licensed under the MIT licence (see `LICENSE`). It also
bundles the third-party material recorded below, whose licence differs from the
project's own. Each section describes one inclusion: what is included, where it
came from, under which licence, and what was changed. Append a new
clearly-delimited section rather than editing an existing one.
================================================================================
GNU Unifont 16.0.01 — 16x16 bitmap CJK subset
================================================================================
Included file
src/render/text/cjk_bitmap_data.rs
Origin
GNU Unifont 16.0.01 — the **bitmap** (`.hex`) build, not the OTF.
Unifont is by Roman Czyborra, Paul Hardy, and contributors.
Project: https://unifoundry.com/unifont/index.html
Source: https://unifoundry.com/pub/unifont/unifont-16.0.01/font-builds/unifont-16.0.01.hex.gz
SHA-256 of the decompressed `.hex`:
3b9d881d534c4144cd9865a47a7667760e33a571a45794a5334c16a72cb8f839
The file is generated, never hand-edited. Regenerate with:
python3 tools/gen_cjk_bitmap.py --license=ofl-1.1
What it is
A **subset** of the Unifont 16x16 bitmap glyphs, reduced to the codepoint
ranges listed below and re-encoded as two Rust arrays (`CODEPOINTS`, `ROWS`).
The bitmap bits are Unifont's, copied verbatim; no glyph was redrawn or
re-rasterised, and no outline was autohinted. Glyphs that Unifont stores
8 px wide are left-aligned in a 16 px cell.
Codepoint ranges included
U+3000..=U+303F CJK Symbols and Punctuation 64 glyphs
U+3040..=U+30FF Hiragana and Katakana 192 glyphs
U+4E00..=U+5548 CJK Unified Ideographs (subset) 1865 glyphs
U+FF00..=U+FFEF Halfwidth and Fullwidth Forms 240 glyphs
------------------------------------------------------------------
Total 2361 glyphs (84996 bytes of array data: ROWS 75552 + CODEPOINTS 9444).
ASCII (U+0000..=U+007F) is deliberately excluded.
Licence
Unifont is dual-licensed by its copyright holders. Either of the following
applies:
(a) SIL Open Font License, Version 1.1
https://openfontlicense.org/
(b) GNU General Public License, Version 2.0 or later, with the GNU font
embedding exception
https://www.gnu.org/licenses/gpl-2.0.html
https://www.gnu.org/licenses/gpl-faq.html#FontException
Unifont's own licence file: https://unifoundry.com/LICENSE.txt
Reserved Font Name (OFL)
Unifont's licence states only that the fonts are "covered by the SIL Open Font
License version 1.1"; it names no Reserved Font Name, so OFL 1.1 §3 imposes no
naming restriction here. Independently of that, this subset is a "Modified
Version" (it retains only a portion of Unifont's glyphs and re-encodes them), and
nothing in the shipped tree presents itself as the original font: the file is
named `cjk_bitmap_data.rs` and the arrays are `CODEPOINTS` and `ROWS`. The name
"Unifont" appears in this NOTICE and in the generated file's header for
attribution only.
================================================================================
Open Sans — vector subset for `fonts-vector-latin`
================================================================================
Included files
src/render/text/font_assets/latin.rs (the provenance header and `include_bytes!`)
src/render/text/font_assets/latin.ttf (the subset itself)
Origin
Open Sans, by Steve Matteson and the Open Sans project (originally
commissioned by Google).
Project: https://fonts.google.com/specimen/Open+Sans
Source: https://github.com/google/fonts/blob/main/ofl/opensans/OpenSans%5Bwdth,wght%5D.ttf
SHA-256 of the upstream `.ttf`:
36643644f318a812aab2d2ed3bb98f8cf0872527f835fe9398d95fe6b9adb878
The files are generated, never hand-edited. Regenerate with:
python3 tools/gen_font_subset.py --face=latin --license=ofl-1.1
What it is
A **subset** of Open Sans, instantiated from the variable font at
`wdth=100, wght=400` and reduced to ASCII printable, the Latin-1 supplement
and the punctuation a label uses. No outline was redrawn, re-hinted or
modified; the glyph outlines and the layout tables (GSUB, GPOS — including
kerning) are Open Sans's own.
Licence
SIL Open Font License, Version 1.1
https://openfontlicense.org/
Reserved Font Name (OFL)
The upstream licence declares **no** Reserved Font Name: its copyright
statement is followed by no name specification, so OFL 1.1 §3 imposes no naming
restriction on this subset. The files are nonetheless named after this crate's
modules (`latin.rs` / `latin.ttf`) rather than after the upstream family, so
nothing in the shipped tree presents itself as the original font.
================================================================================
Noto Naskh Arabic — vector subset for `fonts-complex`
================================================================================
Included files
src/render/text/font_assets/arabic.rs (the provenance header and `include_bytes!`)
src/render/text/font_assets/arabic.ttf (the subset itself)
Origin
Noto Naskh Arabic, by the Noto project (Google).
Project: https://fonts.google.com/noto/specimen/Noto+Naskh+Arabic
Source: https://github.com/google/fonts/blob/main/ofl/notonaskharabic/NotoNaskhArabic%5Bwght%5D.ttf
SHA-256 of the upstream `.ttf`:
67b5a525a661b607971fbd3f96a81b89d3a768e74534fca84f18ac97e6fab72f
The files are generated, never hand-edited. Regenerate with:
python3 tools/gen_font_subset.py --face=arabic --license=ofl-1.1
What it is
A **subset** of Noto Naskh Arabic, instantiated at `wght=400` and reduced to
the Arabic block (letters, marks, digits), the six zero-width and directional
controls and ASCII. The contextual forms are **not** stored as data: they are
produced at shaping time from the retained `GSUB` joining features, which are
part of the subset. No outline was redrawn or re-hinted.
Licence
SIL Open Font License, Version 1.1
https://openfontlicense.org/
Reserved Font Name (OFL)
The upstream licence declares **no** Reserved Font Name: its copyright
statement is followed by no name specification, so OFL 1.1 §3 imposes no naming
restriction on this subset. The files are nonetheless named after this crate's
modules (`arabic.rs` / `arabic.ttf`) rather than after the upstream family, so
nothing in the shipped tree presents itself as the original font.
================================================================================
Noto Color Emoji — colour bitmap subset for `fonts-emoji-color`
================================================================================
Included files
src/render/text/font_assets/emoji.rs (the provenance header and `include_bytes!`)
src/render/text/font_assets/emoji.ttf (the subset itself)
Origin
Noto Color Emoji, by the Noto project (Google).
Project: https://github.com/googlefonts/noto-emoji
Source: https://raw.githubusercontent.com/googlefonts/noto-emoji/main/2D/fonts/NotoColorEmoji.ttf
SHA-256 of the upstream `.ttf`:
15671215ab769fdc7162a045d56fd7d7e477c51b04e6b3c761d914d8fdd6cc44
The files are generated, never hand-edited. Regenerate with:
python3 tools/gen_emoji_subset.py --license=ofl-1.1
What it is
A **subset** of Noto Color Emoji, reduced to the 317 codepoints listed in
`tools/emoji_subset_codepoints.txt`. Noto Color Emoji stores its glyphs as
**colour bitmaps**, not outlines: each glyph is a PNG held in the `CBDT`
table and indexed by `CBLC`. The subset retains those tables and the PNG
images **verbatim** — no image was redrawn, re-encoded, rescaled or
re-compressed, and no outline was synthesised. The generator runs fontTools'
subsetter with `recalc_timestamp=False`, so the retained tables are
byte-identical to upstream and the output is reproducible.
The codepoints were chosen by hand (faces, gestures, food, animals, symbols
and the 26 regional indicators), not by taking everything upstream: the full
face is 10,730,124 bytes and this subset is 1,602,492 bytes, which is what
makes it shippable. `--check` verifies the shipped bytes are exactly what the
generator produces from the pinned upstream digest.
Licence
SIL Open Font License, Version 1.1
https://openfontlicense.org/
Reserved Font Name (OFL)
Noto Color Emoji's licence declares **no** Reserved Font Name: its copyright
statement is followed by no name specification, so OFL 1.1 §3 imposes no naming
restriction on this subset. The files are nonetheless named after this crate's
modules (`emoji.rs` / `emoji.ttf`) rather than after the upstream family, and
the subset is a "Modified Version" (it retains only a portion of the upstream
glyphs), so nothing in the shipped tree presents itself as the original font.
The name "Noto Color Emoji" appears in this NOTICE and in the generated file's
header for attribution only.
================================================================================
Noto Sans SC — scalable CJK vector subset for `fonts-cjk`
================================================================================
Included files
src/render/text/font_assets/cjk.rs (the provenance header and `include_bytes!`)
src/render/text/font_assets/cjk.ttf (the subset itself)
Origin
Noto Sans SC, by the Noto project (Adobe and Google).
Project: https://github.com/notofonts/noto-cjk
Source: https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/SubsetOTF/SC/NotoSansSC-Regular.otf
SHA-256 of the upstream `.otf`:
faa6c9df652116dde789d351359f3d7e5d2285a2b2a1f04a2d7244df706d5ea9
The files are generated, never hand-edited. Regenerate with:
python3 tools/gen_font_subset.py --face=cjk --license=ofl-1.1
What it is
A **subset** of Noto Sans SC (Regular), reduced to the codepoints listed in
`tools/cjk_vector_codepoints.txt`: ASCII, CJK Symbols and Punctuation, Hiragana
and Katakana, Halfwidth and Fullwidth Forms, and the first 800 CJK Unified
Ideographs. No outline was redrawn, re-hinted or modified; the glyph outlines
and the layout tables (GSUB, GPOS) are Noto Sans SC's own. The upstream
`SubsetOTF` release is already a single weight, so there is no variable axis to
instantiate. The generator runs fontTools' subsetter with
`recalcTimestamp=False`, so the retained tables are byte-identical to upstream
and the output is reproducible.
This face is **distinct from** `src/render/text/cjk_bitmap_data.rs`
(`fonts-cjk-bitmap`). They are two answers to the same script and they are not
interchangeable:
fonts-cjk-bitmap 2361 glyphs, fixed 16x16 bitmap ~85 KB
fonts-cjk 2053 glyphs, outlines, any size ~353 KB
An outline is several times a 16x16 bitmap, so a vector subset at the bitmap's
own coverage weighs 581 KB — about 7x. The bitmap face is therefore what
`mini`/`embedded` use (data only, no shaping engine), and this face is for a
`desktop`/`tablet` host that wants Chinese antialiased at any pixel size.
`tools/gen_font_subset.py` enforces a 400,000-byte budget on this face so the
payload cannot creep unnoticed.
Licence
SIL Open Font License, Version 1.1
https://openfontlicense.org/
Reserved Font Name (OFL)
Noto Sans SC's licence declares **no** Reserved Font Name: its copyright
statement is followed by no name specification, so OFL 1.1 §3 imposes no naming
restriction on this subset. The files are nonetheless named after this crate's
modules (`cjk.rs` / `cjk.ttf`) rather than after the upstream family, and the
subset is a "Modified Version" (it retains only a portion of the upstream
glyphs), so nothing in the shipped tree presents itself as the original font.
The name "Noto Sans SC" appears in this NOTICE and in the generated file's
header for attribution only.