Lu76Fer
XLDnaute Occasionnel
Discussion préalable : Corriger les problèmes d'utilisation de certains symboles ASCII
Bonjour à toutes et tous,
Il s'agit de la police de caractère Webdings et le symbole 160 à côté du tableau de la Joconde et sur la ligne du milieu complètement à droite s'affiche désormais dans le jeu de caractère 240 :
Remarque : la hauteur des lignes par rapport à la taille de la police (24) est bien respecté.
Fonction de conversion MirrorChr et MirrorString
Bonjour à toutes et tous,
C'est en essayant vainement d'afficher un symbole Ascii dans une forme (-> menu Dessin) que j'ai trouvé une solution aux problèmes soulevés à la fin de la discussion initiale : tous Les symboles s'affichent correctement dans la grille mais les symboles 128 à 159 se chevauchent sur une forme. Il s'avère que le symbole 160, lui, ne s'affiche pas du tout !
J'ai cherché dans l'ensemble des symboles Unicode si je pouvais retrouver le même symbole et en affichant la table de caractère n°240 avec la même police je me suis rendu compte que je retrouvais exactement les même symboles que dans la table Ascii (n°0) mais sans les problèmes de chevauchement ou de symbole absent :
Il s'agit de la police de caractère Webdings et le symbole 160 à côté du tableau de la Joconde et sur la ligne du milieu complètement à droite s'affiche désormais dans le jeu de caractère 240 :
Remarque : la hauteur des lignes par rapport à la taille de la police (24) est bien respecté.
La table de caractère 240 est une table miroir à la table Ascii et quelque soit la police utilisée. Par contre, il n'y a pas de problème d'affichage sur une forme certainement lié à l'internationalisation ou à la localisation de l'Ascii étendu qui a été visiblement mal codé pour ce type d'objet.
Fonction de conversion MirrorChr et MirrorString
Je vous partage du coup 2 petites fonctions pour basculer un symbole Ascii ou une chaîne Ascii vers la table "Miroir" (240) :
VB:
'Return the mirror Unicode with Ascii code {yCode}
Function MirrorChr(yCode As Byte) As String
Dim y§(1) As Byte
y§(0) = yCode: y§(1) = &HF0 'Charset 240
MirrorChr = y§
End Function
'Return the mirror string Unicode from the Ascii string {§}
Function MirrorString(§$) As String
Dim y§() As Byte, cnt%, tot%
y§ = §: tot = UBound(y§)
For cnt = 1 To tot Step 2
y§(cnt) = &HF0 'Charset 240
Next cnt
MirrorString = y§
End Function