Ответ 1
10.6.1 Встроенные, не замененные элементы
Свойство 'height' не применяется. Высота области содержимого должна основываться на шрифте, но в этой спецификации не указывается, как.
Как это бывает, высота, в отличие от высоты строки, не замещенного встроенного элемента, очень мало влияет на что-либо еще, поэтому браузеры могут свободно сообщать о том, что им нравится здесь.
Однако небольшая обратная инженерия может быть поучительной.
Если мы посмотрим на метрики шрифтов для Times New Roman, мы увидим EM размер 2048, WinAscent 1825 и WinDescent 443. Суммируйте восхождение и спуск, разделите его на размер EM, умножьте на размер шрифта (20px ) и округляем до целого числа, и получаем 22px.
Взяв Arial в качестве другого шрифта, мы имеем размер EM 2048, WinAscent 1854 и WinDescent 434. Повторите расчет, и мы снова получим 22px.
А как насчет другого шрифта? Tahoma имеет размер EM 2048, WinAscent 2049 и WinDescent 423. Повторите расчет, и на этот раз мы получим 24px. И эй престо, если вы попробуете свой JsBin с шрифтом Tahoma, Firefox действительно показывает высоту 24px.
Метки шрифта выше были получены при загрузке шрифтов в Type Light 3.2.
Не убедительно, но разумное предположение о том, как все это работает.
Возможно ли сделать его высоким 20px без использования встроенного блока?
Предполагая, что вышесказанное верно, вы сможете достичь этого, используя собственный шрифт и изменяя метрики шрифта этого шрифта. Я бы не хотел, чтобы предсказать эффект постукивания делать это, хотя.