From 296f46d2ea583b8e021103ba47c1d5843c44626e Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 8 Jan 2024 04:07:06 -0500
Subject: [PATCH] Wire in custom font selection for script editors with some
 fixes from Ansa

---
 indra/llui/llkeywords.cpp                     |  32 +-
 indra/llui/llkeywords.h                       |   4 +
 .../newview/app_settings/settings_alchemy.xml |  44 +++
 indra/newview/llscripteditor.cpp              |  32 +-
 indra/newview/llscripteditor.h                |   6 +-
 .../xui/en/floater_script_ed_prefs.xml        | 125 ++++++-
 indra/newview/skins/default/xui/en/fonts.xml  | 338 ++++++++++++++++++
 7 files changed, 568 insertions(+), 13 deletions(-)

diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index d984a54edb7..9f3fe0552ff 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -544,7 +544,9 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 	S32 text_len = wtext.size() + 1;
 
-	seg_list->push_back( new LLNormalTextSegment( defaultColor, 0, text_len, editor ) );
+	LLStyleSP style = getDefaultStyle(editor);
+	style->setColor(defaultColor);
+	seg_list->push_back( new LLNormalTextSegment( style, 0, text_len, editor ) );
 
 	const llwchar* base = wtext.c_str();
 	const llwchar* cur = base;
@@ -554,7 +556,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 		{
 			if( *cur == '\n' )
 			{
-				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(cur-base);
+				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(getDefaultStyle(editor), cur-base);
 				text_segment->setToken( 0 );
 				insertSegment( *seg_list, text_segment, text_len, defaultColor, editor);
 				cur++;
@@ -703,7 +705,10 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, defaultColor, editor);
 					/*
-					LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_delimiter->getColor(), seg_start, seg_end, editor );
+					LLStyleSP seg_style = getDefaultStyle(editor);
+					seg_style->setColor(defaultColor);
+					LLTextSegmentPtr text_segment = new LLNormalTextSegment( seg_style, seg_start, seg_end, editor );
+
 					text_segment->setToken( cur_delimiter );
 					insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
 					*/
@@ -758,12 +763,14 @@ void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmen
 	{
 		if (pos!=seg_start)
 		{
-			LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_token->getColor(), seg_start, pos, editor );
+			LLStyleSP style = getDefaultStyle(editor);
+			style->setColor(cur_token->getColor());
+			LLTextSegmentPtr text_segment = new LLNormalTextSegment( style, seg_start, pos, editor );
 			text_segment->setToken( cur_token );
 			insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
 		}
 
-		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(pos);
+		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(getDefaultStyle(editor), pos);
 		text_segment->setToken( cur_token );
 		insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
 
@@ -771,7 +778,9 @@ void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmen
 		pos = wtext.find('\n',seg_start);
 	}
 
-	LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_token->getColor(), seg_start, seg_end, editor );
+	LLStyleSP style = getDefaultStyle(editor);
+	style->setColor(cur_token->getColor());
+	LLTextSegmentPtr text_segment = new LLNormalTextSegment( style, seg_start, seg_end, editor );
 	text_segment->setToken( cur_token );
 	insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
 }
@@ -793,10 +802,19 @@ void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSe
 
 	if( new_seg_end < text_len )
 	{
-		seg_list.push_back( new LLNormalTextSegment( defaultColor, new_seg_end, text_len, editor ) );
+		LLStyleSP style = getDefaultStyle(editor);
+		style->setColor(defaultColor);
+		seg_list.push_back( new LLNormalTextSegment( style, new_seg_end, text_len, editor ) );
 	}
 }
 
+LLStyleSP LLKeywords::getDefaultStyle(const LLTextEditor& editor)
+{
+	LLStyleSP style(new LLStyle(LLStyle::Params()));
+	style->setFont(editor.getFont());
+	return style;
+}
+
 #ifdef _DEBUG
 void LLKeywords::dump()
 {
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index 9e3cc9370c2..d54d562a5e8 100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -37,6 +37,8 @@
 #include <deque>
 #include "llpointer.h"
 
+class LLStyle;
+typedef LLPointer<LLStyle> LLStyleSP;
 class LLTextSegment;
 typedef LLPointer<LLTextSegment> LLTextSegmentPtr;
 
@@ -198,6 +200,8 @@ class LLKeywords
     std::string                                              getAttribute(std::string_view key);
 
 	std::string	getArguments(LLSD& arguments);
+
+	LLStyleSP getDefaultStyle(const LLTextEditor& editor);
 };
 
 #endif  // LL_LLKEYWORDS_H
diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index b63c1825087..3a131667461 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -1800,5 +1800,49 @@
 			<key>Value</key>
 			<integer>0</integer>
 		</map>
+		<key>NotecardFontName</key>
+		<map>
+			<key>Comment</key>
+			<string>Name of font for Notecard Editors</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>String</string>
+			<key>Value</key>
+			<string>SansSerif</string>
+		</map>
+		<key>NotecardFontSize</key>
+		<map>
+			<key>Comment</key>
+			<string>Size of font for Notecard Editors</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>String</string>
+			<key>Value</key>
+			<string>Medium</string>
+		</map>
+		<key>ScriptFontName</key>
+		<map>
+			<key>Comment</key>
+			<string>Name of font for Script Editors</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>String</string>
+			<key>Value</key>
+			<string>Monospace</string>
+		</map>
+		<key>ScriptFontSize</key>
+		<map>
+			<key>Comment</key>
+			<string>Size of font for Script Editors</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>String</string>
+			<key>Value</key>
+			<string>Monospace</string>
+		</map>
 	</map>
 </llsd>
diff --git a/indra/newview/llscripteditor.cpp b/indra/newview/llscripteditor.cpp
index 5e0bc06544a..18127846fc2 100644
--- a/indra/newview/llscripteditor.cpp
+++ b/indra/newview/llscripteditor.cpp
@@ -31,6 +31,8 @@
 #include "llsyntaxid.h"
 #include "lllocalcliprect.h"
 
+#include "llviewercontrol.h"
+
 const S32	UI_TEXTEDITOR_LINE_NUMBER_MARGIN = 32;
 
 static LLDefaultChildRegistry::Register<LLScriptEditor> r("script_editor");
@@ -51,6 +53,33 @@ LLScriptEditor::LLScriptEditor(const Params& p)
 	}
 }
 
+LLScriptEditor::~LLScriptEditor() 
+{
+	mFontNameConnection.disconnect();
+	mFontSizeConnection.disconnect();
+}
+
+BOOL LLScriptEditor::postBuild()
+{
+	if (auto fontp = LLFontGL::getFont(LLFontDescriptor(gSavedSettings.getString("ScriptFontName"), gSavedSettings.getString("ScriptFontSize"), 0).normalize()))
+	{
+		setFont(fontp);
+	}
+
+	auto font_callback = [this](LLControlVariable*, const LLSD& newval, const LLSD&)
+		{
+			if (auto fontp = LLFontGL::getFont(LLFontDescriptor(gSavedSettings.getString("ScriptFontName"), gSavedSettings.getString("ScriptFontSize"), 0).normalize()))
+			{
+				setFont(fontp);
+				clearSegments();
+				loadKeywords();
+			}
+		};
+	mFontNameConnection = gSavedSettings.getControl("ScriptFontName")->getCommitSignal()->connect(font_callback);
+	mFontSizeConnection = gSavedSettings.getControl("ScriptFontSize")->getCommitSignal()->connect(font_callback);
+	return LLTextEditor::postBuild();
+}
+
 void LLScriptEditor::draw()
 {
 	{
@@ -88,7 +117,6 @@ void LLScriptEditor::drawLineNumbers()
 	
 	if (mShowLineNumbers)
 	{
-		S32 left = 0;
 		S32 top = getRect().getHeight();
 		S32 bottom = 0;
 		
@@ -110,7 +138,7 @@ void LLScriptEditor::drawLineNumbers()
 			// draw the line numbers
 			if(line.mLineNum != last_line_num && line.mRect.mTop <= scrolled_view_rect.mTop)
 			{
-				const LLFontGL *num_font = LLFontGL::getFontMonospace();
+				const LLFontGL *num_font = getFont();
 				const LLWString ltext = utf8str_to_wstring(llformat("%d", line.mLineNum ));
 				BOOL is_cur_line = cursor_line == line.mLineNum;
 				const U8 style = is_cur_line ? LLFontGL::BOLD : LLFontGL::NORMAL;
diff --git a/indra/newview/llscripteditor.h b/indra/newview/llscripteditor.h
index f458203a396..52dc3efbcdd 100644
--- a/indra/newview/llscripteditor.h
+++ b/indra/newview/llscripteditor.h
@@ -41,10 +41,11 @@ class LLScriptEditor : public LLTextEditor
 		Params();
 	};
 	
-	virtual ~LLScriptEditor() {};
+	virtual ~LLScriptEditor();
 	
 	// LLView override
 	virtual void	draw();
+	BOOL	postBuild() override;
 	
 	void	initKeywords();
 	void	loadKeywords();
@@ -65,6 +66,9 @@ class LLScriptEditor : public LLTextEditor
 	
 	LLKeywords	mKeywords;
 	bool		mShowLineNumbers;
+
+	boost::signals2::connection mFontNameConnection;
+	boost::signals2::connection mFontSizeConnection;
 };
 
 #endif // LL_SCRIPTEDITOR_H
diff --git a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
index a509631026c..7eae99d0a26 100644
--- a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="false"
- height="602"
+ height="645"
  layout="topleft"
  name="floater_script_colors"
  help_topic="script_colors"
@@ -372,16 +372,135 @@ default
          bg_opaque_color="0 0 0 0.3"
          border="true"
          follows="left|top"
-         height="140"
+         height="185"
          layout="topleft"
          left="10"
          name="editor_panel"
          right="-10">
+     <text
+          type="string"
+          length="1"
+          top_pad="5"
+          follows="top|left"
+          height="16"
+          width="60"
+          word_wrap="true"
+          layout="topleft"
+          left="10"
+          name="script_font_label">
+          Font
+     </text>
+     <combo_box
+         allow_text_entry="false"
+         tool_tip="What font you would like to use in the script editor"
+         control_name="ScriptFontName"
+         follows="left|top"
+         height="16"
+         layout="topleft"
+         max_chars="128"
+         name="script_font_combo"
+         left_pad="5"
+         width="117">
+         <combo_box.item
+              label="Cascadia Code"
+              name="CascadiaCode"
+              value="CascadiaCode" />
+         <combo_box.item
+              label="Fira Code"
+              name="FiraCode"
+              value="FiraCode" />
+         <combo_box.item
+              label="Jetbrains Mono"
+              name="JetbrainsMono"
+              value="JetbrainsMono" />
+         <combo_box.item
+              label="Monaspace Argon"
+              name="MonaspaceArgon"
+              value="MonaspaceArgon" />
+         <combo_box.item
+              label="Monaspace Krypton"
+              name="MonaspaceKrypton"
+              value="MonaspaceKrypton" />
+         <combo_box.item
+              label="Monaspace Neon"
+              name="MonaspaceNeon"
+              value="MonaspaceNeon" />
+         <combo_box.item
+              label="Monaspace Xenon"
+              name="MonaspaceXenon"
+              value="MonaspaceXenon" />
+         <combo_box.item
+              label="Monospace"
+              name="Monospace"
+              value="Monospace" />
+         <combo_box.item
+              label="Noto Sans Mono"
+              name="NotoSansMono"
+              value="NotoSansMono" />
+         <combo_box.item
+              label="Open Dyslexic Mono"
+              name="OpenDyslexicMono"
+              value="OpenDyslexicMono" />
+         <combo_box.item
+              label="Source Code Pro"
+              name="SourceCodePro"
+              value="SourceCodePro" />
+         <combo_box.item
+              label="Ubuntu Mono"
+              name="UbuntuMono"
+              value="UbuntuMono" />
+     </combo_box>
+     <text
+          type="string"
+          length="1"
+          top_pad="5"
+          follows="top|left"
+          height="16"
+          width="60"
+          word_wrap="true"
+          layout="topleft"
+          left="10"
+          name="script_font_size_label">
+          Font Size
+     </text>
+     <combo_box
+         allow_text_entry="false"
+         tool_tip="What font you would like to use in the script editor"
+         control_name="ScriptFontSize"
+         follows="left|top"
+         height="16"
+         layout="topleft"
+         max_chars="128"
+         name="script_font_size_combo"
+         left_pad="5"
+         width="117">
+         <combo_box.item
+              label="Monospace"
+              name="Monospace"
+              value="Monospace" />
+         <combo_box.item
+              label="Small"
+              name="Small"
+              value="Small" />
+         <combo_box.item
+              label="Medium"
+              name="Medium"
+              value="Medium" />
+         <combo_box.item
+              label="Large"
+              name="Large"
+              value="Large" />
+         <combo_box.item
+              label="Huge"
+              name="Huge"
+              value="Huge" />
+     </combo_box>
 	<check_box
 		control_name="AlchemyLSLPreprocessor"
 		follows="left|top"
 		height="16"
 		top_pad="5"
+          left="10"
 		label="Enable LSL preprocessor"
 		tool_tip="When checked, the LSL preprocessor is enabled."
 		name="preproc_checkbox" />
@@ -443,7 +562,7 @@ default
 		max_length_chars="4096"
 		name="preprocinclude_location"
 		top_pad="0"
-		width="283" />
+		width="273" />
 	<button
 		follows="left|top"
 		height="23"
diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml
index 731e99ec76e..b727ef7028e 100644
--- a/indra/newview/skins/default/xui/en/fonts.xml
+++ b/indra/newview/skins/default/xui/en/fonts.xml
@@ -201,4 +201,342 @@
 	     comment="Size of small font (points, or 1/72 of an inch)"
 	     size="7.6"
 	     />
+
+	<!--NotoSans-->
+	<font name="NotoSans">
+		<file>NotoSans-Regular.ttf</file>
+	</font>
+
+	<font name="NotoSans" font_style="BOLD">
+		<file>NotoSans-Bold.ttf</file>
+	</font>
+
+	<font name="NotoSans" font_style="ITALIC">
+		<file>NotoSans-Italic.ttf</file>
+	</font>
+
+	<font name="NotoSans" font_style="BOLD|ITALIC">
+		<file>NotoSans-BoldItalic.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="NotoSans" size="8.0" />
+	<font_size name="Huge" font="NotoSans" size="16.0" />
+	<font_size name="Large" font="NotoSans" size="11.6" />
+	<font_size name="Medium" font="NotoSans" size="9.6" />
+	<font_size name="Small" font="NotoSans" size="8.6" />
+
+	<!--NotoSerif-->
+	<font name="NotoSerif">
+		<file>NotoSerif-Regular.ttf</file>
+	</font>
+
+	<font name="NotoSerif" font_style="BOLD">
+		<file>NotoSerif-Bold.ttf</file>
+	</font>
+
+	<font name="NotoSerif" font_style="ITALIC">
+		<file>NotoSerif-Italic.ttf</file>
+	</font>
+
+	<font name="NotoSerif" font_style="BOLD|ITALIC">
+		<file>NotoSerif-BoldItalic.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="NotoSerif" size="8.0" />
+	<font_size name="Huge" font="NotoSerif" size="16.0" />
+	<font_size name="Large" font="NotoSerif" size="11.6" />
+	<font_size name="Medium" font="NotoSerif" size="9.6" />
+	<font_size name="Small" font="NotoSerif" size="8.6" />
+
+	<!--OpenDyslexic-->
+	<font name="OpenDyslexic">
+		<file>OpenDyslexic-Regular.otf</file>
+	</font>
+
+	<font name="OpenDyslexic" font_style="BOLD">
+		<file>OpenDyslexic-Bold.otf</file>
+	</font>
+
+	<font name="OpenDyslexic" font_style="ITALIC">
+		<file>OpenDyslexic-Italic.otf</file>
+	</font>
+
+	<font name="OpenDyslexic" font_style="BOLD|ITALIC">
+		<file>OpenDyslexic-BoldItalic.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="OpenDyslexic" size="8.0" />
+	<font_size name="Huge" font="OpenDyslexic" size="16.0" />
+	<font_size name="Large" font="OpenDyslexic" size="11.6" />
+	<font_size name="Medium" font="OpenDyslexic" size="9.6" />
+	<font_size name="Small" font="OpenDyslexic" size="8.6" />
+
+	<!--Source Sans 3-->
+	<font name="SourceSans">
+		<file>SourceSans3-Regular.ttf</file>
+	</font>
+
+	<font name="SourceSans" font_style="BOLD">
+		<file>SourceSans3-Bold.ttf</file>
+	</font>
+
+	<font name="SourceSans" font_style="ITALIC">
+		<file>SourceSans3-It.ttf</file>
+	</font>
+
+	<font name="SourceSans" font_style="BOLD|ITALIC">
+		<file>SourceSans3-BoldIt.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="SourceSans" size="8.0" />
+	<font_size name="Huge" font="SourceSans" size="16.0" />
+	<font_size name="Large" font="SourceSans" size="11.6" />
+	<font_size name="Medium" font="SourceSans" size="9.6" />
+	<font_size name="Small" font="SourceSans" size="8.6" />
+
+	<!--Ubuntu-->
+	<font name="Ubuntu">
+		<file>Ubuntu-R.ttf</file>
+	</font>
+
+	<font name="Ubuntu" font_style="BOLD">
+		<file>Ubuntu-B.ttf</file>
+	</font>
+
+	<font name="Ubuntu" font_style="ITALIC">
+		<file>Ubuntu-RI.ttf</file>
+	</font>
+
+	<font name="Ubuntu" font_style="BOLD|ITALIC">
+		<file>Ubuntu-BI.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="Ubuntu" size="8.0" />
+	<font_size name="Huge" font="Ubuntu" size="16.0" />
+	<font_size name="Large" font="Ubuntu" size="11.6" />
+	<font_size name="Medium" font="Ubuntu" size="9.6" />
+	<font_size name="Small" font="Ubuntu" size="8.6" />
+
+	<!--Monospace Fonts-->
+
+	<!--Cascadia Code-->
+	<font name="CascadiaCode">
+		<file>CascadiaMono-Regular.ttf</file>
+	</font>
+
+	<font name="CascadiaCode" font_style="BOLD">
+		<file>CascadiaMono-Bold.ttf</file>
+	</font>
+
+	<font name="CascadiaCode" font_style="ITALIC">
+		<file>CascadiaMono-Italic.ttf</file>
+	</font>
+
+	<font name="CascadiaCode" font_style="BOLD|ITALIC">
+		<file>CascadiaMono-BoldItalic.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="CascadiaCode" size="8.0" />
+	<font_size name="Huge" font="CascadiaCode" size="16.0" />
+	<font_size name="Large" font="CascadiaCode" size="11.6" />
+	<font_size name="Medium" font="CascadiaCode" size="9.6" />
+	<font_size name="Small" font="CascadiaCode" size="8.6" />
+
+	<!--Fira Code-->
+	<font name="FiraCode">
+		<file>FiraCode-Regular.ttf</file>
+	</font>
+
+	<font name="FiraCode" font_style="BOLD">
+		<file>FiraCode-Bold.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="FiraCode" size="8.0" />
+	<font_size name="Huge" font="FiraCode" size="16.0" />
+	<font_size name="Large" font="FiraCode" size="11.6" />
+	<font_size name="Medium" font="FiraCode" size="9.6" />
+	<font_size name="Small" font="FiraCode" size="8.6" />
+
+	<!--Jetbrains Mono-->
+	<font name="JetbrainsMono">
+		<file>JetBrainsMonoNL-Regular.ttf</file>
+	</font>
+
+	<font name="JetbrainsMono" font_style="BOLD">
+		<file>JetBrainsMonoNL-Bold.ttf</file>
+	</font>
+
+	<font name="JetbrainsMono" font_style="ITALIC">
+		<file>JetBrainsMonoNL-Italic.ttf</file>
+	</font>
+
+	<font name="JetbrainsMono" font_style="BOLD|ITALIC">
+		<file>JetBrainsMonoNL-BoldItalic.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="JetbrainsMono" size="8.0" />
+	<font_size name="Huge" font="JetbrainsMono" size="16.0" />
+	<font_size name="Large" font="JetbrainsMono" size="11.6" />
+	<font_size name="Medium" font="JetbrainsMono" size="9.6" />
+	<font_size name="Small" font="JetbrainsMono" size="8.6" />
+
+	<!--Monaspace Argon-->
+	<font name="MonaspaceArgon">
+		<file>MonaspaceArgon-Regular.otf</file>
+	</font>
+
+	<font name="MonaspaceArgon" font_style="BOLD">
+		<file>MonaspaceArgon-Bold.otf</file>
+	</font>
+
+	<font name="MonaspaceArgon" font_style="ITALIC">
+		<file>MonaspaceArgon-Italic.otf</file>
+	</font>
+
+	<font name="MonaspaceArgon" font_style="BOLD|ITALIC">
+		<file>MonaspaceArgon-BoldItalic.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="MonaspaceArgon" size="8.0" />
+	<font_size name="Huge" font="MonaspaceArgon" size="16.0" />
+	<font_size name="Large" font="MonaspaceArgon" size="11.6" />
+	<font_size name="Medium" font="MonaspaceArgon" size="9.6" />
+	<font_size name="Small" font="MonaspaceArgon" size="8.6" />
+
+	<!--Monaspace Krypton-->
+	<font name="MonaspaceKrypton">
+		<file>MonaspaceKrypton-Regular.otf</file>
+	</font>
+
+	<font name="MonaspaceKrypton" font_style="BOLD">
+		<file>MonaspaceKrypton-Bold.otf</file>
+	</font>
+
+	<font name="MonaspaceKrypton" font_style="ITALIC">
+		<file>MonaspaceKrypton-Italic.otf</file>
+	</font>
+
+	<font name="MonaspaceKrypton" font_style="BOLD|ITALIC">
+		<file>MonaspaceKrypton-BoldItalic.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="MonaspaceKrypton" size="8.0" />
+	<font_size name="Huge" font="MonaspaceKrypton" size="16.0" />
+	<font_size name="Large" font="MonaspaceKrypton" size="11.6" />
+	<font_size name="Medium" font="MonaspaceKrypton" size="9.6" />
+	<font_size name="Small" font="MonaspaceKrypton" size="8.6" />
+
+	<!--Monaspace Neon-->
+	<font name="MonaspaceNeon">
+		<file>MonaspaceNeon-Regular.otf</file>
+	</font>
+
+	<font name="MonaspaceNeon" font_style="BOLD">
+		<file>MonaspaceNeon-Bold.otf</file>
+	</font>
+
+	<font name="MonaspaceNeon" font_style="ITALIC">
+		<file>MonaspaceNeon-Italic.otf</file>
+	</font>
+
+	<font name="MonaspaceNeon" font_style="BOLD|ITALIC">
+		<file>MonaspaceNeon-BoldItalic.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="MonaspaceNeon" size="8.0" />
+	<font_size name="Huge" font="MonaspaceNeon" size="16.0" />
+	<font_size name="Large" font="MonaspaceNeon" size="11.6" />
+	<font_size name="Medium" font="MonaspaceNeon" size="9.6" />
+	<font_size name="Small" font="MonaspaceNeon" size="8.6" />
+
+	<!--Monaspace Xenon-->
+	<font name="MonaspaceXenon">
+		<file>MonaspaceXenon-Regular.otf</file>
+	</font>
+
+	<font name="MonaspaceXenon" font_style="BOLD">
+		<file>MonaspaceXenon-Bold.otf</file>
+	</font>
+
+	<font name="MonaspaceXenon" font_style="ITALIC">
+		<file>MonaspaceXenon-Italic.otf</file>
+	</font>
+
+	<font name="MonaspaceXenon" font_style="BOLD|ITALIC">
+		<file>MonaspaceXenon-BoldItalic.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="MonaspaceXenon" size="8.0" />
+	<font_size name="Huge" font="MonaspaceXenon" size="16.0" />
+	<font_size name="Large" font="MonaspaceXenon" size="11.6" />
+	<font_size name="Medium" font="MonaspaceXenon" size="9.6" />
+	<font_size name="Small" font="MonaspaceXenon" size="8.6" />
+
+	<!--Noto Sans Mono-->
+	<font name="NotoSansMono">
+		<file>NotoSansMono-Regular.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="NotoSansMono" size="8.0" />
+	<font_size name="Huge" font="NotoSansMono" size="16.0" />
+	<font_size name="Large" font="NotoSansMono" size="11.6" />
+	<font_size name="Medium" font="NotoSansMono" size="9.6" />
+	<font_size name="Small" font="NotoSansMono" size="8.6" />
+
+	<!--OpenDyslexicMono-->
+	<font name="OpenDyslexicMono">
+		<file>OpenDyslexicMono-Regular.otf</file>
+	</font>
+
+	<font_size name="Monospace" font="OpenDyslexicMono" size="8.0" />
+	<font_size name="Huge" font="OpenDyslexicMono" size="16.0" />
+	<font_size name="Large" font="OpenDyslexicMono" size="11.6" />
+	<font_size name="Medium" font="OpenDyslexicMono" size="9.6" />
+	<font_size name="Small" font="OpenDyslexicMono" size="8.6" />
+
+	<!--Source Code Pro-->
+	<font name="SourceCodePro">
+		<file>SourceCodePro-Regular.ttf</file>
+	</font>
+
+	<font name="SourceCodePro" font_style="BOLD">
+		<file>SourceSans3-Bold.ttf</file>
+	</font>
+
+	<font name="SourceCodePro" font_style="ITALIC">
+		<file>SourceSans3-It.ttf</file>
+	</font>
+
+	<font name="SourceCodePro" font_style="BOLD|ITALIC">
+		<file>SourceSans3-BoldIt.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="SourceCodePro" size="8.0" />
+	<font_size name="Huge" font="SourceCodePro" size="16.0" />
+	<font_size name="Large" font="SourceCodePro" size="11.6" />
+	<font_size name="Medium" font="SourceCodePro" size="9.6" />
+	<font_size name="Small" font="SourceCodePro" size="8.6" />
+
+	<!--Ubuntu Mono-->
+	<font name="UbuntuMono">
+		<file>UbuntuMono-R.ttf</file>
+	</font>
+
+	<font name="UbuntuMono" font_style="BOLD">
+		<file>UbuntuMono-B.ttf</file>
+	</font>
+
+	<font name="UbuntuMono" font_style="ITALIC">
+		<file>UbuntuMono-RI.ttf</file>
+	</font>
+
+	<font name="UbuntuMono" font_style="BOLD|ITALIC">
+		<file>UbuntuMono-BI.ttf</file>
+	</font>
+
+	<font_size name="Monospace" font="UbuntuMono" size="8.0" />
+	<font_size name="Huge" font="UbuntuMono" size="16.0" />
+	<font_size name="Large" font="UbuntuMono" size="11.6" />
+	<font_size name="Medium" font="UbuntuMono" size="9.6" />
+	<font_size name="Small" font="UbuntuMono" size="8.6" />
 </fonts>
-- 
GitLab