From: Hiroyuki S. <hir...@gm...> - 2014-10-28 14:09:14
|
横山様 佐藤です。 ご連絡をありがとうございます。 教えていただいた方法でやりたいことが達成できました。 ありがとうございました。 2014年10月28日 12:57 Masafumi Yokoyama <my...@gm...>: > はじめまして、Ruby-GNOME2プロジェクトチームの横山です。 > > 2014年10月27日 12:04 Hiroyuki Sato <hir...@gm...>: >> 皆様初めまして >> 佐藤と申します。 >> >> 最近cairoを使い始めました。テキストレイアウトをするにはpangoを使うとうことを知りました。 >> そのため、pangoも使い始めました。 > > rcairoやRuby/Pangoを使っていただきありがとうございます。うれしいです > あまりPangoには詳しくないのですが、一応できたので以下に回答します。 > > >> (1) pangoで縦方向を中央揃えにする方法 >> >> 縦方向は中央揃えなどがなく、Pango::AttrRise.new(10)?を使って >> 指定するのでしょうか?、サンプルなどありますでしょうか? > > 縦位置はcairo側で指定するのが無難かと思います。 > Pangoでもできるのかもしれませんが、私はわかりませんでした。 > > Cairo::Context#move_toを使って開始位置を真ん中あたりにしてから > 描画するのはどうでしょうか。 > > context.move_to(0, height * 0.5) # この行を追加 > context.show_pango_layout(layout) > > >> (2) フォント描画時の縦横サイズ取得方法 >> これはpangoとは関係ないかもしれませんがもしご存知でしたら >> 教えていただけると助かります。 >> >> pangoでフォントサイズ16の文字「佐藤博之」を記述した場合 >> 縦、横のサイズはXXXと取得してその値でCairoのキャンパス >> を作成することは可能でしょうか? > > Pango::Layout#extentsや、Cairo::Context#text_extentsというメソッドで > テキストの範囲を取得することができます。 > > https://developer.gnome.org/pango/stable/pango-Layout-Objects.html#pango-layout-get-extents > http://rcairo.github.io/doc/ja/cairo-context.html#label-118 > > こんな感じで使います。 > > extents_rect = layout.extents[1] > text_width = extents_rect.width / Pango::SCALE > text_height = extents_rect.height / Pango::SCALE > > この値を使って、再度ImageSurfaceを作ればよさそうです。 > > また、この値を使えば、先ほどの縦位置がもっと正確に出せます。 > > context.move_to(0, height * 0.5 - text_height * 0.5) > > > わかりづらいところがあれば追加でご質問くださいませ。 > ------------------------------------------------------------------------------ > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja -- Hiroyuki Sato |