diff --git a/src/main/js/html.js b/src/main/js/html.js
index 06cf8f95..5326c2bd 100755
--- a/src/main/js/html.js
+++ b/src/main/js/html.js
@@ -871,91 +871,47 @@
}
function applyRubyReserve(lineList, context) {
-
+ console.log(lineList);
for (var i = 0; i < lineList.length; i++) {
-
- var ruby = document.createElement("ruby");
+ var rubyover = document.createElement("ruby");
+ var fs = context.rubyReserve[1].toUsedLength(context.w, context.h) + "px";
var rb = document.createElement("rb");
- rb.textContent = "\u200B";
-
- ruby.appendChild(rb);
-
- var rt1;
- var rt2;
-
- var fs = context.rubyReserve[1].toUsedLength(context.w, context.h) + "px";
+ rb.textContent = "ん";
+ rb.style.marginInlineStart = '-10em';
+ var rt = document.createElement("rt");
+ /* note: the text content matters from a size perspective */
+ rt.textContent = "ん";
+ rt.style.fontSize = fs;
+ rt.style.marginInlineStart = '-10em';
+ rubyover.style.visibility = 'hidden';
+ rubyover.style.rubyPosition = 'over';
+ rubyover.appendChild(rb);
+ rubyover.appendChild(rt);
+
+ var rubyunder = rubyover.cloneNode(true);
+ rubyunder.style.rubyPosition = 'under';
+
+ // get first leaf node on this line.
+ var sib = lineList[i].elements[0].node;
+ var target = sib;
+ var parent = sib.parentElement;
+ while (parent.nodeName !== 'P'){
+ target = parent;
+ parent = parent.parentElement;
+ }
if (context.rubyReserve[0] === "both" || (context.rubyReserve[0] === "outside" && lineList.length == 1)) {
-
- rt1 = document.createElement("rtc");
- rt1.style[RUBYPOSITION_PROP] = RUBYPOSITION_ISWK ? "after" : "under";
- rt1.textContent = "\u200B";
- rt1.style.fontSize = fs;
-
- rt2 = document.createElement("rtc");
- rt2.style[RUBYPOSITION_PROP] = RUBYPOSITION_ISWK ? "before" : "over";
- rt2.textContent = "\u200B";
- rt2.style.fontSize = fs;
-
- ruby.appendChild(rt1);
- ruby.appendChild(rt2);
-
+ target.parentElement.insertBefore(rubyover, target);
+ target.parentElement.insertBefore(rubyunder, target);
} else {
-
- rt1 = document.createElement("rtc");
- rt1.textContent = "\u200B";
- rt1.style.fontSize = fs;
-
- var pos;
-
if (context.rubyReserve[0] === "after" || (context.rubyReserve[0] === "outside" && i > 0)) {
-
- pos = RUBYPOSITION_ISWK ? "after" : ((context.bpd === "tb" || context.bpd === "rl") ? "under" : "over");
-
+ target.parentElement.insertBefore(rubyunder, target);
} else {
-
- pos = RUBYPOSITION_ISWK ? "before" : ((context.bpd === "tb" || context.bpd === "rl") ? "over" : "under");
-
+ target.parentElement.insertBefore(rubyover, target);
}
-
- rt1.style[RUBYPOSITION_PROP] = pos;
-
- ruby.appendChild(rt1);
-
}
-
- /* add in front of the first ruby element of the line, if it exists */
-
- var sib = null;
-
- for (var j = 0; j < lineList[i].rbc.length; j++) {
-
- if (lineList[i].rbc[j].localName === 'ruby') {
-
- sib = lineList[i].rbc[j];
-
- /* copy specified style properties from the sibling ruby container */
-
- for (var k = 0; k < sib.style.length; k++) {
-
- ruby.style.setProperty(sib.style.item(k), sib.style.getPropertyValue(sib.style.item(k)));
-
- }
-
- break;
- }
-
- }
-
- /* otherwise add before first span */
-
- sib = sib || lineList[i].elements[0].node;
-
- sib.parentElement.insertBefore(ruby, sib);
-
}
-
}
function applyFillLineGap(lineList, par_before, par_after, context, element) {
@@ -1822,7 +1778,7 @@
/* CSS property names */
- var RUBYPOSITION_ISWK = "webkitRubyPosition" in window.getComputedStyle(document.documentElement);
+ var RUBYPOSITION_ISWK = false; //"webkitRubyPosition" in window.getComputedStyle(document.documentElement);
var RUBYPOSITION_PROP = RUBYPOSITION_ISWK ? "webkitRubyPosition" : "rubyPosition";