Bonjour,

tout est dans le titre, alors je détaille : la grande chaine du titre vient de la récupération d'informations relatives aux polices de caractères, extraites en utilisant un binaire (à peine modifié par mes soins) venant de FontForge, je veux parler de showttf à qui j'ai rajouté la possibilité de sortir les données de la table "NAME".
Ce qui est curieux c'est que les données, je les vois dans la console et j'aimerais bien les avoir sous forme de liste de chaines, comme je les vois (pour une fonte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
platform=1 plat_spec_encoding=0 language=0 name=1 Family
offset=  59 lenght=  14   Lucida Console
platform=1 plat_spec_encoding=0 language=0 name=2 Subfamily
offset=  73 lenght=   7   Regular
platform=1 plat_spec_encoding=0 language=0 name=3 UniqueID
offset=  80 lenght=  35   Lucida Console Regular; B&H alpha25
platform=1 plat_spec_encoding=0 language=0 name=4 FullName
offset= 115 lenght=  14   Lucida Console
platform=1 plat_spec_encoding=0 language=0 name=5 Version
offset= 129 lenght=  12   Version 1.60
platform=1 plat_spec_encoding=0 language=0 name=6 Postscript
offset= 141 lenght=  13   LucidaConsole
platform=1 plat_spec_encoding=0 language=0 name=7 Trademark
offset= 154 lenght=  57   Lucida is a registered trademark of Bigelow & Holmes Inc.
voilà donc 14 lignes ou plutôt, 7 groupes de deux) mais je n'y arrive pas : quand je demande la taille du tableau, ça me répond "1"...
Et pourtant, il doit bien y avoir des n dans la liste, puisqu'on voit que les données sont correctement alignées à gauche.

J'aimerais bien avoir un tableau qui me dise "14", parce que j'ai d'autres données à lui extraire.

J'ai appelé mon tableau atab, et je le remplis ainsi, en utilisant la fonte Lucida Console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
atab=$(./showttfcustom -n /usr/share/fonts/AutresFontes/Machine/LUCON.TTF | grep -I -v Copyright | grep platform=1 -A1 | head -n 14)
echo $atab
platform=1 plat_spec_encoding=0 language=0 name=1 Family offset= 59 lenght= 14 Lucida Console platform=1 plat_spec_encoding=0 language=0 name=2 Subfamily offset= 73 lenght= 7 Regular platform=1 plat_spec_encoding=0 language=0 name=3 UniqueID offset= 80 lenght= 35 Lucida Console Regular; B&H alpha25 platform=1 plat_spec_encoding=0 language=0 name=4 FullName offset= 115 lenght= 14 Lucida Console platform=1 plat_spec_encoding=0 language=0 name=5 Version offset= 129 lenght= 12 Version 1.60 platform=1 plat_spec_encoding=0 language=0 name=6 Postscript offset= 141 lenght= 13 LucidaConsole platform=1 plat_spec_encoding=0 language=0 name=7 Trademark offset= 154 lenght= 57 Lucida is a registered trademark of Bigelow & Holmes Inc.
Par ailleurs, j'ai trouvé ça, quelque part :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
To read a whole line at once, use:
IFS=""
Alors j'ai testé, mais ça n'a rien changé, le tableau a toujours une taille de "1"...
Une idée ?

Grand merci par avance,

Tout le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
OLDIFS=$IFS
IFS=$'n'
ou (voir texte)
#IFS=""
declare -a atab
 
atab=$(while read -r f; do echo "$f"; done < <( (/data/_share/programmation/Fonts/progs4TrueType/Showttf_from_FontForge/showttfcustom -n /usr/share/fonts/AutresFontes/Machine/LUCON.TTF | grep -I -v Copyright | grep platform=1 -A1 | head -n 14) ))
echo "${!atab[@]}" # "0"
# doubles parenthèses obligatoires !
for ((i=0; i<"${#atab[@]}"; i++)); do echo "$i"; echo "${atab[$i]}"; done # un seul 0
IFS=$OLDIFS
PS : ce post fait suite à celui du 6/8/24, magistralement géré par disedorgue : https://www.developpez.net/forums/d2.../#post12038076

Et des infos relatives à FontForge et Showttf sont là : https://forum.lazarus.freepascal.org...7mc6#msg525854