字体压缩甚至可以每个使用例如/字形基础来处理算术编码用说4位附近:
[ 4 ] [ 3 ] [ 2 ]
[ 1 ] (x)
像素P1,P2,P3,P4码X == 0的VS X == 1,这是该位的 'x' 后进行更新的概率中的每一个附近被处理;与霍夫曼编码器不同,算术编码器能够以较小的单位压缩符号而不是一位,这是香农信息理论给出的限制。
Context, count bits per symbol
Zeros[ 0] = 45 Ones[ 0] = 4 19.987
Zeros[ 1] = 7 Ones[ 1] = 4 10.402
Zeros[ 2] = 6 Ones[ 2] = 0 0.000
Zeros[ 3] = 2 Ones[ 3] = 2 4.000
Zeros[ 4] = 6 Ones[ 4] = 5 10.934
Zeros[ 5] = 0 Ones[ 5] = 1 0.000
Zeros[ 6] = 2 Ones[ 6] = 0 0.000
Zeros[ 7] = 9 Ones[ 7] = 4 11.576
Zeros[ 8] = 5 Ones[ 8] = 13 15.343
Zeros[ 9] = 1 Ones[ 9] = 3 3.245
Zeros[10] = 4 Ones[10] = 0 0.000
Zeros[11] = 1 Ones[11] = 3 3.245
Zeros[12] = 2 Ones[12] = 2 4.000
Zeros[13] = 1 Ones[13] = 0 0.000
Zeros[14] = 1 Ones[14] = 5 3.900
Zeros[15] = 3 Ones[15] = 3 6.000
Total 92.634 bits = 12 bytes
vs. no context,
Zeros = 95 Ones = 49 133.212 bits = 17 bytes
的明显的问题是如何初始化数组:
1)使用一个固定的,即频率的静态模型
2)使用完全自适应模型,假设开始时有50:50的机会
3)使用固定模型的集合(2-256?),最能表征字形
4)以来自预先计算的集合和更新的某些模型
完整的模型需要32个字节来编码0..169的值,因此除非非常强(并且巧妙地)压缩,否则不能与字符一起传递。
EDIT 如果单个(或非常少的全局静态表用于),还可以放大表格5,6,7 -pixel街区,或嵌入的像素位置信息表中(该方法失败来编码条件 'x是在底线'):
[ B ] [ C ] [ D ], where A,B,C,D = 00 for 'white'
[ A ] (x) 11 for 'black'
01/10 for pixel outside canvas
or
[ 1 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] + [ x is next to border? ]
[ 0 ] [ 2 ] (x)
进一步阅读:
- Fax Compression/JBIG
- Arithmetic Coding
选自Y我们的要求看起来像lz4或其他lz *是适当的。嵌入式世界有许多实现。 – domen
我在字符和数据集之间没有看到任何关系。这不是一个位图 - 或者它?我假设你错误地使用术语“Unicode”,你需要在诸如“字符编码是每个字符包括22个字节的Unicode”的句子中使用它之前查看它。 – usr2564301
感谢您的意见!实际上我已经给出了字符图像以及那些代码(在文件中声明为unicode)。它似乎是根据文件头由XML2c转换工具自动生成的。图像是12 * 12,但似乎在字符的右侧和底部使用了更多空间,所以代码为13 * 13字形。 – Django