カスタム フォントにのみ適用するハイフネーション ルールのカスタム セットを指定する方法を教えてください。

カスタム フォントにのみ適用するハイフネーション ルールのカスタム セットを指定する方法を教えてください。

私は架空の言語の文法を作成しており、この言語用にカスタム フォントを作成しました。このフォントには、文字と合字が前の文字に重なって、より複雑な「文字」をより少ないグリフ セットで作成するシステムがあります。LaTeX が前の文字に重なるはずの文字の前にある単語をハイフンでつなぐと、見た目が非常に悪くなります。私は、分断されている特定の単語に気付いたときに、手動で \mbox で囲むことでこれを「解決」してきましたが、明らかにこれは永久的な解決方法ではありません。このカスタム フォントで書かれたテキストにのみ適用されるカスタム ハイフン ルール セットを指定するにはどうすればよいでしょうか。「単語をハイフンでつながず、スペースでのみ改行する」という単純なルールでも機能しますが、通常の英語のテキストを通常どおりハイフンでつなぐようにしたいのです。問題になるかどうかはわかりませんが、このフォントには合字もたくさん含まれていますが、合字を形成する必要がある 2 つの文字の間にある単語を LaTeX がハイフンでつなごうとしているのに気付いたことはありません。

答え1

フォントを切り替えるときに、既存の nohyphen 言語またはカスタム パターンを定義した言語のいずれかに切り替えます。luatex を使用している場合を除き、パターンを読み込むには、通常の tex 実行にパターンを読み込むことができないため、カスタム フォーマットを構築する必要があります。

おそらく最も簡単なのは、パターンを使用せずに、デフォルトでハイフンなしになり、\hyphenationハイフンを許可する単語に を使用することです。

\documentclass{article}

\showhyphens{football}% hyphenates in english
\newlanguage\something
\language\something
\showhyphens{football}% but not here
\hyphenation{foo-tball}
\showhyphens{football}% but does now
\language0
\showhyphens{football}% back to english

\begin{document}

{\language\something\ttfamily % your font
  stuff here
  }

\end{document}

ログを表示

Underfull \hbox (badness 10000) in paragraph at lines 3--3
[] \OT1/cmr/m/n/10 foot-ball

Underfull \hbox (badness 10000) in paragraph at lines 6--6
[] \OT1/cmr/m/n/10 football

Underfull \hbox (badness 10000) in paragraph at lines 8--8
[] \OT1/cmr/m/n/10 foo-tball

Underfull \hbox (badness 10000) in paragraph at lines 10--10
[] \OT1/cmr/m/n/10 foot-ball

新しい言語では、ハイフネーションポイントを指定した単語を除いて、すべてのハイフネーションが無効になっていることを示しています。

関連情報