テキストの折り返し(行折り返し、ワード折り返し、改行、または行区切りとも呼ばれる)は、テキストの一部を行に分割して、ページ、ウィンドウ、またはその他の表示領域の利用可能な幅に収まるようにすることです。テキスト表示では、行折り返しは、行がいっぱいになったときに新しい行に続くことで、各行がオーバーフローすることなく表示領域に収まり、水平スクロールなしで上から下にテキストを読むことができるようにします。ワード折り返しは、ほとんどのテキストエディタ、ワードプロセッサ、およびウェブブラウザの追加機能で、可能な限り単語内ではなく単語間で改行します。ワード折り返しにより、段落内に改行区切り文字をハードコーディング する必要がなくなり、さまざまなサイズのディスプレイにテキストの表示を柔軟かつ動的に調整できます。
ロレム・イプサム・ドルー・シット・アメット、コンセクテトゥール・アディピシング・エリート、セド・ド・エイウスモッド・テンポラ・インシディダント・ユー・レイバーとドローレ・マグナ・アリクア。必要最小限の費用で、必要な作業をすべて行って、結果を得ることができます。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eufugiat nulla pariatur.例外的に、問題を提起することはできませんが、責任を負う義務を負うものではありません。
ロレム・イプサム・ドルー・シット・アメット、コンセクテトゥール・アディピシング・エリート、セド・ド・エイウスモッド・テンポラ・インシディダント・ユー・レイバーとドローレ・マグナ・アリクア。必要最小限の費用で、必要な作業をすべて行って、結果を得ることができます。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eufugiat nulla pariatur.例外的に、問題を提起することはできませんが、責任を負う義務を負うものではありません。
ロレム・イプサム・ドルー・シット・アメット、コンセクテトゥール・アディピシング・エリート、セド・ド・エイウスモッド・テンポラ・インシディダント・ユー・レイバーとドローレ・マグナ・アリクア。必要最小限の費用で、必要な作業をすべて行って、結果を得ることができます。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eufugiat nulla pariatur.例外的に、問題を提起することはできませんが、責任を負う義務を負うものではありません。
ソフトリターンまたはソフトラップは、行折り返しまたはワードラップ(自動または手動)によって生じる改行であり、ハードリターンまたはハードラップは、新しい段落を作成する意図的な改行です。ハードリターンでは、段落区切りの書式設定(インデントまたは垂直方向の空白)を適用できます(そして適用すべきです)。ソフトラップは、ユーザーのウィンドウ幅や余白設定の調整に応じて行の長さを自動的に調整するもので、最新のテキストエディタ、ワープロソフト、および電子メールクライアントの標準機能です。ワードラップが自動的に行われる場合は、手動でソフトブレークを行う必要はありません。そのため、「Enter」キーを押すと通常はハードリターンが実行されます。
あるいは、「ソフトリターン」とは、段落区切りではない、意図的に保存された改行を意味する場合もあります。例えば、郵便物の宛名を複数行で印刷することはよくありますが、それらの複数行は一つの段落として理解されます。住所の単語を適切な長さの行に分割するために、改行が必要となるのです。
現代のグラフィカルワードプロセッサであるMicrosoft WordやLibreOffice Writerでは、各段落の間に改行()を入力することが求められます。最初の行のインデントや段落間の間隔などの書式設定は、改行が区切りを示す箇所に適用されます。段落以外の改行(ソフトリターン)は、+キーまたはメニューから挿入でき、テキストを新しい行から開始する必要があるものの、新しい段落の開始に伴うその他の副作用は望ましくない場合に使用します。↵ Enter⇧ Shift↵ Enter
テキスト指向のマークアップ言語では、ソフトリターンは通常、マークアップタグとして提供されます。例えば、HTMLには<br>タグがあり、これは前述のワープロソフトにおけるソフトリターンと同じ役割を果たします。
Unicode改行アルゴリズムは、新しい行を開始するのに適切な位置である、改行機会と呼ばれる一連の位置を決定します。実際の改行位置は、アルゴリズム自体ではなく、アルゴリズムを呼び出す上位レベルのソフトウェアによって改行機会の中から選択されます。これは、テキストが表示されるディスプレイの幅と、表示されるテキストを構成するグリフの幅を知っているのは上位レベルのソフトウェアだけだからです。[ 1 ]
Unicode文字セットは、ソフトリターンとハードリターンの意味を表すために、行区切り文字と段落区切り文字を提供します。
ソフトリターンは通常、単語の末尾、または単語の後に続く句読点の後に挿入されます。しかし、単語内のハイフンの後にもワードラップが発生する場合があります。これは望ましくない場合があり、通常のハイフンの代わりにノンブレークハイフン(ハードハイフン)を使用することで防ぐことができます。
ハイフンを含まない単語は、ソフトハイフンを含めることで折り返し可能にすることができます。単語が折り返されない場合(つまり、複数行に分割されない場合)、ソフトハイフンは表示されません。しかし、単語が複数行に折り返される場合は、ソフトハイフンの位置で折り返され、単語が分割される最上行に目に見えるハイフンとして表示されます。(まれに、ハイフンを表示せずに複数行に分割することで折り返し可能にする単語がある場合、単語内の許容される分割箇所に幅ゼロのスペースが挿入されます。)
隣接する単語間での折り返しが望ましくない場合があります。そのような場合は、通常のスペースではなく、ハードスペースまたは改行なしスペースを単語間に使用することで、折り返しを防止できます。
中国語、日本語、韓国語では、通常、漢字の前後に単語の折り返しが可能ですが、特定の句読点文字は新しい行を開始することはできません。[ 2 ]日本語の仮名は、漢字と同様に扱われるため、単語が次の行に続くことを明示的に示すことなく、単語が分割されることがあります。
しかし、特定の状況下では、ワードラップは望ましくありません。たとえば、
既存のワープロソフトや組版ソフトのほとんどは、上記のいずれのシナリオにも対応できません。
CJKの句読点は、上記のような特殊な状況と同様の規則に従う場合もあれば、従わない場合もあります。それはCJKの改行規則によります。
ワードラップは最適化問題である。最適化対象に応じて、異なるアルゴリズムが用いられる。
単語の折り返しを簡単に行う方法として、可能な限り多くの単語を1行に配置し、配置する単語がなくなるまで次の行に移って同じことを繰り返す貪欲アルゴリズムを使用する方法があります。この方法は、 LibreOffice WriterやMicrosoft Wordなど、多くの最新のワープロソフトで使用されています。このアルゴリズムは常に最小限の行数を使用しますが、行の長さが大きく異なる場合があります。以下の擬似コードは、このアルゴリズムを実装したものです。
SpaceLeft := LineWidth テキスト内の各単語について (単語の幅 + スペースの幅) > 左のスペースの場合 テキスト内の単語の前に改行を挿入します SpaceLeft := LineWidth - Width(Word) それ以外 SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
ここでLineWidth、 は行の幅、SpaceLeftは行に残っている埋めるべきスペースの幅、SpaceWidthは単一のスペース文字の幅、Textは反復処理する入力テキスト、 はWordこのテキスト内の単語です。
TeXで使用されている別のアルゴリズムは、行末の空白の長さの二乗の合計を最小化することで、必ずしも二乗の空白を最小化するとは限らない貪欲アルゴリズムよりも、より美的に好ましい結果を生み出す。
1955年にウェスタンユニオンが開発した「ページプリンタ制御ユニット」では、原始的な改行機能が使用されていました。このシステムはプログラム可能なデジタルコンピュータではなくリレーを使用していたため、データバッファなしで実装できるシンプルなアルゴリズムが必要でした。ウェスタンユニオンのシステムでは、各行は58文字目の後に現れる最初のスペース文字で、またはスペース文字が見つからない場合は70文字目で改行されました。[ 3 ]
行分割のための貪欲アルゴリズムは、ドナルド・クヌースが1977年に未発表のメモで自身のTeX組版システムを説明した際に概説した動的計画法よりも古く[ 4 ]、後にクヌースとプラス(1981)によってより詳細に発表された[ 5 ] 。
単に改行を防ぐことが目的であれば、WORD JOINER を使用する必要があります。