rtをコピーしないようにする
HTMLでルビを振ったあとブラウザでテキストコピーしたら漢字かんじ
みたくなるのを防ぐ方法。
問題
ルビがテキストコピーされるとき、漢字とつながってしまう。
<ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby>
漢字
上記をブラウザで表示し、マウスで範囲選択してコピーすると漢字かんじ
になってしまう。
期待値
漢字(かんじ)
JavaScriptにてtextContent
を取得すれば期待値を得られる。
document.querySelector('body').textContent
<rp>
も書かねばならないのが面倒。もし<rp>
がないと()
がなくなり漢字とルビがつながってしまう。
これと同じことをマウスのコピーでもやりたいのだが、簡単にはできないと思う。
妥協案
ルビを無視する。
漢字
CSSで以下のようにするとコピー時ルビを無視できる。
rt { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }
このサイトのCSSはそうなっていると思われる。
期待と現実
期待
ルビがあるとき、ルビなしとルビありの2種類取得したいときがある。
取得 | 動機 |
---|---|
漢字 |
ルビを抜いた字数をカウントしたい |
漢字(かんじ) |
テキストエディタで表示したい(読みやすいプレーンテキストが欲しい) |
現実
実際には以下のような残念さ。
取得 | 感想 |
---|---|
漢字かんじ |
マウスコピーの結果。バカじゃないの? こんなの誰も望まないわボケ |
漢字(かんじ) |
JSでtextContent により取得可能。ただし括弧() は<rp> が必要。 |
なんとかしてくれ。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux