Question

Au cours de la semaine dernière, je travaille sur un jeu roguelike en C ++ avec un ami. La plupart du temps trop apprendre la langue.

J'utilise:

Pour sa sortie wchar_t partout où je veux dans la console. J'ai réussi à otuputting certains caractères unicode tels que \ u263B (☻), mais d'autres comme \ u2638 (☸) ne seront que des points d'interrogation (?).

Voici le code correspondant que j'utilise pour la sortie.

// Container of room information

struct RoomInfo
{
    wchar_t * layout;
    int width;
    int height;
};

// The following function builds RoomInfo 

RoomInfo Room::examine(IActor * examinor)
{
    RoomInfo ri;
    ri.width = this->width;
    ri.height = this->height;
    ri.layout = new wchar_t[height * width];
    for(unsigned int y = 0; y < height; y++)
    {
        for(unsigned int x = 0; x < width; x++)
        {
            ri.layout[y*width + x] = L'\u263B'; // works
            //ri.layout[y*width + x] = L'\u2638'; // will not work
        }
    }
}

// The following function outputs RoomInfo

void CursesConsole::printRoom(RoomInfo room)
{
    int w = room.width;
    int h = room.height;

    WINDOW * mapw = newwin(h, w, 1, 0);
    for(int y = 0; y < h; y++)
    {
        wmove(mapw, y, 0);
        for(int x = 0; x < w; x++)
        {
            int c = y*w + x;
            waddch(mapw, room.layout[c]);
        }
    }

    wrefresh(mapw);
    delwin(mapw);
}

Je pourrais bien sûr se replier sur ennuyeux ANSI-caractères. Mais ce serait vraiment génial d'avoir la unicode-ensemble complet de personnages pour jouer avec.

Pour résumer: Comment vous assurez-vous que les caractères unicode correctement sont émis


Edit:

Ok, donc je me suis dit mon encodage fonctionne correctement. Le problème est que J'ai besoin de forcer le terminal à passer à un visage plus de police unicode riche . Est-il possible multi-plateforme pour le faire? est-il même une fenêtre de façon spécifique pour le faire?

Était-ce utile?

La solution

  

Le problème est que je dois forcer le terminal à passer à un visage plus de police unicode riche. Est-il possible multi-plateforme pour le faire? est-il même une fenêtre de façon spécifique pour le faire?

J'ai eu un regard pour cela, mais n'a pas pu trouver un appel API Windows pour le faire (ce qui peut juste dire que je ne l'ai pas trouvé, bien sûr). Je ne soupçonniez pas trouver un moyen multi-plateforme pour le faire.

La meilleure solution que je peux penser est de lancer la console en utilisant une construction spéciale fichier Shell Link (LNK). Si vous lisez le , vous verrez qu'il vous permet de spécifier une police.

Mais vos problèmes ne se terminent pas là. Les paramètres régionaux de l'Ouest installation de Windows fournit Lucida Console , mais la police ne fournit qu'un sous-ensemble limité de graphèmes. Je suppose que vous pouvez sortie / entrée texte japonais dans la console sur un PC Windows japonais. Vous auriez besoin de vérifier ce qui est disponible sur un Windows japonais si vous voulez être sûr qu'il travaillerait là.

Linux (Ubuntu, au moins) semble avoir un soutien beaucoup mieux ici, en utilisant UTF-8 et de fournir une police avec un large soutien graphème. Je n'ai pas vérifié d'autres distros pour voir ce que l'histoire est là, je n'ai pas vérifié comment les polices sont résolues dans le terminal (que ce soit une chose X, une chose Gnome ou autre).

Autres conseils

En principe, tous les caractères unicode sont pris en charge sur la console. Le fait que vous voyez des points d'interrogation a probablement à voir avec le soutien de la police pour ces personnages. Essayez de changer la police de la console à quelque chose avec un très bon soutien unicode.

Vous devez définir la page de code correctement. Il y a un très bon article à ce sujet ici: lien

Bien qu'il soit un assez grand interrupteur, vous pouvez essayer d'utiliser une console autre, surtout si vous faites un roguelike. libtcod est une bibliothèque modérément populaire, écrit en C ++ avec des liaisons C, qui fournit une console pleine de couleurs que vous pouvez configurer vos propres polices et glyphes. Cela devrait vous donner beaucoup plus de flexibilité que d'être coincé avec ce que la console Windows vous donne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top