对于控制台,很多人的印象是只有黑白二色。但是,使用 ANSI escape code,我们就能够操控终端内字体的颜色、粗细、下划线、背景色等属性:
不过这种拼接字符串的方式存在不少问题,譬如忘记在字符串末尾追加 RESET 的情况下,颜色就会发生泄漏:
同时,常规的字符串方法,由于转义序列的存在所以不能很好的工作,而且还很容易发生泄漏:
为了避免这些问题,我做了一个叫做 Kala Ansi 的库,由纯 Java 实现了 fansi 的功能
Glavo/kala-ansigithub.comKala Ansi 非常轻量(只有33 kb 大),没有任何依赖,兼容 Java 5,而且提供 module-info
,对于 Java 9+ 模块化的支持良好,能够轻松用 jlink 工具打包进 jre 中。
相比原版的 fansi,Kala Ansi 不仅对 Java/Kotlin 更友好,对内部结构也进行了更多的优化,内存占用更低。
Kala Ansi 发布在 jcenter 上,想把它添加到你的项目中,请参考文档:Adding Kala Ansi to your build。
下面的图片展示了 Kala Ansi 的基本用法,如果你需要更多内容,请参考 Kala Ansi 文档 以及 Fansi 文档。
(TODO:更多文档和例子)