Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Assouan le Mai 14, 2012, 09:39:14 pm

Titre: [Résolu] Largeur des caractères spéciaux (é, ã, ...)
Posté par: Assouan le Mai 14, 2012, 09:39:14 pm
Bonjour, voilà, je n'arrive pas à récupérer la largeur des caractères spéciaux (j'entends par là, les lettres accentué) du genre " ã, ä, ë, ... "

    cout << sf::Font::getDefaultFont().getGlyph('a', 30, false).advance << endl; // Résultat: 16
    cout << sf::Font::getDefaultFont().getGlyph('ã', 30, false).advance << endl; // Résultat: 23
    cout << sf::Font::getDefaultFont().getGlyph('ä', 30, false).advance << endl; // Résultat: 23
    cout << sf::Font::getDefaultFont().getGlyph('e', 30, false).advance << endl; // Résultat: 16
    cout << sf::Font::getDefaultFont().getGlyph('é', 30, false).advance << endl; // Résultat: 23
    cout << sf::Font::getDefaultFont().getGlyph('ê', 30, false).advance << endl; // Résultat: 23
    cout << sf::Font::getDefaultFont().getGlyph('ë', 30, false).advance << endl; // Résultat: 23

Je dois surement mal m'y prendre... mais en faisant ainsi, je me prend un jolie décalage du curseur pour mon text edit quand je tape des accents...
Titre: Re : Largeur des caractères spéciaux (é, ã, ...)
Posté par: Laurent le Mai 14, 2012, 11:02:32 pm
Et avec un L devant les caractères ? (L'a', L'é', ...)
Titre: Re : Largeur des caractères spéciaux (é, ã, ...)
Posté par: Assouan le Mai 15, 2012, 08:48:31 am
Effectivement Laurent, sa va beaucoup mieux ainsi ;D

ps: Ne serait t'il pas mieux que getGlyph récupère un Int32 au lieu d'un Uint32 ? (pour une plus grande compatibilité) ? Ou alors une seconde fonction qui s'occupe de récupérer un Int8 et le converti en Uint8, et puis finalement en Uint32 pour appeler la fonction principal
Titre: Re : [Résolu] Largeur des caractères spéciaux (é, ã, ...)
Posté par: Laurent le Mai 15, 2012, 08:50:30 am
Citer
Ne serait t'il pas mieux que getGlyph récupère un Int32 au lieu d'un Uint32 ? (pour une plus grande compatibilité) ? Ou alors une seconde fonction qui s'occupe de récupérer un Int8 et le converti en Uint8, et puis finalement en Uint32 pour appeler la fonction principal
Et ça servirait à quoi ? Le résultat ne serait pas forcément meilleur, car il dépendra toujours de l'encodage de ton fichier source.

getGlyph attend un codepoint Unicode, ou si tu préfères un caractère UTF-32. Si ce n'est pas le cas alors il faut se débrouiller pour convertir, moi je ne peux pas deviner quel encodage est utilisé.