From de9dbee2a3ce3ee94df9a8a566935ecc5310255f Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Wed, 1 Apr 2026 18:26:57 +0200 Subject: Refactor google fonts download using font-family names --- roles/font/tasks/main.yml | 36 +++++++++++++++++++++++++++--------- roles/font/vars/archlinux.yml | 11 ++--------- roles/font/vars/debian.yml | 2 +- 3 files changed, 30 insertions(+), 19 deletions(-) (limited to 'roles/font') diff --git a/roles/font/tasks/main.yml b/roles/font/tasks/main.yml index 1626b2f4..f31df195 100644 --- a/roles/font/tasks/main.yml +++ b/roles/font/tasks/main.yml @@ -52,12 +52,30 @@ state: "directory" mode: "0755" -- name: "Install Google Fonts" - become: true - ansible.builtin.get_url: - url: "{{ item.url }}" - dest: "/usr/share/fonts/google-fonts/{{ item.dest }}" - mode: "0644" - loop: "{{ font_google_fonts }}" - notify: - - "Update font-cache" +- name: "Install Google fonts" + when: "font_google_font_families | length > 0" + block: + - name: "Fetch Google Fonts file references" + ansible.builtin.uri: + url: "https://fonts.google.com/download/list?family={{ item | urlencode }}" + return_content: true + register: font_google_fonts_metadata + loop: "{{ font_google_font_families }}" + + - name: "Parse Google Fonts file references" + vars: + font_response_json: "{{ item.content | regex_replace('^[^{]+', '') | from_json }}" + font_file_refs: "{{ font_response_json.manifest.fileRefs | default([]) }}" + ansible.builtin.set_fact: + font_google_font_files: "{{ font_google_font_files | default([]) + font_file_refs }}" + loop: "{{ font_google_fonts_metadata.results }}" + + - name: "Install Google Fonts" + become: true + ansible.builtin.get_url: + url: "{{ item.url }}" + dest: "/usr/share/fonts/google-fonts/{{ item.filename }}" + mode: "0644" + loop: "{{ font_google_font_files | default([]) }}" + notify: + - "Update font-cache" diff --git a/roles/font/vars/archlinux.yml b/roles/font/vars/archlinux.yml index 597e73b2..2de675d6 100644 --- a/roles/font/vars/archlinux.yml +++ b/roles/font/vars/archlinux.yml @@ -5,15 +5,8 @@ font_packages: - "noto-fonts" - "noto-fonts-emoji" -font_google_fonts: - - url: "https://fonts.gstatic.com/s/ptsans/v18/jizaRExUiTo99u79P0WOxOGMMDQ.ttf" - dest: "PTSans-Regular.ttf" - - url: "https://fonts.gstatic.com/s/ptsans/v18/jizYRExUiTo99u79D0eEwMOJIDQA-g.ttf" - dest: "PTSans-Italic.ttf" - - url: "https://fonts.gstatic.com/s/ptsans/v18/jizfRExUiTo99u79B_mh4OmnLD0Z4zM.ttf" - dest: "PTSans-Bold.ttf" - - url: "https://fonts.gstatic.com/s/ptsans/v18/jizdRExUiTo99u79D0e8fOytKB8c8zMrig.ttf" - dest: "PTSans-BoldItalic.ttf" +font_google_font_families: + - "PT Sans" font_presets: - src: "/usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf" diff --git a/roles/font/vars/debian.yml b/roles/font/vars/debian.yml index bb80b1a1..73714a56 100644 --- a/roles/font/vars/debian.yml +++ b/roles/font/vars/debian.yml @@ -8,7 +8,7 @@ font_packages: - "fonts-noto-color-emoji" - "fonts-noto-extra" -font_google_fonts: [] +font_google_font_families: [] font_presets: - src: "/usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf" -- cgit v1.2.3