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)