diff options
| author | Ahmed Abdelhalim <[email protected]> | 2026-01-18 19:16:17 +0100 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2026-01-18 19:16:17 +0100 |
| commit | b4b5b97a41cd6f87b994d36b0caa16e4c2195373 (patch) | |
| tree | 94d0a094a922add949863519277fbb27601b0663 | |
| parent | 4f10dbe8140d235b75159146231acd9c79615a66 (diff) | |
Update the fonts configurations for arch and debian
| -rw-r--r-- | roles/fonts/defaults/main.yml | 2 | ||||
| -rw-r--r-- | roles/fonts/meta/argument_specs.yml | 7 | ||||
| -rw-r--r-- | roles/fonts/tasks/main.yml | 44 | ||||
| -rw-r--r-- | roles/fonts/templates/local.conf.j2 | 68 | ||||
| -rw-r--r-- | roles/fonts/vars/archlinux.yml | 9 | ||||
| -rw-r--r-- | roles/fonts/vars/debian.yml | 8 |
6 files changed, 124 insertions, 14 deletions
diff --git a/roles/fonts/defaults/main.yml b/roles/fonts/defaults/main.yml deleted file mode 100644 index fe3f29fa..00000000 --- a/roles/fonts/defaults/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -fonts_extra: [] diff --git a/roles/fonts/meta/argument_specs.yml b/roles/fonts/meta/argument_specs.yml index 81440031..d44dc8c8 100644 --- a/roles/fonts/meta/argument_specs.yml +++ b/roles/fonts/meta/argument_specs.yml @@ -3,9 +3,4 @@ argument_specs: main: short_description: "Install fonts on Linux distributions" description: "Install fonts on Linux distributions" - options: - fonts_extra: - type: "list" - description: "Extra font packages to install in addition to default fonts" - elements: "str" - default: [] + options: {} diff --git a/roles/fonts/tasks/main.yml b/roles/fonts/tasks/main.yml index f2f0f72c..74d3480e 100644 --- a/roles/fonts/tasks/main.yml +++ b/roles/fonts/tasks/main.yml @@ -2,9 +2,51 @@ - name: "Include OS-specific variables" ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" +- name: "Ensure fontconfig is installed" + become: true + ansible.builtin.package: + name: "fontconfig" + state: "present" + - name: "Ensure fonts are installed" become: true ansible.builtin.package: name: "{{ item }}" state: "present" - loop: "{{ fonts_default + fonts_extra }}" + loop: "{{ fonts }}" + +- name: "Ensure fontconfig global directory exists" + become: true + ansible.builtin.file: + path: "{{ item }}" + state: "directory" + mode: "0755" + loop: + - "/etc/fonts" + - "/etc/fonts/conf.d" + +- name: "Add global font configurations" + become: true + ansible.builtin.template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + mode: "0644" + loop: + - src: "local.conf.j2" + dest: "/etc/fonts/local.conf" + +- name: "Configure fonts presets" + become: true + ansible.builtin.file: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + state: "link" + loop: + - src: "/usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf" + dest: "/etc/fonts/conf.d/10-sub-pixel-rgb.conf" + - src: "/usr/share/fontconfig/conf.avail/10-hinting-slight.conf" + dest: "/etc/fonts/conf.d/10-hinting-slight.conf" + - src: "/usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf" + dest: "/etc/fonts/conf.d/11-lcdfilter-default.conf" + - src: "/usr/share/fontconfig/conf.avail/70-no-bitmaps-except-emoji.conf" + dest: "/etc/fonts/conf.d/70-no-bitmaps-except-emoji.conf" diff --git a/roles/fonts/templates/local.conf.j2 b/roles/fonts/templates/local.conf.j2 new file mode 100644 index 00000000..33574afe --- /dev/null +++ b/roles/fonts/templates/local.conf.j2 @@ -0,0 +1,68 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> +<fontconfig> + <!-- Apply text rasterization, hinting, and anti-aliasing --> + <match target="font"> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="rgba" mode="assign"> + <const>rgb</const> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="lcdfilter" mode="assign"> + <const>lcddefault</const> + </edit> + </match> + <!-- Configure default fonts & fallback fonts --> + <!-- Replace fonts with preferred fonts --> + <!-- Noto Emoji allows for emojis to render in all apps including the terminal, remove if not needed --> + <alias> + <family>serif</family> + <prefer> + <family>Noto Serif</family> + <family>FreeSerif</family> + <family>Noto Emoji</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>Noto Sans</family> + <family>FreeSans</family> + <family>Noto Emoji</family> + </prefer> + </alias> + <alias> + <family>sans</family> + <prefer> + <family>Noto Sans</family> + <family>FreeSans</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>JetBrainsMono</family> + <family>Noto Mono</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + </prefer> + </alias> + <alias> + <family>mono</family> + <prefer> + <family>JetBrainsMono</family> + <family>Noto Mono</family> + <family>Noto Color Emoji</family> + <family>Noto Emoji</family> + </prefer> + </alias> +</fontconfig> diff --git a/roles/fonts/vars/archlinux.yml b/roles/fonts/vars/archlinux.yml index cc9342cb..5ee5cedf 100644 --- a/roles/fonts/vars/archlinux.yml +++ b/roles/fonts/vars/archlinux.yml @@ -1,5 +1,8 @@ --- -fonts_default: +fonts: - "ttf-jetbrains-mono-nerd" - - "ttf-meslo-nerd" - - "ttf-dejavu-nerd" + - "gnu-free-fonts" + - "noto-fonts" + - "noto-fonts-cjk" + - "noto-fonts-emoji" + - "noto-fonts-extra" diff --git a/roles/fonts/vars/debian.yml b/roles/fonts/vars/debian.yml index 3e02137c..d0568a1e 100644 --- a/roles/fonts/vars/debian.yml +++ b/roles/fonts/vars/debian.yml @@ -1,4 +1,8 @@ --- -fonts_default: +fonts: - "fonts-jetbrains-mono" - - "fonts-dejavu" + - "gnu-free-fonts" + - "noto-fonts" + - "noto-fonts-cjk" + - "noto-fonts-emoji" + - "noto-fonts-extra" |
