Есть ли способ растянуть или изменить размер текста? C

#c #winapi

Вопрос:

Я создаю игру на c с использованием ASCII, и мне нужно растянуть / сжать текст, потому что все растягивается по оси Y

Пример:

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

Я пробовал SetConsoleTextAttribute, но если я установлю x и y, чтобы попытаться скорректировать текст, он только масштабирует его, как X и Y вместе.

Текущий код:

HANDLE m_hConsole;

 void ASCIIRenderer::InitialisePixelSize(int fontx, int fonty)
{
    
    PCONSOLE_FONT_INFOEX font_size = new CONSOLE_FONT_INFOEX();

    font_size->cbSize = sizeof(CONSOLE_FONT_INFOEX);
    GetCurrentConsoleFontEx(m_hConsole, false, font_size);

    font_size->dwFontSize.X = fontx;    //Width of element in buffer
    font_size->dwFontSize.Y = fonty;    //Hieght of element in buffer

    SetCurrentConsoleFontEx(m_hConsole, false, font_size);  //Set the new font size
}
 

Есть ли способ изменить X или Y, чтобы эффективно растягивать / сжимать текст?

Комментарии:

1. Я предполагаю, что вам нужны квадратные «пиксели». Затем вы могли бы воспользоваться тем фактом, что символы имеют соотношение сторон примерно 1: 2, т. Е. 2 символа рядом друг с другом образуют квадрат

2. недостатком этого является каждый раз, когда я хочу создать новый спрайт (сетку текстовых символов) Мне пришлось бы удвоить все текстовые символы для спрайта, что занимает много времени и может вызвать проблемы, потому что все это вводится вручную. в конечном итоге было бы проще и проще изменить размер текста.

3. Найдите шрифт с размером, семейством или таким, который имеет квадратные глифы. Если в системных шрифтах этого нет, вы можете загрузить большинство файлов шрифтов AddFontResource() . Кстати, не используйте new для выделения CONSOLE_FONT_INFOEX , просто объявите его локально и установите cbSize . Чтобы передать указатель в функции, используйте amp;font_size

4. Насколько я понимаю, вы могли бы попробовать использовать DirectWrite для растягивания / сжатия текста. Например, вы можете попробовать использовать метод IDWriteFactory::CreateTextFormat