*FONT
*FONT
DESCRIPTION.
La commande système *FONT permet de charger une police de caractères, ou fonte, au standard UTF-8 et de spécifier ses attributs.
SYNTAXE.
*FONT police , taille , attributs
REMARQUES.
police est le nom du fichier contenant les caractéristiques de la police à charger. police doit être exprimé de manière absolu, c'est-à-dire qu'il doit contenir le chemin d'accès complet et l’extension .ttf ou .otf selon le format de la police.
taille doit être un nombre entier désignant la taille, en points DTP, ou point pica, des symboles. un point DTP vaut c'est-à-dire 1/72 de pouce.
attributs doit une lettre ou une combinaison de lettres définissant le style des caractères. Les styles sont désignés par un :
- B, pour des caractères gras ;
- I, pour des caractères italiques ;
- U, pour des caractères soulignés, ce style ne peut être associé avec l'attribut Q ;
- Q, pour des caractères barrés, ce style ne peut être associé avec l'attribut U.
Bien que le standard ASCII soit nettement suffisant pour de petits programmes personnels ou du prototypage, le standard UTF-8 devrait être systématiquement sélectionné pour applications qui doivent être plus largement distribuées. En effet, il s'agit du standard d'encodage des caractères permettant d'obtenir l'intégralité des symboles typologiques recensés, y compris les alphabets grec, cyrillique, arabe, hébreu, ... , tout en restant compatible avec le standard ASCII .
On pourra modifier le standard d'encodage grâce à la commande VDU 23 , 22 , largeur ; hauteur ; caract_largeur , caract_hauteur , palette , encodage. encodage pourra prendre la valeur :
- 0, ou 128, pour le standard ASCII, valeur par défaut ;
- 1, ou 129, pour le code OEM (IBM PC) ;
- 8, ou 130, pour le standard UTF-8.
A son ouverture, une fenêtre de sortie, affichera les caractères en blanc sur fond noir. Pour inverser ce comportement, on ajoutera 128 à encodage, ce qui donnera 136 pour l'UTF-8.
Note : il semblerait que le fait de charger une police ttf ou otf à l'aide de la commande système *FONT, fasse passer automatiquement en encodage UTF-8. De plus en mode UTF-8, les caractères de l'encodage UTF-8 peuvent nécessiter 1, 2 ou 3 octets de mémoire selon leur place dans la liste des symboles.
Voir la commande VDU pour plus de détails sur les autres paramètres de la commande VDU 23 , 22 , .
Si on opte pour l'encodage universel UTF-8, il faudra, s'assurer que l'utilisateur disposera de cette fonte en la plaçant dans les fichiers de votre distribution. Ce qui implique que cette police soit libre de droit, en étant par exemple sous GNU GPL, ou que vous ayez ses droits d'exploitation et/ou de diffusion.
BBC BASIC for SDL 2.0 propose, dans le répertoire BBCBasic/lib/, les fontes au standard UTF-8 :
- DejaVuSansMono.ttf, DejaVuSans-Oblique.ttf, DejaVuSans.ttf ;
- FreeSerif.ttf, FreeMono.ttf, FreeSans.ttf ;
- Bedstead.otf, Bedstead-ext.otf.
Le fichier contenant la fonte souhaitée devant être obligatoirement donné dans sa forme absolue, c'est-à-dire avec son chemin d'accès complet avec son extension .ttf ou .otf.
Si la désignation du fichier ne correspond pas exactement à l'emplacement donné à la suite de la commande système *FONT une erreur "No such font" sera retournée et stoppera l’exécution du programme, si aucune gestion de ce type d'erreur n'est prévue.
Si le programme prévoit que l'utilisateur pourra supprimer certains fichiers, on pourra utiliser l'instruction OSCLI qui permet de transmettre une chaine de caractères en tant que commande au système d'exploitation (OS) de la machine hote. Voir l'instruction OSCLI pour plus de détails.
INPUT "Indiquez la nouvelle police de caractères à charger " ; kfichier$
OSCLI "FONT """ + kfichier$ + """"
Important : l'utilisation d'une fonte au standard UTF-8 peut engendrer des comportements du programme indésirables. par exemple, l'utilisation de l'instruction INPUT avec une fonte à espacement proportionnel provoquera un dysfonctionnement des fonctions d'édition, en ne masquant pas totalement un caractère effacé par un "retour arrière" et les flèches de déplacement vers la gauche et/ou la droite pourraient faire chevaucher le curseur textuel sous deux caractères.
RUBRIQUES.
L'affichage des textes pour plus de détails sur la gestion de l'affichage des textes.
EXEMPLE.
MODE 8
VDU 23 , 22 , 640 ; 512 ; 8 , 16 , 16 , 8
REPEAT
REPEAT
PRINT "Quelle police : [D]ejaVu, [F]ree, [B]edstead ou [Q] pour quitter ?" : kchoix$ = GET$
CASE kchoix$ OF
WHEN "D" , "d" : kfonte$ = "DejaVuSans.ttf"
WHEN "F" , "f" : kfonte$ = "FreeSans.ttf"
WHEN "B" , "b" : kfonte$ = "Bedstead.otf"
WHEN "Q" , "q" : kfonte$ = "quitter"
OTHERWISE kfonte$ = "none"
ENDCASE
IF kfonte$ <> "none" THEN EXIT REPEAT
PRINT "Choix non valide !"
UNTIL FALSE
IF kfonte$ = "quitter" THEN EXIT REPEAT
kfichier$ = @lib$ + kfonte$
INPUT "Quelle taille (de 4 a 32) " , ktaille
IF ktaille < 4 THEN ktaille = 4
IF ktaille > 32 THEN ktaille = 32
ktaille$ = STR$( ktaille )
PRINT "En gras [O] ou [N]on ?" : kchoix$ = GET$
IF kchoix$ = "O" OR kchoix$ = "o" THEN kattribut$ = "B" ELSE kattribut$ = ""
PRINT "En italique [O] ou [N]on ?" : kchoix$ = GET$
IF kchoix$ = "O" OR kchoix$ = "o" THEN kattribut$ += "I"
IF kattribut$ <> "" THEN kattribut$ = " , " + kattribut$
OSCLI "FONT " + kfichier$ + "," + ktaille$ + kattribut$
PRINT "ABC abc 123 +/= ([{"
UNTIL FALSE
PRINT "Fin du test. Au revoir."
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.