JeffreyFrancesco.org 公開日 タグ Tag Permalink 現在地 Facebook page Twitter RSS feed

Safari をバージョン 11.0 にアップデートして以降、Google AdSense のレポート画面が正しく表示されなくなった。フィルタを追加するためのエリアがものすごく縦長に伸びて、しかも後続の要素に重なるようにして表示される。

レポート画面のスクリーンショット

他にもいくつかのサイトで表示がおかしかったりレイアウト崩れが発生したので調査してみると、どうも特定の条件を満たす場合に line-height の計算値がおかしくなるバグがあるようだ。具体的にいうと次のような条件下で line-height が異常値となる。

  1. 環境設定の「これより小さいフォントサイズを使わない」が有効
  2. CSS で要素の line-height に単位付きの値が指定されている
  3. その要素の font-size が 0 など極端に小さい計算値となる1

いちおうデモを作ったので置いておく。自分が気がついた範囲内で AdSense レポート画面以外でこのバグの影響を受けてるものを挙げておくと、有名どころだと LINE に送るボタンがそう。貼ってる人も割といると思われるので、とりあえず外すなどの措置をしておいた方がいいかもしれない。LINE に報告しようと思ったけど、問題報告フォームが難解でどこに何をどう入力すればいいのか分からんかったので断念した。涙

ユーザ側でできる対策としてはせいぜい最小フォント指定を無効にしておくくらいしかないが、それだと困る人も当然いるだろうから、そう簡単に「オフにしろ」とはいいづらい。Safari 自体のアップデートもそのうち出るとは思うが、それまではとりあえず制作者側でも対処しておいた方がいいだろう。line-height を単位なし(数値のみ)にするか、font-size が普通サイズになるように調整するか、どちらか一方だけでいい。2

Apple への報告は…誰かやっておいて(他力本願


ちなみに自宅マシンはまだ OS アップグレードしてないので Sierra + Safari v11.0 の話。もし High Sierra だと違うとかだったら教えていただけるとありがたい。たぶん違わないような気はするけど。

追記

その後、会社のマシンを High Sierra にしたのでチェックしてみたところ同じ症状が出るのを確認した。やっぱり OS 関係なく Safari v11.0 自体の問題のようだ。とりあえず早くバグフィックスが出ますように…

追記

このバグは リリースの Safari v11.0.1 にて修正された。

  1. 厳密にいうと「これより小さいフォントサイズを使わない」で指定したサイズより小さければ影響を受ける。また、あくまでも計算値であり、その要素自体に直接サイズが指定されてなくても発生する。 

  2. font-size: 0 ってのはおそらく複数要素を inline-block にして横並びさせた時に発生する隙間を嫌っての指定だと思うのだけど、今じゃもうそういうのは親要素に display: flex で大抵間に合う。