KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

AozoraEpub3で横長外字画像と縦長外字画像の機能を追加する

 AozoraEpub3には外字画像を出力する機能があった。それを電書協の書き方に直して、電書協EPUBCSSを使うようにした。その時に横長外字画像と縦長外字画像を表示する方法がなかったので追加しようと思う。

 

chuki_tag.txtで外字画像をどう変換するかというのがあって、次のように書けばいいかなと思っている。ただ、これは内部処理用の注記なので、外字画像という注記があっても変換されない。

##外字注記の画像 String.formatで出力
外字画像 <img class="gaiji" src="%s" alt=""/>

縦長外字画像<img class="gaiji-line" src="%s" alt=""/>

横長外字画像<img class="gaiji-wide" src="%s" alt=""/>

 

内部処理余のコードが書かれている。AozoraEpub3Converter.javaの部分を見ていく。個の外じ画像の部分を分岐させれば、機能が追加できそうだ。

if (chukiTag.endsWith("#GAIJI#]")) {
String fileName = writer.getImageFilePath(srcFilePath.trim(), -1);
buf.append(String.format(chukiMap.get("外字画像")[0], fileName));
}

 

if (imgFileName != null) {
buf.append(String.format(chukiMap.get("外字画像")[0], imgFileName));
//ログ出力
LogAppender.info(lineNum, "外字画像利用", srcFilePath);
}

 

外字画像のサイズを取得して縦と横の長さを比較する。

 ImageInfo imageInfo = imageInfoReader.getImageInfo(imageInfoReader.correctExt(imageFileName));

//ImageInfo imageInfo = this.imageInfoReader.getImageInfo(srcFilePath);

 

imageInfo.getWidth() > imageInfo.getHeight()

横長外字画像

imageInfo.getWidth() < imageInfo.getHeight()

縦長外字画像

imageInfo.getWidth() == imageInfo.getHeight()

外字画像

 

実際に書いたコード

github.com