X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfont.C;h=8959e619e8535c54a7e32c7c4ec6c9c70ae71518;hb=21226de2b87a86be19fff025cace3d286a75aa76;hp=1875b15061c28e007b3de195a4fad4fc640f6e39;hpb=a0bf0835e531b77fb00417c4256eee8baa020c26;p=lyx.git diff --git a/src/lyxfont.C b/src/lyxfont.C index 1875b15061..8959e619e8 100644 --- a/src/lyxfont.C +++ b/src/lyxfont.C @@ -22,6 +22,7 @@ #include "debug.h" #include "lyxrc.h" #include "lyxlex.h" +#include "language.h" #include "FontLoader.h" #include "support/lstrings.h" #include "bufferparams.h" // stateText @@ -33,16 +34,16 @@ using std::endl; using std::strlen; #endif - // // Names for the GUI // namespace { -char const * GUIFamilyNames[6] = -{ N_("Roman"), N_("Sans serif"), N_("Typewriter"), N_("Symbol"), N_("Inherit"), - N_("Ignore") }; +char const * GUIFamilyNames[LyXFont::NUM_FAMILIES + 2 /* default & error */] = +{ N_("Roman"), N_("Sans serif"), N_("Typewriter"), N_("Symbol"), + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", + N_("Inherit"), N_("Ignore") }; char const * GUISeriesNames[4] = { N_("Medium"), N_("Bold"), N_("Inherit"), N_("Ignore") }; @@ -63,8 +64,10 @@ char const * GUIMiscNames[5] = // // Strings used to read and write .lyx format files // -char const * LyXFamilyNames[6] = -{ "roman", "sans", "typewriter", "symbol", "default", "error" }; +char const * LyXFamilyNames[LyXFont::NUM_FAMILIES + 2 /* default & error */] = +{ "roman", "sans", "typewriter", "symbol", + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", + "default", "error" }; char const * LyXSeriesNames[4] = { "medium", "bold", "default", "error" }; @@ -75,7 +78,7 @@ char const * LyXShapeNames[6] = char const * LyXSizeNames[14] = { "tiny", "scriptsize", "footnotesize", "small", "normal", "large", "larger", "largest", "huge", "giant", - "increase-error", "decrease-error", "default", "error" }; + "increase", "decrease", "default", "error" }; char const * LyXMiscNames[5] = { "off", "on", "toggle", "default", "error" }; @@ -156,8 +159,17 @@ bool LyXFont::FontBits::operator!=(LyXFont::FontBits const & fb1) const } +LyXFont::LyXFont() + : bits(sane), lang(default_language) +{} + + LyXFont::LyXFont(LyXFont::FONT_INIT1) +#ifndef INHERIT_LANGUAGE + : bits(inherit), lang(default_language) +#else : bits(inherit), lang(inherit_language) +#endif {} @@ -377,7 +389,9 @@ LyXFont::FONT_MISC_STATE LyXFont::setMisc(FONT_MISC_STATE newfont, /// Updates font settings according to request -void LyXFont::update(LyXFont const & newfont, bool toggleall) +void LyXFont::update(LyXFont const & newfont, + Language const * document_language, + bool toggleall) { if (newfont.family() == family() && toggleall) setFamily(INHERIT_FAMILY); // toggle 'back' @@ -423,7 +437,14 @@ void LyXFont::update(LyXFont const & newfont, bool toggleall) setNumber(setMisc(newfont.number(), number())); if (newfont.language() == language() && toggleall) - setLanguage(inherit_language); + if (language() == document_language) + setLanguage(default_language); + else +#ifndef INHERIT_LANGUAGE + setLanguage(document_language); +#else + setLanguage(inherit_language); +#endif else if (newfont.language() != ignore_language) setLanguage(newfont.language()); @@ -453,14 +474,21 @@ void LyXFont::reduce(LyXFont const & tmplt) setNoun(INHERIT); if (color() == tmplt.color()) setColor(LColor::inherit); +#ifdef INHERIT_LANGUAGE if (language() == tmplt.language()) setLanguage(inherit_language); +#endif } /// Realize font from a template +#ifndef INHERIT_LANGUAGE +LyXFont & LyXFont::realize(LyXFont const & tmplt) +#else LyXFont & LyXFont::realize(LyXFont const & tmplt, Language const * deflang) +#endif { +#ifdef INHERIT_LANGUAGE if (language() == inherit_language) { if (tmplt.language() == inherit_language || tmplt.language() == ignore_language || @@ -471,6 +499,7 @@ LyXFont & LyXFont::realize(LyXFont const & tmplt, Language const * deflang) setLanguage(tmplt.language()); } } +#endif if (bits == inherit) { bits = tmplt.bits; return *this; @@ -511,8 +540,10 @@ bool LyXFont::resolved() const shape() != INHERIT_SHAPE && size() != INHERIT_SIZE && emph() != INHERIT && underbar() != INHERIT && noun() != INHERIT && - color() != LColor::inherit && - language() != inherit_language); +#ifdef INHERIT_LANGUAGE + language() != inherit_language && +#endif + color() != LColor::inherit); } @@ -708,7 +739,10 @@ LyXFont & LyXFont::lyxRead(LyXLex & lex) /// Writes the changes from this font to orgfont in .lyx format in file void LyXFont::lyxWriteChanges(LyXFont const & orgfont, - Language const * doclang, ostream & os) const +#ifdef INHERIT_LANGUAGE + Language const * doclang, +#endif + ostream & os) const { os << "\n"; if (orgfont.family() != family()) { @@ -757,9 +791,13 @@ void LyXFont::lyxWriteChanges(LyXFont const & orgfont, os << "\\color " << col_str << "\n"; } if (orgfont.language() != language()) { +#ifndef INHERIT_LANGUAGE + if (language()) +#else if (language() == inherit_language) os << "\\lang " << doclang->lang() << "\n"; else if (language()) +#endif os << "\\lang " << language()->lang() << "\n"; else os << "\\lang unknown\n";