Познаковые расчеты
Процесс может показаться сложным, но этот короткий сценарий только иллюстрирует, как принимается решение об оформлении конца строки. До того, как вы введете первый знак, функция переносов и выключки уже вооружена массой информации, большей частью которой вы можете управлять.
Например, значение трекинга (tracking) будет влиять на пробелы между всеми знаками строки. (Более подробное описание того, как действует тренинг и как им управлять, см. в гл. 11.) Для каждого вводимого знака функция переносов и выключки использует значение трекинга для перерасчета ширин знаков, которые программа извлечет из шрифтового файла. Это, в свою очередь, определяет общий объем пространства, которое знаки занимают в строке (рис. 10.3). Трекинг не влияет на форму символов, а только на объем пространства, которое они занимают.
Кроме того, каждый раз, когда вы вводите знак, функция переноса и выключки старается обнаружить сочетание этого знака плюс предшествующего в таблице кернинга шрифтового файла. Если такая пара обнаруживается, то программа извлекает относительные значения (выраженные в долях кегельной), рассчитывает их абсолютные значения, исходя из величины кегля, и добавляет это значение
РИС. 10.3. Если представить знаки в их кегельных площадках, становится понятно, как трекинг влияет на верстку. Положительный трекинг добавляет пробелы между кегельными площадками, которые при обычном наборе просто примыкают друг к другу. Дополнительные пробелы измеряются в долях кегельной (em). Отрицательный трекинг заставляет кегельные площадки накладываться друг на друга, и знаки располагаются ближе друг к другу
Calvin Coolidge said that the business of America is busi - ness. But these days, with political pressures mounting on American businesses to be more socially active, and in so doing branching out well beyond their traditional areas of expertise, we might well add a corollary to Coolidge's aphorism. To wit, "The business of American business is business."
РИС. 10.4. При верстке текста построчно, когда не обращают внимания на то, как набраны строки до и после текущей строки, функция переносов и выключки может только ухудшить дело. В предпоследней строке приведенного примера неудачные пробелы и перенос в последнем слове. Если бы программа учитывала в процессе верстки весь абзац, то она нашла бы более приемлемые варианты разрыва строк (изменив пробелы между словами и буквами) и исключила указанные погрешности кернинга к общей ширине знака. (Кернинг более подробно рассматривается в гл. 11.)
Когда строка заполняется текстом, который она в состоянии вместить, последующий текст выталкивается (wraps) на следующую строку. Этот процесс продолжается непрерывно и динамично, поэтому, когда вы редактируете страницу текста и добавляете или удаляете фрагмент текста, достаточный, чтобы сдвинуть строки, то программа может реагировать на это с запозданием. Ведь каждая строка абзаца (нескольких абзацев) должна снова переверстаться с учетом переносов и выключки.