Home > Perl > 日本語対応 文字組み→画像描画 Module 作ってみた - 初 CPAN Module 登録

日本語対応 文字組み→画像描画 Module 作ってみた - 初 CPAN Module 登録

  • 2005-10-04 (火)
  • Perl
  • このエントリーを含むはてなブックマーク

20051004_01s.gif

初めて CPAN に module をアップしてみました。HOWTO についていろんなドキュメント読みつつ、週末嫁を寝かしつけた上でこっそりと module 用の pod ドキュメントを書きつつ... やっとこさ形になりました。これで気分はいっぱしの Perl 野郎(気分だけ?)。

http://search.cpan.org/~bashi/

以下モジュールの簡単な概要です。詳細は CPAN 上のドキュメントを参照って事で。

名前

Imager::DTP - 画像に対して文字を描画するモジュール。マルチバイト文字対応で、さらにDTPアプリちっくなオプション機能付き。

概要

元は、情報誌制作システム系の業務案件にて

ブラウザ入力した情報を、即座に、情報誌体裁に落とし込んだJPEG画像として同ブラウザ上で確認したい。

というニーズに対して Perl を用いて実現検討した結果できたものです。検討段階の成果なので、世のDTPアプリに搭載されているような本格的な日本語文字組み機能は備わっていません。

主な機能は以下の通り:

  • 横書き/縦書き対応
  • 行間幅をパーセンテージで指定可能
  • 文字間幅をピクセル単位で指定可能
  • 行の水平および垂直揃えが指定可能
  • 指定幅&高さでの文字列流し込み機能
  • 文字の長体・平体 変形機能 (10/24追加)

文章では無く、視覚的に機能を把握してもらえるよう、sample viewer なるページも用意してみました。ここであれこれ試してみる事で、Imager::DTP で何が出来るか理解可能かと思います。あと、こんな縦書きサンプルなんかもあります。

CPANには GD, Image::Magick, Imager と幾つか画像描画系モジュールがあるのですが、今回はその中の Imager モジュールの add-on として作ってみました。Imager を選んだ理由は、この中で、今のところ唯一「詳細なフォント情報を取得する事が可能」だったので(※文字組み計算には各文字ごとの幅/高さ/アセント/ディセント/ベースライン位置などの情報が必要)。他のモジュールもフォント情報取得できるようになるならば、いつかまとめて対応したモジュールに発展させたいです。

画像に日本語を縦書きで描画したい・・・しかも Perl を使って。そんなニーズどれくらいあるのか不明(不安)だけど、まあ今回はお勉強も兼ねて、って事で。俺もバリバリ Web / Ajax ちっくな最前線系モジュール上げられるようになりたいなあ。

動作条件

Imager::DTP の導入の際には下記の2つのモジュール/ライブラリの事前導入が必要です。

  • FreeType 2.x
    FreeTypeはLinux上で各種 TrueType / OpenType フォントを扱う為のライブラリです。ここの オフィシャルサイト から最新版を入手する事が可能です。
  • Imager
    libjpeg や libpng 等のライブラリを介して、Perlから画像を描画する為のモジュール。FreeType2 を導入した状態で compile する事によって、各種 TTF/OTF フォントの扱いも可能になります。

詳細は README を参照って事で。

サンプルコード

(11/17追加)モジュールを導入した上で、じゃあどうやって使えばいいのさ?ってところで、具体的なサンプルコードをひとつ作っておきました。参考になれば幸いです。→サンプルコードはこちら

Comments:6

No Name 2005-11-16 (水) 14:55

参考にさせていただきたいのですが、サンプルビューワーのソースを公開していただけないですか?

bashi 2005-11-17 (木) 18:02

>Anonymousさん
http://iandeth.dyndns.org/mt/ian/archives/20051004/dispatch.txt
↑ここにソースを置いておきました。CGIフレームワークの中の一部ソースなので、これ単体で実行はできませんが、参考にはなるかと思います。あと、本文の末尾の方に、わかりやすいであろうサンプルコードについて追記もしてみましたので、こっちも見てみてくださいませ。ではではー。
※対応遅くなってごめんなさいです。

No Name 2005-11-18 (金) 12:05

サンプルコードの公開、ありがとうございました!
縦書き画像を作ってみます。

real 2005-12-01 (木) 18:33

サンプルコード参考にさせて頂きました。
どうもありがとうございます。

kaie 2007-06-10 (日) 15:21

Windowsで使いたいのですが、インストールまでこぎつけません。。。
良ければ、インストールの仕方をご教授願えませんか?

bashi 2007-06-23 (土) 17:42

>kaieさん
コメントありがとうございます。
Windowsですか... freetypeというフォント周りのライブラリが別途必要なのですが、これのWindows版を試したことが無いので、ちょっと調べてみる必要があります。しばしお待ちください。
http://gnuwin32.sourceforge.net/packages/freetype.htm

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Perl > 日本語対応 文字組み→画像描画 Module 作ってみた - 初 CPAN Module 登録

Search
Feeds

Page Top