CSS4の話題もあるのにCSS2の話だよ!滅多に使わないけど罠いよ!
first-letterの基本仕様
first-letterは正確には最初の一文字だけでない。最初の一文字に隣接する句読点等の一部記号(以下句読点)も対象に含まれる。
句読点であれば複数連続していても全てが対象に含まれる。
また、最初の1文字が句読点である場合、次に句読点でない文字列が出てくるまでが対象となる。
句読点というのは同一である必要は無く、「.」と「,」などの違う文字列でも句読点同士が隣接している限りはfirst-letter対象から外れない。
参考までに、以下は全てB以外の全ての文字列がfirst-letter対象文字列になるパターン。
* AB
* .AB
* .A.B
* A...B
* ....AB
* A...!B
* A!.!.B
仕様はそういう事らしい。
じゃあどこまでが句読点として扱われるのか
けっこう色々なものが句読点扱いになってる。
軽く試したところでは下記。
- 一般的な句読点(,.،۔、。,.﹐﹑﹒。、)
- エクスクラメーションとか(?!!?)
- シングルクオートダブルクオート("'')
- 全角半角問わず、一部の括弧類(()【】「」[])
- アスタリスク類、コロンの類**※、:;:;
- 中黒とか三点リーダー(・……)
- スラッシュ(//)
- 同上〃
- スペースの類( )
たぶん他にもある。
なおいけそうでいけなかった連中
- ダッシュ、伸ばし棒(―)
- バッスラ\
- 同上〃に似てる気がする連中(々、ヽ、ゞ)
- 一部の括弧類(< >)→もしかして:演算子扱い
- 演算子(+-=)
- ★●■♪、矢印の類など
わからない……!
感覚としては文章の中で一般的に使われる記号は句読点扱いになっていることが多い気がした。公式文書にも出て来そうなやつ。
ダッシュが含まれないのは少し意外。伸ばし棒扱いなのかな。
全角記号で通るものは半角記号でも通った。全角半角は関係ない模様。
何が基準なのか
仕様書の日本語訳からはいちおう言及がある。
最初の文字に先行する句読点(例えば、"開き"(Ps)、"閉じ"(Pe)及び"その他"(Po)の句読点の種類の中で、Unicode [UNICODE]において定義されている文字)は、
のように含まれるべきだ。
unicodeを基準にしているらしい。しかし「"開き"(Ps)、"閉じ"(Pe)及び"その他"(Po)の句読点の種類の中で~」……?何のこっちゃ。
と思ったらmozzilaがかなり日本語らしい翻訳を出してくれていた。
句読点 (punctuation)。これは、Unicode の open (Ps)、close (Pe)、initial quote (Pi)、final quote (Pf)、other punctuation (Po) の各クラスで定義されているすべての文字です。最初の文字に先行している句読点や、すぐ後ろに続いている句読点も同様に、擬似要素にマッチします。
なるほどよくわからないけどPsとかPeは文字の分類の名前っぽい。
各クラスごとの文字一覧とかあるのかなーと思ってググってたら出てきたのはこれ。
あーなんか見えるなーPeとかPoとかいう文字列が見えるなー!って事でここで# Psとか# Peとか文字列検索してひっかかってたらfirst-letterの対象になるみたいです。
出てくるの文字コードだけど。0F3E..0F3Fとかいう記述もあってどっからどこまでを指してるのか曖昧だけど。まぁなんとかなるでしょ。
探したらどこかにもっと見やすいのもありそうだけど見つからないので見つけたら教えてください。