You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在控制台中修改文本字号?已实现文本变色与加粗

控制台文本字号修改方法

控制台文本字号的调整依赖终端对特定转义序列的支持,不同终端(比如Windows Terminal、GNOME Terminal、xterm)的兼容情况有差异,以下是两种常见实现方式:

1. 利用ANSI SGR序列(有限支持)

部分终端支持通过SGR(Select Graphic Rendition)序列调整字号,比如:

  • 小号字体:使用\e[2m(部分终端中该序列表示"淡色",但部分会同时缩小字号)
  • 恢复默认:使用\e[m(你已定义的COLOR_OFF)

修改你的代码示例:

#include <stdio.h>

#define COLOR_BOLD "\e[1m"
#define COLOR_OFF "\e[m"
#define CYAN "\033[36m"
#define SMALL_FONT "\e[2m"

int main(void)
{
    printf(SMALL_FONT COLOR_BOLD CYAN "Hello (Small Bold Cyan)\n" COLOR_OFF);
    printf(COLOR_BOLD CYAN "Hello (Normal Bold Cyan)\n" COLOR_OFF);
}

2. 利用OSC命令(更通用的字号控制)

多数现代终端(如Windows Terminal、xterm、Konsole)支持OSC(Operating System Command)序列直接指定字体字号,格式为:
\e]50;Font=<字体名称>:size=<字号>\a

其中:

  • \e] 是OSC序列的起始标记
  • 50 是设置字体的命令码
  • <字体名称> 替换为终端支持的字体(比如Consolas、Monospace)
  • <字号> 替换为你需要的数值(比如12、16)
  • \a 是ASCII BEL字符,用于结束OSC序列

修改你的代码示例:

#include <stdio.h>

#define COLOR_BOLD "\e[1m"
#define COLOR_OFF "\e[m"
#define CYAN "\033[36m"
#define SET_FONT_SIZE_16 "\e]50;Font=Consolas:size=16\a"
#define SET_FONT_DEFAULT "\e]50;Font=Consolas:size=12\a"

int main(void)
{
    printf(SET_FONT_SIZE_16);
    printf(COLOR_BOLD CYAN "Hello (Size 16 Bold Cyan)\n" COLOR_OFF);
    
    printf(SET_FONT_DEFAULT);
    printf(COLOR_BOLD CYAN "Hello (Default Size Bold Cyan)\n" COLOR_OFF);
}

注意事项

  • OSC命令会修改终端全局的字体字号,而非仅针对当前输出文本;若需局部调整,部分终端支持结合SGR的"替代字体"序列(如\e[11m到\e[19m),但兼容性较差。
  • 若使用Windows传统cmd.exe,上述转义序列可能不生效,需改用Windows API(如SetConsoleFontSize)实现。

内容的提问来源于stack exchange,提问作者12iq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:18:34