Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les fichiers d'entête de bibliothèque
Les fichiers de code source
Référence des fonctions
Les premiers pas
Les formats d'image
La quantification des couleurs
Le recadrage d'image
Le rendu des polices de caractères FreeType dans LibGD
Les filtres d'image
Polices de caractères intégrées
Les matrices
Les transformations
Les entrées/sorties AVIF
Les entrées/sorties BMP
Les entrées/sorties GD
Les entrées/sorties GD2
Les entrées GIF
Les sorties GIF
Les entrées/sorties HEIF
Les entrées/sorties JPEG
Les entrées/sorties PNG
Les entrées TGA
Les entrées/sorties TIFF
Les entrées/sorties WBMP
Les entrées/sorties WebP
Les entrées/sorties XBM
Les entrées XPM
Police de caractères géante
Grande police de caractères
Police de caractères moyennement grasse
Petite police de caractères
Très petite police de caractères
Préface
Notes légales
Dictionnaire
Recherche

Le rendu des polices de caractères FreeType dans LibGD

Le LibGD prend en charge le rendu des polices de caractères TrueType grâce à l'intégration de FreeType, une bibliothèque populaire pour le rendu de polices de caractères vectorielles. Cette fonctionnalité permet aux développeurs d'ajouter du texte personnalisé à des images en utilisant une large gamme de polices de caractères TrueType (.ttf). Contrairement aux polices de caractères bitmap classiques, les polices de caractères FreeType permettent un rendu précis et évolutif, ce qui garantit une excellente qualité, peu importe la taille du texte. Cette capacité est utile pour générer des graphiques, des bannières ou des images annotées dynamiquement dans des applications Web ou de bureau.

Utilisation de gdImageStringFT pour le rendu

La fonction clef pour utiliser les polices de caractères FreeType dans LibGD est gdImageStringFT. Cette fonction permet de dessiner du texte sur une image à l'aide d'une police de caractères TrueType spécifiée. Elle prend en paramètre l'image cible, la couleur du texte, le chemin vers le fichier de la police de caractères, la taille du texte et les coordonnées où le texte doit être placé. Par exemple, on peut générer un texte en italique ou en gras en utilisant des polices de caractères spécifiques, et même appliquer des rotations. Cette flexibilité rend la fonctionnalité idéale pour les projets nécessitant des textes enrichis ou stylisés.

Avantages des polices vectorielles dans LibGD

Le principal avantage du rendu FreeType dans LibGD est la qualité graphique. Les polices de caractères TrueType sont conçues pour être redimensionnées sans perte de qualité, ce qui est essentiel pour des cas d'utilisation où le texte doit s'adapter à différents formats ou tailles d'image. De plus, FreeType prend en charge des effets avancés tels que l'antialiasing, qui améliore la lisibilité du texte en rendant les contours plus lisses. En combinant ces fonctionnalités avec les capacités graphiques de LibGD, il est possible de produire des images de qualité professionnelle adaptées à des contextes variés.

Limitations et considérations

Bien que puissant, le rendu des polices de caractères FreeType avec LibGD peut avoir quelques limites. Par exemple, pour utiliser cette fonctionnalité, la bibliothèque FreeType doit être installée et correctement configurée sur le système. De plus, l'utilisation de fichiers de polices spécifiques nécessite que ces fichiers soient disponibles sur le serveur ou l'environnement d'exécution. Une mauvaise configuration des chemins de polices ou des paramètres de taille peut également entraîner des erreurs ou des résultats inattendus. Enfin, il est important de tenir compte des licences des polices utilisées, car certaines polices de caractères peuvent être restreintes pour un usage commercial.

Les fonctions

Voici les fonctions de rendu des polices de caractères FreeType proposé par la bibliothèque LibGD :

Nom Description
gdImageStringTTF Alias de la fonction gdImageStringFT. Elle permet de rendre une chaîne de caractères UTF-8 sur une image GD en utilisant une police de caractères TrueType.
gdFreeFontCache Alias de la fonction gdFontCacheShutdown. Cette fonction libère les ressources allouées pour le cache des polices de caractères.
gdFontCacheShutdown Permet de désactiver le cache des polices de caractères et de libérer les ressources associées.
gdImageStringFT Rend une chaîne de caractères UTF-8 sur une image GD. Cette fonction est le principal outil pour intégrer du texte personnalisé avec des polices de caractères TrueType.
gdFontCacheSetup Configure le cache des polices, améliorant les performances lors de l'utilisation répétée de polices de caractères.
gdImageStringFTEx Étend les fonctionnalités de gdImageStringFT en permettant de passer des paramètres supplémentaires pour un contrôle avancé sur le rendu du texte.
gdFTUseFontConfig Active ou désactive l'utilisation de Fontconfig par défaut, un outil de gestion des polices de caractères système.

gdImageStringTTF

char * gdImageStringTTF(gdImagePtr im, int * brect, int fg, const char * fontlist, double ptsize, double angle, int x, int y, const char *string);

Alias de gdImageStringFT.

gdFreeFontCache

void gdFreeFontCache();

Alias de gdFontCacheShutdown.

gdFontCacheShutdown

void gdFontCacheShutdown ()

Cette fonction permet de fermer le cache des polices de caractères et de libérez les ressources allouées.

Important : cette fonction doit être appelée à chaque fois que des opérations FreeType ont été invoquées, afin d'éviter les fuites de ressources. Il n'y a pas de mal à appeler cette fonction plusieurs fois.

gdImageStringFT

char * gdImageStringFT(gdImagePtr im, int *brect, int fg, const char *fontlist, double ptsize, double angle, int x, int y, const char *string)

Cette fonction permet d'afficher une chaîne de caractères UTF-8 sur une image gd.

Paramètres

Nom Description
im Ce paramètre permet d'indiquer l'image sur laquelle dessiner.
brect Ce paramètre permet d'indiquer le rectangle de délimitation est un tableau de 8 entiers où chaque paire représente les coordonnées x et y d'un point. Les points spécifient le coin inférieur gauche, inférieur droit, supérieur droit et supérieur gauche.
fg Ce paramètre permet d'indiquer la couleur de la police de caractères.
fontlist Ce paramètre permet d'indiquer la liste délimitée par des points-virgules des noms de fichiers de polices de caractères à rechercher.
ptsize Ce paramètre permet d'indiquer la hauteur de la police de caractères en points typographiques (pt).
angle Ce paramètre permet d'indiquer l'angle en radians pour faire pivoter la police de caractères dans le sens inverse des aiguilles d'une montre.
x Ce paramètre permet d'indiquer la coordonnée x du point de base (environ le coin inférieur gauche) de la première lettre.
y Ce paramètre permet d'indiquer la coordonnée y du point de base (environ le coin inférieur gauche) de la première lettre.
string Ce paramètre permet d'indiquer la chaîne de caractères à restituer.

Variant

Voir également

gdFontCacheSetup

int gdFontCacheSetup(void);

Cette fonction permet de configurer le cache de polices de caractères.

Cette fonction est appelée automatiquement à partir des fonctions de rendu de chaîne, si elle n'a pas déjà été appelée. Il n'est donc pas nécessaire d'appeler cette fonction explicitement.

gdImageStringFTEx

gdImageStringFTEx étend les capacités de gdImageStringFT en fournissant un moyen de transmettre des paramètres supplémentaires.

Si le paramètre strex n'est pas nul, il doit pointer vers une structure gdFTStringExtra. Depuis gd 2.0.5, cette structure est définie comme suit :

  1. typedef struct {
  2.     /* OU logique des valeurs gdFTEX_ */
  3.     int flags;
  4.  
  5.     /* affiner l'espacement des lignes pour '\n' */
  6.     double linespacing;
  7.  
  8.     /* Cartographie de caractères préféré */
  9.     int charmap;
  10.  
  11.     /* Résolution de rendu */
  12.     int hdpi;
  13.     int vdpi;
  14.     char *xshow;
  15.     char *fontpath;
  16. } gdFTStringExtra, *gdFTStringExtraPtr;

Pour générer un texte multiligne avec un espacement de ligne spécifique, incluez gdFTEX_LINESPACE dans le paramètre des indicateurs :

  1. flags |= gdFTEX_LINESPACE;

Et définissez également l'espacement des lignes sur l'espacement souhaité, exprimé sous la forme d'un multiple de la hauteur de la police de caractères. Ainsi, un espacement de ligne de 1,0 est le minimum pour garantir que les lignes de texte n'entrent pas en collision.

Si gdFTEX_LINESPACE n'est pas présent, ou si strex est nul, ou si gdImageStringFT est appelé, l'espacement des lignes par défaut est de 1,05.

Pour spécifier une préférence pour l'encodage de caractères Unicode, Shift_JIS Big5, définissez ou Pour générer un texte multiligne avec un espacement de ligne spécifique, incluez gdFTEX_CHARMAP dans le paramètre des indicateurs :

  1. flags |= gdFTEX_CHARMAP;

Et définissez charmap sur la valeur souhaitée, pouvant être gdFTEX_Unicode, gdFTEX_Shift_JIS, gdFTEX_Big5 ou gdFTEX_Adobe_Custom. Si vous ne spécifiez pas de préférence, Unicode sera essayé en premier. Si la cartographie de caractères préféré n'est pas trouvé dans la police de caractères, d'autres cartographies de caractères sont tentés.

GD fonctionne sur l'hypothèse que l'image de sortie sera rendue sur un écran d'ordinateur. Par défaut, gd transmet une résolution de 96 dpi au moteur de rendu de texte freetype. Cela influence les décisions de «suggestion» prises par le moteur de rendu. Pour spécifier une résolution différente, définissez hdpi et vdpi en conséquence (en points par pouce) et ajoutez gdFTEX_RESOLUTION aux indicateurs :

  1. flags | gdFTEX_RESOLUTION;

GD 2.0.29 et les versions ultérieures tenteront normalement d'appliquer des tables de crénage, si fontconfig est disponible, pour ajuster les positions relatives des caractères consécutifs de manière plus idéale pour cette paire de caractères. Cela peut être désactivé en spécifiant l'indicateur gdFTEX_DISABLE_KERNING :

  1. flags | gdFTEX_DISABLE_KERNING;

GD 2.0.29 et les versions ultérieures peuvent renvoyer un vecteur d'avancement de position de caractère individuel, ce qui est parfois utile dans les applications devant savoir exactement où commence chaque caractère. Ceci est renvoyé dans l'élément xshow de la structure gdFTStringExtra si l'indicateur gdFTEX_XSHOW est défini :

  1. flags | gdFTEX_XSHOW;

L'appelant est responsable de l'appel de gdFree() sur l'élément xshow après l'appel si gdFTEX_XSHOW est défini.

GD 2.0.29 et versions ultérieures peuvent également renvoyer le chemin d'accès au fichier de police réellement utilisé si l'indicateur gdFTEX_RETURNFONTPATHNAME est défini. Ceci est utile car GD 2.0.29 et versions ultérieures sont capables de sélectionner automatiquement une police en fonction d'un modèle de police de caractères fontconfig lorsque fontconfig est disponible. Ces informations sont renvoyées dans l'élément fontpath de la structure gdFTStringExtra.

  1. flags | gdFTEX_RETURNFONTPATHNAME;

L'appelant est responsable de l'appel de gdFree() sur l'élément fontpath après l'appel si gdFTEX_RETURNFONTPATHNAME est défini.

GD 2.0.29 et versions ultérieures peuvent utiliser fontconfig pour résoudre les noms de polices de caractères, y compris les modèles fontconfig, si l'indicateur gdFTEX_FONTCONFIG est défini. Pour plus de commodité, ce comportement peut être défini par défaut en appelant gdFTUseFontConfig avec une valeur différente de zéro. Dans cette situation, il n'est pas nécessaire de définir l'indicateur gdFTEX_FONTCONFIG à chaque appel ; cependant, des noms de chemin de police de caractères explicites peuvent toujours être utilisés si l'indicateur gdFTEX_FONTPATHNAME est défini :

  1. flags | gdFTEX_FONTPATHNAME;

À moins que gdFTUseFontConfig n'ait été appelé avec une valeur différente de zéro, GD 2.0.29 et les versions ultérieures s'attendront toujours à ce que le paramètre fontlist des fonctions de sortie de texte freetype soit un nom de fichier de police de caractères ou une liste de ceux-ci comme dans les versions précédentes. Si vous ne souhaitez pas faire de fontconfig la valeur par défaut, il est toujours possible de forcer l'utilisation de fontconfig pour un seul appel aux fonctions de sortie de texte freetype en définissant l'indicateur gdFTEX_FONTCONFIG :

  1. flags | gdFTEX_FONTCONFIG;

GD 2.0.29 et les versions ultérieures peuvent utiliser fontconfig pour résoudre les noms de polices de caractères, y compris les modèles fontconfig, si l'indicateur gdFTEX_FONTCONFIG est défini. Pour plus de commodité, ce comportement peut être défini par défaut en appelant gdFTUseFontConfig avec une valeur différente de zéro. Dans cette situation, il n'est pas nécessaire de définir l'indicateur gdFTEX_FONTCONFIG à chaque appel ; cependant, des noms de chemin de police de caractères explicites peuvent toujours être utilisés si l'indicateur gdFTEX_FONTPATHNAME est défini :

  1. flags | gdFTEX_FONTPATHNAME;

Pour plus d'informations, voir gdImageStringFT.

gdFTUseFontConfig

int gdFTUseFontConfig(int flag)

Cette fonction permet d'activer ou de désactiver fontconfig par défaut. Si GD est compilé sans la prise en charge de libfontconfig, cette fonction est un NOP.

Paramètres

Nom Description
flag Zéro pour désactiver, différent de zéro pour activer.

Voir également



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mardi, le 8 octobre 2024