特定の Unicode 文字と特定の TrueType フォントを受け取り、対応するグリフを 2 次元の 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
whereは、インデックス位置のビットマップ内のビットが設定されている場合 (およびその場合にのみ) にbit b (x, y)
評価する必要があります。True
b
(x, y)
質問
すでにこれを行うことができるHaskellライブラリ、または同様のものはありますか?
例
式を評価するrasterize fontUtopiaStandard 'o' 64
と、ビットマップb
がレンダリングされた場合、次の画像のようになります (800% の縮尺でグリッド付きで表示) (width b, height b) = (60, 64)
。
ノート
- 私はすでにstb-truetype パッケージを使用してみましたが、パッケージがテストされたバージョンと同様のバージョンの GHC (6.12) でコンパイルした場合でも、ピクセル データを取得しようとするとセグメンテーション エラーが発生するようです。(誰かが興味を持っている場合は、セグメンテーション違反コードの詳細を提供できます。)
- OpenGL コンテキスト内で TrueType フォントをレンダリングするライブラリの存在は認識していますが、ピクセル データにアクセスする方法がわかりません。