Quoting empty rt tags removes them

Take the following HTML:
<ruby>振<rt>ふ</rt>り<rt></rt>仮<rt>が</rt>名<rt>な</rt></ruby>

The empty <rt></rt> is very important here, as this is what results in proper placement of the furigana above each character. The empty <rt></rt> after り indicates to not place any furigana above this character. As you can see above, this works as expected.

However, when I quote that text (not full post quote), the resulting HTML is this:
<ruby>振<rt>ふ</rt>り仮<rt>が</rt>名<rt>な</rt></ruby>

り仮

Because the empty <rt></rt> was removed, the が now appears above both り and 仮 instead of just above 仮 as in the original text. This is because it thinks the が is meant to be placed above all preceding characters since the last rt tag.

If possible, could you update quoting rt HTML tags so that they are copied over even when empty?

1 Like

Any thoughts on this?

On the HTML5 Specification I see examples using either:

<ruby><rb>振<rb>り<rb>仮<rb>名<rt>ふ<rt><rt>が<rt>な</ruby>

or

<ruby>振<rt>ふ</rt></ruby>り<ruby>仮<rt>が</rt>名<rt>な</rt></ruby>

So I’d say to use either of the working forms present in the spec? The first one is even shorter to type!

1 Like

It looks like the correct version of the first one would be:
<ruby><rb>振<rb><rt>ふ<rt>り<rb>仮<rb><rt>が<rb>名<rt>な</ruby>

Compared to:
<ruby>振<rt>ふ</rt>り<rt></rt>仮<rt>が</rt>名<rt>な</rt></ruby>

So about the same length. I’ve actually never seen the rb approach in the first one. I’m not sure if people generally use that version. It does quote correctly though. However, I’m still curious. Are there any other cases where empty HTML tags are copied over when quoting?

I build Discourse plugin wrapping an existing markdown-it plugin for ruby tags, and they follow the traditional rt approach instead of the rb + rt approach. Unfortunately, this means quoting in this one specific case would result in bad HTML. Obviously it can happen if people wrote the ruby HTML manually. I just happened to notice from the plugin.