Skip to main content

resolve_em_lengths

Function resolve_em_lengths 

Source
pub fn resolve_em_lengths(value: &str, font_px: f32) -> String
Expand description

長さの値の中の em を、要素自身の文字サイズ font_px で px に置き換える。

【2026-10-04】配置エンジンは em を常に 16px で換算していた (layout/values.rs の parse_px_like)。CSS Values 4 §6.1.1 では、 font-size 以外のプロパティの em はその要素自身の計算済み font-size。 sugi-lab.net/smarthome.htm の .page-hero-content h1 { margin-top: 1em } (h1 は 40px)が 16px になり、見出し帯が Chrome より 24px 短かった。

  • rem は対象外(ルート基準で、別経路で 16px として正しく扱われている)
  • 省略記法(1em 0 2em)や calc(1em + 2px) の中も置き換える
  • 数値の直後が em で、その後ろが英数字でないときだけ単位とみなす
  • 端数は四捨五入。符号(-/+)は保つ

文字単位で走査する(このクレートは &str のバイト添字スライスを禁止している)。