Version 2.1.0 of package Fontaine has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Fontaine describes itself as: ===================================== Set font configurations using presets ===================================== More at https://elpa.gnu.org/packages/fontaine.html ## Summary: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FONTAINE.EL: SET FONT CONFIGURATIONS USING PRESETS Protesilaos Stavrou i...@protesilaos.com ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ This manual, written by Protesilaos Stavrou, describes the customization options for `fontaine' (or `fontaine.el'), and provides every other piece of information pertinent to it. The documentation furnished herein corresponds to stable version 2.1.0, released on 2024-09-02. Any reference to a newer feature which does not yet form part of the latest tagged commit, is explicitly marked as such. Current development target is 2.2.0-dev. ## Recent NEWS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━ CHANGE LOG OF FONTAINE.EL ━━━━━━━━━━━━━━━━━━━━━━━━━━━ This document contains the release notes for each tagged commit on the project's main git repository: <https://github.com/protesilaos/fontaine>. The newest release is at the top. For further details, please consult the manual: <https://protesilaos.com/emacs/fontaine>. Table of Contents ───────────────── Version 2.1.0 on 2024-09-02 Version 2.1.0 on 2024-09-02 ═══════════════════════════ Fontaine is in a stable state and I find it very useful every day. This release includes some small quality-of-life improvements. Use the `fontaine-toggle-preset' command ──────────────────────────────────────── It will switch between the last preset and the one you are currently using. If it cannot find an older preset, it will prompt for one using minibuffer completion. Presets are set with the `fontaine-set-preset' command, either interactively or from Lisp (e.g. in the `init.el' file). Internally, `fontaine-toggle-preset' takes care to only switch between existing presets, so old preset names (such as from the time of some experiment) will be skipped if they are not part of the current value of `fontaine-presets'. All entries in the `fontaine-presets' accept and optional width attribute ───────────────────────────────────────────────────────────────────────── This is for users who need to set an explicit width value to the underlying face they are targeting. This, of course, depends on the capabilities of the font family that is used. Those that do not support varying widths will have no effect. The width attribute for all existing entries is composed by the name of the face plus the `-width' suffix, such as `:fixed-pitch-width'. Check the Fontaine manual for a complete example. Thanks to Adam Porter for making the suggestion to cover the width attribute in issue 6: <https://github.com/protesilaos/fontaine/issues/6>. The `fontaine-presets' can look very long if all values are set, as we cover all typography-related faces and all their attributes. But do not let this intimidate you. Your configuration can be short and still highly usable. For example: ┌──── │ (setq fontaine-presets │ '((coding ; get the fallback values and override the `:default-height' │ :default-height 120) │ (reading ; change more stuff from the fallback values │ :default-height 140 │ :default-family "Fira Sans" │ :fixed-pitch-family "Fira Mono" │ :variable-pitch-family "Merriweather") │ (presentation │ :inherit reading ; copy the attributes of `reading', then override the `:default-height' │ :default-height 220) │ (t ; everything falls back to this │ :default-family "Iosevka Comfy" │ :default-height 100 │ :fixed-pitch-family "Iosevka Comfy Motion" │ :variable-pitch-family "Iosevka Comfy Duo"))) └──── With these, you can switch between `coding', `reading', and `presentation' to match your evolving workflow requirements. These allow you to switch between not only different font families, but also font combinations to match a certain style, with higher or lower heights, and so on. The `fontaine-set-preset' prompt only uses relevant default presets ─────────────────────────────────────────────────────────────────── When you invoke the command `fontaine-set-preset' it tries to find a previous preset to set it as the default minibuffer value. This means that if you press `RET' without selecting anything, the default will be used (check with your minibuffer package in case this does not happen, or contact me if you need help). Before, the default value was the last selected preset. This could be out-of-date though if the `fontaine-presets' were rewritten in the meantime. Now we take care to only produce a default value that is … …