縦書きビューワ Ver.0.9.5.15を公開しました(印刷字体置換)

iPadアプリを作ったり、Twitterでつぶやいたりしているうちに、ブログ更新がご無沙汰になってしまいました。
今回は、Android Marketでコメントをいただいたキー割り当ての追加と、もう一つ、作者の趣味に走った機能追加の抱き合わせで更新です。

主な変更点

スペース・Enter・削除キーをページ送りに割り振り

スペース・Enterキーでページ送り、削除(Delete/Backspace)キーでページ戻り方向に移動するようにしました。v0.8.2で割り振った左右方向キーも含め、これらのキー押下による移動量の設定は、音量調整ボタンによる移動量の設定と共用です。
今回、「IS01」のエミュレータで動作確認を行っていて、IS01の気が利いた機能に気付きました。画面が横長であるIS01を縦画面表示モードで使うとき、本体の向きを時計回りに90度回転させて使うことになります。すると、その状態ではキーボードの上方向キーは右方向キーとして、下方向キーは左方向キーとしてアプリに渡されるのです。ほかのキーボード付きAndroid端末でも同様なのでしょうか。
IS01」を縦持ちにしたとき、親指のあたりにくるキーでページが送れるので、文庫本のような感じで読み進められるといいなと思っています(実機を持っていないので、IS01LYNX SH-10Bをお持ちの方でご意見・ご感想があればお知らせください)。HT-03A/Xperia/Desireの場合は、音量調整ボタンの利用が便利です。

字体の処理(印刷物に近い字体に置き換えて表示)オプションを追加

JIS X 0208の範囲で作成されたテキスト(青空文庫で公開されているファイルが該当)に対して、印刷物ではお目にかかることの少ない字体を、より印刷物に近い形で表示して読書できるようにするオプションを追加しました。「何もしない」「印刷物に近い字体に置き換える」から選択できます。
「印刷物に近い字体に置き換える」に設定した場合、簡易慣用字体の22字は印刷標準字体に、JIS X 0208:1997の「6.6.4 過去の規格との互換性を維持するための包摂規準」に掲げられた29字は(B)に示された字体(JIS78字体)に置き換えて表示します。
今回の置き換えでは処理速度にあまり影響はありませんが、表示速度を最優先にする場合は「何もしない」に設定してください。設定を変更した場合は、次のファイル読み込み時から変更が反映されます。

個人的に実現したいのは、アプリを「旧字モード」にすると、包摂されている旧字もすべて差し替えて表示してくれる機能なのですが、Androidの標準的なAPIではCIDを指定して文字を表示したり、cmapに触ったりすることはできず、今のところ実現できていません。改変可能・再配布可能なフォント(IPAフォント等)でAdobe-Japan1-6に完全対応したものが登場してくれれば、グリフを差し替えて「裏フォント」として利用する方法もあるのですが(最も近いのはJIS X 0213:2004の範囲に対応した「癸羊明朝」)。
そこまで徹底的にできなくても、JIS X 0213で包摂規準の適用が除外されたものについてはIPA明朝でもカバーしているので、今後「新字モード/旧字モード」を設けて対応するかもしれません(実行速度との兼ね合いで判断します)。

Ver.0.9.8.5 (20180618)

  • IPA明朝のダウンロードURL変更に対応
  • Android 7.0以降でのDropboxアプリ等からのテキスト共有速度を改善
    • Android 7.0以降では大きなファイルを開くのに時間がかかる」とのレビューをいただいたため、思い当たる箇所の高速化を行いました。テキストファイルをcontent://スキームで開く場合の速度を改善しています(Zipファイルなどは対象外)。しかし、エミュレータでは速度の違いが分かりません。改善しているでしょうか。

Ver.0.9.8.4 (20170427)

  • Android 7.0以降での表示調整
    • Android 7.0以降で、「表示サイズ」(画面密度)の端末設定を変更している場合に、画面の端で行が切れてしまうことがある問題に対応しました。

Ver.0.9.8.3 (20170427)

  • いくつかの端末での表示調整
    • Nexus 5X/6Pなどでの表示を調整しました。

Ver.0.9.8.2 (20170420)

  • Android 7.0以降ではDropboxアプリからのテキスト共有を開くことができなかった点を改善
    • Dropboxアプリからテキストを開いた場合、Android 7.0以降では、しおりをはさむことはできません。
  • ページ移動ダイアログでページ番号の数値入力移動に対応
    • 長大なテキストを閲覧中、シークバーでは移動先の微調整ができない問題について、まだ改善の余地がありますが、まずは数値入力での移動に対応しました。
  • 一部のZipファイルで解凍に失敗することがあった点を改善
  • ファイル選択画面で、どこにも移動できない状態になることがあった点を改善
    • 前回のリリースから3年(!)の間に、Androidのファイルパーミッション管理がしっかりしてきて、「ルートディレクトリに移動したものの、現在の権限では見えるディレクトリが一つもなくて、次に移動するディレクトリを選択できない!」などの状況が発生するようになってきたため、その対策を取り入れました。

Ver.0.9.8.1 (20140415)

  • 「画面中央のダブルタップ」設定を追加
    • 画面中央部のダブルタップに機能を割り当てられるようになりました(何もしない/メニューを表示/ページ移動する)。
  • いくつかの端末での表示調整
    • Kobo Glo, Kobo Touch, DAYFILER DF-X9001などでの表示を調整しました。

Ver.0.9.8 (20130924)

  • 「フォント(かな)」設定を追加
    • かな(平仮名と片仮名)のみに使用するフォントを指定できます(デフォルトは「漢字と同じ」)。
    • かな以外の表示には、約物や記号、欧文、数字も含め「フォント(漢字)」の設定が用いられます。
    • 「漢字と同じ」に戻すには、フォント(かな)選択画面で「リセット」を押下してください。
    • 前々から実装したいと思っていたものの、動作が重くなりそうで見送ってきた機能ですが、試してみたところほとんど差はなかったので公開しました。
  • 「二重山括弧《》の処理」設定を追加
    • 青空文庫形式テキストでルビを示すために使用される二重山括弧《》についての処理を選択できます(デフォルトは「ルビ記号として扱わう」)。
    • 青空文庫形式以外のテキストで二重山括弧が使われているものを読み込んだ場合、その内側が表示されないことがあるため、主に青空文庫形式以外のテキスト用に使われる方は「ルビ記号として扱わない」に変更してください。
    • 変更は、次に開いたテキストから有効になります。
  • 表示の微調整

Ver.0.9.7 (20130615)

  • 「ページ移動エフェクト」設定を追加
    • 画面のタップとフリック、それぞれによるページ単位の移動について、「なし」または「スライド」を選択できます(デフォルトは「なし」)。
    • ページが変わったことが分かりにくいというご意見があったため、ページ移動方向が分かる程度の簡易なスライドエフェクトを追加しました。
  • 「画面のタップ:何もしない」設定を追加
    • 端末画面の大型化に伴い、意図せず画面に触れてしまう誤操作防止のため導入しました。

Ver.0.9.6.7 (20130410)

  • 「フォントサイズ:特大」「超特大」設定の追加
    • 超特大の設定は、ちょっと大きすぎるかもしれませんが、大活字本のような使われ方を想定しています。
  • 「画面のタップ」設定に項目追加
    • 移動方向の左右逆転設定を追加しました。
    • 画面の右側をタップしてページ送り、画面の左側をタップしてページ戻りとなる設定は、動作が直感に反するため、これまで導入していませんでした。しかし、最近のAndroid端末は画面が大型化してきており、画面の左側に指が届きにくい状況も生じているため、快適な読書を妨げるよりはと、このたび導入に踏み切りました。
  • フルHD端末での表示調整
  • いくつかの端末での表示調整
    • PIPO U1, Nexus 10などでの表示を調整しました。

Ver.0.9.6.6 (20120526)

  • 簡易単語選択機能(本文長押し)の表示内容を改善
    • 選択した単語にルビが付いている場合、単語選択ダイアログにルビを表示するようにしました。
    • 親文字に対してルビ文字列長が長い場合であって、ルビが重なってしまい判別しづらい場合向け機能です。
    • ルビ表示エリアはスクロールが可能です。
  • 画面中央部のタップでメニューを表示する機能を追加
    • メニュー表示が遠回りになる端末向けに追加しました。現在は、B&N NOOK Simple Touchでのみ有効です。

Ver.0.9.6.5 (20120515)

  • 「フォント:スタイル」設定(標準/太字)を追加
    • 太字設定は、一部のOTFフォントでは正しく表示されない(白抜きのようになる)ことがあります。
    • 古い端末では太字設定時には若干動作が重くなることがあります。
    • 表示デバイスによっては(電子ペーパーなど)、明朝体が細くかすれて見えてしまうことがあるので、強制的に太字表示するオプションを加えました。ウェイトの太いフォントをお持ちでない場合の次善の策として、お手持ちのフォントを"poor man's bold"式に太字化します。
  • 「画面:GPU不正描画対策」設定を廃止(Android 4.0)
    • GALAXY Nexus等の端末側「GPUレンダリングを使用」設定を自動検出して適切に描画するようになりました。
  • ディレクトリ:ホームディレクトリ」設定の指定方法を改善
  • 青空文庫の新注記(ばつ傍点)に対応
  • 本文の余白長押しでメニューを表示する機能を追加
    • メニュー表示が遠回りになる端末向けに追加しました。現在は、B&N NOOK Simple Touchでのみ有効です。
  • B&N NOOK Simple Touchについて
    • NOOK Simple Touchのフォント描画システムでは、OpenTypeフォントを指定する場合、TrueTypeベースのOpenTypeフォント仕様に準拠したフォントを用いる必要があるようです。PostScriptベースのOpenTypeフォントや、仕様に準拠していないTrueTypeベースのOpenTypeフォントIPA明朝Ver.003.01の"ipam.otf")は描画できないようです(一般的なAndroid端末ではどちらも描画できることがほとんどです)。IPA明朝を利用する場合は、TrueTypeベースのOpenTypeフォント仕様に準拠したIPA明朝Ver.003.02以降の"ipam.ttf"を指定してください。

Ver.0.9.6.4 (20120215)

  • 二倍ダーシがつながらないデザインのフォントにおける表示を改善
    • 連続するダーシがつながって表示されないのはフォントのデザインに依存する問題であるため、これまでは特別な対応は取っていませんでしたが、つながって表示されるように対処しました。
  • 従来のハードキーに加え、PageUp/PageDownキー等でも移動可能に
    • B&N NOOK Simple Touchのハードキーによる移動に対応しました。

Ver.0.9.6.3 (20120112)

  • GALAXY Nexus (Android 4.0)等で「GPUレンダリングを使用」をオンにしていると表示が乱れる問題に対応
    • 設定画面で「GPU不正描画対策:する」に設定してください。
    • 実機での動作確認を行ってくださった影海苔さん、Agateさん、ご協力ありがとうございました!

Ver.0.9.6.2 (20120111)

  • GALAXY Nexus (Android 4.0)等で「GPUレンダリングを使用」をオンにしていると表示が乱れる問題に対応
    • (対応できていませんでした)

Ver.0.9.6 (20120111)

  • 各種検索(検索連携)でよく使うアプリを複数登録できる機能を追加
    • 従来は、各種検索で表示されるアプリの数が多すぎたり、遅かったり、設定した覚えのないアプリに勝手に飛ばされることもあるなどの使いにくさがありましたが、この点を改善しました。
    • よく使うアプリが設定画面で未登録のときは、従来と同じアプリ選択動作になります。
    • よく使うアプリが設定画面で一つだけ登録されているときは、「各種検索」ボタン押下後、すぐにそのアプリでの検索が開始します。
    • よく使うアプリが設定画面で二つ以上登録されているときは、「各種検索」ボタン押下後、どの登録アプリを使用するか選択するダイアログが表示されます。よく使うアプリとして登録していない他のアプリを使用したい場合は「その他」ボタンを押下してください。
    • ここでの登録はシステム側の「常にこの操作で使用する」アプリの設定とは独立しています。
  • 画面を上下逆転表示にする設定を追加(Android 2.3以上のみで有効)
    • 従来の画面表示方向では持ちにくくなってしまうタブレットSony Tablet Sなど)向けの機能です。
  • GALAXY Nexus (Android 4.0)等で「GPUレンダリングを使用」をオンにしていると表示が乱れる問題に対応
    • (対応できていませんでした)
  • Android 1.5端末での不正動作を修正(v0.9.5.31のみの問題)

Ver.0.9.5.31 (20111201)

  • TOSHIBA REGZA Tablet AT3S0での表示を修正
    • Android Marketとメールで情報をくださったNamuさん、ありがとうございました!

Ver.0.9.5.30 (20111110)

  • 青空文庫注記自体の記述に青空文庫注記が用いられている場合の扱いを改善
    • 注記自体の内部で注記が入れ子になっている記述が含まれる作品のほとんどで表示が改善されます。
      • 青空文庫には以下のような入れ子注記が実在します。
        • かたわな[#「かたわな」に傍点][#「かたわな[#「かたわな」に傍点]」は底本では「かたわ[#「かたわ」に傍点]な」]結び
        • ※[#「女+※[#「臣」の「コ」に代えて「口」、第4水準2-85-54]」、49-15][#「※[#「女+※[#「臣」の「コ」に代えて「口」、第4水準2-85-54]」、49-15]」に白丸傍点](ひめ)の字
    • 注記に誤記がある作品では表示が乱れることがあります。
  • ファイル選択画面での更新日時順表示を微修正

Ver.0.9.5.29 (20111101)

  • ファイル選択画面で更新日時順並べ替え表示に対応
    • ファイル選択画面のmenuボタンで表示されるメニューから表示順を選択できるようになりました(名前順/日付順)。
  • 複数のテキストファイルを含むZIPファイルの処理を改善
    • 簡易的な正規合成処理を追加
    • 若干の高速化

Ver.0.9.5.28 (20111025)

  • 複数のテキストファイルを含むZIPファイルからのテキストファイル選択に対応
    • ZIPファイル内のテキストファイル選択は見出しメニューで行います。
    • Apache Commons Compressの.jarを参照しています。
  • HD720端末での表示調整
    • GALAXY Nexus等の画面サイズ(720x1280)での表示を調整しました。

Ver.0.9.5.27 (20110801)

  • Android 3.0/3.1/3.2 (Honeycomb)端末、B&N NOOK Colorでの表示調整
  • WXGA端末、XGA端末、QWXGA端末、QXGA端末等のフォントサイズ設定を変更
    • MOTOROLA XOOM等の画面サイズ(800x1280)、LG Optimus Pad等の画面サイズ(768x1280)等でのフォントサイズを調整しました。

Ver.0.9.5.26 (20110710)

  • 「配色:ユーザ指定背景画像に白文字」設定の追加

Ver.0.9.5.25 (20110701)

  • 青空文庫Unicode外字注記に対応
    • 「於※[#「革+干」、U+976C、49-11]王」(中島敦『李陵』)など。
  • 「終了時:常にしおりをはさんで終了する」設定の拡充
    • アプリが最小化されたときにも適用されるように変更しました。
  • 「画面のフリック」設定項目の追加
    • 移動量はページ単位または細かい単位(行単位)の選択が可能です。
  • 一部のカスタムROM(CyanogenMod froyo-stableなど)側のバグにより設定画面で発生していた不具合を回避
    • 「画面の明るさ」設定項目について、こちらと同様のバグレポートが寄せられていたため。

Ver.0.9.5.24 (20110601)

  • QHD端末、XGA端末、QWXGA端末、QXGA端末等での表示調整
    • AQUOS PHONE等の画面サイズ(540x960)等での表示を調整しました。

Ver.0.9.5.23 (20110430)

  • 一部のEPUBファイルを適切に開けないことがある点を修正
  • XHTML/EPUB表示のささやかな改善
  • B&N NOOK Colorでの操作に対応
  • Android 3.0 (Honeycomb)端末での表示調整

Ver.0.9.5.22 (20110226)

  • 青空文庫ファイルで使えない文字の外字注記形式による代替表現に対応
    • 「※[#始め二重山括弧、1-1-52]」で「《」を表示など。

Ver.0.9.5.21 (20110218)

  • IS03で表示ページが先頭に戻ることがある点を修正
  • 挿絵の対応拡張子に.jpegを追加
    • 対応拡張子は、.png, .jpg, .jpeg, .gifです。

Ver.0.9.5.20 (20110211)

  • 「画面のタップ」設定項目の追加
    • 「両側とも順方向にページ単位で移動する」を選択すると、画面の左右どちら側をタップしても次ページに移動します。GALAXY Tabなど、右手で持ったときに画面の左側まで指が届きにくい端末でページ送りが便利になると思います。
    • 移動量はページ単位または細かい単位(行単位)の選択が可能です。
  • ダブルクォーテーションマークをダブルミニュート(ノノカギ)に変換
    • 前田年昭様より御示唆をいただきました。ありがとうございました。
    • ダブルミニュートは設定しているフォントによっては向きがおかしくなるため、これまでは縦組みでもダブルクォーテーションマークのまま表示していました。実際、DroidSansJapanese.ttfでは向きが変になりますが、設定を推奨しているIPA明朝では正しい向きに表示されます。今回、後者をもって良しと考えることにして、変換処理を取り入れました。
  • 「フォントサイズ:大」設定時のルビの大きさを変更

Ver.0.9.5.19 (20110108)

  • 挿絵まわりの機能追加
    • 挿絵を長押しするとポップアップで(拡大)表示します。

Ver.0.9.5.18 (20101231)

  • 挿絵のパス区切り文字に'\'が利用されている場合に対応
  • Android 1.6以下の環境での表示改善

Ver.0.9.5.17 (20101202)

  • IPA明朝のダウンロードURL変更に対応
    • 2010年11月30日付けで内閣告示された新しい「常用漢字表」に対応したフォントがIPAから本日公開され、IPA明朝の公式ダウンロードURLが変更されたことに対応しました。

Ver.0.9.5.16 (20101123)

  • WSVGA端末での表示調整
    • GALAXY Tab等の画面サイズ(600x1024)での表示を調整しました。

Ver.0.9.5.15 (20100818)

  • スペース・Enter・削除キーをページ送りに割り振り
    • その他、音量調整ボタン・左右方向キーも利用可能です。
  • 字体の処理オプションを追加
    • 「何もしない」「印刷物に近い字体に置き換えて表示」から選択

スクリーンショット

字体の処理オプションで置き換えられる文字
字体の処理を「何もしない」に設定したときの表示。
「印刷物に近い字体に置き換える」に設定すると、A列の字形がB列の字形に置き換えられる。


青空文庫の「迷信解」(井上円了
なにもこれをサンプルに選ばなくてもという気もするが、最近の新着のなかで面白かったので一枚(季節ものといえば季節ものだし)。
画面5行目はファイルでは「祈祷」となっているが、「印刷物に近い字体に置き換える」設定によって「祈禱」と表示されている。
なお、この作品は青空文庫では新字新仮名で収録されているが、近デジには旧字旧仮名版(底本の親本)がある。1ページ目からインパクト強い!