ArtSaltのサイドストーリー

音楽、フリーウェア、WEBサービス、食べものなどに関する日記。トラックバック、コメント歓迎。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HTMLのlang属性とFirefox

このようなHTMLソースを例にとる。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift-jis" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<META name="author" content="ArtSalt">
<title>○○ニュース</title>
</head>
<body>
<p>おはようございます。おやすみなさい。</p>
</body>
</html>

ご覧のとおり、HTML要素のlang属性を en-us にしている例である。このときFirefoxはserif系のフォントについて prefs.js のfont.name.serif.x-western の値を参照する。その値が "Times New Roman" であれば Times New Roman を用いる。

HTML要素のlang属性が ja であれば font.name.serif.x-western ではなく font.name.serif.ja の値が参照される。その値が「MS P明朝」であればMS P明朝が用いられる。

ここまでは当たり前の話であり、納得できる。不思議なのはここから。

ではlang属性が指定されていなければどうなるか? やはり font.name.serif.ja の値が参照される。つまりFirefoxは「lang属性が何も指定されていなければその文書の当該要素の言語は日本語である」という判断を下すのだ。

しかしオイラの使ってるFirefoxのユーザ・エージェントを「確認君」で見ると、

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12

になっているんだよなあ。さらに prefs.js の intl.accept_languages は "en-us,en,ja" の順番になっている。ひょっとしてFirefoxはOSの何らかの設定(WindowsXPの「地域と言語のオプション」とか)を参照してHTML文書の言語を決定しているのかしら?

なんでこんな細かいことを気にするかというと、lang属性を指定していないWebサイトが多くて英語のWebページが日本語用のフォントで表示されてしまうからだ。たとえば New York Times はHTML要素やBODY要素だけでなくあらゆる要素でlang属性を全く指定してないから日本語用のフォント(font.name.serif.ja の値)になってしまう。

<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml">

他方 Wall Street Journal はHTML要素でlang属性をちゃんと記述しているから正しく英語用のフォント(font.name.serif.x-western の値)でページが表示される。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">

念のためFirefoxの新しいプロファイルで再現するかどうか実験したが結果は同じだった。Firefoxを使い始めて4年ぐらいたつけど今ごろになってこういう仕様(?)に気づいたよ。

結論

  • HTMLのlang属性が en-us とか en であればFirefoxはserif系のフォントとして prefs.js の font.name.serif.x-western で指定されたフォントを使う。これは納得できる。
  • HTMLのlang属性が ja であればFirefoxはserif系のフォントとして prefs.js の font.name.serif.ja で指定されたフォントを使う。これも納得できる。
  • HTMLのlang属性が記述されていなければFirefoxはserif系のフォントとして prefs.js の font.name.serif.ja で指定されたフォントを使う。不思議だ。

関連

  • Language information and text direction (ja) @ HTML 4.01 Specification (ja)
    そもそもlang属性って何よ?ということを説明。ブロックレベル要素だけでなくインライン要素で使うこともあるんだとか。へー。
Google
WWW ArtSaltのサイドストーリー
Web site (optional)
Comment - Need to type CAPTCHA, an image of distorted Japanese Hiragana or Katakana afterward.
Password - Not allowed to modify your comment later if password not entered.
On secret mode?
 

http://art2006salt.blog60.fc2.com/tb.php/1197-3139623a

このブログについて

最近のエントリ

カテゴリー
あわせて読みたいブログ

あわせて読みたい

最近のコメント
Internet Explorer
よりも便利です

Opera 9 - Always secure with Opera Firefoxをダウンロード!!

相互リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。