Changer dummy = mi.base.font.changeShape(UP_SHAPE);
dim = theFontMetrics(mi.base.font).dimension(char_);
kerning_ = 0;
+ } else if (!isASCII(char_) && Encodings::unicodeCharInfo(char_).isUnicodeSymbol()) {
+ Changer dummy1 = mi.base.changeFontSet("mathnormal");
+ Changer dummy2 = Encodings::isMathAlpha(char_)
+ ? Changer()
+ : mi.base.font.changeShape(UP_SHAPE);
+ dim = theFontMetrics(mi.base.font).dimension(char_);
+ kerning_ = -mathed_char_kerning(mi.base.font, char_);
} else {
frontend::FontMetrics const & fm = theFontMetrics(mi.base.font);
dim = fm.dimension(char_);
Changer dummy = pi.base.font.changeShape(UP_SHAPE);
pi.draw(x, y, char_);
return;
+ } else if (!isASCII(char_) && Encodings::unicodeCharInfo(char_).isUnicodeSymbol()) {
+ Changer dummy1 = pi.base.changeFontSet("mathnormal");
+ Changer dummy2 = Encodings::isMathAlpha(char_)
+ ? Changer()
+ : pi.base.font.changeShape(UP_SHAPE);
+ pi.draw(x, y, char_);
+ return;
}
}
// cmmi has almost no left bearing: simulate this
sym->extra == "mathalpha" &&
mb.fontname == "mathit";
std::string const font = italic_upcase_greek ? "cmm" : sym->inset;
- Changer dummy = mb.changeFontSet(font);
+ bool const change_font = font != "cmr" ||
+ (mb.fontname != "mathbb" &&
+ mb.fontname != "mathds" &&
+ mb.fontname != "mathfrak" &&
+ mb.fontname != "mathcal" &&
+ mb.fontname != "mathscr");
+ Changer dummy = change_font ? mb.changeFontSet(font) : Changer();
mathed_string_dim(mb.font, sym->draw, dim);
return mathed_char_kerning(mb.font, sym->draw.back());
}
sym->extra == "mathalpha" &&
pi.base.fontname == "mathit";
std::string const font = italic_upcase_greek ? "cmm" : sym->inset;
-
- Changer dummy = pi.base.changeFontSet(font);
+ bool const change_font = font != "cmr" ||
+ (pi.base.fontname != "mathbb" &&
+ pi.base.fontname != "mathds" &&
+ pi.base.fontname != "mathfrak" &&
+ pi.base.fontname != "mathcal" &&
+ pi.base.fontname != "mathscr");
+ Changer dummy = change_font ? pi.base.changeFontSet(font) : Changer();
pi.draw(x, y, sym->draw);
}