private void load(GameHost host, KaraokeRulesetConfigManager manager)
        {
            var storage = host.Storage;

            if (!storage.ExistsDirectory(base_path))
            {
                return;
            }

            // get all font usage which wants to import.
            var targetImportFonts = new[]
            {
                manager.Get <FontUsage>(KaraokeRulesetSetting.MainFont),
                manager.Get <FontUsage>(KaraokeRulesetSetting.RubyFont),
                manager.Get <FontUsage>(KaraokeRulesetSetting.RomajiFont),
                manager.Get <FontUsage>(KaraokeRulesetSetting.TranslateFont),
                manager.Get <FontUsage>(KaraokeRulesetSetting.NoteFont),
            };

            // convert to file path then import
            var targetImportFontPaths = targetImportFonts.Select(x =>
            {
                var path = Path.Combine(base_path, x.FontName);
                var pathWithExtension = Path.ChangeExtension(path, "cached");
                return(pathWithExtension);
            }).Where(p => storage.Exists(p)).Distinct().ToArray();

            if (!targetImportFontPaths.Any())
            {
                return;
            }

            // create font store if wants to import.
            localFontStore = new FontStore(scaleAdjust: 200, minFilterMode: All.Linear);
            fontStore.AddStore(localFontStore);

            foreach (var path in targetImportFontPaths)
            {
                var fontName  = Path.GetFileNameWithoutExtension(path);
                var resources = new CachedFontArchiveReader(storage.GetStream(path), fontName);
                var store     = new GlyphStore(new ResourceStore <byte[]>(resources), $"{fontName}", host.CreateTextureLoaderStore(resources));
                localFontStore.AddStore(store);
            }
        }