彩色的字体,让记事本也能显示出彩色字符来
一种让普通文本文件也有彩色字符的方法
一般来讲,文本要有彩色,就需要要指令告诉文本显示的程序如何加上彩色,这种指令如果存储在软件的数据格式之内,这样的例子有RTF文档格式, WORD格式,WPS格式,PDF格式等,也可以存储在更为显式的数据格式中,如HTML格式,SVG格式等。
如果是普通的TXT文本(或者类似的纯文本格式,如LOG文件,C源码,C++源码),那么它们是不带有色彩显示的指令,一般都是黑色的文本。比如用记事本打开TXT文件。但C文件或CPP文件如果用开发工具的编辑器打开,则会显示彩色的代码,这是因为这些特定的IDE能够识别不同的文本内容,根据其内容将它划分为不同种类的词汇而给予着色,这种就是第2类的显色,称为语法高亮(synax highlight)。
如果是单纯的文本,一般编辑器就只有显示某一种颜色了,因为它不包含色彩控制信息,也不能被编辑器识别为某种类别而给予着色。
但其实还有一种方法,从字体的默认颜色着手,在字体中本身就给字体定义了彩色,也就是这个字符默认就是彩色的,那么即使是用纯文本的编辑器来显示,也可以显示出彩色来,因为它的默认颜色并不是黑色,而是某个彩色。
当然,字体格式并非一开始就支持这种内置的彩色信息的,而且后来才发展出来的。
SVG 和 CLOR
目前在常规的字体文件中,用得最多的有两类彩色表示方式,即SVG 和 CLOR。
CLOR Layered Color Glyph (COLR)
CLOR方式可以设置单色的字符,也可以设置多色的字符。
类似的,SVG格式也很灵活(本身SVG就是描述矢量图形的基本方式之一),示例如下,这里面可以看到色彩的代码:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)">
<path d="M701 1182c-334 0-605-271-605-605 0-334 271-605 605-605 335 0 606 271 606 605 0 334-271 605-606
605 z" fill="none" stroke="#FFF000" stroke-width="64" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M886 903c57 0 103-31 103-69 0-38-46-69-103-69-57 0-103 31-103 69 0 38 46 69 103 69 z M520 903c57
0 103-31 103-69 0-38-46-69-103-69-57 0-103 31-103 69 0 38 46 69 103 69 z" fill="none" stroke="#00DDFF"
stroke-width="64" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1112 555c0-171-182-309-406-309-224 0-405 138-405 309" fill="none" stroke="#FF0000"
stroke-width="64" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
示例
以下是用Win11的记事本打后的示例(需要设置记事本的字体为包括了彩色字符的字体)。

你可以设计一些你用到的彩色字符,并制作成特定的字体(不用包括全部汉字,只需要有你用到的那些字符即可),设定用它来显示即可。
当需要显示 未彩色化的字符你的字体文件中没有时,程序会自己调用默认的字体来显示,这样就不会给字体制作带来太大的负担,你只要负责彩色化需要的那些字符即可。
下面提供一个测试用的字体和示例TXT。字体文件要先释放出来并安装一下。记事本(或其它软件)的字体要设置成这个字体“文津宋体 符号”,这是我制作的测试字体。
如果没有效果,请重新启动一下电脑再试。
链接: https://pan.baidu.com/s/1sfhTeljO8uO_6yz94cHTYg?pwd=8jre 提取码: 8jre

浙公网安备 33010602011771号