7

如何使用 c 更改打印字体的字体大小?

 printf ("%c", map[x][y]);

我想打印一个比程序中所有其他文本都大的数组。有没有办法让那个声明打印得更大?

4

4 回答 4

5

尽管teppic对使用的回答system()会起作用,但为了做到这一点,调用外部程序是相当严厉的。至于David RF 的回答,它是针对特定类型的终端(可能是与 VT100 兼容的终端类型)进行硬编码的,不支持用户的实际终端类型。

在 C 中,您应该直接使用 terminfo 功能:

#include <term.h>

/* One-time initialization near the beginning of your program */
setupterm(NULL, STDOUT_FILENO, NULL);

/* Enter bold mode */
putp(enter_bold_mode);

printf("I am bold\n");

/* Turn it off! */
putp(exit_attribute_mode);

尽管如此,正如teppic 所指出的,不支持更改字体大小。这是在用户的控制之下。

于 2013-03-09T22:44:14.977 回答
1

如果是 Linux(可能还有其他形式的 Unix),您可以system随意更改一些终端设置以使其脱颖而出 - 尽管不是字体大小。这种东西真的只适合简单的程序,而且显然不便携:

#include <stdio.h>
#include <stdlib.h>

[...]

printf("Normal text\n");
system("setterm -bold on");
printf("Bold text\n");
system("setterm -bold off");

否则,您可以直接发送各种终端序列,这些序列printf将控制大多数 Unix 终端应用程序,例如\033[31m将 xterm 中的文本更改为红色。但这些序列可能会有所不同。

于 2013-03-09T22:21:49.630 回答
1

如果您在某些 unix 下,您可以尝试激活和停用粗体文本:

printf("\033[1m%c\033[0m", map[x][y]);
于 2013-03-09T22:33:16.240 回答
0

此代码适用于 Win32 应用程序(无论使用何种子系统:WINDOWS 或 CONSOLE):

inline void setFontSize(int a, int b) 

{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx = new CONSOLE_FONT_INFOEX();

    lpConsoleCurrentFontEx->cbSize = sizeof(CONSOLE_FONT_INFOEX);

    GetCurrentConsoleFontEx(hStdOut, 0, lpConsoleCurrentFontEx);

    lpConsoleCurrentFontEx->dwFontSize.X = a;

    lpConsoleCurrentFontEx->dwFontSize.Y = b;

    SetCurrentConsoleFontEx(hStdOut, 0, lpConsoleCurrentFontEx);

}

然后只需调用(例如):

setFontSize(20,20);
于 2019-06-03T20:35:24.237 回答