縦書き電子書籍のための縦中横
青空文庫に限らず、縦書きのEPUB電子書籍を作る時に半角の英数字を縦にするための小ネタが今回のエントリ…なにを今さら、というネタで、縦書き文章で半角英数字の縦中横なんて当然。
それでもネタとして取り上げるのはビミョーに考えることがあって、たぶん、どんなことを縦中横にするのか、どうやってるのかがいろいろあるから。特にWEB経由の文章は半角英数字がてんこ盛り。全部対応するのはやってられないけど。
・一文字の英数字は全角の英数字にして縦表示にしたい。
・数字の3桁以上は縦中横にすると無理矢理感が強い。この場合はそのまま転がしておきたい。
↑このへんがこだわりどころ。
そのために使ってるのが以下のもの
置換する時にゴソゴソする必要があったのでメモ…「1 while〜」のあたり、たぶん5分後には忘れる
・perl
sub _tcy{
my $self = shift;
my $str = shift;
return $str if $str =~ m![0-9][0-9][0-9]+!;
$str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!sprintf(qq{<span class="tcy">%s</span>}, $1)!eg;
return $str;
}
sub h2z{
my $self = shift;
my $str = shift;
$str =~ tr/a-zA-Z0-9\!\?/a-zA-Z0-9!?/;
return $str;
}
sub add_tag{
my $self = shift;
my $str = shift;
$str =~ s!^([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$self->h2z($1) . $2!e;
$str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])$!$1 . $self->h2z($2)!e;
1 while $str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$1 . $self->h2z($2) . $3!eg;
$str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!$self->_tcy($1)!eg;
return $str;
}
・style sheet
.tcy {
-webkit-text-combine: horizontal;
-epub-text-combine: horizontal;
}
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
青空文庫をEPUB3電子書籍に変換
青空文庫の『罪と罰』(ドストエフスキー/米川正夫 訳)をepub3の電子書籍にした。
以前も何回かやってるんだけど、今回、割りと真面目にスクリプトを作ったのでメモしておこう、というエントリ。
青空文庫の資産は膨大だし、なんといっても青空記法が最強だろう。
それに、青空文庫の本を制作する姿勢は見ていて背筋が伸びるほどちゃんとしている。
底本の誤植の指摘、ルビや圏点はもちろん、字下げや地付きといったレイアウトについても底本を忠実に再現している。
「青空文庫」
わたしはmarkdownというかその手のなんちゃら記法には否定的で、そんなものを学習するヒマがあったらhtmlを読み書きできるようにしたほうが早い、と思っている。
それでも青空文庫の青空記法だけは別格で、全角文字で指示を入れる・可読性の優れた書き方、おそらく入力ボランティアさんにとても優しい。全角文字というのがポイントで、これによってプログラム的なタグやなんかとバッティングする心配がない。
これでほぼ表現すべきことを網羅、対応してるんだから改めてびっくりさせられる。
今回作ったのは。
・青空文庫で公開されている本のテキスト版、zipファイルをダウンロード
・ダウンロードしたzipファイルを所定のディレクトリに保存
・書誌情報(タイトルと著者名)を記載したファイルを作成
・カバー画像を作成して所定のフォルダに保存
以上で、あとはスクリプトを叩けば電子書籍の出来上がり、というもの。
そして、今回一番手こずったのが、JIS第3水準、第4水準の漢字の扱い。
青空文庫のテキストファイルは歴史的経緯もあって文字コードがShiftJIS。青空文庫が始まった時期的に当時としては最適だったんだけど、今から始めるならutf8だったろうなあ。
ということでシフトJISで扱えない漢字、第3水準、第4水準の漢字については
[#「木+吶のつくり」、第3水準1-85-54]
などと、青空記法で記載されている。
最初、コード変換なんて計算させればいいんだろう、ぐらいに考えてたら甘かった。
グーグル先生にお願いしてもそんなお手軽な方法は教えてくれない。
どうやらベタでコードと漢字のハッシュを作って対応するしかないっぽい。切り替えて検索方法を変えて探して見つけたサイト
JIS第3水準漢字一覧表【全1259字】(JIS X 0213:2004)
https://www13.plala.or.jp/bigdata/jis_3.html
JIS第4水準漢字一覧表【全2436字】(JIS X 0213:2004)
https://www13.plala.or.jp/bigdata/jis_4.html
(※どちらもhttpsではなくてhttpでアクセスしてください)
こちらに「テキストでコピーできる一覧表」があった。
こちらにも書かれてるように「使いやすい一覧表が無く、コピペできないPDFとかしか無かった」のはほんとその通りで、こちらのページには大感謝、だった。ありがとうございます。
これをスクリプトに仕込んでハッシュに読み込んで、青空文庫のJIS3、JIS4に対応することができた。
これさえクリアしてしまえば、EPUB3ファイルを作成するについては使いまわしの部品の組み合わせだけ。おかげで、青空文庫から電子書籍化が簡単になった。
手作業が必要なのは「タイトル・著者名を記載したテキストファイルを作成する」のと「カバー画像を作成する」の2つだけ。カバー画像はこだわらなければ真っ白の画像でもかまわない。
とはいえ、せっかくだし「本」「書籍」っぽくしたよなあ、という欲も出るんで、カバー画像を作るのに時間が一番かかる。
今どきはAIにイラストを発注することができるので、『罪と罰』のカバー画像もAIにお願いした。
年寄りの趣味として本作りは悪くない趣味じゃないかなぁ。
で、こんなネタで終わらせると申し訳ないので、上記サイトからいただいた漢字テーブルを貼り付けておきます。全部で3817行あります。未定義のところは「〓」を入れてます。
・jis3で始まるのは水準3。jis4で始まるのは水準4
・続く「-」で繋がってるのは面-区-点
・「,」の後ろが該当する漢字
※ネタ元のサイトはヒエログリフなんかもあって、めっちゃ充実しているんでぜひ飛んでみてみてください。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
WORDをテキスト保存した時のルビの捕捉
いや、あいかわらず雑なネタ。
.docx、ワードファイルではなくて、ワード文書を書式なしテキストで保存したテキストデータがたまにやってくる。基本的にシンプルなものが多くて流れ作業で済む。
…なんだけど、ルビのついたものがたまにあるのでその対応のメモ。
ワードの文書を書式なしtxtで書き出すとルビは
「これは漢字(かんじ)にルビがつく」
などと、ワード文書ではルビのところが、漢字と半角カッコでくくられたルビにわけられて保存されることになる。
そういや、以前もこんなことあったなあと思い出して、この雑記帖を検索したら出てきたのが
青空文庫のルビや傍点をHTMLタグに変換
https://t2aki.doncha.net/?id=1443167217
↑このエントリ。
青空文庫で使われている、青空記法は多くのひとに使われるように、よく練られているなあ、と感心した記事で、やっぱりさきほども改めて感心。
てことで、その時の記事からほぼ流用したのが以下のスクリプト。
perlで、Unicodeブロックを使った正規表現で漢字やかなを拾えるんで大助かり。
ただ、こいつはビミョーで、漢字に続いて半角カッコがあるのは、ワードが吐き出したルビだけとは限らないし、ルビの対象となる漢字の範囲がこれだけだと特定できない。
青空記法では問題にならないんだけど、ワードの吐き出しに多くは求められない。
なので、あくまでも初校作成時の手助け程度、かな。
にしても。
まだ5インチと3.5インチのフロッピーディスクが現役で、MSDOSは3.0が出た頃、NECの98シリーズが人気だった頃だからもう40年近く前の昭和の頃。日本ダービーでシンボリルドルフが皇帝になった頃。
Wizardryというゲームがやりたくてパソコンを買って、その後競馬データをこねくり回すために使いだしたawkやperl、unix環境。言ってしまえば、遊びでやってた当時の余録で、還暦すぎても小遣い稼ぎができるんだから、なにが役に立つのか立たないのかなんて、その時にはわからないもんだわな。
仙人の弟子の雑巾がけ庭掃除のネタは深いものがあるなあ(しみじみ)
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
Chromebookで電子書籍を読む
正規のChromebookはgoogle playからアプリをダウンロードして使うことができる。
デスクトップやノートパソコンでAndroidアプリが使えるということになる。
やりたいことは。
ASUSのChromebook CX1101で電子書籍を読む、というか表示確認をしたい。
今のところ、ChromebookというかChromeOSで制作した電子書籍を確認するためには、
・WINDOWSのノートパソコンを起動して
・電子書籍ファイルを共有フォルダに保存して
・WINDOWS版のKinoppyを立ち上げて読む
これだけっちゃこれだけなんだけど、この「これだけのために」が面倒くさい。
手元のChromebookでそのまま確認できればらくちん。
てことで、ASUSのChromebook CX1101でも電子書籍を読めるように電子書籍リーダーを探してみた。
google play storeで確認したところ。
kindleとkinoppyはChromebookに対応していない。
kindleについてはgoogle play storeではなくて、Amazon アプリストアから直接ダウンロードすれば使えるらしいけど、いくつか手順が必要でそこまでやる?
https://www.itmedia.co.jp/news/articles/2206/15/news181_2.html
↑chromebookにamazon アプリストアをインストールする方法
大日本印刷のhontoがChromebookでも使える
https://play.google.com/store/apps/details?id=jp.co.dnp.eps.ebook_app.android
問題なくgoogle play storeからインストールできた。
すでにhontoで購入済みの本も本棚に同期されていて、すんなり読める。
ローカルの電子書籍、epubファイルを読ませるには、リーダーごとに指定された保存フォルダにepubファイルを保存する必要がある。
Andoroidアプリのhontoの場合は
/storage/emulated/0/Android/data/jp.co.dnp.eps.ebook_app.android/files/epub/
↑ここにファイルを保存する。
chromebookではどこに保存するのか探してみた。
chromebookの「ファイル」アプリで「マイファイル」→「Playファイル」
「すべてのPlayフォルダを表示する」にチェックを入れると出てくる
/mnt/chromeos/PlayFiles/Android/data/jp.co.dnp.eps.ebook_app.android/files/epub/
↑ここにファイルを保存する。
とりあえずはこれでOKかな。
ほんとは本体に保存するのではなくて、作業しているSDカードをlinkしたいところだけど、
ln -s
で権限がないとはねられる。Playファイル以下にあるフォルダ側の権限の問題っぽい。
最終的に納品前にkindle previewerでの確認も必要なので、WINDOWSを立ち上げることになるんだけど、途中途中のちょっとした確認はこれで手間がずいぶん省ける。
電子書籍を自分が読む時はスマホなんだけどね。
昭和の書籍の文字サイズは老眼には厳しいんで、古本ではなくて、文字サイズを変更できる電子書籍がありがたいんだよなあ(ポンコツ)
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
WORDの小ネタ
ワード(MS WORD 2010)についての小ネタ
毎度毎度検索して探すのも面倒なので、ここにメモ。
傍点(圏点)のついた箇所を検索
・「ホーム」→「検索」
・検索窓の右にある小さな▼をクリック
・「高度な検索」→「書式」→「フォント」
・「すべての文字列」の項目にある「傍点」を選択(ゴマ)して「OK」
・ひとつ戻ったところで検索窓を空欄にして「次を検索」
「書式」の先の「フォント」から設定する…て、気づかないだろ
ルビを検索
・「Alt+F9」を押して「ルビをフィールドコードで表示させる」
・検索窓の右にある小さな▼をクリック
・「高度な検索」→「オプション」
・「あいまい検索」のチェックを外す
・「特殊文字」→「フィールド」
・検索文字に「^dEQ」を入力(「^d」はデフォルトで入っている)
・「検索する場所」を「メイン文書」にする
ルビの数をかぞえるだけなら置換に適当な文字を入れて実行。置換された数が出るので確認できる。
↓以下のサイトを参考にさせていただきました。多謝!
小ネタ集 - 成城大学文芸部 萬屋夢幻堂
Word2010-2016: ルビの検索(一括書式変更など) - 教えて!HELPDESK
オフィスソフトについて検索してるといろんなTipsが掲載されていて助かるんだけど。
んなTipsが必要とされるってだけでオフィスソフトはクソだ。
デフォルトがほんと余計なお世話だらけでかえって使い勝手を悪くしてるだろ。うんざり。
ワード、エクセルは滅んでくれろ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ワード(docx)からEPUBファイルへ下準備
epubファイルを作成するのに元データがワードというケースがあったりなかったり。
電書オリジナルもそうだし、既存の本のOCRもデータがWORDファイルということになる。
このネタ、過去にも何度かここに書いていて、くりかえしになるかもしれないので、今回は途中で使うスクリプトをアップロードして差別化…ていうかやっとくだらないバグが取れたので(汚いケド)晒してもいいかな、と。
スクリプトを使って
・ワードファイル(.docx)を解凍(展開)
・ワードで指定されているルビ、縦中横、圏点、太字をxhtmlのタグに変換
・ルビのオフセットを出力
やることは以上3つ。
用意するものは。
・例によってperl
WINDOWSは https://www.activestate.com/activeperl/downloads からダウンロード、インストールが必要。
それ以外のOS、Macやunix系は特に必要なし。
・コマンドライン版のunzip
WINDWOSは https://github.com/bmatzelle/gow/downloads このへんからダウンロード、インストールが必要。
それ以外のOS、Macやunix系は特に必要なし、かな。
・以下のスクリプト
https://t2aki.doncha.net/tmp/docx2xhtml-tag.zip
ターミナルのコマンドプロンプトで
perl check_docx.pl word.docx
と叩くとdocxを展開して、ルビはxhtmlのタグに変換。縦中横や圏点は独自タグに変換。
「_docx-yyyymmdd.txt」というファイルを出力する。
同時に「check_docx.log」というルビとそのオフセット位置を記述したファイルを出力。
なんでこんなファイルを出力するのかというと。
ルビを削除したい時にオフセットをいじってルビを見えなくする、という凶悪なことをやってるケース。ワード上ではルビは見えないのにデータにはルビが殘っている、という迷惑なことが何度かあって ムカついたから オフセットが変なルビを確認するため。
次にターミナルのコマンドプロンプトで
perl _docx2xhtml-tag.pl _docx-yyyymmdd.txt
と叩いて、縦中横・圏点・太字をxhtmlのタグに変換。
「_docx-yyyymmdd-converted.txt」というファイルを出力する。
ワードファイルを真面目に解析すればワード上のレイアウト情報も取れるんだけど、そもそもepubファイルに変換する時に、ワード上のレイアウトを再現することを要求されることはほとんどない。
必要な情報はルビと文字装飾(縦中横・圏点・太字・傍線)ぐらいなものなので、これだけで実用には十分。
以上のことをwordを開いて目視確認(目grep)して、タグづけしてたんじゃとてもやってられんので、スクリプトにやらせることにした。このおかげで3〜4時間作業が20分作業となって取りこぼしも激減。
(スクリプトではwordのxmlを解析してごにょごにょやってるんで、そっち系のひとにはほんの少しは面白いネタかもしれない)
てことで、今日は家人と築地市場で海を食ってきた!
いや、なんというか、ほんとに美味かったなあ(涎)
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」