public static void LoadFontFromModule() { var licence = true; if (licence) { //load texture GameTex texture = new GameTex((ITexture) new EngineTexture(EngineTex.CreateTextureFromPath($"../../Modules/{ModuleName}/Font", $"{FontName}.png"))); //set temporary sprite data SpriteData spriteData = new SpriteData("Font Atlas"); SpriteCategory category = new SpriteCategory($"{FontName}", spriteData, 1); SpritePart spritePart = new SpritePart($"{FontName}", category, texture.Width, texture.Height); SpriteGeneric spriteGeneric = new SpriteGeneric($"{FontName}", spritePart); // set sprite part data. (sheetid = 1 is chinise font.) category.Load((IResourceContext) new TextureLoader(texture), (ResourceDepot)null); spritePart.SheetID = 1; spritePart.SheetX = 0; spritePart.SheetY = 0; spriteData.SpriteNames.Add($"{FontName}", (Sprite)spriteGeneric); Font font = new Font($"{FontName}", $"../../Modules/{ModuleName}/Font/{FontName}.fnt", spriteData); /* reflection font factory */ Dictionary <string, Font> _bitmapFont = typeof(FontFactory).GetField("_bitmapFonts", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; Dictionary <string, Dictionary <string, Font> > _localizationMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Dictionary <string, Font> >; _bitmapFont[CoverFontName] = font; Dictionary <string, Font> _defaultFontMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; LocalizationMap = _localizationMap; /* cover font data. */ foreach (string index in new List <string>((IEnumerable <string>)_localizationMap[XMLKey].Keys)) { _localizationMap[XMLKey][index] = font; } /* apply */ UIResourceManager.FontFactory.DefaultFont = font; FontLoaded = true; } else { InformationManager.ShowInquiry(new InquiryData("Module Load Faile!", "failed load module.", true, false, ":(", null, null, null)); } }