Math inset names and LaTeX requirements are always ASCII. This avoids some
conversions and makes math requirements more similar to text requirements.
os << MTag("span", "class='overbar'") << cell(0) << ETag("span");
return;
}
os << MTag("span", "class='overbar'") << cell(0) << ETag("span");
return;
}
if (name == "underbar" || name == "underline") {
os << MTag("span", "class='underbar'") << cell(0) << ETag("span");
return;
if (name == "underbar" || name == "underline") {
os << MTag("span", "class='underbar'") << cell(0) << ETag("span");
return;
TranslationMap const & t = translationMap();
TranslationMap::const_iterator cur = t.find(name);
LASSERT(cur != t.end(), return);
TranslationMap const & t = translationMap();
TranslationMap::const_iterator cur = t.find(name);
LASSERT(cur != t.end(), return);
bool symontop = cur->second.over;
string const symclass = symontop ? "symontop" : "symonbot";
os << MTag("span", "class='symbolpair " + symclass + "'")
<< '\n';
bool symontop = cur->second.over;
string const symclass = symontop ? "symontop" : "symonbot";
os << MTag("span", "class='symbolpair " + symclass + "'")
<< '\n';
if (symontop)
os << MTag("span", "class='symbol'") << from_ascii(cur->second.tag);
else
if (symontop)
os << MTag("span", "class='symbol'") << from_ascii(cur->second.tag);
else
"span.symbolpair{display: inline-block; text-align:center;}\n"
"span.symontop{vertical-align: top;}\n"
"span.symonbot{vertical-align: bottom;}\n"
"span.symbolpair{display: inline-block; text-align:center;}\n"
"span.symontop{vertical-align: top;}\n"
"span.symonbot{vertical-align: bottom;}\n"
- "span.symbolpair span{display: block;}\n"
+ "span.symbolpair span{display: block;}\n"
"span.symbol{height: 0.5ex;}");
}
} else {
if (!key_->requires.empty())
"span.symbol{height: 0.5ex;}");
}
} else {
if (!key_->requires.empty())
- features.require(to_utf8(key_->requires));
+ features.require(key_->requires);
}
InsetMathNest::validate(features);
}
}
InsetMathNest::validate(features);
}
MathWordList::const_iterator it = words.find(left_);
if (it != words.end())
{
MathWordList::const_iterator it = words.find(left_);
if (it != words.end())
{
- docstring const req = it->second.requires;
+ string const req = it->second.requires;
- features.require(to_ascii(req));
}
it = words.find(right_);
if (it != words.end())
{
}
it = words.find(right_);
if (it != words.end())
{
- docstring const req = it->second.requires;
+ string const req = it->second.requires;
- features.require(to_ascii(req));
void InsetMathDots::validate(LaTeXFeatures & features) const
{
if (!key_->requires.empty())
void InsetMathDots::validate(LaTeXFeatures & features) const
{
if (!key_->requires.empty())
- features.require(to_utf8(key_->requires));
+ features.require(key_->requires);
bool const italic_upcase_greek = sym_->inset == "cmr" &&
sym_->extra == "mathalpha" &&
mi.base.fontname == "mathit";
bool const italic_upcase_greek = sym_->inset == "cmr" &&
sym_->extra == "mathalpha" &&
mi.base.fontname == "mathit";
- docstring const font = italic_upcase_greek ? from_ascii("cmm") : sym_->inset;
+ std::string const font = italic_upcase_greek ? "cmm" : sym_->inset;
int const em = mathed_char_width(mi.base.font, 'M');
int const em = mathed_char_width(mi.base.font, 'M');
- FontSetChanger dummy(mi.base, font);
+ FontSetChanger dummy(mi.base, from_ascii(font));
mathed_string_dim(mi.base.font, sym_->draw, dim);
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
kerning_ = mathed_char_kerning(mi.base.font, *rit);
mathed_string_dim(mi.base.font, sym_->draw, dim);
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
kerning_ = mathed_char_kerning(mi.base.font, *rit);
bool const italic_upcase_greek = sym_->inset == "cmr" &&
sym_->extra == "mathalpha" &&
pi.base.fontname == "mathit";
bool const italic_upcase_greek = sym_->inset == "cmr" &&
sym_->extra == "mathalpha" &&
pi.base.fontname == "mathit";
- docstring const font = italic_upcase_greek ? from_ascii("cmm") : sym_->inset;
+ std::string const font = italic_upcase_greek ? "cmm" : sym_->inset;
int const em = mathed_char_width(pi.base.font, 'M');
if (isRelOp())
x += static_cast<int>(0.25*em+0.5);
else
x += static_cast<int>(0.0833*em+0.5);
int const em = mathed_char_width(pi.base.font, 'M');
if (isRelOp())
x += static_cast<int>(0.25*em+0.5);
else
x += static_cast<int>(0.0833*em+0.5);
- FontSetChanger dummy(pi.base, font);
+ FontSetChanger dummy(pi.base, from_ascii(font));
pi.draw(x, y - h_, sym_->draw);
}
pi.draw(x, y - h_, sym_->draw);
}
"sup.limit{font-size: 75%;}");
} else {
if (!sym_->requires.empty())
"sup.limit{font-size: 75%;}");
} else {
if (!sym_->requires.empty())
- features.require(to_utf8(sym_->requires));
+ features.require(sym_->requires);
string const MacroData::requires() const
{
if (sym_)
string const MacroData::requires() const
{
if (sym_)
- return to_utf8(sym_->requires);
MathWordList theMathWordList;
MathWordList theMathWordList;
-bool isMathFontAvailable(docstring & name)
+bool isMathFontAvailable(string & name)
{
if (!use_gui)
return false;
FontInfo f;
{
if (!use_gui)
return false;
FontInfo f;
+ augmentFont(f, from_ascii(name));
// Do we have the font proper?
if (theFontLoader().available(f))
// Do we have the font proper?
if (theFontLoader().available(f))
// can we fake it?
if (name == "eufrak") {
// can we fake it?
if (name == "eufrak") {
- name = from_ascii("lyxfakefrak");
return true;
}
LYXERR(Debug::MATHED,
return true;
}
LYXERR(Debug::MATHED,
- "font " << to_utf8(name) << " not available and I can't fake it");
+ "font " << name << " not available and I can't fake it");
string tmp;
is >> tmp;
is >> tmp;
string tmp;
is >> tmp;
is >> tmp;
- docstring t = from_utf8(tmp);
- skip = !isMathFontAvailable(t);
+ skip = !isMathFontAvailable(tmp);
continue;
} else if (line.size() >= 4 && line.substr(0, 4) == "else") {
skip = !skip;
continue;
} else if (line.size() >= 4 && line.substr(0, 4) == "else") {
skip = !skip;
<< to_utf8(it->first) << " already exists.");
else {
latexkeys tmp;
<< to_utf8(it->first) << " already exists.");
else {
latexkeys tmp;
- tmp.inset = from_ascii("macro");
tmp.name = it->first;
tmp.extra = from_utf8(extra);
tmp.xmlname = from_utf8(xmlname);
tmp.name = it->first;
tmp.extra = from_utf8(extra);
tmp.xmlname = from_utf8(xmlname);
- tmp.requires = from_utf8(requires);
+ tmp.requires = requires;
theMathWordList[it->first] = tmp;
wit = theMathWordList.find(it->first);
it->second.setSymbol(&(wit->second));
theMathWordList[it->first] = tmp;
wit = theMathWordList.find(it->first);
it->second.setSymbol(&(wit->second));
idocstringstream is(from_utf8(line));
latexkeys tmp;
idocstringstream is(from_utf8(line));
latexkeys tmp;
- is >> tmp.name >> tmp.inset;
- if (isFontName(tmp.inset))
+ docstring help;
+ is >> tmp.name >> help;
+ tmp.inset = to_ascii(help);
+ if (isFontName(help))
is >> charid >> fallbackid >> tmp.extra >> tmp.xmlname;
else
is >> tmp.extra;
// requires is optional
if (is) {
is >> charid >> fallbackid >> tmp.extra >> tmp.xmlname;
else
is >> tmp.extra;
// requires is optional
if (is) {
- is >> tmp.requires;
- // backward compatibility
- if (tmp.requires == "esintoramsmath")
- tmp.requires = from_ascii("esint|amsmath");
+ if ((is >> help)) {
+ // backward compatibility
+ if (help == "esintoramsmath")
+ tmp.requires = "esint|amsmath";
+ else
+ tmp.requires = to_ascii(help);
+ }
} else {
LYXERR(Debug::MATHED, "skipping line '" << line << "'\n"
} else {
LYXERR(Debug::MATHED, "skipping line '" << line << "'\n"
- << to_utf8(tmp.name) << ' ' << to_utf8(tmp.inset) << ' '
+ << to_utf8(tmp.name) << ' ' << tmp.inset << ' '
<< to_utf8(tmp.extra));
continue;
}
<< to_utf8(tmp.extra));
continue;
}
- if (isFontName(tmp.inset)) {
+ if (isFontName(from_ascii(tmp.inset))) {
// tmp.inset _is_ the fontname here.
// create fallbacks if necessary
// store requirements as long as we can
if (tmp.requires.empty()) {
if (tmp.inset == "msa" || tmp.inset == "msb")
// tmp.inset _is_ the fontname here.
// create fallbacks if necessary
// store requirements as long as we can
if (tmp.requires.empty()) {
if (tmp.inset == "msa" || tmp.inset == "msb")
- tmp.requires = from_ascii("amssymb");
+ tmp.requires = "amssymb";
else if (tmp.inset == "wasy")
else if (tmp.inset == "wasy")
- tmp.requires = from_ascii("wasysym");
+ tmp.requires = "wasysym";
else if (tmp.inset == "mathscr")
else if (tmp.inset == "mathscr")
- tmp.requires = from_ascii("mathrsfs");
+ tmp.requires = "mathrsfs";
}
// symbol font is not available sometimes
}
// symbol font is not available sometimes
- docstring symbol_font = from_ascii("lyxsymbol");
+ string symbol_font = "lyxsymbol";
char_type unicodesymbol = 0;
if (tmp.extra == "func" || tmp.extra == "funclim" || tmp.extra == "special") {
char_type unicodesymbol = 0;
if (tmp.extra == "func" || tmp.extra == "funclim" || tmp.extra == "special") {
} else if (fallbackid && isMathFontAvailable(symbol_font) &&
canBeDisplayed(fallbackid)) {
if (tmp.inset == "cmex")
} else if (fallbackid && isMathFontAvailable(symbol_font) &&
canBeDisplayed(fallbackid)) {
if (tmp.inset == "cmex")
- tmp.inset = from_ascii("lyxsymbol");
+ tmp.inset = "lyxsymbol";
- tmp.inset = from_ascii("lyxboldsymbol");
+ tmp.inset = "lyxboldsymbol";
LYXERR(Debug::MATHED, "symbol fallback for " << to_utf8(tmp.name));
tmp.draw.push_back(char_type(fallbackid));
} else if (isUnicodeSymbolAvailable(tmp.name, unicodesymbol)) {
LYXERR(Debug::MATHED, "unicode fallback for " << to_utf8(tmp.name));
LYXERR(Debug::MATHED, "symbol fallback for " << to_utf8(tmp.name));
tmp.draw.push_back(char_type(fallbackid));
} else if (isUnicodeSymbolAvailable(tmp.name, unicodesymbol)) {
LYXERR(Debug::MATHED, "unicode fallback for " << to_utf8(tmp.name));
- tmp.inset = from_ascii("mathnormal");
+ tmp.inset = "mathnormal";
tmp.draw.push_back(unicodesymbol);
} else {
LYXERR(Debug::MATHED, "faking " << to_utf8(tmp.name));
tmp.draw = tmp.name;
tmp.draw.push_back(unicodesymbol);
} else {
LYXERR(Debug::MATHED, "faking " << to_utf8(tmp.name));
tmp.draw = tmp.name;
- tmp.inset = from_ascii("lyxtex");
}
} else {
// it's a proper inset
}
} else {
// it's a proper inset
- LYXERR(Debug::MATHED, "inset " << to_utf8(tmp.inset)
+ LYXERR(Debug::MATHED, "inset " << tmp.inset
<< " used for " << to_utf8(tmp.name));
}
<< " used for " << to_utf8(tmp.name));
}
// If you change the following output, please adjust
// development/tools/generate_symbols_images.py.
LYXERR(Debug::MATHED, "read symbol '" << to_utf8(tmp.name)
// If you change the following output, please adjust
// development/tools/generate_symbols_images.py.
LYXERR(Debug::MATHED, "read symbol '" << to_utf8(tmp.name)
- << " inset: " << to_utf8(tmp.inset)
+ << " inset: " << tmp.inset
<< " draw: " << int(tmp.draw.empty() ? 0 : tmp.draw[0])
<< " extra: " << to_utf8(tmp.extra)
<< " xml: " << to_utf8(tmp.xmlname)
<< " draw: " << int(tmp.draw.empty() ? 0 : tmp.draw[0])
<< " extra: " << to_utf8(tmp.extra)
<< " xml: " << to_utf8(tmp.xmlname)
- << " requires: " << to_utf8(tmp.requires) << '\'');
+ << " requires: " << tmp.requires << '\'');
- docstring tmp = from_ascii("cmm");
- docstring tmp2 = from_ascii("cmsy");
+ string tmp = "cmm";
+ string tmp2 = "cmsy";
has_math_fonts = isMathFontAvailable(tmp) && isMathFontAvailable(tmp2);
}
has_math_fonts = isMathFontAvailable(tmp) && isMathFontAvailable(tmp2);
}
latexkeys const * l = in_word_set(s);
if (l) {
latexkeys const * l = in_word_set(s);
if (l) {
- docstring const & inset = l->inset;
+ string const & inset = l->inset;
//lyxerr << " found inset: '" << inset << '\'' << endl;
if (inset == "ref")
return MathAtom(new InsetMathRef(buf, l->name));
//lyxerr << " found inset: '" << inset << '\'' << endl;
if (inset == "ref")
return MathAtom(new InsetMathRef(buf, l->name));
lyxerr << "found math environment `"
<< to_utf8(name)
<< "' in symbols file with unsupported inset `"
lyxerr << "found math environment `"
<< to_utf8(name)
<< "' in symbols file with unsupported inset `"
<< "'." << endl;
}
// create generic environment inset
<< "'." << endl;
}
// create generic environment inset
/// name of the macro or primitive
docstring name;
/// name of a inset that handles that macro
/// name of the macro or primitive
docstring name;
/// name of a inset that handles that macro
/**
* The string or symbol to draw.
* This is a string of length 1 if \p name is a known symbol, and
/**
* The string or symbol to draw.
* This is a string of length 1 if \p name is a known symbol, and
/// how is this called as XML entity in MathML?
docstring xmlname;
/// required LaTeXFeatures
/// how is this called as XML entity in MathML?
docstring xmlname;
/// required LaTeXFeatures