Scott Kostyshak wrote:

> Thanks for working on this, Georg. As far as I'm concerned, whatever you
> and Günter decide is fine with me since you two seem to be the only ones
> that understand what should happen. As far as the tests, I don't have a
> strong preference. I think we should try to get the tests to reflect
> real user scenarios as much as possible so what you propose sounds
> reasonable to me. Let's see what Kornel thinks.

Here comes an implementation of the duplicate font settings. This is needed 
independently of the automatic setting, so I wanted to complete this first.

The patch is almost completely mechanical. The needed settings are 
duplicated. The only non-mechanical change is in the GUI logic: The set of 
settings currently not selected by the "use non-TeX fonts" check box is 
stored in some new member variables, and if the check box is toggled they 
are exchanged with the contents of the GUI elements. No documentation change 
is needed, the only thing the user may notice is that toggling "use non-TeX 
fonts" does no longer throw away settings.

OK to apply? When?

The next step for the tests would then be to explicitly set sensible non-TeX 
fonts for those files of our documentation that have special requirements, 
so that we can get rid of the heuristics in the tests. Concerning the new 
automatic value for "use non-TeX fonts" I am not really sure how to proceed.


Georg
diff --git a/development/FORMAT b/development/FORMAT
index 7ec9be7..53f9c03 100644
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -11,6 +11,15 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
 
 -----------------------
 
+2015-11-08 Georg Baum  <georg.b...@post.rwth-aachen.de>
+	* Format incremented to 501
+	  \fonts_roman, \fonts_sans, \fonts_typewriter and \fonts_math,
+	  take now two quoted values instead of one unquoted one.
+	  The first one is for TeX fonts, the second one for non-TeX fonts.
+	  \font_sf_scale and \font_tt_scale
+	  take now two values instead of one.
+	  The first one is for TeX fonts, the second one for non-TeX fonts.
+
 2015-11-04 Uwe Stöhr <uwesto...@web.de>
 	* Format incremented to 500
 	  No new parameters.
diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py
index ad13afe..a40ef16 100644
--- a/lib/lyx2lyx/LyX.py
+++ b/lib/lyx2lyx/LyX.py
@@ -85,7 +85,7 @@ format_relation = [("0_06",    [200], minor_versions("0.6" , 4)),
                    ("1_6", list(range(277,346)), minor_versions("1.6" , 10)),
                    ("2_0", list(range(346,414)), minor_versions("2.0" , 8)),
                    ("2_1", list(range(414,475)), minor_versions("2.1" , 0)),
-                   ("2_2", list(range(475,501)), minor_versions("2.2" , 0))
+                   ("2_2", list(range(475,502)), minor_versions("2.2" , 0))
                   ]
 
 ####################################################################
diff --git a/lib/lyx2lyx/lyx_2_2.py b/lib/lyx2lyx/lyx_2_2.py
index ccc4b44..f107dec 100644
--- a/lib/lyx2lyx/lyx_2_2.py
+++ b/lib/lyx2lyx/lyx_2_2.py
@@ -2019,6 +2019,77 @@ def revert_achemso(document):
     i += 1
 
 
+fontsettings = ["\\font_roman", "\\font_sans", "\\font_typewriter", "\\font_math", \
+                "\\font_sf_scale", "\\font_tt_scale"]
+fontdefaults = ["default", "default", "default", "auto", "100", "100"]
+fontquotes = [True, True, True, True, False, False]
+
+def convert_fontsettings(document):
+    " Duplicate font settings "
+
+    i = find_token(document.header, "\\use_non_tex_fonts ", 0)
+    if i == -1:
+        document.warning("Malformed LyX document: No \\use_non_tex_fonts!")
+        return
+    use_non_tex_fonts = get_value(document.header, "\\use_non_tex_fonts", i)
+    j = 0:
+    for f in fontsettings:
+        i = find_token(document.header, f + " ", 0)
+        if i == -1:
+            document.warning("Malformed LyX document: No " + f + "!")
+            j = j + 1
+            continue
+        value = document.header[i][len(f):].strip()
+        if fontquotes[j]:
+            if use_non_tex_fonts == "true":
+                document.header[i:i+1] = [f + ' "' + fontdefaults[j] + '" "' + value + '"']
+            else:
+                document.header[i:i+1] = [f + ' "' + value + '" "' + fontdefaults[j] + '"']
+        else:
+            if use_non_tex_fonts == "true":
+                document.header[i:i+1] = [f + ' ' + fontdefaults[j] + ' ' + value]
+            else:
+                document.header[i:i+1] = [f + ' ' + value + ' ' + fontdefaults[j]]
+        j = j + 1
+
+
+def revert_fontsettings(document):
+    " Merge font settings "
+
+    i = find_token(document.header, "\\use_non_tex_fonts ", 0)
+    if i == -1:
+        document.warning("Malformed LyX document: No \\use_non_tex_fonts!")
+        return
+    use_non_tex_fonts = get_value(document.header, "\\use_non_tex_fonts", i)
+    j = 0
+    for f in fontsettings:
+        i = find_token(document.header, f + " ", 0)
+        if i == -1:
+            document.warning("Malformed LyX document: No " + f + "!")
+            j = j + 1
+            continue
+        line = get_value(document.header, f, i)
+        if fontquotes[j]:
+            q1 = line.find('"')
+            q2 = line.find('"', q1+1)
+            q3 = line.find('"', q2+1)
+            q4 = line.find('"', q3+1)
+            if q1 == -1 or q2 == -1 or q3 == -1 or q4 == -1:
+                document.warning("Malformed LyX document: Missing quotes!")
+                j = j + 1
+                continue
+            if use_non_tex_fonts == "true":
+                document.header[i:i+1] = [f + ' ' + line[q3+1:q4]]
+            else:
+                document.header[i:i+1] = [f + ' ' + line[q1+1:q2]]
+        else:
+            if use_non_tex_fonts == "true":
+                document.header[i:i+1] = [f + ' ' + line.split()[2]]
+            else:
+                document.header[i:i+1] = [f + ' ' + line.split()[1]]
+        j = j + 1
+
+
 ##
 # Conversion hub
 #
@@ -2053,10 +2124,12 @@ convert = [
            [497, [convert_external_bbox]],
            [498, []],
            [499, [convert_moderncv]],
-           [500, []]
+           [500, []],
+           [501, [convert_fontsettings]]
           ]
 
 revert =  [
+           [500, [revert_fontsettings]],
            [499, [revert_achemso]],
            [498, [revert_moderncv_1, revert_moderncv_2]],
            [497, [revert_tcolorbox_1, revert_tcolorbox_2,
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 3746882..a73194d 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -377,16 +377,22 @@ BufferParams::BufferParams()
 	tocdepth = 3;
 	language = default_language;
 	fontenc = "global";
-	fonts_roman = "default";
-	fonts_sans = "default";
-	fonts_typewriter = "default";
-	fonts_math = "auto";
+	fonts_roman[0] = "default";
+	fonts_roman[1] = "default";
+	fonts_sans[0] = "default";
+	fonts_sans[1] = "default";
+	fonts_typewriter[0] = "default";
+	fonts_typewriter[1] = "default";
+	fonts_math[0] = "auto";
+	fonts_math[1] = "auto";
 	fonts_default_family = "default";
 	useNonTeXFonts = false;
 	fonts_expert_sc = false;
 	fonts_old_figures = false;
-	fonts_sans_scale = 100;
-	fonts_typewriter_scale = 100;
+	fonts_sans_scale[0] = 100;
+	fonts_sans_scale[1] = 100;
+	fonts_typewriter_scale[0] = 100;
+	fonts_typewriter_scale[1] = 100;
 	inputenc = "auto";
 	lang_package = "default";
 	graphics_driver = "default";
@@ -726,17 +732,17 @@ string BufferParams::readToken(Lexer & lex, string const & token,
 		lex.eatLine();
 		fontenc = lex.getString();
 	} else if (token == "\\font_roman") {
-		lex.eatLine();
-		fonts_roman = lex.getString();
+		lex >> fonts_roman[0];
+		lex >> fonts_roman[1];
 	} else if (token == "\\font_sans") {
-		lex.eatLine();
-		fonts_sans = lex.getString();
+		lex >> fonts_sans[0];
+		lex >> fonts_sans[1];
 	} else if (token == "\\font_typewriter") {
-		lex.eatLine();
-		fonts_typewriter = lex.getString();
+		lex >> fonts_typewriter[0];
+		lex >> fonts_typewriter[1];
 	} else if (token == "\\font_math") {
-		lex.eatLine();
-		fonts_math = lex.getString();
+		lex >> fonts_math[0];
+		lex >> fonts_math[1];
 	} else if (token == "\\font_default_family") {
 		lex >> fonts_default_family;
 	} else if (token == "\\use_non_tex_fonts") {
@@ -746,9 +752,11 @@ string BufferParams::readToken(Lexer & lex, string const & token,
 	} else if (token == "\\font_osf") {
 		lex >> fonts_old_figures;
 	} else if (token == "\\font_sf_scale") {
-		lex >> fonts_sans_scale;
+		lex >> fonts_sans_scale[0];
+		lex >> fonts_sans_scale[1];
 	} else if (token == "\\font_tt_scale") {
-		lex >> fonts_typewriter_scale;
+		lex >> fonts_typewriter_scale[0];
+		lex >> fonts_typewriter_scale[1];
 	} else if (token == "\\font_cjk") {
 		lex >> fonts_cjk;
 	} else if (token == "\\paragraph_separation") {
@@ -1092,16 +1100,22 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
 	os << "\\language_package " << lang_package
 	   << "\n\\inputencoding " << inputenc
 	   << "\n\\fontencoding " << fontenc
-	   << "\n\\font_roman " << fonts_roman
-	   << "\n\\font_sans " << fonts_sans
-	   << "\n\\font_typewriter " << fonts_typewriter
-	   << "\n\\font_math " << fonts_math
+	   << "\n\\font_roman \"" << fonts_roman[0]
+	   << "\" \"" << fonts_roman[1] << '"'
+	   << "\n\\font_sans \"" << fonts_sans[0]
+	   << "\" \"" << fonts_sans[1] << '"'
+	   << "\n\\font_typewriter \"" << fonts_typewriter[0]
+	   << "\" \"" << fonts_typewriter[1] << '"'
+	   << "\n\\font_math " << fonts_math[0]
+	   << "\" \"" << fonts_math[1] << '"'
 	   << "\n\\font_default_family " << fonts_default_family
 	   << "\n\\use_non_tex_fonts " << convert<string>(useNonTeXFonts)
 	   << "\n\\font_sc " << convert<string>(fonts_expert_sc)
 	   << "\n\\font_osf " << convert<string>(fonts_old_figures)
-	   << "\n\\font_sf_scale " << fonts_sans_scale
-	   << "\n\\font_tt_scale " << fonts_typewriter_scale
+	   << "\n\\font_sf_scale " << fonts_sans_scale[0]
+	   << ' ' << fonts_sans_scale[1]
+	   << "\n\\font_tt_scale " << fonts_typewriter_scale[0]
+	   << ' ' << fonts_typewriter_scale[1]
 	   << '\n';
 	if (!fonts_cjk.empty()) {
 		os << "\\font_cjk " << fonts_cjk << '\n';
@@ -1373,7 +1387,7 @@ void BufferParams::validate(LaTeXFeatures & features) const
 		|| useNonTeXFonts))
 		features.require("polyglossia");
 
-	if (useNonTeXFonts && fonts_math != "auto")
+	if (useNonTeXFonts && fontsMath() != "auto")
 		features.require("unicode-math");
 
 	if (!language->requires().empty())
@@ -1540,7 +1554,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 	string const ams = features.loadAMSPackages();
 	bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
 	bool const use_newtxmath =
-		theLaTeXFonts().getLaTeXFont(from_ascii(fonts_math)).getUsedPackage(
+		theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getUsedPackage(
 			ot1, false, false) == "newtxmath";
 	if ((useNonTeXFonts || use_newtxmath) && !ams.empty())
 		os << from_ascii(ams);
@@ -3033,9 +3047,9 @@ string const BufferParams::parseFontName(string const & name) const
 
 string const BufferParams::loadFonts(LaTeXFeatures & features) const
 {
-	if (fonts_roman == "default" && fonts_sans == "default"
-	    && fonts_typewriter == "default"
-	    && (fonts_math == "default" || fonts_math == "auto"))
+	if (fontsRoman() == "default" && fontsSans() == "default"
+	    && fontsTypewriter() == "default"
+	    && (fontsMath() == "default" || fontsMath() == "auto"))
 		//nothing to do
 		return string();
 
@@ -3064,28 +3078,28 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
 		string const texmapping =
 			(features.runparams().flavor == OutputParams::XETEX) ?
 			"Mapping=tex-text" : "Ligatures=TeX";
-		if (fonts_roman != "default") {
+		if (fontsRoman() != "default") {
 			os << "\\setmainfont[" << texmapping;
 			if (fonts_old_figures)
 				os << ",Numbers=OldStyle";
-			os << "]{" << parseFontName(fonts_roman) << "}\n";
+			os << "]{" << parseFontName(fontsRoman()) << "}\n";
 		}
-		if (fonts_sans != "default") {
-			string const sans = parseFontName(fonts_sans);
-			if (fonts_sans_scale != 100)
+		if (fontsSans() != "default") {
+			string const sans = parseFontName(fontsSans());
+			if (fontsSansScale() != 100)
 				os << "\\setsansfont[Scale="
-				   << float(fonts_sans_scale) / 100
+				   << float(fontsSansScale()) / 100
 				   << "," << texmapping << "]{"
 				   << sans << "}\n";
 			else
 				os << "\\setsansfont[" << texmapping << "]{"
 				   << sans << "}\n";
 		}
-		if (fonts_typewriter != "default") {
-			string const mono = parseFontName(fonts_typewriter);
-			if (fonts_typewriter_scale != 100)
+		if (fontsTypewriter() != "default") {
+			string const mono = parseFontName(fontsTypewriter());
+			if (fontsTypewriterScale() != 100)
 				os << "\\setmonofont[Scale="
-				   << float(fonts_typewriter_scale) / 100
+				   << float(fontsTypewriterScale()) / 100
 				   << "]{"
 				   << mono << "}\n";
 			else
@@ -3098,26 +3112,26 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
 	// Tex Fonts
 	bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
 	bool const dryrun = features.runparams().dryrun;
-	bool const complete = (fonts_sans == "default" && fonts_typewriter == "default");
-	bool const nomath = (fonts_math == "default");
+	bool const complete = (fontsSans() == "default" && fontsTypewriter() == "default");
+	bool const nomath = (fontsMath() == "default");
 
 	// ROMAN FONTS
-	os << theLaTeXFonts().getLaTeXFont(from_ascii(fonts_roman)).getLaTeXCode(
+	os << theLaTeXFonts().getLaTeXFont(from_ascii(fontsRoman())).getLaTeXCode(
 		dryrun, ot1, complete, fonts_expert_sc, fonts_old_figures,
 		nomath);
 
 	// SANS SERIF
-	os << theLaTeXFonts().getLaTeXFont(from_ascii(fonts_sans)).getLaTeXCode(
+	os << theLaTeXFonts().getLaTeXFont(from_ascii(fontsSans())).getLaTeXCode(
 		dryrun, ot1, complete, fonts_expert_sc, fonts_old_figures,
-		nomath, fonts_sans_scale);
+		nomath, fontsSansScale());
 
 	// MONOSPACED/TYPEWRITER
-	os << theLaTeXFonts().getLaTeXFont(from_ascii(fonts_typewriter)).getLaTeXCode(
+	os << theLaTeXFonts().getLaTeXFont(from_ascii(fontsTypewriter())).getLaTeXCode(
 		dryrun, ot1, complete, fonts_expert_sc, fonts_old_figures,
-		nomath, fonts_typewriter_scale);
+		nomath, fontsTypewriterScale());
 
 	// MATH
-	os << theLaTeXFonts().getLaTeXFont(from_ascii(fonts_math)).getLaTeXCode(
+	os << theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getLaTeXCode(
 		dryrun, ot1, complete, fonts_expert_sc, fonts_old_figures,
 		nomath);
 
diff --git a/src/BufferParams.h b/src/BufferParams.h
index ba3d510..6b2bb47 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -245,14 +245,22 @@ public:
 	std::string index_command;
 	/// font encoding(s) requested for this document
 	std::string fontenc;
+	/// the rm font: [0] for TeX fonts, [1] for non-TeX fonts
+	std::string fonts_roman[2];
 	/// the rm font
-	std::string fonts_roman;
+	std::string const & fontsRoman() const { return fonts_roman[useNonTeXFonts]; }
+	/// the sf font: [0] for TeX fonts, [1] for non-TeX fonts
+	std::string fonts_sans[2];
 	/// the sf font
-	std::string fonts_sans;
+	std::string const & fontsSans() const { return fonts_sans[useNonTeXFonts]; }
+	/// the tt font: [0] for TeX fonts, [1] for non-TeX fonts
+	std::string fonts_typewriter[2];
 	/// the tt font
-	std::string fonts_typewriter;
+	std::string const & fontsTypewriter() const { return fonts_typewriter[useNonTeXFonts]; }
+	/// the math font: [0] for TeX fonts, [1] for non-TeX fonts
+	std::string fonts_math[2];
 	/// the math font
-	std::string fonts_math;
+	std::string const & fontsMath() const { return fonts_math[useNonTeXFonts]; }
 	/// the default family (rm, sf, tt)
 	std::string fonts_default_family;
 	/// use the fonts of the OS (OpenType, True Type) directly
@@ -261,10 +269,14 @@ public:
 	bool fonts_expert_sc;
 	/// use Old Style Figures
 	bool fonts_old_figures;
+	/// the scale factor of the sf font: [0] for TeX fonts, [1] for non-TeX fonts
+	int fonts_sans_scale[2];
 	/// the scale factor of the sf font
-	int fonts_sans_scale;
+	int fontsSansScale() const { return fonts_sans_scale[useNonTeXFonts]; }
+	/// the scale factor of the tt font: [0] for TeX fonts, [1] for non-TeX fonts
+	int fonts_typewriter_scale[2];
 	/// the scale factor of the tt font
-	int fonts_typewriter_scale;
+	int fontsTypewriterScale() const { return fonts_typewriter_scale[useNonTeXFonts]; }
 	/// the font used by the CJK command
 	std::string fonts_cjk;
 	///
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index fb8fb60..5405ce0 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -516,24 +516,24 @@ bool LaTeXFeatures::isProvided(string const & name) const
 
 	bool const ot1 = (params_.font_encoding() == "default"
 		|| params_.font_encoding() == "OT1");
-	bool const complete = (params_.fonts_sans == "default")
-		&& (params_.fonts_typewriter == "default");
-	bool const nomath = (params_.fonts_math == "default");
+	bool const complete = (params_.fontsSans() == "default"
+		&& params_.fontsTypewriter() == "default");
+	bool const nomath = (params_.fontsMath() == "default");
 	return params_.documentClass().provides(name)
 		|| theLaTeXFonts().getLaTeXFont(
-			from_ascii(params_.fonts_roman)).provides(name, ot1,
+			from_ascii(params_.fontsRoman())).provides(name, ot1,
 								  complete,
 								  nomath)
 		|| theLaTeXFonts().getLaTeXFont(
-			from_ascii(params_.fonts_sans)).provides(name, ot1,
+			from_ascii(params_.fontsSans())).provides(name, ot1,
 								 complete,
 								 nomath)
 		|| theLaTeXFonts().getLaTeXFont(
-			from_ascii(params_.fonts_typewriter)).provides(name, ot1,
+			from_ascii(params_.fontsTypewriter())).provides(name, ot1,
 								       complete,
 								       nomath)
 		|| theLaTeXFonts().getLaTeXFont(
-			from_ascii(params_.fonts_math)).provides(name, ot1,
+			from_ascii(params_.fontsMath())).provides(name, ot1,
 								       complete,
 								       nomath);
 	// TODO: "textbaltic" provided, if the font-encoding is "L7x"
@@ -934,7 +934,7 @@ string const LaTeXFeatures::getPackages() const
 	string const amsPackages = loadAMSPackages();
 	bool const ot1 = (params_.font_encoding() == "default" || params_.font_encoding() == "OT1");
 	bool const use_newtxmath =
-		theLaTeXFonts().getLaTeXFont(from_ascii(params_.fonts_math)).getUsedPackage(
+		theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
 			ot1, false, false) == "newtxmath";
 
 	if (!params_.useNonTeXFonts && !use_newtxmath && !amsPackages.empty())
diff --git a/src/frontends/qt4/GuiDocument.cpp b/src/frontends/qt4/GuiDocument.cpp
index a4aa71f..cf64849 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -774,7 +774,7 @@ GuiDocument::GuiDocument(GuiView & lv)
 		outputModule->synccustomCB));
 
 	// fonts
-	fontModule = new UiWidget<Ui::FontUi>;
+	fontModule = new FontModule;
 	connect(fontModule->osFontsCB, SIGNAL(clicked()),
 		this, SLOT(change_adaptor()));
 	connect(fontModule->osFontsCB, SIGNAL(toggled(bool)),
@@ -1775,6 +1775,18 @@ void GuiDocument::languageChanged(int i)
 void GuiDocument::osFontsChanged(bool nontexfonts)
 {
 	bool const tex_fonts = !nontexfonts;
+	// store current fonts
+	QString const font_roman = fontModule->fontsRomanCO->itemData(
+			fontModule->fontsRomanCO->currentIndex()).toString();
+	QString const font_sans = fontModule->fontsSansCO->itemData(
+			fontModule->fontsSansCO->currentIndex()).toString();
+	QString const font_typewriter = fontModule->fontsTypewriterCO->itemData(
+			fontModule->fontsTypewriterCO->currentIndex()).toString();
+	QString const font_math = fontModule->fontsMathCO->itemData(
+			fontModule->fontsMathCO->currentIndex()).toString();
+	int const font_sf_scale = fontModule->scaleSansSB->value();
+	int const font_tt_scale = fontModule->scaleTypewriterSB->value();
+
 	updateFontlist();
 	// store default format
 	QString const dformat = outputModule->defaultFormatCO->itemData(
@@ -1786,6 +1798,28 @@ void GuiDocument::osFontsChanged(bool nontexfonts)
 	if (index == -1)
 		index = 0;
 	outputModule->defaultFormatCO->setCurrentIndex(index);
+
+	// try to restore fonts which were selected two toggles ago
+	index = fontModule->fontsRomanCO->findData(fontModule->font_roman);
+	if (index != -1)
+		fontModule->fontsRomanCO->setCurrentIndex(index);
+	index = fontModule->fontsSansCO->findData(fontModule->font_sans);
+	if (index != -1)
+		fontModule->fontsSansCO->setCurrentIndex(index);
+	index = fontModule->fontsTypewriterCO->findData(fontModule->font_typewriter);
+	if (index != -1)
+		fontModule->fontsTypewriterCO->setCurrentIndex(index);
+	index = fontModule->fontsMathCO->findData(fontModule->font_math);
+	if (index != -1)
+		fontModule->fontsMathCO->setCurrentIndex(index);
+	// save fonts for next next toggle
+	fontModule->font_roman = font_roman;
+	fontModule->font_sans = font_sans;
+	fontModule->font_typewriter = font_typewriter;
+	fontModule->font_math = font_math;
+	fontModule->font_sf_scale = font_sf_scale;
+	fontModule->font_tt_scale = font_tt_scale;
+
 	langModule->encodingCO->setEnabled(tex_fonts &&
 		!langModule->defaultencodingRB->isChecked());
 	langModule->defaultencodingRB->setEnabled(tex_fonts);
@@ -2823,21 +2857,25 @@ void GuiDocument::applyView()
 	bp_.display_pixel_ratio = theGuiApp()->pixelRatio();
 
 	// fonts
-	bp_.fonts_roman =
+	bp_.fonts_roman[nontexfonts] =
 		fromqstr(fontModule->fontsRomanCO->
 			itemData(fontModule->fontsRomanCO->currentIndex()).toString());
+	bp_.fonts_roman[!nontexfonts] = fromqstr(fontModule->font_roman);
 
-	bp_.fonts_sans =
+	bp_.fonts_sans[nontexfonts] =
 		fromqstr(fontModule->fontsSansCO->
 			itemData(fontModule->fontsSansCO->currentIndex()).toString());
+	bp_.fonts_sans[!nontexfonts] = fromqstr(fontModule->font_sans);
 
-	bp_.fonts_typewriter =
+	bp_.fonts_typewriter[nontexfonts] =
 		fromqstr(fontModule->fontsTypewriterCO->
 			itemData(fontModule->fontsTypewriterCO->currentIndex()).toString());
+	bp_.fonts_typewriter[!nontexfonts] = fromqstr(fontModule->font_typewriter);
 
-	bp_.fonts_math =
+	bp_.fonts_math[nontexfonts] =
 		fromqstr(fontModule->fontsMathCO->
 			itemData(fontModule->fontsMathCO->currentIndex()).toString());
+	bp_.fonts_math[!nontexfonts] = fromqstr(fontModule->font_math);
 
 	QString const fontenc =
 		fontModule->fontencCO->itemData(fontModule->fontencCO->currentIndex()).toString();
@@ -2849,9 +2887,11 @@ void GuiDocument::applyView()
 	bp_.fonts_cjk =
 		fromqstr(fontModule->cjkFontLE->text());
 
-	bp_.fonts_sans_scale = fontModule->scaleSansSB->value();
+	bp_.fonts_sans_scale[nontexfonts] = fontModule->scaleSansSB->value();
+	bp_.fonts_sans_scale[!nontexfonts] = fontModule->font_sf_scale;
 
-	bp_.fonts_typewriter_scale = fontModule->scaleTypewriterSB->value();
+	bp_.fonts_typewriter_scale[nontexfonts] = fontModule->scaleTypewriterSB->value();
+	bp_.fonts_typewriter_scale[!nontexfonts] = fontModule->font_tt_scale;
 
 	bp_.fonts_expert_sc = fontModule->fontScCB->isChecked();
 
@@ -3269,37 +3309,41 @@ void GuiDocument::paramsToDialog()
 	updateFontsize(documentClass().opt_fontsize(),
 			bp_.fontsize);
 
-	QString font = toqstr(bp_.fonts_roman);
+	QString font = toqstr(bp_.fontsRoman());
 	int rpos = fontModule->fontsRomanCO->findData(font);
 	if (rpos == -1) {
 		rpos = fontModule->fontsRomanCO->count();
 		fontModule->fontsRomanCO->addItem(font + qt_(" (not installed)"), font);
 	}
 	fontModule->fontsRomanCO->setCurrentIndex(rpos);
+	fontModule->font_roman = toqstr(bp_.fonts_roman[!bp_.useNonTeXFonts]);
 
-	font = toqstr(bp_.fonts_sans);
+	font = toqstr(bp_.fontsSans());
 	int spos = fontModule->fontsSansCO->findData(font);
 	if (spos == -1) {
 		spos = fontModule->fontsSansCO->count();
 		fontModule->fontsSansCO->addItem(font + qt_(" (not installed)"), font);
 	}
 	fontModule->fontsSansCO->setCurrentIndex(spos);
+	fontModule->font_sans = toqstr(bp_.fonts_sans[!bp_.useNonTeXFonts]);
 
-	font = toqstr(bp_.fonts_typewriter);
+	font = toqstr(bp_.fontsTypewriter());
 	int tpos = fontModule->fontsTypewriterCO->findData(font);
 	if (tpos == -1) {
 		tpos = fontModule->fontsTypewriterCO->count();
 		fontModule->fontsTypewriterCO->addItem(font + qt_(" (not installed)"), font);
 	}
 	fontModule->fontsTypewriterCO->setCurrentIndex(tpos);
+	fontModule->font_typewriter = toqstr(bp_.fonts_typewriter[!bp_.useNonTeXFonts]);
 
-	font = toqstr(bp_.fonts_math);
+	font = toqstr(bp_.fontsMath());
 	int mpos = fontModule->fontsMathCO->findData(font);
 	if (mpos == -1) {
 		mpos = fontModule->fontsMathCO->count();
 		fontModule->fontsMathCO->addItem(font + qt_(" (not installed)"), font);
 	}
 	fontModule->fontsMathCO->setCurrentIndex(mpos);
+	fontModule->font_math = toqstr(bp_.fonts_math[!bp_.useNonTeXFonts]);
 
 	if (bp_.useNonTeXFonts && os_fonts_available) {
 		fontModule->fontencLA->setEnabled(false);
@@ -3322,8 +3366,10 @@ void GuiDocument::paramsToDialog()
 
 	fontModule->fontScCB->setChecked(bp_.fonts_expert_sc);
 	fontModule->fontOsfCB->setChecked(bp_.fonts_old_figures);
-	fontModule->scaleSansSB->setValue(bp_.fonts_sans_scale);
-	fontModule->scaleTypewriterSB->setValue(bp_.fonts_typewriter_scale);
+	fontModule->scaleSansSB->setValue(bp_.fontsSansScale());
+	fontModule->font_sf_scale = bp_.fonts_sans_scale[!bp_.useNonTeXFonts];
+	fontModule->scaleTypewriterSB->setValue(bp_.fontsTypewriterScale());
+	fontModule->font_tt_scale = bp_.fonts_typewriter_scale[!bp_.useNonTeXFonts];
 
 	int nn = findToken(GuiDocument::fontfamilies, bp_.fonts_default_family);
 	if (nn >= 0)
diff --git a/src/frontends/qt4/GuiDocument.h b/src/frontends/qt4/GuiDocument.h
index c35aec3..5bf1340 100644
--- a/src/frontends/qt4/GuiDocument.h
+++ b/src/frontends/qt4/GuiDocument.h
@@ -51,6 +51,7 @@ class GuiIndices;
 class ModuleSelectionManager;
 class PreambleModule;
 class LocalLayout;
+class FontModule;
 
 ///
 typedef void const * BufferId;
@@ -134,7 +135,7 @@ private:
 
 	UiWidget<Ui::TextLayoutUi> *textLayoutModule;
 	UiWidget<Ui::MasterChildUi> *masterChildModule;
-	UiWidget<Ui::FontUi> *fontModule;
+	FontModule *fontModule;
 	UiWidget<Ui::PageLayoutUi> *pageLayoutModule;
 	UiWidget<Ui::MarginsUi> *marginsModule;
 	UiWidget<Ui::LanguageUi> *langModule;
@@ -329,6 +330,25 @@ private:
 };
 
 
+class FontModule : public UiWidget<Ui::FontUi>
+{
+	Q_OBJECT
+public:
+	/// The roman font currently not selected by osFontsCB->isChecked()
+	QString font_roman;
+	/// The sans font currently not selected by osFontsCB->isChecked()
+	QString font_sans;
+	/// The typewriter font currently not selected by osFontsCB->isChecked()
+	QString font_typewriter;
+	/// The math font currently not selected by osFontsCB->isChecked()
+	QString font_math;
+	/// The sans font scale currently not selected by osFontsCB->isChecked()
+	int font_sf_scale;
+	/// The typewriter font scale currently not selected by osFontsCB->isChecked()
+	int font_tt_scale;
+};
+
+
 } // namespace frontend
 } // namespace lyx
 
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index 4809a4a..01587cc 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -473,16 +473,22 @@ Preamble::Preamble() : one_language(true), explicit_babel(false),
 	//h_float_placement;
 	//h_fontcolor;
 	h_fontencoding            = "default";
-	h_font_roman              = "default";
-	h_font_sans               = "default";
-	h_font_typewriter         = "default";
-	h_font_math               = "auto";
+	h_font_roman[0]           = "default";
+	h_font_roman[1]           = "default";
+	h_font_sans[0]            = "default";
+	h_font_sans[1]            = "default";
+	h_font_typewriter[0]      = "default";
+	h_font_typewriter[1]      = "default";
+	h_font_math[0]            = "auto";
+	h_font_math[1]            = "auto";
 	h_font_default_family     = "default";
 	h_use_non_tex_fonts       = false;
 	h_font_sc                 = "false";
 	h_font_osf                = "false";
-	h_font_sf_scale           = "100";
-	h_font_tt_scale           = "100";
+	h_font_sf_scale[0]        = "100";
+	h_font_sf_scale[1]        = "100";
+	h_font_tt_scale[0]        = "100";
+	h_font_tt_scale[1]        = "100";
 	//h_font_cjk
 	h_graphics                = "default";
 	h_default_output_format   = "default";
@@ -684,25 +690,25 @@ void Preamble::handle_package(Parser &p, string const & name,
 
 	// roman fonts
 	if (is_known(name, known_roman_fonts))
-		h_font_roman = name;
+		h_font_roman[0] = name;
 
 	if (name == "fourier") {
-		h_font_roman = "utopia";
+		h_font_roman[0] = "utopia";
 		// when font uses real small capitals
 		if (opts == "expert")
 			h_font_sc = "true";
 	}
 
 	if (name == "garamondx") {
-		h_font_roman = "garamondx";
+		h_font_roman[0] = "garamondx";
 		if (opts == "osfI")
 			h_font_osf = "true";
 	}
 
 	if (name == "libertine") {
-		h_font_roman = "libertine";
+		h_font_roman[0] = "libertine";
 		// this automatically invokes biolinum
-		h_font_sans = "biolinum";
+		h_font_sans[0] = "biolinum";
 		if (opts == "osf")
 			h_font_osf = "true";
 		else if (opts == "lining")
@@ -710,7 +716,7 @@ void Preamble::handle_package(Parser &p, string const & name,
 	}
 
 	if (name == "libertine-type1") {
-		h_font_roman = "libertine";
+		h_font_roman[0] = "libertine";
 		// NOTE: contrary to libertine.sty, libertine-type1
 		// does not automatically invoke biolinum
 		if (opts == "lining")
@@ -721,11 +727,11 @@ void Preamble::handle_package(Parser &p, string const & name,
 
 	if (name == "mathdesign") {
 		if (opts.find("charter") != string::npos)
-			h_font_roman = "md-charter";
+			h_font_roman[0] = "md-charter";
 		if (opts.find("garamond") != string::npos)
-			h_font_roman = "md-garamond";
+			h_font_roman[0] = "md-garamond";
 		if (opts.find("utopia") != string::npos)
-			h_font_roman = "md-utopia";
+			h_font_roman[0] = "md-utopia";
 		if (opts.find("expert") != string::npos) {
 			h_font_sc = "true";
 			h_font_osf = "true";
@@ -733,22 +739,22 @@ void Preamble::handle_package(Parser &p, string const & name,
 	}
 
 	else if (name == "mathpazo")
-		h_font_roman = "palatino";
+		h_font_roman[0] = "palatino";
 
 	else if (name == "mathptmx")
-		h_font_roman = "times";
+		h_font_roman[0] = "times";
 
 	// sansserif fonts
 	if (is_known(name, known_sans_fonts)) {
-		h_font_sans = name;
+		h_font_sans[0] = name;
 		if (options.size() >= 1) {
-			if (scale_as_percentage(opts, h_font_sf_scale))
+			if (scale_as_percentage(opts, h_font_sf_scale[0]))
 				options.clear();
 		}
 	}
 
 	if (name == "biolinum-type1") {
-		h_font_sans = "biolinum";
+		h_font_sans[0] = "biolinum";
 		// biolinum can have several options, e.g. [osf,scaled=0.97]
 		string::size_type pos = opts.find("osf");
 		if (pos != string::npos)
@@ -760,16 +766,16 @@ void Preamble::handle_package(Parser &p, string const & name,
 		// fourier can be set as roman font _only_
 		// fourier as typewriter is handled in handling of \ttdefault
 		if (name != "fourier") {
-			h_font_typewriter = name;
+			h_font_typewriter[0] = name;
 			if (options.size() >= 1) {
-				if (scale_as_percentage(opts, h_font_tt_scale))
+				if (scale_as_percentage(opts, h_font_tt_scale[0]))
 					options.clear();
 			}
 		}
 	}
 
 	if (name == "libertineMono-type1") {
-		h_font_typewriter = "libertine-mono";
+		h_font_typewriter[0] = "libertine-mono";
 	}
 
 	// font uses old-style figure
@@ -778,26 +784,26 @@ void Preamble::handle_package(Parser &p, string const & name,
 
 	// math fonts
 	if (is_known(name, known_math_fonts))
-		h_font_math = name;
+		h_font_math[0] = name;
 
 	if (name == "newtxmath") {
 		if (opts.empty())
-			h_font_math = "newtxmath";
+			h_font_math[0] = "newtxmath";
 		else if (opts == "garamondx")
-			h_font_math = "garamondx-ntxm";
+			h_font_math[0] = "garamondx-ntxm";
 		else if (opts == "libertine")
-			h_font_math = "libertine-ntxm";
+			h_font_math[0] = "libertine-ntxm";
 		else if (opts == "minion")
-			h_font_math = "minion-ntxm";
+			h_font_math[0] = "minion-ntxm";
 	}
 
 	if (name == "iwona")
 		if (opts == "math")
-			h_font_math = "iwona-math";
+			h_font_math[0] = "iwona-math";
 
 	if (name == "kurier")
 		if (opts == "math")
-			h_font_math = "kurier-math";
+			h_font_math[0] = "kurier-math";
 
 	// after the detection and handling of special cases, we can remove the
 	// fonts, otherwise they would appear in the preamble, see bug #7856
@@ -1138,16 +1144,20 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc, string const & outfiled
 	   << "\\language_package " << h_language_package << "\n"
 	   << "\\inputencoding " << h_inputencoding << "\n"
 	   << "\\fontencoding " << h_fontencoding << "\n"
-	   << "\\font_roman " << h_font_roman << "\n"
-	   << "\\font_sans " << h_font_sans << "\n"
-	   << "\\font_typewriter " << h_font_typewriter << "\n"
-	   << "\\font_math " << h_font_math << "\n"
+	   << "\\font_roman \"" << h_font_roman[0]
+	   << "\" \"" << h_font_roman[1] << "\"\n"
+	   << "\\font_sans \"" << h_font_sans[0] << "\" \"" << h_font_sans[1] << "\"\n"
+	   << "\\font_typewriter \"" << h_font_typewriter[0]
+	   << "\" \"" << h_font_typewriter[1] << "\"\n"
+	   << "\\font_math \"" << h_font_math[0] << "\" \"" << h_font_math[1] << "\"\n"
 	   << "\\font_default_family " << h_font_default_family << "\n"
 	   << "\\use_non_tex_fonts " << (h_use_non_tex_fonts ? "true" : "false") << '\n'
 	   << "\\font_sc " << h_font_sc << "\n"
 	   << "\\font_osf " << h_font_osf << "\n"
-	   << "\\font_sf_scale " << h_font_sf_scale << "\n"
-	   << "\\font_tt_scale " << h_font_tt_scale << '\n';
+	   << "\\font_sf_scale " << h_font_sf_scale[0]
+	   << ' ' << h_font_sf_scale[1] << '\n'
+	   << "\\font_tt_scale " << h_font_tt_scale[0]
+	   << ' ' << h_font_tt_scale[1] << '\n';
 	if (!h_font_cjk.empty())
 		os << "\\font_cjk " << h_font_cjk << '\n';
 	os << "\\graphics " << h_graphics << '\n'
@@ -1357,7 +1367,7 @@ void Preamble::parse(Parser & p, string const & forceclass,
 		else if (t.cs() == "setmainfont") {
 			// we don't care about the option
 			p.hasOpt() ? p.getOpt() : string();
-			h_font_roman = p.getArg('{', '}');
+			h_font_roman[1] = p.getArg('{', '}');
 		}
 
 		else if (t.cs() == "setsansfont" || t.cs() == "setmonofont") {
@@ -1377,12 +1387,12 @@ void Preamble::parse(Parser & p, string const & forceclass,
 			}
 			if (t.cs() == "setsansfont") {
 				if (!scale.empty())
-					h_font_sf_scale = scale;
-				h_font_sans = p.getArg('{', '}');
+					h_font_sf_scale[1] = scale;
+				h_font_sans[1] = p.getArg('{', '}');
 			} else {
 				if (!scale.empty())
-					h_font_tt_scale = scale;
-				h_font_typewriter = p.getArg('{', '}');
+					h_font_tt_scale[1] = scale;
+				h_font_typewriter[1] = p.getArg('{', '}');
 			}
 		}
 
@@ -1528,19 +1538,19 @@ void Preamble::parse(Parser & p, string const & forceclass,
 			// font settings
 			if (name == "\\rmdefault")
 				if (is_known(body, known_roman_fonts)) {
-					h_font_roman = body;
+					h_font_roman[0] = body;
 					p.skip_spaces();
 					in_lyx_preamble = true;
 				}
 			if (name == "\\sfdefault")
 				if (is_known(body, known_sans_fonts)) {
-					h_font_sans = body;
+					h_font_sans[0] = body;
 					p.skip_spaces();
 					in_lyx_preamble = true;
 				}
 			if (name == "\\ttdefault")
 				if (is_known(body, known_typewriter_fonts)) {
-					h_font_typewriter = body;
+					h_font_typewriter[0] = body;
 					p.skip_spaces();
 					in_lyx_preamble = true;
 				}
diff --git a/src/tex2lyx/Preamble.h b/src/tex2lyx/Preamble.h
index 71367b1..1c3fe66 100644
--- a/src/tex2lyx/Preamble.h
+++ b/src/tex2lyx/Preamble.h
@@ -131,16 +131,16 @@ private:
 	std::string h_float_placement;
 	std::string h_fontcolor;
 	std::string h_fontencoding;
-	std::string h_font_math;
-	std::string h_font_roman;
-	std::string h_font_sans;
-	std::string h_font_typewriter;
+	std::string h_font_math[2];
+	std::string h_font_roman[2];
+	std::string h_font_sans[2];
+	std::string h_font_typewriter[2];
 	std::string h_font_default_family;
 	bool h_use_non_tex_fonts;
 	std::string h_font_sc;
 	std::string h_font_osf;
-	std::string h_font_sf_scale;
-	std::string h_font_tt_scale;
+	std::string h_font_sf_scale[2];
+	std::string h_font_tt_scale[2];
 	bool h_font_cjk_set;
 	std::string h_font_cjk;
 	std::string h_graphics;
diff --git a/src/tex2lyx/test/CJK.lyx.lyx b/src/tex2lyx/test/CJK.lyx.lyx
index 552ca21..b3e4a47 100644
--- a/src/tex2lyx/test/CJK.lyx.lyx
+++ b/src/tex2lyx/test/CJK.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -21,16 +21,16 @@
 \language_package default
 \inputencoding utf8
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/CJKutf8.lyx.lyx b/src/tex2lyx/test/CJKutf8.lyx.lyx
index f6c0711..263abcd 100644
--- a/src/tex2lyx/test/CJKutf8.lyx.lyx
+++ b/src/tex2lyx/test/CJKutf8.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -21,16 +21,16 @@
 \language_package default
 \inputencoding utf8-cjk
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/DummyDocument.lyx.lyx b/src/tex2lyx/test/DummyDocument.lyx.lyx
index bd0b641..489308f 100644
--- a/src/tex2lyx/test/DummyDocument.lyx.lyx
+++ b/src/tex2lyx/test/DummyDocument.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -10,16 +10,16 @@
 \language_package none
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/Dummy~Document.lyx.lyx b/src/tex2lyx/test/Dummy~Document.lyx.lyx
index 89a02ed..e93a868 100644
--- a/src/tex2lyx/test/Dummy~Document.lyx.lyx
+++ b/src/tex2lyx/test/Dummy~Document.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -10,16 +10,16 @@
 \language_package none
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
index 64d4d21..3bdd502 100644
--- a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
+++ b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -20,16 +20,16 @@
 \language_package default
 \inputencoding auto
 \fontencoding default
-\font_roman Linux Libertine O
-\font_sans Linux Biolinum O
-\font_typewriter Linux Biolinum O
-\font_math auto
+\font_roman "default" "Linux Libertine O"
+\font_sans "default" "Linux Biolinum O"
+\font_typewriter "default" "Linux Biolinum O"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts true
 \font_sc false
 \font_osf false
-\font_sf_scale 75
-\font_tt_scale 100
+\font_sf_scale 100 75
+\font_tt_scale 100 100
 \graphics default
 \default_output_format pdf4
 \output_sync 0
diff --git a/src/tex2lyx/test/algo2e.lyx.lyx b/src/tex2lyx/test/algo2e.lyx.lyx
index 5a32462..ae6d472 100644
--- a/src/tex2lyx/test/algo2e.lyx.lyx
+++ b/src/tex2lyx/test/algo2e.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -19,16 +19,16 @@ algorithm2e
 \language_package none
 \inputencoding iso8859-1
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
index d91072a..588f670 100644
--- a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
+++ b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -45,16 +45,16 @@
 \language_package none
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman cmr
-\font_sans berasans
-\font_typewriter default
-\font_math auto
+\font_roman "cmr" "default"
+\font_sans "berasans" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family sfdefault
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-insets-basic.lyx.lyx b/src/tex2lyx/test/test-insets-basic.lyx.lyx
index e0d6e73..38bfb38 100644
--- a/src/tex2lyx/test/test-insets-basic.lyx.lyx
+++ b/src/tex2lyx/test/test-insets-basic.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -46,16 +46,16 @@
 \language_package none
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-insets.lyx.lyx b/src/tex2lyx/test/test-insets.lyx.lyx
index 2ebeb1b..39db027 100644
--- a/src/tex2lyx/test/test-insets.lyx.lyx
+++ b/src/tex2lyx/test/test-insets.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -22,16 +22,16 @@
 \language_package none
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-memoir.lyx.lyx b/src/tex2lyx/test/test-memoir.lyx.lyx
index 32fa929..d0232fb 100644
--- a/src/tex2lyx/test/test-memoir.lyx.lyx
+++ b/src/tex2lyx/test/test-memoir.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -17,16 +17,16 @@
 \language_package default
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-modules.lyx.lyx b/src/tex2lyx/test/test-modules.lyx.lyx
index a56bfb3..4bf0ef3 100644
--- a/src/tex2lyx/test/test-modules.lyx.lyx
+++ b/src/tex2lyx/test/test-modules.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -17,16 +17,16 @@ theorems-ams
 \language_package default
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx b/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
index 5bcf213..e77e9e3 100644
--- a/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
+++ b/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -17,16 +17,16 @@ theorems-ams
 \language_package default
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-scr.lyx.lyx b/src/tex2lyx/test/test-scr.lyx.lyx
index 2f02590..13933c4 100644
--- a/src/tex2lyx/test/test-scr.lyx.lyx
+++ b/src/tex2lyx/test/test-scr.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -14,16 +14,16 @@
 \language_package default
 \inputencoding iso8859-15
 \fontencoding T1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/test-structure.lyx.lyx b/src/tex2lyx/test/test-structure.lyx.lyx
index 45d1035..3b3a2f8 100644
--- a/src/tex2lyx/test/test-structure.lyx.lyx
+++ b/src/tex2lyx/test/test-structure.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -49,16 +49,16 @@ logicalmkup
 \language_package default
 \inputencoding iso8859-15
 \fontencoding default
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 1
diff --git a/src/tex2lyx/test/test.lyx.lyx b/src/tex2lyx/test/test.lyx.lyx
index 4b219a6..a4788a4 100644
--- a/src/tex2lyx/test/test.lyx.lyx
+++ b/src/tex2lyx/test/test.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -21,16 +21,16 @@
 \language_package none
 \inputencoding auto
 \fontencoding default
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/tex2lyx/test/verbatim.lyx.lyx b/src/tex2lyx/test/verbatim.lyx.lyx
index d6a05c3..00f7643 100644
--- a/src/tex2lyx/test/verbatim.lyx.lyx
+++ b/src/tex2lyx/test/verbatim.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.2
-\lyxformat 500
+\lyxformat 501
 \begin_document
 \begin_header
 \origin roundtrip
@@ -10,16 +10,16 @@
 \language_package none
 \inputencoding auto
 \fontencoding default
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_math auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
+\font_sf_scale 100 100
+\font_tt_scale 100 100
 \graphics default
 \default_output_format default
 \output_sync 0
diff --git a/src/version.h b/src/version.h
index 04f4b82..f6de323 100644
--- a/src/version.h
+++ b/src/version.h
@@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 500 // uwestoehr: achemso layout improvement
-#define LYX_FORMAT_TEX2LYX 500
+#define LYX_FORMAT_LYX 501 // gb: store both TeX and non-TeX font selections
+#define LYX_FORMAT_TEX2LYX 501
 
 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
 #ifndef _MSC_VER

Reply via email to