setTextSize(taille);

Impose la taille des textes.

 

Exemples d'utilisation

setTextSize(1); // Rien ne doit se passer (ne joue que pour des text() qui suivent)
setTextSize(1); text("Bonjour"); // Affichage en petit

 

Référence

void setTextSize(int taille);

Paramètre passé

taille: taille des caractères (1.. )

Valeur retournée

Aucune

 

Voir aussi

- getTextSize(); Retourne la taille des caractères
- setTextSize Taille des caractères
- Fonte vectorielle Définition de la fonte utilisée
- text(); Écrit du texte
- setTextColor(); Couleur du texte
- setTextBold(); Gras ou normal
- setTextItalic(); Italique ou normal
- setTextSerif(); Avec ou sans empattement
- setTextOrient(); Direction d'écriture des textes

 

Notes

La taille des caractères est accessible par la variable textSize. Mais quand on change de mode, il y a d'autres initialisations (notamment l'épaisseur des traits). On ne peut donc pas changer le mode grâce à cette variable. Il faut donc utiliser setTextSise()

Les caractères sont définis vectoriellement dans une matrice de 8 pixels de haut, bien que certains jambages dépassent vers le bas (lettres j j p q). La fonte est de largeur variable, et la matrice de définition va de 2 à 7 pixels de large. En moyenne la matrice de définition fait 5*8. En taille N, le caractère tient en moyenne dans une matrice 5N*8N pixels. Après initialisation, la taille vaut 2. La plus petite taille est de 1; il n'y a pas de limite supérieure, mais il faudrait que le caractère ou le mot puisse tenir sur l'écran. Plus la taille est importante, plus elle met de temps à s'afficher. Comme la fonte est vectorielle, elle supporte les agrandissements.

La fonte est dessinée en traçant des droites et des arcs de cercles. Le dessin minimum est filiforme et on trace un segment de droite ou un arc par vecteur de définition. C'est l'idéal pour les petites tailles, mais cela fait trop maigre pour les grandes tailles. On va donc épaissir le tracé. Pour les droites verticales par exemple, on va tracer non pas une droite, mais plusieurs. La variable textBold indique combien de lignes sont dessinées (pour un tracé filiforme, c'est 1 ligne par exemple). Quand on change la taille des caractères, cela va mettre à jour l'épaisseur suivant la règle:

  setTextSize     Nb de traits  
1 ou 21
3, 4, ou 52
6, 7 ou 83
......

Comme la fonction setTextSize() modifie aussi l'épaisseur des traits, on doit appeler cette fonction pour changer la taille, et on ne peut pas utiliser textSize=taille;.

 

Exemple

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-303-setTextSize\Exemple-303-setTextSize.ino (dans votre fichier téléchargé):

// Ce programme affiche un mot dans les différents tailles. Pour les
// petites tailles, le tracé est filiforme (textBold=0), pour les plus
// grandes, c'est comme un bold automatique.

#include <PecheuxGraph_ILI9341_8bits.h>
void setup() 
{
  setGraphMode(PAYSAGE); // Initialisation générale

  for (int taille=1; taille<8; taille++) // Pour les tailles de 1 à 7
  {
    setTextKeep(KEEP); // Car la taille 7 tiendra en haut
    setTextSize(taille); // Choix de la taille
    text("\n   Size"+String(taille)); // Affichage du résultat
  }
}

void loop()
{
}

Résultat:

 

Côté technique

Les caractères ont une largeur variable. Ils sont définis par une matrice de 8 de haut et de largeur adéquat. Le "|" a une largeur de 1 seulement alors que le "m" a une largeur de 7. Certains traits peuvent dépasser la matrice, notamment par le bas pour les lettres avec jambage "g", "j" "ç"... A cela il faut éventuellement rajouter les empattements, ces petits traits horizontaux qui peuvent augmenter la largeur d'une unité vers la droite ou/et vers la gauche.

Chaque caractère ne peut avoir que 7 vecteurs maximum (droite ou arc de cercle), ce qui permet dans un seul octet de donner la largeur avec ou sans empattement et le nombre de vecteurs.

En augmentant la taille de la matrice, on améliore la qualité des caractères, mais on augmente aussi la taille de la définition des caractères. Avec la matrice 8x7 chaque vecteur (ligne ou arc de cercle est défini avec un word. Pour avoir une matrice plus grande, il faudrait doubler la définition d'un vecteur, mais aussi augmenter la taille de l'adresse des vecteurs. Avec ma fonte par défaut, il y a 0xEC vecteurs et l'adresse d'un vecteur tient sur 8 bits. C'est donc un compromis entre la taille et la précision.

 

text()   <<     >>   getTextSize()