cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

OĂč sont stockĂ©es les polices de caractĂšres sous Linux Mint ?

Sous Linux, les polices sont stockées dans différents répertoires, les plus communs sont :

  • /usr/share/fonts
  • /usr/local/share/fonts
  • ~/.fonts

Techniquement, vous pouvez mettre vos nouvelles polices dans n’importe lequel de ces dossiers, on peut cependant affiner un peu cela en respectant les normes et les conventions.

Par exemple, sous Linux Mint, les polices True Type Format sont classées un dossier spécifique :

  • /usr/share/fonts/truetype

et les polices pour l’utilisateur courant se trouve :

  • ~/.local/share/fonts

Beaucoup de logiciels embarquent leurs propres polices, c’est le cas de LibreOffice par exemple, les polices Ă©tant dessous /opt/libreoffice7.2/share/fonts, mais ce qui nous intĂ©resse c’est plutĂŽt les polices qui sont partagĂ©es :

Dessous /var/lib/flatpak/ il y a Ă©galement des polices, mais lĂ  encore, elles sont rĂ©servĂ©es. Il s’agit des applications au format flatpak, de mĂȘme dessous /snap/ pour les applications au format snap.

Voici d’autres dossiers notables :

  • /var/lib/dpkg/alternatives
  • /etc/alternatives

ඏ

OĂč mettre vos polices ?

Si vous utilisez l’outil de gestion des polices de caractùres de Linux Mint, lorsque vous cliquez sur le bouton installer, il utilisera le dossier : ~/.fonts

Cependant, si vous souhaitez que vos polices soient accessibles à tous les utilisateurs, il est plus pertinent de les copier dessous : /usr/local/share/fonts (ce qui nécessitera les droits administrateurs).


ඏ

Comment rechercher tous les fichiers contenant une police de caractÚre ?

Pour les plus curieux d’entre vous, je vous propose de partir Ă  l’exploration des polices de caractĂšres en dĂ©pliant le texte ci-dessous


  • Pour ceux qui souhaitent creuser


    Pour trouver toutes les fonts, vous pouvez utiliser:

    sudo find / -type f -iname '*.otf' -or -iname '*.ttf' 2>/dev/null
    

    -o ou -or sont de synonymes pour find.

    Notez qu’il existe d’autre type de ficher de police de caractùre, et certainement que votre systùme en supporte d’autre, vous adapterez a votre besoin


    On utilise sudo pour pouvoir atteindre tous les fichiers du disque, on recherche Ă  partir de la racine (/), on se limite aux fichiers (-type f) dont le nom fini par « .otf » (-iname '*.otf') ou (-or) par « .ttf » (-iname '*.ttf') et on masque les erreurs (2>/dev/null). Les erreurs Ă©tant dans ce cas normal, find va se heurter Ă  des fichiers appartenant au systĂšme qu’il ne peut pas gĂ©rer.

    La liste risque déjà trÚs longue et comme le but est de ne connaßtre que le dossier, on peut réduire considérablement les résultats comme suit :

    sudo find / -type f -iname '*.otf' -or -iname '*.ttf' -exec dirname {} \; 2>/dev/null | sort | uniq
    

    Il est possible d’accĂ©lĂ©rer un peu l’affichage, en partant du principe que la sortie de la commande find sera dĂ©jĂ  triĂ©e :

    sudo find / -type f -iname '*.otf' -or -iname '*.ttf' -exec dirname {} \; 2>/dev/null | uniq
    

    Cette recherche risque d’ĂȘtre lente, puisqu’elle va examiner l’ensemble du disque dur. Soit vous aller vous faire un cafĂ©, soit il faut essayer de limiter raisonnablement son pĂ©rimĂštre.

    sudo find / -type d \( -path '/cdrom' \
    -o -path '/lost+found' \
    -o -path '/tmp' \
    -o -path '/run' \
    -o -path '/proc' \
    -o -path '/media' \
    -o -path '/usr/share/fonts' \
    -o -path '/usr/local/share/fonts' \
    -o -path '/var/lib/flatpak' \
    -o -path '/mnt/data/home/claude/sources' \) \
    -prune -or -type f -iname '*.otf' -or -iname '*.ttf' -exec dirname {} \; 2>/dev/null | uniq
    

    Les dossiers exclus :

    • /cdrom – A priori, on ne veut pas explorer un Ă©ventuel CD,
    • /lost+found – Dossier systĂšme sans intĂ©rĂȘt ici,
    • /tmp – Dossier temporaire, les police-de-caractĂšre Ă©ventuelles ne rĂ©sistent pas Ă  un redĂ©marrage,
    • /run – Dossier systĂšme sans intĂ©rĂȘt ici,
    • /proc – Dossier systĂšme sans intĂ©rĂȘt ici,
    • /media – A priori, on ne veut pas rechercher sur d’éventuels points de montages,
    • /usr/share/fonts – On sait dĂ©jĂ  qu’il y a des fonts ici,
    • /usr/local/share/fonts – On sait dĂ©jĂ  qu’il y a des fonts ici,
    • /var/lib/flatpak – Les fonts prĂ©sentes dans ce dossier sont gĂ©rĂ©es par flatpak,
    • /mnt/data/home/claude/sources – Et vous pouvez ajouter d’éventuels dossiers perso


    On peut vouloirs chercher des polices en double, je vous propose pour cela de faire quelque chose du type :

    sudo find / -type d \( -path '/cdrom' \
    -o -path '/lost+found' \
    -o -path '/tmp' \
    -o -path '/run' \
    -o -path '/proc' \
    -o -path '/media' \
    -o -path '/mnt/data/home/claude/sources' \) \
    -prune -or -type f -iname '*.otf' -or -iname '*.ttf' \
    -exec sha512sum {} \; | sort >liste-police-de-caracteres.txt
    

    Pour examiner le résultat, qui sera assez long à produire, je vous conseille de mettre le résultat dans un fichier (ici liste-police-de-caracteres.txt).

    Les fichiers ayant le mĂȘme code ont le mĂȘme contenu.

    function show_duplicates {
      local -r file="$1"
    
      local last_key=
      local last_tail=
      local first_match='true'
    
      sort -t, -k1,1 "${file}" | while IFS=' ' read key tail ; do
        if [ "${key}" = "${last_key}" ] ; then
          if [ "${first_match}" = 'true' ] ; then
            echo "${last_key} ${last_tail}"
            first_match='false'
          fi
          echo "${key} ${tail}"
        else
          first_match='true'
        fi
        last_key="${key}"
        last_tail="${tail}"
      done
    }
    
    show_duplicates 'liste-police-de-caracteres.txt' >'liste-police-de-caracteres-en-double.txt'
    

    Une solution basée sur le format JSON me semble plus exploitable, mais je laisse le code intermédiaire à des fins de documentation.

    function show_duplicates_json {
      local -r file="$1"
    
      local last_key=
      local last_tail=
      local first_match='true'
      local json='{}'
    
      while IFS=' ' read key tail ; do
        if [ "${key}" = "${last_key}" ] ; then
          if [ "${first_match}" = 'true' ] ; then
            echo "${last_key} ${last_tail}" >&2
            json="$( jq -c --arg file "${last_tail}" ".[\"$last_key\"] |= .+ [ \$file ]" <<<"${json}" )"
            first_match='false'
          fi
          echo "${key} ${tail}" >&2
          json="$( jq -c --arg file "${tail}" ".[\"$key\"] |= .+ [ \$file ]" <<<"${json}" )"
        else
          first_match='true'
        fi
        last_key="${key}"
        last_tail="${tail}"
      done < <( sort -t, -k1,1 "${file}" )
    
      jq . <<<"${json}"
    }
    
    show_duplicates_json 'liste-police-de-caracteres.txt' >'liste-police-de-caracteres-en-double.json'
    

    Le contenu de ce fichier risque de vous faire peur. Vous constaterez qu'il y a beaucoup de polices de caractùres en double sur machine



ඏ

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog