我想构建一个函数,它采用给定的 Unicode 字符和给定的 TrueType 字体并将相应的字形光栅化为二维 1 位每像素位图。
与此类似的东西:
rasterize :: Font -> Char -> Size -> Bitmap
rasterize font char size = ...
要求
该rasterize
功能应:
- 产生一个最大宽度
w
和高度的位图h
,这样w <= size
和h <= size
- 栅格化字形,使其完全填充位图,不留任何填充。
该Bitmap
类型应支持以下操作(或类似操作):
width :: Bitmap -> Int
height :: Bitmap -> Int
bit :: Bitmap -> (Int, Int) -> Bool
如果(且仅当)设置了索引位置位图中的位,bit b (x, y)
则应评估where 。True
b
(x, y)
问题
是否有任何 Haskell 库已经可以做到这一点,或者类似的东西?
例子
评估表达式rasterize fontUtopiaStandard 'o' 64
将生成一个位图b
,如果呈现该位图,它将类似于下图(以 800% 比例查看,带有网格),其中(width b, height b) = (60, 64)
:
笔记
- 我已经尝试使用stb-truetype 包,但任何获取像素数据的尝试似乎都会导致分段错误,即使使用与测试包的版本类似的 GHC (6.12) 版本进行编译也是如此。(如果有人感兴趣,我可以提供更多关于段错误代码的细节。)
- 我知道存在在 OpenGL 上下文中呈现 TrueType 字体的库,但我看不到如何访问像素数据。