自动换行

单词边界，断字和硬空格

软回车通常放在一个完整单词的后面，或者紧接完整单词的标点符号后。但是，自动换行也有可能发生在连字号后。
有时候并不需要连字号后的自动换行，这时候可以通过使用所谓的非断字连字号代替一般的连字号。另一方面，也可以在单词中插入不可见的连字号（软连字号），使得文字处理软件可以在该处自动换行。
有时候，单词之间的自动换行是不必要的。这种情况下，可以通过单词之间的硬空格避免自动换行。

算法

自动换行是一个最优化问题。因应不同的需求，有不同的解决办法。

最小长度

自动换行的一个简单的实现是使用贪心算法：将尽可能多的单词放进一行里，直到所有的单词都已经放进去为止。这是很多现代文字处理软件的做法，如Microsoft Word和Open Office 。这个算法在追求最少行数的目标上能够达到最优化。下面是该算法的伪代码实现：

SpaceLeft := LineWidth
for each Word in Text
  if Width(Word) > SpaceLeft
    insert line break before Word in Text
    SpaceLeft := LineWidth - Width(Word)
  else
    SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
LineWidth指一行的宽度，SpaceLeft指一行中剩余的空格，SpaceWidth是一个空格的宽度，Text是输入的文本，Word是文本中的一个单词。