Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 08-01-2021 09:34:37

--gilles--
Membre
Lieu : Orléans - La Source
Distrib. : debian 11
Noyau : Linux 5.10.0-8-amd64
(G)UI : mutter 3.38.4-1
Inscription : 15-02-2016

Obtenir la liste des paquets de polices de caractères

Bonjour,

j'ai installé Debian 10 buster pour un ami. Je consulte un document LibreWriter que j'avais écrit avec ma machine et dans la machine de l'ami les polices ne correspondent plus à ce que je voyais dans la mienne. Faut dire qu'en installation de base, je trouve que c'est assez léger comme quantité de polices. Par exemple, je ne vois pas ici à quoi correspondent les caractères de la vignette de l'ami Tyezf sur cette machine alors que dans la mienne je les vois.



Comment obtenir la liste des paquets de polices de caractères pour pouvoir faire ensuite une installation rapides de toutes les polices ?

J'ai essayé :

aptitude search '~i font'

dpkg-query -l | grep font

mais il faudrait nettoyer et garder juste le nom des paquets.

Nos vies commencent à prendre fin le jour où nous devenons silencieux à propos des choses qui comptent. Martin Luther King

Hors ligne

#2 08-01-2021 10:15:25

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : 5.10-amd64
(G)UI : i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Obtenir la liste des paquets de polices de caractères

bonjour gilles smile

pour avoir la liste des polices installées, un ptit

fc-list



pour avoir la liste des paquets installés concernant les polices :

dpkg -l | grep font | awk '{print $2}'



pour choper la liste des paquets installés concernant les polices, afin de pouvoir installer les mêmes sur une autre machine :

dpkg -l | grep font | awk '{print $2}' > paquets.txt


puis tu transfères le fichier paquets.txt sur ton autre machine dans la quelle tu lances cette commande pour installer les mêmes polices :

apt install $(cat /adresse_du_fichier_paquets.txt)



wink

Dernière modification par arpinux (08-01-2021 10:30:36)


nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb

Hors ligne

#3 08-01-2021 11:35:56

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Bonjour,

arpinux a écrit :

pour avoir la liste des paquets installés concernant les polices :

dpkg -l | grep font | awk '{print $2}'


hum hum, tu seras loin du compte (faut dire que les polices, que ça soit sous Linux ou sous Windows, c'est la pagaille totale).

Déjà grep font sera utilement remplacé par grep fonts-*, ça t'éliminera presque tous les outils et autres librairies qui n'ont rien à faire dans une liste de polices (est-ce qu'on mélange les mèches à bois et les forets à béton à l'atelier ?), ensuite tu rajouteras grep ttf-* qui va te trouver d'autres polices, et enfin tu n'oublieras pas que certaines polices n'ont ni "font" ni "ttf" dans leur nom, exemple avec une culmus qui a dû m'arriver soit avec Debian soit avec LibreOffice.

Et bon courage.

Dernière modification par jpt (08-01-2021 11:41:46)


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#4 08-01-2021 11:54:37

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : 5.10-amd64
(G)UI : i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Obtenir la liste des paquets de polices de caractères

^^ c'est justement pour choper les paquets qui n'ont ni 'font', ni 'ttf' dnas leur nom que je fais un 'grep font' simple car ça permet de choper les descriptions de paquets.

exemple des trois commandes pour se faire une idée sur pièce

dpkg -l | grep font | awk '{print $2}' > paquets.txt


 $ cat paquets.txt
console-data
console-setup
font-manager
fontconfig
fontconfig-config
fonts-cantarell
fonts-dejavu
fonts-dejavu-core
fonts-dejavu-extra
fonts-droid-fallback
fonts-fork-awesome
fonts-freefont-ttf
fonts-hack
fonts-hack-ttf
fonts-ipaexfont
fonts-ipaexfont-gothic
fonts-ipaexfont-mincho
fonts-liberation
fonts-lmodern
fonts-lyx
fonts-noto-mono
fonts-opensymbol
fonts-powerline
fonts-quicksand
fonts-sil-gentium-basic
fonts-tibetan-machine
gsfonts
kbd
libfont-afm-perl
libfontconfig1:amd64
libfontconfig1-dev:amd64
libfontembed1:amd64
libfontenc1:amd64
libfreetype6:amd64
libfreetype6-dev:amd64
libwoff1:amd64
libxfont2:amd64
libxft-dev:amd64
libxft2:amd64
lmodern
t1utils
texlive-fonts-recommended
toilet-fonts
ttf-aenigma
ttf-bitstream-vera
ttf-unifont
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-terminus
xfonts-utils
 



le filtre supplémentaire "fonts-*" paraît plus adéquate:

dpkg -l | grep fonts-* | awk '{print $2}' > paquets.txt && cat paquets.txt


console-data
fonts-cantarell
fonts-dejavu
fonts-dejavu-core
fonts-dejavu-extra
fonts-droid-fallback
fonts-fork-awesome
fonts-freefont-ttf
fonts-hack
fonts-hack-ttf
fonts-ipaexfont
fonts-ipaexfont-gothic
fonts-ipaexfont-mincho
fonts-liberation
fonts-lmodern
fonts-lyx
fonts-noto-mono
fonts-opensymbol
fonts-powerline
fonts-quicksand
fonts-sil-gentium-basic
fonts-tibetan-machine
gsfonts
libwoff1:amd64
lmodern
texlive-fonts-recommended
toilet-fonts
ttf-aenigma
ttf-bitstream-vera
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-terminus
xfonts-utils
 



en revanche, comme on le voit, la 3° ne sert à rien chez moi .. peut-être chez d'autres ? smile

dpkg -l | grep ttf-* | awk '{print $2}' > paquets.txt && cat paquets.txt


fonts-freefont-ttf
fonts-hack-ttf
libsdl-ttf2.0-0:amd64
ttf-aenigma
ttf-bitstream-vera
ttf-unifont
 

Dernière modification par arpinux (08-01-2021 12:05:53)


nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb

Hors ligne

#5 08-01-2021 11:59:48

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : Linux 5.13.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Obtenir la liste des paquets de polices de caractères

Salut,
Je propose une solution minimale basée sur aptitude :


aptitude search ~sfonts
 


On demande juste à aptitude de lister tous les paquets contenus dans la section « fonts » smile

Hors ligne

#6 08-01-2021 12:06:18

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : 5.10-amd64
(G)UI : i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Obtenir la liste des paquets de polices de caractères

kiss is better tongue
je n'utilise jamais aptitude... devrais-je ?

Dernière modification par arpinux (08-01-2021 12:06:45)


nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb

Hors ligne

#7 08-01-2021 12:10:14

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

arpinux a écrit :

^^ c'est justement pour choper les paquets qui n'ont ni 'font', ni 'ttf' dans leur nom que je fais un 'grep font' simple car ça permet de choper les descriptions de paquets.

Oui, mais tu n'as pas indiqué cette commande !

arpinux a écrit :

les paquets "parasites", je les cherche encore... un exemple sur mon système

libfont-afm-perl
libfontconfig1:amd64
libfontconfig1-dev:amd64
libfontembed1:amd64
libfontenc1:amd64
libfreetype6:amd64
libfreetype6-dev:amd64
libwoff1:amd64
libxfont2:amd64
libxft-dev:amd64
libxft2:amd64

Toute cette série de lib... c'est quoi ?
Et ceux qui ont la string "util", c'est des polices tu crois ?

arpinux a écrit :

la 3e ne sert à rien chez moi .. peut-être chez d'autres ? smile

dpkg -l | grep ttf-* | awk '{print $2}' > paquets.txt && cat paquets.txt

dpkg -l | grep ttf-* | awk '{print $2}'
fonts-freefont-ttf
libfont-ttf-perl
ttf-dejavu
ttf-dejavu-core
ttf-dejavu-extra
ttf-liberation
ttf-sil-gentium-basic

Dernière modification par jpt (08-01-2021 12:15:29)


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#8 08-01-2021 12:12:53

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : 5.10-amd64
(G)UI : i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Obtenir la liste des paquets de polices de caractères

la plupart des libs sont installées de base, ou dépendantes des fonts à installer, et sur mon systèmen à part les -dev qui sont là pour les contributions, ce que n'aura pas le $user, je trouve que non, ya pas trop de parasites.

et sinon, j'ai modifié mon post en collant les commandes en comparaison pour se faire une idée

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb

Hors ligne

#9 08-01-2021 12:34:24

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

En filtrant la colonne filtrée, c'est pas trop mal :

dpkg -l | grep fonts-* | awk '{print $2}' | grep fonts-*
fonts-freefont-ttf
fonts-liberation
fonts-lyx
fonts-opensymbol
fonts-sil-gentium
fonts-sil-gentium-basic
gsfonts
gsfonts-x11
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-utils <<< parasite

dpkg -l | grep ttf-* | awk '{print $2}' | grep ttf-*
fonts-freefont-ttf
libfont-ttf-perl <<< parasite
ttf-dejavu
ttf-dejavu-core
ttf-dejavu-extra
ttf-liberation
ttf-sil-gentium-basic


2 parasites seulement, mais le risque c'est de zapper des polices... Ce sujet ne sera jamais simple, hélas.

Dernière modification par jpt (08-01-2021 12:36:13)


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#10 08-01-2021 12:50:16

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : Linux 5.13.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Obtenir la liste des paquets de polices de caractères

arpinux a écrit :

je n'utilise jamais aptitude... devrais-je ?


Tu fais comme tu veux wink Cependant aptitude brille dans ce genre de tâche smile

Hors ligne

#11 08-01-2021 13:06:44

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

enicar a écrit :

arpinux a écrit :

je n'utilise jamais aptitude... devrais-je ?


Tu fais comme tu veux wink Cependant aptitude brille dans ce genre de tâche smile


et est laborieux dans d'autres :

raleur a écrit :

jpt a écrit :

OK, donc c'est synaptic qui se gourre, puisqu'en cliquant sur "Filtres personnalisés / Cassés" je n'ai rien.


Je n'en sais rien. Ça dépend de ce qu'on entend exactement par "cassé". Ici, aptitude (que je n'utilise jamais, trop compliqué) me sort que telnet-ssl (qui est installé) est cassé parce qu'il est en conflit avec telnet (qui n'est pas installé). Evidemment qu'ils sont en conflit et qu'on ne peut installer qu'un des deux, je vois pas en quoi ça en fait un paquet cassé...


source // c'est moi qui mets en gras.

Dernière modification par jpt (08-01-2021 13:07:30)


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#12 08-01-2021 13:27:57

--gilles--
Membre
Lieu : Orléans - La Source
Distrib. : debian 11
Noyau : Linux 5.10.0-8-amd64
(G)UI : mutter 3.38.4-1
Inscription : 15-02-2016

Re : Obtenir la liste des paquets de polices de caractères

Merci de vos recherches ! big_smile

L'ambiance doit rester cordiale, en attendant la fonte des neiges, que font les polices ? big_smile

Je dois dire que la méthode d'arpinux, que je salue et remercie pour son dévouement pour avoir répondu, souffre de quelques petites imperfections, mais il serait stupide de lui en tenir rigueur. Ceci d'autant plus que je suis servi de sa méthode et de celle d'enicar pour construire la mienne ! Mais qui souffre aussi quelques autres imperfections ! Tout en trouvant très judicieux les observations de jpt.

aptitude search '~i !~M ~sfonts' | awk '{print $2}' > paquets-trouvés-par-aptitude.txt


suivi de :


aptitude search '~i ~M ~sfonts' | awk '{print $3}' > paquets-trouvés-par-aptitude.txt && cat paquets-trouvés-par-aptitude.txt


Ce qui donne :

fontconfig
fontconfig-config
fonts-cantarell
fonts-crosextra-caladea
fonts-crosextra-carlito
fonts-dejavu
fonts-dejavu-core
fonts-dejavu-extra
fonts-droid-fallback
fonts-freefont-ttf
fonts-lato
fonts-liberation
fonts-material-design-icons-iconfont
fonts-noto-core
fonts-noto-mono
fonts-noto-ui-core
fonts-opensymbol
fonts-quicksand
fonts-roboto-unhinted
fonts-symbola
fonts-urw-base35
gsfonts
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
 


Il me manque fonts-linuxlibertine dans ma méthode !


Méthode arpinux :

dpkg -l | grep font | awk '{print $2}' > paquets-trouvés-ar-dpkg.txt


suivi de :

dpkg -l | grep fonts-* | awk '{print $2}' > paquets-trouvés-ar-dpkg.txt && cat paquets-trouvés-ar-dpkg.txt


fonts-cantarell
fonts-crosextra-caladea
fonts-crosextra-carlito
fonts-dejavu
fonts-dejavu-core
fonts-dejavu-extra
fonts-droid-fallback
fonts-font-awesome
fonts-freefont-ttf
fonts-inconsolata
fonts-lato
fonts-liberation
fonts-liberation2
fonts-linuxlibertine
fonts-lmodern
fonts-material-design-icons-iconfont
fonts-noto-color-emoji
fonts-noto-core
fonts-noto-hinted
fonts-noto-mono
fonts-noto-ui-core
fonts-opensymbol
fonts-oxygen
fonts-quicksand
fonts-roboto
fonts-roboto-unhinted
fonts-stix
fonts-symbola
fonts-urw-base35
gsfonts
libfonts-java
libwoff1:amd64
ttf-bitstream-vera
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-utils



Il y a en trop libwoff1 dans la méthode d'arpinux. Je vais supprimer cette ligne et récolter les deux fichiers ma méthode et celle d'arpinux ( pour les manquants dans la mienne ) pour injecter leurs résultats dans la machine de mon ami.

apt install --reinstall $(cat /paquets-trouvés-ar-dpkg.txt)



apt install --reinstall $(cat /paquets-trouvés-par-aptitude.txt)



J'ai l'impression d'avoir pris ma carte au Parti Socialiste et de faire la synthèse entre les différents courants. big_smile  François Hollande sors de ce corps ! big_smile

Dernière modification par --gilles-- (08-01-2021 14:24:34)


Nos vies commencent à prendre fin le jour où nous devenons silencieux à propos des choses qui comptent. Martin Luther King

Hors ligne

#13 08-01-2021 13:42:15

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : 5.10-amd64
(G)UI : i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Obtenir la liste des paquets de polices de caractères

^^ c'est avec un pied de chaque côté qu'on avance dans la bonne direction ... tongue

nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb

Hors ligne

#14 08-01-2021 14:34:17

--gilles--
Membre
Lieu : Orléans - La Source
Distrib. : debian 11
Noyau : Linux 5.10.0-8-amd64
(G)UI : mutter 3.38.4-1
Inscription : 15-02-2016

Re : Obtenir la liste des paquets de polices de caractères

Gnome avec deux pieds, c'est nouveau çà ! big_smile

J'avais laissé un espace avant reinstall, j'ai corrigé et puis il a tiqué avec fonts-material-design-icons-iconfont qui est dans bulleyes, mais pas encore dans buster et puis ce paquet enlevé, cela s'est déroulé nickel !

Merci encore à tous !

Nos vies commencent à prendre fin le jour où nous devenons silencieux à propos des choses qui comptent. Martin Luther King

Hors ligne

#15 09-01-2021 18:42:07

al louarn
Membre
Distrib. : Buster
Noyau : Linux 4.19.0-8-amd64
(G)UI : lightdm-xsession/xfce
Inscription : 21-02-2012

Re : Obtenir la liste des paquets de polices de caractères

Salut,

Les 3 commandes d'Arpinux ni celle d'aptitude pourtant très bluffante  (48 Ko),
ne font  apparaître toutes  les polices installées manuellement tel qu'indiqué dans le wiki. avec le cache à jour
Seule

fc-list


va me chercher ces quelques polices visibles dans LibreOffice par exemple

~$ ls /usr/share/fonts


CELTICMD.TTF  'minya nouvelle bd it.ttf'   opentype   woff
 cmap          'minya nouvelle bd.ttf'      svg        X11
 cMap          'minya nouvelle it.ttf'      truetype
 eot           'minya nouvelle rg.ttf'      type1



Serait-ce  lié à leur emplacement  ?


Debianophile = DebiaNoGeek

Hors ligne

#16 09-01-2021 20:37:43

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Bonsoir,

al louarn a écrit :

Serait-ce  lié à leur emplacement  ?

Non, c'est normal et tu le dis toi-même :

al louarn a écrit :

les polices installées manuellement

Les commandes d'arpinux et aptitude s'appuient sur les informations de l'outil apt.
Les polices installées manuellement ne l'ont donc pas été avec apt (ou dpkg).
Fermez le ban.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#17 09-01-2021 21:27:02

--gilles--
Membre
Lieu : Orléans - La Source
Distrib. : debian 11
Noyau : Linux 5.10.0-8-amd64
(G)UI : mutter 3.38.4-1
Inscription : 15-02-2016

Re : Obtenir la liste des paquets de polices de caractères

Bonjour al louarn et jpt. smile

Le titre du sujet est :  Obtenir la liste des paquets de polices de caractères
Je ne souhaitais pas ramasser les polices perdues ici et là installées en espace utilisateur, je n'en pas dans la machine actuelle, juste des paquets debian de police.

Il faudrait vous créer un autre sujet bien adapté au cas que vous souhaitez, du genre : Obtenir la liste des polices installées uniquement manuellement
et je crois que cela intéresserait du monde. De plus, avec la méthode que vous allez trouver plus celle mixte moi-arpinux, vous aurez la liste complète de toutes les polices installées quelque soit la méthode, enfin je l'espère. cool

Nos vies commencent à prendre fin le jour où nous devenons silencieux à propos des choses qui comptent. Martin Luther King

Hors ligne

#18 21-04-2021 18:48:10

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Bonsoir,

je réactive 5 minutes ce sujet (puisqu'il n'est pas [Résolu] lol) car il va bientôt falloir que je mette les mains dans le cambouis, et j'ai beau me munir de pâte Arma et de beaucoup de chiffons, je sais déjà que je n'en sortirai pas intact, la preuve :

enicar a écrit :

Je propose une solution minimale basée sur aptitude :

aptitude search ~sfonts


On demande juste à aptitude de lister tous les paquets contenus dans la section « fonts » smile

et chez moi ça retourne 602 lignes avec des informations dans les deux premières colonnes juste hermétiques, exemple :

p   xfonts-thai-manop   - Manop Wongsaisuwan's bitmap fonts for X
i A xfonts-thai-nectec  - polices à chasse fixe thaï de NECTEC pour X
p   xfonts-thai-poonlap - polices matricielles de Poonlap Veerathanabutr pour X


p, i, A, what ?
et des parasites en veux-tu en voilà, genre

console-setup, fontconfig, fontconfig-config, gucharmap, kbd, etc.

Inexploitable.
Ensuite,

--gilles-- a écrit :

aptitude search '~i !~M ~sfonts' | awk '{print $2}' > paquets-trouvés-par-aptitude.txt

suivi de :

aptitude search '~i ~M ~sfonts' | awk '{print $3}' > paquets-trouvés-par-aptitude.txt && cat paquets-trouvés-par-aptitude.txt

Chez moi (je supprime la redirection pour y voir clair) :

$ aptitude search '~i !~M ~sfonts' | awk '{print $2}'
fonts-rufscript
$ aptitude search '~i ~M ~sfonts' | awk '{print $3}' | wc -l
24

1 seul fichier remonté par la première commande, c'est fou, non ? 24 fichiers à la seconde, c'est mieux mais il y a encore des parasites et surtout, il en manque toujours beaucoup.

Sinon,

--gilles-- a écrit :

Je ne souhaitais pas ramasser les polices perdues ici et là installées en espace utilisateur, je n'en pas dans la machine actuelle, juste des paquets debian de police.

Il arrive parfois que l'install d'un logiciel te fasse des petits dans le dos, je l'ai connu avec un logiciel de mise en page pour faire imprimer des albums de famille.

Voilà.
Au début de cette discussion, j'ai écrit que les polices c'est la pagaille, et je ne change pas d'avis, hélas…


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#19 15-05-2021 17:55:10

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Bonjour,

j'espère qu'il n'y aura pas d'erreurs -- en tout cas chez moi ça fonctionne du feu de Dieu !
Bien sûr, toutes mes polices sont rangées dans /usr/share/fonts/ (je découvre dans les machines récentes qu'il y a aussi maintenant plein de /u/sh/fonts-blabla -- je ne sais pas encore comment le script va gérer ça, dans la mesure où il s'appuie sur fc-list) et pas ailleurs, certaines provenant de logiciels de traitement de texte (lo writer) mais avec leur propre paquet, d'autres installées à la main (récupérées sur le web, sur des vieux cd-rom's, dans des vieilles machines Windows), bref, c'est un peu le bronx mais je m'y retrouve.
Surtout avec un catalogue perso sur papier.

Et si j'ai créé cet outil, c'est pour encore mieux m'y retrouver, craignant le pire lors d'une grosse mise à jour de lo par exemple.

Car si je ne perds pas les pédales dans mon bazar, il est hors de question que des programmes d'installation mal fichus se permettent de venir y mettre leur pagaille. Et comme je sais qu'il sera impossible de prévenir plutôt que guérir, je pense pouvoir m'en sortir à postériori avec cet accessoire.

Perso, je l'ai appelé checkfonts.sh et je viens déjà de créer checkfonts.sh > liste_polices.txt que je vais précieusement archiver dans un coin, en attendant une catastrophe.

Sinon, j'ai testé l'outil dans la future machine de prod, réponse quasi instantanée dans la mesure où il n'y a que 10 paquets de fonts installés, et 4 fichiers hors paquet (LiberationSansNarrow -- au passage, un brave foutoir, Liberation, regardez dans Synaptic puis dans /u/sh/fonts/truetype/liberation ET liberation2, vous constaterez que certains fichiers sont présents dans les deux dossiers, quel boxon !), et ensuite dans une machine virtuelle à base de Deb10-8 / Lxde et là ça a mis un temps dément à scanner car si j'ai bien compris le film, la commande dpkg -S nom-2-fichier.ttf ou .otf va chercher dans les fichiers d'apt pour voir si elle y trouve une correspondance et ça prend du temps, au final, dans cette machine, j'ai 93 paquets tous plus inutiles les uns que les autres, genre des polices qui viennent de pays dont je ne savais même pas qu'ils existent, alors imaginez un peu comme je m'en bats l'œil, dans la mesure où je me concentre exclusivement sur la typographie latine.

Et je viens de m'amuser avec un truc dément : fc-list | wc -l
ça me donne, dans la future machine de prod, 153 (184 dans l'ancienne), et dans la machine virtuelle 2505 !
2505 fichiers de polices ! Mais qui peut gérer ça au quotidien ? C'est du délire.

Bref, le script.
Il y a des commentaires, il ne devrait pas y avoir de problèmes :

#!/bin/bash

# script pour compter les polices et savoir de quel paquet elles proviennent,

declare -a paquettab
cptr=$((0))
orphelines=$((0))
paquetcount=$((0))


function ComputeExt {
  theFileName=$(echo "$1" | sed 's/.*/\L&/') # https://stackoverflow.com/questions/2264428/how-to-convert-a-string-to-lower-case-in-bash
  #echo $theFileName
 
  # Get the proposed name by chopping off the extension
  name="${theFileName%.*}"
 
  # get extension. Set to null when there isn't an extension
  # Thanks to mklement0 in a comment above.
  #extension=$([[ "$theFileName" == *.* ]] && echo ".${theFileName##*.}" || echo '')
  # pour supprimer le . au début
  extension=$([[ "$theFileName" == *.* ]] && echo "${theFileName##*.}" || echo '')
 
  # a hidden file without extension?
  if [ "${theFileName}" = "${extension}" ] ; then
    # hidden file without extension.  Fixup.
    name=${theFileName}
    extension=""
  fi
  extension=${extension}
  #echo "name in func = $name"
  #echo "extn in func = $extension"
}

# manip IFS obligatoire pour tout avoir sur la même ligne
OLDIFS=$IFS;
IFS=$'\n';

listfonts=$(fc-list | sort | grep -iv type1)
for ligne in ${listfonts[@]}
do
    fullname=$(echo "$ligne")
    # pb avec les noms de fichiers avec espaces, genre .../Softerviews/Balava/Balava Bold Italic.otf
    # donc casser la chaîne sur le ":"  
    TMPIFS=$IFS
    IFS=":"
    blocs=$fullname
    fait="1"
    for x in $blocs; do
        #echo "> [$x]" # ok, le 1er champ est bon
        [ $fait == "1" ] && polnam=$x && fait="0"
    done
    IFS=$TMPIFS
    #echo $polnam

    # tester les extensions (car des fois il y a des .txt ou autres dans les dossiers venant du web)
    ComputeExt "$polnam"
    #echo $extension # ok, sans point et en minuscule
   
    if [[ "$extension" == "ttf" ]] || [[ "$extension" == "otf" ]]; then
        #dpkg -S "$polnam" 2>&1 # utiliser dessous car cette commande remonte des messages
        check=$(dpkg -S "$polnam" 2>&1)
        res=$(echo $?)
        if [ "$res" != "1" ]; then # en espérant que c'est bien "0" pour un paquet trouvé
            result1=$(dpkg -S "$polnam" | awk '{print $1}')
            result1=${result1%:}
            paquettab+=($result1)
            ((paquetcount++))
#            if [ "$result1" != "$result2" ]; then
#                result2="$result1"
#                echo "Paquet : $result2"
#            fi
# 4 lignes dessus commentées = plus d'affichages, c'est long à l'écran...
# mais décommentées, ça fait apparaître les doublons, très moche, alors
# en avant pour les "points de suite" :
            echo -n "."; sleep 0.01
        else
            echo "Pas de paquet pour $polnam"
            ((orphelines++))
        fi
        ((cptr++))
    fi
done
echo # nécessaire après les points de suite
#echo ${#paquettab[@]} paquets
#echo $cptr polices
echo "$orphelines polices orphelines"

IFS=$'\n'
sorted=($(sort <<<"${paquettab[*]}" | uniq))
for a in "${sorted[@]}"; do echo "Paquet installé : $a"; done
IFS=$OLDIFS

echo "Pour désinstaller les polices, il suffira donc de désinstaller ces ${#sorted[@]} paquets,"
echo "les polices ne provenant pas d'un paquet seront supprimées à la main."

exit


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#20 15-05-2021 19:55:59

Tawal
Membre
Distrib. : Debian 11 Bullseye
Noyau : Linux 5.10.0-8-amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Obtenir la liste des paquets de polices de caractères

Hello,

@jpt :
Ne le prend pas mal mais j'ai "repris" ton script pour l'épurer et le corriger sur certains points.
Comme ça tu pourras comparer les 2 pour voir d'autres façons de faire wink

#!/bin/bash

# script pour compter les polices et savoir de quel paquet elles proviennent,

list_paquets="/home/$USER/Documents/fonts-paquets"
list_orphelines="/home/$USER/Documents/fonts-orphelines"

[ -e "$list_paquets" ] && rm "$list_paquets"
[ -e "$list_orphelines" ] && rm "$list_orphelines"

declare -A tPaquet # Tableau Associatif
orphelines=0
paquetcount=0


while read  ligne   # on lit ligne par ligne le retour de la commande fc-list
do
    polnam="${ligne%%:*}"    # on récupère le nom de la police
    ext="${polnam##*.}"      # on récupère l'extension
    ext="${ext,,}"           # on met en "lowercase" l'extension
    if [[ "$ext" =~ ttf|otf ]]   # Si "ext" égal "ttf" ou égal "otf"
    then
        result1="$(dpkg -S "$polnam" 2>/dev/null | awk -F: '{print $1}')"
        if [ "$result1" ]
        then
            if [ ! ${tPaquet["$result1"]} ]    # test si l'élément tPaquet[$result1] n'existe pas (façon de ne pas afficher les doublons)
            then
                echo -n "Paquet installé : "
                echo "$result1" | tee -a "$list_paquets"   # on affiche $result1 et on l'écrit dans le fichier $list_paquets
                tPaquet["$result1"]=1
                ((paquetcount++))
            fi
        else
            echo -n "Pas de paquet pour "
            echo "$polnam" | tee -a "$list_orphelines"
            ((orphelines++))
        fi
    fi
done < <(fc-list | sort | grep -iv type1)
echo

echo "$orphelines polices orphelines"

echo "Pour désinstaller les polices, il suffira donc de désinstaller ces $paquetcount paquets,"
echo "les polices ne provenant pas d'un paquet seront supprimées à la main."

exit

Par contre, en plus d'afficher à l'écran, j'ai rajouté la création des fichiers "fonts-paquets" et "fonts-orphelines".

Dernière modification par Tawal (16-05-2021 12:27:47)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#21 15-05-2021 20:03:07

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Tawal a écrit :

Ne le prend pas mal mais j'ai "repris" ton script pour l'épurer et le corriger sur certains points.

Aucun problème, on est là pour échanger, partager, s'entraider, etc.
(tiens, d'ailleurs j'ai oublié de te féliciter pour ta nouvelle version de la surveillance disque que j'ai regardée à la va-vite et qui roule bien !)

Je regarderai demain pour les polices, là j'en ai ma claque (pas de toi, hein, big_smile).


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#22 15-05-2021 23:04:10

nam1962
Banni(e)
Distrib. : Manjaro, Debian, Xebian, Yunohost
Noyau : Ca dépend
(G)UI : Xfce
Inscription : 02-08-2017

Re : Obtenir la liste des paquets de polices de caractères

Font manager peut-il aider ?
https://github.com/FontManager/font-manager

Almanet doLys de l'open source : mon tuto pour optimiser / finaliser une install
Manjaro Xfce - Debian Xfce - Yunohost - Xebian Et vous ?
61 convertis  IRL (n'ont pas eu le choix...).

Hors ligne

#23 16-05-2021 12:31:58

Tawal
Membre
Distrib. : Debian 11 Bullseye
Noyau : Linux 5.10.0-8-amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Obtenir la liste des paquets de polices de caractères

@jpt :
J'ai encore revu ton script, et l'ai amélioré (si je puis dire).
Plus de fonction "ComputeExt".
Je l'ai mis à jour au #20 wink

@nam1962 :
Pour obtenir une liste des paquets de police installés pour ensuite l'exploiter sur une autre machine, ça va être lourd en mode graphique.

Dernière modification par Tawal (16-05-2021 12:33:10)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#24 16-05-2021 12:39:31

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : Obtenir la liste des paquets de polices de caractères

Bonjour,

après avoir étudié ta proposition, je la trouve bien sympathique.

J'y ai apporté une petite amélioration, à savoir que les deux lignes

list_paquets="/home/$USER/Documents/fonts-paquets"
list_orphelines="/home/$USER/Documents/fonts-orphelines"

en deviennent une seule #list_paquets="/home/$USER/Documents/fonts-paquets"; list_orphelines="/home/$USER/Documents/fonts-orphelines", c'est plus facile pour commenter/décommenter, ce qui permet d'avoir facilement le log dans les fichiers ou pas :

            if [ ! ${tPaquet["$result1"]} ]
            then
                cmd1="Paquet installé : $result1"
                [ -z "$list_paquets" ] && echo "$cmd1" || echo "$cmd1" |& tee -a "$list_paquets"
                tPaquet["$result1"]=1
                ((paquetcount++))
            fi
        else
            cmd2="Pas de paquet pour $polnam"
            [ -z "$list_orphelines" ] && echo "$cmd2" || echo "$cmd2" |& tee -a "$list_orphelines"
            ((orphelines++))
        fi


Pour la commande tee, j'ai tout mis sur une seule ligne et j'ai rajouté l'esperluette, en suivant les conseils de ce site : https://www.hostinger.fr/tutoriels/comm … c-exemples
Et la dernière ligne du script devient echo "les $orphelines polices ne provenant pas d'un paquet seront supprimées à la main." avec l'ajout de la variable de comptage.

La seule chose que je regrette, c'est mes petits "points de suite" qui montraient, en cas de boucle longue (sur les paquets), que le programme est encore vivant. Bah...

Voili voilà,

nam1962 a écrit :

Font manager peut-il aider ?

Oui, font-manager serait surement très utile pour examiner et trier les fontes, mais il faut d'abord faire le ménage sinon c'est ingérable.
Et d'ailleurs, je ne sais pas comment je vais le faire, ce ménage...
Quand je tape fc-list | more, je peux lire .../noto/NotoSerifHebrew-CondensedLight.ttf et comme je n'utiliserai jamais le hébreu, elle peut dégager, tout comme celles où je lis Mandarin, Thai, Japanese, etc.
Mais quand je ne lis rien ? Genre .../lato/Lato-Medium.ttf: Lato,Lato-Medium:style=Medium,Regular et c'est tout ! Va falloir la regarder, et il y en a plein comme ça.

Bon sang, "ils" auraient pu me demander mon avis avant de me pourrir le dossier des fonts, mad

Dernière modification par jpt (16-05-2021 12:42:19)


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#25 16-05-2021 13:10:05

Tawal
Membre
Distrib. : Debian 11 Bullseye
Noyau : Linux 5.10.0-8-amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Obtenir la liste des paquets de polices de caractères

@jpt :
Modif de la boucle while pour avoir les "petits points" :

tput sc
while read  ligne   # on lit ligne par ligne le retour de la commande fc-list
do
    polnam="${ligne%%:*}"    # on récupère le nom de la police
    ext="${polnam##*.}"      # on récupère l'extension
    ext="${ext,,}"           # on met en "lowercase" l'extension
    if [[ "$ext" =~ ttf|otf ]]   # Si "ext" égal "ttf" ou égal "otf"
    then
        result1="$(dpkg -S "$polnam" 2>/dev/null | awk -F: '{print $1}')"
        if [ "$result1" ]
        then
            if [ ! ${tPaquet["$result1"]} ]    # test si l'élément tPaquet[$result1] n'existe pas (façon de ne pas afficher les doublons)
            then
                tput rc; tput el
                echo -n "Paquet installé : "
                echo "$result1" | tee -a "$list_paquets"   # on affiche $result1 et on l'écrit dans le fichier $list_paquets
                tPaquet["$result1"]=1
                ((paquetcount++))
                tput sc
            fi
            echo -n "."
        else
            tput rc; tput el
            echo -n "Pas de paquet pour "
            echo "$polnam" | tee -a "$list_orphelines"
            ((orphelines++))
            tput sc
        fi
    else
        echo -n "."
    fi
done < <(fc-list | sort | grep -iv type1)
echo
 


Edit: Tu n 'as pas besoin de l'esperluette "&", elle sert à rediriger la sortie d'erreurs vers la sortie standard.
Tu crois que des echo vont reporter une erreur ? (c'est possible dans l'absolu, mais dans ce code ...)
Et ensuite quel intérêt de reporter ces erreurs dans un fichier qui est censé n'avoir qu'une liste de paquets à installer ou une liste de polices orphelines ?

Edit2:
Ton fichier "fonts-paquets" contient des lignes du style :
Paquet installé : XXXXXXXXX
Paquet installé : ZZZZZ
....

Ce qui va le rendre plus difficilement exploitable par un autre script (pour par exemple installer cette liste de paquets sur une autre machine).
Tandis qu'un fichier ne comportant qu'un nom de paquet par ligne peut s'utiliser directement de la sorte :

# apt install $(cat /chemin/du/fichier/fonts-paquets)

Dernière modification par Tawal (16-05-2021 13:43:22)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

Pied de page des forums