ePub 2 エディタであるSigilで実行できる正規表現を開発しようとしています。
スモール キャップは、現在の ePub リーダー エコシステム内でよく知られている問題です。Adobe Digital Editions などの多くのリーダーは、「font-variant: small-caps」をサポートしていません。いくつかの回避策を試した後、テキストを大文字に変換し、以前の小文字を「font-size: 0.75em」に設定することで、偽の小さな大文字を作成することにしました。
このプロセスは非常に面倒です。特に、他の書籍からの引用を伴う文末脚注が多数ある書籍を扱う場合はなおさらです。
「SC」クラスでタグ付けされた HTML ページにたくさんのフレーズがあるとします。テストフレーズを作成しました:
<span class="SC">Hello World! Testing: one tWo thrEE & W.T.F.</span>
<span class="foo">Don't touch me!</span>
目標は、「SC」span タグ内の小文字のみに一致する正規表現を作成し、それらを次のように置き換えることです。
<span class="FSC">LETTERS</span>
最初の単語「Hello」の文字を一致させて置き換えることはできますが、その後はすべてがうまくいきません。
ここに私がこれまでに持っているものがあります:
探す:
(<span class="SC">.*?)([a-z]+)(.*</span>)
交換:
\1<span class="FSC">\U\2\E</span>\3
新しい "FSC" (Fake Small Caps) スパン タグが導入されたので、トリッキーな部分は、そのタグ内の残りの小文字を見つけ続けることです。同じ正規表現をもう一度試すと、「スパン」、「クラス」の順にFSC処理が行われます。理想的には、一致が見つからなくなるまで「すべて置換」ボタンを押し続けられるようにしたいと考えています。
上記の例は、完了すると次のようになります。
<span class="SC">H<span class="FSC">ELLO</span> W<span class="FSC">ORLD</span>! T<span class="FSC">ESTING</span>: <span class="FSC">ONE</span> <span class="FSC">T</span>W<span class="FSC">O</span> <span class="FSC">THR</span>EE & W.T.F.</span>
<span class="foo">Don't touch me!</span>
きれいではありませんが、テストしたすべての ePub リーダーで動作します。
「epub small caps regex」をグーグルで検索すると、この正規表現を含めるように編集した MobileRead wiki 記事に出くわしますが、これは満足できるものではないと判断しました。
(<span class="[a-zA-Z0-9\- ]*?(?<!F)SC[a-zA-Z0-9\-]*?">(?:.+?<span class="FSC">.+?</span>)*[\.|,|:|;|-|–|—|!|\?]? ?(?:&)? ?[A-Z]+)([a-z'’\. ]+)(.*?</span>)
これにより、一連の句読点が縮小され、フレーズの途中で停止することがあります。すべての可能性を前もって計画しようとしない、より良い解決策がおそらくあると考えて、最初からやり直しました。
誰かがこれに対するより良い解決策を思いついた場合、あなたは ePub パブリッシング業界全体のヒーローになるでしょう。
アップデート
受け入れられた (そして唯一の) 回答をMobile Read wikiに追加しました。この正規表現は、Sigil で使用するために特別に変更されていることに注意してください。他の環境では YMMV。