From 653cdd26869aaa78ebae01038fee54ef72f4fa2c Mon Sep 17 00:00:00 2001 From: nichinichisou Date: Tue, 13 Oct 2026 16:16:27 +0800 Subject: [PATCH] feat(fonts): read the game font settings from a built-in table in open-font exports With `--fonts open` (the default) the story, start canvas, host and chat exports now take the game font assets' point size, padding, render mode, style settings, line metrics, fallback chains, character coverage and text materials from a table shipped with nnnotes (src/nnnotes/fontsettings.json, format nnnotes.font-settings/1). These exports no longer load any game font asset, font material or font bundle: references into font bundles resolve through the table's object index, and catalog closures leave those bundles out. The game's fonts are only read with `--fonts game`. - fontsettings.FontSettings looks characters up through the fallback chains as TextMeshPro does and gives the missing glyph, glyph-variant check, underline glyph and material records the open font assets need; AssetFontSettings reads the same values from the game's font assets. - scripts/gen_font_settings.py regenerates the table for a new game version. - Exporter takes `font_stubs`; Catalog.fetch_key takes bundles to skip and Catalog.bundle_of names the bundle of a key. Verified with the full test suite and pyflakes, and by exporting one story episode with open fonts before and after the change: every manifest entry is byte-identical and no font bundle is fetched. Co-Authored-By: Claude Opus 5.5 --- docs/commands.md | 5 +- scripts/gen_font_settings.py | 52 +++++++ src/nnnotes/advmedia.py | 15 +- src/nnnotes/advui.py | 22 +-- src/nnnotes/catalog.py | 20 ++- src/nnnotes/cli.py | 6 +- src/nnnotes/export.py | 49 +++++- src/nnnotes/fontsettings.json | 260 +++++++++++++++++++++++++++++++ src/nnnotes/fontsettings.py | 280 ++++++++++++++++++++++++++++++++++ src/nnnotes/liveui.py | 6 +- src/nnnotes/storyfonts.py | 95 ++++++------ src/nnnotes/storyhost.py | 8 +- src/nnnotes/textstyle.py | 21 ++- tests/test_fontsettings.py | 119 +++++++++++++++ tests/test_story_fonts.py | 97 ++++-------- tests/test_story_ui.py | 33 ++-- tests/test_textstyle.py | 42 +---- 17 files changed, 919 insertions(+), 211 deletions(-) create mode 100644 scripts/gen_font_settings.py create mode 100644 src/nnnotes/fontsettings.json create mode 100644 src/nnnotes/fontsettings.py create mode 100644 tests/test_fontsettings.py diff --git a/docs/commands.md b/docs/commands.md index fd22e1b..b3db6e8 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -616,7 +616,10 @@ root), and `stories.json` counts their files in `size.models`. The format is des glyph (U+25A1 where the game's font has it), not from the font file (`coverage.missingGlyph`). The simple talk window of an Overlay story is handled the same way. Each generated asset takes the point size, padding, style settings and render mode of the game font asset the texts use in that language, so the - game's text materials apply unchanged; its face info and glyph metrics come from the font file (FreeType, no + game's text materials apply unchanged; those values, the game's fallback chains, the characters the game's assets + have and the text materials come from the table of them shipped with nnnotes (`src/nnnotes/fontsettings.json`, + `fontsettings.FORMAT`), so an open-font export reads no game font asset, material or font bundle; + its face info and glyph metrics come from the font file (FreeType, no hinting), its distance field from the generator `--fonts game` uses for runtime glyphs (supersampled render modes at up to 8x). The asset records the font's family, version, license and SHA-256. `--fonts game` uses the game's font assets instead (the `fonts` extra); the format is the same. No font file is stored in the site other than as diff --git a/scripts/gen_font_settings.py b/scripts/gen_font_settings.py new file mode 100644 index 0000000..eed2ce0 --- /dev/null +++ b/scripts/gen_font_settings.py @@ -0,0 +1,52 @@ +"""Regenerate the font settings table the open-font exports read (maintainer tool; not installed, not needed to use +nnnotes). + +With `--fonts open` (the default) the story, start canvas and talk window exports give each localized game font +asset an open font asset with that asset's point size, padding, render mode, style settings, line metrics, fallback +chain and text materials. nnnotes ships these values in `src/nnnotes/fontsettings.json` (fontsettings.FORMAT), so +those exports read no game font asset; this script reads them from the game's font assets and writes the file. + +Supporting a new game version +----------------------------- +When the game changes its font assets or their materials (an open-font export stops with "... not in the font +settings", or the values differ from the game's), regenerate the table with a configured catalog and APK of that +version (`nnnotes config check`): + + python scripts/gen_font_settings.py [--region REGION] [--game-version VERSION] [-o PATH] + +It reads LocalizeManager's font names of every language and their material types from the player data, each of +those font assets with the assets of its fallback chain, their default materials and every localized text material +(" - ") the catalog has, and writes the table (`--game-version` default: the APK's versionName). The +`fonts` extra must be installed. +""" +from __future__ import annotations + +import argparse +import sys +import tempfile +from pathlib import Path + +from nnnotes import fontsettings +from nnnotes.config import Config, use +from nnnotes.export import Exporter +from nnnotes.web import open_data + + +def main(argv=None) -> None: + p = argparse.ArgumentParser(description="regenerate src/nnnotes/fontsettings.json from the game's font assets") + p.add_argument("--region", help="region of the catalog (default: [catalog] region)") + p.add_argument("--game-version", help="game version to record (default: the APK manifest's versionName)") + p.add_argument("-o", "--out", type=Path, default=fontsettings.FILE, help="output file") + args = p.parse_args(argv) + cfg = use(Config.load()) + cat, _, player = open_data(cfg, args.region) + with tempfile.TemporaryDirectory(prefix="fontsettings-") as work: + ex = Exporter(cat, Path(work), player=player, textures="deferred") + doc = fontsettings.build(ex, player, args.game_version or player.game_version) + fontsettings.write(doc, args.out) + print(f"{args.out}: {len(doc['fonts'])} font assets, {len(doc['materials'])} materials, " + f"{len(doc['objects'])} objects", file=sys.stderr) + + +if __name__ == "__main__": + main() diff --git a/src/nnnotes/advmedia.py b/src/nnnotes/advmedia.py index f7c9c2a..be88411 100644 --- a/src/nnnotes/advmedia.py +++ b/src/nnnotes/advmedia.py @@ -39,7 +39,7 @@ from .export import HEADER, Exporter from .jsonio import write_json from .player import PlayerData -from . import adv, unity +from . import adv, fontsettings, unity from . import master as master_mod TMP_SHADER_PREFIX = "TextMeshPro/" @@ -70,7 +70,8 @@ def __init__(self, cat: Catalog, out_dir: Path, player: PlayerData, fonts: str = if fonts not in FONT_CHOICES: raise ValueError(f"fonts={fonts!r}") super().__init__(cat, out_dir, player=player, stub_assets=TMP_ASSETS if fonts == "open" else (), - follow=("AnimatorController",)) + follow=("AnimatorController",), + font_stubs=fontsettings.builtin() if fonts == "open" else None) self.fonts = fonts def scriptable(self, o) -> dict: @@ -89,6 +90,16 @@ def material(self, o) -> dict: return super().material(o) return {"material": tt["m_Name"], "shader": {"shader": name}, "note": FONT_NOTE} + def font_stub(self, o) -> dict: + """As material and scriptable: a TMP material or asset of a font bundle is only named, with FONT_NOTE.""" + out = super().font_stub(o) + if o.rec["type"] == "Material": + name = out["shader"]["shader"] + if not name.startswith(TMP_SHADER_PREFIX): + return out + return {"material": out["material"], "shader": {"shader": name}, "note": FONT_NOTE} + return {**out, "note": FONT_NOTE} if out["asset"] in TMP_ASSETS else out + def component(self, o) -> dict: if o.type.name == "MonoBehaviour": tt = o.read_typetree() diff --git a/src/nnnotes/advui.py b/src/nnnotes/advui.py index 1fddeba..e1f9971 100644 --- a/src/nnnotes/advui.py +++ b/src/nnnotes/advui.py @@ -83,7 +83,7 @@ from .export import Exporter, TexelPacker, _safe from .jsonio import write_json from .player import PlayerData -from . import adv, languages, textstyle +from . import adv, fontsettings, languages, textstyle from .textstyle import LANGUAGE_LINE_SPACING WIDGET_KEY = "EmbUI/Prefab/UIAdvWidget" @@ -393,7 +393,8 @@ def extract(cat: Catalog, player: PlayerData, episode: dict, out_dir: Path, font ui_dir = Path(out_dir) / "ui" ui_dir.mkdir(parents=True, exist_ok=True) ex = Exporter(cat, ui_dir, player=player, textures="deferred", - stub_assets=("TMP_FontAsset", "TMP_SpriteAsset", "TMP_StyleSheet")) + stub_assets=("TMP_FontAsset", "TMP_SpriteAsset", "TMP_StyleSheet"), + font_stubs=None if game else fontsettings.builtin()) packer = TexelPacker(ui_dir) # -- prefabs ------------------------------------------------------------- @@ -419,7 +420,7 @@ def kept(p: str) -> bool: for d in drawn: if d not in {n["path"] for n in nodes}: raise RuntimeError(f"{d} missing from the prefabs") - styles = textstyle.TextStyles(ex, player, mode) + styles = textstyle.TextStyles(ex, player, mode, None if game else fontsettings.builtin()) dialog_nodes = {name: ex.prefab(key)["nodes"] for name, key in DIALOG_KEYS.items()} catalogs = pictogram_catalogs(widget + window + [n for dn in dialog_nodes.values() for n in dn]) @@ -453,7 +454,7 @@ def records(prefab_nodes: list, keep_text: bool) -> list: if missing: raise RuntimeError(f"{missing} missing from {CHAT_WIDGET_KEY}") chat_widget = {"nodes": [_node_record(chat_nodes[p]) for p in CHAT_WIDGET_NODES]} - chat, status_ids = chat_texts(ex, styles.lang, mode, episode) + chat, status_ids = chat_texts(ex, styles.fonts, styles.lang, mode, episode) status_texts = master_texts(master, status_ids, field) if master is not None and status_ids else None materials: dict = {} @@ -993,10 +994,11 @@ def chat_text_nodes(ex: Exporter, episode: dict): return out, sorted(status) -def chat_texts(ex: Exporter, lang: dict, mode: int, episode: dict) -> tuple[dict, list[str]]: +def chat_texts(ex: Exporter, fonts, lang: dict, mode: int, episode: dict) -> tuple[dict, list[str]]: """chatTexts {window: {node path: {textStyle, localizeText}}} of the episode's chat windows in the language `mode` - (the text record of textstyle.text_style with the font and material chat_localize gives; font roles are the - slots of the lookup table) and the status text ids of the windows.""" + (the text record of textstyle.text_style with the font and material chat_localize gives, their settings from + `fonts` (fontsettings.FontSettings); font roles are the slots of the lookup table) and the status text ids of the + windows.""" table_lang, styles, out = _lookup_lang(lang), {}, {} nodes, status = chat_text_nodes(ex, episode) for name, n, comp, loc in nodes: @@ -1005,9 +1007,9 @@ def chat_texts(ex: Exporter, lang: dict, mode: int, episode: dict) -> tuple[dict loc_font = chat_localize(fa, mat, lang, mode) fa, mat = loc_font["fontAsset"], loc_font["material"] if (fa, mat) not in styles: - face = ex.key_object(font_key(ex.cat, fa, fa)).read_typetree()["m_FaceInfo"] - styles[(fa, mat)] = textstyle.material_style(ex.material(ex.key_object(font_key(ex.cat, fa, mat))), - face["m_PointSize"], face["m_Scale"]) + face = fonts.font(fa)["faceInfo"] + styles[(fa, mat)] = textstyle.material_style(fonts.material(fa, mat), face["m_PointSize"], + face["m_Scale"]) out.setdefault(name, {})[n["path"]] = { "textStyle": textstyle.text_style(comp, loc, table_lang, styles[(fa, mat)], mode), "localizeText": {"enabled": loc["m_Enabled"], "localizeEnabled": loc["_localizeEnabled"]} if loc else None} diff --git a/src/nnnotes/catalog.py b/src/nnnotes/catalog.py index 69877be..dd6c42b 100644 --- a/src/nnnotes/catalog.py +++ b/src/nnnotes/catalog.py @@ -326,9 +326,23 @@ def _download(self, url): return self.session.get(url, source=self.source) return download(url) - def fetch_key(self, key: str) -> list[Path]: - """Every bundle of the key's closure; APK-local ones only when an APK is set.""" - return [self.fetch(b) for b in self.resolve(key) if b.remote or self.apk] + def fetch_key(self, key: str, skip=frozenset()) -> list[Path]: + """Every bundle of the key's closure but those named in `skip`; APK-local ones only when an APK is set.""" + return [self.fetch(b) for b in self.resolve(key) if (b.remote or self.apk) and b.name not in skip] + + def bundle_of(self, key: str) -> Bundle: + """The bundle that holds the asset `key`: the first bundle among its location's dependencies (a bundle key: + that bundle).""" + e = self._entry(key) + own = self._as_bundle(e) + if own is not None: + return own + for d in e["dependencies"]: + de = self._by_off.get(d) + b = self._as_bundle(de) if de is not None else None + if b is not None: + return b + raise KeyError(f"{key}: no bundle among its dependencies") def fetch_raw(self, e: dict) -> Path: """A non-bundle CDN asset (e.g. CRI ACB/AWB data) as stored -- no decryption.""" diff --git a/src/nnnotes/cli.py b/src/nnnotes/cli.py index b812280..abe9dd3 100644 --- a/src/nnnotes/cli.py +++ b/src/nnnotes/cli.py @@ -744,8 +744,8 @@ def _band_args(c) -> None: def _fonts_arg(c) -> None: c.add_argument("--fonts", default="open", choices=("open", "game"), - help="start canvas text: open: layout and style only, no font data (default); game: also the " - "game's TMP fonts (needs the 'fonts' extra)") + help="start canvas text: open (default): layout and style only, no font data (your fonts are not " + "used); game: also the game's TMP fonts (needs the 'fonts' extra)") def _audio_args(c) -> None: @@ -870,7 +870,7 @@ def target(m, what): _audio_args(c) c.add_argument("--no-audio", action="store_true", help="do not decode the cue sheets") c.add_argument("--fonts", default="open", choices=("open", "game"), - help="open: text layout and style only, no font data (default); game: also the game's TMP fonts " + help="open (default): text layout and style only, no font data; game: also the game's TMP fonts " "(needs the 'fonts' extra)") c.set_defaults(func=cmd_story, usage=c.error) diff --git a/src/nnnotes/export.py b/src/nnnotes/export.py index 9a6af9f..b2dfd51 100644 --- a/src/nnnotes/export.py +++ b/src/nnnotes/export.py @@ -312,6 +312,14 @@ def build(self) -> dict: CLIP_FORMATS = ("generic", "livescene", "livenotes") +class FontStub: + """A reference into a font bundle left out of a closure (Exporter `font_stubs`): the record of its object in + the font settings' `objects` ({type, class, name}).""" + + def __init__(self, rec: dict, path_id: int): + self.rec, self.path_id = rec, path_id + + class Exporter: """`player` resolves references into `unity default resources` (PlayerData); `inline_meshes=False` emits meshes as name + vertex count; MonoBehaviour @@ -331,11 +339,13 @@ class Exporter: `defer_writes` (textures "write"): texture records are made as usual but their PNG files are written only by `write_textures`, which can leave out the files a caller would delete. `class_of(o)`: the class name of a MonoBehaviour (default: unity.script_class, through its m_Script with the - script bundle loaded).""" + script bundle loaded). + `font_stubs` (fontsettings.FontSettings): the bundles of its font assets are left out of every closure; a + reference into them resolves through its `objects` (a font asset to {asset, name}, a material to its record).""" def __init__(self, cat: Catalog, out_dir: Path, player=None, inline_meshes: bool = True, stub_assets: tuple[str, ...] = (), textures: str = "write", clip_format: str = "generic", - follow: tuple[str, ...] = (), defer_writes: bool = False, class_of=None): + follow: tuple[str, ...] = (), defer_writes: bool = False, class_of=None, font_stubs=None): if textures not in ("write", "deferred"): raise ValueError(f"textures={textures!r}") if clip_format not in CLIP_FORMATS: @@ -350,6 +360,8 @@ def __init__(self, cat: Catalog, out_dir: Path, player=None, inline_meshes: bool self.follow = tuple(follow) self.defer_writes = defer_writes self.script_class = class_of or script_class + self.font_stubs = font_stubs + self._font_bundles: frozenset | None = None self._unwritten: dict[str, object] = {} # defer_writes: file -> Texture2D self.textures: dict[tuple, dict] = {} self.shaders: dict[str, object] = {} @@ -379,7 +391,10 @@ def load(self, key: str): """(env, graph) of a key's bundle closure, loaded once.""" if key in self._loaded: return self._loaded[key] - env = load_closure(self.cat.fetch_key(key)) + if self.font_stubs is None: + env = load_closure(self.cat.fetch_key(key)) + else: + env = load_closure(self.cat.fetch_key(key, self.font_bundles())) graph = SceneGraph(env) go_file = self._go_file for o in env.objects: @@ -398,6 +413,24 @@ def load(self, key: str): self._loaded[key] = (env, graph) return env, graph + def font_bundles(self) -> frozenset: + """With `font_stubs`: the names of the bundles that hold its font assets.""" + if self._font_bundles is None: + from .advui import font_key + names = set() + for n, f in sorted(self.font_stubs.fonts.items()): + k = font_key(self.cat, n, n) # an addressable asset: its bundle now; else the one recorded + names.add(self.cat.bundle_of(k).name if self.cat.has(k) else f["bundle"]) + self._font_bundles = frozenset(names) + return self._font_bundles + + def font_stub(self, o: FontStub) -> dict: + """The value of a reference into a font bundle left out (`font_stubs`): a material's record, a font asset's + {asset, name}.""" + if o.rec["type"] == "Material": + return self.font_stubs.material(None, o.rec["name"]) + return {"asset": o.rec["class"], "name": o.rec["name"]} + def deref(self, owner, pptr: dict): if not pptr["m_PathID"]: return None @@ -405,7 +438,13 @@ def deref(self, owner, pptr: dict): if self.player is None: raise RuntimeError("reference into unity default resources needs player data") return self.player.deref(owner, pptr) - return deref(owner, pptr) + try: + return deref(owner, pptr) + except FileNotFoundError: + rec = self.font_stubs.objects.get(pptr["m_PathID"]) if self.font_stubs is not None else None + if rec is None: + raise + return FontStub(rec, pptr["m_PathID"]) def graph(self, o) -> SceneGraph: return self._graph_of_file[id(o.assets_file)] @@ -428,6 +467,8 @@ def ref(self, owner, pptr: dict): o = self.deref(owner, pptr) if o is None: return None + if isinstance(o, FontStub): + return self.font_stub(o) t = o.type.name if t in ("AnimatorController", "AnimatorOverrideController") and "AnimatorController" in self.follow: return self.controller(o) diff --git a/src/nnnotes/fontsettings.json b/src/nnnotes/fontsettings.json new file mode 100644 index 0000000..189c9fc --- /dev/null +++ b/src/nnnotes/fontsettings.json @@ -0,0 +1,260 @@ +{"format":"nnnotes.font-settings/1","gameVersion":"1.0.3", +"fonts":{ +"A-OTF-ShinGoPr6N-Regular SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"A-OTF Shin Go Pr6N","m_StyleName":"R","m_PointSize":40.0,"m_Scale":1.0,"m_UnitsPerEM":1000,"m_LineHeight":80.0,"m_AscentLine":35.20000076293945,"m_CapLine":32.0,"m_MeanLine":24.0,"m_Baseline":0.0,"m_DescentLine":-4.800000190734863,"m_SuperscriptOffset":35.20000076293945,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-4.800000190734863,"m_SubscriptSize":0.5,"m_UnderlineOffset":-4.0,"m_UnderlineThickness":2.0,"m_StrikethroughOffset":9.600000381469727,"m_StrikethroughThickness":2.0,"m_TabWidth":13.0},"atlasPadding":4,"atlasRenderMode":32806,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.8999999761581421,"boldSpacing":0.0,"italicStyle":35,"tabSize":10,"material":"A-OTF-ShinGoPr6N-Regular SDF Material","fallbacks":["Fallback Bold SDF","Fallbak Symbols SDF","FZLTH_GB18030L2_R SDF","Pretendard-SemiBold SDF"],"coverage":"eNrtmQ1wU1UWgM+7uS99CWn60qYhTVt4KWkbSu2maVWsCjdpikn/SEv5HdS0pVDQxYI/IBR5CUmaliJprdIii2m3lPKjIigiKqa01YCo5WfHosNaoLoswtrR1WXFsftYUNhxZmd2nNnZ2ck37+e+c8+77757z5xz7nuAAEZvshYERj+7KRCBDK5tYIDr51/Nj6NXRdf261fo56cjCBMmzH+bNSsWQeQD7K2iWy4YYcfMrZVRN87Kfx43SGBB+3gDJ2hBr+Afjgky7l/ax7+qd1H+trvuamtru7UPgk8yBEPXy44bMvraoTM8m/8pX41OZa975Z+IWnmzvHZleITChPnfZf0j3+SaddOeT78wdB6DlFQ9eMenK5604Y8vjZyf7Ohn0BeibOBLbg8N7XoKXItbrTvME0UXHHyC5ZkXc4LVeY6ds7yrphLkW1eu5NjHtFoORYDhLaLrqrB0OzjpWPSYB2H3lqurY5W6tecUVfu/Qo+PH+Vqcsjk3pTKRaeLmrk9045Etb5lt072Tg34Jqh8kinG0p1JnefPQPp7C9vPpoxxSzd+mbp1punwm/VKIJ7yShsjWzvQMGX0I1ozKuo2rSKr8+5DPNBfTi4ZpCG7TbZskwiohZVYN8CXAASlucv8IYMQAua0yeFv/IMm2ANsixr4CoIGJOCaRWE7xbCJLN3jZiGZ2NkoU0ORhER2xe0qbApqnRJPnwhKxcDjMQwkYgnYrPP9EvCrqmRcUrQ7SyeSPXcfliab9eDzg42Z3qHcedIwWDcFe8vHdz7lNfl799HbZqu143TWNL0C5xNpvMoRSXxShJ7VuhxsLgJsUQIvxLtrWXKNWNMD+UjImDUEsDKPTIR9b6+UTqJ3vBl4p5Y8ue6H6MQL3xUs7v/uq3wcq0WjlZcnkawBMwI2BlD80bkBITUWbTel89avN+JrqfEcmoVmK7SoKQ7b+WwwFlZftB2qLlSbM7juI9o37Hv4cVA7utk9pOzRD1HyOtvuqJhPz2gOXa0f6ugoQTOPGqdNWd/8TuLGXNEitVFvCGYpmAk7IFiVc34jwsXpyd5732kHTc6pxiPi2swhkD67nvpUXnCea3Qp2JGWNfrtu49cJW7LDLF/nsUSmkqBFU59S62Yfcncl1i/7iG9TWIyn0gU/zgX1Ek5w6+/cLdo5GLQG4NcfD0Mw952li/ok0lOWupfHp9tnevKk0nNdkwCIZZk2i2YAMW7CM1Q6RbDElrTxSnpj/yzFmgBMtVbRt7n2s9VFrKvUY0z1m3ee8BpXNXqlv4pC8mOnVL729tr/OMa8NCp3hK8Ofew1mJlZzQjcocJvf2NZNfIheCaE9vMhwtOTO18eSCgac++zzUoKu2Lr2o5kRNKgBARy5VZ08vj9/pgIJgWaO3ub39IZc941bM+iMVZf8fjltIlHYAnPxFx6cCjYotR7SSqUEOtpJKfiHfqErYclRc7UgVjWjcNsFPhcLKRZYxEDtJjQlIiM2BLYD24F/lK4xoe8KrXz81wmNjGQ1vKqxPqoVWwaOdmRg1+UwRpH6bpyAXyzCK52CodNaq60zI8YwDU7qOc/OHFRgDVnFl+EVei1wCvU5xVp+SW3r9THojSv7T6e8hjFpB6PmQJ0n7TKzp3ny5bk+MAf0vPNFcORKrFPUnAttmHFLGziQs0WIqmg6E+ZjDfghqSLgdZmgCLKMZHZcI0wdpGmAiohw7BBJMAsSozEBZKHeivpcCxHoMLFMjM5L7Gn63hNhOOYuD2qh964vAuL1JW1IEFPH4Lmk880ggjnwU4eID7cCBoCPLA0MmRfikRmpUxdBUQ7QJkqhZsWwe1bgTcH+O8NsIwQNxAceBm2Q/M71GTa9L+UB23MdF+KHrKtxmnnX0fRuv0TMaju3XZBTKUeAqlAb8JFEyfwqLwjs1bc9pmEwNpqitM7hs8aFHamuMhtAzxsU5h9bpEAofBiojWYDvIc3zC7nMMi9lsOAtKN3ctbW1VsodrdmKflyurkMVgvonlXESMSAKUrRP9eThZy7uzhoELWiRfiKQpzk+iKYZa7N9EEe+VonNOkEtLujTUJSe8a3IfeDF9/yOdprqyDaigXFGNHG/O5gL2LBzsfvV1pIumTm4GbllSCJzcVr5Bxp+V7ClxZrJ6Ik/bVr9/sbwi2WI57uHLih5Pf2V8xOBt3tpBk7XYtDQJXMxW2ZU7L/ONKY/HPKNkjHIcKrZ2Lc1Pr1kYTKEOyk7er/5llCA0V5PldE7fJro0k12g7rVMqFBmQ65Uolmt3haDKGs3wZZ+sfPMuRGN9baU/So8x06WGvnozOEIkDEuqZlY7+Yd1pi6SI8+O0408fO8CdK6Hcnq+V0r+k/DAxdEwvhuL/vgXRPocYfjgHQSB1s/ucho5LXmoIKpf0Kk9dIUQLc6MM3aR0cmcUll1iaqYZO+dSUDtCopk5h5pvj7DrGSUTQjDj9fmpErBjvrN8FBj9nAcWOmB2gmlSdN9DMa+2cgRh1ag0HMF/fJQhgHKB4cmad4BkkhQQ/qp00wsIQ9yn4NBUWp4lgO+X0wr9tly7M7MSfEAB+TfpyhBYfTl88NVcDTYJbONDQukUu2DYkn9pmV1n38FN6wD1EJj7YoIx2cjEg0BhIs6WwJHt0Qog8/J+ukAGeHgKUiZx7ZodfNSzBTd1qLVkWxrxrT8lZn0s0tByzzP65uyNtkP56RG8eY0QnyO9K6iZOUFYl/OT+82zxTi8UJMFb3BFteN3rmjReqpPPv18E9e16c+7PWgP55SMKAGIqx4FayW7pB74c6aghwJrSM1brioIzdm65BaIuIOO7FPhkDT+pV9xwkXub9x5bz/nHXmxn0na3bkk2i8YKXmlIfunD1i41k4Yyuv6ydMen88GsveBFYPUkUsgCj0gY4DII/4ITV1VNlVLpqN+VO87DKRgPdezX3jaPg8IPDSCDazxvGOAvLAAlxbkkicDwSRhnYFFks4amIotM6Gau3qyk7Zwd2APM1lPAOvVqjYBE+iItAjIOOBnkhjdtH/v1XIB42PD1P9LYWz/Nl1yhSbqxWUT/2xR6grtQqLyc7Lu+Jr6c/jv9mVYVGFtkvPf55fqkf05VlIkvp7EnRquXdlMI2UQ1WCcOC42Hf0qaNdLTBfxe5YrDxvvjrLXrMMAegFV9U1uhVieUxJeDQabbf6ENQxC1Ts8up1B3YIa5PCsoQSJzkNi7QmC2/oaKlFApe01N4qZkRvJ1n93ti9ZShaBp4FhjyIU/9lkUm7yxmHJUK9jvvZYxDdHGQcmMnEOrWtw1o5kIoV+ezJkKolBItj/FjzLsAsw3KyFmCsZMAThXUCm/ewf0exb0UcKTAZ+xI7GqtcyCHN+lBxAqh+piS/0jZJ6hwBiqcNocJEyZMmDBhwoQJ83/Jqlv+7QdvFH6q+80/AMFHY18=","variants":[],"bundle":"embfont_assets_font-a-otf-shingopr6n-regular.bundle"}, +"FZLTH_GB18030L2_R SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"FZLanTingHei GB18030L2","m_StyleName":"R","m_PointSize":40.0,"m_Scale":1.0,"m_UnitsPerEM":1000,"m_LineHeight":46.20000076293945,"m_AscentLine":35.68000030517578,"m_CapLine":30.0,"m_MeanLine":22.0,"m_Baseline":0.0,"m_DescentLine":-10.520000457763672,"m_SuperscriptOffset":35.68000030517578,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-10.520000457763672,"m_SubscriptSize":0.5,"m_UnderlineOffset":-5.0,"m_UnderlineThickness":2.0,"m_StrikethroughOffset":8.800000190734863,"m_StrikethroughThickness":2.0,"m_TabWidth":9.0},"atlasPadding":4,"atlasRenderMode":16422,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"FZLTH_GB18030L2_R SDF Material","fallbacks":["FZLTH_GB18030L2_R_FB SDF","A-OTF-ShinGoPr6N-Regular SDF"],"coverage":"eNrtmXtQVNcdx3/37Nnlsl7Wu8uCCxq9d3m4IOLKQ1DzOLssuCCkC2JcBVvEraIxPhInjZImZ5cFlodxUUyMMXEhQNDY8ZXYRNPmitYQzQMfqWhNuoimNho0Ro0JrfamnWk7melfnelMM/v54849v3vPmXu+v3PO7ztzAQDu/Ytn5Sa8w9TIVwqKrOZoBCwLLAAvyiEWQoQI8aNiaroNwv/jzmYR+UHkY8UPAv98YfL/6IsVwJml3n/cV4QS+F9x7d69irsKICElQoT4/6NpRfW9mylRK0zD8wdz0Ahi+8OUj25Xc97hZd8dztZ/2I2GXn2v2Fuc2Ttw8JnwDUkfOLf3mP58OEjHHKm5pLigzrUceKR+6SQo9Z0U9ELgeocoWsO4PTvtAakSByqT1ZmKTDfCzS8OT9+v76geni5mdcVmtn5pKj6AsiMDM3cdzz06afJPDk167ulZ2YG6NwLN49WXR4zT9DaqO66UQ9KHC9oGjCO86KPX37tbeqb3YNPqWKHTFYd9modONv3y3rXR8+7tunxoeG1ZUa4Yg5kvphb3/1wlbVNvP7PQQysX44wejxb8fY2Wed5g31obzH1Zw/+alj/HBq3q1rVuqcKy8EQD9MxpBOJDGdtKFG2SCCZLHx82Ci2LSom86JxQ6Gb3hRe6L9ZcnVVH+TEsxxbZATg7T7VAVS6VUYj0pgOMeT4Xm4TKJMydJDksaSfJh/Xn8hP9gZXPvzm0YYb/+NfKzkXOuM8SCiuzD7EFFSnjoqqiwLdFp34xCVn5HBVgG+6jAJijwK1U6SSmAAksjAaBx1omHA6+69RM6NzxEn322cI1gzf5iODtsgXbTl4rSWjlPd8svha3KqsFeVT8RhYlN7rlcZA1odjUQ06qW408UJ4B8AD4gRfktGeCsbTi85mvVCzXLvxNsKpXnMjv9mnY8uE+77e/P2QKWqLD7B0RfO+RceveaRhob48ms3caVz9Ys2XfuPpZijkBY5VZinNzxu1h0ursV9cLrN2UgO5/N99vTnN481tWTw1yxk2Hr5Rpcgbjt24Gv+RfY+xszh9w4MJI7C+zEe8kDHa4+Alza/E6le1TqebRseG93+WfLFYNRWTFGPferP5029Wvt1yvy7Fenb4OXK4bovTczKPcyxtzR+wa5VNa2nM59SLeuDhw1gEZDlefMtpN22FkBzMpL2PtxP79y/S5ueYXCi1Un27YSo4LG288Wsi/yTQbXt2y94A7zdgvwaX0Hvy709l0TxtypG5JcTkOnbC1xvWIOF+n6EMkzaJ7+VT4hN3d0l/T4ot6jvfFde7q26DensE1n2B4Ou7JhA3TaKDhGINUNH2FdjSYFIQuh82Bo20TQJvcUdtAEjVCBQYQmABgw7LwJQGdDcwG+xI/q86WPZPIColY3aPGxvH+cKhRyWZJCy18RB8bzgGbIvDA8dgC6wG7aAmz4S72vmTXEIaX3mhd2P0XDdoMguAu850/G2Opr2z7IlI5e9HyfbObbpSrh9OiLzsn1U7IRk6vPfDwouoLhWpVxSN+Rcec7O5z78W3fGXIm1Eyf4dGiG9Jrd6rzzW4HA2+HiyZkGVyR7NDv98wzfb4xlYpj2ZDxCuaQyDozhYHmahiC+VPwTw0EuIbIs8pbKTR+CtglAR4ZDF0L/gK8jIQf4fN0tRCU98BagSVEG0FC5ASUnJ9lryWvXoPaJHVkJOwYWAlP5cIDAuZgyskre31ek9GYiS2sV4/QVEWt1XxeE06EHus8HCfZCbykhY7I06oiU9oWscy8QxhXECqEhnWVftUKwLhM0OXhciqnuhVyHp7Hfr5RALeLGxyTd+VJPTzU1xcsVtq9nQ92JvyRMf4jJkReFydIpmlZzS80sbb3KklqjWn8wswkEjvsktnzh44op/lUQNlaqTZCgrO5fdB+26nSmqbEv4WBd+YlC/YoMpc2tEmbLIkkXgB+qkfHm90+9DoUiMnYtrix7L9RWQMlB5WDFwURVqrCwJINvXQzAkqd7+HSRKX+E8zpPEty1MUwtR9dbHi53vEo+DdzZGepADpIqyuwFIMerJjDusmAWtL925BYdQxp3SsepbVQ6gZkUaODoSbGTrVwZkAdbjNtuRKwBU3aimTfyt1z9j63pG6+SDa8ywjEaJqh9Kc9SXFeHH4Rr0awhRVbO/+C0uZjDyUyqZhv5P/ZOvQa3cupX5zNfHtPausTyUwOY4EXrvPi/M6kTCft+lqbPuMjgy3wjoitjr7tUiitG+3jSnNBe/HwTux9olZH0UfKXOQp9MCZZmu+pnY0KjIIeXTocI++mNlLTzAKNiLRe1QuzPTUH4pK6of3zeIKAsKIq23YRPeW7W76VEaeKX/sg+hZ6wUaMyTivy6KLzFR2NIXqGllq0ztrfyfsYzStz8NAi7tcbJRB6hYFo7YJYpkc++lmJNQQAcQAlswcnZ1MyGgRXG88SPdQZSz6igXRTMKqqROA8GAdwgpZ+nLFoepjfxhrpKOKHRHuMrmIIPlTu1icjvoyXdyMI4GE4ACbMsZwlXAePHBYJgphqwqkXz5uTUGLcxOsnmABOCRJyxT+c2xHnxRGzkbEk8EEnbimmBz84TPY7/hUIvn3+8NuKTK9tT4kvKrbDKXlQ9MjYwJTl3WJm7oTXZZpCqjs0eZXMnMzGArD3wAtncIjC4UP/glaJvnshqXzb01v7Hlj7WoC9P30itsyZj1f2sCk9hK+q3nX/7XaXG8bMM/gGhs/fy3Xv7zow9X1z0R9O3YOQED8sYbHYn2llSa9JDKxNUadKQfqTgcZpLW7tS1YC2Ysy8o/fJdWIuq7r/TkUd+35GJU97Tmm7q8KunLNfCau8bYkcXj2xZfyKrltDEWTR3LqrB6snLnzjzW3rJkDhkcoRahsS6kTzAoy8OVSIRPCQ12V65Ibbp8blrFOHB+/WpPcaBaDGdMKCf1BM9nA88DEiFGhB22yQMwk8ZrQ8iGEz3pcLbgrPCbxIMO5TYkc4sGLPnmgG5AIJDNhTlDyoIAbXXocc7sKfcpLtKwDMavOM3PSYGtXaAUZdE6/gWeEQjTg2lpkWh1hy3ypedWnTpPHWSD8qfcZ3a6q4ZOyov4orr04eTZUlM7/+rWseV3+k4MSFAocfKxfqGdu8GQonL3QDky9X0IJYlpeMVY3Lo9ZrdSb3CHKdzQ/4BoduK49PbnEX6HkC73u79CtN0RFFyCIEBdTlEIKLWysbZGFWxQKC8TuwgCgiBAHbRpKEQHP8zbJ5pzd7sM7t1iL6U8YaBNYuAN7JqPgpQZ0SqGwP5J6wTJ50GGGpPP/vFRAEZAf0vXegWiQAz8uPWSBEQE6wo3jWzoCcSyQo9Pjv3b83A1gOydNQya0PlgZMAZMXQNZ6L2abAxXI7DRc161h3H55A5kQ4+ftwCn9x/Reypu0z4dcc4gQIUKECBEiRIgQP07u/tu//b8B2TVk7g==","variants":[],"bundle":"embfont_assets_font-fzlth_gb18030l2_r.bundle"}, +"FZLTH_GB18030L2_R_FB SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"FZLanTingHei GB18030L2","m_StyleName":"R","m_PointSize":40.0,"m_Scale":1.0,"m_UnitsPerEM":1000,"m_LineHeight":46.20000076293945,"m_AscentLine":35.68000030517578,"m_CapLine":30.0,"m_MeanLine":22.0,"m_Baseline":0.0,"m_DescentLine":-10.520000457763672,"m_SuperscriptOffset":35.68000030517578,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-10.520000457763672,"m_SubscriptSize":0.5,"m_UnderlineOffset":-5.0,"m_UnderlineThickness":2.0,"m_StrikethroughOffset":8.800000190734863,"m_StrikethroughThickness":2.0,"m_TabWidth":9.0},"atlasPadding":4,"atlasRenderMode":16422,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"FZLTH_GB18030L2_R Atlas Material","fallbacks":[],"coverage":"eNrt3D1v1DAYB/DHToqMdCLuSUWCpYEBsSCdxAADUg3qcBsTe0B8gI4wnStGGCpWFkb4CoghYze+wg3dOYmBoVKMc295vyT06F3D/yddmve4jx/7bEUtEZFJjOwmfWfv7FKT8+jDTU5CkCCSd+wuQQn1Ys8uebKDpzdI38hspkTm3Ik/i6sWj644HQDq6L+/9O3D1/RgmNklk9X7XC0bsvGMbbU/nMy5x3fPvj6fDGjXpV9hvMPn/qI806XbuCTGmcQdgZfZt+DNDkXmMTnUG4SnRE/s8WBeuB3kwFT/liZ9eCqahd14P40JIodUlAT6TbI+OhrHP5y6esv23WLVySEdxWdLdS9bvwDQ0EGxfwQAAAAAqIX5MgAAAHRc/F5jPJq9mmD2M33VMF6OhvYRIajKmxlO5KdeutnNye3jT84mCxe/nTk3+9HvaOQVj0a5d/tpB6hZAAAAAAAAAAAAAAAAAACA/47c+hKqDkWbdTWNcn+ZLNCwAKCdznYbmiEUVzYD/eUa/p3R2ocMbueHRmvtRy7tSWtNdf+fjv83OYWRlxI/gA013S2Y5rI2HQjbokhr3e9OncK2UkIiCC1GGqLZOOrplRqVui3P16xiTtoggukLhXb94qDoemXHpbXiFJSM60IxH+FOk3kQ7qUPBkm5/Ooe0p/dta/c0nHZheuyJGu0jbsUF5q+69x99Xp6/Gsl3yC1SeLzkifLOHKyPBKi0TccO2mZs4Lxb/Z4b8U9T4oF4vUZ/IzbqrGVtjLLXVXSIvJRecXf80PqyY/D3XmANStMVVRJygSfe/lf/IttjC8zRd8Zuun4iz+QEgsA","variants":[],"bundle":"embfont_assets_font-fzlth_gb18030l2_r_fb.bundle"}, +"Fallback Bold SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"Apple Symbols","m_StyleName":"Regular","m_PointSize":207.0,"m_Scale":1.0,"m_UnitsPerEM":2048,"m_LineHeight":207.0,"m_AscentLine":137.96630859375,"m_CapLine":112.0,"m_MeanLine":81.0,"m_Baseline":0.0,"m_DescentLine":-51.75,"m_SuperscriptOffset":137.96630859375,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-51.75,"m_SubscriptSize":0.5,"m_UnderlineOffset":-20.21484375,"m_UnderlineThickness":10.107421875,"m_StrikethroughOffset":32.400001525878906,"m_StrikethroughThickness":10.107421875,"m_TabWidth":69.0},"atlasPadding":16,"atlasRenderMode":4165,"normalStyle":0.75,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"Fallback Bold SDF Material","fallbacks":[],"coverage":"eNpjYBgFo2AUjIKhD5gABM8AAw==","variants":[],"bundle":"embfont_assets_font-fallbackboldsdf.bundle"}, +"Fallbak Symbols SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"Apple Symbols","m_StyleName":"Regular","m_PointSize":207.0,"m_Scale":1.0,"m_UnitsPerEM":2048,"m_LineHeight":207.0,"m_AscentLine":137.96630859375,"m_CapLine":112.0,"m_MeanLine":81.0,"m_Baseline":0.0,"m_DescentLine":-51.75,"m_SuperscriptOffset":137.96630859375,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-51.75,"m_SubscriptSize":0.5,"m_UnderlineOffset":-20.21484375,"m_UnderlineThickness":10.107421875,"m_StrikethroughOffset":32.400001525878906,"m_StrikethroughThickness":10.107421875,"m_TabWidth":69.0},"atlasPadding":16,"atlasRenderMode":4165,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"Fallbak Symbols SDF Material","fallbacks":[],"coverage":"eNrtyaERADAIBLA/BumsjI5jgCpEYpOsDsBd9Z0AAAAAAAAAAAAAAAAAAJzwBpRtAKM=","variants":[],"bundle":"embfont_assets_font-fallbaksymbolssdf.bundle"}, +"NotoSansJP-Regular SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"Noto Sans JP","m_StyleName":"Regular","m_PointSize":47.0,"m_Scale":1.0,"m_UnitsPerEM":1000,"m_LineHeight":68.05599975585938,"m_AscentLine":54.52000045776367,"m_CapLine":35.0,"m_MeanLine":26.0,"m_Baseline":0.0,"m_DescentLine":-13.53600025177002,"m_SuperscriptOffset":54.52000045776367,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-13.53600025177002,"m_SubscriptSize":0.5,"m_UnderlineOffset":-7.049999713897705,"m_UnderlineThickness":2.3499999046325684,"m_StrikethroughOffset":10.399999618530273,"m_StrikethroughThickness":2.3499999046325684,"m_TabWidth":11.0},"atlasPadding":2,"atlasRenderMode":4165,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"NotoSansJP-Regular SDF Material","fallbacks":[],"coverage":"eNrtmQtwU1UagP97cm56E9L0pk1DmrZwU9I2lNpN06pYFU7SFJO+SEt5Dmr6goIuFnyAUOQmJGlaiqS1Sosspt1SClRFUKyomNJWQ0Utjx2LDmuB6rIIa0dXlxVnu2FhBdeZndnZnZ2dnXwz53nPPfc8/vn//9wDADB+kw1wrfzZzQr4j/OX8auCa+F6Cf34dQQhQoT4b7N+9VIIn/STKvZmlgkGzNz6MOJGKv9bvFkEFfbJOu5avk8CcCyYcj/pDP9bo4vwtt51V2tr661jEIBE5w9cz9tu1NHXoo7Qbv6rfDU+k72ulf9OxJqb+Q1rQisUIsT/Lpse+SbbqJn1fOqFkfMYxKTywTs+Xf2kBX98aez8dNsAg74QZAJfdHtgZO9T4FjWYt5tnCq4YOPjTM+8mOWvyrHtmedeO5Mgz8ZSOcc+plZzKAx0bxFNZ5mpy8aJJ6LHXAg7t19dFy3XbDgnqzz4FXp88jhXnUWm9yWVLz1d0MTtm3U0ouUtq3m6e6bPM0XhEc3QF+9J6Dh/BlLfW9J2NmmCU7zly+Qdcw1H3qyTA3GVllsYyYah+hnjH9GqcUGXYS1Zl3Mf4oH+cnrRMA2ZrZKVWwVALSnHmiG+CMAvzl7pDeiCJmBBqxT+xD9ogH3ANiuBLyNoSASOeRS2Ugwbz9K9ThYSiZWNMNQXiEh4Z8ze/Ea/2i5y9QugWAg8nsBAPBaBxbzYKwKvolLCJUQ6MzQCyXP3YXGiUQseL1iY2e3yPSd1w7UzsLt0csdTboO37wC9c75SPUljTtHKcC4Rxyps4cQjRuhZtcPGZiPAJjnwQXsXtIJQLVT1Qi4CCagIYHkOmQoH3l4jnkbvftP3Tg15cuMPkfEXvstbNvDdV7k4Wo3Gyy9PIxlDRgRsFKDYwYW+oGss2GVI5c1fb8HXXOMFNAtNZmhWUhy28pmgz6+6aDlcla80pnFdR9VvWPfxk6BmfJtzRN6rHaGktZbuiKhPz6gOX60baW8vQnMH9bNmbGp6J35LtmCpUq/V+TNkzJTd4K/MOr8F4cLURPe977SBKutUw1FhTfoIiJ/dRH0qzTvPNThk7Fjzeu2u7qNXidM0R+hdZDIFZlJghlPfUqvnXzL2x9dtfEhrERmMJ+KFf1kIyoSs0ddfuFswdtHvjkIOvg5GYX8by+f1S0QnTXUvT840L3TkSMRGKya+AEvSrSZMgOIdhGaoVJNuOa3q5OT0R955FWqAdOX2sfe5tnPl+exrVMOcjdv299j1a1uc4t9lIMmxU0pvW1u1d1I9HjnVV4S3ZR9Rm8zsnCZE7jCgt78R7R274F9/YqfxSN6JmR0vD/lUbZn3OYYFxf2xlc0nsgJxECBCqTxjdmnsfg8M+VN8LV0DbQ8prGmvujb5sTDjz3jSCrqoHfD0J8Iu9TwqNOmVdqII1NeIyvmpeI8mbvugtNCWHBSmjbMA22U2OxtewoikID4WdEokOmzybQLnUk9xTP0DbuWmhWk2A9tweHtpVVwdtAQl2r6NUYLXEEbaRmk6vEKaXiAVmsXjekVXSpprAoDSOchJH16mB1AsmOcVcEVaFfAa2VllUnbx/XukvgjtS+u+hxymgtTxAZOf9hpe0Tj7NZmqLBt4m3tnObIgXCnsTQC21Toii55PHKDCYjQbdHVRw7kmVJ9w2c/SBFhEMR4qHWYFpW2MCYM6aA+KYAIgVmEEwkKxDf2xGDjWpXOADBmZ7Nf4s9XcNsJRDNxe+UNvDN7rRvKyWjCBy2tCi4lLHKbnMwD7e7gPh/w6Pw8MnRjuFZNgtxKGrgSirkCGqqBsa6DGiYD7bYzbQhgGiBMoDpws+4HxPWp6dcpvqmK2xFsPR874Nu20vf/DSI2WSXu0W5OZJ0Hxp1AK8FtBxvTLTDL3xJz1py0WIZDG2vzE/uFDJrmlKRYCKxEfbQeQLBfBETAjotZZDvEcH9d9jmExmwlnQe7krrmtLXL2SPUe7HFzJWWSKMw3spyDCBGJg5KNgt+PJqp5Z8YocH6T6AuBOMn+SSTFUMu8WynivlJwzg5ScVGnirpkh3cNzp4XUw8+0mGoLdmM8kplVcj25nzOZ83A/q5XX0eaSOrkNuBWJgTAzu3g6yX8WdG+Ins6qyXSlJ11B5dJyxJNpuMuvqTg8dRXJocN3+auGTaYCw0rEsDB7JBcufMy35D0eNQzckYvxYFCc+eK3NTqJf4k6pDk5P3Kn1sJQnPVGXb77J2CS3PZCmWfaUqZPBOyxSLVOuXOKESZuwg2DQjtZ86Nqcy3JR1U4AVWskLPR6aPhoGEcYiNxHw3bzNH1Ya7tJkxgqmf50wR1+5OVC7uXD1wGh64IAiu766SD941gBa323rE0zjY8clFRiWtMfplTN0TArWbpgC6lL5Z5n46PIFLKDE3UvVbtS1rGKAVCenEyDOF37cL5YysCXH4+eK0bCFYWa8BDrmMOo6bMNtHM8k8aaSfUVk/AyFqV+t0Qr6wXxLA2EfxYEs/xTNIDHFaUD5tgKHl7CD7NeQVJAujOeT1wKIuhyXHasdc0AZ4mNTjDB1UOP253EgZPA1G8Vxdw3KpaOeIcGq/UW4+wM/gdQcQFfdoszzcxkmISKUj/qKOZv/g5gB95DlJBwU4MwAsFT736G6tZlGckbrTXLA2gn1Vn5KzLp1uau4xLf64qj5nq/V4WnYMY0QnyK9Iy1ZOVFIg/Pn+8E7jXDUWxsFEzRNsae34mTdeqBQvvl8D9+x7ceGPrYa0z0MCBsRQjAm3kG7xZq0XaqkRwOnQPFHtiIESdn+qCqHtAmK7F3skDDypVdxziLiZ9x9bxXtvHPKGPWdrt2eSSFzxUmPyQxeufrGFLJnT+YcNc6adH33tBTcCsyuBQiZgFGofhyGoD7jg6eqpEipV0U05U1ysvEFH913NfmMQbF6w6QlEenndBHt+CaCgnVseDxyPgqsMbJIkmvBUWMFpjYTVWpWUlbMCO4T5aio4hz61PigRHogJQ4yNjgRpPo3bxv75XyAeNj+9SPC2Gi/yZFbLkm6cVtEA9kT3UFdq5JcTbZf3xdbRH8d+s7ZMJQkfEB//PLfYi+nyEoGpeP60SMWqLkpmmaoEs4hhwfawZ0XjFjpS572LXNFZeE/s9R5dRlgA0IIvyqu1ivjSqCKwaVS7bozBL+BWKtlVVPJubBPWJfglCER2chvna8iU3miipmQyXtWbf6mJCWo7V/d7QuWMkUgaeBYY8iFP/ZJFBvc8ZhKVDNY772X0I3Shn3JiOxDq1tn6VAshkK3xmOMhUEwJVkV5MeYdgNl6efi8oLATH04ONsu/+Qb3axTzks+WBJ+xY9Hr1PahLN6gBQEbNNXH5PxH8v5gE05HhdzmECFChAgRIkSIECH+L1l7y92+/x/u9H/xVwu/YpI=","variants":[],"bundle":"font_assets_everythingfont-notosansjp-regular_6e7bc2403125a02f10ec15e2c8eb4fdc.bundle"}, +"Pretendard-SemiBold SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"Pretendard","m_StyleName":"SemiBold","m_PointSize":100.0,"m_Scale":1.0,"m_UnitsPerEM":2048,"m_LineHeight":119.287109375,"m_AscentLine":95.166015625,"m_CapLine":71.0,"m_MeanLine":54.0,"m_Baseline":0.0,"m_DescentLine":-24.12109375,"m_SuperscriptOffset":95.166015625,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-24.12109375,"m_SubscriptSize":0.5,"m_UnderlineOffset":-15.33203125,"m_UnderlineThickness":8.3984375,"m_StrikethroughOffset":21.600000381469727,"m_StrikethroughThickness":8.3984375,"m_TabWidth":24.0},"atlasPadding":15,"atlasRenderMode":4134,"normalStyle":0.0,"normalSpacingOffset":0.0,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"Pretendard-SemiBold Atlas Material","fallbacks":["A-OTF-ShinGoPr6N-Regular SDF"],"coverage":"eNrt271u00AcAPAzCU2QItKFDcmIiZURUZEMLEhIvEIRbLxAJxImGBh4BCQ2Jh4hCxIDEiMLEnkDKmVBws1h13ad0PIRWhCkv18k577kXC73ty1fHEIIsTEKy/nG3nL2U/xlo3mTznbfx/ilyrSO/qTBYqboTxgHfswIrbknL16f2yqTm0merUJl9+fhNxhU25dNbH3MX+/yEP4w2i8Zl6VJmOXRGtMq7nZCkoQHZ95M7txud8PzblY2ysN243ovhAuTV+0Q7o83boZu3jrv1NXe4Vl5Ja+Znm+KHnWrxKQpq4ti7NeVZQ+y9Mh53Wm/3Zo9DWGY196txqTYXG6XmWR55Kr3Ybnf1mL/pp1Vf4ftFdsPQ29zhebPfiPuk+PMq36c7R9jm2N0+nD+zfmgrk2L5KVDu1jl+4W03vPjW9dENQAAAMcwPvG2wz/X2QjAX9N3jjywt3ivNyvWAHbC9KDgc7lY0JnHOKnu//JPuXFy1x9rNS7dUzQH4uD717cLazmxXijKy0ZZll28J3wAAAAAAAAATo9iIb14PrRV/HEmLj8/uVbO+q0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/mOdr6J99R4=","variants":[],"bundle":"embfont_assets_font-pretendard-semibold.bundle"}, +"VibeMOPro-Medium SDF":{"faceInfo":{"m_FaceIndex":0,"m_FamilyName":"VibeMO Pro","m_StyleName":"Medium","m_PointSize":80.0,"m_Scale":1.0,"m_UnitsPerEM":1000,"m_LineHeight":96.0,"m_AscentLine":66.4000015258789,"m_CapLine":65.0,"m_MeanLine":42.0,"m_Baseline":0.0,"m_DescentLine":-13.600000381469727,"m_SuperscriptOffset":66.4000015258789,"m_SuperscriptSize":0.5,"m_SubscriptOffset":-13.600000381469727,"m_SubscriptSize":0.5,"m_UnderlineOffset":-8.0,"m_UnderlineThickness":4.0,"m_StrikethroughOffset":16.799999237060547,"m_StrikethroughThickness":4.0,"m_TabWidth":16.0},"atlasPadding":12,"atlasRenderMode":32806,"normalStyle":0.0,"normalSpacingOffset":0.14000000059604645,"boldStyle":0.75,"boldSpacing":7.0,"italicStyle":35,"tabSize":10,"material":"VibeMOPro-Medium SDF Material","fallbacks":[],"coverage":"eNpjYGBg+I8A9UAugwKIYGgAk8wMPAwgxGDAAKFHwSgYBcMKOAAAai0MrA==","variants":[],"bundle":"embfont_assets_font-vibemopro-medium.bundle"}}, +"materials":{ +"A-OTF-ShinGoPr6N-Regular - CardParam":{"material":"A-OTF-ShinGoPr6N-Regular - CardParam","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763},"_UnderlayColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763}}}, +"A-OTF-ShinGoPr6N-Regular - Default":{"material":"A-OTF-ShinGoPr6N-Regular - Default","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.05000000074505806,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.12999999523162842,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.543749988079071,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R Sub":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R Sub","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.34200000762939453,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.2759999930858612,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.32475000619888306,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":-0.029999999329447746,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.6037499904632568,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR Sub":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR Sub","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.581250011920929,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":-0.029999999329447746,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.6037499904632568,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR Sub":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR Sub","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":4.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":1.0,"_ScaleRatioA":0.75,"_ScaleRatioB":0.20769229531288147,"_ScaleRatioC":0.581250011920929,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":1.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":-1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0},"_UnderlayColor":{"r":0.3137255012989044,"g":0.3333333432674408,"b":0.4627451002597809,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GachaAppealText":{"material":"A-OTF-ShinGoPr6N-Regular - GachaAppealText","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.7940000295639038,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.39623576402664185,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.062745101749897,"g":0.09803921729326248,"b":0.3137255012989044,"a":0.6980392336845398},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - GlowBlack":{"material":"A-OTF-ShinGoPr6N-Regular - GlowBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.07500000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.3137255012989044},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.8235294222831726}}}, +"A-OTF-ShinGoPr6N-Regular - GlowGreen":{"material":"A-OTF-ShinGoPr6N-Regular - GlowGreen","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.4313725531101227,"g":0.8196078538894653,"b":0.9333333373069763,"a":0.4000000059604645}}}, +"A-OTF-ShinGoPr6N-Regular - GlowLightBlue2":{"material":"A-OTF-ShinGoPr6N-Regular - GlowLightBlue2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.5098039507865906,"b":1.0,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - Grow for UICountInfoElement-Positive":{"material":"A-OTF-ShinGoPr6N-Regular - Grow for UICountInfoElement-Positive","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - GrowLiveStart":{"material":"A-OTF-ShinGoPr6N-Regular - GrowLiveStart","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - MemberNamePanel":{"material":"A-OTF-ShinGoPr6N-Regular - MemberNamePanel","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.23999999463558197,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4599999785423279,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.125490203499794,"g":0.11372549086809158,"b":0.250980406999588,"a":0.4901960790157318},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - MemberNamePanel Sub":{"material":"A-OTF-ShinGoPr6N-Regular - MemberNamePanel Sub","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.3499999940395355,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3400000035762787,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.125490203499794,"g":0.11372549086809158,"b":0.250980406999588,"a":0.4901960790157318},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAdvCommon":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAdvCommon","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.009999999776482582,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.03999999910593033,"_OutlineWidth":0.20999999344348907,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.39230769872665405,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.5,"_UnderlayOffsetX":0.2800000011920929,"_UnderlayOffsetY":-0.2199999988079071,"_UnderlaySoftness":0.7799999713897705,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.18039216101169586,"b":0.18039216101169586,"a":0.800000011920929},"_UnderlayColor":{"r":0.019607843831181526,"g":0.019607843831181526,"b":0.019607843831181526,"a":0.6200000047683716}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryBug":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryBug","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.09530748426914215,"g":0.07818742841482162,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryCampaign":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryCampaign","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.13286833465099335,"g":0.0,"b":0.16826939582824707,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryEvent":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryEvent","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04373502731323242,"g":0.19461780786514282,"b":0.16513222455978394,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryGacha":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryGacha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.19461780786514282,"g":0.09530748426914215,"b":0.03560131415724754,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryMaintenance":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryMaintenance","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07618539035320282,"g":0.08865560591220856,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryOther":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryOther","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07036010921001434,"g":0.08228271454572678,"b":0.21223072707653046,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryUpdate":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryUpdate","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.41558441519737244,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0018211619462817907,"g":0.09989874064922333,"b":0.3515326976776123,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineBlack":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.27000001072883606,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineBlack2":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineBlack2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.2800000011920929,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.5400000214576721,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineBlue":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineBlue","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":1.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.3595505654811859,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.250980406999588,"b":0.5098039507865906,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineButtonText":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineButtonText","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176},"_UnderlayColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineDark":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineDark","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.6039215922355652},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueAlpha":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueAlpha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.10751184076070786,"g":0.10586509108543396,"b":0.5754716992378235,"a":1.0},"_UnderlayColor":{"r":0.10043609887361526,"g":0.14284993708133698,"b":0.5754716992378235,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueBlack_30":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueBlack_30","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":1.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.3595505654811859,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1764705926179886,"g":0.0,"b":0.3019607961177826,"a":0.3019607961177826},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineDarkBold":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBold","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.501960813999176},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineEventType":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineEventType","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0941176488995552,"g":0.07058823853731155,"b":0.11372549086809158,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineLightGray":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineLightGray","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.4000000059604645,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.7804878354072571,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.30000001192092896,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.12941177189350128,"g":0.12941177189350128,"b":0.12941177189350128,"a":0.5882353186607361},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlinePink":{"material":"A-OTF-ShinGoPr6N-Regular - OutlinePink","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":1.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":1.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.3595505654811859,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.7011021375656128,"g":0.23455065488815308,"b":0.31398874521255493,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"A-OTF-ShinGoPr6N-Regular - OutlinePurple":{"material":"A-OTF-ShinGoPr6N-Regular - OutlinePurple","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0470588244497776,"g":0.0470588244497776,"b":0.34117648005485535,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineSystemMessage":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineSystemMessage","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.27000001072883606,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.14150941371917725,"g":0.14150941371917725,"b":0.14150941371917725,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineWhite":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineWhite","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"A-OTF-ShinGoPr6N-Regular - OutlineWhiteAlpha":{"material":"A-OTF-ShinGoPr6N-Regular - OutlineWhiteAlpha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":1.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}}, +"A-OTF-ShinGoPr6N-Regular SDF Material":{"material":"A-OTF-ShinGoPr6N-Regular SDF Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"A-OTF-ShinGoPr6N-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6200000047683716,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R - CardParam":{"material":"FZLTH_GB18030L2_R - CardParam","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.76171875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.6000000238418579,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763},"_UnderlayColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763}}}, +"FZLTH_GB18030L2_R - Default":{"material":"FZLTH_GB18030L2_R - Default","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.6499999761581421,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R - GlowBlack":{"material":"FZLTH_GB18030L2_R - GlowBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":["MASK_SOFT"],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.8460000157356262,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6169499754905701,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.3019999861717224,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.20000000298023224,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.7070000171661377,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.3137255012989044},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4313725531101227}}}, +"FZLTH_GB18030L2_R - GlowGreen":{"material":"FZLTH_GB18030L2_R - GlowGreen","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.32499998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.4313725531101227,"g":0.8196078538894653,"b":0.9333333373069763,"a":0.4000000059604645}}}, +"FZLTH_GB18030L2_R - GlowLightBlue2":{"material":"FZLTH_GB18030L2_R - GlowLightBlue2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.32499998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.5098039507865906,"b":1.0,"a":1.0}}}, +"FZLTH_GB18030L2_R - Grow for UICountInfoElement-Positive":{"material":"FZLTH_GB18030L2_R - Grow for UICountInfoElement-Positive","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"FZLTH_GB18030L2_R - GrowLiveStart":{"material":"FZLTH_GB18030L2_R - GrowLiveStart","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.32499998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlineAdvCommon":{"material":"FZLTH_GB18030L2_R - OutlineAdvCommon","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.009999999776482582,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.03999999910593033,"_OutlineWidth":0.20999999344348907,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.482271671295166,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.5,"_UnderlayOffsetX":0.2800000011920929,"_UnderlayOffsetY":-0.2199999988079071,"_UnderlaySoftness":0.7799999713897705,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.18039216101169586,"b":0.18039216101169586,"a":0.800000011920929},"_UnderlayColor":{"r":0.019607843831181526,"g":0.019607843831181526,"b":0.019607843831181526,"a":0.6200000047683716}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryBug":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryBug","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.09530748426914215,"g":0.07818742841482162,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryCampaign":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryCampaign","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.13286833465099335,"g":0.0,"b":0.16826939582824707,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryEvent":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryEvent","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04373502731323242,"g":0.19461780786514282,"b":0.16513222455978394,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryGacha":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryGacha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.19461780786514282,"g":0.09530748426914215,"b":0.03560131415724754,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryMaintenance":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryMaintenance","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07618539035320282,"g":0.08865560591220856,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryOther":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryOther","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07036010921001434,"g":0.08228271454572678,"b":0.21223072707653046,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryUpdate":{"material":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryUpdate","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0018211619462817907,"g":0.09989874064922333,"b":0.3515326976776123,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineBlack":{"material":"FZLTH_GB18030L2_R - OutlineBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6412500143051147,"_ScaleRatioC":0.333984375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlineBlack2":{"material":"FZLTH_GB18030L2_R - OutlineBlack2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.5699999928474426,"_ScaleRatioC":0.48046875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineBlue":{"material":"FZLTH_GB18030L2_R - OutlineBlue","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":["RATIOS_OFF"],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":1.0,"_ScaleRatioB":1.0,"_ScaleRatioC":1.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.250980406999588,"b":0.5098039507865906,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R - OutlineButtonText":{"material":"FZLTH_GB18030L2_R - OutlineButtonText","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.49000000953674316,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.4000000059604645,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176},"_UnderlayColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176}}}, +"FZLTH_GB18030L2_R - OutlineDark":{"material":"FZLTH_GB18030L2_R - OutlineDark","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.6499999761581421,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.6039215922355652},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R - OutlineDarkBlueAlpha":{"material":"FZLTH_GB18030L2_R - OutlineDarkBlueAlpha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.6499999761581421,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.10751184076070786,"g":0.10586509108543396,"b":0.5754716992378235,"a":1.0},"_UnderlayColor":{"r":0.10043609887361526,"g":0.14284993708133698,"b":0.5754716992378235,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlineDarkBlueBlack_30":{"material":"FZLTH_GB18030L2_R - OutlineDarkBlueBlack_30","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.0,"_ScaleRatioC":0.240234375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1764705926179886,"g":0.0,"b":0.3019607961177826,"a":0.27450981736183167},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlineDarkBold":{"material":"FZLTH_GB18030L2_R - OutlineDarkBold","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.501960813999176},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineEventType":{"material":"FZLTH_GB18030L2_R - OutlineEventType","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0941176488995552,"g":0.07058823853731155,"b":0.11372549086809158,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineLightGray":{"material":"FZLTH_GB18030L2_R - OutlineLightGray","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.25,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.25,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.5512499809265137,"_ScaleRatioC":0.44999998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.12941177189350128,"g":0.12941177189350128,"b":0.12941177189350128,"a":0.5333333611488342},"_UnderlayColor":{"r":0.20000000298023224,"g":0.20000000298023224,"b":0.20000000298023224,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlinePink":{"material":"FZLTH_GB18030L2_R - OutlinePink","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.76171875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.7019608020782471,"g":0.23529411852359772,"b":0.3137255012989044,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R - OutlinePurple":{"material":"FZLTH_GB18030L2_R - OutlinePurple","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.48046875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0470588244497776,"g":0.0470588244497776,"b":0.34117648005485535,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R - OutlineSystemMessage":{"material":"FZLTH_GB18030L2_R - OutlineSystemMessage","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6412500143051147,"_ScaleRatioC":0.333984375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.14150941371917725,"g":0.14150941371917725,"b":0.14150941371917725,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"FZLTH_GB18030L2_R - OutlineWhite":{"material":"FZLTH_GB18030L2_R - OutlineWhite","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.4099999964237213,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"FZLTH_GB18030L2_R Atlas Material":{"material":"FZLTH_GB18030L2_R Atlas Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R_FB SDF Atlas","width":512,"height":512,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":1.0,"_ScaleRatioB":1.0,"_ScaleRatioC":1.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":512.0,"_TextureWidth":512.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"FZLTH_GB18030L2_R SDF Material":{"material":"FZLTH_GB18030L2_R SDF Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"FZLTH_GB18030L2_R SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":5.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.6499999761581421,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Fallback Bold SDF Material":{"material":"Fallback Bold SDF Material","shader":{"shader":"TextMeshPro/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_BumpMap":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_Cube":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_FaceTex":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_MainTex":{"texture":{"name":"Fallback Bold SDF Atlas","width":256,"height":256,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_OutlineTex":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_Ambient":0.5,"_Bevel":0.5,"_BevelClamp":0.0,"_BevelOffset":0.0,"_BevelRoundness":0.0,"_BevelWidth":0.0,"_BumpFace":0.0,"_BumpOutline":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_Diffuse":0.5,"_FaceDilate":0.0,"_FaceUVSpeedX":0.0,"_FaceUVSpeedY":0.0,"_GlowInner":0.05000000074505806,"_GlowOffset":0.0,"_GlowOuter":0.05000000074505806,"_GlowPower":0.75,"_GradientScale":17.0,"_LightAngle":3.1415998935699463,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineUVSpeedX":0.0,"_OutlineUVSpeedY":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_Reflectivity":10.0,"_ScaleRatioA":1.0,"_ScaleRatioB":1.0,"_ScaleRatioC":1.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_SpecularPower":2.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":256.0,"_TextureWidth":256.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.75},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_EnvMatrixRotation":{"r":0.0,"g":0.0,"b":0.0,"a":0.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_GlowColor":{"r":0.0,"g":1.0,"b":0.0,"a":0.5},"_MaskCoord":{"r":0.0,"g":0.0,"b":32767.0,"a":32767.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectFaceColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectOutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_SpecularColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Fallbak Symbols SDF Material":{"material":"Fallbak Symbols SDF Material","shader":{"shader":"TextMeshPro/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_BumpMap":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_Cube":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_FaceTex":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_MainTex":{"texture":{"name":"Fallbak Symbols SDF Atlas","width":512,"height":512,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_OutlineTex":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_Ambient":0.5,"_Bevel":0.5,"_BevelClamp":0.0,"_BevelOffset":0.0,"_BevelRoundness":0.0,"_BevelWidth":0.0,"_BumpFace":0.0,"_BumpOutline":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_Diffuse":0.5,"_FaceDilate":0.0,"_FaceUVSpeedX":0.0,"_FaceUVSpeedY":0.0,"_GlowInner":0.05000000074505806,"_GlowOffset":0.0,"_GlowOuter":0.05000000074505806,"_GlowPower":0.75,"_GradientScale":17.0,"_LightAngle":3.1415998935699463,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineUVSpeedX":0.0,"_OutlineUVSpeedY":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_Reflectivity":10.0,"_ScaleRatioA":0.9411764740943909,"_ScaleRatioB":0.7647058963775635,"_ScaleRatioC":0.7647058963775635,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_SpecularPower":2.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":512.0,"_TextureWidth":512.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_EnvMatrixRotation":{"r":0.0,"g":0.0,"b":0.0,"a":0.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_GlowColor":{"r":0.0,"g":1.0,"b":0.0,"a":0.5},"_MaskCoord":{"r":0.0,"g":0.0,"b":32767.0,"a":32767.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectFaceColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectOutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_SpecularColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"NotoSansJP-Regular - Default":{"material":"NotoSansJP-Regular - Default","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"NotoSansJP-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":3.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.6666666865348816,"_ScaleRatioB":0.5416666865348816,"_ScaleRatioC":0.5416666865348816,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"NotoSansJP-Regular SDF Material":{"material":"NotoSansJP-Regular SDF Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"NotoSansJP-Regular SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_Ambient":0.5,"_Bevel":0.5,"_BevelClamp":0.0,"_BevelOffset":0.0,"_BevelRoundness":0.0,"_BevelWidth":0.0,"_BumpFace":0.0,"_BumpOutline":0.0,"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_Diffuse":0.5,"_FaceDilate":0.0,"_FaceUVSpeedX":0.0,"_FaceUVSpeedY":0.0,"_GlowInner":0.05000000074505806,"_GlowOffset":0.0,"_GlowOuter":0.05000000074505806,"_GlowPower":0.75,"_GradientScale":3.0,"_LightAngle":3.1415998935699463,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineUVSpeedX":0.0,"_OutlineUVSpeedY":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_Reflectivity":10.0,"_ScaleRatioA":0.6666666865348816,"_ScaleRatioB":0.5416666865348816,"_ScaleRatioC":0.5416666865348816,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_SpecularPower":2.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_EnvMatrixRotation":{"r":0.0,"g":0.0,"b":0.0,"a":0.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_GlowColor":{"r":0.0,"g":1.0,"b":0.0,"a":0.5},"_MaskCoord":{"r":0.0,"g":0.0,"b":32767.0,"a":32767.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectFaceColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_ReflectOutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_SpecularColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Pretendard-SemiBold - CardParam":{"material":"Pretendard-SemiBold - CardParam","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.7265625,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.800000011920929,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763},"_UnderlayColor":{"r":0.05098039284348488,"g":0.0,"b":0.5254902243614197,"a":0.9333333373069763}}}, +"Pretendard-SemiBold - Default":{"material":"Pretendard-SemiBold - Default","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.731249988079071,"_ScaleRatioC":0.76171875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Pretendard-SemiBold - GlowBlack":{"material":"Pretendard-SemiBold - GlowBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.25,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.7300000190734863,"_ScaleRatioC":0.2335774302482605,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.04899999871850014,"_UnderlayOffsetY":0.05700000002980232,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.8235294222831726}}}, +"Pretendard-SemiBold - GlowGreen":{"material":"Pretendard-SemiBold - GlowGreen","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.36328125,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.4313725531101227,"g":0.8196078538894653,"b":0.9333333373069763,"a":0.4000000059604645}}}, +"Pretendard-SemiBold - GlowLightBlue2":{"material":"Pretendard-SemiBold - GlowLightBlue2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.05000000074505806,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.32499998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.5098039507865906,"b":1.0,"a":1.0}}}, +"Pretendard-SemiBold - Grow for UICountInfoElement-Positive":{"material":"Pretendard-SemiBold - Grow for UICountInfoElement-Positive","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.05000000074505806,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3100000023841858,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"Pretendard-SemiBold - GrowLiveStart":{"material":"Pretendard-SemiBold - GrowLiveStart","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.05000000074505806,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.800000011920929,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.32499998807907104,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.9490196108818054,"g":0.6980392336845398,"b":1.0,"a":1.0}}}, +"Pretendard-SemiBold - OutlineAdvCommon":{"material":"Pretendard-SemiBold - OutlineAdvCommon","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.15000000596046448,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.3756009638309479,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.5,"_UnderlayOffsetX":0.2800000011920929,"_UnderlayOffsetY":-0.2199999988079071,"_UnderlaySoftness":0.7799999713897705,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.18039216101169586,"b":0.18039216101169586,"a":0.800000011920929},"_UnderlayColor":{"r":0.019607843831181526,"g":0.019607843831181526,"b":0.019607843831181526,"a":0.6200000047683716}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryBug":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryBug","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.09530748426914215,"g":0.07818742841482162,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryCampaign":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryCampaign","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.13286833465099335,"g":0.0,"b":0.16826939582824707,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryEvent":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryEvent","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04373502731323242,"g":0.19461780786514282,"b":0.16513222455978394,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryGacha":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryGacha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.460829496383667,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.19461780786514282,"g":0.09530748426914215,"b":0.03560131415724754,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryMaintenance":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryMaintenance","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07618539035320282,"g":0.08865560591220856,"b":0.2746773660182953,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryOther":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryOther","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.5390625,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.07036010921001434,"g":0.08228271454572678,"b":0.21223072707653046,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineAnnouncementCategoryUpdate":{"material":"Pretendard-SemiBold - OutlineAnnouncementCategoryUpdate","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.5390625,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0018211619462817907,"g":0.09989874064922333,"b":0.3515326976776123,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineBlack":{"material":"Pretendard-SemiBold - OutlineBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6100000143051147,"_ScaleRatioC":0.380859375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"Pretendard-SemiBold - OutlineBlack2":{"material":"Pretendard-SemiBold - OutlineBlack2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6100000143051147,"_ScaleRatioC":0.57421875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineBlue":{"material":"Pretendard-SemiBold - OutlineBlue","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.4453125,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.250980406999588,"b":0.5098039507865906,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Pretendard-SemiBold - OutlineButtonText":{"material":"Pretendard-SemiBold - OutlineButtonText","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.593999981880188,"_ScaleRatioC":0.57421875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.4449999928474426,"_UnderlayOffsetX":0.032999999821186066,"_UnderlayOffsetY":-0.4000000059604645,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04313725233078003,"g":0.06924733519554138,"b":0.3137255012989044,"a":0.4313725531101227},"_UnderlayColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176}}}, +"Pretendard-SemiBold - OutlineDark":{"material":"Pretendard-SemiBold - OutlineDark","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6100000143051147,"_ScaleRatioC":0.57421875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.6039215922355652},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"Pretendard-SemiBold - OutlineDarkBlueAlpha":{"material":"Pretendard-SemiBold - OutlineDarkBlueAlpha","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.7265625,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.10751184076070786,"g":0.10586509108543396,"b":0.5754716992378235,"a":1.0},"_UnderlayColor":{"r":0.10043609887361526,"g":0.14284993708133698,"b":0.5754716992378235,"a":1.0}}}, +"Pretendard-SemiBold - OutlineDarkBlueBlack_30":{"material":"Pretendard-SemiBold - OutlineDarkBlueBlack_30","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.7300000190734863,"_ScaleRatioC":0.240234375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1764705926179886,"g":0.0,"b":0.3019607961177826,"a":0.3019607961177826},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"Pretendard-SemiBold - OutlineDarkBold":{"material":"Pretendard-SemiBold - OutlineDarkBold","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.5769230723381042,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.0703125,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.501960813999176},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineEventType":{"material":"Pretendard-SemiBold - OutlineEventType","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.699999988079071,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.699999988079071,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.4923076927661896,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.060000039637088776,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.8999999761581421,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0941176488995552,"g":0.07058823853731155,"b":0.11372549086809158,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineLightGray":{"material":"Pretendard-SemiBold - OutlineLightGray","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.20000000298023224,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.3499999940395355,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6420000195503235,"_ScaleRatioC":0.57421875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.12941177189350128,"g":0.12941177189350128,"b":0.12941177189350128,"a":0.5882353186607361},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlinePurple":{"material":"Pretendard-SemiBold - OutlinePurple","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6499999761581421,"_ScaleRatioC":0.48046875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0470588244497776,"g":0.0470588244497776,"b":0.34117648005485535,"a":0.4000000059604645},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold - OutlineSystemMessage":{"material":"Pretendard-SemiBold - OutlineSystemMessage","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.05000000074505806,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.10000000149011612,"_OutlineWidth":0.30000001192092896,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6100000143051147,"_ScaleRatioC":0.357421875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.14150941371917725,"g":0.14150941371917725,"b":0.14150941371917725,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.3450980484485626,"b":0.7411764860153198,"a":1.0}}}, +"Pretendard-SemiBold - OutlineWhite":{"material":"Pretendard-SemiBold - OutlineWhite","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.30000001192092896,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.4000000059604645,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.25,"_ScaleRatioC":0.48046875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.4274509847164154}}}, +"Pretendard-SemiBold Atlas Material":{"material":"Pretendard-SemiBold Atlas Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"Pretendard-SemiBold SDF Atlas","width":4096,"height":4096,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":16.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.5416666865348816,"_ScaleRatioC":0.76171875,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":4096.0,"_TextureWidth":4096.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - CardParam":{"material":"VibeMOPro-Medium - CardParam","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6818181872367859,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.10000000149011612,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.501960813999176},"_UnderlayColor":{"r":0.05037371441721916,"g":0.0012141079641878605,"b":0.5245014429092407,"a":0.8078431487083435}}}, +"VibeMOPro-Medium - Default":{"material":"VibeMOPro-Medium - Default","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - GachaAnimationGradient":{"material":"VibeMOPro-Medium - GachaAnimationGradient","shader":{"shader":"GachaAnimation/TextGradient"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_GradientTex":{"texture":null,"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}},"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_GradientParams":{"r":1.0,"g":0.0,"b":0.0,"a":0.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - GlowBlack":{"material":"VibeMOPro-Medium - GlowBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.8235294222831726}}}, +"VibeMOPro-Medium - GrowPurple":{"material":"VibeMOPro-Medium - GrowPurple","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.20000000298023224,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.375,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":1.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.6274510025978088,"g":0.2980392277240753,"b":0.9764705896377563,"a":1.0},"_UnderlayColor":{"r":0.6196078658103943,"g":0.29411765933036804,"b":0.95686274766922,"a":1.0}}}, +"VibeMOPro-Medium - OutlineBlack":{"material":"VibeMOPro-Medium - OutlineBlack","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.12999999523162842,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.14499999582767487,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6300000548362732,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - OutlineBlue":{"material":"VibeMOPro-Medium - OutlineBlue","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.12999999523162842,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.14499999582767487,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6300000548362732,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.18039216101169586,"g":0.250980406999588,"b":0.5098039507865906,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - OutlineButtonText":{"material":"VibeMOPro-Medium - OutlineButtonText","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.12999999523162842,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.257999986410141,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6300000548362732,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176},"_UnderlayColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":0.501960813999176}}}, +"VibeMOPro-Medium - OutlineDark":{"material":"VibeMOPro-Medium - OutlineDark","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.4000000059604645,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.501960813999176},"_UnderlayColor":{"r":0.14117643237113953,"g":0.050980374217033386,"b":0.3647058606147766,"a":0.501960813999176}}}, +"VibeMOPro-Medium - OutlineDark2":{"material":"VibeMOPro-Medium - OutlineDark2","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.699999988079071,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.1411764770746231,"g":0.05098039284348488,"b":0.364705890417099,"a":0.501960813999176},"_UnderlayColor":{"r":0.14117643237113953,"g":0.050980374217033386,"b":0.3647058606147766,"a":0.501960813999176}}}, +"VibeMOPro-Medium - OutlineDarkBlue3":{"material":"VibeMOPro-Medium - OutlineDarkBlue3","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6576923131942749,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":1.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":1.0},"_UnderlayColor":{"r":0.04313725605607033,"g":0.04313725605607033,"b":0.34117648005485535,"a":1.0}}}, +"VibeMOPro-Medium - OutlineItemAmount":{"material":"VibeMOPro-Medium - OutlineItemAmount","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0941176488995552,"g":0.07058823853731155,"b":0.16078431904315948,"a":0.6980392336845398},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - OutlinePink":{"material":"VibeMOPro-Medium - OutlinePink","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.12999999523162842,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.14499999582767487,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6300000548362732,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.7019608020782471,"g":0.23529411852359772,"b":0.3137255012989044,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - OutlinePurple":{"material":"VibeMOPro-Medium - OutlinePurple","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.12999999523162842,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.14499999582767487,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9375,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.639843761920929,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.6274510025978088,"g":0.2980392277240753,"b":0.9764705896377563,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}, +"VibeMOPro-Medium - OutlineWhite":{"material":"VibeMOPro-Medium - OutlineWhite","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":["OUTLINE_ON","UNDERLAY_ON"],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.10000000149011612,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.10000000149011612,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.6576923131942749,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_UnderlayColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}}, +"VibeMOPro-Medium SDF Material":{"material":"VibeMOPro-Medium SDF Material","shader":{"shader":"TextMeshPro/Mobile/Distance Field"},"keywords":[],"invalidKeywords":[],"renderQueue":-1,"tags":{},"disabledPasses":[],"textures":{"_MainTex":{"texture":{"name":"VibeMOPro-Medium SDF Atlas","width":1024,"height":1024,"format":1},"scale":{"x":1.0,"y":1.0},"offset":{"x":0.0,"y":0.0}}},"ints":{},"floats":{"_ClampEdge":0.0,"_ColorMask":15.0,"_CullMode":0.0,"_FaceDilate":0.0,"_GradientScale":13.0,"_MaskSoftnessX":0.0,"_MaskSoftnessY":0.0,"_OutlineSoftness":0.0,"_OutlineWidth":0.0,"_PerspectiveFilter":0.875,"_ScaleRatioA":0.9230769276618958,"_ScaleRatioB":0.6964285969734192,"_ScaleRatioC":0.75,"_ScaleX":1.0,"_ScaleY":1.0,"_ShaderFlags":0.0,"_Sharpness":0.0,"_Stencil":0.0,"_StencilComp":8.0,"_StencilOp":0.0,"_StencilReadMask":255.0,"_StencilWriteMask":255.0,"_TextureHeight":1024.0,"_TextureWidth":1024.0,"_UnderlayDilate":0.0,"_UnderlayOffsetX":0.0,"_UnderlayOffsetY":0.0,"_UnderlaySoftness":0.0,"_VertexOffsetX":0.0,"_VertexOffsetY":0.0,"_WeightBold":0.75,"_WeightNormal":0.0},"colors":{"_ClipRect":{"r":-32767.0,"g":-32767.0,"b":32767.0,"a":32767.0},"_FaceColor":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_OutlineColor":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"_UnderlayColor":{"r":0.0,"g":0.0,"b":0.0,"a":0.5}}}}, +"objects":{ +"-9144536832703137964":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryBug"}, +"-9095269254337875926":{"type":"Material","name":"VibeMOPro-Medium - OutlineButtonText"}, +"-9059627370524774310":{"type":"Material","name":"VibeMOPro-Medium - OutlinePurple"}, +"-9054838721446464938":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAdvCommon"}, +"-8789095894019205846":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - MemberNamePanel Sub"}, +"-8731560419674202470":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryOther"}, +"-8663015419136730668":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineDarkBlueAlpha"}, +"-8636883976889162082":{"type":"Material","name":"Pretendard-SemiBold - Grow for UICountInfoElement-Positive"}, +"-8592876285629773902":{"type":"Material","name":"Pretendard-SemiBold - Default"}, +"-8428121418967989053":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R"}, +"-8223810520603590828":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAdvCommon"}, +"-8185938729047723771":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineWhite"}, +"-7926830364675359756":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueBlack_30"}, +"-7796758750810686412":{"type":"Material","name":"FZLTH_GB18030L2_R - GlowLightBlue2"}, +"-7751601468410335178":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineBlack2"}, +"-7709283687875842633":{"type":"Material","name":"Pretendard-SemiBold - OutlinePurple"}, +"-7693633713063443461":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlinePurple"}, +"-7534796667584158119":{"type":"Material","name":"Pretendard-SemiBold - OutlineDark"}, +"-7351810715788916786":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryEvent"}, +"-7297699546462544513":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryOther"}, +"-7288332418832702568":{"type":"Material","name":"Pretendard-SemiBold - OutlineDarkBlueAlpha"}, +"-7259019032859742240":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineSystemMessage"}, +"-7114130397457624355":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GlowBlack"}, +"-6983969822199943261":{"type":"Material","name":"VibeMOPro-Medium - CardParam"}, +"-6982962950590658886":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"FZLTH_GB18030L2_R SDF"}, +"-6947897583231762998":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR"}, +"-6867983279065566223":{"type":"Material","name":"VibeMOPro-Medium - OutlineItemAmount"}, +"-6849921690150671019":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryUpdate"}, +"-6448877357450158053":{"type":"Material","name":"FZLTH_GB18030L2_R - GlowGreen"}, +"-6270095846102907821":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineBlack2"}, +"-5911855419263845376":{"type":"Material","name":"NotoSansJP-Regular SDF Material"}, +"-5833710768331983404":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"FZLTH_GB18030L2_R_FB SDF"}, +"-5813635720142722583":{"type":"Material","name":"Pretendard-SemiBold - OutlineSystemMessage"}, +"-5799585692375217200":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineBlue"}, +"-5545373033894525156":{"type":"Material","name":"Pretendard-SemiBold - OutlineLightGray"}, +"-5359093977944040742":{"type":"Material","name":"FZLTH_GB18030L2_R - Grow for UICountInfoElement-Positive"}, +"-5255981051295535493":{"type":"Material","name":"NotoSansJP-Regular - Default"}, +"-5064802595836086307":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - MemberNamePanel"}, +"-5015880288666578247":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlinePurple"}, +"-4686015656060488236":{"type":"Material","name":"FZLTH_GB18030L2_R Atlas Material"}, +"-4670313914401555615":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryCampaign"}, +"-4556511907829914581":{"type":"Material","name":"FZLTH_GB18030L2_R - CardParam"}, +"-4514322306877509444":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryBug"}, +"-4267283947088548213":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryBug"}, +"-4228779826558571458":{"type":"Material","name":"VibeMOPro-Medium SDF Material"}, +"-4134222429131680565":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineEventType"}, +"-4110468206732039559":{"type":"Material","name":"Pretendard-SemiBold - CardParam"}, +"-3891810390053638786":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - Default"}, +"-3743704313963000569":{"type":"Material","name":"VibeMOPro-Medium - Default"}, +"-3465245085982907663":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - CardParam"}, +"-3432489689404465687":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineDark"}, +"-3093067624805297256":{"type":"Material","name":"Fallbak Symbols SDF Material"}, +"-2967358444561001417":{"type":"Material","name":"VibeMOPro-Medium - GrowPurple"}, +"-2912528883252215077":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineWhiteAlpha"}, +"-2542341493295411290":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR Sub"}, +"-2494486291864507866":{"type":"Material","name":"FZLTH_GB18030L2_R - GrowLiveStart"}, +"-2279479680445206303":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineDark"}, +"-2115414704135868067":{"type":"Material","name":"VibeMOPro-Medium - OutlineDark"}, +"-1907836960219504087":{"type":"Material","name":"Pretendard-SemiBold - OutlineBlack2"}, +"-1705990455340844346":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryGacha"}, +"-1636426754815634774":{"type":"Material","name":"Pretendard-SemiBold - OutlineEventType"}, +"-1540616137138711810":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - Grow for UICountInfoElement-Positive"}, +"-1192668465372276297":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineDarkBold"}, +"-1089899529609623619":{"type":"Material","name":"VibeMOPro-Medium - GachaAnimationGradient"}, +"-469516590266575976":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"Fallbak Symbols SDF"}, +"-427377895144857163":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryCampaign"}, +"-139090993942078726":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SSR"}, +"-83655542325139836":{"type":"Material","name":"Pretendard-SemiBold - OutlineWhite"}, +"360082194888768729":{"type":"Material","name":"VibeMOPro-Medium - OutlineWhite"}, +"599744424116204314":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName R Sub"}, +"931543697400309604":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryCampaign"}, +"980389942469840780":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineBlack"}, +"1169720449115554118":{"type":"Material","name":"Pretendard-SemiBold - OutlineDarkBlueBlack_30"}, +"1394916759121745498":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAppealText"}, +"1415159232972908506":{"type":"Material","name":"Pretendard-SemiBold - GlowBlack"}, +"1497808506163619468":{"type":"Material","name":"VibeMOPro-Medium - OutlinePink"}, +"1534549708048195790":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryUpdate"}, +"1537420331372644578":{"type":"Material","name":"Pretendard-SemiBold - OutlineButtonText"}, +"1746880779024802833":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryMaintenance"}, +"1773476467593080886":{"type":"Material","name":"VibeMOPro-Medium - OutlineBlack"}, +"1906664659405095284":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryUpdate"}, +"2065944342748002927":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlinePink"}, +"2129798858581128835":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryMaintenance"}, +"2199916133092326400":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"NotoSansJP-Regular SDF"}, +"2311089345888663827":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineSystemMessage"}, +"2375193317055199285":{"type":"Material","name":"Pretendard-SemiBold - GlowGreen"}, +"2434049171458197266":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlinePink"}, +"2682247313041229642":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular SDF Material"}, +"2846483173690261657":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryGacha"}, +"3394522091533659198":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"VibeMOPro-Medium SDF"}, +"3418166373301945309":{"type":"Material","name":"FZLTH_GB18030L2_R - Default"}, +"3426733214376885752":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryMaintenance"}, +"3490547739652087907":{"type":"Material","name":"Pretendard-SemiBold - OutlineDarkBold"}, +"3499865688989236188":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineLightGray"}, +"3560874882463742671":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineButtonText"}, +"3607966714428795087":{"type":"Material","name":"Fallback Bold SDF Material"}, +"3866620057837799242":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"A-OTF-ShinGoPr6N-Regular SDF"}, +"3878276376207610175":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineEventType"}, +"3935137578509353421":{"type":"Material","name":"FZLTH_GB18030L2_R - GlowBlack"}, +"4029295960558746742":{"type":"Material","name":"Pretendard-SemiBold - OutlineBlue"}, +"4223825479991981900":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineBlue"}, +"4267288243279307879":{"type":"Material","name":"VibeMOPro-Medium - OutlineBlue"}, +"4341619744940937902":{"type":"Material","name":"Pretendard-SemiBold - OutlineAdvCommon"}, +"4365480636528266524":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryGacha"}, +"4425318531773192168":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GrowLiveStart"}, +"4436054436797863000":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineBlack"}, +"4906648098546563918":{"type":"Material","name":"Pretendard-SemiBold Atlas Material"}, +"4910301665802042190":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"Pretendard-SemiBold SDF"}, +"5037496348297627841":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBlueAlpha"}, +"5159432588185762512":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GlowGreen"}, +"5922040095155748096":{"type":"Material","name":"Pretendard-SemiBold - GlowLightBlue2"}, +"6109323682422541654":{"type":"Material","name":"Pretendard-SemiBold - GrowLiveStart"}, +"6314807392958113305":{"type":"Material","name":"VibeMOPro-Medium - OutlineDarkBlue3"}, +"6551736024394408551":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineLightGray"}, +"6555697167759138010":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineAnnouncementCategoryEvent"}, +"6778610754640495393":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineWhite"}, +"6986939171476262018":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GlowLightBlue2"}, +"7165616312361268040":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - GachaAnimationName SR Sub"}, +"7211999297087009735":{"type":"Material","name":"VibeMOPro-Medium - GlowBlack"}, +"7318345347737676765":{"type":"Material","name":"Pretendard-SemiBold - OutlineBlack"}, +"7372500088219536569":{"type":"Material","name":"VibeMOPro-Medium - OutlineDark2"}, +"7615596124954674348":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineDarkBlueBlack_30"}, +"7861336876877348264":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineButtonText"}, +"7902571500223497914":{"type":"Material","name":"FZLTH_GB18030L2_R SDF Material"}, +"8107929346775037352":{"type":"Material","name":"Pretendard-SemiBold - OutlineAnnouncementCategoryOther"}, +"8128096787067840719":{"type":"MonoBehaviour","class":"TMP_FontAsset","name":"Fallback Bold SDF"}, +"8267830680678083544":{"type":"Material","name":"A-OTF-ShinGoPr6N-Regular - OutlineDarkBold"}, +"9048467083181436365":{"type":"Material","name":"FZLTH_GB18030L2_R - OutlineAnnouncementCategoryEvent"}}} diff --git a/src/nnnotes/fontsettings.py b/src/nnnotes/fontsettings.py new file mode 100644 index 0000000..7b03742 --- /dev/null +++ b/src/nnnotes/fontsettings.py @@ -0,0 +1,280 @@ +"""The settings of the game's TextMeshPro font assets that the exports with open fonts (`--fonts open`) take. + +An open font asset stands for a game font asset: it gets that asset's point size, padding, render mode, style +settings, line metrics and text materials, mirrors its fallback chain, and the characters the game asset lacks with +its fallbacks take TextMeshPro's missing glyph (storyfonts.open_font_set). These values come from FontSettings: + + builtin() the table shipped with nnnotes (fontsettings.json, FORMAT), so the open-font exports read no + game font asset, material or font bundle + AssetFontSettings the same values read from the game's font assets through an Exporter (`--fonts game`, and + build(), which writes the table) + +The table holds, per font asset LocalizeManager lists for a language and per asset of their fallback chains: +`faceInfo` (m_FaceInfo), `atlasPadding`, `atlasRenderMode`, the style settings (STYLE_KEYS), `material` (the name of +its default material), `fallbacks` (the names of its fallback font asset table, in order), `coverage` (the code +points the asset has: its character table, and for a dynamic asset the character map of its source font file, as a +bit set: bit u of the zlib-compressed bytes, base64), `variants` (the [code point, variation selector] pairs its +source font file maps to a glyph other than the code point's) and `bundle` (the file name of the bundle that holds +it); per material the material record (Exporter.material, its texture references reduced: table_material) of every +font asset's default material and of every localized text material (" - " for the types of +LocalizeManager); and `objects`, the path id, type and name of each of those font assets and materials, by which +references into the font bundles resolve without loading them (export.Exporter `font_stubs`). +""" +from __future__ import annotations + +import base64 +import copy +import functools +import json +import zlib +from pathlib import Path + +FORMAT = "nnnotes.font-settings/1" +FILE = Path(__file__).with_name("fontsettings.json") +STYLE_KEYS = ("normalStyle", "normalSpacingOffset", "boldStyle", "boldSpacing", "italicStyle", "tabSize") +FONT_CLASS = "TMP_FontAsset" +UNDERLINE = 0x5F + + +def encode_coverage(code_points) -> str: + """A set of code points as the table stores it: bit u set in a byte string, zlib-compressed, base64.""" + cps = sorted(set(code_points)) + bits = bytearray((cps[-1] >> 3) + 1 if cps else 0) + for u in cps: + bits[u >> 3] |= 1 << (u & 7) + return base64.b64encode(zlib.compress(bytes(bits), 9)).decode("ascii") + + +def decode_coverage(s: str) -> bytes: + """The bit set of encode_coverage.""" + return zlib.decompress(base64.b64decode(s)) + + +class FontSettings: + """Font asset settings, character coverage and text materials by name (the table document, FORMAT); character + lookup through the fallback chains as TextMeshPro does (tmpfont.FontSet).""" + + def __init__(self, doc: dict): + if doc.get("format") != FORMAT: + raise ValueError(f"font settings: format {doc.get('format')!r}, not {FORMAT}") + self.doc = doc + self.fonts: dict[str, dict] = doc["fonts"] + self.materials: dict[str, dict] = doc["materials"] + self.objects: dict[int, dict] = {int(k): v for k, v in doc.get("objects", {}).items()} + self._bits: dict[str, bytes] = {} + self._variants: dict[str, set] = {} + + def font(self, name: str) -> dict: + """The settings of the font asset `name`.""" + f = self.fonts.get(name) + if f is None: + raise KeyError(f"font asset {name} not in the font settings ({self.where()})") + return f + + def fallbacks(self, name: str) -> list[str]: + return list(self.font(name)["fallbacks"]) + + def has(self, name: str, u: int) -> bool: + """Whether the font asset itself finds the code point (GetCharacterFromFontAsset without fallbacks: its + characters, its dynamic characters, TextMeshPro's synthesized control characters).""" + from .tmpfont import TMP_SYNTHESIZED + if u in TMP_SYNTHESIZED: + return True + if name not in self._bits: + self._bits[name] = decode_coverage(self.font(name)["coverage"]) + b = self._bits[name] + return (u >> 3) < len(b) and bool(b[u >> 3] >> (u & 7) & 1) + + def lookup(self, primary: str, u: int) -> str | None: + """The font asset TMP_Text.GetTextElement finds `u` in, starting at `primary` (tmpfont.FontSet.lookup: the + asset, then each fallback with its own fallbacks depth first, every asset once), or None.""" + if self.has(primary, u): + return primary + searched: set[str] = set() + + def search(name: str) -> str | None: + if self.has(name, u): + return name + for fb in self.fallbacks(name): + if fb not in searched: + searched.add(fb) + hit = search(fb) + if hit is not None: + return hit + return None + for fb in self.fallbacks(primary): + if fb not in searched: + searched.add(fb) + hit = search(fb) + if hit is not None: + return hit + return None + + def underline(self, name: str) -> bool: + """Whether the asset itself has U+005F (tmpfont.underline_character): the glyph its texts' underline and + highlight draw with.""" + return self.has(name, UNDERLINE) + + def missing_glyph(self, name: str, chars, character: int) -> dict | None: + """tmpfont.missing_glyph of the asset `name`: {unicode: the substitute (`character` when the chain has it, + else U+0020, else U+0003), characters: the code points of `chars` the chain lacks}, or None.""" + from .tmpfont import END_OF_TEXT, SPACE + miss = sorted(u for u in chars if self.lookup(name, u) is None) + if not miss: + return None + sub = next(u for u in (character, SPACE, END_OF_TEXT) if self.lookup(name, u) is not None) + return {"unicode": sub, "characters": miss} + + def check_glyph_variants(self, name: str, texts) -> None: + """tmpfont.check_glyph_variants of the asset `name`: NotImplementedError when a character of `texts` the + chain has is followed by a variation selector that the asset holding it maps to a variant glyph.""" + from .tmpfont import is_variation_selector + for s in texts: + cps = [ord(c) for c in s] + for base, vs in zip(cps, cps[1:]): + if is_variation_selector(vs): + hit = self.lookup(name, base) + if hit is not None and (base, vs) in self._variant_set(hit): + raise NotImplementedError(f"{hit}: glyph variant of U+{base:04X} U+{vs:04X}") + + def _variant_set(self, name: str) -> set: + if name not in self._variants: + self._variants[name] = {tuple(p) for p in self.font(name).get("variants", [])} + return self._variants[name] + + def has_material(self, font: str, name: str) -> bool: + return name in self.materials + + def material(self, font: str | None, name: str) -> dict: + """The record of the material `name` of the font asset `font` (a copy).""" + m = self.materials.get(name) + if m is None: + raise KeyError(f"material {name} of {font} not in the font settings ({self.where()})") + return copy.deepcopy(m) + + def game_record(self, name: str) -> dict: + """The settings storyfonts.open_asset takes: point size, padding, render mode, style, default material.""" + f = self.font(name) + return {"pointSize": f["faceInfo"]["m_PointSize"], "padding": f["atlasPadding"], + "renderMode": f["atlasRenderMode"], "style": {k: f[k] for k in STYLE_KEYS}, + "material": self.material(name, f["material"])} + + def where(self) -> str: + return f"nnnotes font settings of game version {self.doc.get('gameVersion')}" + + +@functools.lru_cache(maxsize=1) +def builtin() -> FontSettings: + """The table shipped with nnnotes.""" + return FontSettings(json.loads(FILE.read_text(encoding="utf-8"))) + + +class AssetFontSettings(FontSettings): + """FontSettings read from the game's font assets (`ex`: an Exporter of the catalog and player data): a font asset + at its address (advui.font_key), its fallbacks through their references (tmpfont.FontSet), its materials at their + addresses. Needs the `fonts` extra for the source font files of dynamic assets.""" + + def __init__(self, ex): + super().__init__({"format": FORMAT, "fonts": {}, "materials": {}}) + self.ex = ex + self._set = None + self._mat_objs: dict[str, object] = {} # material name -> its object + + def _fontset(self): + if self._set is None: + from .tmpfont import FontSet + self._set = FontSet(self.ex) + return self._set + + def _font_obj(self, name: str): + fs = self._fontset() + if name not in fs.fonts: + from .advui import font_key + fs.by_key(font_key(self.ex.cat, name, name)) + return fs.fonts[name] + + def font(self, name: str) -> dict: + if name not in self.fonts: + f = self._font_obj(name) + mat = self.ex.material(f.material_obj) + self.materials.setdefault(mat["material"], mat) + self._mat_objs.setdefault(mat["material"], f.material_obj) + tt = f.tt + self.fonts[name] = { + "faceInfo": tt["m_FaceInfo"], "atlasPadding": tt["m_AtlasPadding"], + "atlasRenderMode": tt["m_AtlasRenderMode"], **{k: tt[k] for k in STYLE_KEYS}, + "material": mat["material"], "fallbacks": [fb.name for fb in self._fontset().fallbacks(f)], + "coverage": encode_coverage(set(f.chars) | (f.cmap if f.dynamic else set())), + "variants": sorted([b, vs] for b, vs in f.variants), "bundle": f.obj.assets_file.parent.name} + return self.fonts[name] + + def has_material(self, font: str, name: str) -> bool: + from .advui import font_key + return name in self.materials or self.ex.cat.has(font_key(self.ex.cat, font, name)) + + def material(self, font: str | None, name: str) -> dict: + if name not in self.materials: + from .advui import font_key + key = font_key(self.ex.cat, font, name) + if not self.ex.cat.has(key): + raise KeyError(f"material key {key}") + self._mat_objs[name] = self.ex.key_object(key) + self.materials[name] = self.ex.material(self._mat_objs[name]) + return copy.deepcopy(self.materials[name]) + + def where(self) -> str: + return "the game's font assets" + + +def table_material(m: dict) -> dict: + """A material record as the table stores it: its texture references reduced to {name, width, height, format}, + the values the open-font exports take from them.""" + m = copy.deepcopy(m) + for v in m["textures"].values(): + t = v["texture"] + if t is not None: + v["texture"] = {"name": t["name"], "width": t["width"], "height": t["height"], "format": t.get("format")} + return m + + +def build(ex, player, game_version: str) -> dict: + """The table (FORMAT) from the game's assets: every font asset LocalizeManager lists for a language (font names + and additional font names) with the assets of their fallback chains, their default materials and the localized + text materials of the listed assets that the catalog has (table_material), and the objects index of those + assets.""" + from . import textstyle + lang = textstyle.language_fonts(player) + settings = AssetFontSettings(ex) + listed = sorted({f"{n} SDF" for d in lang["languages"].values() + for n in d["fontNames"] + d["additionalFontNames"]}) + todo, seen = list(listed), set() + while todo: + name = todo.pop(0) + if name not in seen: + seen.add(name) + todo += settings.font(name)["fallbacks"] + for name in listed: + base = name[:-4] if name.endswith(" SDF") else name + for t in lang["materialTypes"]: + if settings.has_material(name, f"{base} - {t}"): + settings.material(name, f"{base} - {t}") + fs = settings._fontset() + objects = {str(fs.fonts[n].obj.path_id): {"type": "MonoBehaviour", "class": FONT_CLASS, "name": n} + for n in sorted(seen)} + objects.update({str(o.path_id): {"type": "Material", "name": n} for n, o in sorted(settings._mat_objs.items())}) + return {"format": FORMAT, "gameVersion": game_version, + "fonts": {n: settings.fonts[n] for n in sorted(seen)}, + "materials": {n: table_material(settings.materials[n]) for n in sorted(settings.materials)}, + "objects": dict(sorted(objects.items(), key=lambda kv: int(kv[0])))} + + +def write(doc: dict, path: Path = FILE) -> None: + """The table, one font asset, material or object per line.""" + def entries(table: dict) -> str: + rows = [f"{json.dumps(k, ensure_ascii=False)}:{json.dumps(v, ensure_ascii=False, separators=(',', ':'))}" + for k, v in table.items()] + return "{\n" + ",\n".join(rows) + "}" + head = {k: v for k, v in doc.items() if k not in ("fonts", "materials", "objects")} + body = ",\n".join(f"{json.dumps(k)}:{entries(doc[k])}" for k in ("fonts", "materials", "objects")) + text = json.dumps(head, ensure_ascii=False, separators=(",", ":"))[:-1] + ",\n" + body + "}\n" + Path(path).write_text(text, encoding="utf-8", newline="\n") diff --git a/src/nnnotes/liveui.py b/src/nnnotes/liveui.py index 82c5c32..c8dd8ff 100644 --- a/src/nnnotes/liveui.py +++ b/src/nnnotes/liveui.py @@ -31,7 +31,7 @@ from .jsonio import write_json from .player import PlayerData from .score import master_table -from . import languages, textstyle, tmpfont +from . import fontsettings, languages, textstyle, tmpfont from .textstyle import LANGUAGE_LINE_SPACING SCENE_KEY = "EmbScene/Live" @@ -171,7 +171,7 @@ def extract(cat: Catalog, player: PlayerData, out_dir: Path, master: Path, music raise ValueError(f"fonts {fonts}: one of {', '.join(FONT_CHOICES)}") mode, column = languages.mode(language), languages.column(language) ex = Exporter(cat, base, player=player, textures="deferred", stub_assets=TMP_STUBS, - follow=("AnimatorController",)) + follow=("AnimatorController",), font_stubs=fontsettings.builtin() if fonts == "open" else None) packer = TexelPacker(base) # -- the canvas subtree of the scene (deferred: sprite / texture references) ------------------------- @@ -196,7 +196,7 @@ def extract(cat: Catalog, player: PlayerData, out_dir: Path, master: Path, music text_of[r["gameObject"]] = strings[key] # -- TMP texts of the drawn part: LocalizeText overrides and the characters they show ------------- - styles = textstyle.TextStyles(ex, player, mode) if fonts == "open" else None + styles = textstyle.TextStyles(ex, player, mode, fontsettings.builtin()) if fonts == "open" else None lang = styles.lang if styles else textstyle.language_fonts(player) swap = styles.swap if styles else textstyle.font_swap(lang, mode) fontset = tmpfont.FontSet(ex) if fonts == "game" else None diff --git a/src/nnnotes/storyfonts.py b/src/nnnotes/storyfonts.py index def0870..d500032 100644 --- a/src/nnnotes/storyfonts.py +++ b/src/nnnotes/storyfonts.py @@ -27,7 +27,9 @@ the page as _MainTex and the page size as _TextureWidth / _TextureHeight. The game asset's fallback chain is mirrored (open_font_set): each game fallback asset stands for an asset of the font file of the language LocalizeManager lists it for, which holds the characters the assets before it in the - chain lack. No glyph or atlas texel of the game is read. + chain lack. The game assets' settings, character coverage, fallback lists and text materials come from + nnnotes' table of them (fontsettings.builtin()): no game font asset, material, glyph or font bundle is + read. game_fonts the game's TMP font assets (advui.extract with fonts="game", tmpfont.export_fonts): the same records moved from its ui.json into fonts.json, the glyph pages into ui/fonts/. @@ -53,7 +55,7 @@ import numpy as np -from . import adv, advui, cache, jsonio, languages, master, textstyle, tmpfont +from . import adv, advui, cache, fontsettings, jsonio, languages, master, textstyle, tmpfont from . import shader as shader_mod from .config import ConfigError from .export import Exporter, _safe, packed_png, texture_png @@ -84,7 +86,7 @@ "m_AscentLine", "m_CapLine", "m_MeanLine", "m_Baseline", "m_DescentLine", "m_SuperscriptOffset", "m_SuperscriptSize", "m_SubscriptOffset", "m_SubscriptSize", "m_UnderlineOffset", "m_UnderlineThickness", "m_StrikethroughOffset", "m_StrikethroughThickness", "m_TabWidth") -STYLE_KEYS = ("normalStyle", "normalSpacingOffset", "boldStyle", "boldSpacing", "italicStyle", "tabSize") +STYLE_KEYS = fontsettings.STYLE_KEYS # OpenType name table ids NAME_FAMILY, NAME_STYLE, NAME_VERSION, NAME_LICENSE, NAME_LICENSE_URL = 1, 2, 5, 13, 14 NAME_TYPO_FAMILY, NAME_TYPO_STYLE = 16, 17 @@ -529,9 +531,9 @@ def _write(ui_dir: Path, fonts_doc: dict, lang_doc: dict) -> None: (Path(ui_dir) / LANGUAGE_DOC).write_bytes(_dump(lang_doc)) -def _exporter(cat, player, work: Path) -> Exporter: +def _exporter(cat, player, work: Path, font_stubs=None) -> Exporter: return Exporter(cat, Path(work), player=player, textures="deferred", - stub_assets=("TMP_FontAsset", "TMP_SpriteAsset", "TMP_StyleSheet")) + stub_assets=("TMP_FontAsset", "TMP_SpriteAsset", "TMP_StyleSheet"), font_stubs=font_stubs) # ---------------------------------------------------------------- open fonts @@ -647,21 +649,21 @@ def text(key: str) -> str: "useModernHangulLineBreakingRules": bool(tt["m_UseModernHangulLineBreakingRules"])} -def search_order(fallbacks_of, font, exported: set) -> list[str]: +def search_order(fallbacks_of, font: str, exported: set) -> list[str]: """The font assets TMP searches after `font` for a character `font` lacks, as tmpfont.FontSet.lookup (TMP_FontAssetUtilities.GetCharacterFromFontAsset_Internal: each fallback, then that fallback's own fallbacks, depth first, every asset once per search), reduced to the `exported` names, without `font` itself. - `fallbacks_of(f)`: the fallback assets of f (objects with a `name`).""" + `fallbacks_of(name)`: the names of the fallback assets of the font asset `name`.""" out: list[str] = [] searched: set = set() - def walk(f) -> None: + def walk(f: str) -> None: for fb in fallbacks_of(f): - if fb.name in searched: + if fb in searched: continue - searched.add(fb.name) - if fb.name in exported and fb.name != font.name: - out.append(fb.name) + searched.add(fb) + if fb in exported and fb != font: + out.append(fb) walk(fb) walk(font) return out @@ -676,7 +678,8 @@ def fallback_chains(ex: Exporter, primaries: set, exported: set) -> dict[str, li missing = sorted(exported - set(fs.fonts)) if missing: raise RuntimeError(f"font assets {missing} are not reachable from {sorted(primaries)}") - return {n: search_order(fs.fallbacks, fs.fonts[n], exported) for n in sorted(exported)} + return {n: search_order(lambda f: [fb.name for fb in fs.fallbacks(fs.fonts[f])], n, exported) + for n in sorted(exported)} FALLBACK_FLOATS = ("_GradientScale", "_TextureWidth", "_TextureHeight", "_WeightNormal", "_WeightBold") @@ -742,18 +745,12 @@ def fallback_material(m: dict, target: dict, name: str) -> dict: return out -def _game_font_record(ex: Exporter, f: tmpfont.Font) -> dict: - """The game font asset settings open_asset takes: point size, padding, render mode, style, default material.""" - return {"pointSize": f.tt["m_FaceInfo"]["m_PointSize"], "padding": f.tt["m_AtlasPadding"], - "renderMode": f.tt["m_AtlasRenderMode"], "style": {k: f.tt[k] for k in STYLE_KEYS}, - "material": ex.material(f.material_obj)} - - def open_font_set(cat, player, ex: Exporter, language: str, font: FontFile, bindings: list[dict], shown: list[str], ui_dir: Path, font_of=no_font_file, sprite_drawn: dict | None = None, - margin_materials: dict | None = None) -> dict: + margin_materials: dict | None = None, settings=None) -> dict: """The open font assets of the text `bindings` (their `localized` game font asset and material, replaced in - place by the open asset and its material) in `language`, for the texts `shown`: + place by the open asset and its material) in `language`, for the texts `shown`, with the game font assets of + `settings` (fontsettings.FontSettings; default: the built-in table): - per localized game font asset (a primary) an asset of `font` (the language's font file) with the game asset's point size, padding, style settings, render mode and text materials (open_asset); @@ -773,6 +770,7 @@ def open_font_set(cat, player, ex: Exporter, language: str, font: FontFile, bind the glyph margin covers (so the pages equal another document's with the same characters). The pages go to `ui_dir`/fonts/. -> {fonts, textures, materials, missing (code points no asset maps), substituted (code points drawn as a missing glyph)}.""" + settings = settings if settings is not None else fontsettings.builtin() lang = textstyle.language_fonts(player) sprite_drawn = sprite_drawn or {} margin_materials = margin_materials or {} @@ -781,7 +779,6 @@ def open_font_set(cat, player, ex: Exporter, language: str, font: FontFile, bind for t in bindings: by_game.setdefault(t["localized"]["fontAsset"], []).append(t) primaries = sorted(by_game) - fs = tmpfont.FontSet(ex) missing_char = tmpfont.missing_glyph_character(player) files = {language: font} @@ -792,7 +789,7 @@ def file_of(code: str) -> FontFile: def chain(name: str, code: str) -> list[tuple[str, str]]: out = [(name, code)] - for fb in search_order(fs.fallbacks, fs.fonts[name], set(fs.fonts)): + for fb in search_order(settings.fallbacks, name, set(settings.fonts)): c = counterpart_language(lang, language, fb) if c is not None and (fb, c) not in out: out.append((fb, c)) @@ -802,30 +799,25 @@ def chain(name: str, code: str) -> list[tuple[str, str]]: held: dict[tuple[str, str], set[int]] = {} mgs, text_mats, margins, missing, substituted = {}, {}, {}, set(), set() for name in primaries: - g = fs.by_key(advui.font_key(cat, name, name)) - tmpfont.check_glyph_variants(fs, g, shown) - mg = tmpfont.missing_glyph(fs, g, chars, missing_char) + settings.check_glyph_variants(name, shown) + mg = settings.missing_glyph(name, chars, missing_char) gone = set(mg["characters"]) if mg else set() substituted |= gone mgs[name] = mg # GetUnderlineSpecialCharacter: '_' of the game asset itself (no fallback); a '_' its fallback draws for the # text would be the underline glyph too in one open asset - if not tmpfont.underline_character(fs, g) and UNDERLINE_CHARACTER in chars and UNDERLINE_CHARACTER not in gone: + if not settings.underline(name) and UNDERLINE_CHARACTER in chars and UNDERLINE_CHARACTER not in gone: raise NotImplementedError(f"{name}: U+005F from a fallback without the asset's own underline glyph") mats = {} for t in by_game[name]: mname = t["localized"]["material"] if mname not in mats: - key = advui.font_key(cat, name, mname) - if not cat.has(key): - raise KeyError(f"material key {key}") - mats[mname] = ex.material(ex.key_object(key)) + mats[mname] = settings.material(name, mname) text_mats[name] = mats margins[name] = dict(mats) for mname in sorted(margin_materials.get(name, ())): - key = advui.font_key(cat, name, mname) - if mname not in margins[name] and cat.has(key): - margins[name][mname] = ex.material(ex.key_object(key)) + if mname not in margins[name] and settings.has_material(name, mname): + margins[name][mname] = settings.material(name, mname) own = (name, language) held.setdefault(own, set()) want = sorted({u for u in chars if u not in gone and u not in sprite_drawn.get(name, ())} @@ -858,8 +850,8 @@ def name_of(key: tuple[str, str]) -> str: primary = gname in by_game and code == language margin = margins[gname] if primary else {m: r for n in users[key] for m, r in margins[n].items()} name = names[key] - a = open_asset(file_of(code), name, sorted(held[key]), _game_font_record(ex, fs.fonts[gname]), margin, - tmpfont.underline_character(fs, fs.fonts[gname]) if primary else False) + a = open_asset(file_of(code), name, sorted(held[key]), settings.game_record(gname), margin, + settings.underline(gname) if primary else False) used = {f"{name} Material"} | ({a["renames"][m] for m in text_mats[gname]} if primary else set()) a["font"]["fallbacks"] = [names[k] for k in chain(gname, code)[1:] if k in names and k != key] if primary and mgs[gname]: @@ -898,7 +890,8 @@ def open_fonts(cat, player, episode: dict, ui_dir: Path, language: str, font: Fo ui_dir = Path(ui_dir) ui_doc = json.loads((ui_dir / "ui.json").read_text(encoding="utf-8")) mode, field = languages.mode(language), languages.column(language)[1:] - ex = _exporter(cat, player, ui_dir / "_fonts") + settings = fontsettings.builtin() + ex = _exporter(cat, player, ui_dir / "_fonts", settings) lang = textstyle.language_fonts(player) sprite_name = emoji.asset_name if emoji is not None else NO_EMOJI_FONT texts = text_bindings(ex, ui_doc, lang, mode, sprite_name) @@ -917,9 +910,10 @@ def open_fonts(cat, player, episode: dict, ui_dir: Path, language: str, font: Fo rec = None if any("spriteAsset" in t for t in bindings): rec = advui.sprite_asset_record(ex) - sprite_drawn = drawn_by_sprites(ex, rec, [t for t in bindings if "spriteAsset" in t], chars) + sprite_drawn = drawn_by_sprites(rec, [t for t in bindings if "spriteAsset" in t], chars, settings.lookup) # the open font assets with the mirrored fallback chains, the missing glyph and the fallback materials - fset = open_font_set(cat, player, ex, language, font, bindings, shown, ui_dir, font_of, sprite_drawn) + fset = open_font_set(cat, player, ex, language, font, bindings, shown, ui_dir, font_of, sprite_drawn, + settings=settings) fonts, textures, materials = fset["fonts"], fset["textures"], fset["materials"] missing, substituted = fset["missing"], fset["substituted"] coverage = {"characters": len(chars), "missing": [chr(u) for u in sorted(missing)]} @@ -1056,17 +1050,14 @@ def sprite_sequence(name: str, unicode: int) -> str: return advui.emoji_sequence_key(name, unicode) or chr(unicode) -def drawn_by_sprites(ex: Exporter, rec: dict, bindings: list[dict], chars) -> dict[str, set[int]]: +def drawn_by_sprites(rec: dict, bindings: list[dict], chars, lookup) -> dict[str, set[int]]: """{game font asset: the code points of `chars` the sprite asset record `rec` draws for the texts of `bindings` - that use that font asset}: the ones the font asset lacks with its fallbacks (tmpfont.FontSet lookup, as - TMP_Text.GetTextElement before the sprite asset) and a sprite character of `rec` has.""" - fs = tmpfont.FontSet(ex) + that use that font asset}: the ones the font asset lacks with its fallbacks (`lookup(font asset, code point)`, + None when no asset of the chain has it: TMP_Text.GetTextElement before the sprite asset) and a sprite character + of `rec` has.""" have = {c["unicode"] for c in rec["characters"] if str(c["glyph"]) in rec["glyphs"]} - out = {} - for game_name in sorted({t["localized"]["fontAsset"] for t in bindings}): - f = fs.by_key(advui.font_key(ex.cat, game_name, game_name)) - out[game_name] = {u for u in chars if u in have and fs.lookup(f, u) is None} - return out + return {game_name: {u for u in chars if u in have and lookup(game_name, u) is None} + for game_name in sorted({t["localized"]["fontAsset"] for t in bindings})} def sprite_needs(rec: dict, texts: list[str], drawn: set[int]) -> list[int]: @@ -1225,7 +1216,11 @@ def game_fonts(cat, player, game_ui_dir: Path, ui_dir: Path, language: str, epis rec = advui.sprite_asset_record(ex) shown = shown_texts(episode, ui_doc, master_dir, languages.column(language)[1:]) chars = sorted({ord(ch) for s in shown for ch in s}) - drawn = set().union(*drawn_by_sprites(ex, rec, [texts[p] for p in sorted(driven)], chars).values()) + fs = tmpfont.FontSet(ex) + + def lookup(name, u): + return fs.lookup(fs.by_key(advui.font_key(ex.cat, name, name)), u) + drawn = set().union(*drawn_by_sprites(rec, [texts[p] for p in sorted(driven)], chars, lookup).values()) if sprite_needs(rec, shown, drawn): sprites = game_sprite_asset(ex, ui_dir, rec) if sprites is None: diff --git a/src/nnnotes/storyhost.py b/src/nnnotes/storyhost.py index 377f3ad..3ef4d2f 100644 --- a/src/nnnotes/storyhost.py +++ b/src/nnnotes/storyhost.py @@ -34,7 +34,7 @@ import numpy as np import UnityPy -from . import advscene, advui, languages, master, room, spot, storyfonts, textstyle, tmpfont +from . import advscene, advui, fontsettings, languages, master, room, spot, storyfonts, textstyle, tmpfont from . import shader as shader_mod from .export import RECT_PROPS, Exporter, TexelPacker, streamed_frames from .jsonio import dumps, write_json @@ -357,9 +357,11 @@ class UiDoc: def __init__(self, cat, player, out_dir: Path, mode: int | None = None): self.player, self.dir = player, Path(out_dir) self.dir.mkdir(parents=True, exist_ok=True) - self.ex = Exporter(cat, self.dir, player=player, textures="deferred", stub_assets=TMP_STUBS) + self.ex = Exporter(cat, self.dir, player=player, textures="deferred", stub_assets=TMP_STUBS, + font_stubs=fontsettings.builtin()) self.packer = TexelPacker(self.dir) - self.styles = textstyle.TextStyles(self.ex, player, mode) if mode is not None else None + self.styles = (textstyle.TextStyles(self.ex, player, mode, fontsettings.builtin()) if mode is not None + else None) self.nodes: list[dict] = [] self.sources: list[tuple[str, dict]] = [] # (key, prefab node) of each record self.roots: list[dict] = [] diff --git a/src/nnnotes/textstyle.py b/src/nnnotes/textstyle.py index 923350a..587a2ca 100644 --- a/src/nnnotes/textstyle.py +++ b/src/nnnotes/textstyle.py @@ -315,21 +315,21 @@ def text_style(comp: dict, localize: dict | None, lang: dict, style: dict, mode: class TextStyles: """Text records of TMP texts read through an Exporter: the material each text draws with in the language - `mode` (LocalizeText) and the face info of its font asset; no font data is kept.""" + `mode` (LocalizeText) and the face info of its font asset, from `fonts` (fontsettings.FontSettings; default: + the game's font assets, fontsettings.AssetFontSettings); no font data is kept.""" - def __init__(self, ex: Exporter, player: PlayerData, mode: int): + def __init__(self, ex: Exporter, player: PlayerData, mode: int, fonts=None): + from . import fontsettings self.ex, self.mode = ex, mode + self.fonts = fonts if fonts is not None else fontsettings.AssetFontSettings(ex) self.lang = language_fonts(player) self.swap = font_swap(self.lang, mode) self.roles: dict[str, dict] = {} self._styles: dict[tuple, dict] = {} - self._faces: dict[str, tuple] = {} def _face(self, font_asset: str) -> tuple[dict, dict]: - if font_asset not in self._faces: - tt = self.ex.key_object(font_dir(font_asset) + font_asset).read_typetree() - self._faces[font_asset] = (tt["m_FaceInfo"], {k: tt[k] for k in ("normalSpacingOffset", "boldSpacing")}) - return self._faces[font_asset] + f = self.fonts.font(font_asset) + return f["faceInfo"], {k: f[k] for k in ("normalSpacingOffset", "boldSpacing")} def record(self, path: str, comp: dict, localize: dict | None) -> dict: """The text record of `comp` (TMP text component) with its LocalizeText component `localize`.""" @@ -338,12 +338,9 @@ def record(self, path: str, comp: dict, localize: dict | None) -> dict: loc = localize_text(path, fa, mat, self.swap, self.lang, self.mode) fa, mat = loc["fontAsset"], loc["material"] if (fa, mat) not in self._styles: - key = font_dir(fa) + mat - if not self.ex.cat.has(key): - raise KeyError(f"material key {key}") face, extra = self._face(fa) - self._styles[(fa, mat)] = material_style(self.ex.material(self.ex.key_object(key)), - face["m_PointSize"], face["m_Scale"]) + self._styles[(fa, mat)] = material_style(self.fonts.material(fa, mat), face["m_PointSize"], + face["m_Scale"]) rec = text_style(comp, localize, self.lang, self._styles[(fa, mat)], self.mode) if rec["fontRole"] not in self.roles: face, extra = self._face(fa) diff --git a/tests/test_fontsettings.py b/tests/test_fontsettings.py new file mode 100644 index 0000000..66c48df --- /dev/null +++ b/tests/test_fontsettings.py @@ -0,0 +1,119 @@ +"""The font settings table of the open-font exports (fontsettings).""" +import json + +import pytest + +from nnnotes import export, fontsettings +from nnnotes.tmpfont import END_OF_TEXT, SPACE + +FACE = {"m_PointSize": 40.0, "m_Scale": 1.0} +STYLE = {"normalStyle": 0.0, "normalSpacingOffset": 0.0, "boldStyle": 0.75, "boldSpacing": 7.0, "italicStyle": 35, + "tabSize": 10} + + +def font(chars: str, fallbacks=(), material="", variants=()): + return {"faceInfo": FACE, "atlasPadding": 9, "atlasRenderMode": 4165, **STYLE, "material": material, + "fallbacks": list(fallbacks), "coverage": fontsettings.encode_coverage(map(ord, chars)), + "variants": [list(v) for v in variants], "bundle": "fonts.bundle"} + + +def table(**fonts): + return {"format": fontsettings.FORMAT, "gameVersion": "1.0.0", "fonts": fonts, + "materials": {"A SDF Material": {"material": "A SDF Material", "floats": {"_GradientScale": 10.0}}}, + "objects": {"7": {"type": "MonoBehaviour", "class": fontsettings.FONT_CLASS, "name": "A SDF"}, + "8": {"type": "Material", "name": "A SDF Material"}}} + + +def test_coverage_round_trip(): + cps = {0x20, 0x41, 0x3042, 0x1F600} + bits = fontsettings.decode_coverage(fontsettings.encode_coverage(cps)) + assert {u for u in range(len(bits) * 8) if bits[u >> 3] >> (u & 7) & 1} == cps + assert fontsettings.decode_coverage(fontsettings.encode_coverage([])) == b"" + + +def test_lookup_follows_the_fallback_chain_depth_first(): + """Each fallback, then its own fallbacks, before the next fallback; every asset once (a cycle ends).""" + s = fontsettings.FontSettings(table(**{"A SDF": font("A", ["B SDF", "C SDF"], "A SDF Material"), + "B SDF": font("B", ["D SDF"]), "C SDF": font("CD", ["A SDF"]), + "D SDF": font("D", ["B SDF"])})) + assert [s.lookup("A SDF", ord(c)) for c in "ABCDE"] == ["A SDF", "B SDF", "C SDF", "D SDF", None] + assert s.lookup("C SDF", ord("B")) == "B SDF" + assert s.has("A SDF", END_OF_TEXT) # TextMeshPro's synthesized characters + assert s.underline("C SDF") is False + with pytest.raises(KeyError, match="font asset E SDF not in the font settings"): + s.font("E SDF") + + +def test_missing_glyph_and_variants(): + s = fontsettings.FontSettings(table(**{"A SDF": font("A \u25a1", ["B SDF"], variants=[(0x845B, 0xE0100)]), + "B SDF": font("\u845b ", variants=[(0x845B, 0xE0101)]), + "C SDF": font("C")})) + assert s.missing_glyph("A SDF", [ord("A"), 0x845B], 0x25A1) is None + assert s.missing_glyph("A SDF", [0x2661, ord("A"), ord("Z")], 0x25A1) == {"unicode": 0x25A1, + "characters": [ord("Z"), 0x2661]} + assert s.missing_glyph("B SDF", [ord("Z")], 0x25A1) == {"unicode": SPACE, "characters": [ord("Z")]} + assert s.missing_glyph("C SDF", [ord("Z")], 0x25A1) == {"unicode": END_OF_TEXT, "characters": [ord("Z")]} + s.check_glyph_variants("A SDF", ["\u845b\U000e0100"]) # the asset holding U+845B is B SDF + with pytest.raises(NotImplementedError, match="B SDF: glyph variant of U\\+845B U\\+E0101"): + s.check_glyph_variants("A SDF", ["x\u845b\U000e0101"]) + + +def test_materials_and_game_record(): + s = fontsettings.FontSettings(table(**{"A SDF": font("A", material="A SDF Material")})) + m = s.material("A SDF", "A SDF Material") + m["floats"]["_GradientScale"] = 1.0 + assert s.material("A SDF", "A SDF Material")["floats"]["_GradientScale"] == 10.0 # a copy each time + assert s.has_material("A SDF", "A SDF Material") and not s.has_material("A SDF", "A - Outline") + with pytest.raises(KeyError, match="material A - Outline of A SDF not in .* game version 1.0.0"): + s.material("A SDF", "A - Outline") + assert s.game_record("A SDF") == {"pointSize": 40.0, "padding": 9, "renderMode": 4165, "style": STYLE, + "material": {"material": "A SDF Material", "floats": {"_GradientScale": 10.0}}} + assert s.objects[7]["name"] == "A SDF" + with pytest.raises(ValueError, match="format"): + fontsettings.FontSettings({"format": "other"}) + + +def test_table_material_keeps_the_texture_values_the_exports_take(): + tex = {"textureRef": "cab:1", "name": "A SDF Atlas", "width": 512, "height": 256, "format": 1, + "mipCount": 1, "settings": {"m_FilterMode": 1}} + m = {"material": "A SDF Material", "textures": {"_MainTex": {"texture": tex, "scale": {"x": 1.0, "y": 1.0}}, + "_FaceTex": {"texture": None}}} + t = fontsettings.table_material(m) + assert t["textures"]["_MainTex"] == {"texture": {"name": "A SDF Atlas", "width": 512, "height": 256, "format": 1}, + "scale": {"x": 1.0, "y": 1.0}} + assert t["textures"]["_FaceTex"] == {"texture": None} and m["textures"]["_MainTex"]["texture"] is tex + + +def test_write_one_entry_per_line(tmp_path): + doc = table(**{"A SDF": font("A\u3042", material="A SDF Material"), "B SDF": font("B")}) + path = tmp_path / "fontsettings.json" + fontsettings.write(doc, path) + text = path.read_bytes().decode("utf-8") + assert json.loads(text) == doc and "\r" not in text and text.endswith("}\n") + lines = text.splitlines() + assert sum(ln.startswith('"A SDF":') or ln.startswith('"B SDF":') for ln in lines) == 2 + assert sum(ln.startswith('"7":') or ln.startswith('"8":') for ln in lines) == 2 + + +def test_font_stub_resolves_from_the_objects(): + """A reference into a font bundle left out of the closure: a font asset is named, a material is its record.""" + s = fontsettings.FontSettings(table(**{"A SDF": font("A", material="A SDF Material")})) + ex = export.Exporter.__new__(export.Exporter) + ex.font_stubs = s + asset = export.FontStub(s.objects[7], 7) + assert ex.font_stub(asset) == {"asset": fontsettings.FONT_CLASS, "name": "A SDF"} + assert ex.font_stub(export.FontStub(s.objects[8], 8))["floats"] == {"_GradientScale": 10.0} + + +def test_builtin_table_is_complete(): + """Every fallback, default material and object the shipped table names is in it.""" + s = fontsettings.builtin() + assert s.doc["format"] == fontsettings.FORMAT and s.fonts + for name, f in s.fonts.items(): + assert set(f["fallbacks"]) <= set(s.fonts), name + assert f["material"] in s.materials, name + assert set(fontsettings.STYLE_KEYS) <= set(f) and f["bundle"], name + fontsettings.decode_coverage(f["coverage"]) + for rec in s.objects.values(): + assert rec["name"] in (s.fonts if rec["type"] == "MonoBehaviour" else s.materials) + assert {r["name"] for r in s.objects.values() if r["type"] == "MonoBehaviour"} == set(s.fonts) diff --git a/tests/test_story_fonts.py b/tests/test_story_fonts.py index 7747490..1eee9ce 100644 --- a/tests/test_story_fonts.py +++ b/tests/test_story_fonts.py @@ -11,7 +11,7 @@ pytest.importorskip("scipy") pytest.importorskip("fontTools") -from nnnotes import advui, cache, storyfonts, tmpfont # noqa: E402 +from nnnotes import advui, cache, fontsettings, storyfonts, tmpfont # noqa: E402 UPEM = 1000 @@ -432,18 +432,14 @@ def mono(self, o): def test_search_order(): """TMP's depth-first fallback search, every asset once, reduced to the exported assets.""" - class F: - def __init__(self, name): - self.name = name - p, a, b, c, d = F("P"), F("A"), F("B"), F("C"), F("D") - chain = {"P": [a, b], "A": [p, c], "B": [c, d], "C": [], "D": [a]} - fallbacks = lambda f: chain[f.name] # noqa: E731 + chain = {"P": ["A", "B"], "A": ["P", "C"], "B": ["C", "D"], "C": [], "D": ["A"]} + fallbacks = chain.__getitem__ # from P: A (not exported), A's fallbacks P (itself: searched, not listed) with P's B and B's C and D - assert storyfonts.search_order(fallbacks, p, {"P", "B", "C", "D"}) == ["B", "C", "D"] - assert storyfonts.search_order(fallbacks, p, {"C", "D"}) == ["C", "D"] + assert storyfonts.search_order(fallbacks, "P", {"P", "B", "C", "D"}) == ["B", "C", "D"] + assert storyfonts.search_order(fallbacks, "P", {"C", "D"}) == ["C", "D"] # from D: A, P (and through P: B, C), then A's C already searched - assert storyfonts.search_order(fallbacks, d, {"P", "B", "C", "D"}) == ["P", "B", "C"] - assert storyfonts.search_order(fallbacks, c, {"P"}) == [] + assert storyfonts.search_order(fallbacks, "D", {"P", "B", "C", "D"}) == ["P", "B", "C"] + assert storyfonts.search_order(fallbacks, "C", {"P"}) == [] def test_chat_bindings(monkeypatch): @@ -695,59 +691,28 @@ class ChainFont: """A game font asset for open_font_set: its characters, fallback names and settings.""" def __init__(self, name, have, fallbacks=(), pad=4, point=40): - self.name, self.chars, self.fb, self.variants = name, set(have), list(fallbacks), {} - self.tt = {"m_FaceInfo": {"m_PointSize": float(point)}, "m_AtlasPadding": pad, "m_AtlasRenderMode": 4134, - **game()["style"]} - self.material_obj = ("default", name, pad) + self.name, self.chars, self.fb, self.pad, self.point = name, set(have), list(fallbacks), pad, point def chain_env(monkeypatch, fonts, lang): - """open_font_set's game side over the ChainFont list `fonts` and the LocalizeManager table `lang`.""" - by_name = {f.name: f for f in fonts} - - class FontSet: - def __init__(self, ex): - self.fonts = dict(by_name) - - def by_key(self, key): - return self.fonts[key.rsplit("/", 1)[1]] - - def fallbacks(self, f): - return [self.fonts[n] for n in f.fb] - - def _in_font(self, f, u): - return ("baked", f) if u in f.chars else None - - def lookup(self, primary, u): - for f in [primary] + [self.fonts[n] for n in storyfonts.search_order(self.fallbacks, primary, - set(self.fonts))]: - if u in f.chars: - return ("baked", f) - return None - - class Ex: - def material(self, obj): - if isinstance(obj, tuple): # a font asset's default material - m = game(pad=obj[2])["material"] - m = json.loads(json.dumps(m)) - m["material"] = f"{obj[1][:-4]} SDF Material" - m["floats"].update({"_WeightNormal": 0.0, "_WeightBold": 0.5 + obj[2] / 100, "_FaceDilate": 0.0}) - return m - m = outline_material(pad=by_name[obj.split("/")[1] + " SDF"].tt["m_AtlasPadding"]) - m["material"] = obj.rsplit("/", 1)[1] - m["floats"].update({"_WeightNormal": 0.0, "_WeightBold": 0.75, "_FaceDilate": 0.0}) - return m - - def key_object(self, key): - return key - - class Cat: - def has(self, key): - return True - monkeypatch.setattr(tmpfont, "FontSet", FontSet) + """open_font_set's game side: the font settings of the ChainFont list `fonts` (their default materials and a + text material " - OutlineX" each) and the LocalizeManager table `lang`.""" + table = {"format": fontsettings.FORMAT, "fonts": {}, "materials": {}} + for f in fonts: + base = f.name[:-4] + default = json.loads(json.dumps(game(pad=f.pad)["material"])) + default["material"] = f"{base} SDF Material" + default["floats"].update({"_WeightNormal": 0.0, "_WeightBold": 0.5 + f.pad / 100, "_FaceDilate": 0.0}) + text = outline_material(pad=f.pad) + text["material"] = f"{base} - OutlineX" + text["floats"].update({"_WeightNormal": 0.0, "_WeightBold": 0.75, "_FaceDilate": 0.0}) + table["materials"].update({default["material"]: default, text["material"]: text}) + table["fonts"][f.name] = {"faceInfo": {"m_PointSize": float(f.point)}, "atlasPadding": f.pad, + "atlasRenderMode": 4134, **game()["style"], "material": default["material"], + "fallbacks": f.fb, "coverage": fontsettings.encode_coverage(f.chars)} monkeypatch.setattr(tmpfont, "missing_glyph_character", lambda player: 0x25A1) monkeypatch.setattr(storyfonts.textstyle, "language_fonts", lambda player: lang) - return Cat(), Ex() + return fontsettings.FontSettings(table) # LocalizeManager fonts: ja and en J, zh Z, ko K @@ -799,14 +764,15 @@ def test_open_font_set_mirrors_the_fallback_chain(tmp_path, monkeypatch): ja = storyfonts.FontFile(make_font(tmp_path / "Ja.ttf", family="Ja Sans", underscore=True)) fonts = [ChainFont("K SDF", {0x41, 0x42, 0x20, 0x5F, 0x25A1, 0x78}, ["J SDF"], pad=15, point=100), ChainFont("J SDF", {0x53E3, 0x48, 0x5F}, ["X SDF", "K SDF"]), ChainFont("X SDF", {0x2606})] - cat, ex = chain_env(monkeypatch, fonts, CHAIN_LANG) + settings = chain_env(monkeypatch, fonts, CHAIN_LANG) binding = {"localized": {"fontAsset": "K SDF", "material": "K - OutlineX", "lineSpacing": 0}} asked = [] def font_of(code): asked.append(code) return {"ja": ja}[code] - r = storyfonts.open_font_set(cat, "player", ex, "ko", ko, [binding], ["AB \u53e3Hx\u2661_"], tmp_path, font_of) + r = storyfonts.open_font_set(None, "player", None, "ko", ko, [binding], ["AB \u53e3Hx\u2661_"], tmp_path, font_of, + settings=settings) prim, fb = "Ko Sans Regular SDF", "Ja Sans Regular SDF (J SDF)" assert asked == ["ja"] and set(r["fonts"]) == {prim, fb} p, f = r["fonts"][prim], r["fonts"][fb] @@ -828,15 +794,16 @@ def font_of(code): # nothing the ko font lacks: no fallback asset, no fallback material, no other font file asked for asked.clear() b2 = {"localized": {"fontAsset": "K SDF", "material": "K - OutlineX", "lineSpacing": 0}} - r2 = storyfonts.open_font_set(cat, "player", ex, "ko", ko, [b2], ["ABx"], tmp_path / "b", font_of) + r2 = storyfonts.open_font_set(None, "player", None, "ko", ko, [b2], ["ABx"], tmp_path / "b", font_of, + settings=settings) assert asked == [] and set(r2["fonts"]) == {prim} and r2["fonts"][prim]["fallbacks"] == [] assert set(r2["materials"]) == {f"{prim} Material", text} and "missingGlyph" not in r2["fonts"][prim] # a character only the ja file has, without it: a ConfigError naming the setting b3 = {"localized": {"fontAsset": "K SDF", "material": "K - OutlineX", "lineSpacing": 0}} with pytest.raises(storyfonts.ConfigError, match="needs the font file of ja"): - storyfonts.open_font_set(cat, "player", ex, "ko", ko, [b3], ["A\u53e3"], tmp_path / "c") + storyfonts.open_font_set(None, "player", None, "ko", ko, [b3], ["A\u53e3"], tmp_path / "c", settings=settings) # a character no file of the chain maps stays with the primary as missing; a sprite-drawn one is left out b4 = {"localized": {"fontAsset": "K SDF", "material": "K - OutlineX", "lineSpacing": 0}} - r4 = storyfonts.open_font_set(cat, "player", ex, "ko", ko, [b4], ["A\u2606B"], tmp_path / "d", font_of, - sprite_drawn={"K SDF": {0x42}}) + r4 = storyfonts.open_font_set(None, "player", None, "ko", ko, [b4], ["A\u2606B"], tmp_path / "d", font_of, + sprite_drawn={"K SDF": {0x42}}, settings=settings) assert r4["missing"] == {0x2606} and str(0x42) not in r4["fonts"][prim]["characters"] diff --git a/tests/test_story_ui.py b/tests/test_story_ui.py index cb65ed7..a09a5d5 100644 --- a/tests/test_story_ui.py +++ b/tests/test_story_ui.py @@ -5,7 +5,7 @@ import pytest -from nnnotes import advui +from nnnotes import advui, fontsettings WHITE = {"spriteRef": "cab:1", "name": "WhiteRect"} @@ -352,27 +352,18 @@ def test_chat_texts(monkeypatch): "_lockScreenStatusTextKey": ""}]}, {"path": "Line/Top/Name", "components": [tmp_text("CHAT SDF", "CHAT - Default"), localize()]}, {"path": "Line/Top/Percent", "components": [tmp_text("JA-N SDF", "JA-N - Outline", "100%")]}] - keys = [] - - class Cat: - def has(self, key): - return key.startswith("Font/") class Ex: - cat = Cat() - def prefab(self, address): assert address == "Adv/Chat/Prefabs/Line" return {"nodes": window} - - def key_object(self, key): - keys.append(key) - return FakeObj({"m_FaceInfo": {"m_PointSize": 40.0, "m_Scale": 1.0}}) - - def material(self, o): - return {"floats": {}, "colors": {}, "keywords": []} + face = {"m_PointSize": 40.0, "m_Scale": 1.0} + fonts = fontsettings.FontSettings({ + "format": fontsettings.FORMAT, "fonts": {"EN-CHAT SDF": {"faceInfo": face}, "JA-N SDF": {"faceInfo": face}}, + "materials": {"EN-CHAT - Default": {"floats": {}, "colors": {}, "keywords": []}, + "JA-N - Outline": {"floats": {}, "colors": {}, "keywords": []}}}) monkeypatch.setattr(advui.textstyle, "material_style", lambda m, point, scale: {"face": {"point": point}}) - got, status = advui.chat_texts(Ex(), LANG, 1, chat_episode()) + got, status = advui.chat_texts(Ex(), fonts, LANG, 1, chat_episode()) assert status == ["call"] name, pct = got["Line"]["Line/Top/Name"], got["Line"]["Line/Top/Percent"] assert name["localizeText"] == {"enabled": 1, "localizeEnabled": 1} @@ -380,11 +371,11 @@ def material(self, o): assert name["textStyle"]["lineSpacing"]["applied"] == -100.0 and name["textStyle"]["face"] == {"point": 40.0} assert pct["localizeText"] is None and pct["textStyle"]["fontRole"] == "number" assert pct["textStyle"]["lineSpacing"]["applied"] == 3.0 - # the localized font's folder: the embedded copy is not in this catalog, so LocalizeManager's Font/ - assert keys == ["Font/EN-CHAT/EN-CHAT SDF", "Font/EN-CHAT/EN-CHAT - Default", "Font/JA-N/JA-N SDF", - "Font/JA-N/JA-N - Outline"] - assert advui.font_key(type("C", (), {"has": lambda self, k: True})(), "A SDF", "A - Default") == \ - "EmbFont/A/A - Default" + # a font's folder: the embedded copy when the catalog has it, else LocalizeManager's Font/ + no_emb = type("C", (), {"has": lambda self, k: False})() + emb = type("C", (), {"has": lambda self, k: True})() + assert advui.font_key(no_emb, "EN-CHAT SDF", "EN-CHAT - Default") == "Font/EN-CHAT/EN-CHAT - Default" + assert advui.font_key(emb, "A SDF", "A - Default") == "EmbFont/A/A - Default" def test_behaviours_record_every_serialized_field(): diff --git a/tests/test_textstyle.py b/tests/test_textstyle.py index 5eabd70..3326ab7 100644 --- a/tests/test_textstyle.py +++ b/tests/test_textstyle.py @@ -3,7 +3,7 @@ import pytest -from nnnotes import advui, config, languages, textstyle, tmpfont +from nnnotes import advui, config, fontsettings, languages, textstyle, tmpfont from nnnotes.config import Config, ConfigError WHITE = {"r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0} @@ -143,48 +143,22 @@ def test_no_font_data_in_the_record(): "characterSpacing", "wordSpacing", "color", "fontStyle", "face", "outline", "underlay"} -class FakeObject: - def __init__(self, tt): - self.tt = tt - - def read_typetree(self): - return self.tt - - -class FakeCatalog: - def __init__(self, keys): - self.keys = keys - - def has(self, key): - return key in self.keys - - -class FakeExporter: - def __init__(self, objects, materials): - self.objects, self.materials = objects, materials - self.cat = FakeCatalog(set(objects) | set(materials)) - - def key_object(self, key): - return self.objects.get(key) or FakeObject({"_material": key}) - - def material(self, o): - return self.materials[o.tt["_material"]] - - def test_text_styles_reads_the_localized_material(monkeypatch): + """The face info and the localized material come from the font settings (no font asset read).""" monkeypatch.setattr(textstyle, "language_fonts", lambda player: LANG) face = {"m_Scale": 1.0, "m_PointSize": 100.0, "m_LineHeight": 120.0, "m_AscentLine": 90.0, "m_DescentLine": -30.0} - ex = FakeExporter({"EmbFont/MainT/MainT SDF": FakeObject({"m_FaceInfo": face, "normalSpacingOffset": 0.0, - "boldSpacing": 7.0})}, - {"EmbFont/MainT/MainT - Outline": material(["OUTLINE_ON"], _OutlineWidth=0.25)}) - styles = textstyle.TextStyles(ex, player=None, mode=TW) + fonts = fontsettings.FontSettings({ + "format": fontsettings.FORMAT, + "fonts": {"MainT SDF": {"faceInfo": face, "normalSpacingOffset": 0.0, "boldSpacing": 7.0}}, + "materials": {"MainT - Outline": material(["OUTLINE_ON"], _OutlineWidth=0.25)}}) + styles = textstyle.TextStyles(None, player=None, mode=TW, fonts=fonts) rec = styles.record("Canvas/Text", component(), LOCALIZE) assert rec["outline"]["widthEm"] == pytest.approx(0.25 * 15 / 16 * 0.16, abs=1e-6) assert styles.summary()["roles"] == {"primary": {"lineHeightEm": 1.2, "ascentEm": 0.9, "descentEm": -0.3, "spacingOffset": 0.0, "boldSpacing": 7.0}} assert styles.summary()["language"] == "traditionalChinese" - with pytest.raises(KeyError, match="material key"): + with pytest.raises(KeyError, match="MainT - Default of MainT SDF not in the font settings"): styles.record("Canvas/Text", component(m_sharedMaterial={"material": "MainJ - Default"}), LOCALIZE)