設定部分のコマンド (レイアウト以外)

@output: 出力設定
@output {
  name:value;
  ...
}

※コマンドラインオプションで同じ項目の値が設定されている場合は、コマンドラインオプションの方が優先されます。

prefix:[STR]
out


出力ファイルの先頭パス名。

出力ディレクトリと、ファイル名の先頭部分のみ指定してください。
この後に、ページ番号と拡張子が自動で追加されます。

ディレクトリが指定されていない場合は、カレントディレクトリに出力されます。
format:[STR]
pdf


出力フォーマット。以下のいずれかを指定してください。
大文字小文字は区別しません。

pdf,bmp,png,jpeg,psd
dpi:[N]
width:[N]
height:[N]
600 dpi


画像出力時の画像のサイズ。

3つのうち、いずれか1つだけが有効です。
複数指定された場合は、一番最後に指定された項目が有効になります。

dpi: 指定 DPI で出力した場合のサイズになります。
width: px 単位で、画像の幅を指定します。
height: px 単位で、画像の高さを指定します。
aa:[Yes/No]
300 dpi 未満なら ON


画像出力時、文字などをアンチエイリアスありで描画するかどうか。
jpeg:[STR]
quality=86,sampling=420


JPEG 出力時の設定。
"name=val,..." という形で、複数項目をカンマで区切って指定してください。

  • quality=[N]
    圧縮品質 (0 〜 100)。
    100 になるほど、高画質になり、サイズも増えます。
  • sampling=[N]
    カラーの場合の色のサンプリング比。色の劣化に関係します。
    (グレイスケール出力の場合は関係ありません)
    3桁の数字で指定してください。

    420: Cr/Cb を縦・横に間引く (低画質)
    422: Cr/Cb を横に間引く (中画質)
    444: 間引かない (高画質)
pdf-fixed:[Yes/No]
no


PDF 出力時、prefix のパスを、固定ファイル名にします。

ページ数と拡張子を自動で付けずに、常に指定されたファイル名で出力したい場合に使います。
画像出力時は関係ありません。
PDF 分割時も、すべて同じファイル名で上書き出力されます。

prefix:/path/out/test.pdf;
pdf-fixed:y;
hinting:[STR]
off


画像出力時、フォントの文字を描画する際のヒンティングタイプを指定します。
以下のいずれかを指定してください。

  • off: ヒンティングなし。
  • normal: グレイスケール用の通常ヒンティング。
  • light: グレイスケール用の軽いヒンティング。
  • mono: モノクロ (アンチエイリアスなし) 用の強いヒンティング。

ヒンティングとは、モニタ出力時など、小さめのサイズでフォントの文字を描画する際に、そのまま描画すると潰れたり見にくくなってしまうような箇所を、アウトラインの座標を強制的に調整することで、文字を見やすくする方法のことです。

印刷用など、一定程度大きいサイズで描画する場合は、必要ありません。
サイズを小さくすると線が消えたり、文字がはっきり見えにくいというような場合は、指定してください。

ただし、アウトラインを変化させる分、元の文字と比べてバランスが崩れる場合があります。
また、ヒンティングを ON にすると、文字の高さが少し大きくなる場合が多いため、特に縦書きでは、前後の文字が重なることがあります。
これらは、フォントそれぞれによっても結果が異なります。

小さいサイズで出力した時に文字が気になるようなら、ON/OFF で両方出力してみて、綺麗な方を使ってください。
grid:[Yes/No]
no


画像出力時、文字の枠を表示します。
レイアウトの基本フォントサイズに合わせて描画します。
grig-color:[RGB]
#80D0FF (水色)


グリッド描画時の、グリッド線の色を指定します。
@paper: 用紙設定
@paper {
  name:value;
  ...
}

size:[STR or WxH<mm>]
A6


用紙サイズを指定します。
以下の、あらかじめ定義されたサイズの名前か、mm 単位での幅・高さを指定します。

▼ 名前

  • A6: 105x148mm
  • B6: 128x182mm
  • A5: 148x210mm
  • B5: 182x257mm

▼ サイズ指定

アルファベット小文字の x で区切って、幅と高さの数値を、整数で指定します (mm 単位)。
最後に単位の mm を付けても構いません (mm でなくてもエラーにはならない)。
bleed:[N<mm>]
0


裁ち切りの上下左右の mm サイズを指定します。0〜255 まで。

主に 3 か 5 を使う場合が多いです。
最後に単位の mm を付けても構いません。

実際に出力される用紙のサイズは、size の用紙サイズの幅・高さに、それぞれ bleed x 2 の値を加算します。
bleed を使わずに、size の方で、裁ち切りを含めたサイズを指定しても構いません。

裁ち切りが必要になるのは、主に、仕上がりの用紙サイズいっぱいまで色があるような画像が含まれている場合です。
文字だけの場合や、仕上がり用紙サイズ内に、画像が余白を持って配置されているような場合は必要ありません。

印刷所で行うような印刷は、仕上がり用紙サイズよりも大きい紙に印刷した上で、裁断し、製本していく形になりますが、仕上がり用紙サイズぴったりの範囲しか印刷しなかった場合、裁断が 1mm でもずれると、印刷されていない白い部分が残ってしまいます。
そのため、あらかじめ 3〜5mm 程度大きめのサイズで色を載せておいて印刷しておくと、裁断がある程度ずれても、端までちゃんと色が付くような形になります。
page:[STR]
two


ページのタイプを指定します。

綴じ方向は、常に右綴じです。
右綴じの見開きでは、奇数ページが左側、偶数ページが右側のページになります。
ノンブル・柱はページごとに配置が変わります。

  • two
    見開きで、それぞれを1ページとして扱います。
    印刷の原稿用として作る場合は、こちらを使ってください。

  • two-1
    見開きの2ページ分を1ページとして扱います。
    主に、見開きの状態で閲覧したい時用。
    裁ち切りも含めたサイズを2ページ分横に並べるので、基本的に裁ち切りは指定しないでください。

  • one
    単ページ。各ページを常に左側のページとして扱います。
    PC 閲覧用など、1ページ単位で表示したい時に使います。
    ノンブル・柱は同じ位置で固定されます。
@image-type: 画像のカラータイプの指定
@image-type{ [STR] }

使用されるすべての画像(背景画像含む)のカラータイプを指定します。

auto


auto画像の内容から、自動でモノクロ/グレイスケール/カラーを判断します。
monoすべて、モノクロ 1bit (白 or 黒) に変換します。
grayすべて、グレイスケール (白〜黒) に変換します。

画像で実際に使われている色が何であれ、常に固定のカラータイプにしたい時に使います。
例えば、印刷用で、すべてモノクロ 1bit として扱いたい場合など。

通常は、画像の作成時にちゃんと指定のカラータイプになっていれば、auto で問題ないのですが、もしも万が一、モノクロ 1bit にしたいのに、誤ってグレイスケールの色が混じったりしていた場合、auto だとグレイスケールカラーになってしまうので、そういった問題を自動で回避したい時に使います。

PDF 出力で JPEG ファイルを使う場合は、元の JPEG ファイルをそのまま埋め込むので、カラータイプの変換はできません。
@pdf: PDF 出力設定
@pdf {
  name: value;
  ...
}

PDF 出力用の設定を行います。

title:[STR]
なし


タイトルの文字列を指定します。
空文字列の場合、タイトルなしとなります。
author:[STR]
なし


作成者の文字列を指定します。
subject:[STR]
なし


主題の文字列を指定します。
no-unicode:[Yes/No]
no


Yes の場合、PDF 内の各フォントに、ToUnicode (CID → Unicode) のデータをセットしません。
これにより、PDF ビューア上でページ内のテキストをコピーしても、全く意味のない文字列となるので、文字の抽出ができなくなります。

印刷用などで、文字をコピーする必要がない場合や、文字をコピーされたくない場合に使ってください。
データをセットしない分、PDF のサイズが少し減ります。

PDF 内でサブセットフォントの文字を描画する時は、使用されているグリフだけで再構成したグリフ番号で文字を指定しているので、例えば、"ABC" は 1,2,3 というように、文字とは全く関係ない番号が使われます。
そのため、PDF ビューアから文字のテキストをコピーする場合は、PDF 内で文字として指定されているグリフの番号を、逆に Unicode に変換するための情報が必要になります。
これが、ToUnicode のデータです。

このデータがある場合、例えば 1,2,3 のグリフ番号を、A,B,C の Unicode に変換して、文字として取得することができます。

しかし、このデータがない場合は、1,2,3 の値はそのまま Unicode 値として扱われるため、文字として表示できないためにコピー自体ができないか、または、元の文字とは全く関係のない文字としてコピーされることになります。
outline:[STR]
なし


PDF の目次をセットしたい場合に使います。
本文中に使う @index-page と連動するので、詳細はそちらをご覧ください。

本文中の @index または @index-page の name で定義した名前を、先頭の目次から順にカンマで区切って指定します。
※余分な空白は含めないでください。
※各目次のページ番号は昇順でなくても構いません。

指定名の @index または @index-page の title で指定された文字列が、PDF の目次のタイトルとなり、@index-page で記録したページが、ジャンプ先のページになります。

PDF 分割時は、各ファイル内に実際に含まれている目次のページのみが、目次としてセットされます。
(実際の PDF ファイル内に、目次の指定ページが含まれていない場合、範囲外の目次は除外されます)
結果的に一つも目次ページが含まれなかった場合、目次自体がセットされません。

@pdf{ outline:t1,t2,t3 }

@start-body;
@index-page[name=t1,title=目次1];目次1のページ...
...
@index-page[name=t2,title=目次2];目次2のページ...
...
@index-page[name=t3,title=目次3];目次3のページ...

この場合、PDF の目次は、
タイトル="目次1", ページ=t1 のページ位置
タイトル="目次2", ページ=t2 のページ位置
タイトル="目次3", ページ=t3 のページ位置
という順で、表示されます。
@include: テキストファイルの挿入
@include{ [PATH] }

現在位置に、指定したテキストファイルの内容を挿入します。
読み込んだファイル内でさらに @include がある場合、それも有効です(階層の制限なし)。

相対パスの場合、最初のテキストファイルの位置が基準になります。
@def: 定義文
@def[NAME]{本文の記述}

本文内で使用する、定義文をセットします。
本文内で @d[NAME] を使うと、指定名で登録されている定義文を貼り付けることができます。

[] 内で、任意の定義名を指定して、登録してください。
すでに登録されている定義名を指定した場合、値が上書きされます。

  • {} 内に、本文の記述方法で、そのまま内容を書いてください。
    '{' の直後から '}' の直前までが、すべて定義文の内容になります。
  • {} 内で空白/改行を記述すると、それらはすべて本文の内容として、全く同じ形で貼り付けられます。
    改行はそのまま改行になります。
    長い文を一旦区切って、次の行に繋げたい場合は、行末に \ を記述してください。
  • \ + 1文字も、そのまま維持されます。
  • {} 内で文字としての '}' を記述したい場合は、\} としてください。
  • 定義された内容の中に @d[] がある場合は、それも有効です。階層に制限はありません。

@def[t]{@dk[ええ]}
@def[t2]{あれは
まさか}
@def[t3]{\{A\}}

@start-body;
@d[t]
@d[t2]
@d[t3]
#以下のように貼り付けられます。
@dk[ええ]
あれは
まさか
\{A\}
@font: フォントの定義
@font[defname] {
  name:value;
  ...
}

フォントを定義します。

使用するすべてのフォントは、あらかじめ任意の定義名で登録しておく必要があります。
数の制限はないので、複数のフォントを使用できます。

定義名が base のフォントは、デフォルトで使われるフォントになります。
※ base フォントは、必ず設定する必要があります。

すでに定義済みの名前で再指定しようとした場合、エラーになります。

file:[PATH]
空文字列


フォントのファイルパスを指定します。
フォントファイルは直接読み込むので、システムにインストールされているフォントでなくても構いません。

インストールされているフォントを、ファミリー名で指定して使うことはできません。
インストールされているフォントを使いたい場合は、/usr/share/fonts/usr/local/share/fonts~/.local/share/fonts などのディレクトリにファイルがあるので、そこからファイルパスを取得してください。

対応しているフォントは、TrueType/OpenType (*.ttf/*.otf/*.ttc/*.otc) のみです。
バリアブルフォント (太さなどが可変のフォント) には対応していません。

空文字列の場合、その時点で定義名 base のフォントが存在すれば、それと同じフォントを使います。
この場合、index が異なる値だったとしても、常に同じフォントになります。
index:[N]
0


フォントが *.ttc/*.otc の場合、一つのファイルに複数のフォントが格納されているので、ファイル内のどのフォントを使うかを指定するために、インデックス値 (0 〜 フォント数 - 1) を指定する必要があります。
単一フォントの場合は、指定する必要はありません。

どのインデックス値がどのフォントに対応しているかを確認するには、--fontnames オプションを指定して、実行してください。
インデックス値と、それに対応するフォントの名前が表示されます。

$ txtnovel --fontnames font.otc

※指定されたインデックス値が、フォントの範囲外の場合は、0 として扱われます。
size:[N<pt/Q>]
8.5pt


デフォルトのフォントサイズを指定します。
単位を省略した場合、pt になります。
dakuten-vert:[N,N]
dakuten-horz:[N,N]
dakuten-vert:0.7,0; dakuten-horz:0.7,0;


本文の @dk コマンドで濁点を合成する時の、濁点の描画位置を指定します。
dakuten-vert は縦書き時、dakuten-horz は横書き時の位置です。

カンマで区切って、x, y の2つの数値を指定します。
いずれか、または両方を省略した場合は、それぞれ 0 になります。

x, y 位置は、濁点を合成する対象文字の左上の位置を基準として、そこから移動する幅を、フォントの全角幅に対する倍率で指定します。
(合成する濁点の基準位置も左上です)
1.0 なら、x は右方向、y は下方向に、対象文字のフォントサイズの全角幅分を移動することになります。

正の値で、対象文字の右方向/下方向に指定幅分を移動します。
負の値で、対象文字の左方向/上方向に移動します。

合成用の濁点には、U+3099 を使いますが、フォント内にグリフがない場合は、U+309B (゛) を使います。

濁点のグリフの形状(濁点部分の位置)は、フォントによって異なるので、フォントごとに適切な値を設定する必要があります。
また、縦書きと横書きで位置が変わる場合があるので、それぞれで位置を指定できるようにしています。

[各フォントにおける、U+3099 の通常時の描画位置 (縦書き)]


[IPA明朝] dakuten-vert:0; dakuten-horz:0;
[源ノ明朝] dakuten-vert:1,0; dakuten-horz:1,0, 

IPA 明朝は、そのままの位置で重ねればいいので、0,0 です。
源ノ明朝は、前の文字に重なる形になっているので、右に全角分移動します。
他のフォントは、濁点が左上の位置にある場合が多いので、右側にちょうどいい位置に移動します。
horz-half:[Yes/No]
no


Yes の場合、横書き時の、半角幅にする対象の約物(括弧類、読点、句点)について、このフォントで使われた時は、すべてのグリフを、強制的に全角幅から半角幅として扱います。

横書き時の場合は、通常、半角幅として扱うかどうかは、フォントの GSUB や GPOS の情報を元に判断しますが、IPA フォントなど、そういった情報が格納されていないフォントがあるため、グリフの形状的に、強制的に半角幅として扱っても問題がない場合に指定します。
グリフがプロポーショナル幅で、半角幅として扱えない場合は、no にしてください。

※縦書き時は、グリフの実際の形状に関係なく、常に半角幅扱いになります。
@kenten: 圏点の定義
@kenten[defname] {
  name:value;
  ...
}

本文で使われる圏点の、各文字ごとの設定を行います。

圏点の文字ごとに、任意の名前で定義名を指定してください。
本文内で @kt コマンドを使うと、指定名の圏点を文字の右横または上に表示できます。

圏点は、最大 255 個まで定義できます。
すでに定義されている名前で再指定しようとした場合、各項目の値が上書きされます。

圏点には、フォントの文字を使います。
フォントによって圏点文字の大きさが異なるので、圏点文字ごとにフォントとフォントサイズを変更できます。

font:[FONTNAME]
base


圏点文字のフォントを指定します。
フォントの定義名を指定してください。
fontsize:[N<pt/Q/x>]
0.5x


圏点文字のフォントサイズを指定します。
単位が x の場合、font で指定されたフォントのデフォルトサイズが基準になります。
char:[CHAR]
0 (U+0000)


圏点の文字を指定します。
U+XXXX, CID+N の形式で指定することもできます。

主に、「﹅」「﹆」「・ (中点)」「• (ビュレット)」「○」などを使います。
pos:[N]
0


圏点文字の描画位置を調整します。

この圏点のフォントサイズの全角幅に対する倍率で指定します。

縦書きなら文字の右横、横書きなら文字の上に描画されるので、その位置を基準にどれだけ文字から離すかを指定します。
1.0 で、圏点の全角幅分を文字から離します。

正の値で、縦書きなら右方向に、横書きなら上方向に、指定幅分移動します。
負の値なら、逆方向です。

本文文字との間が離れていたり、狭かったりする場合に、調整してください。
@fullwidth-set: 全角幅にする約物の文字セット
@fullwidth-set[defname]{ [STR] }

全角幅 (グリフの元の幅) のままで扱いたい約物の文字のセットを定義します。

任意の名前で、定義名を指定してください。
この名前は、@layout の @fullwidth で使います。

すでに定義されている名前で再指定しようとした場合、エラーになります。

[例]
@fullwidth-set[fw1]{ ()<> }
@layout{ @fullwidth{fw1} }
詳細
括弧など、前後に半角分の空白がある一部の約物 (記号類) は、組版時に、実質の文字がある半角分をグリフの幅として、残りの半角分の空白を空きとして扱って処理します。
これによって、空白部分を行調整時に詰めることができます。

これらの文字の中で、詰め処理を行いたくない、常に全角幅 (またはプロポーショナル幅) のままで扱いたい文字がある場合は、それらの文字を複数個並べたものを、1つの文字列として指定します。
※間に余分な空白は付けないでください。

対象になる文字は、「始め括弧類、終わり括弧類、句点 (。)、読点 (、)」です。

※横書きの場合は、プロポーショナル幅になっている場合があるので、フォントの GSUB で半角幅グリフに置き換えられるか、GPOS の halt で全角幅グリフを半角幅として扱える場合のみ、半角幅の対象になります。
@page-title: 柱の設定
@page-title {
  name:value;
  ...
}

柱の設定を行います。

「柱」は、基本版面 (本文部分) の範囲外に、少し小さいフォントサイズで表示される、本のタイトルや章名です。
本文中に @title を使うと、柱の文字列を変更できます。

柱の表示位置は、base の名前で定義されたレイアウトの本文設定が基準になります。
行長・行数・行送りの設定から、基本版面 (本文部分) のサイズを計算し、それを用紙上に配置した上で、基本版面からの指定位置に表示します。

柱は、常に小口側 (綴じている側の反対側) に配置されます。

font:[FONTNAME]
base


柱のフォントを指定します。
フォントの定義名を指定してください。
fontsize:[N<pt/Q/x>]
0.7x


柱のフォントサイズを指定します。
単位が x の場合、font で指定されたフォントのデフォルトサイズが基準になります。
pos:[STR]
head


基本版面からの配置位置を、以下の名前で指定します。
※柱とノンブルが同じ位置の場合、並んで表示されます。

head : 天の位置 (基本版面の上)
foot : 地の位置 (基本版面の下)
vspace:[N<mm/pt/w>]
1w


基本版面と柱の間の上下の余白。
単位が w の場合、base レイアウトのフォントサイズが基準になります。
hspace:[N<mm/pt/w>]
0


基本版面の小口側の端と、柱の間の、左右の余白。
単位が w の場合、base レイアウトのフォントサイズが基準になります。
numspace:[N<mm/pt/w>]
1.5w


柱とノンブルが同じ位置で並ぶ場合、ノンブルと柱の間の左右の余白。
単位が w の場合、柱のフォントサイズが基準になります。
no-page:[STR]
even,blank,image


柱を表示しないページを指定します。
カンマで区切って、表示したくないページの名前を複数指定してください。

※本文で柱の文字列が指定されていない場合は、常に表示されません。

none : 指定なし (すべてのページで表示する)。
all : すべてのページ。
even : (見開き時) 右側の偶数ページ。
blank : 本文の文字がない空白ページ。
image : 画像ページ。
@page-number: ノンブルの設定
@page-number {
  name:value;
  ...
}

ノンブルの設定を行います。

「ノンブル」は、基本版面の外に表示される、ページ番号の数字です。
柱と同じように、基本版面を基準にして配置されます。

font:[FONTNAME]
base


ノンブルのフォントを指定します。
フォントの定義名を指定してください。
fontsize:[N<pt/Q/x>]
0.7x


ノンブルのフォントサイズを指定します。
単位が x の場合、font で指定されたフォントのデフォルトサイズが基準になります。
pos:[STR]
head


基本版面からの配置を、以下の名前で指定します。
柱とノンブルが同じ位置の場合、並んで表示されます (ノンブルが常に小口側になります)。

head : 天の位置 (基本版面の上)
foot : 地の位置 (基本版面の下)
vspace:[N<mm/pt/w>]
1w


基本版面とノンブルの間の上下の余白。
単位が w の場合、base レイアウトのフォントサイズが基準になります。
hspace:[N<mm/pt/w>]
0


基本版面の小口側の端と、ノンブルの間の、左右の余白。
単位が w の場合、base レイアウトのフォントサイズが基準になります。
no-page:[STR]
blank


ノンブルを表示しないページを指定します。
カンマで区切って、表示したくないページの名前を複数指定してください。

none : 指定なし (すべてのページで表示する)。
all : すべてのページ。
even : (見開き時) 右側の偶数ページ。
blank : 本文の文字がない空白ページ。
image : 画像ページ。
hide-page:[STR]
none


隠しノンブルにするページを指定します。
値は、no-page と同じです。

※ no-page よりも、こちらの方が優先されます。

隠しノンブルは、のど側 (綴じている側) に、縦書きで数字を表示します。
主に、用紙サイズいっぱいまで色がある画像にノンブルを付けたい時や、製本した時に隠れるような位置にノンブルを付けたい時に使います。
hide-x:[N<mm>]
hide-y:[N<mm>]
hide-x:5; hide-y:10;


隠しノンブルの表示位置を指定します。

単位は mm です。
仕上がり用紙サイズ (裁ち切りは除く) の、左右はのど側の端、上下は下端を (0,0) とした時の、x, y 位置を指定します。
正の値で、小口方向・上方向に移動します。

のど側に近すぎると、裁断した時に文字が切れてしまう可能性があるので、x,y は 3〜5mm ほど余裕を持って指定してください。
hide-color:[RGB]
白 (#FFFFFF)


隠しノンブルの背景色を指定します。

※隠しノンブルのテキスト色は、レイアウトで指定されたテキスト色です。