/// <summary> /// Gets the font matching the specified settings. /// </summary> /// <param name="name">The name of the font.</param> /// <param name="bold">Whether it's bold.</param> /// <param name="italic">Whether it's italic.</param> /// <param name="size">The font size.</param> /// <returns>A valid font object.</returns> public GLFont GetFont(string name, bool bold, bool italic, int size) { string namelow = name.ToLowerFast(); for (int i = 0; i < Fonts.Count; i++) { if (Fonts[i].Name.ToLowerFast() == namelow && bold == Fonts[i].Bold && italic == Fonts[i].Italic && size == Fonts[i].Size) { return(Fonts[i]); } } GLFont Loaded = LoadFont(name, bold, italic, size); if (Loaded == null) { return(Standard); } Fonts.Add(Loaded); return(Loaded); }
/// <summary> /// Prepares the font system. /// </summary> /// <param name="files">The backing file system.</param> public void Init(FileEngine files) { Files = files; if (Fonts != null) { for (int i = 0; i < Fonts.Count; i++) { Fonts[i].Remove(); i--; } } // Generate the texture CurrentBMP = new Bitmap(DEFAULT_TEXTURE_SIZE_WIDTH, DEFAULT_TEXTURE_SIZE_HEIGHT); using (Graphics gfx = Graphics.FromImage(CurrentBMP)) { gfx.Clear(Color.Transparent); gfx.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 20, 20)); } // Load other stuff LoadTextFile(); Fonts = new List <GLFont>(); // Choose a default font. FontFamily[] families = FontFamily.Families; FontFamily family = FontFamily.GenericMonospace; int family_priority = 0; for (int i = 0; i < families.Length; i++) { if (family_priority < 20 && families[i].Name.ToLowerFast() == "segoe ui emoji") { family = families[i]; family_priority = 20; } else if (family_priority < 10 && families[i].Name.ToLowerFast() == "segoe ui") { family = families[i]; family_priority = 10; } else if (family_priority < 5 && families[i].Name.ToLowerFast() == "arial") { family = families[i]; family_priority = 5; } else if (family_priority < 2 && families[i].Name.ToLowerFast() == "calibri") { family = families[i]; family_priority = 2; } else if (family_priority < 1 && families[i].Name.ToLowerFast() == "dejavu serif") { family = families[i]; family_priority = 1; } } BackupFontFamily = family; SysConsole.Output(OutputType.INIT, "Select backup font: " + BackupFontFamily.Name); string fname = "sourcecodepro"; try { pfc = new PrivateFontCollection(); // TODO: Move out of data directory, as we don't use the file handler at all anyway? pfc.AddFontFile(Environment.CurrentDirectory + "/data/fonts/" + fname + ".ttf"); family = pfc.Families[0]; family_priority = 100; } catch (Exception ex) { SysConsole.Output(OutputType.WARNING, "Loading " + fname + ": " + ex.ToString()); } Font def = new Font(family, 12); Standard = new GLFont(def, this); Fonts.Add(Standard); SysConsole.Output(OutputType.INIT, "Select main font: " + family.Name); UpdateTexture(); }