Auteur Sujet: Les images SVG et les polices de caractères  (Lu 3377 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« le: 09 février 2023 à 22:12:17 »
Les images SVG et les polices de caractères

Les images vectorielles ont le vent en poupe : D'une taille raisonnable, elles peuvent s'adapter à la taille du terminal, contrairement aux images matricielles.

Le format vectoriel le plus utilisé est le .SVG (Scalable Vector Graphics). C'est un format de données ASCII conçu pour décrire des ensembles de graphiques vectoriels et basé sur XML.

Les images matricielles (.Jpeg, .PNG .WebP .GIF ...) sont des images constituées d'une matrice de points colorés. Quand on zoome, on voit des pixels, ce qui n'est pas le cas avec une image vectorielle.


La problématique avec le SVG, c'est quand on met du texte à l'intérieur.

Un exemple :



Si on édite le SVG, on voit apparaitre des font-family ou font-specificarion



Il y a 4 solutions possibles pour avoir un affichage SVG correct :

1/ Intégrer la police de caractères dans le SVG. Cela préserver l'accessibilité et il est possible de faire copier pour récupérer le texte dans une image et le coller dans un éditeur de texte. Chaque caractère n'est défini qu'une seule fois en vecteurs et seuls les caractères utilisés sont définis en vecteur. Vous n'utilisez pas la lettre W dans votre image ? Elle n'est pas mise en vecteur.

2/ Convertir le texte en chemin vectoriel. Cela peut prendre pas mal de place s'il y a de nombreux caractères. L'accessibilité est réduite : il n'est plus possible pour un lecteur d'écran de lire le texte, vu que ce sont des vecteurs.

3/ Intègre les polices dans une page web personnalisées en utilisant un peu de HTML et/ou de CSS. Là, les images SVG ne fonctionneront correctement que sur ce site web. En cas de reprise sur un autre site web ou même en local sur un PC, les polices ne seront plus présentes.

4/ Utiliser des polices de caractère qui sont régulièrement intégrées dans les systèmes d'exploitation*. Cela limite le choix et on continue à avoir des problèmes sur certains ordinateurs.[/size]
* : Exemple de polices proposées sur des systèmes d'exploitations populaires comme Windows : Arial, Baskerville, Bodoni, Calibri, Calisto, Cambria, Candara, Century Gothic, Consolas, Copperplate Gothic, Courier New, Dejavu Sans, Didot, Franklin Gothic, Garamond, Georgia, Gill Sans, Goudy Old Style, Helvetica, Impact, Lucida Bright, Lucida Sans, Microsoft Sans Serif, Optima, Palatino, Perpetua, Rockwell, Segoe UI, Tahoma, Trebuchet MS, Verdana.


La première solution, intégrer la police de caractères dans le SVG, me semble la plus intéressante, si vous savez comment la mettre en œuvre avec Adobe Illustrator, je suis preneur.

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #1 le: 09 février 2023 à 22:12:54 »
Exemple pour la solution 1/ : Intégrer la police de caractères dans le SVG.

L'image SVG 202302_svg_libreoffice_draw.svg affiche le texte "lafibre.info"

Dans cette image SVG, on retrouve un bloc "EmbeddedFont" qui va définir les caractères utilisés et seulement ceux qui sont utilisés.

Le texte est écrit avec un appel "EmbeddedBulletChars".

Le copier / coller est possible.
L'affichage est de qualité partout.



vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #2 le: 09 février 2023 à 22:12:58 »
Exemple pour la solution 2/ : Convertir le texte en chemin vectoriel.

L'image SVG 202302_svg_police_convertie_en_contours.svg.

Dans cette image SVG, on ne retrouve pas de bloc qui va définir les caractères utilisés, mais des vecteurs à perte de vue.

Le copier / coller est impossible.
L'affichage est de qualité partout.






Avec Inkscape, cela peut se faire champ texte par champ texte via le menu "Chemin" dans la barre de menu, puis "Objet en chemin" (raccourci Maj+Ctrl+C).


Pour sélectionner tous les champs texte d'une image, il faut en sélectionner un, puis aller dans le menu "Édition" dans la barre de menu, puis "Sélectionner même" => "Type d'objet" (raccourci Maj+Alt+A).


Avec Adobe Illustrator, c'est "Type" dans la barre de menu, puis "Créer des contours" (raccourci Shift+Ctrl+O).

Il est possible de le faire au moment de l'export : Dans la fenêtre "Options SVG", il faut sélectionner "Police : Contours".

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #3 le: 09 février 2023 à 22:17:59 »
Exemple pour la solution 3/ : Image qui fait appel à des polices de caractères externes.

L'image SVG 202302_svg_adobe_Illustrator.svg.

Dans cette image SVG, on retrouve un appel de la police "NowAlt-Medium", sans cette police sur le système, l'affichage sera dégradé.

Le copier / coller est possible.
L'affichage est dégradé sur les ordinateurs sans la police demandée.




Avec Adobe Illustrator, cela correspond à l'export "Police SVG" :

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #4 le: 10 février 2023 à 09:47:49 »
Exemple pour la solution 4/ : Utiliser des polices de caractère qui sont régulièrement intégrées dans les systèmes d'exploitation.

L'image SVG 202302_svg_inkscape.svg.

Dans cette image SVG, on retrouve un appel de la police "Sans-Serif" police de base généralement inclus dans les différents systèmes d'exploitation, sans cette police sur le système, l'affichage sera dégradé.

Le copier / coller est possible.
L'affichage est généralement de qualité.



vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #5 le: 10 février 2023 à 09:56:21 »
Vous souhaitez intégrer une image SVG dans un document LibreOffice Writer ou Microsoft Word ?

C'est une bonne idée : cela permet d'avoir une qualité bien supérieure à du bitmap pour le PDF généré, pour un poids inférieur.

Par contre, il est recommandé de convertir le texte en chemin (solution N°1 ou N°2) : L'intégration de police dans le PDF pour les images n'est pas proposée. La solution N°4 est une alternative, mais on ne sait pas si les polices en question seront toujours présentes dans 20 ans : Pour la lecture sur le long terme, il est recommandé d'embarquer toutes les polices dans un PDF et d'utiliser la norme PDF/A.



vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #6 le: 10 février 2023 à 11:02:30 »
Réduire la taille des images SVG (sans dégrader la qualité)




Scour est un optimiseur/nettoyeur SVG écrit en Python qui réduit la taille des graphiques vectoriels évolutifs en optimisant la structure et en supprimant les données inutiles.

L'objectif de Scour est de produire un fichier qui s'affiche de manière identique à une fraction de la taille en supprimant un grand nombre d'informations redondantes créées par la plupart des éditeurs SVG. Les options d'optimisation sont généralement sans perte, mais peuvent être modifiées pour un nettoyage plus agressif.

Scour est open source et sous licence Apache License 2.0. Le projet est sur GitLab : https://github.com/scour-project/scour

Son installation sous Linux est très simple : sudo apt install scour

Son utilisation est simple, mais en ligne de commande : scour -i image_source.svg -o image_optimise.svg

Petit script pour traiter tous les fichiers .svg d'un dossier : find . -name "*.svg" -exec scour -i {} -o {}.svg2 \;


$ find . -name "*.svg" -exec scour -i {} -o {}.svg2 \;
Scour processed file "./theme03_image02.svg" in 146 ms: 135205/163819 bytes new/orig -> 82.5%
Scour processed file "./theme03_image03.svg" in 393 ms: 219463/341695 bytes new/orig -> 64.2%
Scour processed file "./theme02_image03.svg" in 224 ms: 182593/231981 bytes new/orig -> 78.7%
Scour processed file "./theme01_image02.svg" in 304 ms: 186459/248992 bytes new/orig -> 74.9%
Scour processed file "./theme02_image02.svg" in 315 ms: 186688/254310 bytes new/orig -> 73.4%
Scour processed file "./theme03_image04.svg" in 309 ms: 237882/304695 bytes new/orig -> 78.1%
Scour processed file "./theme02_image04.svg" in 260 ms: 157306/214142 bytes new/orig -> 73.5%
Scour processed file "./theme02_image01.svg" in 517 ms: 503822/618068 bytes new/orig -> 81.5%
Scour processed file "./theme03_image01.svg" in 186 ms: 108975/146844 bytes new/orig -> 74.2%
Scour processed file "./theme01_image03.svg" in 374 ms: 232194/315149 bytes new/orig -> 73.7%
Scour processed file "./theme01_image01.svg" in 279 ms: 209321/266004 bytes new/orig -> 78.7%

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #7 le: 10 février 2023 à 13:37:22 »
Si vous utilisez Inkscape, Scour est intégré, il suffit d'enregistrer en "SVG optimisé" pour passer par lui.

Attention, sous Linux, une dépendance n'est pas toujours installée "python-packaging" : sudo apt install python3-packaging



Il y a en plus une belle interface graphique pour aller au-delà de l'optimisation de base (les options et ses effets sont décrits en français en passant la souris sur l'option)



vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #8 le: 16 février 2023 à 15:58:38 »
J'ai une société qui travaille sous Illustrator (sous Mac) et qui n'arrive pas à convertir le texte en chemin vectoriel ou intégrer la police de caractères dans le SVG.

Si vous avez des connaissances sur l'utilisation d'Illustrator, je suis preneur de la solution.

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #9 le: 28 février 2023 à 15:16:02 »
Pour réduire la taille d'un fichier SVG, la solution est de mettre une image bitmap pour les parties trop complexe à définir par des vecteurs.

Dans l'image SVG ci-dessous, la partie filaire du logo de l'Arcep prend beaucoup de place (le PDF source réalisé par l'agence, tout en vectoriel, fait 4 Mo).

On passe à 338 Ko sans dégradation visible dans cette taille, en mettant la partie complexe du logo (et uniquement celle-là) en bitmap, intégré dans le SVG.



hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Les images SVG et les polices de caractères
« Réponse #10 le: 01 mars 2023 à 01:02:25 »
Dans cette image SVG, on retrouve un appel de la police "Sans-Serif" police de base généralement inclus dans les différents systèmes d'exploitation, sans cette police sur le système, l'affichage sera dégradé.
C'est une famille, pas une police particulière.
La police utilisée va dépendre de ce qui est installé, et des préférences (soit au niveau système, soit au niveau du navigateur).
Par exemple sous Windows, les navigateurs ont à priori Arial comme police sans-serif par défaut, mais ça peut être changé dans les préférences.
Sous Linux, ça peut être Liberation Sans, DejaVu Sans, Noto Sans, ...

vivien

  • Administrateur
  • *
  • Messages: 47 231
    • Twitter LaFibre.info
Les images SVG et les polices de caractères
« Réponse #11 le: 25 avril 2023 à 21:13:22 »
Dans d'autres cas, on a une police de spécifié :
<text y="153.30466" x="127.89009" style="font-variant:normal;font-weight:300;font-stretch:normal;font-size:2.82222199px;font-family:'HelveticaNeueLT Std Lt';-inkscape-font-specification:HelveticaNeueLTStd-Lt;writing-mode:lr-tb;display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" id="text112">
Image d'origine : 202107_arcep_rapport_etat_internet_2021_4_neutralite_4_original.svg
Image avec les objets en chemin : 202107_arcep_rapport_etat_internet_2021_4_neutralite_4.svg
(opération réalisée sur un PC disposant des polices concernées, après avoir, avec Inkscape, dans le menu "Chemin", puis "Objet en chemin" + optimisation scour intégrée dans Inkscape pour réduire la taille).

Animation qui passe d'une image à l'autre :