5

我想构建一个函数,它采用给定的 Unicode 字符和给定的 TrueType 字体并将相应的字形光栅化为二维 1 位每像素位图。

与此类似的东西:

rasterize :: Font -> Char -> Size -> Bitmap
rasterize font char size = ...

要求

rasterize功能应:

  • 产生一个最大宽度w和高度的位图h,这样w <= sizeh <= size
  • 栅格化字形,使其完全填充位图,不留任何填充。

Bitmap类型应支持以下操作(或类似操作):

width  :: Bitmap -> Int
height :: Bitmap -> Int
bit    :: Bitmap -> (Int, Int) -> Bool

如果(且仅当)设置了索引位置位图中的位,bit b (x, y)则应评估where 。Trueb(x, y)

问题

是否有任何 Haskell 库已经可以做到这一点,或者类似的东西?

例子

评估表达式rasterize fontUtopiaStandard 'o' 64将生成一个位图b,如果呈现该位图,它将类似于下图(以 800% 比例查看,带有网格),其中(width b, height b) = (60, 64)

在此处输入图像描述

笔记

  1. 我已经尝试使用stb-truetype 包,但任何获取像素数据的尝试似乎都会导致分段错误,即使使用与测试包的版本类似的 GHC (6.12) 版本进行编译也是如此。(如果有人感兴趣,我可以提供更多关于段错误代码的细节。)
  2. 我知道存在在 OpenGL 上下文中呈现 TrueType 字体的库,但我看不到如何访问像素数据。
4

0 回答 0