スポンサーリンク
FreeType-rsは内部でビルド済みのFreeTypeを呼び出しているので、ビルド済みFreeTypeを用意する必要がある。加えて、pkg-configが必要。
以下でfreetype2を導入。
これにより、freetype2の関連ライブラリと一緒に、.pcファイル(pkg-configに必要)が生成される。
以下よりpkg-config-liteを導入し、パスを通す。
https://sourceforge.net/projects/pkgconfiglite/
環境変数PKG_CONFIG_PATHを追加。これでcargoが.pcファイルを見つけられるようになる。
PKG_CONFIG_PATH=C:\app\vcpkg\installed\x64-windows\lib\pkgconfig
RustRoverであれば、実行/デバッグ構成から環境変数を設定できる。
use freetype::Library; // image = "0.25.6" を追加 use image::{GrayImage, Luma}; fn main() -> Result<(), Box<dyn std::error::Error>> { // FreeTypeライブラリ初期化 let lib = Library::init()?; // フォント読み込み let face = lib.new_face("C:/Windows/Fonts/arial.ttf", 0)?; face.set_char_size(40 * 64, 0, 300, 0)?; // 40pt, 300dpi // 描画する文字 face.load_char('A' as usize, freetype::face::LoadFlag::RENDER)?; let glyph = face.glyph(); let bitmap = glyph.bitmap(); let width = bitmap.width() as u32; let rows = bitmap.rows() as u32; // グレースケール画像作成 let mut img = GrayImage::new(width, rows); for y in 0..rows { for x in 0..width { let value = bitmap.buffer()[(y * width + x) as usize]; img.put_pixel(x, y, Luma([value])); } } img.save("glyph.png")?;// 出力 Ok(()) }