Принцип действия переноса и выключки
Процесс переноса и выключки можно рассматривать как диалог внутри компьютера, который происходит, пока вы набираете текст. Диалог начинается, когда нужно принимать решение обофорлллении конца строки (end-of-line decision). До этого момента, в случае простейшего сценария, программа просто считает ширины знаков и складывает их, а сумму вычитает из ширины полосы набора. И наступает момент, когда вы набираете слово, которое не умещается в оставшейся части строки. Пришло время решать.
Когда текущая строка набирается с рваным краем (т. е. тексту разрешается не заполнять строку полностью), этот диалог у края строки может быть простым и коротким. Для текста, показанного на рис. 10.2, он звучит следующим образом:
— Слово constitutes очень длинное и не умещается в строке полностью. Перенос возможен?
— Нет.
- Возможно ли изменение ширин знаков?
- Нет.
- Возможно ли сжатие межсловных и/шл межбуквенных пробелов?
- Да.
- Насколько можно сжимать межсловные пробелы?
- На 10%.
- Насколько можно сжимать межбуквенные пробелы?
- На 3%.
- Оставаясь в этих пределах, может ли слово constitutes уместиться на строке?
- Нет.
- Сохраняя пробелы неизменными, закончить строку после слова which и перейти на новую строку.
Процедура верстки в действии |
|
The unity of government which constitutes |
|
Флаговая выключка без переносов |
|
The unity of government which constitutes you one people is also now dear to you. |
|
Выключка по формату с переносами |
|
The unity of government which constitutes you one peopl^ is also now dear to you. |
РИС. 10.2. Функция переносов и выключки в действии. Здесь слово constitutes не умещается в отведенное место на строке. Какое принимается решение о разрыве строки, зависит от параметров переносов и выключки
В наборе с выключкой по формату (или по ширине) диалог становится более сложным. Для примера, изображенного на рис. 10.2, диалог может протекать примерно так:
— Слово constitutes очень длинное и не умещается в строке. Перенос возможен?
— Да.
— Перенос выполнять по словарю или по алгоритму?
— Разрешается перенос по словарю, перенос по алгоритму нет.
— Можно разбивать слово constitutes?
— Да: con-sti-tutes.
— Сколько слогов плюс дефис поместить в оставшемся пространстве?
— Один слог плюс дефис уместится без сжатия межсловных и/или межбуквенных пробелов.
— Разрешается ли сжатие пробелов?
— Да.
— Насколько можно сжимать межсловные пробелы?
— На 10%.
— Насколько можно сжимать межбуквенные пробелы?
— На 3%.
— Сохраняя эти ограничения, сколько слогов плюс дефис может уместиться на строке?
— Только один слог плюс дефис, даже после изменения межсловных и межбуквенных пробелов.
— Оставить один слог с обычным пробелом и прибавить дефис. Сколько пустого пространства осталось в строке?
— 2,115 пункта.
— Каков порядок распределения оставшегося пространства? Сначала в межсловные пробелы? Сначала в межбуквенные пробелы? Распределять равномерно между теми и другими?
— Сначала распределять между словами.
— Насколько можно увеличить межсловные пробелы?
— На 15%.
— Можно ли оставшийся пробел распределить среди слов без превышения установленных пределов?
— Да.
— Разбить оставшееся пустое пространство на пять равных частей и распределить их между словами. Начать новую строку.
И это всего лишь упрощенная последовательность решений, но она иллюстрирует некоторые ситуации, которые могут возникнуть во время работы программы, включая определение диапазона изменения пробелов между словами и буквами и перенос слов.