[API] char (table des caractères)
2 participants
Page 1 sur 1
[API] char (table des caractères)
Une API pour simplifier l'accès aux caractères spéciaux.
Pour info (depuis la version ComputerCraft 1.76), 256 caractères sont disponibles via la fonction string.char( num )
num étant un nombre entier, compris entre 0 et 255
La fonctionnalité de l'API char est similaire aux API colors et keys. J'ai rétribué à chaque code le nom du caractère auquel il fait référence.
http://pastebin.com/nPRYvMQk
Autant que possible, je me suis référé à ces sources :
J'ai cherché à faire un truc exhaustif, même si je me doute bien que l'API sera surtout utile pour afficher différentes flèches et curseurs, moins pour afficher des caractères accentués.
Mais pour certains cas particuliers j'ai du improviser, et ça nécessiterait peut être quelques corrections.
Pour les caractères accentués, j'ai repris la dénomination des entités html : http://www.lookuptables.com/index/web.gif
Pour les caractères les plus obscures, à fin de vérification, j'ai employé cette astuce :
Code que je reprend et utilise comme référence dans une recherche sur le net. C'est comme ça que j'ai pu démystifier les nombreux caractères blancs.
Le mieux que j'ai trouvé est 'INFORMATION SEPARATOR THREE' (U+001D) mais sans visuel pour confirmer.
http://www.fileformat.info/info/unicode/char/001d/index.htm
char.teletext_100000
J'ai cherché en vain la référence exacte. Ce que j'ai trouvé de plus approchant, sont dénommé "Block Elements", "Quadrant". Mais ceux là sont subdivisé en 4 et non en 6..
J'ai donc improvisé cette norme, le nombre binaire qui suit décrit dans l'ordre si un carré est plein ou vide. (haut gauche, haut droit, milieu gauche, milieu droit, bas gauche, bas droit) (1 == plein, 0 == vide)
N'oubliez pas que toutes les combinaisons possibles ne sont pas disponibles. Pour y parvenir il faut bidouiller et intervertir les couleurs du texte et background. (impossible sur une imprimante CC, car il n'y a pas de couleur d'arrière plan)
Vous ne pouvez pas utiliser string.char() ou l'API char pour écrire dans un fichier. Soit c'est un bug, soit c'est impossible.
La seule application est à l'écriture sur l'écran, ou sur papier via l'imprimante.
Vous ne pourrez (à priori) pas non plus enregistrer des chaînes contenant ces caractères via l'API settings, puisqu'elle repose également sur l'écriture dans un fichier.
edit: en fait non.. Je sais plus pourquoi je l'ai cru..
Le résultat est un caractère blanc, mais son code semble faire réfèrence au symbole €
http://www.fileformat.info/info/unicode/char/0080/browsertest.htm
char.nbsp / string.char(160)
En français s’appelle "espace insécable" (non-breaking space), c'est à dire identique à un espace, mais ne se coupe pas en bout de ligne. C'est utile en terme de norme typographique (conventions). Enfin, pas dans ComputerCraft. S'il est bien différent d'un espace standard (comparaison de chaînes) il se comporte comme un espace standard (il n'empêche pas la séparation de deux mots par un retour à la ligne)
Pour info (depuis la version ComputerCraft 1.76), 256 caractères sont disponibles via la fonction string.char( num )
num étant un nombre entier, compris entre 0 et 255
La fonctionnalité de l'API char est similaire aux API colors et keys. J'ai rétribué à chaque code le nom du caractère auquel il fait référence.
http://pastebin.com/nPRYvMQk
- Code:
pastebin get nPRYvMQk char
Usage :
- Code:
os.loadAPI("char")
print(char.upArrow) -- flèche pointant vers le haut
print(char.copyright)
print(char.Agrave) -- À
Références :
J'ai fait un effort de recherche pour essayer de ne pas attribuer de noms fantaisistes à certains caractères.Autant que possible, je me suis référé à ces sources :
- http://www.unicode.org/charts/
- http://www.lookuptables.com/index/web.gif
- http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/IBMGRAPH.TXT
- http://www.fileformat.info/info/charset/UTF-8/encode.htm
J'ai cherché à faire un truc exhaustif, même si je me doute bien que l'API sera surtout utile pour afficher différentes flèches et curseurs, moins pour afficher des caractères accentués.
Mais pour certains cas particuliers j'ai du improviser, et ça nécessiterait peut être quelques corrections.
Pour les caractères accentués, j'ai repris la dénomination des entités html : http://www.lookuptables.com/index/web.gif
Pour les caractères les plus obscures, à fin de vérification, j'ai employé cette astuce :
- Code:
textutils.urlEncode( string.char(29) )
Code que je reprend et utilise comme référence dans une recherche sur le net. C'est comme ça que j'ai pu démystifier les nombreux caractères blancs.
- Code:
leftRightArrow=string.char(29) -- confirm ?
Le mieux que j'ai trouvé est 'INFORMATION SEPARATOR THREE' (U+001D) mais sans visuel pour confirmer.
http://www.fileformat.info/info/unicode/char/001d/index.htm
char.teletext_100000
J'ai cherché en vain la référence exacte. Ce que j'ai trouvé de plus approchant, sont dénommé "Block Elements", "Quadrant". Mais ceux là sont subdivisé en 4 et non en 6..
J'ai donc improvisé cette norme, le nombre binaire qui suit décrit dans l'ordre si un carré est plein ou vide. (haut gauche, haut droit, milieu gauche, milieu droit, bas gauche, bas droit) (1 == plein, 0 == vide)
N'oubliez pas que toutes les combinaisons possibles ne sont pas disponibles. Pour y parvenir il faut bidouiller et intervertir les couleurs du texte et background. (impossible sur une imprimante CC, car il n'y a pas de couleur d'arrière plan)
Avertissement: fs.write() / settings.set() / settings.save()
La seule application est à l'écriture sur l'écran, ou sur papier via l'imprimante.
Vous ne pourrez (à priori) pas non plus enregistrer des chaînes contenant ces caractères via l'API settings, puisqu'elle repose également sur l'écriture dans un fichier.
edit: en fait non.. Je sais plus pourquoi je l'ai cru..
NB: sur les caractères blancs.
S'ils produisent le même résultat à l'écran (ou sur le papier), il n'en est rien dans le code. Ce qui signifie que deux chaines de textes identiques en apparence peuvent être strictement différentes dans une comparaison.- Code:
text_1 = "Hello World"
text_3 = "Hello"..string.char(32).."World"
text_3 = "Hello"..string.char(160).."World"
print(text_1) -- Hello World
print(text_2) -- Hello World
print(text_3) -- Hello World
print(text_1 == text_2) -- true
print(text_1 == text_3) -- false
Constats de bugs:
char.euro / string.char(128)Le résultat est un caractère blanc, mais son code semble faire réfèrence au symbole €
http://www.fileformat.info/info/unicode/char/0080/browsertest.htm
char.nbsp / string.char(160)
En français s’appelle "espace insécable" (non-breaking space), c'est à dire identique à un espace, mais ne se coupe pas en bout de ligne. C'est utile en terme de norme typographique (conventions). Enfin, pas dans ComputerCraft. S'il est bien différent d'un espace standard (comparaison de chaînes) il se comporte comme un espace standard (il n'empêche pas la séparation de deux mots par un retour à la ligne)
Dernière édition par skypop le Sam 10 Sep - 13:33, édité 1 fois
skypop- Messages : 95
Date d'inscription : 25/07/2016
Re: [API] char (table des caractères)
Ingame, j'ai imprimé et relié ce livre, et c'est plutôt pratique de l'avoir sous la main en programmant.
Si vous seriez intéressé d'en recevoir un exemplaire, faites moi signe.
Si vous seriez intéressé d'en recevoir un exemplaire, faites moi signe.
skypop- Messages : 95
Date d'inscription : 25/07/2016
Re: [API] char (table des caractères)
Comme on ferait IRL : en passant le papier plusieurs fois, en changeant l'encre et ce qu'il faut imprimer.
skypop- Messages : 95
Date d'inscription : 25/07/2016
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum