一文读懂libcaca文本导入导出格式全清单UTF-8、BBCode、troff等17种格式实战指南【免费下载链接】libcaca Colour ASCII Art Library项目地址: https://gitcode.com/gh_mirrors/li/libcacalibcaca是著名的 Colour ASCII Art Library彩色 ASCII 艺术库它的文本导入导出模块让画布内容可以在17 种格式之间自由穿梭从 UTF-8 纯文本、ANSI 彩色码到 BBCode、troff、PostScript、SVG再到原生 caca 二进制格式。本文带你 5 分钟理清这份完整格式清单并附实战用法让你知道每个格式该在什么场景使用。 想本地跑起来先克隆仓库git clone https://gitcode.com/gh_mirrors/li/libcaca导入格式速览一次看全清单所有格式清单都由caca_get_import_list()集中维护见 caca/codec/import.c格式标识说明典型用途自动检测不确定格式时首选caca原生 libcaca 格式支持多帧动画保存/加载完整作品text纯文本无颜色读入普通 .txtansiANSI 彩色文本CP437 字符集老式 ANSI artutf8带 ANSI 转义码的 UTF-8终端截图、彩色终端输出binBIN 二进制 ANSI 艺术160 列复古像素级 ASCII格式分派逻辑非常清晰先按字符串匹配匹配不到再走自动检测见 caca_import_canvas_from_memory()。自动检测不写格式名也能读文件把format参数传空字符串libcaca 会按以下启发式规则猜格式前 4 字节是0xca 0xca C V→ 原生 caca 文件扫描到ESC[序列→ 当作 ANSI 彩色文本偶数位置出现大量空格且奇数位置很少→ 当作 BIN 格式都不符合→ 按纯文本导入。检测代码见 import.c 自动检测段。对新手来说99% 的场景直接传就够了。导入细节text 与 ansi 的差异text逐字节写入画布CR直接跳过LF换行画布随行宽自动增长text.c。ansi默认先建 80 列画布解析 SGRESC[...m颜色与粗体/斜体/下划线/反显等属性text.c。utf8与 ansi 共用解析器但保留画布现有尺寸并支持全角字符适合中文、日文等 CJK 内容。bin固定 160 列每 2 字节 1 个 CP437 字符 1 个 16 色 ANSI 色号字节见 _import_bin()。导出格式全清单UTF-8、BBCode、troff 一网打尽导出侧比导入侧丰富得多共 11 种格式清单维护在 export.c格式标识输出物一句话场景caca原生二进制存档、回放ansiCP437 ANSI 码终端艺术utf8UTF-8 ANSI 转义码通用彩色终端utf8cr同上行尾带 MS-DOS 风格\r老 Windows 程序html带内联 CSS 的完整网页博客/文档嵌入html3HTML 表格font/blink古老/极简浏览器bbfrBBCodeFrench 风格论坛发帖ircUTF-8 mIRC 颜色码聊天频道psPostScript 文档打印svgSVG 矢量图网页矢量插图tgaTGA 位图32 位交给图像处理软件trofftroff 源文件生成 man 页/技术文档分派入口在 caca_export_canvas_to_memory()。BBCode 导出给论坛用的彩色文本BBCode 输出由export_bbfr()生成export.c特征整体包裹在[fontCourier New] ... [/font]中保证等宽对齐背景色 →[f#rrggbb]前景色 →[c#rrggbb]粗体[g]、斜体[i]、下划线[s]空格被替换成下划线_避免被论坛折叠。如果你的目标站点 BBCode 语法不同比如颜色标签名不同拿到的文本只需要简单替换标签即可非常易于二次处理。troff 导出让 ASCII 艺术进入技术文档export_troff()export.c生成的源码特点以.nfno-fill关闭自动换行缩进开头保证艺术字不被排版引擎重排前景/背景色用 16 色 ANSI 名称映射如\m[blue]、\M[red]粗体\fB、斜体\fI结束统一\fR复位行首/行尾空格输出为不换行空格U00A0防止行尾空格被 troff 吃掉。这条链路很适合把 ASCII 图嵌进 man page 或 groff 技术手册打印后依然清晰。原生 caca 格式唯一支持多帧动画的格式原生格式头结构import.c 与 export.c┌────────────────────────────┐ │ 0xca 0xca C V 魔数 │ │ control_size / data_size │ │ version / frames / flags │ ├────────────────────────────┤ │ 每帧 32 字节宽高、时长、 │ │ 默认属性、坐标、手柄偏移 │ ├────────────────────────────┤ │ 每字符单元 8 字节 │ │ UTF-32 字符 属性位图 │ └────────────────────────────┘每帧带 duration 字段所以.caca文件可以直接作为小动画交给cacaplay播放doc/cacaplay.1。C API 实战6 个函数搞定导入导出核心 API 声明在 caca.h用法模式统一#include caca.h caca_canvas_t *cv caca_create_canvas(0, 0); /* 导入格式名传 即自动检测 */ caca_import_canvas_from_file(cv, art.txt, ); /* 导出到内存缓冲用后记得 free() */ size_t len; void *buf caca_export_canvas_to_memory(cv, bbfr, len); /* 只导出画布某个矩形区域 */ void *part caca_export_area_to_memory(cv, 0, 0, 40, 10, html, len); /* 查询库支持的全部格式 */ char const *const *list caca_get_export_list();导入四件套caca_import_canvas_from_memory/caca_import_canvas_from_file/caca_import_area_from_memory/caca_import_area_from_fileimport.c导出两件套caca_export_canvas_to_memory/caca_export_area_to_memoryexport.c可运行的完整示例见 examples/export.c它遍历caca_get_export_list()打印所有可选格式。场景选型我该用哪个格式你想……推荐格式理由保存作品/做动画caca唯一支持多帧与坐标手柄终端里发彩色艺术字utf8/ansi转义码通用性强论坛发帖bbfr直接粘贴即可贴到博客/文档html自带 CSS等宽 颜色完整老浏览器/纯文本模式浏览器html3只用tablefont打印psPostScript 直接进打印流网页矢量图svg无限缩放不失真交给图像处理软件tga32 位真彩色位图写 man 页/技术手册troffgroff 原生排版IRC 里发图ircmIRC 颜色码直发小结导入 6 种含自动检测caca、text、ansi、utf8、bin、导出 11 种caca、ansi、utf8、utf8cr、html、html3、bbfr、irc、ps、svg、tga、troff不确定格式就传空串让 libcaca 自动检测代码更少更稳实现全部集中在 caca/codec/ 目录配合 doc/libcaca.dox 可深入阅读。掌握这份清单后你的 ASCII 艺术就能无损地在终端、网页、论坛、打印文档之间流转了 【免费下载链接】libcaca Colour ASCII Art Library项目地址: https://gitcode.com/gh_mirrors/li/libcaca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考