Example #1
0
        /// <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);
        }
Example #2
0
        /// <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();
        }