メタ書式ホーム


CSSメタ書式モジュール 第1版 規格書

株式会社ユニット

2008年 5月 30日

 

本規格書では、CSSの独立したモジュール「メタ書式モジュール」(Metaformat module)を定義します。この内容を利用すれば、メタ書式の具体的な記述を、CSS記述の一部として表現することができるようになります。

メタ書式とは

メタ書式とは、体裁を調整する際に従うべき原則を明文化したものであり、主にページメディア上において利用されます。メタ書式という呼び名は、条件に応じて書式にどのような変更を加えるべきかを記述したもの、すなわち“書式のための書式”であることから来ています。

CSSにおけるメタ書式の意義

CSSの特質と現状

CSSでは元来さまざまな書式や体裁を定義することができます。しかしそれらを文書の各部に適用した結果が、とくにページメディア特有の何らかの基準にてらして不満足であるときに(例:テキストがあふれている)、それに対してDTP等であれば通常行われるような体裁や書式の調整(例:長体をかけて収める)を、CSSでは記述する手段がこれまで用意されていませんでした。

これはCSSが歴史的に、Webブラウザを中心とする比較的プアーな閲覧環境への実装を想定して発祥したものであることから来ていると考えられます。

CSSの今後とメタ書式

しかし、CSSの発展の方向性は、メディアを問わずに汎用的にCSSを利用できるような展開を志向しています。

メタ書式はその延長上の一ステップであるということができます。

DTPにおけるメタ書式の意義

DTPの特質と現状

またDTP側でも、これまでこうした調整はもっぱら個々の作業者の美的感覚に依存して行われており、その調整の原則が実はかなり単純明快な場合であっても、それを書き下して共有することで手戻りや品質のばらつきを抑えようという努力はほとんど為されてきませんでした。

これはDTP工程が長い間、手作業の集積と経験の蓄積という手工業的仕事文化の中で従事されてきたことによると考えられます。

DTPの今後とメタ書式

しかしそうしたDTPの世界にも昨今、コスト削減や迅速化・個別化等の要請に応えるため、自動化やスキルレス化の潮流が押し寄せはじめています。

自動化もスキルレス化も、そのどちらにおいても一般に重要な要件は、タスクの観察・判断・実行の基準を具体的に明文化して定義・伝達することであり、それによって作業者や処理系個々によって結果にゆらぎが生じないようにすることです。

メタ書式の記法標準化はその延長上の一ステップであるともいえるでしょう。

※もちろん実務に携わっていれば誰しもが感じるように、DTPの組版調整というのは多くの場合、完全に自動化などできる性質のものではありません。
 しかし大半の文書は、その組版調整の大半を、明文化することができることが経験上わかっています。明文化できるなら、自動化はつねに可能です。
 全自動化が不可能であることを理由に全手動を貫こうという姿勢は、あまり現実的とはいえないという発想のもとに、本モジュールは、あとから手作業による手直し仕上げも可能なよう、DTPアプリケーションソフトウェアに実装することが最適であると考えられます。
 もちろんかなり単純な体裁の文書であれば、手直しは不要であるとして、全自動組版系でのメタ書式処理も現実味を帯びてくることはありえるでしょう。

メタ書式の諸概念

メタ書式モジュールは、組版レンダリング完了後の、ページメディア特有の組版調整を記述します。以下は組版調整の例です。

どのようなときにどのように調整するべきかは、文書や箇所によって異なります。これを調整条件と調整操作で表したものがメタ書式です。

調整条件

調整条件とは、組版の一応の結果として生じた、何らかの体裁上の条件を指します。

調整条件ではさまざまな状態を表現することができますが、とりわけメタ書式で実用されると考えられるのは、制作者にとっての不愉快な、解消したい状態でしょう。たとえば以下はそのような調整条件の例です。

調整条件はCSSの擬似クラスセレクタ(:擬似クラス)として表されます。擬似クラスセレクタを重ねるとAND条件を表せます。

また、組版特有の構成要素(テキストフレーム等)を表現するために、擬似要素セレクタ(::擬似要素名)も併用されます。

調整操作

調整操作とは、組版体裁や書式に何らかの変更を加えることを指します。

調整操作ではさまざまな操作を行うことが可能ですが、とりわけメタ書式で実用されると考えられるのは、制作者にとっての不愉快な状態を解消するような操作でしょう。たとえば以下はそのような調整操作の例です。

調整操作はCSSの宣言(プロパティ:;)として表されます。

調整条件と調整操作の連携

調整条件が成立しているとき、調整操作を実行すると、うまくいけば、その調整条件は成立しなくなります。具体的には、

というようなとき、制作者の視点からは、調整操作は成功したことになります。

しかし現実には、ちょっとぐらい長体をかけても、あふれはまだ解消されないこともあります。そのようなとき実務では、さらに長体をかけてみることになるでしょう。その動作は、次項で述べる反復性操作によって実現されます。

反復性操作と一回性操作

調整操作には、次の2種類があります。

反復性の操作は、調整条件が成立しなくなるまで、何度でも繰り返し実行されます。たとえば以下のような操作が反復性操作です。

一回性の操作は、調整条件が成立しているときに一度だけ実行され、その後は調整条件がなお成立したままであっても、繰り返し実行されません。たとえば以下のような操作が一回性操作です。

なお、既存のCSSのプロパティはすべて、一回性の操作として指定することができます。

反復性操作の刻み

反復性操作では、刻みを指定することができます。たとえば文字サイズを1ptずつ下げていくか、2ptずつ下げていくかを、指定することができます。

刻みを細かくすると、よりきめこまかい調整ができますが、時間がかかる可能性があります。

刻みを粗くすると、素早く調整ができますが、荒削りな調整結果になる可能性があります。

また、複数種類の調整を組み合わせる場合は、刻みと刻みの比が結果にバイアスを及ぼします。

こういったことから、刻みの値をいくつに設定するかは、ある程度注意深く試行・吟味して決める必要があります。

反復性操作の限界を設定

あふれがひどいときは、かなりきつく長体をかけないとあふれが解消できない場合もあります。

そういう場合は、どこかで諦めないと、読めないくらい長体をかけてしまっては現実的ではありません。

そこで反復性操作に対しては、限界を設定することができます。たとえば文字サイズの最小値を5ptにする等を指定できます。

反復性操作の成功を条件とする調整条件

あふれていたので長体を(限界まで)かけまくったけど、結局あふれは解消できなかった、というときは、次の2通りのまとめ方が考えられます。

後者を実現するために、調整条件の一種として、反復性操作の成功を条件とする特殊な調整条件が用意されています。

この調整条件を指定すると、調整操作が調整条件を解消できるときにのみ、その調整操作が実行されます。

複数の調整戦略を段階的に適用

多くの組版作業においては、一つの状況に対して、複数とおりの解決方法が想定されます。たとえば

このように複数の順番に分けて調整を行いたいときのために、調整順番擬似クラスが用意されています。

この擬似セレクタで調整順番を指定すると、順番の若い順に調整操作が実行されていくので、複雑な調整戦略を実行させることが可能です。

文書の構成要素

本モジュールでは、文書の構成要素を以下のように定義します。

※これはAdobe InDesign CS2の文書モデルと一致しています。
 以下、InDesignについて言及するときは、Adobe InDesign CS2を指すものとします。ただし記述によっては、それ以外のバージョンにもあてはまるものもあります。

ストーリー

1つないし複数の連続するひとまとまりの段落を、ストーリーと呼びます。

XMLではストーリーは一般に、1つないし複数の段落要素などのブロックレベル要素を子に持つブロックレベル要素として表されます。

※HTML・XHTMLではdiv要素が多くこれにあてられます。
 InDesignでも、1つのストーリーには1つのXML要素を割り当てることができます。

ストーリーはそれ自体では、どのページのどこにどう配置されるか(ないしは配置されないか)の情報を持っていません。それは次に述べるテキストフレームによって実現されます。

テキストフレーム

ストーリーが実際にページ上でその中に配置される矩形を、テキストフレームと呼びます。

ストーリーは1つないし複数のテキストフレームから成ります。ストーリーが複数のテキストフレームを持つとき、これらのテキストフレームは連結されているといいます。

テキストは先頭のテキストフレームから順に流し込まれていきます。末尾のテキストフレームまで流し込んでもまだストーリーが終了していないとき、ストーリーはあふれているといいます。

XMLではテキストフレームに相当する要素はありません。ただし本モジュールでは、ストーリー要素等の擬似要素として個々のテキストフレームを指し示すことができます。

※HTML・XHTMLでは、div要素等を絶対位置配置すれば、1つのテキストフレームしか持たないストーリーとして扱われていると見ることもできます。
 InDesignでも、テキストフレームに要素を割り当てることはできませんが、ストーリーがテキストフレームを1つしか持たないなら、そのストーリーの要素を便宜上テキストフレーム要素的にとらえることも可能です。

コラム

コラム(段組み)とは、テキストフレームの中を垂直(横書きの場合)または水平(縦書きの場合)に分割したものです。1つのテキストフレームは、1個ないしそれ以上のコラムを有します。

テキストフレーム内のコラムは順に連結されています。

複数のテキストフレームが連結されているときは、あるテキストフレームの末尾コラムに、次のテキストフレームの先頭コラムが連結されています。

XMLではコラムに相当する要素はありません。ただし本モジュールでは、テキストフレーム擬似要素の子擬似要素等として個々のコラムを指し示すことができます。

※普及しているHTML・XHTMLでは、コラムに相当する概念はありません。コラムは複数のブロックレベル要素や表セルを並べる等のトリッキーな手段によりエミュレートされます。
 InDesignでも、コラムに要素を割り当てることはできません。

段落

本文中の段落だけでなく、見出しや表セル内のものも含めて段落と呼びます。

XMLでは、ブロックレベル要素を子に持てないブロックレベル要素は、すべて段落要素と呼ぶことができます。

※HTML・XHTMLではp要素が代表的な段落要素です。このほかにh1要素やli要素等も、上記の意味で段落要素と呼ぶことができます。HTML・XHTMLのユーザーエージェントでは通常、段落要素の末尾で自動的に改段落が行われます。
 InDesignでは、特定の要素でテキスト範囲をラップしても、その末尾で自動的に改段落が行われることはありません。改段落の挿入や削除(すなわち段落の分割や連結)は、オペレーターの操作によって要素と関係なく自由に行うことができるので、逆に段落に合わせて要素を自動的に生成しなおすようにする等、本モジュールの実装系の側で要素と段落のテキスト範囲を一致させる工夫をする必要があります。

表とその中身

表行表列セルから成ります。

XMLでは、1つの表に1つの要素を割り当て、1つのセルに1つの要素を割り当てるのが普通ですが、その中間の構造表現はスキーマで自由に定められます。一般にはそれを、何らかのUIが解釈できる構造へ、変換して使うことになります。

※HTML・XHTMLではtable要素が表要素です。table要素は表行要素を子に持ち、表行要素はセル要素を子に持ちます。このほかに補助的に表列要素を使うことができます。
 InDesignでも、1つの表に1つの要素を割り当てることができます。しかしHTML・XHTMLと違って、InDesignでは表要素が直接セル要素を子に持ちますので、表行と表列に要素を割り当てることができません。ただし本モジュールでは、表要素等の擬似要素として個々の表行・表列を指し示すことができます。

オブジェクト

テキストフレームと同様に、ページ上に自由に配置することができるもののうち、テキストフレームを除いて、オブジェクトと総称します。図版は代表的なオブジェクトです。

XMLでは、1つのオブジェクトに1つの要素を割り当てるのが普通ですが、その意味づけや構造はオブジェクトの種別によってさまざまで、スキーマで自由に決められます。

本モジュールでは、オブジェクト内のテキスト(もしあったとしても)等の内容を取り扱う手段を提供しません。オブジェクトはもっぱら、その位置とサイズの判定ないし操作対象としてのみ扱われます。

※HTML・XHTMLではimg要素等を絶対位置配置すれば、上記のオブジェクトになります。オブジェクトのふるまいは、ブラウザによって差がある場合があります。
 InDesignでも、1つのオブジェクトに1つの要素を割り当てることができます。ただしグループに要素を割り当てることはできません。

調整条件擬似クラス

CSSの規定により、今のところ、擬似クラスは擬似要素セレクタの後には記述できないので注意してください。要素を割り当てることのできない実体(テキストフレーム等)の状態を条件としたいときにそれでも困らないように、本モジュールでは、要素本体だけでなくその内容やコンテナの状態を条件とするいろいろな擬似クラスを併せて用意しています。

以下、擬似クラスの引数an+boddevenの意味や使い方は、CSS3セレクタの擬似クラスにおけるそれらと同じです。

あふれ条件

:-un-overset擬似クラス

対象種別 ストーリー・表・セル・段落
マッチ ストーリー
ストーリーがあふれているとき
(すなわち、ストーリーの内容の一部がテキストフレームに属していないとき)
セルの中の表
(a) 表がセルからあふれているとき
セルの中でない表
(a) 表の一部/全部がテキストフレームに属していない、または
(b) 表が複数のテキストフレームにわたっている
とき
(逆に言えば、表全体が単一テキストフレームに収まっているわけではないとき)
セル
セルの中身があふれているとき
セルの中の段落
(a) 段落がセルからあふれているとき
セルの中でない段落
(a) 段落の一部/全部がテキストフレームに属していない、または
(b) 段落が複数のテキストフレームにわたっている
とき
(逆に言えば、段落全体が単一テキストフレームに収まっているわけではないとき)

配下テキストフレーム条件

:-un-frames擬似クラス

対象種別 ストーリー
マッチ ストーリーに複数のテキストフレームがあるとき
(ストーリー終了後のテキストフレームは含めない)

:-un-frames()擬似クラス

対象種別 ストーリー
引数 an+b|even|odd
マッチ ストーリーに引数個のテキストフレームがあるとき
(ストーリー終了後のテキストフレームは含めない)

配下コラム条件

:-un-first-frame-columns擬似クラス

対象種別 ストーリー
マッチ ストーリーの先頭テキストフレームに複数のコラムがあるとき
(ストーリー終了後のコラムは含めない)

:-un-first-frame-columns()擬似クラス

対象種別 ストーリー
引数 an+b|even|odd
マッチ ストーリーの先頭テキストフレームにan+b個のコラムがあるとき
(ストーリー終了後のコラムは含めない)

:-un-last-frame-columns擬似クラス

対象種別 ストーリー
マッチ ストーリーの末尾テキストフレームに複数のコラムがあるとき
(ストーリー終了後のテキストフレーム・コラムは含めない)

:-un-last-frame-columns()擬似クラス

対象種別 ストーリー
引数 an+b|even|odd
マッチ ストーリーの末尾テキストフレームに引数個のコラムがあるとき
(ストーリー終了後のテキストフレーム・コラムは含めない)

配下段落条件

:-un-paragraphs擬似クラス

対象種別 ストーリー・セル
マッチ 対象に複数の段落があるとき

:-un-paragraphs()擬似クラス

対象種別 ストーリー・セル
引数 an+b|even|odd
マッチ 対象に引数個の段落があるとき

配下行条件

:-un-lines擬似クラス

対象種別 段落
マッチ 対象が複数行に分かれているとき

:-un-lines()擬似クラス

対象種別 段落
引数 an+b|even|odd
マッチ 対象に引数個の行があるとき

配下テキスト条件

:-un-content()擬似クラス

対象種別 ストーリー・セル・段落
引数 <string>
マッチ 対象に引数テキストがあるとき

コンテナストーリーあふれ条件

:-un-in-overset-story擬似クラス

対象種別 テキストフレーム・表・セル・段落
マッチ 対象の属するストーリーの中身があふれているとき

コンテナテキストフレーム条件

対象の属するテキストフレームに関する条件です。

:-un-in-first-frame擬似クラス

対象種別 セル
マッチ セルの属する表行がストーリーの先頭テキストフレームに属しているとき

:-un-in-nth-frame()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルの属する表行がストーリーの引数番目のテキストフレームに属しているとき

:-un-in-last-frame擬似クラス

対象種別 セル
マッチ セルの属する表行がストーリーの末尾テキストフレームに属しているとき

:-un-in-nth-last-frame()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルの属する表行がストーリーの末尾から引数番目のテキストフレームに属しているとき

:-un-in-frames擬似クラス

対象種別 表・段落
マッチ 対象が複数のテキストフレームにわたっているとき

:-un-in-frames()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象が引数個のテキストフレームに属しているとき

0 ≦ n

0 ≦ an+b のみ有効。

n+2()なしと同じ。

:-un-from-first-frame擬似クラス

対象種別 表・段落
マッチ 対象先頭がストーリーの先頭テキストフレームに属しているとき

:-un-from-nth-frame()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象先頭がストーリーの引数番目のテキストフレームに属しているとき

:-un-from-last-frame擬似クラス

対象種別 表・段落
マッチ 対象先頭がストーリーの末尾テキストフレームに属しているとき

:-un-from-nth-last-frame()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象先頭がストーリーの末尾から引数番目のテキストフレームに属しているとき

:-un-to-first-frame擬似クラス

対象種別 表・段落
マッチ 対象末尾がストーリーの先頭テキストフレームに属しているとき

:-un-to-nth-frame()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象末尾がストーリーの引数番目のテキストフレームに属しているとき

:-un-to-last-frame擬似クラス

対象種別 表・段落
マッチ 対象末尾がストーリーの末尾テキストフレームに属しているとき

:-un-to-nth-last-frame()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象末尾がストーリーの末尾から引数番目のテキストフレームに属しているとき

コンテナテキストフレーム泣き別れ条件

対象の属するテキストフレーム内外への泣き別れに関する条件です。

:-un-in-frame-miss-adjacent-previous擬似クラス

対象種別 セル・段落
マッチ セル
セルの属する表行がその直前表行と同じテキストフレームに属していないとき
(自セルがテキストフレームに属していないときも含む)
段落
段落先頭が直前段落末尾と同じテキストフレームに属していないとき
(自段落がテキストフレームに属していないときも含む)

:-un-in-frame-miss-nth-previous()擬似クラス

対象種別 セル・段落
引数 an+b|even|odd
マッチ セル
セルの属する表行が、その前へ引数番目の表行と同じテキストフレームに属していないとき
段落
段落先頭が、前へ引数番目の段落の末尾と同じテキストフレームに属していないとき

an+b = 1 :-un-in-frame-miss-adjacent-previousと等価。

:-un-in-frame-miss-adjacent-next擬似クラス

対象種別 段落
マッチ セル
セルの属する表行がその直後表行と同じテキストフレームに属していないとき
(直後表行がテキストフレームに属していないときも含む)
段落
段落末尾が直後段落先頭と同じテキストフレームに属していないとき
(直後段落がテキストフレームに属していないときも含む)

:-un-in-frame-miss-nth-next()擬似クラス

対象種別 段落
引数 an+b|even|odd
マッチ セル
セルの属する表行が、その後へ引数番目の表行と同じテキストフレームに属していないとき
(後の表行がテキストフレームに属していないときも含む)
段落
段落末尾が、後へ引数番目の段落の先頭と同じテキストフレームに属していないとき
(後の段落がテキストフレームに属していないときも含む)

an+b = 1 :-un-in-frame-miss-adjacent-nextと等価。

コンテナテキストフレームあふれ条件

:-un-in-overset-frame擬似クラス

対象種別 表・セル・段落
マッチ 対象の属するテキストフレームの中身があふれているとき
(すなわち、そのテキストフレーム内でストーリーが終わっていないとき)

コンテナコラム条件

対象の属するコラムに関する条件です。

:-un-in-first-column擬似クラス

対象種別 セル
マッチ セルの属する表行がテキストフレームの先頭コラムに属しているとき

:-un-in-nth-column()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルの属する表行がテキストフレームの引数番目のコラムに属しているとき

:-un-in-last-column擬似クラス

対象種別 セル
マッチ セルの属する表行がテキストフレームの末尾コラムに属しているとき

:-un-in-nth-last-column()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルの属する表行がテキストフレームの末尾から引数番目のコラムに属しているとき

:-un-in-columns擬似クラス

対象種別 表・段落
マッチ 対象が複数のコラムにわたっているとき

:-un-in-columns()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象が引数個のコラムに属しているとき

:-un-from-first-column擬似クラス

対象種別 表・段落
マッチ 対象先頭がテキストフレームの先頭コラムに属しているとき

:-un-from-nth-column()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象先頭がテキストフレームの引数番目のコラムに属しているとき

:-un-from-last-column擬似クラス

対象種別 表・段落
マッチ 対象先頭がテキストフレームの末尾コラムに属しているとき

:-un-from-nth-last-column()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象先頭がテキストフレームの末尾から引数番目のコラムに属しているとき

:-un-to-first-column擬似クラス

対象種別 表・段落
マッチ 対象末尾がテキストフレームの先頭コラムに属しているとき

:-un-to-nth-column()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象末尾がテキストフレームの引数番目のコラムに属しているとき

:-un-to-last-column擬似クラス

対象種別 表・段落
マッチ 対象末尾がテキストフレームの末尾コラムに属しているとき

:-un-to-nth-last-column()擬似クラス

対象種別 表・段落
引数 an+b|even|odd
マッチ 対象末尾がテキストフレームの末尾から引数番目のコラムに属しているとき

コンテナコラム泣き別れ条件

対象の属するコラム内外への泣き別れに関する条件です。

:-un-in-column-miss-adjacent-previous擬似クラス

対象種別 セル・段落
マッチ セル
セルの属する表行がその直前表行と同じコラムに属していないとき
段落
段落先頭が直前段落末尾と同じコラムに属していないとき

:-un-in-column-miss-nth-previous()擬似クラス

対象種別 セル・段落
引数 an+b|even|odd
マッチ セル
セルの属する表行が、その前へ引数番目の表行と同じコラムに属していないとき
段落
段落先頭が、前へ引数番目の段落の末尾と同じコラムに属していないとき

:-un-in-column-miss-adjacent-next擬似クラス

対象種別 セル・段落
マッチ セル
セルの属する表行が直後表行と同じコラムに属していないとき
段落
段落末尾が直後段落先頭と同じコラムに属していないとき

:-un-in-column-miss-nth-next()擬似クラス

対象種別 セル・段落
引数 an+b|even|odd
マッチ セル
セルの属する表行が、その後へ引数番目の表行と同じコラムに属していないとき
段落
段落末尾が、後へ引数番目の段落の先頭と同じコラムに属していないとき

コンテナコラムあふれ条件

:-un-in-overset-column擬似クラス

対象種別 表・セル・段落
マッチ 対象の属するコラムの中身があふれているとき
(すなわち、そのコラム内でストーリーが終わっていないとき)

コンテナ表あふれ条件

:-un-in-overset-table擬似クラス

対象種別 セル
マッチ セルの中の表に属するセル
(a) セルの属する表がセルからあふれているとき
セルの中でない表に属するセル
(a) セルの属する表の一部/全部がテキストフレームに属していない、または
(b) セルの属する表が複数のテキストフレームにわたっている
とき
(逆に言えば、 セルの属する表全体が単一テキストフレームに収まっているわけではないとき)

コンテナ表行条件

※これらの擬似クラスは、HTML・XHTMLのようなtable — tr — td型の階層的な表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — cell型の平坦な表構造表現だと必要になります。

:-un-in-first-row擬似クラス

対象種別 セル
マッチ セルが表の先頭表行に属しているとき

:-un-in-nth-row()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルが表の引数番目の表行に属しているとき

:-un-in-last-row擬似クラス

対象種別 セル
マッチ セルが表の末尾表行に属しているとき

:-un-in-nth-last-row()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルが表の末尾から引数番目の表行に属しているとき

コンテナ表行あふれ条件

:-un-in-overset-row擬似クラス

対象種別 セル
マッチ セルの中の表に属するセル
セルの属する表行が、セルの属する表の属するセルからあふれているとき
セルの中でない表に属するセル
セルの属する表行がテキストフレームに属していないとき

コンテナ表列条件

※これらの擬似クラスは、HTML・XHTMLのようなtable — colを保持できる表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — colを保持できない表構造表現だと必要になります。

:-un-in-first-column擬似クラス

対象種別 セル
マッチ セルが表の先頭表列に属しているとき

:-un-in-nth-column()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルが表の引数番目の表列に属しているとき

:-un-in-last-column擬似クラス

対象種別 セル
マッチ セルが表の末尾表列に属しているとき

:-un-in-nth-last-column()擬似クラス

対象種別 セル
引数 an+b|even|odd
マッチ セルが表の末尾から引数番目の表列に属しているとき

コンテナ表列あふれ条件

:-un-in-overset-column擬似クラス

対象種別 セル
マッチ セルの中の表に属するセル
セルの属する表列が、セルの属する表の属するセルからあふれているとき
セルの中でない表に属するセル
セルの属する表列がテキストフレームに属していないとき

コンテナセル条件

対象の属するセルに関する条件です。

:-un-in-cell擬似クラス

対象種別 表・段落
マッチ 対象が表セル内にあるとき

コンテナセルあふれ条件

:-un-in-overset-cell擬似クラス

対象種別 表・段落
マッチ 対象の属するセルの中身があふれているとき

調整操作の成功を前提とする条件

:-un-curable擬似クラス

対象種別 すべて
マッチ 調整操作を実行すれば調整条件が解消される、というとき

調整順番

:-un-turn()擬似クラス

対象種別 すべて
引数 <integer>(0と負の値は無効)
マッチ 文書内で引数の小さいものから順次マッチしていく。

セレクタに:-un-turn()がないときは調整順番1と見なされる。

文書内で番号が若い順に調整が試みられる。

番号が同じなら、文書内での出現順で評価される。

番号は文書内で連続していなくてもよい。

調整条件擬似クラスは末尾単純セレクタに記述すること

調整条件擬似クラスは、反復系操作が実行されるたびに、依然マッチしているかどうかを毎回再評価されます。マッチしなくなっていたら、調整は成功したので、その時点で操作の反復は終了されます。

ただし、セレクタが結合子によって複数の単純セレクタを結合しているときは、最後以外の単純セレクタ内に記述された調整条件擬似クラスについては、この再評価は行われません。操作反復を開始する前の評価が固定されたままとなるので、どんなに操作が反復されても、永久にマッチしたままとなり、したがって限界まで操作されてしまいます。

言い換えれば、カスケードして主題要素のインライン規則として解決したときに切り落とされてしまう調整条件擬似クラスに対しては、特殊な理由がないかぎり、反復系操作を指定してはいけません。

失敗例:

story:-un-overflow para
{ -un-line-height-step: -1pt; }

「ストーリーの中身があふれていたら、収まるまで、その中のすべての段落の行送りを縮めなさい」と書いたつもりでしたが、これは主題要素のインライン規則として解決されると

{ -un-line-height-step: -1pt; }

となって調整条件指定部が消えてしまうので、無条件となり、たとえ調整途中であふれが解消されても、止まらず限界まで縮められてしまいます。これはこう書くべきです。

成功例:

para:-un-in-overset-story
{ -un-line-height-step: -1pt; }

これならインライン規則としても下記のように調整条件が残り、うまくいきます。

:-un-in-overset-story { -un-line-height-step: -1pt; }

※このような仕様になっている理由は、インライン規則において(HTML・XHTMLではstyle属性に)、たとえ内容やコンテナについても、あらゆる条件を記述できるようにするためです。かつ、それがヘッダのCSSで記述されている内容と衝突する可能性を排除するためです。
 そもそもCSSの、先祖要素や兄弟要素の名前をセレクタ結合子で表現する記法は、直感的ですが、インライン規則にじか書きできないという不便さがあります。上記の問題も元はといえばここから派生しているものです。

セレクタ結合子の拡張

A + B

Bが段落の場合は、段落Aの直後に段落Bがあるとき(同じストーリー内で)。

Aにクラスセレクタ等をつけることにより、段落スタイル名等で絞り込むこともできる。

A ~ B

Bが段落の場合は、段落Aの後(直後でなくてもいい)に段落Bがあるとき(同じストーリー内で)。

Aにクラスセレクタ等をつけることにより、段落スタイル名等で絞り込むこともできる。

操作対象擬似要素セレクタ

CSSの規定により、擬似要素セレクタは、セレクタの末尾に(複数の擬似要素セレクタがあるときは連続して末尾に)記述されたものだけが有効ですので注意してください。

以下、擬似要素セレクタの引数an+boddevenの意味や使い方は、CSS3セレクタの擬似クラスにおけるそれらと同じです。

※CSSの規範文法定義により、擬似要素セレクタでも引数をとることが許されています。

配下テキストフレーム

::-un-first-frame擬似要素セレクタ

対象種別 ストーリー
実体 ストーリーの先頭テキストフレーム

::-un-nth-frame()擬似要素セレクタ

対象種別 ストーリー
引数 an+b|even|odd
実体 ストーリーの引数番目のテキストフレーム

0 ≦ n

1 ≦ an+b のみ有効。

先頭テキストフレームを1番目とする。

an+b = 1 ::-un-first-frameと同じ。

::-un-last-frame擬似要素セレクタ

対象種別 ストーリー
実体 ストーリーの末尾テキストフレーム
(ストーリー終了後のテキストフレームは含めない)

::-un-nth-last-frame()擬似要素セレクタ

対象種別 ストーリー
引数 an+b|even|odd
実体 ストーリーの末尾から引数番目のテキストフレーム
(ストーリー終了後のテキストフレームは含めない)

0 ≦ n

1 ≦ an+b のみ有効。

末尾テキストフレームを1番目とする。

an+b = 1 ::-un-last-frameと同じ。

配下コラム

::-un-first-column擬似要素セレクタ

対象種別 テキストフレーム
実体 テキストフレームの先頭コラム

::-un-nth-column()擬似要素セレクタ

対象種別 テキストフレーム
引数 an+b|even|odd
実体 テキストフレームの引数番目のコラム

0 ≦ n

1 ≦ an+b のみ有効。

先頭コラムを1番目とする。

an+b = 1 ::-un-first-columnと同じ。

::-un-last-column擬似要素セレクタ

対象種別 テキストフレーム
実体 テキストフレームの末尾コラム

::-un-nth-last-column()擬似要素セレクタ

対象種別 テキストフレーム
引数 an+b|even|odd
実体 テキストフレームの末尾から引数番目のコラム

0 ≦ n

1 ≦ an+b のみ有効。

末尾コラムを1番目とする。

an+b = 1 ::-un-last-columnと同じ。

配下表行

※これらの擬似要素セレクタは、HTML・XHTMLのようなtable — tr — td型の階層的な表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — cell型の平坦な表構造表現だと必要になります。

::-un-first-row擬似要素セレクタ

対象種別
実体 表の先頭表行

::-un-nth-row()擬似要素セレクタ

対象種別
引数 an+b|even|odd
実体 表の引数番目の表行

::-un-last-row擬似要素セレクタ

対象種別
実体 表の末尾表行

::-un-nth-last-row()擬似要素セレクタ

対象種別
引数 an+b|even|odd
実体 表の末尾から引数番目の表行

配下表列

※これらの擬似要素セレクタは、HTML・XHTMLのようなtable — colを保持できる表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — colを保持できない表構造表現だと必要になります。

::-un-first-column擬似要素セレクタ

対象種別
実体 表の先頭表列

::-un-nth-column()擬似要素セレクタ

対象種別
引数 an+b|even|odd
実体 表の引数番目の表列

::-un-last-column擬似要素セレクタ

対象種別
実体 表の末尾表列

::-un-nth-last-column()擬似要素セレクタ

対象種別
引数 an+b|even|odd
実体 表の末尾から引数番目の表列

配下セル

※これらの擬似要素セレクタは、表行に対しては、HTML・XHTMLのようなtable — tr — td型の階層的な表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — cell型の平坦な表構造表現だと必要になります。

::-un-first-cell擬似要素セレクタ

対象種別 表行・表列
実体 対象の先頭セル

::-un-nth-cell()擬似要素セレクタ

対象種別 表行・表列
引数 an+b|even|odd
実体 対象の引数番目のセル

::-un-last-cell擬似要素セレクタ

対象種別 表行・表列
実体 対象の末尾セル

::-un-nth-last-cell()擬似要素セレクタ

対象種別 表行・表列
引数 an+b|even|odd
実体 対象の末尾から引数番目のセル

配下段落

::-un-first-paragraph擬似要素セレクタ

対象種別 ストーリー・セル
実体 対象の先頭段落

::-un-nth-paragraph()擬似要素セレクタ

対象種別 ストーリー・セル
引数 an+b|even|odd
実体 対象の引数番目の段落

::-un-last-paragraph擬似要素セレクタ

対象種別 ストーリー・セル
実体 対象の末尾段落

::-un-nth-last-paragraph()擬似要素セレクタ

対象種別 ストーリー・セル
引数 an+b|even|odd
実体 対象の末尾から引数番目の段落

配下テキスト

::-un-text()擬似要素セレクタ

対象種別 段落
引数 <string>
実体 対象内の引数テキスト
(対象内に指定テキストがないときは、対応する実体を持たない)

配下キャラクタ

::-un-first-character擬似要素セレクタ

対象種別 段落
実体 対象の先頭キャラクタ

::-un-nth-character()擬似要素セレクタ

対象種別 段落
引数 an+b|even|odd
実体 対象の引数番目のキャラクタ

::-un-last-character擬似要素セレクタ

対象種別 段落
実体 対象の末尾キャラクタ(改段落キャラクタ)

::-un-nth-last-character()擬似要素セレクタ

対象種別 段落
引数 an+b|even|odd
実体 対象の末尾から引数番目のキャラクタ

コンテナストーリー

::-un-container-story擬似要素セレクタ

対象種別 テキストフレーム・表・段落
実体 対象の属するストーリー

コンテナテキストフレーム

::-un-container-frame擬似要素セレクタ

対象種別 コラム・表行
実体 対象の属するテキストフレーム

::-un-first-container-frame擬似要素セレクタ

対象種別 表・段落
実体 対象の属するテキストフレーム群の先頭テキストフレーム

::-un-nth-container-frame()擬似要素セレクタ

対象種別 表・段落
引数 an+b|even|odd
実体 対象の属するテキストフレーム群の引数番目のテキストフレーム

0 ≦ n

1 ≦ an+b のみ有効。

先頭テキストフレームを1番目とする。

an+b = 1 ::-un-first-container-frameと同じ。

::-un-last-container-frame擬似要素セレクタ

対象種別 表・段落
実体 対象の属するテキストフレーム群の末尾テキストフレーム

::-un-nth-last-container-frame()擬似要素セレクタ

対象種別 表・段落
引数 an+b|even|odd
実体 対象の属するテキストフレーム群の末尾から引数番目のテキストフレーム

0 ≦ n

1 ≦ an+b のみ有効。

末尾テキストフレームを1番目とする。

an+b = 1 ::-un-last-container-frameと同じ。

コンテナコラム

::-un-container-column擬似要素セレクタ

対象種別 表行
実体 表行の属するコラム

::-un-first-container-column擬似要素セレクタ

対象種別 表・段落
実体 対象の属するコラム群の先頭コラム

::-un-nth-container-column()擬似要素セレクタ

対象種別 表・段落
引数 an+b|even|odd
実体 対象の属するコラム群の引数番目のコラム

::-un-last-container-column擬似要素セレクタ

対象種別 表・段落
実体 対象の属するコラム群の末尾コラム

::-un-nth-last-container-column()擬似要素セレクタ

対象種別 表・段落
引数 an+b|even|odd
実体 対象の属するコラム群の末尾から引数番目のコラム

コンテナ表

::-un-container-table擬似要素セレクタ

対象種別 表行・表列
実体 対象の属する表

コンテナ表行

※この擬似要素セレクタは、HTML・XHTMLのようなtable — tr — td型の階層的な表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — cell型の平坦な表構造表現だと必要になります。

::-un-container-row擬似要素セレクタ

対象種別 セル
実体 セルの属する表行

コンテナ表列

※この擬似要素セレクタは、HTML・XHTMLのようなtable — colを保持できる表構造表現であれば、既存のセレクタで同じことを表現できるので不要ですが、InDesignのようなtable — colを保持できない表構造表現だと必要になります。

::-un-container-column擬似要素セレクタ

対象種別 セル
実体 セルの属する表列

コンテナセル

::-un-container-cell擬似要素セレクタ

対象種別 表・段落
実体 対象の属するセル
(対象がセルに属していないときは、対応する実体を持たない)

調整操作プロパティ

文字サイズ

-un-font-size-stepプロパティ

<length>|<percentage>|inherit
初期値 0
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 なし
パーセント値 調整前の文字サイズに対する割合

文字サイズ調整刻み。

相対長は調整前の文字サイズに対して。

-un-min-font-sizeプロパティ・
-un-max-font-sizeプロパティ

<length>|none|inherit
初期値 none
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 あり
パーセント値 受けつけない

最小・最大文字サイズ。

相対長は不正。0・負の値は不正。

-un-font-stretch-stepプロパティ

<number>|<percentage>|inherit
初期値 0
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 なし
パーセント値 調整前の水平比率に対する割合

水平比率調整刻み。

実数は水平比率×100。

-un-min-font-stretchプロパティ・
-un-max-font-stretchプロパティ

<number>|none|inherit
初期値 none
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 あり
パーセント値 受けつけない

最小・最大水平比率。

水平比率×100。0・負の値は不正。

-un-line-height-stepプロパティ

<length>|<percentage>|inherit
初期値 0
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 なし
パーセント値 調整前の行送りに対する割合

行送り調整刻み。

-un-min-line-heightプロパティ・
-un-max-line-heightプロパティ

<length>|none|inherit
初期値 none
適用対象 段落・ストーリー・セル・テキスト範囲
継承性 あり
パーセント値 受けつけない

最小・最大行送り。

相対長は不正。0・負の値は不正。

-un-align-border-topプロパティ・
-un-align-border-bottomプロパティ・
-un-align-border-leftプロパティ・
-un-align-border-rightプロパティ

<length>|auto|inherit
初期値 auto
適用対象 テキストフレーム・オブジェクト
継承性 なし
パーセント値 受けつけない

上下左右辺移動。

意味
<length> 位置合わせ基準から辺までの距離がこの値になるよう、指定された一辺だけを移動する。他の辺は動かさないので、結果として矩形が縦か横に伸縮する。
相対長は不正。
auto 何もしない。

位置合わせ基準が見つからないときは、実効値autoとする(すなわち何もしない)。

-un-align-topプロパティ・
-un-align-bottomプロパティ・
-un-align-leftプロパティ・
-un-align-rightプロパティ

<length>|auto|inherit
初期値 auto
適用対象 テキストフレーム・オブジェクト
継承性 なし
パーセント値 受けつけない

上下左右辺基準の対象移動。

意味
<length> 位置合わせ基準から辺までの距離がこの値になるよう、対象全体を移動する。矩形のサイズは変化しない。
相対長は不正。
auto 何もしない。

位置合わせ基準が見つからないときは、実効値autoとする(すなわち何もしない)。

-un-align-border-top-stepプロパティ・
-un-align-border-bottom-stepプロパティ・
-un-align-border-left-stepプロパティ・
-un-align-border-right-stepプロパティ

<length>|inherit
初期値 0
適用対象 テキストフレーム・オブジェクト
継承性 なし
パーセント値 受けつけない

上下左右辺位置調整刻み。

意味
<length> 指定された一辺だけを動かしていく刻み。位置合わせ基準からの距離が開いていく向きを正、縮んでいく向きを負とする。他の辺は動かさないので、結果として矩形が縦か横に伸縮する。
相対長は不正。

位置合わせ基準が見つからないときは、実効値0とする(すなわち何もしない)。

矩形の幅/高さの最小/最大値については、min-widthmax-widthmin-heightmax-heightプロパティで記述。

-un-align-top-stepプロパティ・
-un-align-bottom-stepプロパティ・
-un-align-left-stepプロパティ・
-un-align-right-stepプロパティ

<length>|inherit
初期値 0
適用対象 テキストフレーム・オブジェクト
継承性 なし
パーセント値 受けつけない

上下左右辺基準の対象位置調整刻み。

意味
<length> 対象全体を動かしていく刻み。位置合わせ基準から着目辺までの距離が開いていく向きを正、縮んでいく向きを負とする。矩形のサイズは変化しない。
相対長は不正。

位置合わせ基準が見つからないときは、実効値0とする(すなわち何もしない)。

-un-min-align-xプロパティ・
-un-max-align-xプロパティ・
-un-min-align-yプロパティ・
-un-max-align-yプロパティ

<length>|none|inherit
初期値 none
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準からの最小・最大横方向・縦方向距離。

相対長は不正。

-un-align-border-*-stepプロパティ・-un-align-*-stepプロパティの限界を指定する。

-un-align-*-stepプロパティについては、max/min-width/heightプロパティも限界となりうる。

-un-datum-typeプロパティ

page|first-paragraph-style|last-paragraph-style|object-style|element-name|inherit
初期値 page
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準対象。

それぞれ、以下の対象を位置合わせの基準とする。

位置合わせ基準
page ページ
first-paragraph-style 指定段落スタイルの段落を先頭に持つテキストフレーム
last-paragraph-style 指定段落スタイルの段落を末尾に持つテキストフレーム
object-style 指定オブジェクトスタイルのオブジェクト
element-name 指定XMLタグのついたストーリーのテキストフレーム、またはオブジェクト

-un-align-*プロパティの算出値がauto以外のとき、または-un-align-*-stepプロパティの算出値が0以外のときにのみ、このプロパティは意味を持つ。

-un-datum-nameプロパティ

<string>|inherit
初期値 空文字列
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準対象の名前。

-un-datum-typeプロパティの算出値に応じて、以下の名前を指定する。

-un-datum-typeプロパティの算出値 指定される名前
first-paragraph-style 段落スタイル名
last-paragraph-style 段落スタイル名
element-name XML要素名

-un-datum-typeプロパティの算出値が上記以外のときは、このプロパティは意味を持たない。

-un-align-*プロパティの算出値がauto以外のとき、または-un-align-*-stepプロパティの算出値が0以外のときにのみ、このプロパティは意味を持つ。

-un-datum-criterionプロパティ

previous-element|next-element|group|inherit
初期値 previous-element
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準対象の選出条件。

位置合わせ基準対象はスプレッド上に複数あるかもしれないが、その中からそれぞれ以下の条件で選出する。

選出される位置合わせ基準対象
previous-element XML構造上前にある中で一番近いもの
next-element XML構造上後にある中で一番近いもの
group 一緒にグループ化されているもの
(自分が複数のグループに属しているときは、子孫グループから先祖グループへ向かって、見つかるまで検索)

-un-datum-typeプロパティの算出値がpageのときは、このプロパティは意味を持たない。

-un-align-*プロパティの算出値がauto以外のとき、または-un-align-*-stepプロパティの算出値が0以外のときにのみ、このプロパティは意味を持つ。

-un-datum-edge-xプロパティ

left|right|inherit
初期値 left
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準対象の横方向基準辺。

位置合わせ基準対象が見つからないときは、このプロパティは意味を持たない。

-un-align-left-un-align-rightプロパティによる横方向の位置合わせを、基準対象のどの辺に対して行うかを指定する。

位置合わせ基準辺
left 左端
right 右端

-un-align-left-un-align-rightプロパティの算出値がautoのときは、このプロパティは意味を持たない。

-un-align-left/right-un-align-border-left/rightプロパティの算出値がauto以外のとき、または-un-align-left/right-step-un-align-border-left/right-stepプロパティの算出値が0以外のときにのみ、このプロパティは意味を持つ。

-un-datum-edge-yプロパティ

top|bottom|inherit
初期値 top
適用対象 テキストフレーム・オブジェクト
継承性 あり
パーセント値 受けつけない

位置合わせ基準対象の縦方向基準辺。

位置合わせ基準対象が見つからないときは、このプロパティは意味を持たない。

-un-align-top-un-align-bottomプロパティによる縦方向の位置合わせを、基準対象のどの辺に対して行うかを指定する。

位置合わせ基準辺
top 上端
bottom 下端

-un-align-left-un-align-rightプロパティの算出値がautoのときは、このプロパティは意味を持たない。

-un-align-top/bottom-un-align-border-top/bottomプロパティの算出値がauto以外のとき、または-un-align-top/bottom-step-un-align-border-top/bottom-stepプロパティの算出値が0以外のときにのみ、このプロパティは意味を持つ。

-un-padding-top-stepプロパティ・
-un-padding-bottom-stepプロパティ

<length>|inherit
初期値 top
適用対象 テキストフレーム
継承性 なし
パーセント値 受けつけない

上下パディング調整刻み。

相対長は不正。

-un-min-padding-topプロパティ・
-un-max-padding-bottomプロパティ

<length>|none|inherit
初期値 none
適用対象 テキストフレーム
継承性 あり
パーセント値 受けつけない

最小・最大上下パディング。

相対長は不正。0・負の値は不正。

-un-padding-left-stepプロパティ・
-un-padding-right-stepプロパティ

<length>|inherit
初期値 top
適用対象 テキストフレーム・コラム
継承性 なし
パーセント値 受けつけない

左右パディング調整刻み。

相対長は不正。

-un-min-padding-leftプロパティ・
-un-max-padding-rightプロパティ

<length>|none|inherit
初期値 none
適用対象 テキストフレーム・コラム
継承性 あり
パーセント値 受けつけない

最小・最大左右パディング。

相対長は不正。0・負の値は不正。

-un-width-stepプロパティ

<length>|<percentage>|inherit
初期値 0
適用対象 コラム・表列
継承性 なし
パーセント値 調整前の幅に対する割合

幅調整刻み。

相対長は不正。

幅の最小/最大値については、min-widthmax-widthプロパティで記述。

-un-height-stepプロパティ

<length>|<percentage>|inherit
初期値 0
適用対象 表行
継承性 なし
パーセント値 調整前の高さに対する割合

高さ調整刻み。

相対長は不正。

高さの最小/最大値については、min-heightmax-heightプロパティで記述。

-un-styleプロパティ

<string>|auto|inherit
初期値 auto
適用対象 テキスト範囲・段落・セル・表・ストーリー・オブジェクト
継承性 なし
パーセント値 受けつけない

適用スタイル。

実装

この「メタ書式モジュール」は、InDesign用プラグイン「JustoFit」に実装されています。

規格履歴

2008.05.30 第1版

策定


Copyright © 2008 UNIT, Inc. All Rights Reserved.