Linux で EPUB を読む

Linux で使える EPUB リーダー

使えるアプリは幾つかあるが、世界全体では需要が少ない縦書き、コミックの様に画像メインの右綴じ見開きに対応しているアプリは少ない

Ubuntu 23.10 で apt もしくは Snap でインストールできる幾つかのアプリで動作確認してみた

最低限、次項目が可能か? を確認

  • 縦書きは単純に縦書き左送り
    • できても実際の閲覧時に不都合がある場合は△とし、表右に詳細を記載
  • 右綴じ画像見開きは横長ウィンドウで 2 ページ表示される
    • できても日本の右綴じ (右開き) と同様にならないものは△とし、表右に詳細を記載
各種アプリの対応状況
名前バージョン縦書き文章右綴じ画像見開き
Arianna23.08.31
Bookworm1.1.2
calibre6.24.0
csBooks8.1.22, 3
FBReader2.0.53, 4
Foliate3.1.0
Okular23.08.44, 5
OpenComic1.1.04, 6
Thorium Reader2.2.07
  1. 連続読書モードをサポートしていないようで、一つのキーで読み進められない
    • 内部の HTML ファイル (通常は章ごとで別れている) 内は PageUP, PageDown, Space, Back Space
    • 別ファイル (章を跨るの) は,
    • 画像小さく表示される
    • , が縦書き書籍と感覚が逆
      • 縦書き横書き関係なく が読み進み
  2. 左右画像が離れて表示される→見開き表示としては不適切
  3. 左右逆に配置される
  4. 拡大率によって画像が荒くなる
  5. 画像全体が表示されない
    • 「ページ」モードでは 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」ではキーボード中心と使い分けたほうが使いやすい
    「Library view」 「viewer window」
  • 引数なしで起動すると
    • 起動済みの Foliate が有れば、それをアクティブに
    • なければ「Library view」で起動
      • 一覧のコンテンツには開いても自動で追加される
      • 一覧中のコンテンツを選択すれば「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」のマウス操作

  • マウスをウィンドウ上に移動するとタイトル・バー (下左図) が、下に移動するとスクロール・バー (下右図) 表示される
    「viewer window」でのタイトル・バー表示 「viewer window」でのスクロール・バー表示
  • スクロール・バー非表示では、ページ送りはクリックでは行えず 3rd (ホイール) ボタン操作のみ*
  • 「viewer window」で選択した例 選択するとメニュー (右図) が表示され、文書内検索、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 の場合、縦書き文書でも前/次ページは上下でスクロールして遷移する

欲しい機能

  • 「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 で反映されるにはリロードする必要が有る
  • またリロード前でも、更新前の状態で閲覧はでき、目次も表示できるが、目次から該当章・節にはジャンプできない