とてつもなく遅い「あけましておめでとうございます」です。
ずいぶん長く休んでしまいました。
さて、タイトルどおりFlex4SDKに搭載予定のText Layout Frameworkを使って縦組みの文庫本を作成しました。
以下敬称略で。
このFlash作成の狙いは自動組版なんですが、長文を縦組みでジャスティファイしつつページ割り、ルビをふる、というものです。
TextFlowの元データには青空文庫のデータを使用しています。これをUTF8に変換した上でXMLNSChangerでNamespaceを変更し、TextFlowにコンバートしています。ただし、青空文庫のデータは段落がbrタグで区切られているためText Layout Frameworkでのジャスティファイがうまくいきません。これはpタグに変換してからコンバート。公開しているFlashではあらかじめTextFlow構造になっているものをロードしています(さすがにpタグの処理までやってると待ち時間が(ry)。
ルビをふるにはルビの対象が泣き別れしないようにしたうえで対象の座標を知る必要があります。これにはTextFlowSliceRectを使用しています(マイナーバージョンアップしました)。
ページ割、ルビふりの処理はループで一気にまわした方が速かったけど、処理中にタイムアウトしたり無反応になったりするのはいただけない。そのために「ActionScript Thread Library 1.0 (そうめん)」を使ってEnterFrameごとに処理をしています。処理中でも表示、操作できるのはいいけど、重かったり急に表示が変わったり読むスピードにルビ処理が追いつかなかったりしていますw
次にページめくりのエフェクトなのだけど、これは世に同等のライブラリがたくさんあります。いろいろ試したけど重かったりオーバースペックだったりしたので車輪の再発明してみました。お気楽気分で始めたら結構大変なのね...。ほとんどポリゴンのクリッピング処理と同じようなことをやらされる。これはコードが整理されたら公開します(これで商売してるトコ多いのでマナー的にどうかと思うけど)。
ルビ処理をもうすこし上手くできればページジャンプやしおり機能がつけられそう。
ここまでできたのはいいんだけど、Text Layout Frameworkを使った意義を問われるとつらい。
まあ、自動組版なのでデータの差し替えが容易に可能としておこう。
しかしTextFlow、その名のとおり、「文字を流し込むだけ」。後からいろいろやろうとすると厳しい。特にページ割り。ページ分割の際はTextFlowを分割するよりコンテナをたくさん作った方がメモリに優しかったことを書いておくよ。
これを作成したおかげでText Layout Frameworkについて理解できたことが多いので、今後記事にしていきます。
あと、このFlashの表現について言うならば、黒バック白文字の美しさ。これは白いものほど明るいというPCのモニターならではの表現だと思っています。暗いところで見てると目がおかしくなるので注意。
あらためて「銀河鉄道の夜」読んだけど、なんともいえない気分になりますな。


