+ } else if (token == "\\SpecialCharNoPassThru") {
+ lex.next();
+ docstring const s = ltrim(lex.getDocString(), "\\");
+ par.insert(par.size(), s, font, change);
+ } else if (token == "\\IPAChar") {
+ auto_ptr<Inset> inset;
+ inset.reset(new InsetIPAChar);
+ inset->read(lex);
+ inset->setBuffer(*buf);
+ par.insertInset(par.size(), inset.release(), font, change);
+ } else if (token == "\\twohyphens" || token == "\\threehyphens") {
+ // Ideally, this should be done by lyx2lyx, but lyx2lyx does not know the
+ // running font and does not know anything about layouts (and CopyStyle).
+ Layout const & layout(par.layout());
+ FontInfo info = font.fontInfo();
+ info.realize(layout.resfont);
+ if (layout.pass_thru || inset().isPassThru() ||
+ info.family() == TYPEWRITER_FAMILY) {
+ if (token == "\\twohyphens")
+ par.insert(par.size(), from_ascii("--"), font, change);
+ else
+ par.insert(par.size(), from_ascii("---"), font, change);
+ } else {
+ if (token == "\\twohyphens")
+ par.insertChar(par.size(), 0x2013, font, change);
+ else
+ par.insertChar(par.size(), 0x2014, font, change);
+ }