Skip to content

Instantly share code, notes, and snippets.

@CapnRat
Last active November 2, 2023 19:58
Show Gist options
  • Save CapnRat/1e0dad23520b00474646b9baf26cab70 to your computer and use it in GitHub Desktop.
Save CapnRat/1e0dad23520b00474646b9baf26cab70 to your computer and use it in GitHub Desktop.
#if UNITY_EDITOR
using System.Reflection;
using UnityEngine;
using UnityEditor;
public class FontSwitcher : EditorWindow
{
[MenuItem("Font/Show Window")]
public static void ShowFontWindow()
{
GetWindow<FontSwitcher>();
}
public void OnGUI ()
{
EditorGUI.BeginChangeCheck();
string newFontName = EditorGUILayout.DelayedTextField("Unity Font", GUI.skin.font.fontNames[0]);
if (EditorGUI.EndChangeCheck())
{
ReplaceFont((Font)EditorGUIUtility.LoadRequired("Fonts/Lucida Grande.ttf"), newFontName);
ReplaceFont((Font)EditorGUIUtility.LoadRequired("Fonts/Lucida Grande Bold.ttf"), newFontName);
ReplaceFont((Font)EditorGUIUtility.LoadRequired("Fonts/Lucida Grande Small.ttf"), newFontName);
ReplaceFont((Font)EditorGUIUtility.LoadRequired("Fonts/Lucida Grande Small Bold.ttf"), newFontName);
ReplaceFont((Font)EditorGUIUtility.LoadRequired("Fonts/Lucida Grande Big.ttf"), newFontName);
typeof(EditorApplication).GetMethod("RequestRepaintAllViews", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
}
}
private void ReplaceFont(Font font, string fontName)
{
if (font.name.Contains("Bold"))
font.fontNames = new string[] { fontName + " Bold" };
else
font.fontNames = new string[] { fontName };
font.hideFlags = HideFlags.HideAndDontSave;
}
}
#endif
@r618
Copy link

r618 commented Nov 2, 2023

I added some (two) things which refresh UI + Editor and font seems to be correctly updating in 2019.4.5, yay
I'd open a PR but not sure if gists can be treated like that lol probably not

https://gist.github.com/r618/0fe5e0f81a426cd05859dea778735471

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment