_ 円まーく
https://bugs.webkit.org/show_bug.cgi?id=24906
これが一見ややこしそうだけど一見以上にややこしくて困る。
たまに頭がおかしくなるのでまとめておこうと思う。
- 表示
- バックスラッシュは Windows でかつ EUC-JP や Shift_JIS など、要は日本語エンコーディングのサイトだと、日本語フォントが使われるため、バックスラッシュが円マークに見えている。あと、日本語フォントが明示的に指定されていればやはり当然円マークに見える。
- Apple の人はそれらは円マークとして表示したいと主張している。
- 僕の個人的な感覚ではこんなことはやらんでいいと思う。がまぁ理解はできる。
- ここを認めるせいでややこしくなるわけだけど。
- 表示する文字列は RenderText とかいうクラスの中に変換された状態で保存されてて、まぁオリジナルの文字列は DOM node の方に入っている。変換した状態で保存しておかないと毎度変換すると遅いし。
- コピー
- バックスラッシュ書いてあるところからコピーしたらバックスラッシュのまんまがいいと思うどう考えても
- ページ内検索
- バックスラッシュが円マークで表示されてる物体は、円マークで検索した時に検索されるべき
- 何故なら Mac の日本語キーボードは円マークの文字コードが直接出るから
- 僕としてはバックスラッシュだろうが円マークだろうがどっちで検索してもどっちも出るといいと思う
で、やるべきこととしては
- 表示の方は求められてる通りにやるとする
- コピーする時は DOM node の方に入ってるテキストを使う…のはダメ
- 何故なら text-transform:capitalize とかしてる時は変換後のを使わないといけないから
- text-transform があってかつバックスラッシュ→円とかしてる場合はコピー時にその場で変換
- ところでコピーは適当にいじるとページ内検索が壊れる
- コピーに使われてるコードはそこらじゅうでバックスラッシュ→円の変換をやってるので全部いじらないといけない
- 例えば普通の文章と text control の中とかで違う
- あとペースト先によっても変わる。 contentEditable だとなんか違う
- ページ内検索の方は、検索するキーも検索対象の文章も両方とも円マークをバックスラッシュに変換してしまえばいいんだと思う。たぶん。これもなんか大変そう。後回し。
(02:59)
お疲れ様です。。。
<p style="text-transform:capitalize">a\&#x5C;&#xA5;</p>
とかのことを考えると夜も眠れない
おっと無効か、まぁそうだよな
<p style="text-transform:capitalize">a\\¥</p>
capitalize は次のパッチはたぶん適当に対処します。 A円円円 ただしコピー時は A\\円 とかになればいいんですかね。
WebKit の人は「日本人はよくわからんが \ が円になればいいんだろ!!」って感じでそこらじゅうで Document::display(String|Buffer)ModifiedByEncoding を呼んでて一個の日本語表示する最中に何回バックスラッシュの置換してるんだお前って感じです。
それでよいと思います。パッチ見て驚きましたが、表示直前でだけ変換すればいいような話でもないんですね。
しかし。これ「コピーしたら円記号がバックスラッシュになった!」っていうレポートが来たら詰む気がするので、やっぱりWindowsにあわせてヒラギノフォントのほうを変えるほうがマシなような気がするんだよなぁ。
フォント変えろは同意なのですがまぁそういうわけにもいかなさそうですね。円がバックスラッシュに…はまぁ現実的には誰も文句言わないかなーと思ってますが不明。