アポストロフィの悩み

何でもいいから英語の単語に「痴」を付けてGoogleで検索してみる。例えば「he痴」でもいい。うまく見つからなければ,例えば Shakespeare痴 Got A Gun を見てみる。英語のサイトなのに何でこう「痴」が多いのか(うまく「痴」に見えないなら,ブラウザのデフォルトのエンコーディングをシフトJISにしてみてください)。

答え:Windows-1252(CP1252)のアポストロフィは 0x92 であり,これにs(0x73)が付くと 92 73 となり,これはシフトJISで「痴」になる。つまり,「He's」が「He痴」に化けるページはアポストロフィをWindows-1252でエンコーディングし,エンコーディング指定をしていないのでシフトJISで表示してしまったのである。書いた本人はLatin-1(ISO 8859-1)のつもりかもしれない。

アポストロフィは '(0x27)でいいのではないか。でも '(0x27)は左右対称にデザインされていることが多く(typewriter apostrophe),数字の9のようなおたまじゃくしの形の正しいアポストロフィ(typographic apostrophe)にするために工夫したつもりなのだ。

正しいアポストロフィの話は Presentation Zen: Apostrophes and quotation marks に載っている。アポストロフィだけを扱うサイト Apostrophe Abuse もある。技術的な話はWikipediaの Apostrophe の項目に詳しい。

Wordなどで英文を書く際には,ややこしいことを考えなくてもオートコレクト機能で正しいアポストロフィに変換してくれる。

問題はWebページの作成である。UTF-8のページでどうすれば正しいアポストロフィを表示することができるだろうか。Unicodeでは '(U+0027)がAPOSTROPHEという名前になっているが,実際には ’(U+2019,RIGHT SINGLE QUOTATION MARK)を使わないと正しいアポストロフィにならない。最新のUnicode Standardは持っていないが,3.0のChapter 6(p.149)には次のように書かれている:

The preferred character for apostrophe is U+2019, but U+0027 is commonly present on keyboards. In modern software, it is therefore common to substitute U+0027 by the appropriate character in input. In these systems, a U+0027 in the data stream is always represented as a straight vertical line and can never represent a curly apostrophe or a right quotation mark.

しかし,日本語のフォントがデフォルトになっていると,’(U+2019)が「全角」になってしまって,間延びしてしまうことがある。これを避けるためには,CSS(またはfontタグ!)で欧文フォントを指定すればいいのだろうが,環境に依存しない一般的な方法はないものだろうか。同じことが“ダブルクォーテーションマーク”についてもいえる。

[追記] シングルクォート・ダブルクォートの類の文字幅の問題は東アジアの文字幅(East Asian Width)のAmbiguousの問題というらしい。解決法として,例えば <span lang="en">He’s</span> のようなことをして効くだろうか。