Linux で使える EPUB リーダー
使えるアプリは幾つかあるが、世界全体では需要が少ない縦書き、コミックの様に画像メインの右綴じ見開きに対応しているアプリは少ない
Ubuntu 23.10 で apt もしくは Snap でインストールできる幾つかのアプリで動作確認してみた
最低限、次項目が可能か? を確認
- 縦書きは単純に縦書き左送り
- できても実際の閲覧時に不都合がある場合は△とし、表右に詳細を記載
- 右綴じ画像見開きは横長ウィンドウで 2 ページ表示される
- できても日本の右綴じ (右開き) と同様にならないものは△とし、表右に詳細を記載
名前 | バージョン | 縦書き文章 | 右綴じ画像見開き |
---|---|---|---|
Arianna | 23.08.3 | △1 | ☓ |
Bookworm | 1.1.2 | ☓ | ☓ |
calibre | 6.24.0 | ○ | ☓ |
csBooks | 8.1.2 | ○ | △2, 3 |
FBReader | 2.0.5 | ☓ | △3, 4 |
Foliate | 3.1.0 | ○ | ○ |
Okular | 23.08.4 | ☓ | △4, 5 |
OpenComic | 1.1.0 | ☓ | △4, 6 |
Thorium Reader | 2.2.0 | △7 | ○ |
- 連続読書モードをサポートしていないようで、一つのキーで読み進められない
- 内部の HTML ファイル (通常は章ごとで別れている) 内は PageUP, PageDown, Space, Back Space
- 別ファイル (章を跨るの) は←, →
-
- 画像小さく表示される
- ←, → が縦書き書籍と感覚が逆
- 縦書き横書き関係なく→ が読み進み
- 左右画像が離れて表示される→見開き表示としては不適切
- 左右逆に配置される
- 拡大率によって画像が荒くなる
- 画像全体が表示されない
-
- 「ページ」モードでは 2 ページめが重なる
- 「スクロール」モードにすると
- 正確に 1 ページ分スクロールしない
- スクロールバーによって文字が隠れる
Foliate
上の表の通り殆どは何らかの不都合が生じるので、両方に対応している Foliate を使う
インストール
インストールについては少し注意が必要
- Ubuntu 23.10 までは公式パッケージの apt 版は古い (Ver. 2.6.4) ために見開き表示に問題がある
- 特定の設定でないと見開きにならない
- 見開き可能な設定だと、右綴じコンテンツでページを読み戻すことはできても読み進めができない
- Snap 版は日本語入力ができず、検索時に問題となる
- Flatpack 版は
- LC_ALL=en_US.UTF-8 以外の状況で EPUB ファイルを開こうとしても、読み込みがいつまで経っても終わらない
- LC_ALL=en_US.UTF-8 flatpak run com.github.johnfactotum.Foliateで起動すると日本語が表示されない
この場合は、非公式版の PPA 版をインストール
sudo add-apt-repository ppa:apandada1/foliate && sudo apt update && sudo apt install foliate
Ubuntu 24.04 以降はこの問題はないので、普通に apt コマンドなどでインストールすれば良い
実際の使用方法
- サンプル画像に使ったのは次の場所においてあるファイル
- 大きく分けて「Library view」 (下左図)/「viewer window」 (右下図) 2 のモードがある
- 「Library view」では主にマウスで、「viewer window」ではキーボード中心と使い分けたほうが使いやすい
- 引数なしで起動すると
- 起動済みの Foliate が有れば、それをアクティブに
- なければ「Library view」で起動
- 一覧のコンテンツには直接 「viewer window」で開いても自動で追加される
- 一覧中のコンテンツを選択すれば「viewer window」になる
- 引数有りで起動すると直接「viewer window」で開かれる
- 画像を用いた固定レイアウトの場合、ウィンドウが横長だとの見開き表示になる
「viewer window」のキー操作
一部 Vi ライクな操作がある
- ↓, N/↑, P
- 次/前ページ
- J/K
-
- 「View Menu」→「Scrolled Mode」OFF (Ctrl+M)では次/前ページ
- 「Scrolled Mode」ON では次/前ページ方向にスクロール
- ←, H/→, L
- ページの右/左送り
- 縦書き書籍だと次/前ページに当たる
- 紙の書籍でページ捲りで、紙を動かす方向ではなく、その捲る紙の側と一致している
- PageDown/PageUp
- 次/前ページへスクロール
- Ctrl+D
- ブックマーク、栞の追加/削除をトグル
- Ctrl+F, /
- 検索欄と目次 (サイド・バー) 表示
- Ctrl+L
- スクロール・バー/ロケーション・ウィンドウを表示
- Esc (ロケーション・ウィンドウを閉じた) 後の Space で「Library view」に移行
- Ctrl+I
- カバー画像と書誌情報では表示される
- Ctrl+N
- 新規ウィンドウを開く
- Ctrl+W
- ウィンドウを閉じる
- Ctrl+Q, F7
- 全てのウィンドウを閉じる
- Ctrl+O
- ファイルを開く
- Ctrl+M
- 「Scrolled Mode」ON/OFF
- Ctrl+P
- 印刷
- Ctrl+R
- リロード
- Alt+,
- 「Font & Layout Settings」ウィンドウを開く
- Alt+←/Alt+→
- リンク・ジャンプした時の履歴を戻る/進む
- F1
- アプリ情報を表示
- F9
- アプリ情報を表示
- 開いた直後はライブラリ切り替えボタンにフォーカスが当たっている
→開いた直後の Space で「Library view」に移行
- 開いた直後はライブラリ切り替えボタンにフォーカスが当たっている
- F10
- グローバル・メニューを開く/閉じる
- F11
- フル・スクリーンを ON/OFF
- F12
- インスペクター (開発者ツール) 表示
- +/-
- リフロー形式のコンテンツで文字の拡大/縮小
「viewer window」のマウス操作
- マウスをウィンドウ上に移動するとタイトル・バー (下左図) が、下に移動するとスクロール・バー (下右図) 表示される
- スクロール・バー非表示では、ページ送りはクリックでは行えず 3rd (ホイール) ボタン操作のみ*
- 選択するとメニュー (右図) が表示され、文書内検索、Web 検索、コピーなど各種操作が行える
- リフロー形式内の画像ファイル (background-image は除く) 上のダブル・クリックで画像だけ表示するウィンドウを開く
設定可能項目
「View Menu」→「Font & Layout Settings」(Alt+,) で行える
- Font
- フォント・サイズ/種類
- Layout
- リフロー形式のレイアウト
- 行間、余白、ウィンドウサイズとは別の縦横最大表示範囲など
- ただし行間はコンテンツ内部 CSS の指定がされていれば、それに従いここでの設定は無視される
- Color
- 配色
- Behavior
- Reduce Animation (スクロール時のアニメーション ON/OFF)
欠点・問題点
- 「viewer window」でカバー画像を確認できないケースがある
- どうやら
<itemref idref="title" properties="rendition:page-spread-center"/>と rendition:page-spread-center が連続しているのが条件
- 書誌情報で表示される
- どうやら
- 見開き表示で中央に細く黒い線が入る
- 一続きの連続する 2 つの画像並べて表示するときは不都合
- 上で紹介した殆どのキー操作はどこにも説明がない
- 「Scrolled Mode」ON の問題
- 3rd (ホイール) ボタンでページ送りに制限がある
- 縦書きだと「viewer window」では動作せず、スクロール・バーによる操作が必須になる
- 横書きであっても内部の HTML ファイル (通常は章ごとで別れている) を跨った移動ができない
- 縦/横書きに関わらずリフロー形式のコンテンツで、一度先頭/先頭まで移動するとページ送りができなくなる
- こうなると OFF にしても改善されず、一度コンテンツを閉じる必要がある
- 加えて「Reduce Animation」OFF の場合、縦書き文書でも前/次ページは上下でスクロールして遷移する
- 3rd (ホイール) ボタンでページ送りに制限がある
欲しい機能
- 「Library view」はコンテンツ表示は閲覧順固定なのでソート方法の切替
- タイトル、著者、発行日 (作成日:<meta property="dcterms:modified">) とそれらの逆順
- 「Library view」「viewer window」両方でショートカットの設定
- 目次をキーボードで操作する方法
- スクロール・バー非表示時のクリックによるページ送り
- CSS の @media (prefers-color-scheme: dark) への対応、または「Invert Colors in dark mode」を ON にしても画像の色は反転させない
自分で EPUB を作り、その確認に使う留意点
幾つかの CSS には対応していない
予想されることで有るが、やはり全ての CSS に対応しているわけではない
とりあえず気がついたのは、page-break-before 系の avoid
「Scrolled Mode」OFF と CSS の組み合わせによって起きる問題
- background-size: cover; には一部未対応のようで、親要素で width, height がピクセル単位だと、そのままのサイズで表示される
- 内部の HTML が別ファイルなら、そこでページが変わるが、そういった場所の要素に対して page-break-before, page-break-before, page-break-after, break-after といったページ分割プロパティで、always など不要なページ区切りを指定していると、表示されない文章が出る場合がある
更新は Foliate に反映されない
- Foliate で開いた状態でその EPUB ファイルを更新しても、Foliate には反映されない
- そのため Foliate で反映されるにはリロードする必要が有る
- またリロード前でも、更新前の状態で閲覧はでき、目次も表示できるが、目次から該当章・節にはジャンプできない