code などの一部の要素が間延びする問題 (Android 他)

Android のロゴ

Android の標準ブラウザでページを表示すると、code 要素などの一部の要素が間延びして、余白ができる問題があります。このとき、この余白は margin や padding 要素に依存しません。 この問題が起きる条件は複雑ですが、フォントの種類と text-rendering プロパティが原因で発生するようです。

text-rendering: optimizeLegibility はフォントのカーニングを自動調整するためのプロパティと値です。カーニングとは、フォント間の間隔を調整することです。

問題の調査

フォントがカーニングに対応していない場合、Android のブラウザで不具合が起きるということになります。 今回この現象を確認したのは、Android 4.2 にプリインストールされているブラウザです。 他に同 Android バージョン上で動作させたChrome などでも検証しましたが、この問題は起こりませんでした。

また、次のようなことが確認できています。

  • p 要素に含まれ、特定のフォントを指定した code 要素などに発生する問題である。
  • フローコンテンツとして他に隣接するテキストのない、独立した要素にはこの問題は起きない。

極めて特異な現象であることは間違いありませんが、text-rendering プロパティの設定が普及した後は、 組み合わさるフォントの種類の多さと相まって、このような問題が多発するかもしれません。