ハイフネーション

AH Formatter V6.4 は、40言語以上のハイフネーション処理を行うことができます。このとき、辞書を用意する必要はありません。

対応言語

AH Formatter V6.4 は、以下の言語のハイフネーションに対応しています。

コード 言語 単語構成文字
af afr 南ア公用オランダ語 ラテン文字とアポストロフィ
bg bul ブルガリア語 キリル文字
ca cat カタロニア語 ラテン文字とアポストロフィとピリオドと中点
cs ces チェコ語 ラテン文字
cy cym ウェールズ語 ラテン文字とアポストロフィ
da dan デンマーク語 ラテン文字とアポストロフィ
de deu ドイツ語(含スイス) ラテン文字とアポストロフィ
el ell ギリシャ語 ギリシャ文字
en eng 英語 ラテン文字とアポストロフィ
en-US eng-US 米国英語 ラテン文字とアポストロフィ
eo epo エスペラント語 ラテン文字
es spa スペイン語 ラテン文字
et est エストニア語 ラテン文字
eu eus バスク語 ラテン文字
fi fin フィンランド語 ラテン文字
fr fra フランス語(含カナダ) ラテン文字とアポストロフィ
ga gle アイルランド語(含エール) ラテン文字とアポストロフィ
hr hrv クロアチア語 キリル文字またはラテン文字
hu hun ハンガリー語 ラテン文字
id ind インドネシア語 ラテン文字とアポストロフィと数字の2
is isl アイスランド語 ラテン文字
it ita イタリア語 ラテン文字とアポストロフィ
la lat ラテン語 ラテン文字
lt lit リトアニア語 ラテン文字
lv lav ラトビア語 ラテン文字
ms msa マレー語 ラテン文字とアポストロフィと数字の2
mt mlt マルタ語 ラテン文字とアポストロフィ
nb nob ノルウェー語(ブークモール) ラテン文字とアポストロフィ
nl nld オランダ語 / フラマン語 ラテン文字とアポストロフィ
nn nno ノルウェー語(ニーノシュク) ラテン文字とアポストロフィ
no nor ノルウェー語 ラテン文字とアポストロフィ
pl pol ポーランド語 ラテン文字
pt por ポルトガル語(含ブラジル) ラテン文字
ro ron ルーマニア語(含モルダビア) ラテン文字とアポストロフィ
ru rus ロシア語 キリル文字
sk slk スロバキア語 ラテン文字とアポストロフィ
sl slv スロベニア語 ラテン文字とアポストロフィ
sr srp セルビア語 キリル文字またはラテン文字
sv swe スウェーデン語 ラテン文字とアポストロフィ
sw swa スワヒリ語 ラテン文字とアポストロフィ
th tha タイ語 タイ文字
tr tur トルコ語 ラテン文字
uk ukr ウクライナ語 キリル文字

AH Formatter V6.4 は、単語構成文字で構成される文字列を単語とみなしてハイフネーションを行います。他の文字が含まれる文字列はひとつの単語とみなされません。

使用例

例えば、チェコ語のハイフネーションを行うには、次のように指定します。

<fo:block hyphenate="true" language="ces">
Všichni lidé rodí se svobodní a sobě rovní co do důstojnosti a práv. Jsou nadáni rozumem a svědomím a mají spolu jednat v duchu bratrství.
</fo:block>

例外辞書

AH Formatter V6.4 では、辞書を用意する必要はありません。 しかし、標準のハイフネーション処理では望みどおりにならない単語を例外扱いしたいことがあります。そのようなとき、例外辞書を用意し、単語を登録しておくことができます。 また、GUIでの作業中に、例外辞書を編集したときは、メニューの [組版]-[ハイフネーション辞書再読み込み] によってハイフネーション辞書の再読み込みと再組版を行うことができます。

例外辞書は AH Formatter V6.4 がインストールされたフォルダの hyphenation フォルダ、あるいは環境変数 AHF64_HYPDIC_PATH (64ビット版ではAHF64_64_HYPDIC_PATH)で示されるフォルダに格納します。辞書ファイルの名称は、次の規則に従います。これは、TeXの辞書と同じです。

例えば、de.xml、en_US.xml などです。xml:lang="nl-BE" の場合、次の順序で辞書が探されます。

  1. nl-BE.xml
  2. nl_BE.xml
  3. nl.xml

例外辞書の内容は次のとおりです。

要素位置内容
<hyphenation-info>ルート要素
<hyphen-char><hyphenation-info> の子要素 exceptions要素中で、<hyphen/> の代替となるハイフネーション文字を表す要素です。ハイフネーション文字はvalue属性で表されます。初期値は「-」(U+002D)です。
<exceptions><hyphenation-info> の子要素 例外辞書のデータです。exceptions要素のテキストは空白で区切られたハイフネーション済み単語の集合です。ハイフン情報はhyphen要素で示されますが、hyphen-char要素で指定された文字を用いることもできます。
<hyphen><exceptions> の子要素 TeXの辞書と等価なフル機能のハイフン。pre、post、no の属性を持ちます。pre は単語の行分割が発生した場合に、ハイフネーション文字の前に挿入される文字列、post はハイフネーション文字の後に挿入される文字列、no は単語が行分割されない場合に現れる文字列を表します。hyphen要素は単語が行分割されたときに綴りが変化する場合に使用します。
<non-eol-words><hyphenation-info> の子要素 行末禁則させる単語を空白で区切って指定します。ここで指定された単語は、行末に位置しないように調整されますが、場合によってはそれが不可避なこともあります。 行末禁則処理は、FO中のhyphenateプロパティによらず、常に有効です。

例外辞書のDTDは次のように単純です。

<!ELEMENT hyphenation-info (hyphen-char?, exceptions?, non-eol-words?)>

<!ELEMENT hyphen-char EMPTY>
<!ATTLIST hyphen-char value CDATA #REQUIRED>

<!ELEMENT exceptions (#PCDATA|hyphen)*>

<!ELEMENT hyphen EMPTY>
<!ATTLIST hyphen pre  CDATA #IMPLIED>
<!ATTLIST hyphen no   CDATA #IMPLIED>
<!ATTLIST hyphen post CDATA #IMPLIED>

<!ELEMENT non-eol-words #PCDATA>

例えば、次のような内容の例外辞書を用意したとします。

<hyphenation-info>
<exceptions>
ta-ble
present
ba<hyphen pre="k" no="c"/>ken
</exceptions>
</hyphenation-info>

table は、ta-ble とのみハイフネーションされる可能性があり、present がハイフネーションされることはありません。backen は、bak-ken とハイフネーションされます。 また、この例で、ta-ble は、ta<hyphen/>ble と書いたのと等価です。

hyphen要素によって綴りの変化するハイフネーションを指定することができます。次のようにハイフネーションされます。

例外辞書の指定元の単語ハイフネーション
ab<hyphen/>defabdefab-def
ab<hyphen no="c"/>defabcdefab-def
ab<hyphen pre="x"/>defabdefabx-def
ab<hyphen pre="x" no="c"/>defabcdefabx-def
ab<hyphen post="z"/>defabdefab-zdef
ab<hyphen no="c" post="z"/>defabcdefab-zdef
ab<hyphen pre="x" post="z"/>defabdefabx-zdef
ab<hyphen pre="x" no="c" post="z"/>defabcdefabx-zdef

以下の言語で、例外辞書を利用することができます。

コード 言語 単語構成文字
th tha タイ語 タイ文字

これらの言語では、例外辞書はハイフネーションのためではなく、行分割禁止の単語を指定しておくために用いられます。 単語は、それぞれの単語構成文字のみを含むことができます。 <exceptions> 中にハイフン文字や <hyphen> を指定することはできません。

TeXの辞書

AH Formatter V6.4 では、TeXの辞書によるハイフネーションも行うことができます。 TeXの辞書によるハイフネーションを行うには、オプション設定ファイルHyphenationOption="false" を指定します。 このとき、TeXの辞書によらないハイフネーション処理は行われなくなります。必要な言語に対応した辞書は、すべて用意しておく必要があります。この辞書は、FOPと同じ形式のXMLファイルです。Apacheのウェブサイトを参照してください。 AH Formatter V6.4 には、英語用のハイフネーション辞書(en.xml)だけがあらかじめ用意されています。

一部の言語だけでTeXの辞書によるハイフネーションを行いたいときは、オプション設定ファイルhyphenation-TeX に言語を指定してください。

TeXの辞書の名称と位置については、例外辞書を参照してください。

TeXのハイフネーション辞書の内容は hyphenation.dtd で 定義されます。hyphenation.dtd は、FOPのデストリビューションに含まれています。AH Formatter V6.4 ではインストールされたフォルダの hyphenation フォルダにインストールされます。以下は簡単な説明です。詳細は hyphenation.dtd をご覧ください。

要素位置内容
<hyphenation-info>ルート要素
<hyphen-char><hyphenation-info> の子要素 例外辞書データ(exceptions)中のハイフネーション文字を表す要素です。ハイフネーション文字はvalue属性で表されます。初期値は「-」(U+002D)です。組版結果中のハイフネーション文字は、XSL仕様のプロパティのhyphenation-characterで与えられます。
<hyphen-min><hyphenation-info> の子要素 ハイフネーションによる行分割が発生した場合に、before, after属性で単語の行分割位置の前後の最小文字数を与えます。beforeはXSL仕様のhyphenation-remain-character-countプロパティに、after属性はhyphenation-push-character-countプロパティに対応します。AH Formatter V6.4 はこれらのプロパティ値を使用するので、辞書中のhyphen-min要素は無視されます。
<classes><hyphenation-info> の子要素 等価文字クラスと定義されます。class要素のテキストは空白で区切られた文字のグループの集合です。実際にはグループは小文字・大文字の組み合わせで構成されます。例えば英語辞書(en.xml)では以下のようになっています。
aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ
<pattern><hyphenation-info> の子要素 空白で区切られたハイフネーションパターンの集合のデータ。ハイフネーションパターンはclassesで示されたグループの最初の文字(通常は小文字)と数字から構成されます。文字間の数字はハイフネーション可能性の強度(「hyphenation value」)を表します。
<exceptions><hyphenation-info> の子要素 ハイフネーション例外辞書のデータです。exceptions要素のテキストは空白で区切られたハイフネーション済み単語の集合です。ハイフンはhyphen要素で示されますが、hyphen-char要素で指定された文字を用いることもできます。ハイフネーション例外辞書は、ハイフネーションパターンによる処理ではハイフネーション位置が不適切な場合や、特定の単語に別のパターンのハイフネーションを適用したい場合に使用します。
<hyphen><exceptions> の子要素 フル機能のハイフン。pre、post、no の属性を持ちます。pre は単語の行分割が発生した場合に、ハイフネーション文字の前に挿入される文字列、post はハイフネーション文字の後に挿入される文字列、no は単語が行分割されない場合に現れる文字列を表します。hyphen要素は単語が行分割されたときに綴りが変化する場合に使用します。

制限事項

狭い領域で、ひとつの単語に複数回のハイフネーションが発生するとき、例外辞書に記述されたとおりの結果にならない場合があります。 技術的資料ハイフネーションを参照してください。