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

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

電書協CSSとAozoraEpub3のCSSの比較3 傍線、羅線

傍線部分が違いすぎてどうしたらいいものか。罫囲みと囲み罫でも線の種類によって書かれ方が違いすぎる。

 まぁ、面倒そうなのは置いといたままやってみて動作検証をしてみようかと思う。ソニーリーダーやコボはアンドロイドアプリ上で検証することにする。ソニーリーダーのE Ink版とアンドロイド版では表示が異なるそうなので、検証自体が難しいのだけど。

 その他のキノッピーとiBookとかグーグルプレイなんかもできたらいいのだけど、ちょっとめんどくさいかな。

 超縦書とReadiumなんかでも検証するが、キンドルでの検証が主となりそうだ。電書協に沿ってたら国内向けとコボは大丈夫ではないかとは思っている。

 電書協

/* 傍線
---------------------------------------------------------------- */
/* 【横組み】下線 【縦組み】右線 */
.hltr .em-line {
text-decoration: underline;
}
.vrtl .em-line {
text-decoration: overline;
}

/* 【横組み】上線 【縦組み】左線 */
.hltr .em-line-outside {
text-decoration: overline;
}
.vrtl .em-line-outside {
text-decoration: underline;
}


/* 囲み罫
----------------------------------------------------------------
線幅の指定には、罫線と同じものを使用
---------------------------------------------------------------- */
/* 上から実線、点線、二重線、破線 */
.k-solid { border-style: solid solid solid solid; border-width: 1px; border-color: #000000; }
.k-dotted { border-style: dotted dotted dotted dotted; border-width: 2px; border-color: #000000; }
.k-double { border-style: double double double double; border-width: 4px; border-color: #000000; }
.k-dashed { border-style: dashed dashed dashed dashed; border-width: 1px; border-color: #000000; }

/* 線色付き囲み罫(画像枠などに利用) */
.k-solid-black { border-style: solid solid solid solid; border-width: 1px; border-color: #000000; }
.k-solid-gray { border-style: solid solid solid solid; border-width: 1px; border-color: #808080; }
.k-solid-silver { border-style: solid solid solid solid; border-width: 1px; border-color: #c0c0c0; }
.k-solid-white { border-style: solid solid solid solid; border-width: 1px; border-color: #ffffff; }


/* 罫線
----------------------------------------------------------------
線種や線幅など、細かな調整が必要なときは、
無理に既存のクラスを用いず新たにクラスを作成すること
---------------------------------------------------------------- */
/* 線種【実線】 */
.k-solid-top,
.k-solid-right,
.k-solid-bottom,
.k-solid-left,
.k-solid-topbottom,
.k-solid-rightleft {
border-width: 1px;
border-color: #000000;
}
/* 線位置【実線】 */
.k-solid-top { border-style: solid none none none; }
.k-solid-right { border-style: none solid none none; }
.k-solid-bottom { border-style: none none solid none; }
.k-solid-left { border-style: none none none solid; }
.k-solid-topbottom { border-style: solid none solid none; }
.k-solid-rightleft { border-style: none solid none solid; }

/* 線種【点線】 */
.k-dotted-top,
.k-dotted-right,
.k-dotted-bottom,
.k-dotted-left,
.k-dotted-topbottom,
.k-dotted-rightleft {
border-width: 2px;
border-color: #000000;
}
/* 線位置【点線】 */
.k-dotted-top { border-style: dotted none none none; }
.k-dotted-right { border-style: none dotted none none; }
.k-dotted-bottom { border-style: none none dotted none; }
.k-dotted-left { border-style: none none none dotted; }
.k-dotted-topbottom { border-style: dotted none dotted none; }
.k-dotted-rightleft { border-style: none dotted none dotted; }

/* 線種【二重線】 */
.k-double-top,
.k-double-right,
.k-double-bottom,
.k-double-left,
.k-double-topbottom,
.k-double-rightleft {
border-width: 4px;
border-color: #000000;
}
/* 線位置【二重線】 */
.k-double-top { border-style: double none none none; }
.k-double-right { border-style: none double none none; }
.k-double-bottom { border-style: none none double none; }
.k-double-left { border-style: none none none double; }
.k-double-topbottom { border-style: double none double none; }
.k-double-rightleft { border-style: none double none double; }

/* 線種【破線】 */
.k-dashed-top,
.k-dashed-right,
.k-dashed-bottom,
.k-dashed-left,
.k-dashed-topbottom,
.k-dashed-rightleft {
border-width: 1px;
border-color: #000000;
}
/* 線位置【破線】 */
.k-dashed-top { border-style: dashed none none none; }
.k-dashed-right { border-style: none dashed none none; }
.k-dashed-bottom { border-style: none none dashed none; }
.k-dashed-left { border-style: none none none dashed; }
.k-dashed-topbottom { border-style: dashed none dashed none; }
.k-dashed-rightleft { border-style: none dashed none dashed; }

 

 AozoraEpub3


/* 傍線 */
span.underline, span.double_underline, span.dotted_underline, span.dashed_underline, span.wave_underline {
border-right-width: 1px;
padding-right: 1px;
}
span.underline {
border-right-style: solid;
}
span.double_underline {
border-right-width: 3px;
border-right-style: double;
}
span.dotted_underline {
border-right-style: dotted;
}
span.dashed_underline {
border-right-style: dashed;
}
span.wave_underline {
border-right-style: solid;/*wave;*/
}
span.left_underline {
border-left-style: solid;
padding-left: 1px;
border-left-width: 1px;
}

 /* 罫囲み */
.border {
border: 1px solid #000;
margin: 0.25em;
padding: 0.25em;
}
/* 破線罫囲み */
.dashed_border {
border: 1px dashed #000;
margin: 0.25em;
padding: 0.25em;
}

 

 

電書協CSSとAozoraEpub3のCSSの比較2 見出し、文字の大きさ、圏点傍点

 AozoraEpub3では青空文庫の注記をhtmlタグに変換するが、そのときに参照しているのが、chuki_tag.txtである。大見出しは<div class="chap1"> </div>に変換される。

電書協CSSでは「大見出し」はoo-midashiと指定されているので対応する部分も修正する必要がある。

 

/* 大見出し */
.hltr .oo-midashi {
}

 スタイルシートの内容の違いだけでなく、クラス名や使われているタグも違う場合があるので修正箇所は多くなるだろう。ゴールとして、電書協CSSをそのまま入れ替えるようにしても。途中段階で差異をなくしていくという方向性のほうが無理がないと思う。

 一旦入れ替えてみて不具合等が出るか確認してみる。

AozoraEpub3/chuki_tag.txt at master · kyukyunyorituryo/AozoraEpub3 · GitHub

 

電書協の扉はAozoraEpub3では左右中央となっている。

kumihan.aozora.gr.jp

 

99nyorituryo.hatenablog.com

 文字の大きさ

文字の大きさを変えるスタイルシートの書き方で気になった点は、電書協CSSでは大見出しに文字の大きさが指定されていないが、AozoraEpub3では文字の大きさが変化する。単純にCSSを入れ替えると、文字の大きさまで変わってしまう。

電書協CSS
/* 小書き文字
----------------------------------------------------------------
通常の文字を「ぁゃっ」のような小書き文字に見せるための指定
---------------------------------------------------------------- */
.kogaki {
font-size: 0.75em;
}
/* 【横組み】左下 */
.hltr .kogaki {
padding: 0 0.15em 0 0.1em;
vertical-align: baseline;
}
/* 【縦組み】右上 */
.vrtl .kogaki {
padding: 0.1em 0 0.15em 0;
vertical-align: super;
}

/* フォントサイズ(%指定) */
.font-050per { font-size: 50%; }
.font-060per { font-size: 60%; }
.font-070per { font-size: 70%; }
.font-075per { font-size: 75%; }
.font-080per { font-size: 80%; }
.font-085per { font-size: 85%; }
.font-090per { font-size: 90%; }
.font-100per { font-size: 100%; }
.font-110per { font-size: 110%; }
.font-115per { font-size: 115%; }
.font-120per { font-size: 120%; }
.font-130per { font-size: 130%; }
.font-140per { font-size: 140%; }
.font-150per { font-size: 150%; }
.font-160per { font-size: 160%; }
.font-170per { font-size: 170%; }
.font-180per { font-size: 180%; }
.font-190per { font-size: 190%; }
.font-200per { font-size: 200%; }
.font-250per { font-size: 250%; }
.font-300per { font-size: 300%; }


/* フォントサイズ(文字数指定) */
.font-0em50 { font-size: 0.50em; }
.font-0em60 { font-size: 0.60em; }
.font-0em70 { font-size: 0.70em; }
.font-0em75 { font-size: 0.75em; }
.font-0em80 { font-size: 0.80em; }
.font-0em85 { font-size: 0.85em; }
.font-0em90 { font-size: 0.90em; }
.font-1em { font-size: 1.00em; }
.font-1em10 { font-size: 1.10em; }
.font-1em15 { font-size: 1.15em; }
.font-1em20 { font-size: 1.20em; }
.font-1em30 { font-size: 1.30em; }
.font-1em40 { font-size: 1.40em; }
.font-1em50 { font-size: 1.50em; }
.font-1em60 { font-size: 1.60em; }
.font-1em70 { font-size: 1.70em; }
.font-1em80 { font-size: 1.80em; }
.font-1em90 { font-size: 1.90em; }
.font-2em { font-size: 2.00em; }
.font-2em50 { font-size: 2.50em; }
.font-3em { font-size: 3.00em; }

 

 

AozoraEpub3


/* 文字サイズ 大 */
.font1, .chap3 { font-size: 110%; }
.font2 { font-size: 120%; }
.font3, .chap2 { font-size: 130%; }
.font4 { font-size: 140%; }
.font5, .chap1 { font-size: 150%; }
.font6 { font-size: 160%; }
/* 文字サイズ 小 */
.font-1 { font-size: 90%; }
.font-2 { font-size: 83%; }
.font-3 { font-size: 77%; }
.font-4, .kogaki { font-size: 70%; }
.font-5 { font-size: 66%; }
.font-6 { font-size: 62%; }

 

見出し

電書協CSSではh1タグなどで見出しを指定している。AozoraEpub3ではそれがついていない。電書協CSSでは窓見出しがなかった。扉見出しは左右中央と同じ扱いである。ただ、AozoraEpub3ではtableタグで書かれている。

densyodamasii.com

 

電書協

/* 見出しのデフォルト書体指定
---------------------------------------------------------------- */
/* 横組み用 */
.hltr h1,
.hltr h2,
.hltr h3,
.hltr h4,
.hltr h5,
.hltr h6 {
font-family: serif-ja, serif;
}
/* 縦組み用 */
.vrtl h1,
.vrtl h2,
.vrtl h3,
.vrtl h4,
.vrtl h5,
.vrtl h6 {
font-family: serif-ja-v, serif-ja, serif;
}

/* 見出しの指定(上:横組み 下:縦組み)
---------------------------------------------------------------- */
/* 扉見出し */
.hltr .tobira-midashi {
}
.vrtl .tobira-midashi {
}
/* 大見出し */
.hltr .oo-midashi {
}
.vrtl .oo-midashi {
}
/* 中見出し */
.hltr .naka-midashi {
}
.vrtl .naka-midashi {
}
/* 小見出し */
.hltr .ko-midashi {
}
.vrtl .ko-midashi {
}

 

AozoraEpub3

/* 見出し*/
.chap1, .chap2, .chap3 {
clear: both;
}


/* 窓見出し 行頭2行のみ対応 */
span.mado {
float: left;
display: inline-block;
line-height: 1em;
}
/* 窓見出し 左右paddingは (lineheight-文字サイズ/2)/文字サイズ */
span.mado.L { font-size:1.5em; padding:0 0.625em 0.33em 0; line-height:1em;}
span.mado.M { font-size:1.3em; padding:0 0.846em 0.38em 0; line-height:1em;}
span.mado.S { font-size:1.1em; padding:0 1.091em 0.45em 0; line-height:1em;}

vertical_middle.css

 

/* 左右中央 */
table.middle td {
vertical-align: middle;
}


/* kindle左右中央 */
div.kindle_outer {
writing-mode: horizontal-tb;
-webkit-writing-mode: horizontal-tb;
-epub-writing-mode: horizontal-tb;
text-align: center;
width:100%;
margin: 0;
padding: 0;
line-height: 0;
}
div.kindle_outer.bottom {
text-align: left;
}
div.kindle_inner {
display: inline-block;
writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
-epub-writing-mode: vertical-rl;
text-align: left;
line-height: 1.5;
height: 95%;
}

圏点・傍点

 同じ内容について書かれている場合も電書協では2つの指定方法で、AozoraEpub3では3つで書かれている。電書協では10種類、AozoraEpub3では12種類で数が違う。left_empとx-dotが追加されている。ばつ傍点と左に傍点がそれぞれである。

電書協

/* 圏点・傍点
---------------------------------------------------------------- */
.em-sesame {
-webkit-text-emphasis-style: filled sesame;
-epub-text-emphasis-style: filled sesame;
}
.em-sesame-open {
-webkit-text-emphasis-style: open sesame;
-epub-text-emphasis-style: open sesame;
}
.em-dot {
-webkit-text-emphasis-style: filled dot;
-epub-text-emphasis-style: filled dot;
}
.em-dot-open {
-webkit-text-emphasis-style: open dot;
-epub-text-emphasis-style: open dot;
}
.em-circle {
-webkit-text-emphasis-style: filled circle;
-epub-text-emphasis-style: filled circle;
}
.em-circle-open {
-webkit-text-emphasis-style: open circle;
-epub-text-emphasis-style: open circle;
}
.em-double-circle {
-webkit-text-emphasis-style: filled double-circle;
-epub-text-emphasis-style: filled double-circle;
}
.em-double-circle-open {
-webkit-text-emphasis-style: open double-circle;
-epub-text-emphasis-style: open double-circle;
}
.em-triangle {
-webkit-text-emphasis-style: filled triangle;
-epub-text-emphasis-style: filled triangle;
}
.em-triangle-open {
-webkit-text-emphasis-style: open triangle;
-epub-text-emphasis-style: open triangle;
}

 

AozoraEpub3
/* 圏点 */
span.sesame {
text-emphasis-style: sesame;
-webkit-text-emphasis-style: sesame;
-epub-text-emphasis-style: sesame;
}
span.open_sesame {
text-emphasis-style: open sesame;
-webkit-text-emphasis-style: open sesame;
-epub-text-emphasis-style: open sesame;
}
span.dot {
text-emphasis-style: dot;
-webkit-text-emphasis-style: dot;
-epub-text-emphasis-style: dot;
}
span.open_dot {
text-emphasis-style: open dot;
-webkit-text-emphasis-style: open dot;
-epub-text-emphasis-style: open dot;
}
span.circle {
text-emphasis-style: circle;
-webkit-text-emphasis-style: circle;
-epub-text-emphasis-style: circle;
}
span.open_circle {
text-emphasis-style: open circle;
-webkit-text-emphasis-style: open circle;
-epub-text-emphasis-style: open circle;
}
span.double-circle {
text-emphasis-style: double-circle;
-webkit-text-emphasis-style: double-circle;
-epub-text-emphasis-style: double-circle;
}
span.open_double-circle {
text-emphasis-style: open double-circle;
-webkit-text-emphasis-style: open double-circle;
-epub-text-emphasis-style: open double-circle;
}
span.triangle {
text-emphasis-style: triangle;
-webkit-text-emphasis-style: triangle;
-epub-text-emphasis-style: triangle;
}
span.open_triangle {
text-emphasis-style: open triangle;
-webkit-text-emphasis-style: open triangle;
-epub-text-emphasis-style: open triangle;
}
span.x-dot {
text-emphasis-style: '×';
-webkit-text-emphasis-style: '×';
-epub-text-emphasis-style: '×';
}
span.left_emp {
text-emphasis-position: under;
-webkit-text-emphasis-position: under;
-epub-text-emphasis-position: under;
}

 

 電書協CSS対応が終わったら休みたい、まだ続きそう。

電書協CSSとAozoraEpub3のCSSの比較1 縦中横、上付き、下付き

なぜ、これをするかというと、AozoraEpub3のCSSの最終的な完成イメージが沸かないからです。

AozoraEpub3のCSSで縦書きの本文ページを見ていきます。

  1. vertical_text.vm
  2. vertical.css
  3. vertical_font.css

この3つがスタイルシートで、vmとなっているのがテンプレートエンジンのvelocityを使っている。

Apache Velocity - Wikipedia

テンプレートエンジンは書き換える部分を予め ${pageMargin[0]}のような形式に指定しておくと、データを置き換えて出力してくれる。

AozoraEpub3のアプリケーションから設定で「スタイル」を選んだところの数字がこの部分に置き換えられている。つまりスタイルシートをただ単に電書協CSSに置き換えるとこの機能が使えなくなる。

 

なので、テンプレートエンジンが利用されている部分については後回しとする。

 

電書協CSSの主要な部分で、機能が同じだけで書かれ方が違うものについて比較する。

 

縦中横

電書協CSSのstyle-standard.cssでは

/* 縦中横
---------------------------------------------------------------- */
.tcy {
-webkit-text-combine: horizontal;
-webkit-text-combine-upright: all;
text-combine-upright: all;
-epub-text-combine: horizontal;
}

AozoraEpub3のCSSのvertical.cssでは

/* 縦中横 */
/* 外字画像と重ならない対策 ※有効にすると字下げ折り返し内で画面外にずれる */
/*span.tcy { display: inline-block; }*/
.tcy span {
text-combine: horizontal;
-webkit-text-combine: horizontal;
-epub-text-combine: horizontal;
}

 

違いは、spanタグを指定しているか、-webkit-text-combine-upright: all;
text-combine-upright: all;と-webkit-text-combine: horizontal;が異なっている。

 

上付け、下付け

電書協CSS

/* 上付文字・下付文字
---------------------------------------------------------------- */
/* 上付文字 */
.super {
font-size: smaller;
vertical-align: super;
}
/* 下付文字 */
.sub {
font-size: smaller;
vertical-align: sub;
}

 

AozoraEpub3のCSS

/* 行右小書き 上付き小文字 */
.sup {
vertical-align: super;
font-size: 0.66em;
}
/* 行左小書き 下付き小文字 */
.sub {
vertical-align: sub;
font-size: 0.66em;
}

文字を小さくするときの指定の仕方が違う。

 

長くなってきたので記事を分けます。

honttoni.blog74.fc2.com

AozoraEpub3を電書協CSSへの変更

  AozoraEpub3を電書協CSSへの変更してほしいという依頼が来ました。以前から、電書協CSSへ少しずつ近づけて入るのだけど。CSS自体の知識があまりないのと、JAVAの理解度が足りないのであまり進んではいなかった。

 

 

github.com

 

 電書協CSSでは、縦書き横書きが混在したCSSで、AozoraEpub3では縦書きは縦書き用のCSSだ。なので、その部分だけでも結構違う。その他にキンドル用のCSSが作られている。それらを統合すると、AozoraEpub3自体がある程度複雑さが減らせるかもしれない。ただ、一個紐解いてはエラーが出ないか調べていくという現在の状況ではめっちゃ時間がかかるのではないかと思っている。

 

電書協CSS

 電書協EPUBに使われているCSS、実際にEPUBとして作るには少なすぎる感じがする。

fixed-layout-jp.css、book-style.cssでは、style-reset.css、style-standard.css、style-advance.cssをimportしている。

 

AozoraEpub3

 青空文庫の表現をCSSにするために端末ごとの表示の違いをなくすために複雑怪奇化している。

fixed-layout-jp.css、horizontal.css、horizontal_font.css、horizontal_image.css、horizontal_middle.css、horizontal_text.vmkindle_image.csssvg_image.css、vertical.css、vertical_font.css、vertical_image.css、vertical_middle.css、vertical_text.vm

customcss

horizontal_font_reader.css、horizontal_font_sample.css、vertical_font_reader.css、vertical_font_sample.css

 

もとのAozoraEpub3でfixed-layout-jp.csssvg_image.cssから置き換えた。ファイル名の変更や依存関係の見極めで結構しんどかった。

github.com

AozoraEpub3が電書協EPUBの同等のものを出力できれば利用範囲は広がるかもしれない。ただ、それだけの時間を費やすのもな。

JSONファイルをxmlhttprequestから読み込んで表示する

kyukyunyorituryo.github.io

 新刊チェックサイトを作ったのだけど、中身は空でデータを別のところから読み込んでいる。データはJSONファイルになっていて、下のアドレスのようなJSON形式のファイルを読み込んで表示している。

https://kyukyunyorituryo.github.io/new_pub/json/20200514j.json


{
"Asin": "4846019144",
"URL": "https://www.amazon.co.jp/dp/4846019144?tag=99hatena-22&linkCode=ogi&th=1&psc=1",
"ImageURL": "https://m.media-amazon.com/images/I/31TYwgypBSL.jpg",
"Publisher": "論創社",
"Contributor": "雪花山人(著)",
"Booktype": "単行本",
"Title": "後藤又兵衛 (立川文庫セレクション )",
"Price": 1980,
"Category": "文学・評論,論創社"
}

JSON形式の一冊分のデータを書き出してみると上のとおりになっている。

JSONを読み込んで表示している。どうやら検索サイトからはあまり認識しづらいようだ。どうも検索サイトにサイトの情報がたまらなくなっている。

 

 

 

jsファイルにデータを置いて読み込んでいるのをJSONファイルをxmlhttprequestから読み込んで表示するようにしたい。

jqueryを使うと簡単だけど、jqueryのファイルが多くなるので、標準機能だけのjsでやろう。

 

www.koreyome.com

 JSONを読み込んだのは良いのだけど、続けて何かを処理させたい場合に、読み込みが終わってから実行しないと。読み込みが終わるまでに実行してデータがないぞというエラーが出る。 

 

techacademy.jp

meaownworld.blogspot.com