ハイフネーション

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

対応言語

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

コード言語単語構成文字
afafr南ア公用オランダ語ラテン文字とアポストロフィ
bgbulブルガリア語キリル文字
cacatカタロニア語ラテン文字とアポストロフィとピリオドと中点
cscesチェコ語ラテン文字
cycymウェールズ語ラテン文字とアポストロフィ
dadanデンマーク語ラテン文字とアポストロフィ
dedeuドイツ語(含スイス)ラテン文字とアポストロフィ
elellギリシャ語ギリシャ文字
eneng英語ラテン文字とアポストロフィ
en-USeng-US米国英語ラテン文字とアポストロフィ
eoepoエスペラント語ラテン文字
esspaスペイン語ラテン文字
etestエストニア語ラテン文字
eueusバスク語ラテン文字
fifinフィンランド語ラテン文字
frfraフランス語(含カナダ)ラテン文字とアポストロフィ
gagleアイルランド語(含エール)ラテン文字とアポストロフィ
hrhrvクロアチア語キリル文字またはラテン文字
huhunハンガリー語ラテン文字
idindインドネシア語ラテン文字とアポストロフィと数字の2
isislアイスランド語ラテン文字
ititaイタリア語ラテン文字とアポストロフィ
lalatラテン語ラテン文字
ltlitリトアニア語ラテン文字
lvlavラトビア語ラテン文字
msmsaマレー語ラテン文字とアポストロフィと数字の2
mtmltマルタ語ラテン文字とアポストロフィ
nbnobノルウェー語(ブークモール) ラテン文字とアポストロフィ
nlnldオランダ語 / フラマン語ラテン文字とアポストロフィ
nnnnoノルウェー語(ニーノシュク) ラテン文字とアポストロフィ
nonorノルウェー語ラテン文字とアポストロフィ
plpolポーランド語ラテン文字
ptporポルトガル語(含ブラジル)ラテン文字
roronルーマニア語(含モルダビア)ラテン文字とアポストロフィ
rurusロシア語キリル文字
skslkスロバキア語ラテン文字とアポストロフィ
slslvスロベニア語ラテン文字とアポストロフィ
srsrpセルビア語キリル文字またはラテン文字
svsweスウェーデン語ラテン文字とアポストロフィ
swswaスワヒリ語ラテン文字とアポストロフィ
ththaタイ語タイ文字
trturトルコ語ラテン文字
ukukrウクライナ語キリル文字

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

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

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

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

  • RFC1766 で定義された言語タグに拡張子 .xml を付けたものです。言語タグは、ISO 639-2 の言語コードと ISO 3166 の国名コードを、ハイフンで結んだものです。言語コードのみのこともあります。ファイル名にはハイフンの代わりに下線を使うこともできます。
  • ファイル名に与える言語コードは、2文字コードが存在するときはそれを、そうでないときは Terminologyコードを指定してください。国名コードも、2文字コードが存在するときはそれを指定してください。

例えば、de.xmlen_US.xml などです。xml:lang="nl-BE" の場合、次の順序で辞書が探されます。xml:lang="nld-BEL" と指定されていたとしても同様です。

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

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

要素位置内容
<hyphenation-info>ルート要素
<hyphen-char><hyphenation-info> の子要素<exceptions>要素中で、<hyphen/> の代替となるハイフネーション文字を表す要素です。ハイフネーション文字はvalue属性で表されます。初期値は「-」(U+002D)です。
<hyphen-min><hyphenation-info> の子要素ハイフネーションによる行分割が発生した場合に、before, after属性で単語の行分割位置の前後の最小文字数を与えます。 beforeはXSL仕様の hyphenation-remain-character-count プロパティに、after属性は hyphenation-push-character-count プロパティに対応します。AH Formatter V7.2 は、<hyphen-min> の指定をこれらのプロパティの初期値に利用します。 オプション設定ファイルhyphen-min を参照してください。
<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 hyphen-min EMPTY>
<!ATTLIST hyphen-char before NMTOKEN #IMPLIED><!-- digits -->
<!ATTLIST hyphen-char after  NMTOKEN #IMPLIED><!-- digits -->

<!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>

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

例外辞書の指定元の単語ハイフネーション
ab<hyphen/>defabdefabdef
ab<hyphen no="c"/>defabcdefabdef
ab<hyphen pre="x"/>defabdefabxdef
ab<hyphen pre="x" no="c"/>defabcdefabxdef
ab<hyphen post="z"/>defabdefabzdef
ab<hyphen no="c" post="z"/>defabcdefabzdef
ab<hyphen pre="x" post="z"/>defabdefabxzdef
ab<hyphen pre="x" no="c" post="z"/>defabcdefabxzdef

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

<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 と書いたのと等価です。

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

コード言語単語構成文字
kmkhmクメール語 クメール文字
lolaoラーオ語 ラーオ文字
mymyaビルマ語(ミャンマー語) ビルマ文字
ththaタイ語タイ文字

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

AH Formatter V7.2 には、オランダ語の例外辞書 nl.xml と、タイ語の例外辞書 th.xml が同梱されています。 V7.2

TeXの辞書

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

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

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

TeXのハイフネーション辞書の内容は hyphenation.dtd で 定義されます。hyphenation.dtd は、FOPのデストリビューションに含まれています。AH Formatter V7.2 ではインストールされたフォルダの 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 V7.2 は、<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要素は単語が行分割されたときに綴りが変化する場合に使用します。

SOFT HYPHENAH Formatter V7 サンプルFO集ハイフネーション処理と SOFT HYPHEN V7.2

Unicode仕様( 5.4 Use of Soft Hyphen)には、「SOFT HYPHEN の含まれる単語は習慣的には SOFT HYPHEN の位置以外でハイフネーションされない」と書かれています。AH Formatter V7.2 は SOFT HYPHEN(U+00AD)の含まれた単語をそのように処理します。つまり、辞書によるハイフネーションは行いません。 しかし、SOFT HYPHEN では綴りの変化するようなハイフネーションを表現することはできません。複雑なハイフネーションは、単語中に SOFT HYPHEN を含めず、例外辞書にハイフネーションを指定する必要があります。

hyphenate="false" のときでも SOFT HYPHEN の位置でのハイフネーションが起こります。hyphenate="none" のときは SOFT HYPHEN の位置でもハイフネーションは起こりません。 axf:soft-hyphen-treatment="preserve" のときは hyphenate="none" に強制されます。

制限事項

  • <fo:inline> などの含まれる次のようなものは、ひとつの単語とはみなされません。これは3つの単語としてそれぞれ独立にハイフネーション処理されます。

    foo<fo:inline>bar</fo:inline>baz

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

  • U+200B や U+200C の挿入されている位置で行分割が起こったとき、U+200B ではそこでハイフネーションはされませんが、U+200C ではハイフネーションが起こります。