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 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.