## AH Formatter、XSL-FOとCSS組版について

### AH Formatterとは

- 正式名称は Antenna House Formatter です。最新バージョンは V6.2。
- 1999年、XML文書組版のW3C標準仕様XSL (Extensible Stylesheet Language)対応の組版ソフトXSL Formatterとして開発をスタート。V5以降ではCSS組版にも対応。
- AH Formatter は、多言語の大量のXMLデータからの自動組版などで威力を発揮して、けっこう世界で使われています：
  - 多言語を必要とするグローバル企業でのマニュアル制作
  - 精細なベクタ画像を必要とする工業部品カタログ制作
  - 公的機関の文書組版システムにも採用：例）米内国歳入庁（IRS）の組版システム
  - 電子書籍と紙の書籍の同時制作システムの組版エンジンとして：
    例）　・CAS-UB（アンテナハウス）　・米オライリー社の書籍制作システム
  など

### XSLとは：XSLTとXSL-FO

- XSLは「拡張可能なスタイルシート言語(Extensible Stylesheet Language)」で、XML文書をレイアウトするためのもの。
- XSLはXMLの変換を行うXSLT (XSL Transform)仕様とレイアウトを表現するXSL-FO (XSL Formatting Objects)仕様からなる。
- 元XML文書をXSLTを使ってXSL-FO形式に変換して、XSL-FOを組版する。

元XML文書の例

XSLスタイルシートの例

### CSSとXSLを比較

CSSでXMLを組版するスタイルシートの例

このCSSスタイルシートをXSLスタイルシートと比較すると、

- XSLTのテンプレート `<xsl:template match="表題">...</xsl:template>` とCSSのルール "`表題 {...}`" が対応。
  （この "`表題`" の部分にはXSLTではXPath構文、CSSではセレクタ構文を使う）
- XSL-FOの `fo:block` に対応するのは、CSSでは `display: block` というプロパティ指定。
  （HTMLの場合は `p`, `div`, `h1`～`h6` などブロック要素がこれに対応）
- 体裁を指定するプロパティは共通または似ている。
  XSL-FOでは `text-align="center"`、CSSでは `text-align: center;` など。
  （XSL-FOのプロパティ仕様はCSS2.0がベース）

### XSL-FOのページマスター機能

XSL-FOでは、ページの体裁（寸法、マージン、ページヘッダ／フッタの配置など）を「ページマスター」（`fo:simple-page-master`）で定義。複数のページマスターを、奇数ページ、偶数ページ、先頭ページ、最終ページ、空白ページといった条件でページに割り当てる。

XSL-FOのページマスター機能を使った例

AH Formatterでの組版結果

### CSS3でのページマスターに相当する機能

CSSでも、CSS Paged Media Level 3（CSS3 ページ媒体向け仕様）の「ページルール」（`@page`）を使うと、XSL-FOのページマスター機能に相当することが可能です。ただし、いろいろと違いがあります。

CSS3のページルールを使った例

CSSのページルールをXSL-FOのページマスター機能と比較すると、

XSL-FO | CSS
--- | ---
<fo:simple-page-master> にページサイズなど指定 | @page {...} にページサイズなど指定
ページマージンは <fo:simple-page-master> 内の <fo:region-body> に指定。 | @page {...} にページマージンを指定。
柱やノンブルの領域は <fo:simple-page-master> 内の <fo:region-before>, <fo:region-after> など（サイド・リージョンという）で定義する。 | 柱やノンブルの領域は @page {...} 内の @top-left, @top-center, @top-right, @bottom-left, ... などで定義する。ページヘッダ／フッタの左側/中央/右側がそれぞれ別の領域（マージン・ボックスという）であるところがXSL-FOと違う。
ページヘッダ／フッタの内容（柱やノンブル）は <fo:static-content> 内に記述。 | ページヘッダ／フッタの内容（柱やノンブル）はマージン・ボックスのcontentプロパティの値として指定する。
柱の内容は <fo:marker> で設定して、<fo:retrieve-marker> で取り出す。 | 柱の内容は string-set プロパティで設定して `content: string(X);` で取り出す。 （または `position: running(X);` でセットして `content: element(X);` で取り出す。）
ページ番号は <fo:page-number/> で取り出す。 | ページ番号は `content: counter(pages);` で取り出す。
<fo:conditional-page-master-reference> で、奇数ページ、偶数ページ、先頭ページ、最終ページ、空白ページといった条件でのページマスターの割り当てをする。 | `@page` に付加するページセレクタで、右ページ（`:right`）、左ページ（`:left`）、先頭ページ（`:first`）、空白ページ（`:blank`）のページルールを定義する。
<fo:page-sequence-master> を複数定義して、文書内のパートごとに割り当てることができる。 | 名前付きページ（例：`@page Appendix {...}`）を定義して、文書内のパートごとに割り当てることができる。

### AH拡張プロパティ

- 独自拡張およびCSS3ドラフト仕様のプロパティを採用。
- CSSでは、AH拡張を表すプレフィックス `-ah-` を付ける。`-ah-`プレフィックスの他に、EPUB3仕様で定義されている`-epub-`プレフィックス付きのCSS3プロパティも有効です。（例: -epub-writing-mode）

  例：

      -ah-hanging-punctuation: allow-end; /* 句読点ぶら下げ有り */

- XSL-FOでは、AH XSL-FO拡張名前空間のプレフィックスを付ける。

  例：

      axf:hanging-punctuation="allow-end"
          xmlns:axf="http://www.antennahouse.com/names/XSL/Extension"

- AH拡張プロパティの多くはCSSとXSL-FOで共通のものが使える（上の例など）。
- XSL-FOの標準のプロパティをCSSでAH拡張プロパティとして利用できるものもある。

  例：

      -ah-display-align: center; /* ブロック進行方向にセンタリング */

## フロート拡張

### CSS2.1とXSL-FO標準のフロート機能

これは float: left;
の例
これは float: right; の例

AHフロート拡張の説明の前に、まず、CSS2.1とXSL-FO標準のフロート機能についておさらい。

CSS2.1のfloat
  float: none | left | right
XSL-FOのfloat
  float: none | before | start | end | left | right | inside | outside

before はページのbefore側（横書きなら上）にフロート配置。

start, end は左横書きならleft, rightに対応。insideはノド側、outsideは小口側。

### AH拡張floatプロパティ

- -ah-float: <float-x>||<float-y>||<float-reference>||<float-move>
- <float-x>: none | start | end | left | right | top | bottom | center | inside | outside
- <float-y>: none | before | after | left | right | top | bottom | center | inside | outside
- <float-reference>: normal | page | column | multicol
- <float-move>: auto | next | auto-next | auto-move | keep

AH拡張floatプロパティはXSL-FOとCSSで共通（ここではCSSの構文で説明）。XSL-FOで利用する場合は `<fo:float axf:float="top outside">` のように拡張floatを指定する。

これらのキーワードのうち top, bottom, inside, outside, page, multicol, next はCSS3 Generated Content for Paged Mediaドラフト仕様をベースにしている。

AH拡張floatにおいてx方向とy方向という場合は、x=文字の進む方向、y=行の進む方向。つまり横書きならx=水平方向、y=垂直方向だが、縦書きならx=垂直方向、y=水平方向。

### ページのフロート

ページの上に配置
これは -ah-float: page top; （ページの上に配置）の例
  -ah-float: page top;
ページの下に配置
  -ah-float: page bottom;
ページの左上に配置
  -ah-float: page left top;
ページの右下に配置
これは -ah-float: page right bottom; （ページの右下に配置）の例
  -ah-float: page right bottom;
ページの上の小口側
  -ah-float: page top outside;
ページの下のノド側
  -ah-float: page bottom inside;

物理方向left、right、top、bottom の代わりに論理方向 start（行頭側）、end（行末側）、before（前側）、after（後側）も使用可。

### 段のフロート

段の上に配置 -ah-float: column top;
段の下に配置
-ah-float: column bottom;

いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。

段の右上に配置
-ah-float: column right top;
段の左下に配置
-ah-float: column left bottom;

段をまたがるフロートは次の段組のフロートで。

### 段組のフロート

左上に2段抜きで配置
-ah-float: multicol left top;
width: 3gr;
右下に3段抜きで配置
-ah-float: multicol right bottom; width: 5gr;

いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを。

#### 単位gr(グリッド)について

- 段幅と段間をともに1grと数える。例：width: 1gr は段幅と同じ。2gr は段幅＋段間。3gr は 段幅(1段目)＋段間＋段幅(2段目)。n段抜きは (2n-1)gr。
- 小数点以下の端数は段幅または段間の途中までを表す。例：width: 1.5gr は段幅*1＋段間*0.5。width: 2.5gr は段幅(1段目)＋段間＋段幅(2段目)*0.5。

### 絶対配置フロートと相対配置フロート

絶対配置フロート
  ページ／段／段組のフロートは、フロート指定を埋め込む行位置（アンカーの位置）によらずに、絶対的な位置を基準に配置されるので「絶対配置フロート」と呼ぶことにする。
相対配置フロート
  フロート指定を埋め込む行位置（アンカーの位置）を基準に配置されるフロートは「相対配置フロート」と呼ぶことにする。

「日本語組版処理の要件」(JLReq)で説明されているJIS X 4051（日本語組版規則）における図の配置の「絶対位置指定による配置」「相対位置指定による配置」に対応する。

y方向のフロート指定（before/after、横書きでのtop/bottom、縦書きでのright/left）があるのが絶対配置フロートで、無いのが相対配置フロート。

絶対配置フロート（page top left など）は絶対的な位置指定と似ているが、同じ位置への指定のフロートがページ内に複数あった場合は、重なったりはしないで並んで（横書きなら上から下、右縦書きなら右から左に）配置されるので、必ずしも絶対的な位置ではない。

### フロートを次のページ（または段）に移動するかどうかを指定

#### <float-move>: auto | next | auto-next | auto-move | keep

auto（デフォルト）
  絶対配置フロートでは auto-next、相対配置フロートでは keep と同じ。
next
  フロートを現在のページ（または段）ではなくて次のページ（または段）に配置。
auto-next
  現在のページ（または段）に充分なアキが無い場合にフロートを次のページ（または段）に移動。
auto-move
  現在のページ（または段）に充分なアキが無い場合、フロートを次のページ（または段）に移動、あるいは、フロートを移動するのではなく、フロートのアンカーとまわりのテキストを次のページ（または段）に移動。どちらを次のページ（または段）に移動するかは、JIS X 4051（日本語組版規則）における図の配置方法の規則にしたがう。
keep
  フロートとそのアンカーは常に同じページ（または段）になるように配置。現在のページ（または段）にそのための充分なスペースが無い場合は、フロートのアンカーよりも前のところで改ページ（または改段）が起きて空白が生じることになる。

#### auto-nextとauto-moveの使い方

ページに図の配置をするとき、本文中での図への参照となるべく同じページに配置したい。それが出来ないとき、通常は図を次のページに送る（auto-nextの動作）。

しかし場合によっては、図が前のページにあっても図への参照がその次のページの最初のほうにあるなら許容できる。通常は図を次のページに送るが、図のほうが先に現れることも許容したいときはauto-moveを指定。

#### 横組の図版配置の一般的な例――図版を説明のある段落の直後に配置

図版を説明のある段落の直後に配置する場合（JLReqの図を引用）

拡張floatの値centerは、x方向の中央に寄せて配置。両側へのテキスト回り込みは無し。

図をそのまま配置すると版面の領域からはみ出すとき、領域内の部分をa、はみ出した部分をbとし、a≧2b の場合（はみ出しが小さい）、図の前のテキストを次のページに送ることで図をページ内に収める。a<2b の場合、図を次のページの先頭に移動し、空いたところには図の後に続くテキストで埋める。（相対配置フロートのauto-move指定での動作）

はみ出した図を常に次のページに移動するようにするなら auto-nextを指定すること。

#### 縦組の図版配置の一般的な例――“天・小口寄り”に図版を配置

縦組の“天・小口寄り”に図版を配置する場合（JLReqの図を引用）
(a≧2b)
(a<2b)

### フロートのさらなる位置指定

#### -ah-float-offset-x, -ah-float-offset-y で x方向、y方向のオフセット指定

例：

    -ah-float: multicol left top; /* 段組の左上が基準のフロート */
    -ah-float-offset-x: 2gr;      /* 2gr右に移動。2段目からの配置となる */
    width: 3gr;                   /* 3grの幅（2段目から3段目まで）*/

段組の左上が基準で2段目から3段目までの幅を持つフロート

いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせすん。いろはにほへとちりぬるを、わかよたれそ、つねならむ。

### フロートとテキスト回り込みの調整

#### フロートの回り込みテキスト幅の最小値を指定：-ah-float-min-wrap-x

例：

    /* テキストが回り込む領域の字詰方向の大きさが5文字分未満なら回り込みなしに */
    -ah-float-min-wrap-x: 5em;

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

いろはにほへとちりぬるをわかよたれそつねならむ。

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

#### 回り込みテキスト幅が足りないならフロートを中央寄せ：-ah-float-centering-x

例：

    -ah-float: start;
    -ah-float-min-wrap-x: 5em;
    -ah-float-centering-x: auto; /* 回り込む領域の幅が5em未満なら回り込み無しで中央寄せ */

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

いろはにほへとちりぬるをわかよたれそつねならむ。

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。いろはにほへとちりぬるをわかよたれそつねならむ。

#### フロートと回り込むテキストとのアキの指定：-ah-float-margin-x

例：

    -ah-float: outside;   /* 小口寄り（左ページなら左寄せ） */
    -ah-float-margin-x: 0.5em;

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせすん。いろはにほへとちりぬるをわかよたれそつねならむ。

このほかのフロート拡張、-ah-float-min-wrap-y, -ah-float-centering-y, -ah-float-margin-y などもあります。詳しくはマニュアルをご覧くさい。

## 日本語組版関連機能

### ルビ

#### (X)HTML5のルビの書き方

モノルビ：

グループルビ：

熟語ルビ：

#### AH XSL-FO拡張のルビの書き方

モノルビ：

グループルビ

熟語ルビ

#### モノルビ、グループルビ、熟語ルビの組版結果の違い

モノルビ：

京きょう都と府ふ

グループルビ：

京都府きょうとふ

熟語ルビ：

京きょう都と府ふ

#### 熟語ルビの行の折り返し

角を凝ぎょう視しする。
鬼門の方角を凝ぎょう視しする。

#### ルビが親文字よりはみ出した場合の処理

渚なぎさに暁あかつきを

#### ルビ文字幅を自動的に圧縮

今いま、渚なぎさに暁あかつきの趣おもむきを
今いま、渚なぎさに暁あかつきの趣おもむきを

#### 親文字の両側にルビ

東南とうなんたつみの方向
東南とうなんたつみの方向

#### 中付きと肩付き

地ちを

地ちを

#### グループルビの配置

紫陽花あじさい

紫陽花あじさい

境界面インターフェイス

境界面インターフェイス

### 圏点

ここは圏点で強調よ
ここは圏点で強調よ

ここは圏点で強調よ
ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

ここは圏点で強調よ

#### ルビと圏点

ルビと圏点けんてん

ルビと圏点けんてん

### 縦書きと縦中横～自動縦中横

日本語は伝統的に縦書きで組まれます。書籍や雑誌など出版物の多くは今も縦書きが主流です。もちろん、AH Formatterは縦書きにも対応しています。このように、部分的にブロックを縦書きにすることも、文書全体を縦書きにすることもできます。

縦書きの指定はwriting-mode: vertical-rl、横書きの指定はwriting-mode: horizontal-tb です。

縦書きの中に「’12年３月31日」のように部分的に数字などを横書きにすることを「縦中横たてちゅうよこ」といいます。

    span.TCY {
      -ah-text-combine: horizontal; /* 縦中横 */
    }
    ...
      <p>縦書きの中に「<span class="TCY">’12</span>年３月
      <span class="TCY">31</span>日」のように部分的に数字などを
      横書きにすることを「縦中横」といいます。</p>

文章中の縦中横にする箇所にいちいち指定するのは面倒だという場合には、自動縦中横の機能が便利です。

    :root {  /* 文書全体をこのモードにするにはルートに指定 */
      -ah-writing-mode: vertical-rl;  /* 縦書き */
      /* 数字2桁まで、英字1桁を自動縦中横 */
      -ah-text-combine-horizontal: digits 2 alpha 1;
      ...
    }

### 約物の処理

「《約物〔やくもの〕》、つまり『括弧』・『句読点』の類（たぐい）です。」のように、約物（句読点や括弧類）が連続する場合や行頭や行末に来たとき、通常は全角幅の約物を半角幅に詰めて、見栄えをよくします。

「《約物〔やくもの〕》、つまり『括弧』・『句読点』の類（たぐい）です。」←こちらは比較のために、約物の詰めを無効にした例です（-ah-punctuation-trim: none を指定）この約物の詰めの処理と次の和欧文間の空きの処理は、CSS Text Level 4で定義される予定のtext-spacingプロパティの機能に相当します。。

### 和欧文間の空き

「日本語にもglobalにも100%を目指すAH Formatter V6です」のように、日本語の文章の中に欧字や数字が入るとき、間にアキを入れて読みやすくします。

「日本語にもglobalにも100%を目指すAH Formatter V6です」←こちらは比較のために、和欧文間の空きを無効にした例です（-ah-text-autospace: none を指定）。

和欧文間の空きの量は標準で全角幅の25%ですが、変更可能です。（-ah-text-autospace-widthプロパティ）

## フォント関連機能

### font-variant拡張

CSS3 Fontsドラフト仕様のfont-variant拡張に対応しています。

- font-variant: normal | [ <font-variant-caps> || <font-variant-numeric> || <font-variant-alternates> || <font-variant-ligatures> || <font-variant-position> || <font-variant-east-asian> ]
- <font-variant-caps>: small-caps | all-small-caps | petite-caps | all-petite-caps | titling-caps | unicase
- <font-variant-numeric>: <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || slashed-zero
- <numeric-figure-values>: lining-nums | oldstyle-nums
- <numeric-spacing-values>: proportional-nums | tabular-nums
- <numeric-fraction-values>: diagonal-fractions | stacked-fractions
- <font-variant-alternates>: historical-forms | stylistic(<number>) | swash(<number>) | ornament(<number>) | annotation(<number>)
- <font-variant-ligatures>: <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> V6.2
- <common-lig-values>: common-ligatures | no-common-ligatures V6.2
- <discretionary-lig-values>: discretionary-ligatures | no-discretionary-ligatures V6.2
- <historical-lig-values>: historical-ligatures | no-historical-ligatures V6.2
- <contextual-alt-values>: contextual | no-contextual V6.2
- <font-variant-position>: sub | super V6.2
- <font-variant-east-asian>: <east-asian-variant-values> || <east-asian-width-values> || ruby V6.2
- <east-asian-variant-values>: jis78 | jis83 | jis90 | jis04 | hojo-kanji | nlckanji | simplified | traditional
- <east-asian-width-values>: full-width | proportional-width

    body {  /* 日本語OpenTypeフォントの仮名文字などをプロポーショナルに */
      font-variant: proportional-width;
    }

「日本語OpenTypeフォントの仮名文字などを“プロポーショナル”なグリフにすることができます。」（font-variant: proportional-width）

「日本語OpenTypeフォントの仮名文字などを“プロポーショナル”なグリフにすることができます。」（通常）

「日本語OpenTypeフォントの仮名文字などを“プロポーショナル”なグリフにすることができます。」（font-variant: full-width）

### IVS異体字対応

葛󠄀城市と葛󠄁飾区
葛󠄀 = U+845B U+E0100
葛󠄁 = U+845B U+E0101

### Webフォント、WOFFサポート

This is the WOFF font ‘Tangerine’ from Font Squirrel.
This is the WOFF font ‘GoodDog’ from Font Squirrel.

    @font-face {
        font-family: 'TangerineRegular';
        src: url('Tangerine_Regular-webfont.woff');
    }
    ...

XSL-FOでは：

## 多言語組版

以下の多言語のサンプルは、UDHR in Unicode（世界人権宣言の各国語版）から。

### 中東言語（アラビア語やヘブライ語など右から左に書くもの）

Arabic

> يولد جميع الناس أحرارًا متساوين في الكرامة والحقوق. وقد وهبوا عقلاً وضميرًا وعليهم أن يعامل بعضهم بعضًا بروح الإخاء.

Urdu V6.2

> دَفعَہ ۱: تَمام اِنسان آزاد اَور حُقوق و عِزَّت کے اِعتِبار سے بَرابَر پَیدا ہوئے ہَیں۔ اُنہیں ضَمیر اَور عَقل وَدیعَت ہوئی ہے۔ اِس لِئے اُنہیں ایک دوسرے کے ساتھ بهائی چارے کا سُلوک کَرنا چاہِئے

Hebrew

> כל בני אדם נולדו בני חורין ושווים בערכם ובזכויותיהם. כולם חוננו בתבונה ובמצפון, לפיכך חובה עליהם לנהוג איש ברעהו ברוח של אחוה.

### インド系諸言語

Hindi (Devanagari)

> सभी मनुष्यों को गौरव और अधिकारों के मामले में जन्मजात स्वतन्त्रता और समानता प्राप्त है । उन्हें बुद्घि और अन्तरात्मा की देन प्राप्त है और परस्पर उन्हें भाईचारे के भाव से बर्ताव करना चाहिए ।

Bengali

> সমস্ত মানুষ স্বাধীনভাবে সমান মর্যাদা এবং অধিকার নিয়ে জন্মগ্রহণ করে। তাঁদের বিবেক এবং বুদ্ধি আছে ; সুতরাং সকলেরই একে অপরের প্রতি ভ্রাতৃত্বসুলভ মনোভাব নিয়ে আচরণ করা উচিত্‍।

Gujarati

> પ્રતિષ્ઠા અને અધિકારોની દષ્ટિએ સર્વ માનવો જન્મથી સ્વતંત્ર અને સમાન હોય છે. તેમનામાં વિચારશકિત અને અંતઃકરણ હોય છે અને તેમણે પરસ્પર બંધુત્વની ભાવનાથી વર્તવું જોઇએ.

Tamil

> மனிதப் பிறிவியினர் சகலரும் சுதந்திரமாகவே பிறக்கின்றனர் ; அவர்கள் மதிப்பிலும், உரிமைகளிலும் சமமானவர்கள், அவர்கள் நியாயத்தையும் மனச்சாட்சியையும் இயற்பண்பாகப் பெற்றவர்கள். அவர்கள் ஒருவருடனொருவர் சகோதர உணர்வுப் பாங்கில் நடந்துகொள்ளல் வேண்டும்.

Malayalam

> മനുഷ്യരെല്ലാവരും തുല്യാവകാശങ്ങളോടും അന്തസ്സോടും സ്വാതന്ത്ര്യത്തോടുംകൂടി ജനിച്ചിട്ടുള്ളവരാണ്‌. അന്യോന്യം ഭ്രാതൃഭാവത്തോടെ പെരുമാറുവാനാണ്‌ മനുഷ്യന്നു വിവേകബുദ്ധിയും മനസ്സാക്ഷിയും സിദ്ധമായിരിക്കുന്നത്‌.

Kannada

> ಎಲ್ಲಾ ಮಾನವರೂ ಸ್ವತಂತ್ರರಾಗಿಯೇ ಜನಿಸಿದ್ಧಾರೆ. ಹಾಗೂ ಘನತೆ ಮತ್ತು ಹಕ್ಕುಗಳಲ್ಲಿ ಸಮಾನರಾಗಿದ್ದಾರೆ. ವಿವೇಕ ಮತ್ತು ಅಂತಃಕರಣ ಗಳನ್ನು ಪದೆದವರಾದ್ದ ರಿಂದ ಅವರು ಪರಸ್ಪರ ಸಹೋದರ ಭಾವದಿಂದ ವರ್ತಿಸಚೀಕು.

以下のサンプルテキストはWikipediaから：

Oriya

> ଓଡ଼ିଆ, ଓଡ଼ିଶାର ପ୍ରଶାସନିକ ଭାଷା ଓ ଭାରତର ସମ୍ବିଧାନ ସ୍ଵିକୃତୀପ୍ରାପ୍ତ ୨୨ଟି ଭାଷା ମଧ୍ୟରୁ ଗୋଟିଏ ଓ ଝାଡ଼ଖଣ୍ଡର ୨ୟ ପ୍ରଶାସନିକ ଭାଷା ।

Telugu

> ఆంధ్రప్రదేశ్ రాష్ట్ర అధికార భాష తెలుగు. భారత దేశం లో తెలుగు మాతృభాషగా మాట్లాడే 8.7 కోట్ల (2001 ) జనాభాతో ప్రాంతీయ భాషలలో మొదటి స్థానం లోఉంది.

Punjabi (Gurmukhi)

> ਪੰਜਾਬੀ ਪਾਕਿਸਤਾਨ ਅਤੇ ਭਾਰਤ ਦੇ ਪੰਜਾਬ ਸੂਬੇ ਦੀ ਭਾਸ਼ਾ ਹੈ। ਇਹ ਭਾਸ਼ਾਵਾਂ ਦੇ ਹਿੰਦ-ਇਰਾਨੀ ਪਰਵਾਰ ਵਿੱਚੋਂ ਹਿੰਦ-ਯੂਰਪੀ ਪਰਵਾਰ ਨਾਲ ਸਬੰਧ ਰੱਖਦੀ ਹੈ। ਇਹ ਪੰਜਾਬੀਆਂ ਦੀ ਮਾਂ ਬੋਲੀ ਹੈ ਅਤੇ ਸਿੱਖੀ ਦੀ ਧਾਰਮਿਕ ਭਾਸ਼ਾ ਵੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਗੁਰੂ ਗ੍ਰੰਥ ਸਾਹਿਬ ਦੀ ਰਚਨਾ ਕੀਤੀ ਗਈ ਹੈ। ਇਹ ਦੁਨੀਆਂ ਅਤੇ ਖਾਸ ਕਰ ਦੱਖਣੀ ਏਸ਼ੀਆ ਦੇ ਉੱਘੇ ਭੰਗੜਾ ਸੰਗੀਤ ਦੀ ਭਾਸ਼ਾ ਹੈ। ਪਾਕਿਸਤਾਨ ਵਿੱਚ ਇਹ ਸਭ ਤੋਂ ਵੱਧ ਬੋਲੀ ਜਾਣ ਵਾਲੀ ਬੋਲੀ ਹੈ।

### 東南アジアの言語

Khmer

> មនុស្សទាំងអស់ កើតមកមានសេរីភាព និងសមភាព ក្នុងផ្នែកសេចក្ដីថ្លៃថ្នូរនិងសិទ្ធិ។ មនុស្ស មានវិចារណញ្ញាណនិងសតិសម្បជញ្ញៈជាប់ពីកំណើត ហើយគប្បីប្រព្រឹត្ដចំពោះគ្នាទៅវិញទៅមក ក្នុង ស្មារតីភាតរភាពជាបងប្អូន។

Lao

> ມະນຸດເກີດມາມີສິດເສລີພາບ ແລະ ສະເໝີໜ້າກັນໃນທາງກຽດຕິສັກ ແລະ ທາງສິດດ້ວຍມະນຸດມີສະຕິສຳປັດຊັນຍະ(ຮູ້ດີຮູ້ຊົ່ວ)ແລະມີມະໂນທຳຈື່ງຕ້ອງປະພຶດຕົນຕໍ່ກັນໃນທາງພີ່ນ້ອງ.

Thai

> มนุษย์ทั้งหลายเกิดมามีอิสระและเสมอภาคกันในเกียรติศักด[เกียรติศักดิ์]และสิทธิ ต่างมีเหตุผลและมโนธรรม และควรปฏิบัติต่อกันด้วยเจตนารมณ์แห่งภราดรภาพ

Vietnamese

> Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền. Mọi con người đều được tạo hoá ban cho lý trí và lương tâm và cần phải đối xử với nhau trong tình bằng hữu.

## MathML数式組版

Quadratic Equation x = - b ± b 2 - 4 a c 2 a Bernoulli Trials P ( E ) Probability of event E: Get exactly k heads in n coin flips. = ( n k ) Number of ways to get exactly k heads in n coin flips p Probability of getting heads in one flip k Number of heads ( 1 - p ) Probability of getting tails in one flip n - k Number of tails Cauchy Formula f ( z ) · I n d γ ( z ) = 1 2 π i ∮ γ f ( ξ ) ξ - z d ξ

MathML数式組版を利用するには、数式用のフリーなフォントであるSTIXフォントを推奨します。STIXフォントはSTIX Fonts Project Website からダウンロードできます。

## 多彩な表現

### ブロック領域の変形

Kannada

> ಎಲ್ಲಾ ಮಾನವರೂ ಸ್ವತಂತ್ರರಾಗಿಯೇ ಜನಿಸಿದ್ಧಾರೆ. ಹಾಗೂ ಘನತೆ ಮತ್ತು ಹಕ್ಕುಗಳಲ್ಲಿ ಸಮಾನರಾಗಿದ್ದಾರೆ. ವಿವೇಕ ಮತ್ತು ಅಂತಃಕರಣ ಗಳನ್ನು ಪದೆದವರಾದ್ದ ರಿಂದ ಅವರು ಪರಸ್ಪರ ಸಹೋದರ ಭಾವದಿಂದ ವರ್ತಿಸಚೀಕು.

Quadratic Equation x = - b ± b 2 - 4 a c 2 a Bernoulli Trials P ( E ) Probability of event E: Get exactly k heads in n coin flips. = ( n k ) Number of ways to get exactly k heads in n coin flips p Probability of getting heads in one flip k Number of heads ( 1 - p ) Probability of getting tails in one flip n - k Number of tails

- -ah-transform: none | <transform-function> [ <transform-function> ]*
- <transform-function>:
  - matrix(<number>, <number>, <number>, <number>, <number>, <number>)
  - translate(<translation-value>[, <translation-value>])
  - translateX(<translation-value>)
  - translateY(<translation-value>)
  - scale(<number>[, <number>])
  - scaleX(<number>)
  - scaleY(<number>)
  - rotate(<angle>)
  - skew(<angle>[, <angle>])
  - skewX(<angle>)
  - skewY(<angle>)

CSS3 Transforms仕様のうちの2次元の変形に対応しています。

### グラデーション

背景にグラデーションを指定することができます。

      background: linear-gradient(to right, yellow, violet);

色々なグラデーションの例：

Linear Gradient

    linear-gradient(to top right, red, white, blue)

Radial Gradient

    radial-gradient(red, yellow, green)

Repeating Linear Gradient

    repeating-linear-gradient(red, yellow 20px, red 40px)

Repeating Radial Gradient

    repeating-radial-gradient(circle closest-side at 20px 30px, red, yellow, green 100%, yellow 150%, red 200%)

CSS3 グラデーション（Gradients）仕様に対応しています。

### テキストシャドウ V6.2

テキストに影を付けることができます。

    text-shadow: 1pt 1pt 0pt #F0F0F0, 2pt 2pt 0pt #707070;

TEXT SHADOW 影付き

    text-shadow: 0pt 1pt 2pt #666;

TEXT SHADOW 影付き

    text-shadow: 2pt 2pt 0 rgba(255,0,180,0.5);

TEXT SHADOW 影付き

### ボックスシャドウ V6.2

ボックスにぼかしのある影を付けることができます。

box-shadow: rgba(0,127,0,0.5) 3pt 3pt 2pt
box-shadow: rgba(0,127,0,0.5) 3pt 3pt 2pt inset
box-shadow: rgba(0,127,0,0.5) 3pt 3pt 2pt, rgba(0,127,0,0.5) 3pt 3pt 2pt inset
box-shadow: rgba(0,127,0,0.5) 3pt 3pt 2pt 5pt, rgba(0,127,0,0.5) 3pt 3pt 2pt 5pt inset

## 行グリッド V6.2

見出しや図があっても各段の行の位置がずれないように行グリッドを設定します。

このブロックは`-ah-baseline-grid: new`で行グリッドを設定してます。

### 見出し（n行ドリ）

いろはにほへとちりぬるをわかよたれそつねならむ大きい字Bigうゐのおくやまけふこえて、あさきゆめみしゑひもせす。いろはにほへとちりぬるを、わかよたれそつねならむもっとBigうゐのおくやまけふこえて、あさきゆめみしゑひもせす。いろはにほへとちりぬるをわかよたれそ。

図Float

いろはにほへとちりぬるを、わかよたれそつねならむ。うゐのおくやまけふこえて、あさきゆめみしゑひもせす。

図Display
`-ah-baseline-grid: none;
-ah-baseline-block-snap: auto;`

いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせす。いろはにほへとちりぬるをわかよたれそつねならむ。うゐのおくやまけふこえてあさきゆめみしゑひもせす。

    body {
      -ah-baseline-grid: new;     /*このブロックに行グリッドを設定 */
      font-size: 9pt;             /* このfontとline-height値を行グリッドに使う */
      line-height: 14pt;
      column-count: 2;
      ...
    }

- ブロック要素に-ah-baseline-grid: newを指定すると、この要素のフォントと行高(line-height)を使って行グリッドが設定され、グリッドに合わせて行が配置されます。
- 行グリッドなし場合には1行目の前と最終行のあとに半行間のアキができますが、行グリッドありの場合には半行間のアキはできません。
- 行の中に大き目の文字やインライン画像がある場合、隣接行と重ならない範囲ならば行送りは一定のままですがそれを超えると行グリッド上の次の行位置に送られます。
- newの代わりにrootを指定すると、root要素のfontとline-height値を行グリッドに使います。

    h1 {
      -ah-baseline-grid: new;     /* 見出しブロック内の行グリッド設定 */
      -ah-baseline-block-snap: center;   /* n行ドリ中央に配置 */
      font-size: 1.8em;
      line-height: 1.2;
      ...
    }
    figure {
      -ah-baseline-grid: none;    /* 図版ブロック内は行グリッド不使用 */
      -ah-baseline-block-snap: auto;
      ...
    }

- 見出しや図版をn行ドリにするにはそのブロックに-ah-baseline-grid: newまたはnoneを指定します（そのブロック内に行グリッドを設定するなら new、しないなら none）。
- -ah-baseline-block-snapで見出しや図版をn行ドリの中央寄せ(center)か前寄せ(before)か後寄せ(after)かを指定します。デフォルトautoでは段の先頭では前寄せ、末尾では後寄せ、それ以外で中央寄せとします。
- 実際に何行ドリになるかは見出しや図版のブロックの大きさによります。必要に応じてmarginやpaddingの指定で調整します。

## マルチメディア埋込み

ビデオやオーディオなどのマルチメディアデータをPDFへ埋め込むことができます。

HTMLでは：

    <video src="movie.mp4" type="video/mp4" poster="poster.jpg"
           width="400" height="300" controls="controls" >
    </video>

または

    <object data="movie.mp4" type="video/mp4"
            width="400" height="300"
            style="-ah-poster-image:url(poster.jpg); -ah-show-controls:true">
    </object>

XSL-FOでは：

    <fo:external-graphic src="movie.mp4" content-type="video/mp4"
                         axf:poster-image="poster.jpg"
                         axf:show-controls="true"
                         width="400px" height="300px" />

再生時の音量、再生回数、再生時間なども指定できます(axf:(-ah-)media-*)。V6.2

Movie: The quick brown fox jumps!

## PDFレイヤー V6.2

PDFにレイヤーを指定することができます。

    :root { -ah-layer-settings: "上レイヤー", "下レイヤー",
            "日本語レイヤー" lang "ja", "English Layer" off lang "en"; }
    .LayerA { -ah-layer: "上レイヤー" }
    ...

上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー、上レイヤー
下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー、下レイヤー
日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー、日本語レイヤー
English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer, English Layer