Unicode(和其他整数)表打包程序
packtab的Python项目详细描述
包装盒
我第一次写这样的东西是在2001年,当时我在弗里比迪需要它:
https://github.com/fribidi/fribidi/blob/master/gen.tab/packtab.c
2019年,我想用它来生成更紧凑的unicode数据表 对于harfbuzz,但为了方便,我想从python中使用它。当 我考虑过把C代码包装成一个模块,我突然想到 可以用更干净的方式用纯python重写它。代码仍然存在 我的简历在可读性(或缺乏可读性)方面有污点。.:d
这个python版本基于相同的思想,但是与 C版主要有两种方式:
而C版本使用回溯来寻找最佳分割机会, 我发现使用动态编程也可以达到同样的效果。所以 python版本实现了dp方法,速度更快。
C版本不尝试将多个项打包到单个字节中。 python版本可以。也就是说,如果物品合适,可能会被塞进 每个项目1、2或4位。
还有一些其他的优化,它们使得 complete)python版本更通用,可用于更广泛的种类 数据表的。
待办事项:
- 减少内部/外部gencode()之间的代码重复。
- 处理空数据数组。
- 如果不放大,则将宽度乘数烘焙到数组数据中 数据类型。再说一次,这样可以节省行动。
- 如果数组不大于64位,直接在代码中内联 作为一个整数。
- 目前我们只在最后剔除一组默认值。在 同时开始,并调整分割代码以找到最佳移位。
- 字节重用!更大的工作项目。