-
-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
svgタグ内の改行がbrタグに変換される #38
Comments
改行に対応する この対応は #50 の一貫として実施されます。 |
@butameron この変更は v1.0.0-alpha.16 に反映されましたので、ご確認ください。以下はこのバージョンを CLI で実行した例です。 オプション指定なし (
オプション指定あり (
|
上記の回避策とは別に、--hard-line-breakオプションありであっても、htmlコンテキスト内で改行が |
たしかにそうですね。改行を担当している
などの方法で対応する必要があります。 |
なので前述の方法でいう 1 になるのが正しそうです。この方向で VFM 側も継続調査します。 |
原因判明。
を考慮すると VFM が追加している構文でも |
const md = `{a|b}
<table>
<tbody>
<tr><td>aaa</td></tr>
</tbody>
</table>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="100%" height="100%" viewBox="0 0 3000 3000">
<image width="3000" height="3000" xlink:href="../image/cover.jpg"/>
</svg>` を指定した結果を出力すると以下となった。
期待値としては |
最新の
|
にすると
のように分解される。改行を入れたならば
以下のように単一
ただし remark の issues を調べてもそれらしいものは見つけられなかった。改めて issue 登録することを検討する。 |
remark 側に issue 登録して修正されたとしても修正は最新の v9 系になると思われる。そのため v8 系を採用する VFM v1.0 として反映できない可能性あり。remark に期待せず VFM として対応するとしたら、あまりよい方法ではないけれど以下はどうか。
この処理タイミングは 「あまりよい方法ではない」理由は対処療法であるため。ここまでの調査結果で出力された MDAST に依存している。本来は remark 本家として対策ないしは仕様としてアナウンスされることが望ましい。 |
この現象のみを検証用するプロジェクトを用意した。最新の v9 の場合、 |
remark プロジェクトの issue として報告してみた。 並行して前述の対処療法も実装する予定。 |
issue に返信があった。いわく
とのことで close された。本件の挙動は CommonMark と同様であり、ブロック (単一 |
ただ remark として本件の対応は望めなさそうなことは察せられたので
について検討する必要あり。1 で考えていたが CommonMark の挙動と乖離するのはどうか?という課題が生じた。 |
issue に返信あり。 空白や改行に関する定義もなされており、特別なタグであってもそのルールでブロックにならないことも例示していただいた。 以上を踏まえると本件対応は VFM 既定ではなくオプションにするのがよさそう。ただし改行ではなくタグのブロック扱いに関するものなので 2021/2/6 (土) に予定している開発者会議の議題に挙げてみる。 |
#4 の影響を検討する必要あり |
VFM v1.0 としては自動改行をオプション化することで明示的に有効化しない限り本件は発生しなくなりました。また前述のコメントどおり HTML タグ処理における CommonMark 仕様を踏襲しているため、自動改行が有効化された際に起きる本件の問題も当面は仕様とします。 改めて「自動改行有効 + |
Describe the bug
svgタグをVFM内に直接記述した場合、タグ内部の改行がbrタグに変換されます
To Reproduce
入力
出力
上記のように、svgタグ内の改行がbrタグに変換されています。
Expected behavior
改行がbrタグに変換されず、以下のように出力されるのが期待される結果です。
Additional context
Markdownの中でインラインSVGを使用するケース自体がレアかもしれませんが、今回のケースでは、EPUBと印刷物の制作を一つのmarkdownから行うことを目的として、電書協やKADOKAWAのepub制作ガイドラインで推奨されている「SVGラッピング」と呼ばれる手法を用いる必要があったためインラインSVGを使用したものです。
svgタグの内部に改行を含めないようにすることで回避可能ですが、うっかり改行によりbrタグが入り込んでいてもビューワによって挙動が異なるため、気付かないリスクがあります。例えば、Chrome上のVivliostyle Viewerでは恐らくbrタグがあっても正常に表示されますが、Kindle Previewerなどでは異常な表示となります。
電子書籍と印刷物をワンソースで制作するというのはVFMの想定ユースケースとそれほどズレないと思いますので、svgタグ内部の改行をbrタグに変換しないようにするという対応が必要と考えます。
加えて、 画像の構文
![xxx](./path/to/img)
を拡張してSVGラッピングでレンダリングされるオプションを追加する(例:![xxx](./path/to/img =3000x3000,svg)
)というような対応があると便利かもしれません。ただ、SVGラッピング自体が過渡的なハックに過ぎないようにも思えるため、あえてVFMの構文の仕様を弄るべきかというとかなり微妙なような気もします。The text was updated successfully, but these errors were encountered: