Help us understand the problem. What is going on with this article?

漢字を画像として出力【Ruby/Cairo 編】

More than 1 year has passed since last update.

Python と OpenCV を使って漢字一字の画像ファイルを作るという以下の記事を拝見して,Ruby と Cairo の組み合わせならどう書くかな,というのが本記事の主旨です。
漢字を画像として出力【備忘録】 - Qiita

cairo

Ruby には cairo という gem があります。広く使われているベクターグラフィックスライブラリーの Cairo を Ruby で簡単に扱えるようにしたものです。

Ruby の cairo を知るには Rubyist Magazine の以下の記事が役に立ちます。
cairo: 2 次元画像描画ライブラリ

だいぶ前の記事なので一部内容が古くなっているところもありますが,現在でも良い入門記事だと思います。

まずこれを

gem install cairo

でインストールしておきます。

コード

require "cairo"

size = 16

surface = Cairo::ImageSurface.new Cairo::FORMAT_ARGB32, size, size
context = Cairo::Context.new surface

context.move_to 0, size * 0.88
context.set_font_size size
context.select_font_face "IPAexGothic"
context.show_text "永"

surface.write_to_png "a.png"

context に対して操作しているところは,見ればだいたい何をやっているか分かりそうですが,

context.move_to 0, size * 0.88

における 0.88 という謎の定数が気持ち悪いですね。
漢字のグリフ(字形データ)は正方形の枠を基準に設計されていますが,ここで使っている IPAexGothic をはじめ,多くの日本語フォントで,その正方形の左上から 88% 下に下がったところにグリフの座標原点が設定されているためです。

scivola
主に Ruby 使ってます。 二十年来のコンパイラー恐怖症が Rust で治癒するか?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away