2017-02-03 21 views
15

Я пытаюсь найти, что значение, установленное в свойстве CSS font-size, соответствует.Что действительно соответствует размеру шрифта?

Чтобы указать контекст, я хочу получить в CSS размер в em частей шрифта (выше высоты капитала и под базовым уровнем), который я знаю из его показателей OS/2. Блок em относится к данному font-size, а показатели OS/2 относятся к em-квадрату.

Что я ожидаю

Мои ожидания основаны на следующих ссылках. Я не нашел ничего более ясного или точного.

  1. Согласно W3C reference for font-size in CSS2.1, и как указано во всех Переполнение стека вопросов, которые я нашел по этой теме (here, here и here):

    Размер шрифта соответствует эм площади, концепция, используемая в типографии. Обратите внимание, что некоторые глифы могут кровоточить за пределами их квадратов.

  2. После нескольких познаниями я имею в типографике, то em square является весь квадрат метрик шрифта, в котором восходящий, нисходящий, пробелы, (и т.д. ...) линии определены. В показателях OS/2 размер em square - это размер самого шрифта (часто 1000 или 2048 UPM).

    Letter metrics

    Единственное объяснение, которое я нашел от W3C находится в old reference from 1997 for CSS1, и это согласуется с современным цифровым определением em square я использую:

    Некоторые значения, такие как ширина метрик, являются выраженные в единицах, которые относятся к абстрактному квадрату, высота которого является предполагаемым расстоянием между строками типа того же типа. Этот квадрат называется квадратом ЭМ. (...) Общие значения: 250 (Intellifont), 1000 (тип 1) и 2048 (TrueType).

Так что, если я понимаю, эти ссылки правильно, значение указано в font-size следует использовать для генерации весь em square шрифта, и мы должны быть в состоянии вычислить размер части шрифта из размера шрифта и показателей.

Например, с ...

.my-letter { 
    font-family: 'Helvetica Neue'; 
    font-size: 100px; 
    text-transform: uppercase; 
} 

... мы должны иметь em square из 100px, и потому, что Helvetica Neue имеет капитала Высота 714/1000 (sCapHeight в 2 таблицы/OS), капитал высота 71.4px.

Expected Letter

Что на самом деле происходит.

Сформированный em square является больше, чемfont-size (проверено на последних версиях Chrome, Firefox и Safari для Mac). Сначала я подумал, что браузер имеет другое определение em square и делает часть буквы, равной font-size, но я не нашел никаких показателей OS/2 (с или без восходящего, descender, пробелов ...), который соответствует ему.

Rendered Letter

Вы также можете увидеть this CodePen. Обратите внимание, что я использую line-height: 1;, чтобы выделить ожидаемый размер, но моя проблема связана с font-size («вынесенные чернила»), а не line-height («столкновение»). Это то, что я должен уточнить, потому что меня уже неправильно поняли несколько раз. line-height не проблема.


Поэтому у меня есть три вопроса:

  • Правильно ли я понял W3C ссылку, или я предполагаю, что то, что эти ссылки не сказали?
  • Если нет, то почему сгенерированный шрифт имеет em-square больше font-size?
  • Самое важное: Как я могу узнать размер рендеринга em-square (относительно font-size)?

Благодарим за помощь.

ответ

3

Ваше понимание ссылок W3C верно, но ваше понимание красной коробки не является.

Красная коробка не изображает em-square. Его высота - это сумма восхождения и спуска из метрик.

+0

Вы правы. Это означает, что: ** 1: ** Восхождение и спуск выходят за пределы площади. ** 2: ** высота х и высота капитала фактически не изменились. ** 3: ** Я могу вычесть расстояние между верхней/нижней частью коллизионного ящика и верхней/базовой линией капитала. ** 4: ** В шрифте (по крайней мере, для Helvetica Neue) нет метрик, которые я мог бы использовать, чтобы узнать реальное восхождение (например, верхний нижний регистр «l» или «h»). Я прав? – ncoden

+0

@ ncoden - Более-менее да. Восхождение и спуск * независимы * от em-квадрата. То есть, для любого заданного шрифта их сумма может быть больше, равна или меньше em-квадрата, поэтому они не обязательно «выходят из» em-квадрата, хотя для суммы кажется обычным быть больше, чем em-square – Alohci

+0

Стоит отметить, что хотя метрики шрифта содержат восхождение, спуск и высоту капитала, отдельные глифы не должны соответствовать этим метрикам - например, фактический капитал «А» может быть выше или короче, чем высота капитала и нижняя нижняя точка «o» может быть вычерчена выше или ниже базовой линии. – Alohci

3

Читать статью: Это действительно помогает аль много, чтобы понять размеры шрифта:

http://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align#lets-talk-about-font-size-first

+0

Ссылка на этот ответ - полностью подробный источник, он объяснил все странные вещи. Изображения, типографическая анатомия из Интернета непоследовательны и не имеют понятия. Но статья из этой ссылки полностью ясна, ориентирована на данные. Спасибо, что поделился. – Khoa