AozoraEpub3には外字画像を出力する機能があった。それを電書協の書き方に直して、電書協EPUBのCSSを使うようにした。その時に横長外字画像と縦長外字画像を表示する方法がなかったので追加しようと思う。
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()
外字画像
実際に書いたコード