fonts: swap DuckSans → Fira Code (Fedora fira-code-fonts, SIL OFL 1.1)

This commit is contained in:
veilor 2026-04-30 03:57:17 +01:00
parent 50b9285d02
commit f1b44bc218
5 changed files with 33 additions and 52 deletions

View file

@ -15,8 +15,8 @@ install beyond the LUKS passphrase. Boot, set admin password, work.
drop zone, kernel sysctl lockdown, NTS-authenticated NTP, DNS-over-TLS. drop zone, kernel sysctl lockdown, NTS-authenticated NTP, DNS-over-TLS.
- **3-mode power management**`veilor-power save | mid | perf`, with - **3-mode power management**`veilor-power save | mid | perf`, with
AC/battery auto-switching via udev. Backed by tuned profiles. AC/battery auto-switching via udev. Backed by tuned profiles.
- **DuckSans system font** — variable font, single binary, low cache - **Fira Code system font** — programming ligatures, monospace
footprint. consistency across UI + terminal. (DuckSans planned for v0.3.)
- **Pure-black KDE color scheme**`veilor-black` theme system-wide. - **Pure-black KDE color scheme**`veilor-black` theme system-wide.
- **LUKS2 + Secure Boot** — argon2id, aes-xts, btrfs subvolumes, zram swap - **LUKS2 + Secure Boot** — argon2id, aes-xts, btrfs subvolumes, zram swap
(no disk swap, no cold-boot leak). (no disk swap, no cold-boot leak).
@ -45,5 +45,5 @@ hardware.
## License ## License
MIT — see [LICENSE](LICENSE). DuckSans font ships under its own license; see MIT — see [LICENSE](LICENSE). Fira Code ships from Fedora's
`assets/fonts/ducksans/README.md`. `fira-code-fonts` package under SIL OFL 1.1.

View file

@ -1,40 +1,15 @@
# DuckSans # DuckSans (deferred to v0.3)
DuckSans is a variable font commissioned by DuckDuckGo from Fontwerk veilor-os v0.1v0.2 ship **Fira Code** as system font (SIL OFL 1.1,
(designer: Christoph Koeberlin, based on the Pangea typeface, 2026). shipped via Fedora `fira-code-fonts` package — no license friction).
## Why this font DuckSans (Fontwerk for DuckDuckGo, Koeberlin 2026) was the original
target font. License terms TBD — likely Fontwerk commercial. Holding
off until license verified and `.ttf` either:
- **Variable font** — single binary covers full weight + width axis. 1. Confirmed redistributable → vendor here
Smaller font cache, less I/O, fewer files for fontconfig to scan. 2. Forbids redistribution → kickstart fetches from authenticated
- **Designed for text-heavy UIs** — high readability, good hinting. source at build time
- **Recognizable but unbranded look** — distinctive without being kitsch.
## Vendor instructions Until then this directory is empty. fontconfig falls through to
Fira Code via `/etc/fonts/conf.d/55-veilor-firacode.conf`.
Drop the font files here:
```
assets/fonts/ducksans/DuckSans-VF.ttf
```
(plus optional italic axis if shipped separately)
The build pipeline copies this directory to
`/usr/share/fonts/ducksans/` in the installed system and runs
`fc-cache -f`.
## License
DuckSans license terms TBD (Fontwerk commercial license vs SIL OFL).
**Do not commit the .ttf to a public repo until license is verified.**
If license forbids redistribution, the kickstart `%post` should fetch
the font from an authenticated source at build time. See
`build/build-iso.sh` for the pull point.
## Fallback
If DuckSans is not present, fontconfig falls through to the system
default sans-serif. veilor-os will still install and run; the system
font will just not be DuckSans.

View file

@ -3,11 +3,11 @@ ColorScheme=veilor-black
Name=veilor black Name=veilor black
AccentColor=104,107,111 AccentColor=104,107,111
LastUsedCustomAccentColor=104,107,111 LastUsedCustomAccentColor=104,107,111
font=DuckSans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 font=Fira Code,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
fixed=DuckSans Mono,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 fixed=Fira Code,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
menuFont=DuckSans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 menuFont=Fira Code,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
smallestReadableFont=DuckSans,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 smallestReadableFont=Fira Code,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
toolBarFont=DuckSans,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 toolBarFont=Fira Code,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
[Icons] [Icons]
Theme=breeze-dark Theme=breeze-dark

View file

@ -75,6 +75,7 @@ NetworkManager-wifi
# fonts # fonts
fontconfig fontconfig
freetype freetype
fira-code-fonts
# remove fluff # remove fluff
-cups -cups

View file

@ -22,25 +22,30 @@ install -d -m 0755 /etc/xdg/kdedefaults
install -m 0644 "$REPO/assets/kde/veilor-default.kdeglobals" /etc/xdg/kdedefaults/kdeglobals install -m 0644 "$REPO/assets/kde/veilor-default.kdeglobals" /etc/xdg/kdedefaults/kdeglobals
ok "kdedefaults written" ok "kdedefaults written"
# ── DuckSans fontconfig default ── # ── Fira Code fontconfig default (monospace + UI) ──
info "Setting DuckSans as default sans-serif" info "Setting Fira Code as default font"
rpm -q fira-code-fonts &>/dev/null || dnf install -y fira-code-fonts
install -d -m 0755 /etc/fonts/conf.d install -d -m 0755 /etc/fonts/conf.d
cat > /etc/fonts/conf.d/55-veilor-ducksans.conf << 'EOF' cat > /etc/fonts/conf.d/55-veilor-firacode.conf << 'EOF'
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig> <fontconfig>
<alias>
<family>monospace</family>
<prefer><family>Fira Code</family></prefer>
</alias>
<alias> <alias>
<family>sans-serif</family> <family>sans-serif</family>
<prefer><family>DuckSans</family></prefer> <prefer><family>Fira Code</family></prefer>
</alias> </alias>
<alias> <alias>
<family>system-ui</family> <family>system-ui</family>
<prefer><family>DuckSans</family></prefer> <prefer><family>Fira Code</family></prefer>
</alias> </alias>
</fontconfig> </fontconfig>
EOF EOF
fc-cache -f /usr/share/fonts/ducksans 2>/dev/null || true fc-cache -f 2>/dev/null || true
ok "fontconfig: DuckSans = default sans-serif" ok "fontconfig: Fira Code = default font"
# ── /etc/os-release branding ── # ── /etc/os-release branding ──
info "Branding /etc/os-release" info "Branding /etc/os-release"