5

特定の Unicode 文字と特定の TrueType フォントを受け取り、対応するグリフを 2 次元の 1 ビット/ピクセル ビットマップにラスタライズする関数を構築したいと考えています。

これに似たもの:

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

要件

rasterize関数は次のことを行う必要があります。

  • 最大の幅と高さのビットマップを生成しwますhw <= sizeh <= size
  • グリフをラスタライズして、ビットマップを完全に埋め、パディングを残さないようにします。

このBitmap型は、次の操作 (または同様の操作) をサポートする必要があります。

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

whereは、インデックス位置のビットマップ内のビットが設定されている場合 (およびその場合にのみ) にbit b (x, y)評価する必要があります。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