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 :
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"...
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.
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 :
Par ailleurs, j'ai trouvé ça, quelque part :
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.
Alors j'ai testé, mais ça n'a rien changé, le tableau a toujours une taille de "1"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 To read a whole line at once, use: IFS=""
Une idée ?
Grand merci par avance,
Tout le code :
PS : ce post fait suite à celui du 6/8/24, magistralement géré par disedorgue : https://www.developpez.net/forums/d2.../#post12038076
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
Et des infos relatives à FontForge et Showttf sont là : https://forum.lazarus.freepascal.org...7mc6#msg525854
Partager