setTextSerif()

Choisit avec ou sans empattements (serif).

 

Exemples d'utilisation

setTextSerif(NORMAL); // Supprime les empattements pour les fonctions text() qui suivent
textSerif=NORMAL; // Équivalent en utilisant la variable
setTextSerif(SERIF); // Dessine les empattements pour les fonctions text() qui suivent

 

Référence

void setTextSerif(boolean serif);

Paramètre passé

serif: SERIF (true) = présence d'empattements, NORMAL (false) = absence d'empattement

Valeur retournée

Aucune

 

Voir aussi

- SERIF Pour le passage au mode avec empattements
- NORMAL Pour le passage au mode sans empattements
- b=getTextSerif(); Retourne SERIF ou NORMAL
- textSerif Contient SERIF ou NORMAL
- Fonte vectorielle Définition de la fonte utilisée
- text(); Écrit du texte
- setTextColor(); Couleur du texte
- setTextSize(); Taille des caractères
- setTextBold(); Gras ou normal
- setTextItalic(); Italique ou normal
- setTextOrient(); Direction d'écriture des textes

 

Notes

Les empattements (serif en anglais) sont des petites droites qui sont rajoutées à certaines extrémités des caractères, en rouge sur l'image de droite. Dans la fonte de PecheuxGraph, si serif=NORMAL, il n'y a pas d'empattement, mais si serif=SERIF on va trouver des petits traits horizontaux sur certaines droites verticales. Par défaut serif=SERIF.

Les empattement ont une longueur de taille/2 pixels et les caractères de taille 1 n'ont pas la place de dessiner ces empattements. Les caractères de taille 2 vont avoir des empattements de longueur 1 pixel ce qui peut se dessiner. Sur page de description de la fonte vectorielle, les empattement apparaissent en vert

A l'initialisation, le mode est SERIF. Le changement de mode se fait par la fonction setTextSerif() ou grâce à la variable textSerif. La première méthode est meilleure (plus de sécurité), mais la deuxième nécessite moins d'octets dans un contexte de carte Uno, c'est une économie.

 

 

Exemple

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

// Ce programme affiche les caractères principaux en rouge et dessine les empattement possibles en jaune. Pour ce faire, on dessine
// en jaune le caractère avec empattement et on dessine par dessus en rouge le caractère sans empattement. Comme les caractères avec
// ou sans empattements n'ont pas forcément la même taille, et donc doivent se décaler pour se superposer, on mémorise ceux qui
// s'élargissent (tableau "large[]")

#include <PecheuxGraph_ILI9341_8bits.h>

int large['z'+1]; // 5 si le caractère correspondant est plus large en sérif que sans
int largeur; // Du caractère analysé
char caractere; // Pour dessiner

void setup() 
{
  setGraphMode(PAYSAGE); // Initialisation générale
  setTextSize(10); // Pour mieux voir
  
  // Initialisation du tableau large
  setTextColor(BLACK); // Pour ne pas voir l'initialisation
  for (caractere='!'; caractere<='z'; caractere++) // Pour chaque caractère imprimable et codé sur un seul octet
  {
    setTextCursor(10,10); setTextSerif(NORMAL); text(String(caractere)); // Dessin du caractère sans empattement non affiché (noir sur fond noir)
    largeur=getTextCursorX(); // Pour pouvoir comparer avec celle si il y empattements
    setTextCursor(10,10); setTextSerif(SERIF); text(String(caractere)); // Dessin du caractère avec empattement non affiché (noir sur fond noir)
    large[caractere]=((getTextCursorX()>largeur)? 5: 0); // large contient des 5 pour les caractères qui s'élargissent avec empattements
  }
  large['G']=0; large['a']=0; large['d']=0; large['q']=0; large['&']=0; // Caractères qui ne s'élargissent pas à gauche, mais seulement à droite
}

void loop()
{
  if (++caractere>'z') caractere='!'; // Choix du caractère: caractère suivant et bouclage
  setTextCursor(20,10); setTextSerif(SERIF); setTextColor(YELLOW); text(String(caractere)); // Empattements en jaune (le reste disparaît)
  setTextCursor(20+large[caractere],10); setTextSerif(NORMAL); setTextColor(RED); text(String(caractere)); // Surimpression pour mettre en rouge le caractère
  delay(1000);
  fillRect(0,0,95,95,BLACK); // Efface l'écran, enfin ce qui est utile
}

Résultat:

 

Côté technique

Dans la fonte, pour les droites, deux bits ont été pris pour les empattements des droites verticales (y a-t-il un empattement en haut? en bas?) plus deux bits indiquant si, du fait de ces empattements, la largeur du caractère augmente ou pas. Si je voulais des empattements pour les droites horizontales if faudrait préciser si il y a empattement ou pas et si le trait est vers le haut ou vers le bas. Pour la fin d'un arc de cercle, il faudrait pour chaque extrémité, indiquer la direction. C'est pour cela que je n'ai défini que les empattements des segments verticaux.

Si il y a un empattement en haut d'une droite, ce sera vers la gauche. Si c'est en bas, ce sera des deux côtés.