Перенос и выключка с учетом нескольких строк
Большинство программ использует построчные перенос и выключку, потому что это легче и быстрее, чем обрабатывать несколько строк одновременно. В последнем случае перенос и выключка становятся необычайно сложным процессом. Для того чтобы достичь оптимальных пробелов во всем абзаце, программа выполняет переносы и выключку, постоянно оглядываясь, не превышена ли плотность данной строки по сравнению со сверстанными строками.
Если программа, следуя правилам переноса и выключки, попадает в тупик, например, получает текущую строку несколько разреженнее или плотнее других, то она возвращается назад, чтобы изменить значения пробелов в предыдущих строках, переверстывая их, и тем самым устранить проблему, возникшую в текущей строке (рис. 10.5).
Такое движение взад-вперед требует значительного времени и компьютерных ресурсов, зато и результат гораздо лучше, чем у построчных переноса и выключки. Нагрузку компьютера можно уменьшить, регулируя диапазон строк, которые программа просматривает одновременно. Диапазон обрабатываемых строк все время меняется: например, получив значение 20 строк, программа работает с текущей строкой плюс 19 предыдущих строк. Другими словами, она не обрабатывает дискретные блоки по 20 строк, а каждый раз усредняет относительно текущей строки значения пробелов в последних 20 строках, которые уже сверстаны.
Построчная выключка (H&J)
If a box is square, it is obvious that it cannot, strictly speaking, be more square. Nevertheless, forms like fullest, rounder, more perfect, etc., are in general use colloquially.
Многострочная выключка (H&J)
If a box is square, it is obvious that it cannot, strictly speaking, be more square. Nevertheless, forms like fullest, rounder, more perfect, etc., are in general use colloquially.
РИС. 10.5. В левой колонке программа выполнила перенос и выключку построчно, поэтому первая строка получилась сжатой, а вторая разреженной. Программа не может перенести слово square для исправления ситуации, и это вынуждает ее оставить строку ослабленной. В правой колонке весь абзац верстался программой как единое целое. Обрабатывая тот же текст, она слегка разрядила первую строку и перенесла одно слово, чтобы чуть-чуть сжать вторую строку
Пока немногие программы предлагают описанную возможность, но результат этой технологии столь великолепен, что, возможно, она станет стандартной во всех профессиональных наборных системах и программах верстки.