Символы Unicode - PullRequest
       7

Символы Unicode

0 голосов
/ 25 мая 2020

Я написал следующий код для генерации символов Unicode для мастей карт в C. Он работает нормально, и мне не нужно менять семейство шрифтов или кодовую страницу консоли (я использую Windows 10 и Dev-C ++), но мне кажется, что я могу сгенерировать только эти символы. Действительно, если я попробую другие значения для генерации других символов, например, для шахмат, игральных костей, домино или других, как показано здесь символы Unicode для игр , этот код не будет работать. Зачем? Заранее благодарим вас за помощь.

#include <stdio.h>
#include <fcntl.h>

#define SPADE L"\u2660"
#define CLUB L"\u2663"
#define HEART L"\u2665"
#define DIAMOND L"\u2666"

enum SUIT {spade = 1, club, heart, diamond};


void printSuit(int suitToSelect) {
_setmode(_fileno(stdout), _O_U16TEXT);
switch (suitToSelect) {
case spade:
wprintf(SPADE);
break;
case club:
wprintf(CLUB);
break;
case heart:
wprintf(HEART);
break;
case diamond:
wprintf(DIAMOND);
break;
}

_setmode(_fileno(stdout), _O_TEXT);
}
int main(void)
{

printSuit(spade);
printSuit(heart);
printSuit(club);
printSuit(diamond);
printf("\n");
printf("Normal text\n");

return 0;

}

enter image description here

1 Ответ

0 голосов
/ 26 июня 2020

приведенный ниже код отлично работает с Dev-C ++ и Windows 10. Хороший результат можно увидеть на снимке экрана консоли. Вы можете выбрать в коде разные шрифты для визуализации символов Юникода; каждое семейство шрифтов печатает символы в разных стилях. Попытайся! Я надеюсь, что этот ответ может помочь кому-то, у кого была моя проблема. Спасибо.

введите описание изображения здесь

#include <windows.h>
#include <stdio.h>

int main(void)
{ 
    CONSOLE_FONT_INFOEX cfi;
    cfi.cbSize = sizeof cfi;
    cfi.nFont = 0;
    cfi.dwFontSize.X = 20;
    cfi.dwFontSize.Y = 40;
    cfi.FontFamily = FF_DONTCARE;
    cfi.FontWeight = FW_NORMAL;

    wcscpy(cfi.FaceName, L"Dejavu Sans Mono");
    //wcscpy(cfi.FaceName, L"MS Gothic");
    //wcscpy(cfi.FaceName, L"MS Mincho");
    //wcscpy(cfi.FaceName, L"NSimSun");
    SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
    
     SetConsoleOutputCP(65001);
     
    printf("\u2660 \u2661 \u2662 \u2663 \u2664 \u2665 \u2666 \u2667 \n");
    printf("\u265B \u265C \u265D \u265E\n");
    printf("\u265F \u265A \u2655 \u2656 \u2657\n");
    printf("\u2658 \u2659 \u2654 \n");
    printf("\u2680 \u2681 \u2682 \u2683 \u2684 \u2685\n");
    printf("\u2554 \u2555 \u2556 \u2563 \u255A \u255B \u255C \u255D\n");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...