+ /*
+ * Now process fallbacks on quote characters, underlines, the
+ * rule character, the emphasis characters, and bullets.
+ */
+ while (*uadv(ret.rquote) && *uadv(uadv(ret.rquote)) &&
+ (!cvt_ok(ret.charset, ret.lquote) ||
+ !cvt_ok(ret.charset, ret.rquote))) {
+ ret.lquote = uadv(ret.rquote);
+ ret.rquote = uadv(ret.lquote);
+ }
+
+ while (*uadv(ret.endemph) && *uadv(uadv(ret.endemph)) &&
+ (!cvt_ok(ret.charset, ret.startemph) ||
+ !cvt_ok(ret.charset, ret.endemph))) {
+ ret.startemph = uadv(ret.endemph);
+ ret.endemph = uadv(ret.startemph);
+ }
+
+ while (*ret.atitle.underline && *uadv(ret.atitle.underline) &&
+ !cvt_ok(ret.charset, ret.atitle.underline))
+ ret.atitle.underline = uadv(ret.atitle.underline);
+
+ while (*ret.achapter.underline && *uadv(ret.achapter.underline) &&
+ !cvt_ok(ret.charset, ret.achapter.underline))
+ ret.achapter.underline = uadv(ret.achapter.underline);
+
+ for (n = 0; n < ret.nasect; n++) {
+ while (*ret.asect[n].underline && *uadv(ret.asect[n].underline) &&
+ !cvt_ok(ret.charset, ret.asect[n].underline))
+ ret.asect[n].underline = uadv(ret.asect[n].underline);
+ }
+
+ while (*ret.bullet.text && *uadv(ret.bullet.text) &&
+ !cvt_ok(ret.charset, ret.bullet.text))
+ ret.bullet.text = uadv(ret.bullet.text);
+
+ while (*ret.rule && *uadv(ret.rule) &&
+ !cvt_ok(ret.charset, ret.rule))
+ ret.rule = uadv(ret.rule);
+