Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> Типографика / Кегль шрифта: не всё так просто
Decker
сообщение 20.2.2011, 1:51
Сообщение #1


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Кегль шрифта — одна из вещей, про которые вроде бы всем всё понятно, а на самом деле — совсем наоборот.



Вот, например, строка символов, каждый из которых имеет кегль 36 пикселов:







Шрифты разные, а кегль — одинаковый. Даже тире, запятая и цифры в верхнем индексе имеют кегль 36 пикселов, ни больше ни меньше.



Спрашивается, какая же величина у каждого из этих знаков равна 36 пикселам? От какой точки до какой нужно измерить расстояние, чтобы получить это число?



Правильный ответ: ни от какой ни до какой. Ни у одного из этих знаков никакое мыслимое измерение не составляет 36 пикселов.



Какой же тогда смысл в этой величине? Или поставим вопрос иначе: как связан формально заданный кегль шрифта (например, 36 пикселов) с реальными размерами символов (например, на экране)? Давайте разберёмся.







В былинные времена полоса набора складывалась из отдельных литер — металлических брусочков с зеркальными формами букв и других символов. Кеглем называлась высота литеры. На рисунке из Большой советской энциклопедии она обозначена буквой «г»:







В каждом шрифте все литеры имели одинаковую высоту, она и считалась кеглем шрифта. При этом размеры самих букв могли широко варьироваться. Не было стандартов о том, сколько процентов от кегля должен составлять рост прописной или строчной буквы. Случалось, что буква в одном шрифте кегля 9 пунктов имела такой же размер, как эта же буква в другом шрифте кегля 11 пунктов.



Если бы текст в моём примере был создан металлическим набором, литеры складывались бы приблизительно так:







Здесь важно, что высота всех литер одинакова, несмотря на разные шрифты и совершенно разнокалиберные размеры самих символов. В этом и состоит смысл кегля при старорежимном наборе.







Однако компьютерные шрифты — другое дело. Посмотрим, например, как отображается на веб‑странице фрагмент сплошного текста шрифтом Calibri, кеглем 16 пикселов:







А теперь во второй строке возьмём слова «за истиной» и поменяем их шрифт на Arial Unicode MS. Кегль остаётся прежним — 16 пикселов, остальные свойства шрифта тоже не трогаем:







Произошёл сюрприз: высота строки разъехалась. Будь это металлический набор, такого не могло бы случиться: мы ведь не меняли кегль шрифта и тем более междустрочный интервал. В чём же дело?







Внутри векторного компьютерного шрифта (например, TrueType или PostScript) все размеры и расстояния задаются относительно абстрактного кегля (em). Например, в шрифте Calibri контур буквы «Ф» имеет габариты 0,57 Г— 0,54 em. (Более точно — 1171вЃ„2048 Г— 1110вЃ„2048 em.) При выводе символа на экран или на печать все размеры масштабируются пропорционально заданному кеглю. Например, если «Ф» выводится кеглем 16 пунктов, то её реальные габариты будут (16 в€™ 0,57) Г— (16 в€™ 0,54) ≈ 9,15 Г— 8,67 пунктов. (По крайней мере, если не учитывать погрешности устройства вывода и специальные эффекты вроде сглаживания.)



Конкретные пропорции символов и их размеры относительно кегля остаются на усмотрение разработчика шрифта. Теоретически, он может задать высоту символа хоть в тысячу раз больше или меньше кегля — никаких технических или административных ограничений нет. На практике шрифтовые мастера руководствуются здравым смыслом, отраслевыми традициями, собственным опытом и чувством гармонии. В большинстве компьютерных шрифтов, как и металлических, рост строчных букв варьируется примерно от 0,40 до 0,55 кегля, а рост прописных — от 0,65 до 0,72 кегля.



Мы разобрались, как связаны видимые размеры букв с заданным кеглем шрифта, но остаётся неясным, что произошло с междустрочным интервалом.







В металлических шрифтах «жизненное пространство» символа ограничено физической прямоугольной площадкой литеры, с конкретной высотой и шириной. В цифровых шрифтах подобной площадки не существует. Контуры символов технически могут расползаться сколь угодно далеко по горизонтали и вертикали, пересекаясь с другими символами в этой же строке или окружающих строках.



Тем не менее, с каждым шрифтом связан набор вертикальных метрик, которые влияют на высоту строки.



Например, мой браузер ориентируется на свойства usWinAscent и usWinDescent, характерные для шрифтов TrueType. Эти свойства задают высоту частей «кегельной площадки» соответственно над и под линией шрифта (базовой линией). Высота строки по умолчанию равна сумме этих величин.







Повторю, что это всего лишь условные ограничители. Хотя большинство обычных букв и цифр умещаются между usWinAscent и usWinDescent, в принципе символы имеют право как угодно выступать за них, а то и вовсе целиком отображаться за их пределами.



В каждом шрифте — свои собственные usWinAscent и usWinDescent. Нет никаких формальных правил о том, чему должна равняться каждая из этих величин или соотношение между ними. Например, в шрифте Calibri usWinAscent и usWinDescent равны соответственно 0,95 и 0,27 кегля, а в Arial Unicode MS — 1,07 и тоже 0,27 кегля. Высота строки в Calibri получается 1,22, а в Arial Unicode MS — 1,34 кегля. Поэтому строка в нашем примере раздвинулась, чтобы уместить «кегельную площадку» нового шрифта:







В большинстве шрифтов usWinAscent составляет от 0,9 до 1,1 кегля, usWinDescent — от 0,2 до 0,3 кегля. Полная высота строки обычно варьируется от 1,1 до 1,3 кегля, что согласуется с простонародными представлениями о «стандартном» интерлиньяже в 120 %.



Таким образом, исходный пример складывается из разнородных «кегельных площадок». У каждой из них — свои независимые размеры, и все площадки нанизаны на общую линию шрифта, как птицы на провод. А тридцати шести пикселов нигде и нету.











Значения usWinAscent и usWinDescent — не единственные вертикальные метрики. Например, стандарт OpenType рекомендует использовать для расчёта высоты строки три другие величины: sTypoAscender, sTypoDescender и sTypoLineGap. Приложения Mac ориентируются на свои собственные Ascender, Descender и LineGap, а в Linux’е шрифты отрисовываются вообще какой‑то нечеловеческой магией.



Итак, если в докомпьютерные времена кегль шрифта был одним из измерений реальной физической литеры, то теперь кегль — абстрактный ориентир, относительно которого отсчитываются различные размеры виртуальных «литер».
Original source: habrahabr.ru (comments).

Читать дальше


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 29.4.2024, 7:36
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования