« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする | トップページ | Kobo: sshパスワード認証設定 »

2015年2月26日 (木)

Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする(設定編)

-- 追記 --
「Kobo: 行間・余白、フォント調節有効化、ページめくり方向変更を簡単にランチャーで」参照。簡単にした。
-- 追記おしまい --

この設定で何がどう変わるかは前回の記事「FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする」参照。

今回は具体的な設定方法。

和書の言語設定を日本語から外国語に変えるなんて、本来馬鹿げているんだけど・・・。
だが、それでようやく、和書の行間・余白、フォントの太さなどの調節機能が洋書並みになる。つまり、本来Koboが持っている能力、海外のユーザーがあたりまえに使っている機能を日本語ユーザーもやっと使えるようになる、ということ。Pocketもそうだが、いつも日本のユーザーは置き去り。

というわけで、ファームウェアがちゃんとしていれば本来やる必要のないことを説明する。

簡単に言えば、.kobo/KoboReader.sqliteをpythonのスクリプトで変更して、このブログで紹介しているいつものパッチをあてるだけなんだが、はじめから説明しようとすると、なんだかとても厄介そうに見えてくる・・・。


◎ファームウェアが3.13.1になっているか確認
言うまでもないことだが、一応確認。「設定」 > 「デバイス情報」で。

◎まずは一番簡単なフルスクリーン化(ヘッダとフッタの非表示)
いつものパッチのページにある説明通り。

1) PCにつないだKoboの、.kobo/Kobo/Kobo eReader.conf をエディタで開いて、

[FeatureSettings]   
FullScreenReading=true

の2行を追加
ただしWindowsについてくるエディタはダメ。改行コードをLF(Unix方式)にできるエディタを使うこと。

2) Koboを起動して、上部メニューの「設定」 > 「読書設定」と進むと、「ヘッダー、フッターを表示:」という項目が追加されている。
Kobo_headeroff
これはAuraの画像。一番下にある。Gloとは違うので注意。
「オン」のチェックをはずすと、フルスクリーンになる。

これで洋書はOKだが、和書は余白・行間の調節ができないため、まだ使い物にならない。

そこで、
◎和書で行間・余白の調節を可能にする(日本語フォント「詳細設定」有効化の前準備)
-- 追記 --
このssh/telnetでpythonのスクリプトを実行する作業が面倒な人は、次の「簡単設定編]のツールを。
-- 追記おしまい --

データベースを書き換えて、和書の言語設定を日本語以外にする。すると、なぜか和書でも行間・余白が調節できるようになる。(本来は言語設定が日本語のままでも調節できなければおかしいんだが・・・。)
具体的には、.kobo/KoboReader.sqlite内のLanguageをja(日本語)から、たとえばnl(オランダ語)に変更する。

2chにあがっていたpythonのスクリプトを利用(http://pastebin.com/PefR4rVK
これはjaをen(英語)に変えるので、英語の本があった場合、支障があるかもしれない。なので、オランダ語(nl)に変更。また、データベース内では日本語はjaの他にJAの場合もあるので、その点も変更。

修正したものがこれ。
「language-ja-to-nl.py」

元のjaに戻すスクリプトも一応
「language-nl-to-ja.py」

-- 追記 --
pythonのスクリプトの作者さんから連絡をいただいた。(下のコメント欄参照)
改訂版: https://dl.dropboxusercontent.com/u/47735857/kobo-python-scripts.zip
この中の
・ReplaceLanguageCode_ja.py : ja > jpn
 フォント詳細設定有効(行間・余白の調節が不要な場合)
・ReplaceLanguageCode_ja_Alt.py : ja > enm(中世英語)
 フォント詳細設定、行間・余白の調節ともに有効
(language-ja-to-nl.py ですでにnlに変えている人は、jaに戻してから使うこと)

また、その他、ページめくり左右の変更スクリプトなどもあるので、必要に応じて。
使い方は、language-ja-to-nl.pyと同じ要領で。
-- 追記おしまい --


やり方を2つあげるので、好きな方で。

◯データベースの書き換え(その1 PCで)
1) Kobo端末の、.kobo/KoboReader.sqliteをバックアップ。何かあったらバックアップコピーに戻せるように。

2) language-ja-to-nl.pyをPCにつないだKoboの.koboフォルダ(KoboReader.sqliteがあるところ)にコピー

3) pythonのスクリプトを実行
・コマンドプロンプトやターミナルで、Koboの.koboフォルダに移動
・その後、以下のコマンド入力、最後にEnterキーを。

python language-ja-to-nl.py

4) Koboの再起動(たぶん必要)

* Windowsの人はpythonをインストールして、たぶんコマンドプロンプトで操作。(Windowsのことはよくわからないので、あとは自分で)
* もちろん、KoboReader.sqliteをPCの適当なフォルダにコピーして、そのフォルダでスクリプトを実行、できたKoboReader.sqliteをKoboの.koboフォルダに戻してもよい。そのほうが安全・安心か?
-- 追記 --
* sqlite3もインストール済みでないと。あまりに当然のことなので忘れていた。
-- 追記おしまい --

◯データベースの書き換え(その2 Kobo端末でスクリプト実行)
・まずはツールのインストール
Kobo用のtelnet/ssh、python、sqlite3などが入ったツールがある。
http://www.mobileread.com/forums/showthread.php?t=254214から

1) kobo-stuff-1.3.N-r◯◯◯◯.tar.xz をダウンロード・解凍(◯◯◯◯は数字。よく更新されるので頻繁に番号が変わる)

2) その中のKoboRoot.tgzをKobo端末の.koboフォルダにコピー。Koboを取り外し、再起動。

これでツールのインストール終了。telnet/sshがパスワードなしで使える状態になっている。(できればsshにパスワードを設定して、telnetは無効にしたほうが安全)
注意が必要なのは、すでにtelnetを有効にしている人。それを無効にしてからインストールすること。

telnetの動作確認は、ターミナルやコマンドプロンプトで
 telnet 'KoboのIPアドレス'
とすると、Koboにログインできる。ログアウトするには、exit と打つ。IPアドレスの調べ方などは下記参照。

では、手順
0) Kobo端末の.kobo/KoboReader.sqliteをバックアップ。何かあった時、元に戻せるように。

1) Windowsの場合はtelnet/sshのクライアントを準備。Windowsについてくるものを有効にするとか、PuTTYなどのターミナルをインストールするとか?(よく知らない)

2) language-ja-to-nl.py と language-nl-to-ja.py をKobo端末の".kobo"フォルダにコピーしておく

3) Kobo端末のIPアドレスを調べる
・メニューの「設定」 > 「Wi-Fi 接続」 > 「Wi-Fi機能 オン」にチェック
・さらに、「Wi-Fiネットワークに接続」の「接続」をタップ(ネットワークの再設定を促されるかもしれないが、自分のルーターをもう一度タップするだけでよい。これは3.13.1のバグ)
・メニューの「設定」 > 「デバイス情報」と進むと、「IP アドレス」がある(仮に192.168.0.3としておく)

4) ターミナル、コマンドプロンプトで、telnet/sshでKoboにログイン。以下のコマンド入力、最後にEnterキーを。

telnet 192.168.0.3
もしくは
ssh root@192.168.0.3

(192.168.0.3の部分は、上で調べたIPアドレスを入れること。パスワードは要求されない。sshの場合はパスワードを求められたら、Enterキーのみでログインできる)

5) ログインできたら、以下のように順にコマンド入力。一行ごとに最後にEnterキーを。

cd /mnt/onboard/.kobo
python language-ja-to-nl.py
reboot; exit

これで、Koboが再起動する。
あとは、和書を開いて、「Aa」メニューを出してみて、行間と余白のスライダーが有効になっているかチェック。和書はフルスクリーンでないと、余白はうまく調節できない。

あと、元のjaに戻したい時は、同じ手順で

python language-nl-to-ja.py

和書を追加するたびにpythonのスクリプトを実行する必要があるし、USB接続の手間が省けるので、telnet/sshのほうが手軽だと思うが、お好きな方で。

動作確認してみて問題なかったら、これで終了してもよいが、スクリーンの下辺の端でフォントが切れて表示されるかもしれない。そこで次の作業。次のパッチでフォントの太さの調節その他のカスタマイズもできる。

◎フォント詳細設定の有効化
いつも紹介しているパッチで、日本語フォントも太さを調節できるようになる(FW3.11.0になるまでは、上記のデータベースの書き換えなんかしなくても、このパッチだけでOKだった)。このパッチで他に、

・行間・余白、フォントサイズ変更幅をカスタマイズをしたい
・フッタのサイズをカスタマイズしたい
・フォントのメニューから欧文フォントを消したい
・リフレッシュのページ間隔を変更したい
・自動アップデートを抑止したい
・フロントライトの増減を10%単位ではなく1%単位にしたい
・検索先のデフォルトをストアでなく、端末内のライブラリに変更したい
・スリープ、電源オフになるまでの時間を変更したい
・ホーム画面のタイルをスマートにしたい
・ページをまたいでpdfの拡大・縮小率と位置を維持したい
なども可能。

が、とりあえず「フォント詳細設定」有効化に関係するところだけ説明

いつものパッチ:
http://www.mobileread.com/forums/showthread.php?t=256200
あとはページの説明通りにパッチをあてる。

簡単に言うと、
・ファームウェアを入手して所定のフォルダに置く
・パッチ(libnickel.so.1.0.0.patch)をエディタで編集
・3.13.1.bat(Windows)/3.13.1.sh(Linux、Mac)を実行
・できあがったKoboRoot.tgzでKoboをアップデートする
という手順。

1) パッチを入手して、解凍
http://www.mobileread.com/forums/showthread.php?t=256200 から
patch_kobo_3131.zipをダウンロード・解凍

2) ファームウェア3.13.1を入手
http://www.mobileread.com/forums/showthread.php?t=185660 から。
Glo用とH2O用を間違えないように。6インチAuraはH2O用の方で。
Glo用
H2O/Aura用

3) ダウンロードしたファームウェアkobo-update-3.13.1.zipを、パッチを解凍してできた3.13.1_sourceフォルダに置く

4) パッチの編集
3.13.1_source/libnickel.so.1.0.0.patch をエディタで開き、以下のように書き換える。

・フォント詳細設定を有効にする
以下の行を探して

patch_name = `Freedom to advanced fonts control`
patch_enable = `no`
`no`を`yes`に書き換える(引用符はバッククォート)

・上下左右の端でフォントが切れるのを防ぐ

patch_name = `KePub zero body margin/padding`
patch_enable = `no`
ここも`yes`に

あとは和書の場合は行間の幅(patch_name = `My 15 line spacing values`)も変えたほうがいい(増減幅が小さすぎるので)。面倒ならこれを`no`に。(ちゃんと設定したければ`yes`で、行間の数値を自分好みに書き換える。下記サンプル参照)

5) 3.13.1bat/3.13.1.shを実行して、KoboRoot.tgzを作成
・Windows: 3.13.1batをダブルクリック
・Linux/Mac: ターミナルで、./3.13.1.sh を実行
エラーがなければ、3.13.1_targetフォルダ内に、KoboRoot.tgzができている。

6) あとは、KoboRoot.tgzをPCにつないだKobo端末の.koboフォルダにコピー。Kobo端末を取り外して、再起動。

参考までにうちのGlo/Aura用に編集したlibnickel.so.1.0.0.patch。サンプルとして。
「libnickel.so.1.0.0.patchサンプル」

こまかなカスタマイズをするのでなければ、基本yesかnoかを書き換えるだけ。作業自体はなにもむずかしくない。英語を読むのが面倒かもしれないが・・・。


ざっとこんな感じだが、はっきり言って、和書なのに日本語ではなく外国語に設定したほうがまともに動作するとか、まるで意味不明。楽天さん、何とかならないんですか、これ?

ふう、長かった。

|

« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする | トップページ | Kobo: sshパスワード認証設定 »

kobo」カテゴリの記事

コメント

Koboの使い勝手をよくするために、大変参考にさせてもらっています。
貴重な情報をいつもありがとうございます。
この記事を拝見してtelnet/sshを使えるようにしたのですが、安全のために「sshにパスワードを設定してtelnetを無効にする」を設定したいと思っています。
ご面倒でなければ設定方法を解説いただけないでしょうか?
よろしくお願いいたします。

投稿: | 2015年2月26日 (木) 20時38分

失礼します。
私が書いたそのスクリプト、language-ja-to-en.pyですが、いくらか改訂しましたので参考にどうぞ。

https://dl.dropboxusercontent.com/u/47735857/kobo-python-scripts.zip

ReplaceLanguageCode_ja.pyがそれです。
変更点は、メモリ上でジャーナリングを行うようにした事と、置換後の言語をjpnにした事です。
jpnという文字列はcalibreのKobo Extended driverのオプション、replace content language codeを有効にして、言語を日本語に指定した本をkoboに送った時に、データベースに書き込まれるものと同じです。
このような規定外の文字列を書き込んだ場合でも、koboのシステムはそれを英語の本として認識するようです。

投稿: ラマダン | 2015年2月26日 (木) 22時11分

ssh/telnetの解説希望の方

ここで説明しようとしたら、長くなりすぎたのか、書き込めず。
Windowsでのやり方はわかりませんが、とりあえず記事として書きますので、少し待ってください。

投稿: soranoji | 2015年2月27日 (金) 00時52分

ラマダンさん

あのスクリプトがなかったら、和書でも行間・余白の調節ができるなんて気づかなかったと思います。ありがとうございました。

素人でpythonもsqliteもわかっておらず、なんとなくあたりをつけて当たったらラッキー、程度のものです。
ジャーナリングで思いつくのはファイルシステムくらいで・・・。突然の障害に強くなる?
jpnのほうが気分的にすっきりするし、calibreと連携できるんだったら、なおさらいいかもしれません。

他のスクリプトも喜ぶ人が多そうですね。

投稿: soranoji | 2015年2月27日 (金) 01時26分

ラマダンさん

ReplaceLanguageCode_ja.pyを試してみたんですが、jpnだと和書と判断されるのか、行間・余白のスライダーが有効になりませんでした。
calibreから転送した本はデータベースの変更が必要なくなるので、楽そうだと思ったんですが・・・。

投稿: soranoji | 2015年2月27日 (金) 19時45分

システム言語が日本語だと本の詳細情報の言語がEnglishとなっていてもそうなりませんか?
英語環境では有効になるはずです。
私のfw3.13.1の環境では文字列がjpnでもenでもnlでも日本語環境においては全く同じ挙動をしているので、soranojiさんが前の記事で行間等を調整出来ているのは何故なのか、疑問に思っているくらいです。
現時点ではデータベースの言語と、システム言語以外の要因は全く見当もつきません。

投稿: ラマダン | 2015年2月28日 (土) 22時37分

システム言語を英語にするとたしかに行間・余白のスライダーが有効になりますね。

ただ、日本語環境ではなりません。
日本語環境、jpn で
詳細情報の言語:English
にはなるんですが。

>私のfw3.13.1の環境では文字列がjpnでもenでもnlでも日本語環境においては全く同じ挙動をしているので、soranojiさんが前の記事で行間等を調整出来ているのは何故なのか、疑問に思っているくらいです。

ここのところがよくわからないのですが、
jpn/en/nlのどれでも日本語環境で同じ挙動だとおっしゃるなら、nlへの変更で行間の調節等が可能になったという前記事に、どうして疑問を感じるのでしょう?

でも、システム言語も日本語以外にすると確実らしいことはわかりました。

投稿: soranoji | 2015年2月28日 (土) 23時37分

すみません言葉足らずでした。いずれの文字列を使用しても日本語環境ではスライダーが有効にならない、という意味で書きましたが、結局それは私のkoboのデータベースが破損していたのが原因のようです。失礼いたしました。

確かにenやnlなどの規定の言語コードを使用することで、日本語環境でも行間余白の調整が可能になることを確認しました。jpnのような規定外の文字列が指定されている場合に限って、システム言語が影響を及ぼすのでしょうか?でたらめな文字列を使用した場合も日本語環境ではスライダーは有効にならなかったので、おそらくそうなのかと。

もっとも、行間や余白の調整機能は縦書きの和書においては完全に上手く機能しているとは言えないので、詳細設定とヘッダ&フッタ表示だけが有効になる今の状態は悪くは無いと思います。

もう少し検証してから代用のスクリプトを追加します。

投稿: ラマダン | 2015年3月 1日 (日) 02時26分

日本語環境でしばらく検証した結果、ある程度の法則がわかりました。

例えばengやenmを使用した場合にも、行間と余白の設定が可能になります。要するに、文字列の中にenのような言語コードが含まれてさえいれば、そのコードが表す言語として認識するようです。engとenmは、それぞれcalibreで本の言語をEnglishとMiddle Englishに指定した時に、metadata.opfに定義される文字列です。複数のコードが含まれた文字列の場合は、後に置かれたコードが優先されるようです。(例えばja-enはスライダーが有効になるが、en-jaは無効)

ということで、calibreで指定できる言語の中でもまず使われないと思われる、enmを置換後の文字列として使用した、ReplaceLanguageCode_ja_Alt.pyを先日のリンク先に追加しました。

それとkobo端末上で手動でスクリプトを実行する手段としてKobo Start Menuを利用する方法があります。
http://www.mobileread.com/forums/showthread.php?t=255978

このKSM07用にコードを移植しましたので、こちらの方も参考までにどうぞ。mobilereadのAutoShelf betaの応用です。
https://dl.dropboxusercontent.com/u/47735857/kobo-shell-scripts.zip

私に出来ることは以上です。

投稿: ラマダン | 2015年3月 1日 (日) 17時33分

ラマダンさん

検証ありがとうございました。面倒な作業だったのではないでしょうか。enだと英語の本と和書と区別がなくなって、元に戻すときに面倒になりそうなので、calibreとの連携も可能なenmがよさそうです。

Kobo Start Menu用のスクリプトもありがとうございます。KSM用のスクリプトを登録すればいいんだろうなとは思っていました。以前KSM06をちょっと触ったことがありますが、あんなにたくさんの機能はいらないなと思って、すぐやめてしまいました。
さてどうしようかな。

投稿: soranoji | 2015年3月 1日 (日) 19時26分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/592212/61191319

この記事へのトラックバック一覧です: Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする(設定編):

« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする | トップページ | Kobo: sshパスワード認証設定 »