備忘録

気になったこと、調べたこと、わからなかったことなど..

【HTML】テキストの縦ラインがずれる問題

cakePHP2でメール送信をする機能を作成していた時に、同じ文章を送っているのに端末によってメールのレイアウトがずれていて 修正につまってしまいました。

事象

■端末A

f:id:omomo_memo:20210510172824p:plain

■端末B

f:id:omomo_memo:20210510172837p:plain

こんな感じに、縦がずれてしまいました。

原因

端末Aと端末Bで受け取るメーラーが異なり、表示フォントの違いが原因でした。

詳細

フォントには「等幅フォント」と「プロポーショナルフォント」の2種類あります。

等幅フォントとは、文字の幅が均一であるフォントです。 それに対して、文字によって幅が異なるフォントがプロポーショナルフォントです。 可変幅フォントとも言うそうです。

端末Aの画像はくだもの名のところ、文字の幅が同じですが、端末Bではずれているのがわかります。

解決策

今回はメールを送ろうとしていたので、テキスト形式のメールではなくhtml形式でメールを送り、 フォントを指定することで解決しました。

<?php 
$Email = new CakeEmail();
$Email ->emailFormat('html');
?>

emailFormatをhtmlに設定してあげて、htmlコードで本文を送信すればOKです。 WindowsMacで搭載しているフォントが異なるので、そこだけ注意。