by WebSurfer
30. September 2025 16:25
今さらながらの話ですが、自分が使っている Xperia 10 V の Chrome および Edge で自分のブログを見ると、日本語は css で font-weight: bold; を指定しても太字にならないということに気が付きました。そのあたりについて少し調べたので備忘録として書いておきます。

上の画像の本文の部分の HTML ソースは以下のとおりですが、日本語の文字には font-weight: bold; も font-weight: 600; も効いていないのが分かるでしょうか?
<p style="font-weight: bold;">
Alice was beginning to get very tired of sitting by her sister
on the bank, and of having nothing to do
アリスは、姉のそばの土手に座っているのに、何もすることがないのに、
だんだん飽きてきました。
</p>
<div style="font-weight: 600;">
I'm heavy 私は重いです<br />
<span style="font-weight: lighter;">I'm lighter 私は軽い</span>
</div>
理由は Android 14 以前の OS のシステムフォントには日本語の太字がないからということで、Web デザイナなら知ってて当たり前のことらしいです。(汗)
もちろん Windows 10 PC のブラウザでは問題ありません。また、Android 15 ではフォントが改善され、日本語も太字で表示できるようになったそうです (参考: Android 15で日本語フォントが大幅改善)。家電量販店に置いてあった最新の Xperia 10, Pixcel 8 で試してみましたが、日本語も太字になることは確認できました。
自分の Xperia 10 V のオリジナルの OS は Android 13 でそれを Android 15 にアップデート済みですが、フォントのアップデートには対応してないようで、上の画像の通り日本語は font-weight: bold; で太字になりません。
「何を今さら、自分が書いたブログなんだから見たらわかっただろうに」と言われそうですね。でも、数日前までは普段自分のスマホで使っている Edge では font-weight: bold; で日本語も太字で表示されていたのです。なので、気が付きませんでした。
想像ですが、以前 Edge で日本語も太字で表示されていた時は文字を重ねて擬似的に太く見せるなどの手段が取られていた。Android 15 でフォントが改善されて日本語の太字も対応できるようになった。文字を重ねて擬似的に太く見せるなどの手段は必要なくなった。なので数日前に行われた Edge の自動アップデートで疑似的な手段は止めた。しかしながら、Xperia 10 V では太字フォントが無いのでダメ・・・ということではなかろうかと思っています。
違うかなぁ・・・ でも、数日前は font-weight: bold; で日本語も太字になっていたのは間違いないし、上記は当たらずとも遠からずだと思うのですが。
なお、自分の Xperia 10 V の Edge で見ても font-weight: bold; で日本語が太字になっているサイトがありましたが、たぶん、Web フォントで対応しているのだろうと思います。
by WebSurfer
17. March 2015 17:23
変数、メソッド、プロパティなどの識別子名に、見易さや保守性を考えて日本語を使うという話を時々聞きますが、言語仕様上許されているからと言って安易に使うと思わぬ副作用がありそうという話を書きます。
自分が気がついた例に限っての話ですが、それは ASP.NET MVC のモデルのプロパティ名、コントローラーのアクションメソッドの引数名です。
モデルのプロパティ名は html ソースでは name 属性に設定され、クライアント側でのユーザー入力の検証やサーバー側でのモデルバインディングに使われます。
具体的には次の通りです。
先の記事 コレクションのデータアノテーション検証 で紹介したモデル / ビュー / コントローラーのコードを見てください。そのモデルには CountryList と Name というプロパティ名が使われています。それを元に以下のようなビューを書くと、
@Html.LabelFor(m => m.CountryList[i].Name)
@Html.EditorFor(m => m.CountryList[i].Name)
@Html.ValidationMessageFor(m => m.CountryList[i].Name)
生成される html ソースは以下のようになります。
<label for="CountryList_0__Name">国名</label>
<input class="text-box single-line"
data-val="true"
data-val-length="国名 は 15 文字以内"
data-val-length-max="15"
data-val-required="国名 は必須"
id="CountryList_0__Name"
name="CountryList[0].Name"
type="text"
value="Italy" />
<span class="field-validation-valid"
data-valmsg-for="CountryList[0].Name"
data-valmsg-replace="true">
</span>
上記の CountryList と Name が日本語になった場合、jQuery ライブラリを使ったクライアント側での検証がうまく動くのか、ブラウザで form が submit されると
き name 属性がどうなるか、サーバー側できちんとモデルバインディングされるかが気がかりです。
モデルのプロパティ以外で思いつくものとしてはアクションメソッドの引数名があります。これもサーバー側でのモデルバインディングに関係します。
他にも予期できない副作用があるかもしれません。十二分に検証すれば済むかもしれませんが、そもそも余計な気苦労と不要な手間です。そこまでして日本語を使う理由はなさそうです。
クライアント側に影響がありそうな ASP.NET MVC アプリの識別子名で、日本語を使っても問題なさそうなのはコントローラーのアクションメソッド名ぐらいでしょうか?
例えば、以下のようにアクションメソッド名は日本語でも、ActionNameAttribute で英語名 Countries を付与すればブラウザからは Countries で呼べます。
[ActionName("Countries")]
public ActionResult 国リスト取得()
{
return View();
}
でも、やっぱり日本語を使うのは個人的にはお勧めではないです。例えば、Countries でなら呼べますが Countries では 404 エラーです。違いが分かりますか?
答は、名前の最後の s が半角 / 全角の違いということです。
そんなエラーはすぐ気がつくと思われるかもしれませんが、たとえ 1 分で気がついたとしても時間と労力の無駄には変わりないということで、やはり日本語は使用しない方がよいと自分は思います。