diff options
Diffstat (limited to 'desktop/modules/fonts/README.md')
| -rw-r--r-- | desktop/modules/fonts/README.md | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/desktop/modules/fonts/README.md b/desktop/modules/fonts/README.md new file mode 100644 index 0000000..b887060 --- /dev/null +++ b/desktop/modules/fonts/README.md @@ -0,0 +1,49 @@ +# fonts + +One pixel size for the desktop, in the settings window under Appearance > +Fonts, and an override wherever a system needs its own. Saved as +`~/.config/keystone/fonts.json`: + + { "base": 16, "override": { "qt": 18.67, "rofi:kf-launcher-entry": 22 } } + +Everything is stored in px. At scale 1 Wayland's logical DPI is 96 +(`gtk-xft-dpi` reads 98304, 96 * 1024), so a point is 4/3 of a pixel and +16 px is 12 pt. Each system is written in its own unit: + +| System | Written to | Unit | Seen | +| --- | --- | --- | --- | +| Quickshell | `Theme.fontSize` reads `fonts.json` itself | px | at once | +| Qt | `qt6ct.conf`, `qt5ct.conf`, `general=` and `fixed=` size field | pt | when an app starts | +| GTK | gtk-3.0 and gtk-4.0 `settings.ini`, `.gtkrc-2.0`, gsettings `font-name` | pt | at once for GTK 3 and 4 | +| kitty | `~/.config/keystone/kitty-fonts.conf`, included last by `kitty.conf`; SIGUSR1 reloads | pt | at once | +| Hyprland groupbar | `group:groupbar:font_size` line in `keystone.lua` | px | at once | +| rofi | `~/.config/keystone/rofi-fonts.rasi`, imported by udt's `common.rasi` | pt | next open | +| hyprlock | `~/.config/keystone/hyprlock-fonts.conf`, sourced by `hyprlock.conf` | pt | next lock | + +Qt and GTK files are edited in place, size only; the family stays what it +is. unified-desktop-theme's templates no longer carry those keys, so a +re-install does not undo the page. Hyprland's text is pixels +(`pango_font_description_set_absolute_size`), hyprlock's points +(`pango_font_description_set_size`). + +rofi and hyprlock are sections: sets of designed sizes that scale together. +Every rofi font in the udt files is `var(kf-<file>-<selector>, "Family N")`, +and every hyprlock label is `font_size = $kf_<label>` over an inline `$kf_... += N`. The designed value is the fallback, used when the generated file is +absent, and it is also where the page reads the design from, so a new entry +in either file shows up on the page by itself. A section's size is its body +text, the smallest designed entry; every entry keeps its ratio to that unless +given its own size. + +With no `fonts.json`, the page starts from what the files say: base 16 px, +and an override for every system at its current size, so the first save +changes nothing. + +Not handled: font families; the hard-coded `pixelSize` values in the shells +(21 of them), which do not follow `Theme.fontSize`; and a `keystone.lua` +save from this page and the Options page at the same moment, which can drop +one line. + +## Check + + node desktop/modules/fonts/test_fonts.js |
