Chromeのフォントサイズは10px未満でも表示可能になっている

Chromeの最低フォントサイズは10pxではない

突然ですが問題です。

以下のようにCSSで「font-size: 8px;」を指定した場合、Chromeでは何pxのフォントサイズで表示されるでしょうか?

.fz08 {
  font-size: 8px;
}

正解はChromeは10px未満のフォントサイズが指定された場合は10pxで表示されるため…

答えは10px…ではないです。

フォントサイズは10px未満でも表示可能

以前のChromeでは確かに10px未満のフォントサイズは10pxで表示されていました。

しかし、Chromeのバージョン118から10px未満でも表示されるよう修正されました。

試しに以下のように10px未満のフォントサイズで指定しても、指定通りに表示されることが最新バージョンのChromeだと確認できます。

  • フォント 1px
  • フォント 2px
  • フォント 3px
  • フォント 4px
  • フォント 5px
  • フォント 6px
  • フォント 7px
  • フォント 8px
  • フォント 9px
  • フォント 10px
  • フォント 11px
  • フォント 12px
<ul>
  <li class="fz01">フォント 1px</li>
  <li class="fz02">フォント 2px</li>
  <li class="fz03">フォント 3px</li>
  <li class="fz04">フォント 4px</li>
  <li class="fz05">フォント 5px</li>
  <li class="fz06">フォント 6px</li>
  <li class="fz07">フォント 7px</li>
  <li class="fz08">フォント 8px</li>
  <li class="fz09">フォント 9px</li>
  <li class="fz10">フォント 10px</li>
  <li class="fz11">フォント 11px</li>
  <li class="fz12">フォント 12px</li>
</ul>
.fz01 {
  font-size: 1px;
}
.fz02 {
  font-size: 2px;
}
.fz03 {
  font-size: 3px;
}
.fz04 {
  font-size: 4px;
}
.fz05 {
  font-size: 5px;
}
.fz06 {
  font-size: 6px;
}
.fz07 {
  font-size: 7px;
}
.fz08 {
  font-size: 8px;
}
.fz09 {
  font-size: 9px;
}
.fz10 {
  font-size: 10px;
}
.fz11 {
  font-size: 11px;
}
.fz12 {
  font-size: 12px;
}

Chromeのフォントサイズの仕様変更は大々的に発表されたわけではないので、知らない人が多いようです。

これを知っていればChromeでフォントサイズを10px未満で表示させたいときに、transformを指定して小さくするという面倒な手間がなくなります。

/* transformを利用した8px指定 */
.foo {
  font-size: 10px;
  transform: scale(0.8);
  transform-origin: left;
}

/* 今後は普通にフォントサイズを指定するだけで良い */
.bar {
  font-size: 8px;
}

transformを使用してフォントサイズを小さくしたやり方だと、例えば8pxのフォントサイズを検索しても検出されないという問題があります。

もし既存のコード内にある場合は順次変更すると良いでしょう。