Upload folder using huggingface_hub
Browse files- .gitattributes +1 -0
- README.md +87 -0
- assets/Arial.ttf +3 -0
- assets/chinese_char.txt +1000 -0
- assets/color_idx.json +1 -0
- assets/font_idx_512.json +1 -0
- assets/multi_fonts/cn.json +1 -0
- assets/multi_fonts/de.json +1 -0
- assets/multi_fonts/en.json +1 -0
- assets/multi_fonts/es.json +1 -0
- assets/multi_fonts/fr.json +1 -0
- assets/multi_fonts/it.json +1 -0
- assets/multi_fonts/jp.json +1 -0
- assets/multi_fonts/kr.json +1 -0
- assets/multi_fonts/pt.json +1 -0
- assets/multi_fonts/ru.json +1 -0
- assets/multilingual_10-lang_idx.json +1 -0
- assets/teaser/teaser_multilingual_1.webp +0 -0
- assets/teaser/teaser_multilingual_2.webp +0 -0
- assets/teaser/teaser_multilingual_3.webp +0 -0
- assets/teaser/teaser_multilingual_4.webp +0 -0
- checkpoints/byt5_mapper.pt +3 -0
- checkpoints/byt5_model.pt +3 -0
- checkpoints/unet_inserted_attn.pt +3 -0
- checkpoints/unet_lora.pt +3 -0
- configs/glyph_sdxl_multilingual_albedo.py +96 -0
- configuration.json +1 -0
- examples/xiaoman.json +65 -0
- glyph_sdxl/custom_diffusers/__init__.py +2 -0
- glyph_sdxl/custom_diffusers/models/__init__.py +3 -0
- glyph_sdxl/custom_diffusers/models/cross_attn_insert_transformer_blocks.py +377 -0
- glyph_sdxl/custom_diffusers/pipelines/__init__.py +5 -0
- glyph_sdxl/custom_diffusers/pipelines/pipeline_stable_diffusion_glyph_xl.py +922 -0
- glyph_sdxl/modules/__init__.py +7 -0
- glyph_sdxl/modules/byt5_block_byt5_mapper.py +151 -0
- glyph_sdxl/modules/simple_byt5_mapper.py +16 -0
- glyph_sdxl/utils/__init__.py +23 -0
- glyph_sdxl/utils/constants.py +5 -0
- glyph_sdxl/utils/format_prompt.py +113 -0
- glyph_sdxl/utils/load_pretrained_byt5.py +60 -0
- glyph_sdxl/utils/parse_config.py +17 -0
- inference_multilingual.py +236 -0
- requirements.txt +10 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
assets/Arial.ttf filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
library_name: glyph-byt5
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
# Glyph-ByT5-v2: A Strong Aesthetic Baseline for Accurate Multilingual Visual Text Rendering
|
| 8 |
+
|
| 9 |
+
We introduce **Glyph-ByT5-v2**, a customized text encoder for accurate **multilingual** visual text rendering and improved aesthetics.
|
| 10 |
+
As an extension of **Glyph-SDXL**, our multilingual version supports visual text rendering for up to 10 different languages: English, Chinese, Japanese, Korean, French, German, Spanish, Italian, Portuguese and Russian.
|
| 11 |
+
Combined with SDXL, our proposed **Glyph-SDXL-v2** achieves accurate multilingual design image visual text rendering.
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
> [**Glyph-ByT5-v2: A Strong Aesthetic Baseline for Accurate Multilingual Visual Text Rendering**](https://glyph-byt5-v2.github.io/)
|
| 15 |
+
> [Zeyu Liu](https://github.com/lzy-tony), [Weicong Liang](https://scholar.google.com/citations?user=QvHDIygAAAAJ&hl=zh-CN), [Yiming Zhao](https://scholar.google.com.hk/citations?user=_knPaYsAAAAJ&hl=zh-CN), [Bohan Chen](https://github.com/BHCHENGIT), [Ji Li](https://sites.google.com/a/usc.edu/jili/), [Yuhui Yuan](https://www.microsoft.com/en-us/research/people/yuyua/)
|
| 16 |
+
> Microsoft Research Asia; Tsinghua University; Peking University; University of Liverpool
|
| 17 |
+
> Preprint
|
| 18 |
+
|
| 19 |
+
## Model Sources
|
| 20 |
+
|
| 21 |
+
<!-- Provide the basic links for the model. -->
|
| 22 |
+
|
| 23 |
+
- **Repository:** [https://github.com/AIGText/Glyph-ByT5]
|
| 24 |
+
- **Paper:** [https://arxiv.org/abs/2406.10208]
|
| 25 |
+
- **Project Page:** [https://glyph-byt5-v2.github.io/]
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
## Model Description
|
| 29 |
+
|
| 30 |
+
Please check our [paper](https://arxiv.org/abs/2406.10208) and [project page](https://glyph-byt5-v2.github.io/) for more details. Detail usage and inference code can be found [here](https://github.com/AIGText/Glyph-ByT5).
|
| 31 |
+
|
| 32 |
+
## Visualization
|
| 33 |
+
|
| 34 |
+
<table>
|
| 35 |
+
<tr>
|
| 36 |
+
<td><img src="assets/teaser/teaser_multilingual_1.webp" alt="example 1" width="200"/></td>
|
| 37 |
+
<td><img src="assets/teaser/teaser_multilingual_2.webp" alt="example 2" width="200"/></td>
|
| 38 |
+
<td><img src="assets/teaser/teaser_multilingual_3.webp" alt="example 3" width="200"/></td>
|
| 39 |
+
<td><img src="assets/teaser/teaser_multilingual_4.webp" alt="example 4" width="200"/></td>
|
| 40 |
+
</tr>
|
| 41 |
+
</table>
|
| 42 |
+
|
| 43 |
+
## Quick Usage
|
| 44 |
+
|
| 45 |
+
```
|
| 46 |
+
python inference_v2.py configs/glyph_sdxl_v2_albedo.py checkpoints examples/xiaoman.json --out_folder work_dirs/xiaoman --device cuda --sampler dpm
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
## More Configurations
|
| 50 |
+
|
| 51 |
+
We list some more useful configurations for easy usage:
|
| 52 |
+
|
| 53 |
+
| Argument/Config | Place | Default | Description |
|
| 54 |
+
| ----------------------------- | ---------- | ----------------------------------- | ------------------------------------------------------------ |
|
| 55 |
+
| cfg | argument | 5.0 | Classifier-free guidance |
|
| 56 |
+
| sampler | argument | dpm | Sampler, provide support for dpm (DPM++ 2M Karras) and euler (EulerDiscreteScheduler) |
|
| 57 |
+
| pretrained_model_name_or_path | config | stablediffusionapi/albedobase-xl-20 | Base model |
|
| 58 |
+
| seed | annotation | None | Seed for inference |
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
## Citation
|
| 62 |
+
|
| 63 |
+
If you find our work useful in your research, please consider citing:
|
| 64 |
+
|
| 65 |
+
```
|
| 66 |
+
@misc{liu2024glyphbyt5v2,
|
| 67 |
+
title={Glyph-ByT5-v2: A Strong Aesthetic Baseline for Accurate Multilingual Visual Text Rendering},
|
| 68 |
+
author={Zeyu Liu and Weicong Liang and Yiming Zhao and Bohan Chen and Ji Li and Yuhui Yuan},
|
| 69 |
+
year={2024},
|
| 70 |
+
eprint={2406.10208},
|
| 71 |
+
archivePrefix={arXiv},
|
| 72 |
+
primaryClass={cs.CV}
|
| 73 |
+
}
|
| 74 |
+
```
|
| 75 |
+
|
| 76 |
+
and
|
| 77 |
+
|
| 78 |
+
```
|
| 79 |
+
@misc{liu2024glyphbyt5,
|
| 80 |
+
title={Glyph-ByT5: A Customized Text Encoder for Accurate Visual Text Rendering},
|
| 81 |
+
author={Zeyu Liu and Weicong Liang and Zhanhao Liang and Chong Luo and Ji Li and Gao Huang and Yuhui Yuan},
|
| 82 |
+
year={2024},
|
| 83 |
+
eprint={2403.09622},
|
| 84 |
+
archivePrefix={arXiv},
|
| 85 |
+
primaryClass={cs.CV}
|
| 86 |
+
}
|
| 87 |
+
```
|
assets/Arial.ttf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:35c0f3559d8db569e36c31095b8a60d441643d95f59139de40e23fada819b833
|
| 3 |
+
size 275572
|
assets/chinese_char.txt
ADDED
|
@@ -0,0 +1,1000 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
的
|
| 2 |
+
一
|
| 3 |
+
是
|
| 4 |
+
不
|
| 5 |
+
了
|
| 6 |
+
在
|
| 7 |
+
人
|
| 8 |
+
有
|
| 9 |
+
我
|
| 10 |
+
他
|
| 11 |
+
这
|
| 12 |
+
个
|
| 13 |
+
们
|
| 14 |
+
中
|
| 15 |
+
来
|
| 16 |
+
上
|
| 17 |
+
大
|
| 18 |
+
为
|
| 19 |
+
和
|
| 20 |
+
国
|
| 21 |
+
地
|
| 22 |
+
到
|
| 23 |
+
以
|
| 24 |
+
说
|
| 25 |
+
时
|
| 26 |
+
要
|
| 27 |
+
就
|
| 28 |
+
出
|
| 29 |
+
会
|
| 30 |
+
可
|
| 31 |
+
也
|
| 32 |
+
你
|
| 33 |
+
对
|
| 34 |
+
生
|
| 35 |
+
能
|
| 36 |
+
而
|
| 37 |
+
子
|
| 38 |
+
那
|
| 39 |
+
得
|
| 40 |
+
于
|
| 41 |
+
着
|
| 42 |
+
下
|
| 43 |
+
自
|
| 44 |
+
之
|
| 45 |
+
年
|
| 46 |
+
过
|
| 47 |
+
发
|
| 48 |
+
后
|
| 49 |
+
作
|
| 50 |
+
里
|
| 51 |
+
用
|
| 52 |
+
道
|
| 53 |
+
行
|
| 54 |
+
所
|
| 55 |
+
然
|
| 56 |
+
家
|
| 57 |
+
种
|
| 58 |
+
事
|
| 59 |
+
成
|
| 60 |
+
方
|
| 61 |
+
多
|
| 62 |
+
经
|
| 63 |
+
么
|
| 64 |
+
去
|
| 65 |
+
法
|
| 66 |
+
学
|
| 67 |
+
如
|
| 68 |
+
都
|
| 69 |
+
同
|
| 70 |
+
现
|
| 71 |
+
当
|
| 72 |
+
没
|
| 73 |
+
动
|
| 74 |
+
面
|
| 75 |
+
起
|
| 76 |
+
看
|
| 77 |
+
定
|
| 78 |
+
天
|
| 79 |
+
分
|
| 80 |
+
还
|
| 81 |
+
进
|
| 82 |
+
好
|
| 83 |
+
小
|
| 84 |
+
部
|
| 85 |
+
其
|
| 86 |
+
些
|
| 87 |
+
主
|
| 88 |
+
样
|
| 89 |
+
理
|
| 90 |
+
心
|
| 91 |
+
她
|
| 92 |
+
本
|
| 93 |
+
前
|
| 94 |
+
开
|
| 95 |
+
但
|
| 96 |
+
因
|
| 97 |
+
只
|
| 98 |
+
从
|
| 99 |
+
想
|
| 100 |
+
实
|
| 101 |
+
日
|
| 102 |
+
军
|
| 103 |
+
者
|
| 104 |
+
意
|
| 105 |
+
无
|
| 106 |
+
力
|
| 107 |
+
它
|
| 108 |
+
与
|
| 109 |
+
长
|
| 110 |
+
把
|
| 111 |
+
机
|
| 112 |
+
十
|
| 113 |
+
民
|
| 114 |
+
第
|
| 115 |
+
公
|
| 116 |
+
此
|
| 117 |
+
已
|
| 118 |
+
工
|
| 119 |
+
使
|
| 120 |
+
情
|
| 121 |
+
明
|
| 122 |
+
性
|
| 123 |
+
知
|
| 124 |
+
全
|
| 125 |
+
三
|
| 126 |
+
又
|
| 127 |
+
关
|
| 128 |
+
点
|
| 129 |
+
正
|
| 130 |
+
业
|
| 131 |
+
外
|
| 132 |
+
将
|
| 133 |
+
两
|
| 134 |
+
高
|
| 135 |
+
间
|
| 136 |
+
由
|
| 137 |
+
问
|
| 138 |
+
很
|
| 139 |
+
最
|
| 140 |
+
重
|
| 141 |
+
并
|
| 142 |
+
物
|
| 143 |
+
手
|
| 144 |
+
应
|
| 145 |
+
战
|
| 146 |
+
向
|
| 147 |
+
头
|
| 148 |
+
文
|
| 149 |
+
体
|
| 150 |
+
政
|
| 151 |
+
美
|
| 152 |
+
相
|
| 153 |
+
见
|
| 154 |
+
被
|
| 155 |
+
利
|
| 156 |
+
什
|
| 157 |
+
二
|
| 158 |
+
等
|
| 159 |
+
产
|
| 160 |
+
或
|
| 161 |
+
新
|
| 162 |
+
己
|
| 163 |
+
制
|
| 164 |
+
身
|
| 165 |
+
果
|
| 166 |
+
加
|
| 167 |
+
西
|
| 168 |
+
斯
|
| 169 |
+
月
|
| 170 |
+
话
|
| 171 |
+
合
|
| 172 |
+
回
|
| 173 |
+
特
|
| 174 |
+
代
|
| 175 |
+
内
|
| 176 |
+
信
|
| 177 |
+
表
|
| 178 |
+
化
|
| 179 |
+
老
|
| 180 |
+
给
|
| 181 |
+
世
|
| 182 |
+
位
|
| 183 |
+
次
|
| 184 |
+
度
|
| 185 |
+
门
|
| 186 |
+
任
|
| 187 |
+
常
|
| 188 |
+
先
|
| 189 |
+
海
|
| 190 |
+
通
|
| 191 |
+
教
|
| 192 |
+
儿
|
| 193 |
+
原
|
| 194 |
+
东
|
| 195 |
+
声
|
| 196 |
+
提
|
| 197 |
+
立
|
| 198 |
+
及
|
| 199 |
+
比
|
| 200 |
+
员
|
| 201 |
+
解
|
| 202 |
+
水
|
| 203 |
+
名
|
| 204 |
+
真
|
| 205 |
+
论
|
| 206 |
+
处
|
| 207 |
+
走
|
| 208 |
+
义
|
| 209 |
+
各
|
| 210 |
+
入
|
| 211 |
+
几
|
| 212 |
+
口
|
| 213 |
+
认
|
| 214 |
+
条
|
| 215 |
+
平
|
| 216 |
+
系
|
| 217 |
+
气
|
| 218 |
+
题
|
| 219 |
+
活
|
| 220 |
+
尔
|
| 221 |
+
更
|
| 222 |
+
别
|
| 223 |
+
打
|
| 224 |
+
女
|
| 225 |
+
变
|
| 226 |
+
四
|
| 227 |
+
神
|
| 228 |
+
总
|
| 229 |
+
何
|
| 230 |
+
电
|
| 231 |
+
数
|
| 232 |
+
安
|
| 233 |
+
少
|
| 234 |
+
报
|
| 235 |
+
才
|
| 236 |
+
结
|
| 237 |
+
反
|
| 238 |
+
受
|
| 239 |
+
目
|
| 240 |
+
太
|
| 241 |
+
量
|
| 242 |
+
再
|
| 243 |
+
感
|
| 244 |
+
建
|
| 245 |
+
务
|
| 246 |
+
做
|
| 247 |
+
接
|
| 248 |
+
必
|
| 249 |
+
场
|
| 250 |
+
件
|
| 251 |
+
计
|
| 252 |
+
管
|
| 253 |
+
期
|
| 254 |
+
市
|
| 255 |
+
直
|
| 256 |
+
德
|
| 257 |
+
资
|
| 258 |
+
命
|
| 259 |
+
山
|
| 260 |
+
金
|
| 261 |
+
指
|
| 262 |
+
克
|
| 263 |
+
许
|
| 264 |
+
统
|
| 265 |
+
区
|
| 266 |
+
保
|
| 267 |
+
至
|
| 268 |
+
队
|
| 269 |
+
形
|
| 270 |
+
社
|
| 271 |
+
便
|
| 272 |
+
空
|
| 273 |
+
决
|
| 274 |
+
治
|
| 275 |
+
展
|
| 276 |
+
马
|
| 277 |
+
科
|
| 278 |
+
司
|
| 279 |
+
五
|
| 280 |
+
基
|
| 281 |
+
眼
|
| 282 |
+
书
|
| 283 |
+
非
|
| 284 |
+
则
|
| 285 |
+
听
|
| 286 |
+
白
|
| 287 |
+
却
|
| 288 |
+
界
|
| 289 |
+
达
|
| 290 |
+
光
|
| 291 |
+
放
|
| 292 |
+
强
|
| 293 |
+
即
|
| 294 |
+
像
|
| 295 |
+
难
|
| 296 |
+
且
|
| 297 |
+
权
|
| 298 |
+
思
|
| 299 |
+
王
|
| 300 |
+
象
|
| 301 |
+
完
|
| 302 |
+
设
|
| 303 |
+
式
|
| 304 |
+
色
|
| 305 |
+
路
|
| 306 |
+
记
|
| 307 |
+
南
|
| 308 |
+
品
|
| 309 |
+
住
|
| 310 |
+
告
|
| 311 |
+
类
|
| 312 |
+
求
|
| 313 |
+
据
|
| 314 |
+
程
|
| 315 |
+
北
|
| 316 |
+
边
|
| 317 |
+
死
|
| 318 |
+
张
|
| 319 |
+
该
|
| 320 |
+
交
|
| 321 |
+
规
|
| 322 |
+
万
|
| 323 |
+
取
|
| 324 |
+
拉
|
| 325 |
+
格
|
| 326 |
+
望
|
| 327 |
+
觉
|
| 328 |
+
术
|
| 329 |
+
领
|
| 330 |
+
共
|
| 331 |
+
确
|
| 332 |
+
传
|
| 333 |
+
师
|
| 334 |
+
观
|
| 335 |
+
清
|
| 336 |
+
今
|
| 337 |
+
切
|
| 338 |
+
院
|
| 339 |
+
让
|
| 340 |
+
识
|
| 341 |
+
候
|
| 342 |
+
带
|
| 343 |
+
导
|
| 344 |
+
争
|
| 345 |
+
运
|
| 346 |
+
笑
|
| 347 |
+
飞
|
| 348 |
+
风
|
| 349 |
+
步
|
| 350 |
+
改
|
| 351 |
+
收
|
| 352 |
+
根
|
| 353 |
+
干
|
| 354 |
+
造
|
| 355 |
+
言
|
| 356 |
+
联
|
| 357 |
+
持
|
| 358 |
+
组
|
| 359 |
+
每
|
| 360 |
+
济
|
| 361 |
+
车
|
| 362 |
+
亲
|
| 363 |
+
极
|
| 364 |
+
林
|
| 365 |
+
服
|
| 366 |
+
快
|
| 367 |
+
办
|
| 368 |
+
议
|
| 369 |
+
往
|
| 370 |
+
元
|
| 371 |
+
英
|
| 372 |
+
士
|
| 373 |
+
证
|
| 374 |
+
近
|
| 375 |
+
失
|
| 376 |
+
转
|
| 377 |
+
夫
|
| 378 |
+
令
|
| 379 |
+
准
|
| 380 |
+
布
|
| 381 |
+
始
|
| 382 |
+
怎
|
| 383 |
+
呢
|
| 384 |
+
存
|
| 385 |
+
未
|
| 386 |
+
远
|
| 387 |
+
叫
|
| 388 |
+
台
|
| 389 |
+
单
|
| 390 |
+
影
|
| 391 |
+
具
|
| 392 |
+
罗
|
| 393 |
+
字
|
| 394 |
+
爱
|
| 395 |
+
击
|
| 396 |
+
流
|
| 397 |
+
备
|
| 398 |
+
兵
|
| 399 |
+
连
|
| 400 |
+
调
|
| 401 |
+
深
|
| 402 |
+
商
|
| 403 |
+
算
|
| 404 |
+
质
|
| 405 |
+
团
|
| 406 |
+
集
|
| 407 |
+
百
|
| 408 |
+
需
|
| 409 |
+
价
|
| 410 |
+
花
|
| 411 |
+
党
|
| 412 |
+
华
|
| 413 |
+
城
|
| 414 |
+
石
|
| 415 |
+
级
|
| 416 |
+
整
|
| 417 |
+
府
|
| 418 |
+
离
|
| 419 |
+
况
|
| 420 |
+
亚
|
| 421 |
+
请
|
| 422 |
+
技
|
| 423 |
+
际
|
| 424 |
+
约
|
| 425 |
+
示
|
| 426 |
+
复
|
| 427 |
+
病
|
| 428 |
+
息
|
| 429 |
+
究
|
| 430 |
+
线
|
| 431 |
+
似
|
| 432 |
+
官
|
| 433 |
+
火
|
| 434 |
+
断
|
| 435 |
+
精
|
| 436 |
+
满
|
| 437 |
+
支
|
| 438 |
+
视
|
| 439 |
+
消
|
| 440 |
+
越
|
| 441 |
+
器
|
| 442 |
+
容
|
| 443 |
+
照
|
| 444 |
+
须
|
| 445 |
+
九
|
| 446 |
+
增
|
| 447 |
+
研
|
| 448 |
+
写
|
| 449 |
+
称
|
| 450 |
+
企
|
| 451 |
+
八
|
| 452 |
+
功
|
| 453 |
+
吗
|
| 454 |
+
包
|
| 455 |
+
片
|
| 456 |
+
史
|
| 457 |
+
委
|
| 458 |
+
乎
|
| 459 |
+
查
|
| 460 |
+
轻
|
| 461 |
+
易
|
| 462 |
+
早
|
| 463 |
+
曾
|
| 464 |
+
除
|
| 465 |
+
农
|
| 466 |
+
找
|
| 467 |
+
装
|
| 468 |
+
广
|
| 469 |
+
显
|
| 470 |
+
吧
|
| 471 |
+
阿
|
| 472 |
+
李
|
| 473 |
+
标
|
| 474 |
+
谈
|
| 475 |
+
吃
|
| 476 |
+
图
|
| 477 |
+
念
|
| 478 |
+
六
|
| 479 |
+
引
|
| 480 |
+
历
|
| 481 |
+
首
|
| 482 |
+
医
|
| 483 |
+
局
|
| 484 |
+
突
|
| 485 |
+
专
|
| 486 |
+
费
|
| 487 |
+
号
|
| 488 |
+
尽
|
| 489 |
+
另
|
| 490 |
+
周
|
| 491 |
+
较
|
| 492 |
+
注
|
| 493 |
+
语
|
| 494 |
+
仅
|
| 495 |
+
考
|
| 496 |
+
落
|
| 497 |
+
青
|
| 498 |
+
随
|
| 499 |
+
选
|
| 500 |
+
列
|
| 501 |
+
武
|
| 502 |
+
红
|
| 503 |
+
响
|
| 504 |
+
虽
|
| 505 |
+
推
|
| 506 |
+
势
|
| 507 |
+
参
|
| 508 |
+
希
|
| 509 |
+
古
|
| 510 |
+
众
|
| 511 |
+
构
|
| 512 |
+
房
|
| 513 |
+
半
|
| 514 |
+
节
|
| 515 |
+
土
|
| 516 |
+
投
|
| 517 |
+
某
|
| 518 |
+
案
|
| 519 |
+
黑
|
| 520 |
+
维
|
| 521 |
+
革
|
| 522 |
+
划
|
| 523 |
+
敌
|
| 524 |
+
致
|
| 525 |
+
陈
|
| 526 |
+
律
|
| 527 |
+
足
|
| 528 |
+
态
|
| 529 |
+
护
|
| 530 |
+
七
|
| 531 |
+
兴
|
| 532 |
+
派
|
| 533 |
+
孩
|
| 534 |
+
验
|
| 535 |
+
责
|
| 536 |
+
营
|
| 537 |
+
星
|
| 538 |
+
够
|
| 539 |
+
章
|
| 540 |
+
音
|
| 541 |
+
跟
|
| 542 |
+
志
|
| 543 |
+
底
|
| 544 |
+
站
|
| 545 |
+
严
|
| 546 |
+
巴
|
| 547 |
+
例
|
| 548 |
+
防
|
| 549 |
+
族
|
| 550 |
+
供
|
| 551 |
+
效
|
| 552 |
+
续
|
| 553 |
+
施
|
| 554 |
+
留
|
| 555 |
+
讲
|
| 556 |
+
型
|
| 557 |
+
料
|
| 558 |
+
终
|
| 559 |
+
答
|
| 560 |
+
紧
|
| 561 |
+
黄
|
| 562 |
+
绝
|
| 563 |
+
奇
|
| 564 |
+
察
|
| 565 |
+
母
|
| 566 |
+
京
|
| 567 |
+
段
|
| 568 |
+
依
|
| 569 |
+
批
|
| 570 |
+
群
|
| 571 |
+
项
|
| 572 |
+
故
|
| 573 |
+
按
|
| 574 |
+
河
|
| 575 |
+
米
|
| 576 |
+
围
|
| 577 |
+
江
|
| 578 |
+
织
|
| 579 |
+
害
|
| 580 |
+
斗
|
| 581 |
+
双
|
| 582 |
+
境
|
| 583 |
+
客
|
| 584 |
+
纪
|
| 585 |
+
采
|
| 586 |
+
举
|
| 587 |
+
杀
|
| 588 |
+
攻
|
| 589 |
+
父
|
| 590 |
+
苏
|
| 591 |
+
密
|
| 592 |
+
低
|
| 593 |
+
朝
|
| 594 |
+
友
|
| 595 |
+
诉
|
| 596 |
+
止
|
| 597 |
+
细
|
| 598 |
+
愿
|
| 599 |
+
千
|
| 600 |
+
值
|
| 601 |
+
仍
|
| 602 |
+
男
|
| 603 |
+
钱
|
| 604 |
+
破
|
| 605 |
+
网
|
| 606 |
+
热
|
| 607 |
+
助
|
| 608 |
+
倒
|
| 609 |
+
育
|
| 610 |
+
属
|
| 611 |
+
坐
|
| 612 |
+
帝
|
| 613 |
+
限
|
| 614 |
+
船
|
| 615 |
+
脸
|
| 616 |
+
职
|
| 617 |
+
速
|
| 618 |
+
刻
|
| 619 |
+
乐
|
| 620 |
+
否
|
| 621 |
+
刚
|
| 622 |
+
威
|
| 623 |
+
毛
|
| 624 |
+
状
|
| 625 |
+
率
|
| 626 |
+
甚
|
| 627 |
+
独
|
| 628 |
+
球
|
| 629 |
+
般
|
| 630 |
+
普
|
| 631 |
+
怕
|
| 632 |
+
弹
|
| 633 |
+
校
|
| 634 |
+
苦
|
| 635 |
+
创
|
| 636 |
+
假
|
| 637 |
+
久
|
| 638 |
+
错
|
| 639 |
+
承
|
| 640 |
+
印
|
| 641 |
+
晚
|
| 642 |
+
兰
|
| 643 |
+
试
|
| 644 |
+
股
|
| 645 |
+
拿
|
| 646 |
+
脑
|
| 647 |
+
预
|
| 648 |
+
谁
|
| 649 |
+
益
|
| 650 |
+
阳
|
| 651 |
+
若
|
| 652 |
+
哪
|
| 653 |
+
微
|
| 654 |
+
尼
|
| 655 |
+
继
|
| 656 |
+
送
|
| 657 |
+
急
|
| 658 |
+
血
|
| 659 |
+
惊
|
| 660 |
+
伤
|
| 661 |
+
素
|
| 662 |
+
药
|
| 663 |
+
适
|
| 664 |
+
波
|
| 665 |
+
夜
|
| 666 |
+
省
|
| 667 |
+
初
|
| 668 |
+
喜
|
| 669 |
+
卫
|
| 670 |
+
源
|
| 671 |
+
食
|
| 672 |
+
险
|
| 673 |
+
待
|
| 674 |
+
述
|
| 675 |
+
陆
|
| 676 |
+
习
|
| 677 |
+
置
|
| 678 |
+
居
|
| 679 |
+
劳
|
| 680 |
+
财
|
| 681 |
+
环
|
| 682 |
+
排
|
| 683 |
+
福
|
| 684 |
+
纳
|
| 685 |
+
欢
|
| 686 |
+
雷
|
| 687 |
+
警
|
| 688 |
+
获
|
| 689 |
+
模
|
| 690 |
+
充
|
| 691 |
+
负
|
| 692 |
+
云
|
| 693 |
+
停
|
| 694 |
+
木
|
| 695 |
+
游
|
| 696 |
+
龙
|
| 697 |
+
树
|
| 698 |
+
疑
|
| 699 |
+
层
|
| 700 |
+
冷
|
| 701 |
+
洲
|
| 702 |
+
冲
|
| 703 |
+
射
|
| 704 |
+
略
|
| 705 |
+
范
|
| 706 |
+
竟
|
| 707 |
+
句
|
| 708 |
+
室
|
| 709 |
+
异
|
| 710 |
+
激
|
| 711 |
+
汉
|
| 712 |
+
村
|
| 713 |
+
哈
|
| 714 |
+
策
|
| 715 |
+
演
|
| 716 |
+
简
|
| 717 |
+
卡
|
| 718 |
+
罪
|
| 719 |
+
判
|
| 720 |
+
担
|
| 721 |
+
州
|
| 722 |
+
静
|
| 723 |
+
退
|
| 724 |
+
既
|
| 725 |
+
衣
|
| 726 |
+
您
|
| 727 |
+
宗
|
| 728 |
+
积
|
| 729 |
+
余
|
| 730 |
+
痛
|
| 731 |
+
检
|
| 732 |
+
差
|
| 733 |
+
富
|
| 734 |
+
灵
|
| 735 |
+
协
|
| 736 |
+
角
|
| 737 |
+
占
|
| 738 |
+
配
|
| 739 |
+
征
|
| 740 |
+
修
|
| 741 |
+
皮
|
| 742 |
+
挥
|
| 743 |
+
胜
|
| 744 |
+
降
|
| 745 |
+
阶
|
| 746 |
+
审
|
| 747 |
+
沉
|
| 748 |
+
坚
|
| 749 |
+
善
|
| 750 |
+
妈
|
| 751 |
+
刘
|
| 752 |
+
读
|
| 753 |
+
啊
|
| 754 |
+
超
|
| 755 |
+
免
|
| 756 |
+
压
|
| 757 |
+
银
|
| 758 |
+
买
|
| 759 |
+
皇
|
| 760 |
+
养
|
| 761 |
+
伊
|
| 762 |
+
怀
|
| 763 |
+
执
|
| 764 |
+
副
|
| 765 |
+
乱
|
| 766 |
+
抗
|
| 767 |
+
犯
|
| 768 |
+
追
|
| 769 |
+
帮
|
| 770 |
+
宣
|
| 771 |
+
佛
|
| 772 |
+
岁
|
| 773 |
+
航
|
| 774 |
+
优
|
| 775 |
+
怪
|
| 776 |
+
香
|
| 777 |
+
著
|
| 778 |
+
田
|
| 779 |
+
铁
|
| 780 |
+
控
|
| 781 |
+
税
|
| 782 |
+
左
|
| 783 |
+
右
|
| 784 |
+
份
|
| 785 |
+
穿
|
| 786 |
+
艺
|
| 787 |
+
背
|
| 788 |
+
阵
|
| 789 |
+
草
|
| 790 |
+
脚
|
| 791 |
+
概
|
| 792 |
+
恶
|
| 793 |
+
块
|
| 794 |
+
顿
|
| 795 |
+
敢
|
| 796 |
+
守
|
| 797 |
+
酒
|
| 798 |
+
岛
|
| 799 |
+
托
|
| 800 |
+
央
|
| 801 |
+
户
|
| 802 |
+
烈
|
| 803 |
+
洋
|
| 804 |
+
哥
|
| 805 |
+
索
|
| 806 |
+
胡
|
| 807 |
+
款
|
| 808 |
+
靠
|
| 809 |
+
评
|
| 810 |
+
版
|
| 811 |
+
宝
|
| 812 |
+
座
|
| 813 |
+
释
|
| 814 |
+
景
|
| 815 |
+
顾
|
| 816 |
+
弟
|
| 817 |
+
登
|
| 818 |
+
货
|
| 819 |
+
互
|
| 820 |
+
付
|
| 821 |
+
伯
|
| 822 |
+
慢
|
| 823 |
+
欧
|
| 824 |
+
换
|
| 825 |
+
闻
|
| 826 |
+
危
|
| 827 |
+
忙
|
| 828 |
+
核
|
| 829 |
+
暗
|
| 830 |
+
姐
|
| 831 |
+
介
|
| 832 |
+
坏
|
| 833 |
+
讨
|
| 834 |
+
丽
|
| 835 |
+
良
|
| 836 |
+
序
|
| 837 |
+
升
|
| 838 |
+
监
|
| 839 |
+
临
|
| 840 |
+
亮
|
| 841 |
+
露
|
| 842 |
+
永
|
| 843 |
+
呼
|
| 844 |
+
味
|
| 845 |
+
野
|
| 846 |
+
架
|
| 847 |
+
域
|
| 848 |
+
沙
|
| 849 |
+
掉
|
| 850 |
+
括
|
| 851 |
+
舰
|
| 852 |
+
鱼
|
| 853 |
+
杂
|
| 854 |
+
误
|
| 855 |
+
湾
|
| 856 |
+
吉
|
| 857 |
+
减
|
| 858 |
+
编
|
| 859 |
+
楚
|
| 860 |
+
肯
|
| 861 |
+
测
|
| 862 |
+
败
|
| 863 |
+
屋
|
| 864 |
+
跑
|
| 865 |
+
梦
|
| 866 |
+
散
|
| 867 |
+
温
|
| 868 |
+
困
|
| 869 |
+
剑
|
| 870 |
+
渐
|
| 871 |
+
封
|
| 872 |
+
救
|
| 873 |
+
贵
|
| 874 |
+
枪
|
| 875 |
+
缺
|
| 876 |
+
楼
|
| 877 |
+
县
|
| 878 |
+
尚
|
| 879 |
+
毫
|
| 880 |
+
移
|
| 881 |
+
娘
|
| 882 |
+
朋
|
| 883 |
+
画
|
| 884 |
+
班
|
| 885 |
+
智
|
| 886 |
+
亦
|
| 887 |
+
耳
|
| 888 |
+
恩
|
| 889 |
+
短
|
| 890 |
+
掌
|
| 891 |
+
恐
|
| 892 |
+
遗
|
| 893 |
+
固
|
| 894 |
+
席
|
| 895 |
+
松
|
| 896 |
+
秘
|
| 897 |
+
谢
|
| 898 |
+
鲁
|
| 899 |
+
遇
|
| 900 |
+
康
|
| 901 |
+
虑
|
| 902 |
+
幸
|
| 903 |
+
均
|
| 904 |
+
销
|
| 905 |
+
钟
|
| 906 |
+
诗
|
| 907 |
+
藏
|
| 908 |
+
赶
|
| 909 |
+
剧
|
| 910 |
+
票
|
| 911 |
+
损
|
| 912 |
+
忽
|
| 913 |
+
巨
|
| 914 |
+
炮
|
| 915 |
+
旧
|
| 916 |
+
端
|
| 917 |
+
探
|
| 918 |
+
湖
|
| 919 |
+
录
|
| 920 |
+
叶
|
| 921 |
+
春
|
| 922 |
+
乡
|
| 923 |
+
附
|
| 924 |
+
吸
|
| 925 |
+
予
|
| 926 |
+
礼
|
| 927 |
+
港
|
| 928 |
+
雨
|
| 929 |
+
呀
|
| 930 |
+
板
|
| 931 |
+
庭
|
| 932 |
+
妇
|
| 933 |
+
归
|
| 934 |
+
睛
|
| 935 |
+
饭
|
| 936 |
+
额
|
| 937 |
+
含
|
| 938 |
+
顺
|
| 939 |
+
输
|
| 940 |
+
摇
|
| 941 |
+
招
|
| 942 |
+
婚
|
| 943 |
+
脱
|
| 944 |
+
补
|
| 945 |
+
谓
|
| 946 |
+
督
|
| 947 |
+
毒
|
| 948 |
+
油
|
| 949 |
+
疗
|
| 950 |
+
旅
|
| 951 |
+
泽
|
| 952 |
+
材
|
| 953 |
+
灭
|
| 954 |
+
逐
|
| 955 |
+
莫
|
| 956 |
+
笔
|
| 957 |
+
亡
|
| 958 |
+
鲜
|
| 959 |
+
词
|
| 960 |
+
圣
|
| 961 |
+
择
|
| 962 |
+
寻
|
| 963 |
+
厂
|
| 964 |
+
睡
|
| 965 |
+
博
|
| 966 |
+
勒
|
| 967 |
+
烟
|
| 968 |
+
授
|
| 969 |
+
诺
|
| 970 |
+
伦
|
| 971 |
+
岸
|
| 972 |
+
奥
|
| 973 |
+
唐
|
| 974 |
+
卖
|
| 975 |
+
俄
|
| 976 |
+
炸
|
| 977 |
+
载
|
| 978 |
+
洛
|
| 979 |
+
健
|
| 980 |
+
堂
|
| 981 |
+
旁
|
| 982 |
+
宫
|
| 983 |
+
喝
|
| 984 |
+
借
|
| 985 |
+
君
|
| 986 |
+
禁
|
| 987 |
+
阴
|
| 988 |
+
园
|
| 989 |
+
谋
|
| 990 |
+
宋
|
| 991 |
+
避
|
| 992 |
+
抓
|
| 993 |
+
荣
|
| 994 |
+
姑
|
| 995 |
+
孙
|
| 996 |
+
逃
|
| 997 |
+
牙
|
| 998 |
+
束
|
| 999 |
+
跳
|
| 1000 |
+
顶
|
assets/color_idx.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"white": 0, "black": 1, "darkslategray": 2, "dimgray": 3, "darkolivegreen": 4, "midnightblue": 5, "saddlebrown": 6, "sienna": 7, "whitesmoke": 8, "darkslateblue": 9, "indianred": 10, "linen": 11, "maroon": 12, "khaki": 13, "sandybrown": 14, "gray": 15, "gainsboro": 16, "teal": 17, "peru": 18, "gold": 19, "snow": 20, "firebrick": 21, "crimson": 22, "chocolate": 23, "tomato": 24, "brown": 25, "goldenrod": 26, "antiquewhite": 27, "rosybrown": 28, "steelblue": 29, "floralwhite": 30, "seashell": 31, "darkgreen": 32, "oldlace": 33, "darkkhaki": 34, "burlywood": 35, "red": 36, "darkgray": 37, "orange": 38, "royalblue": 39, "seagreen": 40, "lightgray": 41, "tan": 42, "coral": 43, "beige": 44, "palevioletred": 45, "wheat": 46, "lavender": 47, "darkcyan": 48, "slateblue": 49, "slategray": 50, "orangered": 51, "silver": 52, "olivedrab": 53, "forestgreen": 54, "darkgoldenrod": 55, "ivory": 56, "darkorange": 57, "yellow": 58, "hotpink": 59, "ghostwhite": 60, "lightcoral": 61, "indigo": 62, "bisque": 63, "darkred": 64, "darksalmon": 65, "lightslategray": 66, "dodgerblue": 67, "lightpink": 68, "mistyrose": 69, "mediumvioletred": 70, "cadetblue": 71, "deeppink": 72, "salmon": 73, "palegoldenrod": 74, "blanchedalmond": 75, "lightseagreen": 76, "cornflowerblue": 77, "yellowgreen": 78, "greenyellow": 79, "navajowhite": 80, "papayawhip": 81, "mediumslateblue": 82, "purple": 83, "blueviolet": 84, "pink": 85, "cornsilk": 86, "lightsalmon": 87, "mediumpurple": 88, "moccasin": 89, "turquoise": 90, "mediumseagreen": 91, "lavenderblush": 92, "mediumblue": 93, "darkseagreen": 94, "mediumturquoise": 95, "paleturquoise": 96, "skyblue": 97, "lemonchiffon": 98, "olive": 99, "peachpuff": 100, "lightyellow": 101, "lightsteelblue": 102, "mediumorchid": 103, "plum": 104, "darkturquoise": 105, "aliceblue": 106, "mediumaquamarine": 107, "orchid": 108, "powderblue": 109, "blue": 110, "darkorchid": 111, "violet": 112, "lightskyblue": 113, "lightcyan": 114, "lightgoldenrodyellow": 115, "navy": 116, "thistle": 117, "honeydew": 118, "mintcream": 119, "lightblue": 120, "darkblue": 121, "darkmagenta": 122, "deepskyblue": 123, "magenta": 124, "limegreen": 125, "darkviolet": 126, "cyan": 127, "palegreen": 128, "aquamarine": 129, "lawngreen": 130, "lightgreen": 131, "azure": 132, "chartreuse": 133, "green": 134, "mediumspringgreen": 135, "lime": 136, "springgreen": 137}
|
assets/font_idx_512.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"Montserrat-Regular": 0, "Poppins-Italic": 1, "GlacialIndifference-Regular": 2, "OpenSans-ExtraBoldItalic": 3, "Montserrat-Bold": 4, "Now-Regular": 5, "Garet-Regular": 6, "LeagueSpartan-Bold": 7, "DMSans-Regular": 8, "OpenSauceOne-Regular": 9, "OpenSans-ExtraBold": 10, "KGPrimaryPenmanship": 11, "Anton-Regular": 12, "Aileron-BlackItalic": 13, "Quicksand-Light": 14, "Roboto-BoldItalic": 15, "TheSeasons-It": 16, "Kollektif": 17, "Inter-BoldItalic": 18, "Poppins-Medium": 19, "Poppins-Light": 20, "RoxboroughCF-RegularItalic": 21, "PlayfairDisplay-SemiBold": 22, "Agrandir-Italic": 23, "Lato-Regular": 24, "MoreSugarRegular": 25, "CanvaSans-RegularItalic": 26, "PublicSans-Italic": 27, "CodePro-NormalLC": 28, "Belleza-Regular": 29, "JosefinSans-Bold": 30, "HKGrotesk-Bold": 31, "Telegraf-Medium": 32, "BrittanySignatureRegular": 33, "Raleway-ExtraBoldItalic": 34, "Mont-RegularItalic": 35, "Arimo-BoldItalic": 36, "Lora-Italic": 37, "ArchivoBlack-Regular": 38, "Poppins": 39, "Barlow-Black": 40, "CormorantGaramond-Bold": 41, "LibreBaskerville-Regular": 42, "CanvaSchoolFontRegular": 43, "BebasNeueBold": 44, "LazydogRegular": 45, "FredokaOne-Regular": 46, "Horizon-Bold": 47, "Nourd-Regular": 48, "Hatton-Regular": 49, "Nunito-ExtraBoldItalic": 50, "CerebriSans-Regular": 51, "Montserrat-Light": 52, "TenorSans": 53, "Norwester-Regular": 54, "ClearSans-Bold": 55, "Cardo-Regular": 56, "Alice-Regular": 57, "Oswald-Regular": 58, "Gaegu-Bold": 59, "Muli-Black": 60, "TAN-PEARL-Regular": 61, "CooperHewitt-Book": 62, "Agrandir-Grand": 63, "BlackMango-Thin": 64, "DMSerifDisplay-Regular": 65, "Antonio-Bold": 66, "Sniglet-Regular": 67, "BeVietnam-Regular": 68, "NunitoSans10pt-BlackItalic": 69, "AbhayaLibre-ExtraBold": 70, "Rubik-Regular": 71, "PPNeueMachina-Regular": 72, "TAN - MON CHERI-Regular": 73, "Jua-Regular": 74, "Playlist-Script": 75, "SourceSansPro-BoldItalic": 76, "MoonTime-Regular": 77, "Eczar-ExtraBold": 78, "Gatwick-Regular": 79, "MonumentExtended-Regular": 80, "BarlowSemiCondensed-Regular": 81, "BarlowCondensed-Regular": 82, "Alegreya-Regular": 83, "DreamAvenue": 84, "RobotoCondensed-Italic": 85, "BobbyJones-Regular": 86, "Garet-ExtraBold": 87, "YesevaOne-Regular": 88, "Dosis-ExtraBold": 89, "LeagueGothic-Regular": 90, "OpenSans-Italic": 91, "TANAEGEAN-Regular": 92, "Maharlika-Regular": 93, "MarykateRegular": 94, "Cinzel-Regular": 95, "Agrandir-Wide": 96, "Chewy-Regular": 97, "BodoniFLF-BoldItalic": 98, "Nunito-BlackItalic": 99, "LilitaOne": 100, "HandyCasualCondensed-Regular": 101, "Ovo": 102, "Livvic-Regular": 103, "Agrandir-Narrow": 104, "CrimsonPro-Italic": 105, "AnonymousPro-Bold": 106, "NF-OneLittleFont-Bold": 107, "RedHatDisplay-BoldItalic": 108, "CodecPro-Regular": 109, "HalimunRegular": 110, "LibreFranklin-Black": 111, "TeXGyreTermes-BoldItalic": 112, "Shrikhand-Regular": 113, "TTNormsPro-Italic": 114, "Gagalin-Regular": 115, "OpenSans-Bold": 116, "GreatVibes-Regular": 117, "Breathing": 118, "HeroLight-Regular": 119, "KGPrimaryDots": 120, "Quicksand-Bold": 121, "Brice-ExtraLightSemiExpanded": 122, "Lato-BoldItalic": 123, "Fraunces9pt-Italic": 124, "AbrilFatface-Regular": 125, "BerkshireSwash-Regular": 126, "Atma-Bold": 127, "HolidayRegular": 128, "BebasNeueCyrillic": 129, "IntroRust-Base": 130, "Gistesy": 131, "BDScript-Regular": 132, "ApricotsRegular": 133, "Prompt-Black": 134, "TAN MERINGUE": 135, "Sukar Regular": 136, "GentySans-Regular": 137, "NeueEinstellung-Normal": 138, "Garet-Bold": 139, "FiraSans-Black": 140, "BantayogLight": 141, "NotoSerifDisplay-Black": 142, "TTChocolates-Regular": 143, "Ubuntu-Regular": 144, "Assistant-Bold": 145, "ABeeZee-Regular": 146, "LexendDeca-Regular": 147, "KingredSerif": 148, "Radley-Regular": 149, "BrownSugar": 150, "MigraItalic-ExtraboldItalic": 151, "ChildosArabic-Regular": 152, "PeaceSans": 153, "LondrinaSolid-Black": 154, "SpaceMono-BoldItalic": 155, "RobotoMono-Light": 156, "CourierPrime-Regular": 157, "Alata-Regular": 158, "Amsterdam-One": 159, "IreneFlorentina-Regular": 160, "CatchyMager": 161, "Alta_regular": 162, "ArticulatCF-Regular": 163, "Raleway-Regular": 164, "BrasikaDisplay": 165, "TANAngleton-Italic": 166, "NotoSerifDisplay-ExtraCondensedItalic": 167, "Bryndan Write": 168, "TTCommonsPro-It": 169, "AlexBrush-Regular": 170, "Antic-Regular": 171, "TTHoves-Bold": 172, "DroidSerif": 173, "AblationRegular": 174, "Marcellus-Regular": 175, "Sanchez-Italic": 176, "JosefinSans": 177, "Afrah-Regular": 178, "PinyonScript": 179, "TTInterphases-BoldItalic": 180, "Yellowtail-Regular": 181, "Gliker-Regular": 182, "BobbyJonesSoft-Regular": 183, "IBMPlexSans": 184, "Amsterdam-Three": 185, "Amsterdam-FourSlant": 186, "TTFors-Regular": 187, "Quattrocento": 188, "Sifonn-Basic": 189, "AlegreyaSans-Black": 190, "Daydream": 191, "AristotelicaProTx-Rg": 192, "NotoSerif": 193, "EBGaramond-Italic": 194, "HammersmithOne-Regular": 195, "RobotoSlab-Regular": 196, "DO-Sans-Regular": 197, "KGPrimaryDotsLined": 198, "Blinker-Regular": 199, "TAN NIMBUS": 200, "Blueberry-Regular": 201, "Rosario-Regular": 202, "Forum": 203, "MistrullyRegular": 204, "SourceSerifPro-Regular": 205, "Bugaki-Regular": 206, "CMUSerif-Roman": 207, "GulfsDisplay-NormalItalic": 208, "PTSans-Bold": 209, "Sensei-Medium": 210, "SquadaOne-Regular": 211, "Arapey-Italic": 212, "Parisienne-Regular": 213, "Aleo-Italic": 214, "QuicheDisplay-Italic": 215, "RocaOne-It": 216, "Funtastic-Regular": 217, "PTSerif-BoldItalic": 218, "Muller-RegularItalic": 219, "ArgentCF-Regular": 220, "Brightwall-Italic": 221, "Knewave-Regular": 222, "TYSerif-D": 223, "Agrandir-Tight": 224, "AlfaSlabOne-Regular": 225, "TANTangkiwood-Display": 226, "Kief-Montaser-Regular": 227, "Gotham-Book": 228, "JuliusSansOne-Regular": 229, "CocoGothic-Italic": 230, "SairaCondensed-Regular": 231, "DellaRespira-Regular": 232, "Questrial-Regular": 233, "BukhariScript-Regular": 234, "HelveticaWorld-Bold": 235, "TANKINDRED-Display": 236, "CinzelDecorative-Regular": 237, "Vidaloka-Regular": 238, "AlegreyaSansSC-Black": 239, "FeelingPassionate-Regular": 240, "QuincyCF-Regular": 241, "FiraCode-Regular": 242, "Genty-Regular": 243, "Nickainley-Normal": 244, "RubikOne-Regular": 245, "Gidole-Regular": 246, "Borsok": 247, "Gordita-RegularItalic": 248, "Scripter-Regular": 249, "Buffalo-Regular": 250, "KleinText-Regular": 251, "Creepster-Regular": 252, "Arvo-Bold": 253, "GabrielSans-NormalItalic": 254, "Heebo-Black": 255, "LexendExa-Regular": 256, "BrixtonSansTC-Regular": 257, "GildaDisplay-Regular": 258, "ChunkFive-Roman": 259, "Amaranth-BoldItalic": 260, "BubbleboddyNeue-Regular": 261, "MavenPro-Bold": 262, "TTDrugs-Italic": 263, "CyGrotesk-KeyRegular": 264, "VarelaRound-Regular": 265, "Ruda-Black": 266, "SafiraMarch": 267, "BloggerSans": 268, "TANHEADLINE-Regular": 269, "SloopScriptPro-Regular": 270, "NeueMontreal-Regular": 271, "Schoolbell-Regular": 272, "SigherRegular": 273, "InriaSerif-Regular": 274, "JetBrainsMono-Regular": 275, "MADEEvolveSans": 276, "Dekko": 277, "Handyman-Regular": 278, "Aileron-BoldItalic": 279, "Bright-Italic": 280, "Solway-Regular": 281, "Higuen-Regular": 282, "WedgesItalic": 283, "TANASHFORD-BOLD": 284, "IBMPlexMono": 285, "RacingSansOne-Regular": 286, "RegularBrush": 287, "OpenSans-LightItalic": 288, "SpecialElite-Regular": 289, "FuturaLTPro-Medium": 290, "MaragsaDisplay": 291, "BigShouldersDisplay-Regular": 292, "BDSans-Regular": 293, "RasputinRegular": 294, "Yvesyvesdrawing-BoldItalic": 295, "Bitter-Regular": 296, "LuckiestGuy-Regular": 297, "CanvaSchoolFontDotted": 298, "TTFirsNeue-Italic": 299, "Sunday-Regular": 300, "HKGothic-MediumItalic": 301, "CaveatBrush-Regular": 302, "HeliosExt": 303, "ArchitectsDaughter-Regular": 304, "Angelina": 305, "Calistoga-Regular": 306, "ArchivoNarrow-Regular": 307, "ObjectSans-MediumSlanted": 308, "AyrLucidityCondensed-Regular": 309, "Nexa-RegularItalic": 310, "Lustria-Regular": 311, "Amsterdam-TwoSlant": 312, "Virtual-Regular": 313, "Brusher-Regular": 314, "NF-Lepetitcochon-Regular": 315, "TANTWINKLE": 316, "LeJour-Serif": 317, "Prata-Regular": 318, "PPWoodland-Regular": 319, "PlayfairDisplay-BoldItalic": 320, "AmaticSC-Regular": 321, "Cabin-Regular": 322, "Manjari-Bold": 323, "MrDafoe-Regular": 324, "TTRamillas-Italic": 325, "Luckybones-Bold": 326, "DarkerGrotesque-Light": 327, "BellabooRegular": 328, "CormorantSC-Bold": 329, "GochiHand-Regular": 330, "Atteron": 331, "RocaTwo-Lt": 332, "ZCOOLXiaoWei-Regular": 333, "TANSONGBIRD": 334, "HeadingNow-74Regular": 335, "Luthier-BoldItalic": 336, "Oregano-Regular": 337, "AyrTropikaIsland-Int": 338, "Mali-Regular": 339, "DidactGothic-Regular": 340, "Lovelace-Regular": 341, "BakerieSmooth-Regular": 342, "CarterOne": 343, "HussarBd": 344, "OldStandard-Italic": 345, "TAN-ASTORIA-Display": 346, "rugratssans-Regular": 347, "BMHANNA": 348, "BetterSaturday": 349, "AdigianaToybox": 350, "Sailors": 351, "PlayfairDisplaySC-Italic": 352, "Etna-Regular": 353, "Revive80Signature": 354, "CAGenerated": 355, "Poppins-Regular": 356, "Jonathan-Regular": 357, "Pacifico-Regular": 358, "Saira-Black": 359, "Loubag-Regular": 360, "Decalotype-Black": 361, "Mansalva-Regular": 362, "Allura-Regular": 363, "ProximaNova-Bold": 364, "TANMIGNON-DISPLAY": 365, "ArsenicaAntiqua-Regular": 366, "BreulGroteskA-RegularItalic": 367, "HKModular-Bold": 368, "TANNightingale-Regular": 369, "AristotelicaProCndTxt-Rg": 370, "Aprila-Regular": 371, "Tomorrow-Regular": 372, "AngellaWhite": 373, "KaushanScript-Regular": 374, "NotoSans": 375, "LeJour-Script": 376, "BrixtonTC-Regular": 377, "OleoScript-Regular": 378, "Cakerolli-Regular": 379, "Lobster-Regular": 380, "FrunchySerif-Regular": 381, "PorcelainRegular": 382, "AlojaExtended": 383, "SergioTrendy-Italic": 384, "LovelaceText-Bold": 385, "Anaktoria": 386, "JimmyScript-Light": 387, "IBMPlexSerif": 388, "Marta": 389, "Mango-Regular": 390, "Overpass-Italic": 391, "Hagrid-Regular": 392, "ElikaGorica": 393, "Amiko-Regular": 394, "EFCOBrookshire-Regular": 395, "Caladea-Regular": 396, "MoonlightBold": 397, "Staatliches-Regular": 398, "Helios-Bold": 399, "Satisfy-Regular": 400, "NexaScript-Regular": 401, "Trocchi-Regular": 402, "March": 403, "IbarraRealNova-Regular": 404, "Nectarine-Regular": 405, "Overpass-Light": 406, "TruetypewriterPolyglOTT": 407, "Bangers-Regular": 408, "Lazord-BoldExpandedItalic": 409, "Chloe-Regular": 410, "BaskervilleDisplayPT-Regular": 411, "Bright-Regular": 412, "Vollkorn-Regular": 413, "Harmattan": 414, "SortsMillGoudy-Regular": 415, "Biryani-Bold": 416, "SugoProDisplay-Italic": 417, "Lazord-BoldItalic": 418, "Alike-Regular": 419, "PermanentMarker-Regular": 420, "Sacramento-Regular": 421, "HKGroteskPro-Italic": 422, "Aleo-BoldItalic": 423, "Noot": 424, "TANGARLAND-Regular": 425, "Twister": 426, "Arsenal-Italic": 427, "Bogart-Italic": 428, "BethEllen-Regular": 429, "Caveat-Regular": 430, "BalsamiqSans-Bold": 431, "BreeSerif-Regular": 432, "CodecPro-ExtraBold": 433, "Pierson-Light": 434, "CyGrotesk-WideRegular": 435, "Lumios-Marker": 436, "Comfortaa-Bold": 437, "TraceFontRegular": 438, "RTL-AdamScript-Regular": 439, "EastmanGrotesque-Italic": 440, "Kalam-Bold": 441, "ChauPhilomeneOne-Regular": 442, "Coiny-Regular": 443, "Lovera": 444, "Gellatio": 445, "TitilliumWeb-Bold": 446, "OilvareBase-Italic": 447, "Catamaran-Black": 448, "Anteb-Italic": 449, "SueEllenFrancisco": 450, "SweetApricot": 451, "BrightSunshine": 452, "IM_FELL_Double_Pica_Italic": 453, "Granaina-limpia": 454, "TANPARFAIT": 455, "AcherusGrotesque-Regular": 456, "AwesomeLathusca-Italic": 457, "Signika-Bold": 458, "Andasia": 459, "DO-AllCaps-Slanted": 460, "Zenaida-Regular": 461, "Fahkwang-Regular": 462, "Play-Regular": 463, "BERNIERRegular-Regular": 464, "PlumaThin-Regular": 465, "SportsWorld": 466, "Garet-Black": 467, "CarolloPlayscript-BlackItalic": 468, "Cheque-Regular": 469, "SEGO": 470, "BobbyJones-Condensed": 471, "NexaSlab-RegularItalic": 472, "DancingScript-Regular": 473, "PaalalabasDisplayWideBETA": 474, "Magnolia-Script": 475, "OpunMai-400It": 476, "MadelynFill-Regular": 477, "ZingRust-Base": 478, "FingerPaint-Regular": 479, "BostonAngel-Light": 480, "Gliker-RegularExpanded": 481, "Ahsing": 482, "Engagement-Regular": 483, "EyesomeScript": 484, "LibraSerifModern-Regular": 485, "London-Regular": 486, "AtkinsonHyperlegible-Regular": 487, "StadioNow-TextItalic": 488, "Aniyah": 489, "ITCAvantGardePro-Bold": 490, "Comica-Regular": 491, "Coustard-Regular": 492, "Brice-BoldCondensed": 493, "TANNEWYORK-Bold": 494, "TANBUSTER-Bold": 495, "Alatsi-Regular": 496, "TYSerif-Book": 497, "Jingleberry": 498, "Rajdhani-Bold": 499, "LobsterTwo-BoldItalic": 500, "BestLight-Medium": 501, "Hitchcut-Regular": 502, "GermaniaOne-Regular": 503, "Emitha-Script": 504, "LemonTuesday": 505, "Cubao_Free_Regular": 506, "MonterchiSerif-Regular": 507, "AllertaStencil-Regular": 508, "RTL-Sondos-Regular": 509, "HomemadeApple-Regular": 510, "CosmicOcto-Medium": 511}
|
assets/multi_fonts/cn.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["cn-HelloFont-FangHuaTi", 0], ["cn-HelloFont-ID-DianFangSong-Bold", 1], ["cn-HelloFont-ID-DianFangSong", 2], ["cn-HelloFont-ID-DianHei-CEJ", 3], ["cn-HelloFont-ID-DianHei-DEJ", 4], ["cn-HelloFont-ID-DianHei-EEJ", 5], ["cn-HelloFont-ID-DianHei-FEJ", 6], ["cn-HelloFont-ID-DianHei-GEJ", 7], ["cn-HelloFont-ID-DianKai-Bold", 8], ["cn-HelloFont-ID-DianKai", 9], ["cn-HelloFont-WenYiHei", 10], ["cn-Hellofont-ID-ChenYanXingKai", 11], ["cn-Hellofont-ID-DaZiBao", 12], ["cn-Hellofont-ID-DaoCaoRen", 13], ["cn-Hellofont-ID-JianSong", 14], ["cn-Hellofont-ID-JiangHuZhaoPaiHei", 15], ["cn-Hellofont-ID-KeSong", 16], ["cn-Hellofont-ID-LeYuanTi", 17], ["cn-Hellofont-ID-Pinocchio", 18], ["cn-Hellofont-ID-QiMiaoTi", 19], ["cn-Hellofont-ID-QingHuaKai", 20], ["cn-Hellofont-ID-QingHuaXingKai", 21], ["cn-Hellofont-ID-ShanShuiXingKai", 22], ["cn-Hellofont-ID-ShouXieQiShu", 23], ["cn-Hellofont-ID-ShouXieTongZhenTi", 24], ["cn-Hellofont-ID-TengLingTi", 25], ["cn-Hellofont-ID-XiaoLiShu", 26], ["cn-Hellofont-ID-XuanZhenSong", 27], ["cn-Hellofont-ID-ZhongLingXingKai", 28], ["cn-HellofontIDJiaoTangTi", 29], ["cn-HellofontIDJiuZhuTi", 30], ["cn-HuXiaoBao-SaoBao", 31], ["cn-HuXiaoBo-NanShen", 32], ["cn-HuXiaoBo-ZhenShuai", 33], ["cn-SourceHanSansSC-Bold", 34], ["cn-SourceHanSansSC-ExtraLight", 35], ["cn-SourceHanSansSC-Heavy", 36], ["cn-SourceHanSansSC-Light", 37], ["cn-SourceHanSansSC-Medium", 38], ["cn-SourceHanSansSC-Normal", 39], ["cn-SourceHanSansSC-Regular", 40], ["cn-SourceHanSerifSC-Bold", 41], ["cn-SourceHanSerifSC-ExtraLight", 42], ["cn-SourceHanSerifSC-Heavy", 43], ["cn-SourceHanSerifSC-Light", 44], ["cn-SourceHanSerifSC-Medium", 45], ["cn-SourceHanSerifSC-Regular", 46], ["cn-SourceHanSerifSC-SemiBold", 47], ["cn-xiaowei", 48], ["cn-AaJianHaoTi", 49], ["cn-AlibabaPuHuiTi-Bold", 50], ["cn-AlibabaPuHuiTi-Heavy", 51], ["cn-AlibabaPuHuiTi-Light", 52], ["cn-AlibabaPuHuiTi-Medium", 53], ["cn-AlibabaPuHuiTi-Regular", 54], ["cn-CanvaAcidBoldSC", 55], ["cn-CanvaBreezeCN", 56], ["cn-CanvaBumperCropSC", 57], ["cn-CanvaCakeShopCN", 58], ["cn-CanvaEndeavorBlackSC", 59], ["cn-CanvaJoyHeiCN", 60], ["cn-CanvaLiCN", 61], ["cn-CanvaOrientalBrushCN", 62], ["cn-CanvaPoster", 63], ["cn-CanvaQinfuCalligraphyCN", 64], ["cn-CanvaSweetHeartCN", 65], ["cn-CanvaSwordLikeDreamCN", 66], ["cn-CanvaTangyuanHandwritingCN", 67], ["cn-CanvaWanderWorldCN", 68], ["cn-CanvaWenCN", 69], ["cn-DianZiChunYi", 70], ["cn-GenSekiGothicTW-H", 71], ["cn-GenWanMinTW-L", 72], ["cn-GenYoMinTW-B", 73], ["cn-GenYoMinTW-EL", 74], ["cn-GenYoMinTW-H", 75], ["cn-GenYoMinTW-M", 76], ["cn-GenYoMinTW-R", 77], ["cn-GenYoMinTW-SB", 78], ["cn-HYQiHei-AZEJ", 79], ["cn-HYQiHei-EES", 80], ["cn-HanaMinA", 81], ["cn-HappyZcool-2016", 82], ["cn-HelloFont ZJ KeKouKeAiTi", 83], ["cn-HelloFont-ID-BoBoTi", 84], ["cn-HelloFont-ID-FuGuHei-25", 85], ["cn-HelloFont-ID-FuGuHei-35", 86], ["cn-HelloFont-ID-FuGuHei-45", 87], ["cn-HelloFont-ID-FuGuHei-55", 88], ["cn-HelloFont-ID-FuGuHei-65", 89], ["cn-HelloFont-ID-FuGuHei-75", 90], ["cn-HelloFont-ID-FuGuHei-85", 91], ["cn-HelloFont-ID-HeiKa", 92], ["cn-HelloFont-ID-HeiTang", 93], ["cn-HelloFont-ID-JianSong-95", 94], ["cn-HelloFont-ID-JueJiangHei-50", 95], ["cn-HelloFont-ID-JueJiangHei-55", 96], ["cn-HelloFont-ID-JueJiangHei-60", 97], ["cn-HelloFont-ID-JueJiangHei-65", 98], ["cn-HelloFont-ID-JueJiangHei-70", 99], ["cn-HelloFont-ID-JueJiangHei-75", 100], ["cn-HelloFont-ID-JueJiangHei-80", 101], ["cn-HelloFont-ID-KuHeiTi", 102], ["cn-HelloFont-ID-LingDongTi", 103], ["cn-HelloFont-ID-LingLiTi", 104], ["cn-HelloFont-ID-MuFengTi", 105], ["cn-HelloFont-ID-NaiNaiJiangTi", 106], ["cn-HelloFont-ID-PangDu", 107], ["cn-HelloFont-ID-ReLieTi", 108], ["cn-HelloFont-ID-RouRun", 109], ["cn-HelloFont-ID-SaShuangShouXieTi", 110], ["cn-HelloFont-ID-WangZheFengFan", 111], ["cn-HelloFont-ID-YouQiTi", 112], ["cn-Hellofont-ID-XiaLeTi", 113], ["cn-Hellofont-ID-XianXiaTi", 114], ["cn-HuXiaoBoKuHei", 115], ["cn-IDDanMoXingKai", 116], ["cn-IDJueJiangHei", 117], ["cn-IDMeiLingTi", 118], ["cn-IDQQSugar", 119], ["cn-LiuJianMaoCao-Regular", 120], ["cn-LongCang-Regular", 121], ["cn-MaShanZheng-Regular", 122], ["cn-PangMenZhengDao-3", 123], ["cn-PangMenZhengDao-Cu", 124], ["cn-PangMenZhengDao", 125], ["cn-SentyCaramel", 126], ["cn-SourceHanSerifSC", 127], ["cn-WenCang-Regular", 128], ["cn-WenQuanYiMicroHei", 129], ["cn-XianErTi", 130], ["cn-YRDZSTJF", 131], ["cn-YS-HelloFont-BangBangTi", 132], ["cn-ZCOOLKuaiLe-Regular", 133], ["cn-ZCOOLQingKeHuangYou-Regular", 134], ["cn-ZCOOLXiaoWei-Regular", 135], ["cn-ZCOOL_KuHei", 136], ["cn-ZhiMangXing-Regular", 137], ["cn-baotuxiaobaiti", 138], ["cn-jiangxizhuokai-Regular", 139], ["cn-zcool-gdh", 140], ["cn-zcoolqingkehuangyouti-Regular", 141], ["cn-zcoolwenyiti", 142]]
|
assets/multi_fonts/de.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-GlacialIndifference-Regular", 2], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-MoreSugarRegular", 25], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-BrittanySignatureRegular", 33], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-LazydogRegular", 45], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-MonumentExtended-Regular", 80], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-BobbyJones-Regular", 86], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-IreneFlorentina-Regular", 160], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Blueberry-Regular", 201], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-TYSerif-D", 223], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Dekko", 277], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-ArchitectsDaughter-Regular", 304], ["en-Angelina", 305], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-NF-Lepetitcochon-Regular", 315], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Revive80Signature", 354], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-Allura-Regular", 363], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-LeJour-Script", 376], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-FrunchySerif-Regular", 381], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-JimmyScript-Light", 387], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-Andasia", 459], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-Aniyah", 489], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-BestLight-Medium", 501], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/en.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-GlacialIndifference-Regular", 2], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-MoreSugarRegular", 25], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-BrittanySignatureRegular", 33], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-CanvaSchoolFontRegular", 43], ["en-BebasNeueBold", 44], ["en-LazydogRegular", 45], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-Norwester-Regular", 54], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Gaegu-Bold", 59], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-Jua-Regular", 74], ["en-Playlist-Script", 75], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-MonumentExtended-Regular", 80], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-BobbyJones-Regular", 86], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-MarykateRegular", 94], ["en-Cinzel-Regular", 95], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-ApricotsRegular", 133], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-Sukar Regular", 136], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-IreneFlorentina-Regular", 160], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Blueberry-Regular", 201], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-TYSerif-D", 223], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-JuliusSansOne-Regular", 229], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-CinzelDecorative-Regular", 237], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Creepster-Regular", 252], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-ChunkFive-Roman", 259], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-SigherRegular", 273], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Dekko", 277], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Bright-Italic", 280], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-LuckiestGuy-Regular", 297], ["en-CanvaSchoolFontDotted", 298], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-HeliosExt", 303], ["en-ArchitectsDaughter-Regular", 304], ["en-Angelina", 305], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-AyrLucidityCondensed-Regular", 309], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-Brusher-Regular", 314], ["en-NF-Lepetitcochon-Regular", 315], ["en-TANTWINKLE", 316], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-Manjari-Bold", 323], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-BellabooRegular", 328], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-ZCOOLXiaoWei-Regular", 333], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BMHANNA", 348], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Revive80Signature", 354], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-Allura-Regular", 363], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-LeJour-Script", 376], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-FrunchySerif-Regular", 381], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-JimmyScript-Light", 387], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-MoonlightBold", 397], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-PermanentMarker-Regular", 420], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-Noot", 424], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-TraceFontRegular", 438], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-Andasia", 459], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-Cheque-Regular", 469], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-PaalalabasDisplayWideBETA", 474], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-Aniyah", 489], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-BestLight-Medium", 501], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-Cubao_Free_Regular", 506], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/es.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-BrittanySignatureRegular", 33], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-BebasNeueBold", 44], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-MonumentExtended-Regular", 80], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-Cinzel-Regular", 95], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-ApricotsRegular", 133], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-JuliusSansOne-Regular", 229], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-CinzelDecorative-Regular", 237], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Creepster-Regular", 252], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-LuckiestGuy-Regular", 297], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-ArchitectsDaughter-Regular", 304], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-AyrLucidityCondensed-Regular", 309], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-NF-Lepetitcochon-Regular", 315], ["en-TANTWINKLE", 316], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-BellabooRegular", 328], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-Allura-Regular", 363], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-PermanentMarker-Regular", 420], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-TraceFontRegular", 438], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/fr.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-GlacialIndifference-Regular", 2], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-MoreSugarRegular", 25], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-BebasNeueBold", 44], ["en-LazydogRegular", 45], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-Playlist-Script", 75], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-MonumentExtended-Regular", 80], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-BobbyJones-Regular", 86], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-MarykateRegular", 94], ["en-Cinzel-Regular", 95], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-ApricotsRegular", 133], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-IreneFlorentina-Regular", 160], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Blueberry-Regular", 201], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-TYSerif-D", 223], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-JuliusSansOne-Regular", 229], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-CinzelDecorative-Regular", 237], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Creepster-Regular", 252], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-SigherRegular", 273], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Dekko", 277], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Bright-Italic", 280], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-LuckiestGuy-Regular", 297], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-ArchitectsDaughter-Regular", 304], ["en-Angelina", 305], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-AyrLucidityCondensed-Regular", 309], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-NF-Lepetitcochon-Regular", 315], ["en-TANTWINKLE", 316], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-Manjari-Bold", 323], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-BellabooRegular", 328], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Revive80Signature", 354], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-LeJour-Script", 376], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-FrunchySerif-Regular", 381], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-JimmyScript-Light", 387], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-MoonlightBold", 397], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-PermanentMarker-Regular", 420], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-TraceFontRegular", 438], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-Andasia", 459], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-Cheque-Regular", 469], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-Aniyah", 489], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/it.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-GlacialIndifference-Regular", 2], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-MoreSugarRegular", 25], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-BrittanySignatureRegular", 33], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-BebasNeueBold", 44], ["en-LazydogRegular", 45], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-Playlist-Script", 75], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-BobbyJones-Regular", 86], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-MarykateRegular", 94], ["en-Cinzel-Regular", 95], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-ApricotsRegular", 133], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-IreneFlorentina-Regular", 160], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Blueberry-Regular", 201], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-TYSerif-D", 223], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-JuliusSansOne-Regular", 229], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-CinzelDecorative-Regular", 237], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Creepster-Regular", 252], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-ChunkFive-Roman", 259], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-SigherRegular", 273], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Dekko", 277], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Bright-Italic", 280], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-LuckiestGuy-Regular", 297], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-ArchitectsDaughter-Regular", 304], ["en-Angelina", 305], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-AyrLucidityCondensed-Regular", 309], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-NF-Lepetitcochon-Regular", 315], ["en-TANTWINKLE", 316], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-Manjari-Bold", 323], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-BellabooRegular", 328], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Revive80Signature", 354], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-Allura-Regular", 363], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-LeJour-Script", 376], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-FrunchySerif-Regular", 381], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-JimmyScript-Light", 387], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-MoonlightBold", 397], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-PermanentMarker-Regular", 420], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-TraceFontRegular", 438], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-Andasia", 459], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-Cheque-Regular", 469], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-Aniyah", 489], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-BestLight-Medium", 501], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/jp.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["jp-04KanjyukuGothic", 0], ["jp-07LightNovelPOP", 1], ["jp-07NikumaruFont", 2], ["jp-07YasashisaAntique", 3], ["jp-07YasashisaGothic", 4], ["jp-BokutachinoGothic2Bold", 5], ["jp-BokutachinoGothic2Regular", 6], ["jp-CHI_SpeedyRight_full_211128-Regular", 7], ["jp-CHI_SpeedyRight_italic_full_211127-Regular", 8], ["jp-CP-Font", 9], ["jp-Canva_CezanneProN-B", 10], ["jp-Canva_CezanneProN-M", 11], ["jp-Canva_ChiaroStd-B", 12], ["jp-Canva_CometStd-B", 13], ["jp-Canva_DotMincho16Std-M", 14], ["jp-Canva_GrecoStd-B", 15], ["jp-Canva_GrecoStd-M", 16], ["jp-Canva_LyraStd-DB", 17], ["jp-Canva_MatisseHatsuhiPro-B", 18], ["jp-Canva_MatisseHatsuhiPro-M", 19], ["jp-Canva_ModeMinAStd-B", 20], ["jp-Canva_NewCezanneProN-B", 21], ["jp-Canva_NewCezanneProN-M", 22], ["jp-Canva_PearlStd-L", 23], ["jp-Canva_RaglanStd-UB", 24], ["jp-Canva_RailwayStd-B", 25], ["jp-Canva_ReggaeStd-B", 26], ["jp-Canva_RocknRollStd-DB", 27], ["jp-Canva_RodinCattleyaPro-B", 28], ["jp-Canva_RodinCattleyaPro-M", 29], ["jp-Canva_RodinCattleyaPro-UB", 30], ["jp-Canva_RodinHimawariPro-B", 31], ["jp-Canva_RodinHimawariPro-M", 32], ["jp-Canva_RodinMariaPro-B", 33], ["jp-Canva_RodinMariaPro-DB", 34], ["jp-Canva_RodinProN-M", 35], ["jp-Canva_ShadowTLStd-B", 36], ["jp-Canva_StickStd-B", 37], ["jp-Canva_TsukuAOldMinPr6N-B", 38], ["jp-Canva_TsukuAOldMinPr6N-R", 39], ["jp-Canva_UtrilloPro-DB", 40], ["jp-Canva_UtrilloPro-M", 41], ["jp-Canva_YurukaStd-UB", 42], ["jp-FGUIGEN", 43], ["jp-GlowSansJ-Condensed-Heavy", 44], ["jp-GlowSansJ-Condensed-Light", 45], ["jp-GlowSansJ-Normal-Bold", 46], ["jp-GlowSansJ-Normal-Light", 47], ["jp-HannariMincho", 48], ["jp-HarenosoraMincho", 49], ["jp-Jiyucho", 50], ["jp-Kaiso-Makina-B", 51], ["jp-Kaisotai-Next-UP-B", 52], ["jp-KokoroMinchoutai", 53], ["jp-Mamelon-3-Hi-Regular", 54], ["jp-MotoyaAnemoneStd-W1", 55], ["jp-MotoyaAnemoneStd-W5", 56], ["jp-MotoyaAnticPro-W3", 57], ["jp-MotoyaCedarStd-W3", 58], ["jp-MotoyaCedarStd-W5", 59], ["jp-MotoyaGochikaStd-W4", 60], ["jp-MotoyaGochikaStd-W8", 61], ["jp-MotoyaGothicMiyabiStd-W6", 62], ["jp-MotoyaGothicStd-W3", 63], ["jp-MotoyaGothicStd-W5", 64], ["jp-MotoyaKoinStd-W3", 65], ["jp-MotoyaKyotaiStd-W2", 66], ["jp-MotoyaKyotaiStd-W4", 67], ["jp-MotoyaMaruStd-W3", 68], ["jp-MotoyaMaruStd-W5", 69], ["jp-MotoyaMinchoMiyabiStd-W4", 70], ["jp-MotoyaMinchoMiyabiStd-W6", 71], ["jp-MotoyaMinchoModernStd-W4", 72], ["jp-MotoyaMinchoModernStd-W6", 73], ["jp-MotoyaMinchoStd-W3", 74], ["jp-MotoyaMinchoStd-W5", 75], ["jp-MotoyaReisyoStd-W2", 76], ["jp-MotoyaReisyoStd-W6", 77], ["jp-MotoyaTohitsuStd-W4", 78], ["jp-MotoyaTohitsuStd-W6", 79], ["jp-MtySousyokuEmBcJis-W6", 80], ["jp-MtySousyokuLiBcJis-W6", 81], ["jp-Mushin", 82], ["jp-NotoSansJP-Bold", 83], ["jp-NotoSansJP-Regular", 84], ["jp-NudMotoyaAporoStd-W3", 85], ["jp-NudMotoyaAporoStd-W5", 86], ["jp-NudMotoyaCedarStd-W3", 87], ["jp-NudMotoyaCedarStd-W5", 88], ["jp-NudMotoyaMaruStd-W3", 89], ["jp-NudMotoyaMaruStd-W5", 90], ["jp-NudMotoyaMinchoStd-W5", 91], ["jp-Ounen-mouhitsu", 92], ["jp-Ronde-B-Square", 93], ["jp-SMotoyaGyosyoStd-W5", 94], ["jp-SMotoyaSinkaiStd-W3", 95], ["jp-SMotoyaSinkaiStd-W5", 96], ["jp-SourceHanSansJP-Bold", 97], ["jp-SourceHanSansJP-Regular", 98], ["jp-SourceHanSerifJP-Bold", 99], ["jp-SourceHanSerifJP-Regular", 100], ["jp-TazuganeGothicStdN-Bold", 101], ["jp-TazuganeGothicStdN-Regular", 102], ["jp-TelopMinProN-B", 103], ["jp-Togalite-Bold", 104], ["jp-Togalite-Regular", 105], ["jp-TsukuMinPr6N-E", 106], ["jp-TsukuMinPr6N-M", 107], ["jp-mikachan_o", 108], ["jp-nagayama_kai", 109], ["jp-07LogoTypeGothic7", 110], ["jp-07TetsubinGothic", 111], ["jp-851CHIKARA-DZUYOKU-KANA-A", 112], ["jp-ARMinchoJIS-Light", 113], ["jp-ARMinchoJIS-Ultra", 114], ["jp-ARPCrystalMinchoJIS-Medium", 115], ["jp-ARPCrystalRGothicJIS-Medium", 116], ["jp-ARShounanShinpitsuGyosyoJIS-Medium", 117], ["jp-AozoraMincho-bold", 118], ["jp-AozoraMinchoRegular", 119], ["jp-ArialUnicodeMS-Bold", 120], ["jp-ArialUnicodeMS", 121], ["jp-CanvaBreezeJP", 122], ["jp-CanvaLiCN", 123], ["jp-CanvaLiJP", 124], ["jp-CanvaOrientalBrushCN", 125], ["jp-CanvaQinfuCalligraphyJP", 126], ["jp-CanvaSweetHeartJP", 127], ["jp-CanvaWenJP", 128], ["jp-Corporate-Logo-Bold", 129], ["jp-DelaGothicOne-Regular", 130], ["jp-GN-Kin-iro_SansSerif", 131], ["jp-GN-Koharuiro_Sunray", 132], ["jp-GenEiGothicM-B", 133], ["jp-GenEiGothicM-R", 134], ["jp-GenJyuuGothic-Bold", 135], ["jp-GenRyuMinTW-B", 136], ["jp-GenRyuMinTW-R", 137], ["jp-GenSekiGothicTW-B", 138], ["jp-GenSekiGothicTW-R", 139], ["jp-GenSenRoundedTW-B", 140], ["jp-GenSenRoundedTW-R", 141], ["jp-GenShinGothic-Bold", 142], ["jp-GenShinGothic-Normal", 143], ["jp-GenWanMinTW-L", 144], ["jp-GenYoGothicTW-B", 145], ["jp-GenYoGothicTW-R", 146], ["jp-GenYoMinTW-B", 147], ["jp-GenYoMinTW-R", 148], ["jp-HGBouquet", 149], ["jp-HanaMinA", 150], ["jp-HanazomeFont", 151], ["jp-HinaMincho-Regular", 152], ["jp-Honoka-Antique-Maru", 153], ["jp-Honoka-Mincho", 154], ["jp-HuiFontP", 155], ["jp-IPAexMincho", 156], ["jp-JK-Gothic-L", 157], ["jp-JK-Gothic-M", 158], ["jp-JackeyFont", 159], ["jp-KaiseiTokumin-Bold", 160], ["jp-KaiseiTokumin-Regular", 161], ["jp-Keifont", 162], ["jp-KiwiMaru-Regular", 163], ["jp-Koku-Mincho-Regular", 164], ["jp-MotoyaLMaru-W3-90ms-RKSJ-H", 165], ["jp-NewTegomin-Regular", 166], ["jp-NicoKaku", 167], ["jp-NicoMoji+", 168], ["jp-Otsutome_font-Bold", 169], ["jp-PottaOne-Regular", 170], ["jp-RampartOne-Regular", 171], ["jp-Senobi-Gothic-Bold", 172], ["jp-Senobi-Gothic-Regular", 173], ["jp-SmartFontUI-Proportional", 174], ["jp-SoukouMincho", 175], ["jp-TEST_Klee-DB", 176], ["jp-TEST_Klee-M", 177], ["jp-TEST_UDMincho-B", 178], ["jp-TEST_UDMincho-L", 179], ["jp-TT_Akakane-EB", 180], ["jp-Tanuki-Permanent-Marker", 181], ["jp-TrainOne-Regular", 182], ["jp-TsunagiGothic-Black", 183], ["jp-Ume-Hy-Gothic", 184], ["jp-Ume-P-Mincho", 185], ["jp-WenQuanYiMicroHei", 186], ["jp-XANO-mincho-U32", 187], ["jp-YOzFontM90-Regular", 188], ["jp-Yomogi-Regular", 189], ["jp-YujiBoku-Regular", 190], ["jp-YujiSyuku-Regular", 191], ["jp-ZenKakuGothicNew-Bold", 192], ["jp-ZenKakuGothicNew-Regular", 193], ["jp-ZenKurenaido-Regular", 194], ["jp-ZenMaruGothic-Bold", 195], ["jp-ZenMaruGothic-Regular", 196], ["jp-darts-font", 197], ["jp-irohakakuC-Bold", 198], ["jp-irohakakuC-Medium", 199], ["jp-irohakakuC-Regular", 200], ["jp-katyou", 201], ["jp-mplus-1m-bold", 202], ["jp-mplus-1m-regular", 203], ["jp-mplus-1p-bold", 204], ["jp-mplus-1p-regular", 205], ["jp-rounded-mplus-1p-bold", 206], ["jp-rounded-mplus-1p-regular", 207], ["jp-timemachine-wa", 208], ["jp-ttf-GenEiLateMin-Medium", 209], ["jp-uzura_font", 210]]
|
assets/multi_fonts/kr.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["kr-Arita-buri-Bold_OTF", 0], ["kr-Arita-buri-HairLine_OTF", 1], ["kr-Arita-buri-Light_OTF", 2], ["kr-Arita-buri-Medium_OTF", 3], ["kr-Arita-buri-SemiBold_OTF", 4], ["kr-Canva_YDSunshineL", 5], ["kr-Canva_YDSunshineM", 6], ["kr-Canva_YoonGulimPro710", 7], ["kr-Canva_YoonGulimPro730", 8], ["kr-Canva_YoonGulimPro740", 9], ["kr-Canva_YoonGulimPro760", 10], ["kr-Canva_YoonGulimPro770", 11], ["kr-Canva_YoonGulimPro790", 12], ["kr-CreHappB", 13], ["kr-CreHappL", 14], ["kr-CreHappM", 15], ["kr-CreHappS", 16], ["kr-OTAuroraB", 17], ["kr-OTAuroraL", 18], ["kr-OTAuroraR", 19], ["kr-OTDoldamgilB", 20], ["kr-OTDoldamgilL", 21], ["kr-OTDoldamgilR", 22], ["kr-OTHamsterB", 23], ["kr-OTHamsterL", 24], ["kr-OTHamsterR", 25], ["kr-OTHapchangdanB", 26], ["kr-OTHapchangdanL", 27], ["kr-OTHapchangdanR", 28], ["kr-OTSupersizeBkBOX", 29], ["kr-SourceHanSansKR-Bold", 30], ["kr-SourceHanSansKR-ExtraLight", 31], ["kr-SourceHanSansKR-Heavy", 32], ["kr-SourceHanSansKR-Light", 33], ["kr-SourceHanSansKR-Medium", 34], ["kr-SourceHanSansKR-Normal", 35], ["kr-SourceHanSansKR-Regular", 36], ["kr-SourceHanSansSC-Bold", 37], ["kr-SourceHanSansSC-ExtraLight", 38], ["kr-SourceHanSansSC-Heavy", 39], ["kr-SourceHanSansSC-Light", 40], ["kr-SourceHanSansSC-Medium", 41], ["kr-SourceHanSansSC-Normal", 42], ["kr-SourceHanSansSC-Regular", 43], ["kr-SourceHanSerifSC-Bold", 44], ["kr-SourceHanSerifSC-SemiBold", 45], ["kr-TDTDBubbleBubbleOTF", 46], ["kr-TDTDConfusionOTF", 47], ["kr-TDTDCuteAndCuteOTF", 48], ["kr-TDTDEggTakOTF", 49], ["kr-TDTDEmotionalLetterOTF", 50], ["kr-TDTDGalapagosOTF", 51], ["kr-TDTDHappyHourOTF", 52], ["kr-TDTDLatteOTF", 53], ["kr-TDTDMoonLightOTF", 54], ["kr-TDTDParkForestOTF", 55], ["kr-TDTDPencilOTF", 56], ["kr-TDTDSmileOTF", 57], ["kr-TDTDSproutOTF", 58], ["kr-TDTDSunshineOTF", 59], ["kr-TDTDWaferOTF", 60], ["kr-777Chyaochyureu", 61], ["kr-ArialUnicodeMS-Bold", 62], ["kr-ArialUnicodeMS", 63], ["kr-BMHANNA", 64], ["kr-Baekmuk-Dotum", 65], ["kr-BagelFatOne-Regular", 66], ["kr-CoreBandi", 67], ["kr-CoreBandiFace", 68], ["kr-CoreBori", 69], ["kr-DoHyeon-Regular", 70], ["kr-Dokdo-Regular", 71], ["kr-Gaegu-Bold", 72], ["kr-Gaegu-Light", 73], ["kr-Gaegu-Regular", 74], ["kr-GamjaFlower-Regular", 75], ["kr-GasoekOne-Regular", 76], ["kr-GothicA1-Black", 77], ["kr-GothicA1-Bold", 78], ["kr-GothicA1-ExtraBold", 79], ["kr-GothicA1-ExtraLight", 80], ["kr-GothicA1-Light", 81], ["kr-GothicA1-Medium", 82], ["kr-GothicA1-Regular", 83], ["kr-GothicA1-SemiBold", 84], ["kr-GothicA1-Thin", 85], ["kr-Gugi-Regular", 86], ["kr-HiMelody-Regular", 87], ["kr-Jua-Regular", 88], ["kr-KirangHaerang-Regular", 89], ["kr-NanumBrush", 90], ["kr-NanumPen", 91], ["kr-NanumSquareRoundB", 92], ["kr-NanumSquareRoundEB", 93], ["kr-NanumSquareRoundL", 94], ["kr-NanumSquareRoundR", 95], ["kr-SeH-CB", 96], ["kr-SeH-CBL", 97], ["kr-SeH-CEB", 98], ["kr-SeH-CL", 99], ["kr-SeH-CM", 100], ["kr-SeN-CB", 101], ["kr-SeN-CBL", 102], ["kr-SeN-CEB", 103], ["kr-SeN-CL", 104], ["kr-SeN-CM", 105], ["kr-Sunflower-Bold", 106], ["kr-Sunflower-Light", 107], ["kr-Sunflower-Medium", 108], ["kr-TTClaytoyR", 109], ["kr-TTDalpangiR", 110], ["kr-TTMamablockR", 111], ["kr-TTNauidongmuR", 112], ["kr-TTOktapbangR", 113], ["kr-UhBeeMiMi", 114], ["kr-UhBeeMiMiBold", 115], ["kr-UhBeeSe_hyun", 116], ["kr-UhBeeSe_hyunBold", 117], ["kr-UhBeenamsoyoung", 118], ["kr-UhBeenamsoyoungBold", 119], ["kr-WenQuanYiMicroHei", 120], ["kr-YeonSung-Regular", 121]]
|
assets/multi_fonts/pt.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-Montserrat-Regular", 0], ["en-Poppins-Italic", 1], ["en-GlacialIndifference-Regular", 2], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Montserrat-Bold", 4], ["en-Now-Regular", 5], ["en-Garet-Regular", 6], ["en-LeagueSpartan-Bold", 7], ["en-DMSans-Regular", 8], ["en-OpenSauceOne-Regular", 9], ["en-OpenSans-ExtraBold", 10], ["en-KGPrimaryPenmanship", 11], ["en-Anton-Regular", 12], ["en-Aileron-BlackItalic", 13], ["en-Quicksand-Light", 14], ["en-Roboto-BoldItalic", 15], ["en-TheSeasons-It", 16], ["en-Kollektif", 17], ["en-Inter-BoldItalic", 18], ["en-Poppins-Medium", 19], ["en-Poppins-Light", 20], ["en-RoxboroughCF-RegularItalic", 21], ["en-PlayfairDisplay-SemiBold", 22], ["en-Agrandir-Italic", 23], ["en-Lato-Regular", 24], ["en-MoreSugarRegular", 25], ["en-CanvaSans-RegularItalic", 26], ["en-PublicSans-Italic", 27], ["en-CodePro-NormalLC", 28], ["en-Belleza-Regular", 29], ["en-JosefinSans-Bold", 30], ["en-HKGrotesk-Bold", 31], ["en-Telegraf-Medium", 32], ["en-BrittanySignatureRegular", 33], ["en-Raleway-ExtraBoldItalic", 34], ["en-Mont-RegularItalic", 35], ["en-Arimo-BoldItalic", 36], ["en-Lora-Italic", 37], ["en-ArchivoBlack-Regular", 38], ["en-Poppins", 39], ["en-Barlow-Black", 40], ["en-CormorantGaramond-Bold", 41], ["en-LibreBaskerville-Regular", 42], ["en-BebasNeueBold", 44], ["en-LazydogRegular", 45], ["en-FredokaOne-Regular", 46], ["en-Horizon-Bold", 47], ["en-Nourd-Regular", 48], ["en-Hatton-Regular", 49], ["en-Nunito-ExtraBoldItalic", 50], ["en-CerebriSans-Regular", 51], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Cardo-Regular", 56], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Muli-Black", 60], ["en-TAN-PEARL-Regular", 61], ["en-CooperHewitt-Book", 62], ["en-Agrandir-Grand", 63], ["en-BlackMango-Thin", 64], ["en-DMSerifDisplay-Regular", 65], ["en-Antonio-Bold", 66], ["en-Sniglet-Regular", 67], ["en-BeVietnam-Regular", 68], ["en-NunitoSans10pt-BlackItalic", 69], ["en-AbhayaLibre-ExtraBold", 70], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-TAN - MON CHERI-Regular", 73], ["en-Playlist-Script", 75], ["en-SourceSansPro-BoldItalic", 76], ["en-MoonTime-Regular", 77], ["en-Eczar-ExtraBold", 78], ["en-Gatwick-Regular", 79], ["en-MonumentExtended-Regular", 80], ["en-BarlowSemiCondensed-Regular", 81], ["en-BarlowCondensed-Regular", 82], ["en-Alegreya-Regular", 83], ["en-DreamAvenue", 84], ["en-RobotoCondensed-Italic", 85], ["en-BobbyJones-Regular", 86], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-Dosis-ExtraBold", 89], ["en-LeagueGothic-Regular", 90], ["en-OpenSans-Italic", 91], ["en-TANAEGEAN-Regular", 92], ["en-Maharlika-Regular", 93], ["en-MarykateRegular", 94], ["en-Cinzel-Regular", 95], ["en-Agrandir-Wide", 96], ["en-Chewy-Regular", 97], ["en-BodoniFLF-BoldItalic", 98], ["en-Nunito-BlackItalic", 99], ["en-LilitaOne", 100], ["en-HandyCasualCondensed-Regular", 101], ["en-Ovo", 102], ["en-Livvic-Regular", 103], ["en-Agrandir-Narrow", 104], ["en-CrimsonPro-Italic", 105], ["en-AnonymousPro-Bold", 106], ["en-NF-OneLittleFont-Bold", 107], ["en-RedHatDisplay-BoldItalic", 108], ["en-CodecPro-Regular", 109], ["en-HalimunRegular", 110], ["en-LibreFranklin-Black", 111], ["en-TeXGyreTermes-BoldItalic", 112], ["en-Shrikhand-Regular", 113], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-GreatVibes-Regular", 117], ["en-Breathing", 118], ["en-HeroLight-Regular", 119], ["en-KGPrimaryDots", 120], ["en-Quicksand-Bold", 121], ["en-Brice-ExtraLightSemiExpanded", 122], ["en-Lato-BoldItalic", 123], ["en-Fraunces9pt-Italic", 124], ["en-AbrilFatface-Regular", 125], ["en-BerkshireSwash-Regular", 126], ["en-Atma-Bold", 127], ["en-HolidayRegular", 128], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Gistesy", 131], ["en-BDScript-Regular", 132], ["en-ApricotsRegular", 133], ["en-Prompt-Black", 134], ["en-TAN MERINGUE", 135], ["en-GentySans-Regular", 137], ["en-NeueEinstellung-Normal", 138], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-BantayogLight", 141], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Assistant-Bold", 145], ["en-ABeeZee-Regular", 146], ["en-LexendDeca-Regular", 147], ["en-KingredSerif", 148], ["en-Radley-Regular", 149], ["en-BrownSugar", 150], ["en-MigraItalic-ExtraboldItalic", 151], ["en-ChildosArabic-Regular", 152], ["en-PeaceSans", 153], ["en-LondrinaSolid-Black", 154], ["en-SpaceMono-BoldItalic", 155], ["en-RobotoMono-Light", 156], ["en-CourierPrime-Regular", 157], ["en-Alata-Regular", 158], ["en-Amsterdam-One", 159], ["en-IreneFlorentina-Regular", 160], ["en-CatchyMager", 161], ["en-Alta_regular", 162], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-BrasikaDisplay", 165], ["en-TANAngleton-Italic", 166], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-AlexBrush-Regular", 170], ["en-Antic-Regular", 171], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Marcellus-Regular", 175], ["en-Sanchez-Italic", 176], ["en-JosefinSans", 177], ["en-Afrah-Regular", 178], ["en-PinyonScript", 179], ["en-TTInterphases-BoldItalic", 180], ["en-Yellowtail-Regular", 181], ["en-Gliker-Regular", 182], ["en-BobbyJonesSoft-Regular", 183], ["en-IBMPlexSans", 184], ["en-Amsterdam-Three", 185], ["en-Amsterdam-FourSlant", 186], ["en-TTFors-Regular", 187], ["en-Quattrocento", 188], ["en-Sifonn-Basic", 189], ["en-AlegreyaSans-Black", 190], ["en-Daydream", 191], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-HammersmithOne-Regular", 195], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-KGPrimaryDotsLined", 198], ["en-Blinker-Regular", 199], ["en-TAN NIMBUS", 200], ["en-Blueberry-Regular", 201], ["en-Rosario-Regular", 202], ["en-Forum", 203], ["en-MistrullyRegular", 204], ["en-SourceSerifPro-Regular", 205], ["en-Bugaki-Regular", 206], ["en-CMUSerif-Roman", 207], ["en-GulfsDisplay-NormalItalic", 208], ["en-PTSans-Bold", 209], ["en-SquadaOne-Regular", 211], ["en-Arapey-Italic", 212], ["en-Parisienne-Regular", 213], ["en-Aleo-Italic", 214], ["en-QuicheDisplay-Italic", 215], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-ArgentCF-Regular", 220], ["en-Brightwall-Italic", 221], ["en-Knewave-Regular", 222], ["en-TYSerif-D", 223], ["en-Agrandir-Tight", 224], ["en-AlfaSlabOne-Regular", 225], ["en-TANTangkiwood-Display", 226], ["en-Kief-Montaser-Regular", 227], ["en-Gotham-Book", 228], ["en-JuliusSansOne-Regular", 229], ["en-CocoGothic-Italic", 230], ["en-SairaCondensed-Regular", 231], ["en-DellaRespira-Regular", 232], ["en-Questrial-Regular", 233], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-TANKINDRED-Display", 236], ["en-CinzelDecorative-Regular", 237], ["en-Vidaloka-Regular", 238], ["en-AlegreyaSansSC-Black", 239], ["en-FeelingPassionate-Regular", 240], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Genty-Regular", 243], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Gidole-Regular", 246], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-Buffalo-Regular", 250], ["en-KleinText-Regular", 251], ["en-Creepster-Regular", 252], ["en-Arvo-Bold", 253], ["en-GabrielSans-NormalItalic", 254], ["en-Heebo-Black", 255], ["en-LexendExa-Regular", 256], ["en-BrixtonSansTC-Regular", 257], ["en-GildaDisplay-Regular", 258], ["en-ChunkFive-Roman", 259], ["en-Amaranth-BoldItalic", 260], ["en-BubbleboddyNeue-Regular", 261], ["en-MavenPro-Bold", 262], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-VarelaRound-Regular", 265], ["en-Ruda-Black", 266], ["en-SafiraMarch", 267], ["en-BloggerSans", 268], ["en-TANHEADLINE-Regular", 269], ["en-SloopScriptPro-Regular", 270], ["en-NeueMontreal-Regular", 271], ["en-Schoolbell-Regular", 272], ["en-SigherRegular", 273], ["en-InriaSerif-Regular", 274], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Dekko", 277], ["en-Handyman-Regular", 278], ["en-Aileron-BoldItalic", 279], ["en-Bright-Italic", 280], ["en-Solway-Regular", 281], ["en-Higuen-Regular", 282], ["en-WedgesItalic", 283], ["en-TANASHFORD-BOLD", 284], ["en-IBMPlexMono", 285], ["en-RacingSansOne-Regular", 286], ["en-RegularBrush", 287], ["en-OpenSans-LightItalic", 288], ["en-SpecialElite-Regular", 289], ["en-FuturaLTPro-Medium", 290], ["en-MaragsaDisplay", 291], ["en-BigShouldersDisplay-Regular", 292], ["en-BDSans-Regular", 293], ["en-RasputinRegular", 294], ["en-Yvesyvesdrawing-BoldItalic", 295], ["en-Bitter-Regular", 296], ["en-LuckiestGuy-Regular", 297], ["en-TTFirsNeue-Italic", 299], ["en-Sunday-Regular", 300], ["en-HKGothic-MediumItalic", 301], ["en-CaveatBrush-Regular", 302], ["en-ArchitectsDaughter-Regular", 304], ["en-Angelina", 305], ["en-Calistoga-Regular", 306], ["en-ArchivoNarrow-Regular", 307], ["en-ObjectSans-MediumSlanted", 308], ["en-AyrLucidityCondensed-Regular", 309], ["en-Nexa-RegularItalic", 310], ["en-Lustria-Regular", 311], ["en-Amsterdam-TwoSlant", 312], ["en-Virtual-Regular", 313], ["en-NF-Lepetitcochon-Regular", 315], ["en-TANTWINKLE", 316], ["en-LeJour-Serif", 317], ["en-Prata-Regular", 318], ["en-PPWoodland-Regular", 319], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-Cabin-Regular", 322], ["en-Manjari-Bold", 323], ["en-MrDafoe-Regular", 324], ["en-TTRamillas-Italic", 325], ["en-Luckybones-Bold", 326], ["en-DarkerGrotesque-Light", 327], ["en-BellabooRegular", 328], ["en-CormorantSC-Bold", 329], ["en-GochiHand-Regular", 330], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-TANSONGBIRD", 334], ["en-HeadingNow-74Regular", 335], ["en-Luthier-BoldItalic", 336], ["en-Oregano-Regular", 337], ["en-AyrTropikaIsland-Int", 338], ["en-Mali-Regular", 339], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-BakerieSmooth-Regular", 342], ["en-CarterOne", 343], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-TAN-ASTORIA-Display", 346], ["en-rugratssans-Regular", 347], ["en-BetterSaturday", 349], ["en-AdigianaToybox", 350], ["en-Sailors", 351], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Revive80Signature", 354], ["en-CAGenerated", 355], ["en-Poppins-Regular", 356], ["en-Jonathan-Regular", 357], ["en-Pacifico-Regular", 358], ["en-Saira-Black", 359], ["en-Loubag-Regular", 360], ["en-Decalotype-Black", 361], ["en-Mansalva-Regular", 362], ["en-Allura-Regular", 363], ["en-ProximaNova-Bold", 364], ["en-TANMIGNON-DISPLAY", 365], ["en-ArsenicaAntiqua-Regular", 366], ["en-BreulGroteskA-RegularItalic", 367], ["en-HKModular-Bold", 368], ["en-TANNightingale-Regular", 369], ["en-AristotelicaProCndTxt-Rg", 370], ["en-Aprila-Regular", 371], ["en-Tomorrow-Regular", 372], ["en-AngellaWhite", 373], ["en-KaushanScript-Regular", 374], ["en-NotoSans", 375], ["en-LeJour-Script", 376], ["en-BrixtonTC-Regular", 377], ["en-OleoScript-Regular", 378], ["en-Cakerolli-Regular", 379], ["en-Lobster-Regular", 380], ["en-FrunchySerif-Regular", 381], ["en-PorcelainRegular", 382], ["en-AlojaExtended", 383], ["en-SergioTrendy-Italic", 384], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-JimmyScript-Light", 387], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Overpass-Italic", 391], ["en-Hagrid-Regular", 392], ["en-ElikaGorica", 393], ["en-Amiko-Regular", 394], ["en-EFCOBrookshire-Regular", 395], ["en-Caladea-Regular", 396], ["en-MoonlightBold", 397], ["en-Staatliches-Regular", 398], ["en-Helios-Bold", 399], ["en-Satisfy-Regular", 400], ["en-NexaScript-Regular", 401], ["en-Trocchi-Regular", 402], ["en-March", 403], ["en-IbarraRealNova-Regular", 404], ["en-Nectarine-Regular", 405], ["en-Overpass-Light", 406], ["en-TruetypewriterPolyglOTT", 407], ["en-Bangers-Regular", 408], ["en-Lazord-BoldExpandedItalic", 409], ["en-Chloe-Regular", 410], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Bright-Regular", 412], ["en-Vollkorn-Regular", 413], ["en-Harmattan", 414], ["en-SortsMillGoudy-Regular", 415], ["en-Biryani-Bold", 416], ["en-SugoProDisplay-Italic", 417], ["en-Lazord-BoldItalic", 418], ["en-Alike-Regular", 419], ["en-PermanentMarker-Regular", 420], ["en-Sacramento-Regular", 421], ["en-HKGroteskPro-Italic", 422], ["en-Aleo-BoldItalic", 423], ["en-TANGARLAND-Regular", 425], ["en-Twister", 426], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-BethEllen-Regular", 429], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-BreeSerif-Regular", 432], ["en-CodecPro-ExtraBold", 433], ["en-Pierson-Light", 434], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-TraceFontRegular", 438], ["en-RTL-AdamScript-Regular", 439], ["en-EastmanGrotesque-Italic", 440], ["en-Kalam-Bold", 441], ["en-ChauPhilomeneOne-Regular", 442], ["en-Coiny-Regular", 443], ["en-Lovera", 444], ["en-Gellatio", 445], ["en-TitilliumWeb-Bold", 446], ["en-OilvareBase-Italic", 447], ["en-Catamaran-Black", 448], ["en-Anteb-Italic", 449], ["en-SueEllenFrancisco", 450], ["en-SweetApricot", 451], ["en-BrightSunshine", 452], ["en-IM_FELL_Double_Pica_Italic", 453], ["en-Granaina-limpia", 454], ["en-TANPARFAIT", 455], ["en-AcherusGrotesque-Regular", 456], ["en-AwesomeLathusca-Italic", 457], ["en-Signika-Bold", 458], ["en-Andasia", 459], ["en-DO-AllCaps-Slanted", 460], ["en-Zenaida-Regular", 461], ["en-Fahkwang-Regular", 462], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-PlumaThin-Regular", 465], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-Cheque-Regular", 469], ["en-SEGO", 470], ["en-BobbyJones-Condensed", 471], ["en-NexaSlab-RegularItalic", 472], ["en-DancingScript-Regular", 473], ["en-Magnolia-Script", 475], ["en-OpunMai-400It", 476], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-FingerPaint-Regular", 479], ["en-BostonAngel-Light", 480], ["en-Gliker-RegularExpanded", 481], ["en-Ahsing", 482], ["en-Engagement-Regular", 483], ["en-EyesomeScript", 484], ["en-LibraSerifModern-Regular", 485], ["en-London-Regular", 486], ["en-AtkinsonHyperlegible-Regular", 487], ["en-StadioNow-TextItalic", 488], ["en-Aniyah", 489], ["en-ITCAvantGardePro-Bold", 490], ["en-Comica-Regular", 491], ["en-Coustard-Regular", 492], ["en-Brice-BoldCondensed", 493], ["en-TANNEWYORK-Bold", 494], ["en-TANBUSTER-Bold", 495], ["en-Alatsi-Regular", 496], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Rajdhani-Bold", 499], ["en-LobsterTwo-BoldItalic", 500], ["en-Hitchcut-Regular", 502], ["en-GermaniaOne-Regular", 503], ["en-Emitha-Script", 504], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-AllertaStencil-Regular", 508], ["en-RTL-Sondos-Regular", 509], ["en-HomemadeApple-Regular", 510], ["en-CosmicOcto-Medium", 511]]
|
assets/multi_fonts/ru.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[["en-OpenSans-ExtraBold", 10], ["en-AnonymousPro-Bold", 106], ["en-CodecPro-Regular", 109], ["en-TTNormsPro-Italic", 114], ["en-Gagalin-Regular", 115], ["en-OpenSans-Bold", 116], ["en-HeroLight-Regular", 119], ["en-Lato-BoldItalic", 123], ["en-BebasNeueCyrillic", 129], ["en-IntroRust-Base", 130], ["en-Garet-Bold", 139], ["en-FiraSans-Black", 140], ["en-NotoSerifDisplay-Black", 142], ["en-TTChocolates-Regular", 143], ["en-Ubuntu-Regular", 144], ["en-Roboto-BoldItalic", 15], ["en-PeaceSans", 153], ["en-RobotoMono-Light", 156], ["en-ArticulatCF-Regular", 163], ["en-Raleway-Regular", 164], ["en-NotoSerifDisplay-ExtraCondensedItalic", 167], ["en-Bryndan Write", 168], ["en-TTCommonsPro-It", 169], ["en-TTHoves-Bold", 172], ["en-DroidSerif", 173], ["en-AblationRegular", 174], ["en-Inter-BoldItalic", 18], ["en-TTInterphases-BoldItalic", 180], ["en-IBMPlexSans", 184], ["en-TTFors-Regular", 187], ["en-AlegreyaSans-Black", 190], ["en-AristotelicaProTx-Rg", 192], ["en-NotoSerif", 193], ["en-EBGaramond-Italic", 194], ["en-RobotoSlab-Regular", 196], ["en-DO-Sans-Regular", 197], ["en-Forum", 203], ["en-CMUSerif-Roman", 207], ["en-PTSans-Bold", 209], ["en-Sensei-Medium", 210], ["en-RocaOne-It", 216], ["en-Funtastic-Regular", 217], ["en-PTSerif-BoldItalic", 218], ["en-Muller-RegularItalic", 219], ["en-PlayfairDisplay-SemiBold", 22], ["en-ArgentCF-Regular", 220], ["en-TYSerif-D", 223], ["en-Gotham-Book", 228], ["en-CocoGothic-Italic", 230], ["en-BukhariScript-Regular", 234], ["en-HelveticaWorld-Bold", 235], ["en-AlegreyaSansSC-Black", 239], ["en-Lato-Regular", 24], ["en-QuincyCF-Regular", 241], ["en-FiraCode-Regular", 242], ["en-Nickainley-Normal", 244], ["en-RubikOne-Regular", 245], ["en-Borsok", 247], ["en-Gordita-RegularItalic", 248], ["en-Scripter-Regular", 249], ["en-KleinText-Regular", 251], ["en-BubbleboddyNeue-Regular", 261], ["en-TTDrugs-Italic", 263], ["en-CyGrotesk-KeyRegular", 264], ["en-BloggerSans", 268], ["en-SloopScriptPro-Regular", 270], ["en-JetBrainsMono-Regular", 275], ["en-MADEEvolveSans", 276], ["en-Handyman-Regular", 278], ["en-CodePro-NormalLC", 28], ["en-IBMPlexMono", 285], ["en-OpenSans-LightItalic", 288], ["en-TTFirsNeue-Italic", 299], ["en-OpenSans-ExtraBoldItalic", 3], ["en-Sunday-Regular", 300], ["en-HeliosExt", 303], ["en-ObjectSans-MediumSlanted", 308], ["en-HKGrotesk-Bold", 31], ["en-Brusher-Regular", 314], ["en-Prata-Regular", 318], ["en-PlayfairDisplay-BoldItalic", 320], ["en-AmaticSC-Regular", 321], ["en-TTRamillas-Italic", 325], ["en-CormorantSC-Bold", 329], ["en-Atteron", 331], ["en-RocaTwo-Lt", 332], ["en-HeadingNow-74Regular", 335], ["en-Raleway-ExtraBoldItalic", 34], ["en-DidactGothic-Regular", 340], ["en-Lovelace-Regular", 341], ["en-HussarBd", 344], ["en-OldStandard-Italic", 345], ["en-Mont-RegularItalic", 35], ["en-PlayfairDisplaySC-Italic", 352], ["en-Etna-Regular", 353], ["en-Arimo-BoldItalic", 36], ["en-ProximaNova-Bold", 364], ["en-ArsenicaAntiqua-Regular", 366], ["en-Lora-Italic", 37], ["en-AristotelicaProCndTxt-Rg", 370], ["en-NotoSans", 375], ["en-Lobster-Regular", 380], ["en-LovelaceText-Bold", 385], ["en-Anaktoria", 386], ["en-IBMPlexSerif", 388], ["en-Marta", 389], ["en-Mango-Regular", 390], ["en-Hagrid-Regular", 392], ["en-Helios-Bold", 399], ["en-NexaScript-Regular", 401], ["en-TruetypewriterPolyglOTT", 407], ["en-CormorantGaramond-Bold", 41], ["en-BaskervilleDisplayPT-Regular", 411], ["en-Vollkorn-Regular", 413], ["en-SugoProDisplay-Italic", 417], ["en-Arsenal-Italic", 427], ["en-Bogart-Italic", 428], ["en-Caveat-Regular", 430], ["en-BalsamiqSans-Bold", 431], ["en-CodecPro-ExtraBold", 433], ["en-CyGrotesk-WideRegular", 435], ["en-Lumios-Marker", 436], ["en-Comfortaa-Bold", 437], ["en-RTL-AdamScript-Regular", 439], ["en-BebasNeueBold", 44], ["en-EastmanGrotesque-Italic", 440], ["en-LazydogRegular", 45], ["en-DO-AllCaps-Slanted", 460], ["en-Play-Regular", 463], ["en-BERNIERRegular-Regular", 464], ["en-SportsWorld", 466], ["en-Garet-Black", 467], ["en-CarolloPlayscript-BlackItalic", 468], ["en-Cheque-Regular", 469], ["en-Magnolia-Script", 475], ["en-MadelynFill-Regular", 477], ["en-ZingRust-Base", 478], ["en-LibraSerifModern-Regular", 485], ["en-StadioNow-TextItalic", 488], ["en-Comica-Regular", 491], ["en-TYSerif-Book", 497], ["en-Jingleberry", 498], ["en-Nunito-ExtraBoldItalic", 50], ["en-LemonTuesday", 505], ["en-MonterchiSerif-Regular", 507], ["en-Montserrat-Light", 52], ["en-TenorSans", 53], ["en-ClearSans-Bold", 55], ["en-Alice-Regular", 57], ["en-Oswald-Regular", 58], ["en-Garet-Regular", 6], ["en-NunitoSans10pt-BlackItalic", 69], ["en-Rubik-Regular", 71], ["en-PPNeueMachina-Regular", 72], ["en-Alegreya-Regular", 83], ["en-RobotoCondensed-Italic", 85], ["en-Garet-ExtraBold", 87], ["en-YesevaOne-Regular", 88], ["en-OpenSans-Italic", 91], ["en-Nunito-BlackItalic", 99]]
|
assets/multilingual_10-lang_idx.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"en-Montserrat-Regular": 0, "en-Poppins-Italic": 1, "en-GlacialIndifference-Regular": 2, "en-OpenSans-ExtraBoldItalic": 3, "en-Montserrat-Bold": 4, "en-Now-Regular": 5, "en-Garet-Regular": 6, "en-LeagueSpartan-Bold": 7, "en-DMSans-Regular": 8, "en-OpenSauceOne-Regular": 9, "en-OpenSans-ExtraBold": 10, "en-KGPrimaryPenmanship": 11, "en-Anton-Regular": 12, "en-Aileron-BlackItalic": 13, "en-Quicksand-Light": 14, "en-Roboto-BoldItalic": 15, "en-TheSeasons-It": 16, "en-Kollektif": 17, "en-Inter-BoldItalic": 18, "en-Poppins-Medium": 19, "en-Poppins-Light": 20, "en-RoxboroughCF-RegularItalic": 21, "en-PlayfairDisplay-SemiBold": 22, "en-Agrandir-Italic": 23, "en-Lato-Regular": 24, "en-MoreSugarRegular": 25, "en-CanvaSans-RegularItalic": 26, "en-PublicSans-Italic": 27, "en-CodePro-NormalLC": 28, "en-Belleza-Regular": 29, "en-JosefinSans-Bold": 30, "en-HKGrotesk-Bold": 31, "en-Telegraf-Medium": 32, "en-BrittanySignatureRegular": 33, "en-Raleway-ExtraBoldItalic": 34, "en-Mont-RegularItalic": 35, "en-Arimo-BoldItalic": 36, "en-Lora-Italic": 37, "en-ArchivoBlack-Regular": 38, "en-Poppins": 39, "en-Barlow-Black": 40, "en-CormorantGaramond-Bold": 41, "en-LibreBaskerville-Regular": 42, "en-CanvaSchoolFontRegular": 43, "en-BebasNeueBold": 44, "en-LazydogRegular": 45, "en-FredokaOne-Regular": 46, "en-Horizon-Bold": 47, "en-Nourd-Regular": 48, "en-Hatton-Regular": 49, "en-Nunito-ExtraBoldItalic": 50, "en-CerebriSans-Regular": 51, "en-Montserrat-Light": 52, "en-TenorSans": 53, "en-Norwester-Regular": 54, "en-ClearSans-Bold": 55, "en-Cardo-Regular": 56, "en-Alice-Regular": 57, "en-Oswald-Regular": 58, "en-Gaegu-Bold": 59, "en-Muli-Black": 60, "en-TAN-PEARL-Regular": 61, "en-CooperHewitt-Book": 62, "en-Agrandir-Grand": 63, "en-BlackMango-Thin": 64, "en-DMSerifDisplay-Regular": 65, "en-Antonio-Bold": 66, "en-Sniglet-Regular": 67, "en-BeVietnam-Regular": 68, "en-NunitoSans10pt-BlackItalic": 69, "en-AbhayaLibre-ExtraBold": 70, "en-Rubik-Regular": 71, "en-PPNeueMachina-Regular": 72, "en-TAN - MON CHERI-Regular": 73, "en-Jua-Regular": 74, "en-Playlist-Script": 75, "en-SourceSansPro-BoldItalic": 76, "en-MoonTime-Regular": 77, "en-Eczar-ExtraBold": 78, "en-Gatwick-Regular": 79, "en-MonumentExtended-Regular": 80, "en-BarlowSemiCondensed-Regular": 81, "en-BarlowCondensed-Regular": 82, "en-Alegreya-Regular": 83, "en-DreamAvenue": 84, "en-RobotoCondensed-Italic": 85, "en-BobbyJones-Regular": 86, "en-Garet-ExtraBold": 87, "en-YesevaOne-Regular": 88, "en-Dosis-ExtraBold": 89, "en-LeagueGothic-Regular": 90, "en-OpenSans-Italic": 91, "en-TANAEGEAN-Regular": 92, "en-Maharlika-Regular": 93, "en-MarykateRegular": 94, "en-Cinzel-Regular": 95, "en-Agrandir-Wide": 96, "en-Chewy-Regular": 97, "en-BodoniFLF-BoldItalic": 98, "en-Nunito-BlackItalic": 99, "en-LilitaOne": 100, "en-HandyCasualCondensed-Regular": 101, "en-Ovo": 102, "en-Livvic-Regular": 103, "en-Agrandir-Narrow": 104, "en-CrimsonPro-Italic": 105, "en-AnonymousPro-Bold": 106, "en-NF-OneLittleFont-Bold": 107, "en-RedHatDisplay-BoldItalic": 108, "en-CodecPro-Regular": 109, "en-HalimunRegular": 110, "en-LibreFranklin-Black": 111, "en-TeXGyreTermes-BoldItalic": 112, "en-Shrikhand-Regular": 113, "en-TTNormsPro-Italic": 114, "en-Gagalin-Regular": 115, "en-OpenSans-Bold": 116, "en-GreatVibes-Regular": 117, "en-Breathing": 118, "en-HeroLight-Regular": 119, "en-KGPrimaryDots": 120, "en-Quicksand-Bold": 121, "en-Brice-ExtraLightSemiExpanded": 122, "en-Lato-BoldItalic": 123, "en-Fraunces9pt-Italic": 124, "en-AbrilFatface-Regular": 125, "en-BerkshireSwash-Regular": 126, "en-Atma-Bold": 127, "en-HolidayRegular": 128, "en-BebasNeueCyrillic": 129, "en-IntroRust-Base": 130, "en-Gistesy": 131, "en-BDScript-Regular": 132, "en-ApricotsRegular": 133, "en-Prompt-Black": 134, "en-TAN MERINGUE": 135, "en-Sukar Regular": 136, "en-GentySans-Regular": 137, "en-NeueEinstellung-Normal": 138, "en-Garet-Bold": 139, "en-FiraSans-Black": 140, "en-BantayogLight": 141, "en-NotoSerifDisplay-Black": 142, "en-TTChocolates-Regular": 143, "en-Ubuntu-Regular": 144, "en-Assistant-Bold": 145, "en-ABeeZee-Regular": 146, "en-LexendDeca-Regular": 147, "en-KingredSerif": 148, "en-Radley-Regular": 149, "en-BrownSugar": 150, "en-MigraItalic-ExtraboldItalic": 151, "en-ChildosArabic-Regular": 152, "en-PeaceSans": 153, "en-LondrinaSolid-Black": 154, "en-SpaceMono-BoldItalic": 155, "en-RobotoMono-Light": 156, "en-CourierPrime-Regular": 157, "en-Alata-Regular": 158, "en-Amsterdam-One": 159, "en-IreneFlorentina-Regular": 160, "en-CatchyMager": 161, "en-Alta_regular": 162, "en-ArticulatCF-Regular": 163, "en-Raleway-Regular": 164, "en-BrasikaDisplay": 165, "en-TANAngleton-Italic": 166, "en-NotoSerifDisplay-ExtraCondensedItalic": 167, "en-Bryndan Write": 168, "en-TTCommonsPro-It": 169, "en-AlexBrush-Regular": 170, "en-Antic-Regular": 171, "en-TTHoves-Bold": 172, "en-DroidSerif": 173, "en-AblationRegular": 174, "en-Marcellus-Regular": 175, "en-Sanchez-Italic": 176, "en-JosefinSans": 177, "en-Afrah-Regular": 178, "en-PinyonScript": 179, "en-TTInterphases-BoldItalic": 180, "en-Yellowtail-Regular": 181, "en-Gliker-Regular": 182, "en-BobbyJonesSoft-Regular": 183, "en-IBMPlexSans": 184, "en-Amsterdam-Three": 185, "en-Amsterdam-FourSlant": 186, "en-TTFors-Regular": 187, "en-Quattrocento": 188, "en-Sifonn-Basic": 189, "en-AlegreyaSans-Black": 190, "en-Daydream": 191, "en-AristotelicaProTx-Rg": 192, "en-NotoSerif": 193, "en-EBGaramond-Italic": 194, "en-HammersmithOne-Regular": 195, "en-RobotoSlab-Regular": 196, "en-DO-Sans-Regular": 197, "en-KGPrimaryDotsLined": 198, "en-Blinker-Regular": 199, "en-TAN NIMBUS": 200, "en-Blueberry-Regular": 201, "en-Rosario-Regular": 202, "en-Forum": 203, "en-MistrullyRegular": 204, "en-SourceSerifPro-Regular": 205, "en-Bugaki-Regular": 206, "en-CMUSerif-Roman": 207, "en-GulfsDisplay-NormalItalic": 208, "en-PTSans-Bold": 209, "en-Sensei-Medium": 210, "en-SquadaOne-Regular": 211, "en-Arapey-Italic": 212, "en-Parisienne-Regular": 213, "en-Aleo-Italic": 214, "en-QuicheDisplay-Italic": 215, "en-RocaOne-It": 216, "en-Funtastic-Regular": 217, "en-PTSerif-BoldItalic": 218, "en-Muller-RegularItalic": 219, "en-ArgentCF-Regular": 220, "en-Brightwall-Italic": 221, "en-Knewave-Regular": 222, "en-TYSerif-D": 223, "en-Agrandir-Tight": 224, "en-AlfaSlabOne-Regular": 225, "en-TANTangkiwood-Display": 226, "en-Kief-Montaser-Regular": 227, "en-Gotham-Book": 228, "en-JuliusSansOne-Regular": 229, "en-CocoGothic-Italic": 230, "en-SairaCondensed-Regular": 231, "en-DellaRespira-Regular": 232, "en-Questrial-Regular": 233, "en-BukhariScript-Regular": 234, "en-HelveticaWorld-Bold": 235, "en-TANKINDRED-Display": 236, "en-CinzelDecorative-Regular": 237, "en-Vidaloka-Regular": 238, "en-AlegreyaSansSC-Black": 239, "en-FeelingPassionate-Regular": 240, "en-QuincyCF-Regular": 241, "en-FiraCode-Regular": 242, "en-Genty-Regular": 243, "en-Nickainley-Normal": 244, "en-RubikOne-Regular": 245, "en-Gidole-Regular": 246, "en-Borsok": 247, "en-Gordita-RegularItalic": 248, "en-Scripter-Regular": 249, "en-Buffalo-Regular": 250, "en-KleinText-Regular": 251, "en-Creepster-Regular": 252, "en-Arvo-Bold": 253, "en-GabrielSans-NormalItalic": 254, "en-Heebo-Black": 255, "en-LexendExa-Regular": 256, "en-BrixtonSansTC-Regular": 257, "en-GildaDisplay-Regular": 258, "en-ChunkFive-Roman": 259, "en-Amaranth-BoldItalic": 260, "en-BubbleboddyNeue-Regular": 261, "en-MavenPro-Bold": 262, "en-TTDrugs-Italic": 263, "en-CyGrotesk-KeyRegular": 264, "en-VarelaRound-Regular": 265, "en-Ruda-Black": 266, "en-SafiraMarch": 267, "en-BloggerSans": 268, "en-TANHEADLINE-Regular": 269, "en-SloopScriptPro-Regular": 270, "en-NeueMontreal-Regular": 271, "en-Schoolbell-Regular": 272, "en-SigherRegular": 273, "en-InriaSerif-Regular": 274, "en-JetBrainsMono-Regular": 275, "en-MADEEvolveSans": 276, "en-Dekko": 277, "en-Handyman-Regular": 278, "en-Aileron-BoldItalic": 279, "en-Bright-Italic": 280, "en-Solway-Regular": 281, "en-Higuen-Regular": 282, "en-WedgesItalic": 283, "en-TANASHFORD-BOLD": 284, "en-IBMPlexMono": 285, "en-RacingSansOne-Regular": 286, "en-RegularBrush": 287, "en-OpenSans-LightItalic": 288, "en-SpecialElite-Regular": 289, "en-FuturaLTPro-Medium": 290, "en-MaragsaDisplay": 291, "en-BigShouldersDisplay-Regular": 292, "en-BDSans-Regular": 293, "en-RasputinRegular": 294, "en-Yvesyvesdrawing-BoldItalic": 295, "en-Bitter-Regular": 296, "en-LuckiestGuy-Regular": 297, "en-CanvaSchoolFontDotted": 298, "en-TTFirsNeue-Italic": 299, "en-Sunday-Regular": 300, "en-HKGothic-MediumItalic": 301, "en-CaveatBrush-Regular": 302, "en-HeliosExt": 303, "en-ArchitectsDaughter-Regular": 304, "en-Angelina": 305, "en-Calistoga-Regular": 306, "en-ArchivoNarrow-Regular": 307, "en-ObjectSans-MediumSlanted": 308, "en-AyrLucidityCondensed-Regular": 309, "en-Nexa-RegularItalic": 310, "en-Lustria-Regular": 311, "en-Amsterdam-TwoSlant": 312, "en-Virtual-Regular": 313, "en-Brusher-Regular": 314, "en-NF-Lepetitcochon-Regular": 315, "en-TANTWINKLE": 316, "en-LeJour-Serif": 317, "en-Prata-Regular": 318, "en-PPWoodland-Regular": 319, "en-PlayfairDisplay-BoldItalic": 320, "en-AmaticSC-Regular": 321, "en-Cabin-Regular": 322, "en-Manjari-Bold": 323, "en-MrDafoe-Regular": 324, "en-TTRamillas-Italic": 325, "en-Luckybones-Bold": 326, "en-DarkerGrotesque-Light": 327, "en-BellabooRegular": 328, "en-CormorantSC-Bold": 329, "en-GochiHand-Regular": 330, "en-Atteron": 331, "en-RocaTwo-Lt": 332, "en-ZCOOLXiaoWei-Regular": 333, "en-TANSONGBIRD": 334, "en-HeadingNow-74Regular": 335, "en-Luthier-BoldItalic": 336, "en-Oregano-Regular": 337, "en-AyrTropikaIsland-Int": 338, "en-Mali-Regular": 339, "en-DidactGothic-Regular": 340, "en-Lovelace-Regular": 341, "en-BakerieSmooth-Regular": 342, "en-CarterOne": 343, "en-HussarBd": 344, "en-OldStandard-Italic": 345, "en-TAN-ASTORIA-Display": 346, "en-rugratssans-Regular": 347, "en-BMHANNA": 348, "en-BetterSaturday": 349, "en-AdigianaToybox": 350, "en-Sailors": 351, "en-PlayfairDisplaySC-Italic": 352, "en-Etna-Regular": 353, "en-Revive80Signature": 354, "en-CAGenerated": 355, "en-Poppins-Regular": 356, "en-Jonathan-Regular": 357, "en-Pacifico-Regular": 358, "en-Saira-Black": 359, "en-Loubag-Regular": 360, "en-Decalotype-Black": 361, "en-Mansalva-Regular": 362, "en-Allura-Regular": 363, "en-ProximaNova-Bold": 364, "en-TANMIGNON-DISPLAY": 365, "en-ArsenicaAntiqua-Regular": 366, "en-BreulGroteskA-RegularItalic": 367, "en-HKModular-Bold": 368, "en-TANNightingale-Regular": 369, "en-AristotelicaProCndTxt-Rg": 370, "en-Aprila-Regular": 371, "en-Tomorrow-Regular": 372, "en-AngellaWhite": 373, "en-KaushanScript-Regular": 374, "en-NotoSans": 375, "en-LeJour-Script": 376, "en-BrixtonTC-Regular": 377, "en-OleoScript-Regular": 378, "en-Cakerolli-Regular": 379, "en-Lobster-Regular": 380, "en-FrunchySerif-Regular": 381, "en-PorcelainRegular": 382, "en-AlojaExtended": 383, "en-SergioTrendy-Italic": 384, "en-LovelaceText-Bold": 385, "en-Anaktoria": 386, "en-JimmyScript-Light": 387, "en-IBMPlexSerif": 388, "en-Marta": 389, "en-Mango-Regular": 390, "en-Overpass-Italic": 391, "en-Hagrid-Regular": 392, "en-ElikaGorica": 393, "en-Amiko-Regular": 394, "en-EFCOBrookshire-Regular": 395, "en-Caladea-Regular": 396, "en-MoonlightBold": 397, "en-Staatliches-Regular": 398, "en-Helios-Bold": 399, "en-Satisfy-Regular": 400, "en-NexaScript-Regular": 401, "en-Trocchi-Regular": 402, "en-March": 403, "en-IbarraRealNova-Regular": 404, "en-Nectarine-Regular": 405, "en-Overpass-Light": 406, "en-TruetypewriterPolyglOTT": 407, "en-Bangers-Regular": 408, "en-Lazord-BoldExpandedItalic": 409, "en-Chloe-Regular": 410, "en-BaskervilleDisplayPT-Regular": 411, "en-Bright-Regular": 412, "en-Vollkorn-Regular": 413, "en-Harmattan": 414, "en-SortsMillGoudy-Regular": 415, "en-Biryani-Bold": 416, "en-SugoProDisplay-Italic": 417, "en-Lazord-BoldItalic": 418, "en-Alike-Regular": 419, "en-PermanentMarker-Regular": 420, "en-Sacramento-Regular": 421, "en-HKGroteskPro-Italic": 422, "en-Aleo-BoldItalic": 423, "en-Noot": 424, "en-TANGARLAND-Regular": 425, "en-Twister": 426, "en-Arsenal-Italic": 427, "en-Bogart-Italic": 428, "en-BethEllen-Regular": 429, "en-Caveat-Regular": 430, "en-BalsamiqSans-Bold": 431, "en-BreeSerif-Regular": 432, "en-CodecPro-ExtraBold": 433, "en-Pierson-Light": 434, "en-CyGrotesk-WideRegular": 435, "en-Lumios-Marker": 436, "en-Comfortaa-Bold": 437, "en-TraceFontRegular": 438, "en-RTL-AdamScript-Regular": 439, "en-EastmanGrotesque-Italic": 440, "en-Kalam-Bold": 441, "en-ChauPhilomeneOne-Regular": 442, "en-Coiny-Regular": 443, "en-Lovera": 444, "en-Gellatio": 445, "en-TitilliumWeb-Bold": 446, "en-OilvareBase-Italic": 447, "en-Catamaran-Black": 448, "en-Anteb-Italic": 449, "en-SueEllenFrancisco": 450, "en-SweetApricot": 451, "en-BrightSunshine": 452, "en-IM_FELL_Double_Pica_Italic": 453, "en-Granaina-limpia": 454, "en-TANPARFAIT": 455, "en-AcherusGrotesque-Regular": 456, "en-AwesomeLathusca-Italic": 457, "en-Signika-Bold": 458, "en-Andasia": 459, "en-DO-AllCaps-Slanted": 460, "en-Zenaida-Regular": 461, "en-Fahkwang-Regular": 462, "en-Play-Regular": 463, "en-BERNIERRegular-Regular": 464, "en-PlumaThin-Regular": 465, "en-SportsWorld": 466, "en-Garet-Black": 467, "en-CarolloPlayscript-BlackItalic": 468, "en-Cheque-Regular": 469, "en-SEGO": 470, "en-BobbyJones-Condensed": 471, "en-NexaSlab-RegularItalic": 472, "en-DancingScript-Regular": 473, "en-PaalalabasDisplayWideBETA": 474, "en-Magnolia-Script": 475, "en-OpunMai-400It": 476, "en-MadelynFill-Regular": 477, "en-ZingRust-Base": 478, "en-FingerPaint-Regular": 479, "en-BostonAngel-Light": 480, "en-Gliker-RegularExpanded": 481, "en-Ahsing": 482, "en-Engagement-Regular": 483, "en-EyesomeScript": 484, "en-LibraSerifModern-Regular": 485, "en-London-Regular": 486, "en-AtkinsonHyperlegible-Regular": 487, "en-StadioNow-TextItalic": 488, "en-Aniyah": 489, "en-ITCAvantGardePro-Bold": 490, "en-Comica-Regular": 491, "en-Coustard-Regular": 492, "en-Brice-BoldCondensed": 493, "en-TANNEWYORK-Bold": 494, "en-TANBUSTER-Bold": 495, "en-Alatsi-Regular": 496, "en-TYSerif-Book": 497, "en-Jingleberry": 498, "en-Rajdhani-Bold": 499, "en-LobsterTwo-BoldItalic": 500, "en-BestLight-Medium": 501, "en-Hitchcut-Regular": 502, "en-GermaniaOne-Regular": 503, "en-Emitha-Script": 504, "en-LemonTuesday": 505, "en-Cubao_Free_Regular": 506, "en-MonterchiSerif-Regular": 507, "en-AllertaStencil-Regular": 508, "en-RTL-Sondos-Regular": 509, "en-HomemadeApple-Regular": 510, "en-CosmicOcto-Medium": 511, "cn-HelloFont-FangHuaTi": 0, "cn-HelloFont-ID-DianFangSong-Bold": 1, "cn-HelloFont-ID-DianFangSong": 2, "cn-HelloFont-ID-DianHei-CEJ": 3, "cn-HelloFont-ID-DianHei-DEJ": 4, "cn-HelloFont-ID-DianHei-EEJ": 5, "cn-HelloFont-ID-DianHei-FEJ": 6, "cn-HelloFont-ID-DianHei-GEJ": 7, "cn-HelloFont-ID-DianKai-Bold": 8, "cn-HelloFont-ID-DianKai": 9, "cn-HelloFont-WenYiHei": 10, "cn-Hellofont-ID-ChenYanXingKai": 11, "cn-Hellofont-ID-DaZiBao": 12, "cn-Hellofont-ID-DaoCaoRen": 13, "cn-Hellofont-ID-JianSong": 14, "cn-Hellofont-ID-JiangHuZhaoPaiHei": 15, "cn-Hellofont-ID-KeSong": 16, "cn-Hellofont-ID-LeYuanTi": 17, "cn-Hellofont-ID-Pinocchio": 18, "cn-Hellofont-ID-QiMiaoTi": 19, "cn-Hellofont-ID-QingHuaKai": 20, "cn-Hellofont-ID-QingHuaXingKai": 21, "cn-Hellofont-ID-ShanShuiXingKai": 22, "cn-Hellofont-ID-ShouXieQiShu": 23, "cn-Hellofont-ID-ShouXieTongZhenTi": 24, "cn-Hellofont-ID-TengLingTi": 25, "cn-Hellofont-ID-XiaoLiShu": 26, "cn-Hellofont-ID-XuanZhenSong": 27, "cn-Hellofont-ID-ZhongLingXingKai": 28, "cn-HellofontIDJiaoTangTi": 29, "cn-HellofontIDJiuZhuTi": 30, "cn-HuXiaoBao-SaoBao": 31, "cn-HuXiaoBo-NanShen": 32, "cn-HuXiaoBo-ZhenShuai": 33, "cn-SourceHanSansSC-Bold": 34, "cn-SourceHanSansSC-ExtraLight": 35, "cn-SourceHanSansSC-Heavy": 36, "cn-SourceHanSansSC-Light": 37, "cn-SourceHanSansSC-Medium": 38, "cn-SourceHanSansSC-Normal": 39, "cn-SourceHanSansSC-Regular": 40, "cn-SourceHanSerifSC-Bold": 41, "cn-SourceHanSerifSC-ExtraLight": 42, "cn-SourceHanSerifSC-Heavy": 43, "cn-SourceHanSerifSC-Light": 44, "cn-SourceHanSerifSC-Medium": 45, "cn-SourceHanSerifSC-Regular": 46, "cn-SourceHanSerifSC-SemiBold": 47, "cn-xiaowei": 48, "cn-AaJianHaoTi": 49, "cn-AlibabaPuHuiTi-Bold": 50, "cn-AlibabaPuHuiTi-Heavy": 51, "cn-AlibabaPuHuiTi-Light": 52, "cn-AlibabaPuHuiTi-Medium": 53, "cn-AlibabaPuHuiTi-Regular": 54, "cn-CanvaAcidBoldSC": 55, "cn-CanvaBreezeCN": 56, "cn-CanvaBumperCropSC": 57, "cn-CanvaCakeShopCN": 58, "cn-CanvaEndeavorBlackSC": 59, "cn-CanvaJoyHeiCN": 60, "cn-CanvaLiCN": 61, "cn-CanvaOrientalBrushCN": 62, "cn-CanvaPoster": 63, "cn-CanvaQinfuCalligraphyCN": 64, "cn-CanvaSweetHeartCN": 65, "cn-CanvaSwordLikeDreamCN": 66, "cn-CanvaTangyuanHandwritingCN": 67, "cn-CanvaWanderWorldCN": 68, "cn-CanvaWenCN": 69, "cn-DianZiChunYi": 70, "cn-GenSekiGothicTW-H": 71, "cn-GenWanMinTW-L": 72, "cn-GenYoMinTW-B": 73, "cn-GenYoMinTW-EL": 74, "cn-GenYoMinTW-H": 75, "cn-GenYoMinTW-M": 76, "cn-GenYoMinTW-R": 77, "cn-GenYoMinTW-SB": 78, "cn-HYQiHei-AZEJ": 79, "cn-HYQiHei-EES": 80, "cn-HanaMinA": 81, "cn-HappyZcool-2016": 82, "cn-HelloFont ZJ KeKouKeAiTi": 83, "cn-HelloFont-ID-BoBoTi": 84, "cn-HelloFont-ID-FuGuHei-25": 85, "cn-HelloFont-ID-FuGuHei-35": 86, "cn-HelloFont-ID-FuGuHei-45": 87, "cn-HelloFont-ID-FuGuHei-55": 88, "cn-HelloFont-ID-FuGuHei-65": 89, "cn-HelloFont-ID-FuGuHei-75": 90, "cn-HelloFont-ID-FuGuHei-85": 91, "cn-HelloFont-ID-HeiKa": 92, "cn-HelloFont-ID-HeiTang": 93, "cn-HelloFont-ID-JianSong-95": 94, "cn-HelloFont-ID-JueJiangHei-50": 95, "cn-HelloFont-ID-JueJiangHei-55": 96, "cn-HelloFont-ID-JueJiangHei-60": 97, "cn-HelloFont-ID-JueJiangHei-65": 98, "cn-HelloFont-ID-JueJiangHei-70": 99, "cn-HelloFont-ID-JueJiangHei-75": 100, "cn-HelloFont-ID-JueJiangHei-80": 101, "cn-HelloFont-ID-KuHeiTi": 102, "cn-HelloFont-ID-LingDongTi": 103, "cn-HelloFont-ID-LingLiTi": 104, "cn-HelloFont-ID-MuFengTi": 105, "cn-HelloFont-ID-NaiNaiJiangTi": 106, "cn-HelloFont-ID-PangDu": 107, "cn-HelloFont-ID-ReLieTi": 108, "cn-HelloFont-ID-RouRun": 109, "cn-HelloFont-ID-SaShuangShouXieTi": 110, "cn-HelloFont-ID-WangZheFengFan": 111, "cn-HelloFont-ID-YouQiTi": 112, "cn-Hellofont-ID-XiaLeTi": 113, "cn-Hellofont-ID-XianXiaTi": 114, "cn-HuXiaoBoKuHei": 115, "cn-IDDanMoXingKai": 116, "cn-IDJueJiangHei": 117, "cn-IDMeiLingTi": 118, "cn-IDQQSugar": 119, "cn-LiuJianMaoCao-Regular": 120, "cn-LongCang-Regular": 121, "cn-MaShanZheng-Regular": 122, "cn-PangMenZhengDao-3": 123, "cn-PangMenZhengDao-Cu": 124, "cn-PangMenZhengDao": 125, "cn-SentyCaramel": 126, "cn-SourceHanSerifSC": 127, "cn-WenCang-Regular": 128, "cn-WenQuanYiMicroHei": 129, "cn-XianErTi": 130, "cn-YRDZSTJF": 131, "cn-YS-HelloFont-BangBangTi": 132, "cn-ZCOOLKuaiLe-Regular": 133, "cn-ZCOOLQingKeHuangYou-Regular": 134, "cn-ZCOOLXiaoWei-Regular": 135, "cn-ZCOOL_KuHei": 136, "cn-ZhiMangXing-Regular": 137, "cn-baotuxiaobaiti": 138, "cn-jiangxizhuokai-Regular": 139, "cn-zcool-gdh": 140, "cn-zcoolqingkehuangyouti-Regular": 141, "cn-zcoolwenyiti": 142, "jp-04KanjyukuGothic": 0, "jp-07LightNovelPOP": 1, "jp-07NikumaruFont": 2, "jp-07YasashisaAntique": 3, "jp-07YasashisaGothic": 4, "jp-BokutachinoGothic2Bold": 5, "jp-BokutachinoGothic2Regular": 6, "jp-CHI_SpeedyRight_full_211128-Regular": 7, "jp-CHI_SpeedyRight_italic_full_211127-Regular": 8, "jp-CP-Font": 9, "jp-Canva_CezanneProN-B": 10, "jp-Canva_CezanneProN-M": 11, "jp-Canva_ChiaroStd-B": 12, "jp-Canva_CometStd-B": 13, "jp-Canva_DotMincho16Std-M": 14, "jp-Canva_GrecoStd-B": 15, "jp-Canva_GrecoStd-M": 16, "jp-Canva_LyraStd-DB": 17, "jp-Canva_MatisseHatsuhiPro-B": 18, "jp-Canva_MatisseHatsuhiPro-M": 19, "jp-Canva_ModeMinAStd-B": 20, "jp-Canva_NewCezanneProN-B": 21, "jp-Canva_NewCezanneProN-M": 22, "jp-Canva_PearlStd-L": 23, "jp-Canva_RaglanStd-UB": 24, "jp-Canva_RailwayStd-B": 25, "jp-Canva_ReggaeStd-B": 26, "jp-Canva_RocknRollStd-DB": 27, "jp-Canva_RodinCattleyaPro-B": 28, "jp-Canva_RodinCattleyaPro-M": 29, "jp-Canva_RodinCattleyaPro-UB": 30, "jp-Canva_RodinHimawariPro-B": 31, "jp-Canva_RodinHimawariPro-M": 32, "jp-Canva_RodinMariaPro-B": 33, "jp-Canva_RodinMariaPro-DB": 34, "jp-Canva_RodinProN-M": 35, "jp-Canva_ShadowTLStd-B": 36, "jp-Canva_StickStd-B": 37, "jp-Canva_TsukuAOldMinPr6N-B": 38, "jp-Canva_TsukuAOldMinPr6N-R": 39, "jp-Canva_UtrilloPro-DB": 40, "jp-Canva_UtrilloPro-M": 41, "jp-Canva_YurukaStd-UB": 42, "jp-FGUIGEN": 43, "jp-GlowSansJ-Condensed-Heavy": 44, "jp-GlowSansJ-Condensed-Light": 45, "jp-GlowSansJ-Normal-Bold": 46, "jp-GlowSansJ-Normal-Light": 47, "jp-HannariMincho": 48, "jp-HarenosoraMincho": 49, "jp-Jiyucho": 50, "jp-Kaiso-Makina-B": 51, "jp-Kaisotai-Next-UP-B": 52, "jp-KokoroMinchoutai": 53, "jp-Mamelon-3-Hi-Regular": 54, "jp-MotoyaAnemoneStd-W1": 55, "jp-MotoyaAnemoneStd-W5": 56, "jp-MotoyaAnticPro-W3": 57, "jp-MotoyaCedarStd-W3": 58, "jp-MotoyaCedarStd-W5": 59, "jp-MotoyaGochikaStd-W4": 60, "jp-MotoyaGochikaStd-W8": 61, "jp-MotoyaGothicMiyabiStd-W6": 62, "jp-MotoyaGothicStd-W3": 63, "jp-MotoyaGothicStd-W5": 64, "jp-MotoyaKoinStd-W3": 65, "jp-MotoyaKyotaiStd-W2": 66, "jp-MotoyaKyotaiStd-W4": 67, "jp-MotoyaMaruStd-W3": 68, "jp-MotoyaMaruStd-W5": 69, "jp-MotoyaMinchoMiyabiStd-W4": 70, "jp-MotoyaMinchoMiyabiStd-W6": 71, "jp-MotoyaMinchoModernStd-W4": 72, "jp-MotoyaMinchoModernStd-W6": 73, "jp-MotoyaMinchoStd-W3": 74, "jp-MotoyaMinchoStd-W5": 75, "jp-MotoyaReisyoStd-W2": 76, "jp-MotoyaReisyoStd-W6": 77, "jp-MotoyaTohitsuStd-W4": 78, "jp-MotoyaTohitsuStd-W6": 79, "jp-MtySousyokuEmBcJis-W6": 80, "jp-MtySousyokuLiBcJis-W6": 81, "jp-Mushin": 82, "jp-NotoSansJP-Bold": 83, "jp-NotoSansJP-Regular": 84, "jp-NudMotoyaAporoStd-W3": 85, "jp-NudMotoyaAporoStd-W5": 86, "jp-NudMotoyaCedarStd-W3": 87, "jp-NudMotoyaCedarStd-W5": 88, "jp-NudMotoyaMaruStd-W3": 89, "jp-NudMotoyaMaruStd-W5": 90, "jp-NudMotoyaMinchoStd-W5": 91, "jp-Ounen-mouhitsu": 92, "jp-Ronde-B-Square": 93, "jp-SMotoyaGyosyoStd-W5": 94, "jp-SMotoyaSinkaiStd-W3": 95, "jp-SMotoyaSinkaiStd-W5": 96, "jp-SourceHanSansJP-Bold": 97, "jp-SourceHanSansJP-Regular": 98, "jp-SourceHanSerifJP-Bold": 99, "jp-SourceHanSerifJP-Regular": 100, "jp-TazuganeGothicStdN-Bold": 101, "jp-TazuganeGothicStdN-Regular": 102, "jp-TelopMinProN-B": 103, "jp-Togalite-Bold": 104, "jp-Togalite-Regular": 105, "jp-TsukuMinPr6N-E": 106, "jp-TsukuMinPr6N-M": 107, "jp-mikachan_o": 108, "jp-nagayama_kai": 109, "jp-07LogoTypeGothic7": 110, "jp-07TetsubinGothic": 111, "jp-851CHIKARA-DZUYOKU-KANA-A": 112, "jp-ARMinchoJIS-Light": 113, "jp-ARMinchoJIS-Ultra": 114, "jp-ARPCrystalMinchoJIS-Medium": 115, "jp-ARPCrystalRGothicJIS-Medium": 116, "jp-ARShounanShinpitsuGyosyoJIS-Medium": 117, "jp-AozoraMincho-bold": 118, "jp-AozoraMinchoRegular": 119, "jp-ArialUnicodeMS-Bold": 120, "jp-ArialUnicodeMS": 121, "jp-CanvaBreezeJP": 122, "jp-CanvaLiCN": 123, "jp-CanvaLiJP": 124, "jp-CanvaOrientalBrushCN": 125, "jp-CanvaQinfuCalligraphyJP": 126, "jp-CanvaSweetHeartJP": 127, "jp-CanvaWenJP": 128, "jp-Corporate-Logo-Bold": 129, "jp-DelaGothicOne-Regular": 130, "jp-GN-Kin-iro_SansSerif": 131, "jp-GN-Koharuiro_Sunray": 132, "jp-GenEiGothicM-B": 133, "jp-GenEiGothicM-R": 134, "jp-GenJyuuGothic-Bold": 135, "jp-GenRyuMinTW-B": 136, "jp-GenRyuMinTW-R": 137, "jp-GenSekiGothicTW-B": 138, "jp-GenSekiGothicTW-R": 139, "jp-GenSenRoundedTW-B": 140, "jp-GenSenRoundedTW-R": 141, "jp-GenShinGothic-Bold": 142, "jp-GenShinGothic-Normal": 143, "jp-GenWanMinTW-L": 144, "jp-GenYoGothicTW-B": 145, "jp-GenYoGothicTW-R": 146, "jp-GenYoMinTW-B": 147, "jp-GenYoMinTW-R": 148, "jp-HGBouquet": 149, "jp-HanaMinA": 150, "jp-HanazomeFont": 151, "jp-HinaMincho-Regular": 152, "jp-Honoka-Antique-Maru": 153, "jp-Honoka-Mincho": 154, "jp-HuiFontP": 155, "jp-IPAexMincho": 156, "jp-JK-Gothic-L": 157, "jp-JK-Gothic-M": 158, "jp-JackeyFont": 159, "jp-KaiseiTokumin-Bold": 160, "jp-KaiseiTokumin-Regular": 161, "jp-Keifont": 162, "jp-KiwiMaru-Regular": 163, "jp-Koku-Mincho-Regular": 164, "jp-MotoyaLMaru-W3-90ms-RKSJ-H": 165, "jp-NewTegomin-Regular": 166, "jp-NicoKaku": 167, "jp-NicoMoji+": 168, "jp-Otsutome_font-Bold": 169, "jp-PottaOne-Regular": 170, "jp-RampartOne-Regular": 171, "jp-Senobi-Gothic-Bold": 172, "jp-Senobi-Gothic-Regular": 173, "jp-SmartFontUI-Proportional": 174, "jp-SoukouMincho": 175, "jp-TEST_Klee-DB": 176, "jp-TEST_Klee-M": 177, "jp-TEST_UDMincho-B": 178, "jp-TEST_UDMincho-L": 179, "jp-TT_Akakane-EB": 180, "jp-Tanuki-Permanent-Marker": 181, "jp-TrainOne-Regular": 182, "jp-TsunagiGothic-Black": 183, "jp-Ume-Hy-Gothic": 184, "jp-Ume-P-Mincho": 185, "jp-WenQuanYiMicroHei": 186, "jp-XANO-mincho-U32": 187, "jp-YOzFontM90-Regular": 188, "jp-Yomogi-Regular": 189, "jp-YujiBoku-Regular": 190, "jp-YujiSyuku-Regular": 191, "jp-ZenKakuGothicNew-Bold": 192, "jp-ZenKakuGothicNew-Regular": 193, "jp-ZenKurenaido-Regular": 194, "jp-ZenMaruGothic-Bold": 195, "jp-ZenMaruGothic-Regular": 196, "jp-darts-font": 197, "jp-irohakakuC-Bold": 198, "jp-irohakakuC-Medium": 199, "jp-irohakakuC-Regular": 200, "jp-katyou": 201, "jp-mplus-1m-bold": 202, "jp-mplus-1m-regular": 203, "jp-mplus-1p-bold": 204, "jp-mplus-1p-regular": 205, "jp-rounded-mplus-1p-bold": 206, "jp-rounded-mplus-1p-regular": 207, "jp-timemachine-wa": 208, "jp-ttf-GenEiLateMin-Medium": 209, "jp-uzura_font": 210, "kr-Arita-buri-Bold_OTF": 0, "kr-Arita-buri-HairLine_OTF": 1, "kr-Arita-buri-Light_OTF": 2, "kr-Arita-buri-Medium_OTF": 3, "kr-Arita-buri-SemiBold_OTF": 4, "kr-Canva_YDSunshineL": 5, "kr-Canva_YDSunshineM": 6, "kr-Canva_YoonGulimPro710": 7, "kr-Canva_YoonGulimPro730": 8, "kr-Canva_YoonGulimPro740": 9, "kr-Canva_YoonGulimPro760": 10, "kr-Canva_YoonGulimPro770": 11, "kr-Canva_YoonGulimPro790": 12, "kr-CreHappB": 13, "kr-CreHappL": 14, "kr-CreHappM": 15, "kr-CreHappS": 16, "kr-OTAuroraB": 17, "kr-OTAuroraL": 18, "kr-OTAuroraR": 19, "kr-OTDoldamgilB": 20, "kr-OTDoldamgilL": 21, "kr-OTDoldamgilR": 22, "kr-OTHamsterB": 23, "kr-OTHamsterL": 24, "kr-OTHamsterR": 25, "kr-OTHapchangdanB": 26, "kr-OTHapchangdanL": 27, "kr-OTHapchangdanR": 28, "kr-OTSupersizeBkBOX": 29, "kr-SourceHanSansKR-Bold": 30, "kr-SourceHanSansKR-ExtraLight": 31, "kr-SourceHanSansKR-Heavy": 32, "kr-SourceHanSansKR-Light": 33, "kr-SourceHanSansKR-Medium": 34, "kr-SourceHanSansKR-Normal": 35, "kr-SourceHanSansKR-Regular": 36, "kr-SourceHanSansSC-Bold": 37, "kr-SourceHanSansSC-ExtraLight": 38, "kr-SourceHanSansSC-Heavy": 39, "kr-SourceHanSansSC-Light": 40, "kr-SourceHanSansSC-Medium": 41, "kr-SourceHanSansSC-Normal": 42, "kr-SourceHanSansSC-Regular": 43, "kr-SourceHanSerifSC-Bold": 44, "kr-SourceHanSerifSC-SemiBold": 45, "kr-TDTDBubbleBubbleOTF": 46, "kr-TDTDConfusionOTF": 47, "kr-TDTDCuteAndCuteOTF": 48, "kr-TDTDEggTakOTF": 49, "kr-TDTDEmotionalLetterOTF": 50, "kr-TDTDGalapagosOTF": 51, "kr-TDTDHappyHourOTF": 52, "kr-TDTDLatteOTF": 53, "kr-TDTDMoonLightOTF": 54, "kr-TDTDParkForestOTF": 55, "kr-TDTDPencilOTF": 56, "kr-TDTDSmileOTF": 57, "kr-TDTDSproutOTF": 58, "kr-TDTDSunshineOTF": 59, "kr-TDTDWaferOTF": 60, "kr-777Chyaochyureu": 61, "kr-ArialUnicodeMS-Bold": 62, "kr-ArialUnicodeMS": 63, "kr-BMHANNA": 64, "kr-Baekmuk-Dotum": 65, "kr-BagelFatOne-Regular": 66, "kr-CoreBandi": 67, "kr-CoreBandiFace": 68, "kr-CoreBori": 69, "kr-DoHyeon-Regular": 70, "kr-Dokdo-Regular": 71, "kr-Gaegu-Bold": 72, "kr-Gaegu-Light": 73, "kr-Gaegu-Regular": 74, "kr-GamjaFlower-Regular": 75, "kr-GasoekOne-Regular": 76, "kr-GothicA1-Black": 77, "kr-GothicA1-Bold": 78, "kr-GothicA1-ExtraBold": 79, "kr-GothicA1-ExtraLight": 80, "kr-GothicA1-Light": 81, "kr-GothicA1-Medium": 82, "kr-GothicA1-Regular": 83, "kr-GothicA1-SemiBold": 84, "kr-GothicA1-Thin": 85, "kr-Gugi-Regular": 86, "kr-HiMelody-Regular": 87, "kr-Jua-Regular": 88, "kr-KirangHaerang-Regular": 89, "kr-NanumBrush": 90, "kr-NanumPen": 91, "kr-NanumSquareRoundB": 92, "kr-NanumSquareRoundEB": 93, "kr-NanumSquareRoundL": 94, "kr-NanumSquareRoundR": 95, "kr-SeH-CB": 96, "kr-SeH-CBL": 97, "kr-SeH-CEB": 98, "kr-SeH-CL": 99, "kr-SeH-CM": 100, "kr-SeN-CB": 101, "kr-SeN-CBL": 102, "kr-SeN-CEB": 103, "kr-SeN-CL": 104, "kr-SeN-CM": 105, "kr-Sunflower-Bold": 106, "kr-Sunflower-Light": 107, "kr-Sunflower-Medium": 108, "kr-TTClaytoyR": 109, "kr-TTDalpangiR": 110, "kr-TTMamablockR": 111, "kr-TTNauidongmuR": 112, "kr-TTOktapbangR": 113, "kr-UhBeeMiMi": 114, "kr-UhBeeMiMiBold": 115, "kr-UhBeeSe_hyun": 116, "kr-UhBeeSe_hyunBold": 117, "kr-UhBeenamsoyoung": 118, "kr-UhBeenamsoyoungBold": 119, "kr-WenQuanYiMicroHei": 120, "kr-YeonSung-Regular": 121}
|
assets/teaser/teaser_multilingual_1.webp
ADDED
|
assets/teaser/teaser_multilingual_2.webp
ADDED
|
assets/teaser/teaser_multilingual_3.webp
ADDED
|
assets/teaser/teaser_multilingual_4.webp
ADDED
|
checkpoints/byt5_mapper.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6d5911cf07328d949eff29cc08ca7637dc4fe5312a8fa351ca4bec07d357b1c5
|
| 3 |
+
size 301553807
|
checkpoints/byt5_model.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ca8c97c89136f767d4534449bbf3f25296d390574e0af1cc16f09774a901d6db
|
| 3 |
+
size 877308845
|
checkpoints/unet_inserted_attn.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5b6af4376281be262f3b52ca0b16b0244099161693f65a7db352f53878481767
|
| 3 |
+
size 908
|
checkpoints/unet_lora.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:47ae2328a9c4892a24c4a66f25780ab61a55cbd8eb693a1966cc99e674e832be
|
| 3 |
+
size 743590514
|
configs/glyph_sdxl_multilingual_albedo.py
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### Model Setting
|
| 2 |
+
pretrained_model_name_or_path = 'stablediffusionapi/albedobase-xl-20'
|
| 3 |
+
pretrained_vae_model_name_or_path = 'madebyollin/sdxl-vae-fp16-fix'
|
| 4 |
+
revision = None
|
| 5 |
+
|
| 6 |
+
byt5_max_length = 512
|
| 7 |
+
byt5_mapper_type = 'T5EncoderBlockByT5Mapper'
|
| 8 |
+
byt5_mapper_config = dict(
|
| 9 |
+
num_layers=4,
|
| 10 |
+
sdxl_channels=2048,
|
| 11 |
+
)
|
| 12 |
+
byt5_config = dict(
|
| 13 |
+
byt5_name='google/byt5-small',
|
| 14 |
+
special_token=True,
|
| 15 |
+
color_special_token=True,
|
| 16 |
+
font_special_token=True,
|
| 17 |
+
color_ann_path='assets/color_idx.json',
|
| 18 |
+
font_ann_path='assets/multilingual_10-lang_idx.json',
|
| 19 |
+
multilingual=True,
|
| 20 |
+
)
|
| 21 |
+
|
| 22 |
+
attn_block_to_modify = [
|
| 23 |
+
"down_blocks.1.attentions.0.transformer_blocks.0",
|
| 24 |
+
"down_blocks.1.attentions.0.transformer_blocks.1",
|
| 25 |
+
"down_blocks.1.attentions.1.transformer_blocks.0",
|
| 26 |
+
"down_blocks.1.attentions.1.transformer_blocks.1",
|
| 27 |
+
"down_blocks.2.attentions.0.transformer_blocks.0",
|
| 28 |
+
"down_blocks.2.attentions.0.transformer_blocks.1",
|
| 29 |
+
"down_blocks.2.attentions.0.transformer_blocks.2",
|
| 30 |
+
"down_blocks.2.attentions.0.transformer_blocks.3",
|
| 31 |
+
"down_blocks.2.attentions.0.transformer_blocks.4",
|
| 32 |
+
"down_blocks.2.attentions.0.transformer_blocks.5",
|
| 33 |
+
"down_blocks.2.attentions.0.transformer_blocks.6",
|
| 34 |
+
"down_blocks.2.attentions.0.transformer_blocks.7",
|
| 35 |
+
"down_blocks.2.attentions.0.transformer_blocks.8",
|
| 36 |
+
"down_blocks.2.attentions.0.transformer_blocks.9",
|
| 37 |
+
"down_blocks.2.attentions.1.transformer_blocks.0",
|
| 38 |
+
"down_blocks.2.attentions.1.transformer_blocks.1",
|
| 39 |
+
"down_blocks.2.attentions.1.transformer_blocks.2",
|
| 40 |
+
"down_blocks.2.attentions.1.transformer_blocks.3",
|
| 41 |
+
"down_blocks.2.attentions.1.transformer_blocks.4",
|
| 42 |
+
"down_blocks.2.attentions.1.transformer_blocks.5",
|
| 43 |
+
"down_blocks.2.attentions.1.transformer_blocks.6",
|
| 44 |
+
"down_blocks.2.attentions.1.transformer_blocks.7",
|
| 45 |
+
"down_blocks.2.attentions.1.transformer_blocks.8",
|
| 46 |
+
"down_blocks.2.attentions.1.transformer_blocks.9",
|
| 47 |
+
"up_blocks.0.attentions.0.transformer_blocks.0",
|
| 48 |
+
"up_blocks.0.attentions.0.transformer_blocks.1",
|
| 49 |
+
"up_blocks.0.attentions.0.transformer_blocks.2",
|
| 50 |
+
"up_blocks.0.attentions.0.transformer_blocks.3",
|
| 51 |
+
"up_blocks.0.attentions.0.transformer_blocks.4",
|
| 52 |
+
"up_blocks.0.attentions.0.transformer_blocks.5",
|
| 53 |
+
"up_blocks.0.attentions.0.transformer_blocks.6",
|
| 54 |
+
"up_blocks.0.attentions.0.transformer_blocks.7",
|
| 55 |
+
"up_blocks.0.attentions.0.transformer_blocks.8",
|
| 56 |
+
"up_blocks.0.attentions.0.transformer_blocks.9",
|
| 57 |
+
"up_blocks.0.attentions.1.transformer_blocks.0",
|
| 58 |
+
"up_blocks.0.attentions.1.transformer_blocks.1",
|
| 59 |
+
"up_blocks.0.attentions.1.transformer_blocks.2",
|
| 60 |
+
"up_blocks.0.attentions.1.transformer_blocks.3",
|
| 61 |
+
"up_blocks.0.attentions.1.transformer_blocks.4",
|
| 62 |
+
"up_blocks.0.attentions.1.transformer_blocks.5",
|
| 63 |
+
"up_blocks.0.attentions.1.transformer_blocks.6",
|
| 64 |
+
"up_blocks.0.attentions.1.transformer_blocks.7",
|
| 65 |
+
"up_blocks.0.attentions.1.transformer_blocks.8",
|
| 66 |
+
"up_blocks.0.attentions.1.transformer_blocks.9",
|
| 67 |
+
"up_blocks.0.attentions.2.transformer_blocks.0",
|
| 68 |
+
"up_blocks.0.attentions.2.transformer_blocks.1",
|
| 69 |
+
"up_blocks.0.attentions.2.transformer_blocks.2",
|
| 70 |
+
"up_blocks.0.attentions.2.transformer_blocks.3",
|
| 71 |
+
"up_blocks.0.attentions.2.transformer_blocks.4",
|
| 72 |
+
"up_blocks.0.attentions.2.transformer_blocks.5",
|
| 73 |
+
"up_blocks.0.attentions.2.transformer_blocks.6",
|
| 74 |
+
"up_blocks.0.attentions.2.transformer_blocks.7",
|
| 75 |
+
"up_blocks.0.attentions.2.transformer_blocks.8",
|
| 76 |
+
"up_blocks.0.attentions.2.transformer_blocks.9",
|
| 77 |
+
"up_blocks.1.attentions.0.transformer_blocks.0",
|
| 78 |
+
"up_blocks.1.attentions.0.transformer_blocks.1",
|
| 79 |
+
"up_blocks.1.attentions.1.transformer_blocks.0",
|
| 80 |
+
"up_blocks.1.attentions.1.transformer_blocks.1",
|
| 81 |
+
"up_blocks.1.attentions.2.transformer_blocks.0",
|
| 82 |
+
"up_blocks.1.attentions.2.transformer_blocks.1",
|
| 83 |
+
"mid_block.attentions.0.transformer_blocks.0",
|
| 84 |
+
"mid_block.attentions.0.transformer_blocks.1",
|
| 85 |
+
"mid_block.attentions.0.transformer_blocks.2",
|
| 86 |
+
"mid_block.attentions.0.transformer_blocks.3",
|
| 87 |
+
"mid_block.attentions.0.transformer_blocks.4",
|
| 88 |
+
"mid_block.attentions.0.transformer_blocks.5",
|
| 89 |
+
"mid_block.attentions.0.transformer_blocks.6",
|
| 90 |
+
"mid_block.attentions.0.transformer_blocks.7",
|
| 91 |
+
"mid_block.attentions.0.transformer_blocks.8",
|
| 92 |
+
"mid_block.attentions.0.transformer_blocks.9",
|
| 93 |
+
]
|
| 94 |
+
|
| 95 |
+
unet_lora_rank = 128
|
| 96 |
+
inference_dtype = 'fp16'
|
configuration.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"framework": "pytorch", "task": "text-image", "allow_remote": true}
|
examples/xiaoman.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"texts": [
|
| 3 |
+
"小满是二十四节气之一,夏季的第二个节气。该节气是指夏熟作物的籽粒开始灌浆饱满,但还未成熟,只是小满,还未大满。",
|
| 4 |
+
"2022.5.21",
|
| 5 |
+
"饱满的灵魂 无畏的生长 二十四节气之一",
|
| 6 |
+
"今日小满",
|
| 7 |
+
"Grain Buds"
|
| 8 |
+
],
|
| 9 |
+
"styles": [
|
| 10 |
+
{
|
| 11 |
+
"color": "#427227",
|
| 12 |
+
"font-family": "cn-HYQiHei-AZEJ"
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"font-family": "en-TAN MERINGUE",
|
| 16 |
+
"color": "#f89b2b"
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"color": "#ffffff",
|
| 20 |
+
"font-family": "cn-SourceHanSansSC-ExtraLight"
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"color": "#427227",
|
| 24 |
+
"font-family": "cn-AlibabaPuHuiTi-Bold"
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"color": "#427227",
|
| 28 |
+
"font-family": "en-SairaCondensed-Regular"
|
| 29 |
+
}
|
| 30 |
+
],
|
| 31 |
+
"bbox": [
|
| 32 |
+
[
|
| 33 |
+
0.09969604863221884,
|
| 34 |
+
0.4370820668693009,
|
| 35 |
+
0.31124620060790276,
|
| 36 |
+
0.2072948328267477
|
| 37 |
+
],
|
| 38 |
+
[
|
| 39 |
+
0.10455927051671733,
|
| 40 |
+
0.09908814589665653,
|
| 41 |
+
0.22127659574468084,
|
| 42 |
+
0.034650455927051675
|
| 43 |
+
],
|
| 44 |
+
[
|
| 45 |
+
0.09969604863221884,
|
| 46 |
+
0.9398176291793313,
|
| 47 |
+
0.7993920972644377,
|
| 48 |
+
0.026747720364741642
|
| 49 |
+
],
|
| 50 |
+
[
|
| 51 |
+
0.09787234042553192,
|
| 52 |
+
0.17142857142857143,
|
| 53 |
+
0.4231003039513678,
|
| 54 |
+
0.10577507598784194
|
| 55 |
+
],
|
| 56 |
+
[
|
| 57 |
+
0.10091185410334347,
|
| 58 |
+
0.3100303951367781,
|
| 59 |
+
0.2772036474164134,
|
| 60 |
+
0.053495440729483285
|
| 61 |
+
]
|
| 62 |
+
],
|
| 63 |
+
"bg_prompt": "The image portrays a young girl sitting on a large green leaf. The leaf is part of a plant with other green leaves. The girl is wearing a yellow dress and a straw hat. She is holding a small yellow flower in her hand. The background of the image is a light blue sky with a few clouds. The overall style of the image is a colorful, cartoon-like illustration.",
|
| 64 |
+
"seed": 0
|
| 65 |
+
}
|
glyph_sdxl/custom_diffusers/__init__.py
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .pipelines import *
|
| 2 |
+
from .models import *
|
glyph_sdxl/custom_diffusers/models/__init__.py
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .cross_attn_insert_transformer_blocks import CrossAttnInsertBasicTransformerBlock
|
| 2 |
+
|
| 3 |
+
__all__ = ['CrossAttnInsertBasicTransformerBlock']
|
glyph_sdxl/custom_diffusers/models/cross_attn_insert_transformer_blocks.py
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Dict, Any
|
| 2 |
+
import copy
|
| 3 |
+
|
| 4 |
+
import torch
|
| 5 |
+
import torch.nn as nn
|
| 6 |
+
|
| 7 |
+
from diffusers.models.attention import (
|
| 8 |
+
BasicTransformerBlock,
|
| 9 |
+
SinusoidalPositionalEmbedding,
|
| 10 |
+
AdaLayerNorm,
|
| 11 |
+
AdaLayerNormZero,
|
| 12 |
+
AdaLayerNormContinuous,
|
| 13 |
+
Attention,
|
| 14 |
+
FeedForward,
|
| 15 |
+
GatedSelfAttentionDense,
|
| 16 |
+
GELU,
|
| 17 |
+
GEGLU,
|
| 18 |
+
ApproximateGELU,
|
| 19 |
+
_chunked_feed_forward,
|
| 20 |
+
)
|
| 21 |
+
|
| 22 |
+
class CrossAttnInsertBasicTransformerBlock(BasicTransformerBlock):
|
| 23 |
+
def __init__(
|
| 24 |
+
self,
|
| 25 |
+
dim: int,
|
| 26 |
+
num_attention_heads: int,
|
| 27 |
+
attention_head_dim: int,
|
| 28 |
+
dropout=0.0,
|
| 29 |
+
cross_attention_dim: Optional[int] = None,
|
| 30 |
+
glyph_cross_attention_dim: Optional[int] = None,
|
| 31 |
+
activation_fn: str = "geglu",
|
| 32 |
+
num_embeds_ada_norm: Optional[int] = None,
|
| 33 |
+
attention_bias: bool = False,
|
| 34 |
+
only_cross_attention: bool = False,
|
| 35 |
+
double_self_attention: bool = False,
|
| 36 |
+
upcast_attention: bool = False,
|
| 37 |
+
norm_elementwise_affine: bool = True,
|
| 38 |
+
norm_type: str = "layer_norm", # 'layer_norm', 'ada_norm', 'ada_norm_zero', 'ada_norm_single', 'layer_norm_i2vgen'
|
| 39 |
+
norm_eps: float = 1e-5,
|
| 40 |
+
final_dropout: bool = False,
|
| 41 |
+
attention_type: str = "default",
|
| 42 |
+
positional_embeddings: Optional[str] = None,
|
| 43 |
+
num_positional_embeddings: Optional[int] = None,
|
| 44 |
+
ada_norm_continous_conditioning_embedding_dim: Optional[int] = None,
|
| 45 |
+
ada_norm_bias: Optional[int] = None,
|
| 46 |
+
ff_inner_dim: Optional[int] = None,
|
| 47 |
+
ff_bias: bool = True,
|
| 48 |
+
attention_out_bias: bool = True,
|
| 49 |
+
):
|
| 50 |
+
super(BasicTransformerBlock, self).__init__()
|
| 51 |
+
self.only_cross_attention = only_cross_attention
|
| 52 |
+
|
| 53 |
+
if norm_type in ("ada_norm", "ada_norm_zero") and num_embeds_ada_norm is None:
|
| 54 |
+
raise ValueError(
|
| 55 |
+
f"`norm_type` is set to {norm_type}, but `num_embeds_ada_norm` is not defined. Please make sure to"
|
| 56 |
+
f" define `num_embeds_ada_norm` if setting `norm_type` to {norm_type}."
|
| 57 |
+
)
|
| 58 |
+
|
| 59 |
+
self.norm_type = norm_type
|
| 60 |
+
self.num_embeds_ada_norm = num_embeds_ada_norm
|
| 61 |
+
|
| 62 |
+
if positional_embeddings and (num_positional_embeddings is None):
|
| 63 |
+
raise ValueError(
|
| 64 |
+
"If `positional_embedding` type is defined, `num_positition_embeddings` must also be defined."
|
| 65 |
+
)
|
| 66 |
+
|
| 67 |
+
if positional_embeddings == "sinusoidal":
|
| 68 |
+
self.pos_embed = SinusoidalPositionalEmbedding(dim, max_seq_length=num_positional_embeddings)
|
| 69 |
+
else:
|
| 70 |
+
self.pos_embed = None
|
| 71 |
+
|
| 72 |
+
# Define 3 blocks. Each block has its own normalization layer.
|
| 73 |
+
# 1. Self-Attn
|
| 74 |
+
if norm_type == "ada_norm":
|
| 75 |
+
self.norm1 = AdaLayerNorm(dim, num_embeds_ada_norm)
|
| 76 |
+
elif norm_type == "ada_norm_zero":
|
| 77 |
+
self.norm1 = AdaLayerNormZero(dim, num_embeds_ada_norm)
|
| 78 |
+
elif norm_type == "ada_norm_continuous":
|
| 79 |
+
self.norm1 = AdaLayerNormContinuous(
|
| 80 |
+
dim,
|
| 81 |
+
ada_norm_continous_conditioning_embedding_dim,
|
| 82 |
+
norm_elementwise_affine,
|
| 83 |
+
norm_eps,
|
| 84 |
+
ada_norm_bias,
|
| 85 |
+
"rms_norm",
|
| 86 |
+
)
|
| 87 |
+
else:
|
| 88 |
+
self.norm1 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine, eps=norm_eps)
|
| 89 |
+
|
| 90 |
+
self.attn1 = Attention(
|
| 91 |
+
query_dim=dim,
|
| 92 |
+
heads=num_attention_heads,
|
| 93 |
+
dim_head=attention_head_dim,
|
| 94 |
+
dropout=dropout,
|
| 95 |
+
bias=attention_bias,
|
| 96 |
+
cross_attention_dim=cross_attention_dim if only_cross_attention else None,
|
| 97 |
+
upcast_attention=upcast_attention,
|
| 98 |
+
out_bias=attention_out_bias,
|
| 99 |
+
)
|
| 100 |
+
|
| 101 |
+
# 2. Cross-Attn
|
| 102 |
+
if cross_attention_dim is not None or double_self_attention:
|
| 103 |
+
# We currently only use AdaLayerNormZero for self attention where there will only be one attention block.
|
| 104 |
+
# I.e. the number of returned modulation chunks from AdaLayerZero would not make sense if returned during
|
| 105 |
+
# the second cross attention block.
|
| 106 |
+
if norm_type == "ada_norm":
|
| 107 |
+
self.norm2 = AdaLayerNorm(dim, num_embeds_ada_norm)
|
| 108 |
+
elif norm_type == "ada_norm_continuous":
|
| 109 |
+
self.norm2 = AdaLayerNormContinuous(
|
| 110 |
+
dim,
|
| 111 |
+
ada_norm_continous_conditioning_embedding_dim,
|
| 112 |
+
norm_elementwise_affine,
|
| 113 |
+
norm_eps,
|
| 114 |
+
ada_norm_bias,
|
| 115 |
+
"rms_norm",
|
| 116 |
+
)
|
| 117 |
+
else:
|
| 118 |
+
self.norm2 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine)
|
| 119 |
+
|
| 120 |
+
self.attn2 = Attention(
|
| 121 |
+
query_dim=dim,
|
| 122 |
+
cross_attention_dim=cross_attention_dim if not double_self_attention else None,
|
| 123 |
+
heads=num_attention_heads,
|
| 124 |
+
dim_head=attention_head_dim,
|
| 125 |
+
dropout=dropout,
|
| 126 |
+
bias=attention_bias,
|
| 127 |
+
upcast_attention=upcast_attention,
|
| 128 |
+
out_bias=attention_out_bias,
|
| 129 |
+
) # is self-attn if encoder_hidden_states is none
|
| 130 |
+
else:
|
| 131 |
+
self.norm2 = None
|
| 132 |
+
self.attn2 = None
|
| 133 |
+
|
| 134 |
+
# 3. Feed-forward
|
| 135 |
+
if norm_type == "ada_norm_continuous":
|
| 136 |
+
self.norm3 = AdaLayerNormContinuous(
|
| 137 |
+
dim,
|
| 138 |
+
ada_norm_continous_conditioning_embedding_dim,
|
| 139 |
+
norm_elementwise_affine,
|
| 140 |
+
norm_eps,
|
| 141 |
+
ada_norm_bias,
|
| 142 |
+
"layer_norm",
|
| 143 |
+
)
|
| 144 |
+
|
| 145 |
+
elif norm_type in ["ada_norm_zero", "ada_norm", "layer_norm", "ada_norm_continuous"]:
|
| 146 |
+
self.norm3 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine)
|
| 147 |
+
elif norm_type == "layer_norm_i2vgen":
|
| 148 |
+
self.norm3 = None
|
| 149 |
+
|
| 150 |
+
self.ff = FeedForward(
|
| 151 |
+
dim,
|
| 152 |
+
dropout=dropout,
|
| 153 |
+
activation_fn=activation_fn,
|
| 154 |
+
final_dropout=final_dropout,
|
| 155 |
+
inner_dim=ff_inner_dim,
|
| 156 |
+
bias=ff_bias,
|
| 157 |
+
)
|
| 158 |
+
|
| 159 |
+
# 4. Fuser
|
| 160 |
+
if attention_type == "gated" or attention_type == "gated-text-image":
|
| 161 |
+
self.fuser = GatedSelfAttentionDense(dim, cross_attention_dim, num_attention_heads, attention_head_dim)
|
| 162 |
+
|
| 163 |
+
# 5. Scale-shift for PixArt-Alpha.
|
| 164 |
+
if norm_type == "ada_norm_single":
|
| 165 |
+
self.scale_shift_table = nn.Parameter(torch.randn(6, dim) / dim**0.5)
|
| 166 |
+
|
| 167 |
+
# let chunk size default to None
|
| 168 |
+
self._chunk_size = None
|
| 169 |
+
self._chunk_dim = 0
|
| 170 |
+
|
| 171 |
+
def get_inserted_modules(self):
|
| 172 |
+
return ()
|
| 173 |
+
|
| 174 |
+
def get_inserted_modules_names(self):
|
| 175 |
+
return ()
|
| 176 |
+
|
| 177 |
+
def get_origin_modules(self):
|
| 178 |
+
inserted_modules = self.get_inserted_modules()
|
| 179 |
+
origin_modules = []
|
| 180 |
+
for module in self.children():
|
| 181 |
+
if module not in inserted_modules:
|
| 182 |
+
origin_modules.append(module)
|
| 183 |
+
return tuple(origin_modules)
|
| 184 |
+
|
| 185 |
+
|
| 186 |
+
@classmethod
|
| 187 |
+
def from_transformer_block(
|
| 188 |
+
cls,
|
| 189 |
+
transformer_block,
|
| 190 |
+
glyph_cross_attention_dim,
|
| 191 |
+
):
|
| 192 |
+
inner_dim = transformer_block.attn1.query_dim
|
| 193 |
+
num_attention_heads = transformer_block.attn1.heads
|
| 194 |
+
attention_head_dim = transformer_block.attn1.inner_dim // num_attention_heads
|
| 195 |
+
dropout = transformer_block.attn1.dropout
|
| 196 |
+
cross_attention_dim = transformer_block.attn2.cross_attention_dim
|
| 197 |
+
if isinstance(transformer_block.ff.net[0], GELU):
|
| 198 |
+
if transformer_block.ff.net[0].approximate == "tanh":
|
| 199 |
+
activation_fn = "gelu-approximate"
|
| 200 |
+
else:
|
| 201 |
+
activation_fn = "gelu"
|
| 202 |
+
elif isinstance(transformer_block.ff.net[0], GEGLU):
|
| 203 |
+
activation_fn = "geglu"
|
| 204 |
+
elif isinstance(transformer_block.ff.net[0], ApproximateGELU):
|
| 205 |
+
activation_fn = "geglu-approximate"
|
| 206 |
+
num_embeds_ada_norm = transformer_block.num_embeds_ada_norm
|
| 207 |
+
attention_bias = transformer_block.attn1.to_q.bias is not None
|
| 208 |
+
only_cross_attention = transformer_block.only_cross_attention
|
| 209 |
+
double_self_attention = transformer_block.attn2.cross_attention_dim is None
|
| 210 |
+
upcast_attention = transformer_block.attn1.upcast_attention
|
| 211 |
+
norm_type = transformer_block.norm_type
|
| 212 |
+
assert isinstance(transformer_block.norm1, nn.LayerNorm)
|
| 213 |
+
norm_elementwise_affine = transformer_block.norm1.elementwise_affine
|
| 214 |
+
norm_eps = transformer_block.norm1.eps
|
| 215 |
+
assert getattr(transformer_block, 'fuser', None) is None
|
| 216 |
+
attention_type = "default"
|
| 217 |
+
model = cls(
|
| 218 |
+
inner_dim,
|
| 219 |
+
num_attention_heads,
|
| 220 |
+
attention_head_dim,
|
| 221 |
+
dropout=dropout,
|
| 222 |
+
cross_attention_dim=cross_attention_dim,
|
| 223 |
+
glyph_cross_attention_dim=glyph_cross_attention_dim,
|
| 224 |
+
activation_fn=activation_fn,
|
| 225 |
+
num_embeds_ada_norm=num_embeds_ada_norm,
|
| 226 |
+
attention_bias=attention_bias,
|
| 227 |
+
only_cross_attention=only_cross_attention,
|
| 228 |
+
double_self_attention=double_self_attention,
|
| 229 |
+
upcast_attention=upcast_attention,
|
| 230 |
+
norm_type=norm_type,
|
| 231 |
+
norm_elementwise_affine=norm_elementwise_affine,
|
| 232 |
+
norm_eps=norm_eps,
|
| 233 |
+
attention_type=attention_type,
|
| 234 |
+
)
|
| 235 |
+
missing_keys, unexpected_keys = model.load_state_dict(
|
| 236 |
+
transformer_block.state_dict(),
|
| 237 |
+
strict=False,
|
| 238 |
+
)
|
| 239 |
+
assert len(unexpected_keys) == 0
|
| 240 |
+
assert all(i.startswith('glyph') for i in missing_keys)
|
| 241 |
+
|
| 242 |
+
return model
|
| 243 |
+
|
| 244 |
+
def forward(
|
| 245 |
+
self,
|
| 246 |
+
hidden_states: torch.FloatTensor,
|
| 247 |
+
attention_mask: Optional[torch.FloatTensor] = None,
|
| 248 |
+
encoder_hidden_states: Optional[torch.FloatTensor] = None,
|
| 249 |
+
encoder_attention_mask: Optional[torch.FloatTensor] = None,
|
| 250 |
+
timestep: Optional[torch.LongTensor] = None,
|
| 251 |
+
cross_attention_kwargs: Dict[str, Any] = None,
|
| 252 |
+
class_labels: Optional[torch.LongTensor] = None,
|
| 253 |
+
added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None,
|
| 254 |
+
) -> torch.FloatTensor:
|
| 255 |
+
# Notice that normalization is always applied before the real computation in the following blocks.
|
| 256 |
+
# 0. Self-Attention
|
| 257 |
+
batch_size = hidden_states.shape[0]
|
| 258 |
+
|
| 259 |
+
if self.norm_type == "ada_norm":
|
| 260 |
+
norm_hidden_states = self.norm1(hidden_states, timestep)
|
| 261 |
+
elif self.norm_type == "ada_norm_zero":
|
| 262 |
+
norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.norm1(
|
| 263 |
+
hidden_states, timestep, class_labels, hidden_dtype=hidden_states.dtype
|
| 264 |
+
)
|
| 265 |
+
elif self.norm_type in ["layer_norm", "layer_norm_i2vgen"]:
|
| 266 |
+
norm_hidden_states = self.norm1(hidden_states)
|
| 267 |
+
elif self.norm_type == "ada_norm_continuous":
|
| 268 |
+
norm_hidden_states = self.norm1(hidden_states, added_cond_kwargs["pooled_text_emb"])
|
| 269 |
+
elif self.norm_type == "ada_norm_single":
|
| 270 |
+
shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = (
|
| 271 |
+
self.scale_shift_table[None] + timestep.reshape(batch_size, 6, -1)
|
| 272 |
+
).chunk(6, dim=1)
|
| 273 |
+
norm_hidden_states = self.norm1(hidden_states)
|
| 274 |
+
norm_hidden_states = norm_hidden_states * (1 + scale_msa) + shift_msa
|
| 275 |
+
norm_hidden_states = norm_hidden_states.squeeze(1)
|
| 276 |
+
else:
|
| 277 |
+
raise ValueError("Incorrect norm used")
|
| 278 |
+
|
| 279 |
+
if self.pos_embed is not None:
|
| 280 |
+
norm_hidden_states = self.pos_embed(norm_hidden_states)
|
| 281 |
+
|
| 282 |
+
# 1. Retrieve lora scale.
|
| 283 |
+
lora_scale = cross_attention_kwargs.get("scale", 1.0) if cross_attention_kwargs is not None else 1.0
|
| 284 |
+
|
| 285 |
+
# 2. Prepare GLIGEN inputs
|
| 286 |
+
cross_attention_kwargs = cross_attention_kwargs.copy() if cross_attention_kwargs is not None else {}
|
| 287 |
+
gligen_kwargs = cross_attention_kwargs.pop("gligen", None)
|
| 288 |
+
|
| 289 |
+
glyph_encoder_hidden_states = cross_attention_kwargs.pop("glyph_encoder_hidden_states", None)
|
| 290 |
+
# a dict. visual_feat_len: tensor(b, visual_feat_len,text—_feat_len)
|
| 291 |
+
glyph_attn_mask = cross_attention_kwargs.pop("glyph_attn_masks_dict", None)
|
| 292 |
+
bg_attn_mask = cross_attention_kwargs.pop("bg_attn_masks_dict", None)
|
| 293 |
+
if glyph_attn_mask is not None:
|
| 294 |
+
glyph_attn_mask = glyph_attn_mask[hidden_states.shape[1]]
|
| 295 |
+
if bg_attn_mask is not None:
|
| 296 |
+
bg_attn_mask = bg_attn_mask[hidden_states.shape[1]]
|
| 297 |
+
assert encoder_attention_mask is None, "encoder_attention_mask is not supported in this block."
|
| 298 |
+
|
| 299 |
+
attn_output = self.attn1(
|
| 300 |
+
norm_hidden_states,
|
| 301 |
+
encoder_hidden_states=encoder_hidden_states if self.only_cross_attention else None,
|
| 302 |
+
attention_mask=attention_mask,
|
| 303 |
+
**cross_attention_kwargs,
|
| 304 |
+
)
|
| 305 |
+
if self.norm_type == "ada_norm_zero":
|
| 306 |
+
attn_output = gate_msa.unsqueeze(1) * attn_output
|
| 307 |
+
elif self.norm_type == "ada_norm_single":
|
| 308 |
+
attn_output = gate_msa * attn_output
|
| 309 |
+
|
| 310 |
+
hidden_states = attn_output + hidden_states
|
| 311 |
+
if hidden_states.ndim == 4:
|
| 312 |
+
hidden_states = hidden_states.squeeze(1)
|
| 313 |
+
|
| 314 |
+
# 2.5 GLIGEN Control
|
| 315 |
+
if gligen_kwargs is not None:
|
| 316 |
+
hidden_states = self.fuser(hidden_states, gligen_kwargs["objs"])
|
| 317 |
+
|
| 318 |
+
# 3. Cross-Attention
|
| 319 |
+
if self.attn2 is not None:
|
| 320 |
+
if self.norm_type == "ada_norm":
|
| 321 |
+
norm_hidden_states = self.norm2(hidden_states, timestep)
|
| 322 |
+
elif self.norm_type in ["ada_norm_zero", "layer_norm", "layer_norm_i2vgen"]:
|
| 323 |
+
norm_hidden_states = self.norm2(hidden_states)
|
| 324 |
+
elif self.norm_type == "ada_norm_single":
|
| 325 |
+
# For PixArt norm2 isn't applied here:
|
| 326 |
+
# https://github.com/PixArt-alpha/PixArt-alpha/blob/0f55e922376d8b797edd44d25d0e7464b260dcab/diffusion/model/nets/PixArtMS.py#L70C1-L76C103
|
| 327 |
+
norm_hidden_states = hidden_states
|
| 328 |
+
elif self.norm_type == "ada_norm_continuous":
|
| 329 |
+
norm_hidden_states = self.norm2(hidden_states, added_cond_kwargs["pooled_text_emb"])
|
| 330 |
+
else:
|
| 331 |
+
raise ValueError("Incorrect norm")
|
| 332 |
+
|
| 333 |
+
if self.pos_embed is not None and self.norm_type != "ada_norm_single":
|
| 334 |
+
norm_hidden_states = self.pos_embed(norm_hidden_states)
|
| 335 |
+
|
| 336 |
+
attn_output = self.attn2(
|
| 337 |
+
norm_hidden_states,
|
| 338 |
+
encoder_hidden_states=torch.cat([encoder_hidden_states, glyph_encoder_hidden_states], dim=1),
|
| 339 |
+
attention_mask=torch.cat([bg_attn_mask, glyph_attn_mask], dim=-1),
|
| 340 |
+
**cross_attention_kwargs,
|
| 341 |
+
)
|
| 342 |
+
|
| 343 |
+
hidden_states = attn_output + hidden_states
|
| 344 |
+
|
| 345 |
+
# 4. Feed-forward
|
| 346 |
+
# i2vgen doesn't have this norm 🤷♂️
|
| 347 |
+
if self.norm_type == "ada_norm_continuous":
|
| 348 |
+
norm_hidden_states = self.norm3(hidden_states, added_cond_kwargs["pooled_text_emb"])
|
| 349 |
+
elif not self.norm_type == "ada_norm_single":
|
| 350 |
+
norm_hidden_states = self.norm3(hidden_states)
|
| 351 |
+
|
| 352 |
+
if self.norm_type == "ada_norm_zero":
|
| 353 |
+
norm_hidden_states = norm_hidden_states * (1 + scale_mlp[:, None]) + shift_mlp[:, None]
|
| 354 |
+
|
| 355 |
+
if self.norm_type == "ada_norm_single":
|
| 356 |
+
norm_hidden_states = self.norm2(hidden_states)
|
| 357 |
+
norm_hidden_states = norm_hidden_states * (1 + scale_mlp) + shift_mlp
|
| 358 |
+
|
| 359 |
+
if self._chunk_size is not None:
|
| 360 |
+
# "feed_forward_chunk_size" can be used to save memory
|
| 361 |
+
ff_output = _chunked_feed_forward(
|
| 362 |
+
self.ff, norm_hidden_states, self._chunk_dim, self._chunk_size, lora_scale=lora_scale
|
| 363 |
+
)
|
| 364 |
+
else:
|
| 365 |
+
ff_output = self.ff(norm_hidden_states, scale=lora_scale)
|
| 366 |
+
|
| 367 |
+
if self.norm_type == "ada_norm_zero":
|
| 368 |
+
ff_output = gate_mlp.unsqueeze(1) * ff_output
|
| 369 |
+
elif self.norm_type == "ada_norm_single":
|
| 370 |
+
ff_output = gate_mlp * ff_output
|
| 371 |
+
|
| 372 |
+
hidden_states = ff_output + hidden_states
|
| 373 |
+
if hidden_states.ndim == 4:
|
| 374 |
+
hidden_states = hidden_states.squeeze(1)
|
| 375 |
+
|
| 376 |
+
return hidden_states
|
| 377 |
+
|
glyph_sdxl/custom_diffusers/pipelines/__init__.py
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .pipeline_stable_diffusion_glyph_xl import StableDiffusionGlyphXLPipeline
|
| 2 |
+
|
| 3 |
+
__all__ = [
|
| 4 |
+
'StableDiffusionGlyphXLPipeline',
|
| 5 |
+
]
|
glyph_sdxl/custom_diffusers/pipelines/pipeline_stable_diffusion_glyph_xl.py
ADDED
|
@@ -0,0 +1,922 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
from typing import Optional, List, Union, Dict, Tuple, Callable, Any
|
| 3 |
+
import torch
|
| 4 |
+
|
| 5 |
+
from transformers import T5EncoderModel, T5Tokenizer
|
| 6 |
+
import torch.nn.functional as F
|
| 7 |
+
|
| 8 |
+
from diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl import (
|
| 9 |
+
StableDiffusionXLPipeline,
|
| 10 |
+
AutoencoderKL,
|
| 11 |
+
CLIPTextModel,
|
| 12 |
+
CLIPTextModelWithProjection,
|
| 13 |
+
CLIPTokenizer,
|
| 14 |
+
UNet2DConditionModel,
|
| 15 |
+
KarrasDiffusionSchedulers,
|
| 16 |
+
CLIPVisionModelWithProjection,
|
| 17 |
+
CLIPImageProcessor,
|
| 18 |
+
VaeImageProcessor,
|
| 19 |
+
is_invisible_watermark_available,
|
| 20 |
+
StableDiffusionXLLoraLoaderMixin,
|
| 21 |
+
PipelineImageInput,
|
| 22 |
+
adjust_lora_scale_text_encoder,
|
| 23 |
+
scale_lora_layers,
|
| 24 |
+
unscale_lora_layers,
|
| 25 |
+
USE_PEFT_BACKEND,
|
| 26 |
+
StableDiffusionXLPipelineOutput,
|
| 27 |
+
ImageProjection,
|
| 28 |
+
logging,
|
| 29 |
+
rescale_noise_cfg,
|
| 30 |
+
retrieve_timesteps,
|
| 31 |
+
deprecate,
|
| 32 |
+
)
|
| 33 |
+
import numpy as np
|
| 34 |
+
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
| 35 |
+
|
| 36 |
+
from diffusers.pipelines.stable_diffusion_xl.watermark import StableDiffusionXLWatermarker
|
| 37 |
+
|
| 38 |
+
class StableDiffusionGlyphXLPipeline(StableDiffusionXLPipeline):
|
| 39 |
+
model_cpu_offload_seq = "text_encoder->text_encoder_2->byt5_text_encoder->image_encoder->unet->byt5_mapper->vae"
|
| 40 |
+
_optional_components = [
|
| 41 |
+
"tokenizer",
|
| 42 |
+
"tokenizer_2",
|
| 43 |
+
"byt5_tokenizer",
|
| 44 |
+
"text_encoder",
|
| 45 |
+
"text_encoder_2",
|
| 46 |
+
"byt5_text_encoder",
|
| 47 |
+
"byt5_mapper",
|
| 48 |
+
"image_encoder",
|
| 49 |
+
"feature_extractor",
|
| 50 |
+
]
|
| 51 |
+
_callback_tensor_inputs = [
|
| 52 |
+
"latents",
|
| 53 |
+
"prompt_embeds",
|
| 54 |
+
"negative_prompt_embeds",
|
| 55 |
+
"add_text_embeds",
|
| 56 |
+
"add_time_ids",
|
| 57 |
+
"negative_pooled_prompt_embeds",
|
| 58 |
+
"negative_add_time_ids",
|
| 59 |
+
]
|
| 60 |
+
def __init__(
|
| 61 |
+
self,
|
| 62 |
+
vae: AutoencoderKL,
|
| 63 |
+
text_encoder: CLIPTextModel,
|
| 64 |
+
text_encoder_2: CLIPTextModelWithProjection,
|
| 65 |
+
byt5_text_encoder: T5EncoderModel,
|
| 66 |
+
tokenizer: CLIPTokenizer,
|
| 67 |
+
tokenizer_2: CLIPTokenizer,
|
| 68 |
+
byt5_tokenizer: T5Tokenizer,
|
| 69 |
+
byt5_mapper,
|
| 70 |
+
unet: UNet2DConditionModel,
|
| 71 |
+
scheduler: KarrasDiffusionSchedulers,
|
| 72 |
+
byt5_max_length: int = 512,
|
| 73 |
+
image_encoder: CLIPVisionModelWithProjection = None,
|
| 74 |
+
feature_extractor: CLIPImageProcessor = None,
|
| 75 |
+
force_zeros_for_empty_prompt: bool = True,
|
| 76 |
+
add_watermarker: Optional[bool] = None,
|
| 77 |
+
):
|
| 78 |
+
super(StableDiffusionXLPipeline, self).__init__()
|
| 79 |
+
|
| 80 |
+
self.register_modules(
|
| 81 |
+
vae=vae,
|
| 82 |
+
text_encoder=text_encoder,
|
| 83 |
+
text_encoder_2=text_encoder_2,
|
| 84 |
+
byt5_text_encoder=byt5_text_encoder,
|
| 85 |
+
tokenizer=tokenizer,
|
| 86 |
+
tokenizer_2=tokenizer_2,
|
| 87 |
+
byt5_tokenizer=byt5_tokenizer,
|
| 88 |
+
byt5_mapper=byt5_mapper,
|
| 89 |
+
unet=unet,
|
| 90 |
+
scheduler=scheduler,
|
| 91 |
+
image_encoder=image_encoder,
|
| 92 |
+
feature_extractor=feature_extractor,
|
| 93 |
+
)
|
| 94 |
+
self.register_to_config(force_zeros_for_empty_prompt=force_zeros_for_empty_prompt)
|
| 95 |
+
self.register_to_config(byt5_max_length=byt5_max_length)
|
| 96 |
+
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
|
| 97 |
+
self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor)
|
| 98 |
+
self.byt5_max_length = byt5_max_length
|
| 99 |
+
|
| 100 |
+
self.default_sample_size = self.unet.config.sample_size
|
| 101 |
+
|
| 102 |
+
add_watermarker = add_watermarker if add_watermarker is not None else is_invisible_watermark_available()
|
| 103 |
+
|
| 104 |
+
if add_watermarker:
|
| 105 |
+
self.watermark = StableDiffusionXLWatermarker()
|
| 106 |
+
else:
|
| 107 |
+
self.watermark = None
|
| 108 |
+
|
| 109 |
+
def encode_prompt(
|
| 110 |
+
self,
|
| 111 |
+
prompt: str,
|
| 112 |
+
prompt_2: Optional[str] = None,
|
| 113 |
+
text_prompt = None,
|
| 114 |
+
device: Optional[torch.device] = None,
|
| 115 |
+
num_images_per_prompt: int = 1,
|
| 116 |
+
do_classifier_free_guidance: bool = True,
|
| 117 |
+
negative_prompt: Optional[str] = None,
|
| 118 |
+
negative_prompt_2: Optional[str] = None,
|
| 119 |
+
prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 120 |
+
negative_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 121 |
+
pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 122 |
+
negative_pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 123 |
+
lora_scale: Optional[float] = None,
|
| 124 |
+
clip_skip: Optional[int] = None,
|
| 125 |
+
text_attn_mask: Optional[torch.LongTensor] = None,
|
| 126 |
+
byt5_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 127 |
+
):
|
| 128 |
+
r"""
|
| 129 |
+
Encodes the prompt into text encoder hidden states.
|
| 130 |
+
|
| 131 |
+
Args:
|
| 132 |
+
prompt (`str` or `List[str]`, *optional*):
|
| 133 |
+
prompt to be encoded
|
| 134 |
+
prompt_2 (`str` or `List[str]`, *optional*):
|
| 135 |
+
The prompt or prompts to be sent to the `tokenizer_2` and `text_encoder_2`. If not defined, `prompt` is
|
| 136 |
+
used in both text-encoders
|
| 137 |
+
device: (`torch.device`):
|
| 138 |
+
torch device
|
| 139 |
+
num_images_per_prompt (`int`):
|
| 140 |
+
number of images that should be generated per prompt
|
| 141 |
+
do_classifier_free_guidance (`bool`):
|
| 142 |
+
whether to use classifier free guidance or not
|
| 143 |
+
negative_prompt (`str` or `List[str]`, *optional*):
|
| 144 |
+
The prompt or prompts not to guide the image generation. If not defined, one has to pass
|
| 145 |
+
`negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
|
| 146 |
+
less than `1`).
|
| 147 |
+
negative_prompt_2 (`str` or `List[str]`, *optional*):
|
| 148 |
+
The prompt or prompts not to guide the image generation to be sent to `tokenizer_2` and
|
| 149 |
+
`text_encoder_2`. If not defined, `negative_prompt` is used in both text-encoders
|
| 150 |
+
prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 151 |
+
Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
|
| 152 |
+
provided, text embeddings will be generated from `prompt` input argument.
|
| 153 |
+
negative_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 154 |
+
Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 155 |
+
weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
|
| 156 |
+
argument.
|
| 157 |
+
pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 158 |
+
Pre-generated pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting.
|
| 159 |
+
If not provided, pooled text embeddings will be generated from `prompt` input argument.
|
| 160 |
+
negative_pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 161 |
+
Pre-generated negative pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 162 |
+
weighting. If not provided, pooled negative_prompt_embeds will be generated from `negative_prompt`
|
| 163 |
+
input argument.
|
| 164 |
+
lora_scale (`float`, *optional*):
|
| 165 |
+
A lora scale that will be applied to all LoRA layers of the text encoder if LoRA layers are loaded.
|
| 166 |
+
clip_skip (`int`, *optional*):
|
| 167 |
+
Number of layers to be skipped from CLIP while computing the prompt embeddings. A value of 1 means that
|
| 168 |
+
the output of the pre-final layer will be used for computing the prompt embeddings.
|
| 169 |
+
"""
|
| 170 |
+
device = device or self._execution_device
|
| 171 |
+
|
| 172 |
+
# set lora scale so that monkey patched LoRA
|
| 173 |
+
# function of text encoder can correctly access it
|
| 174 |
+
if lora_scale is not None and isinstance(self, StableDiffusionXLLoraLoaderMixin):
|
| 175 |
+
self._lora_scale = lora_scale
|
| 176 |
+
|
| 177 |
+
# dynamically adjust the LoRA scale
|
| 178 |
+
if self.text_encoder is not None:
|
| 179 |
+
if not USE_PEFT_BACKEND:
|
| 180 |
+
adjust_lora_scale_text_encoder(self.text_encoder, lora_scale)
|
| 181 |
+
else:
|
| 182 |
+
scale_lora_layers(self.text_encoder, lora_scale)
|
| 183 |
+
|
| 184 |
+
if self.text_encoder_2 is not None:
|
| 185 |
+
if not USE_PEFT_BACKEND:
|
| 186 |
+
adjust_lora_scale_text_encoder(self.text_encoder_2, lora_scale)
|
| 187 |
+
else:
|
| 188 |
+
scale_lora_layers(self.text_encoder_2, lora_scale)
|
| 189 |
+
|
| 190 |
+
prompt = [prompt] if isinstance(prompt, str) else prompt
|
| 191 |
+
|
| 192 |
+
if prompt is not None:
|
| 193 |
+
batch_size = len(prompt)
|
| 194 |
+
else:
|
| 195 |
+
batch_size = prompt_embeds.shape[0]
|
| 196 |
+
|
| 197 |
+
# Define tokenizers and text encoders
|
| 198 |
+
tokenizers = [self.tokenizer, self.tokenizer_2] if self.tokenizer is not None else [self.tokenizer_2]
|
| 199 |
+
text_encoders = (
|
| 200 |
+
[self.text_encoder, self.text_encoder_2] if self.text_encoder is not None else [self.text_encoder_2]
|
| 201 |
+
)
|
| 202 |
+
|
| 203 |
+
if prompt_embeds is None:
|
| 204 |
+
assert len(prompt) == 1
|
| 205 |
+
prompt_2 = prompt_2 or prompt
|
| 206 |
+
prompt_2 = [prompt_2] if isinstance(prompt_2, str) else prompt_2
|
| 207 |
+
|
| 208 |
+
text_prompt = [text_prompt] if isinstance(text_prompt, str) else text_prompt
|
| 209 |
+
|
| 210 |
+
# textual inversion: procecss multi-vector tokens if necessary
|
| 211 |
+
prompt_embeds_list = []
|
| 212 |
+
prompts = [prompt, prompt_2]
|
| 213 |
+
text_input_id_batchs = []
|
| 214 |
+
for prompt, tokenizer in zip(prompts, tokenizers):
|
| 215 |
+
pad_token = tokenizer.pad_token_id
|
| 216 |
+
total_tokens = tokenizer(prompt, truncation=False)['input_ids'][0]
|
| 217 |
+
bos = total_tokens[0]
|
| 218 |
+
eos = total_tokens[-1]
|
| 219 |
+
total_tokens = total_tokens[1:-1]
|
| 220 |
+
new_total_tokens = []
|
| 221 |
+
empty_flag = True
|
| 222 |
+
while len(total_tokens) >= 75:
|
| 223 |
+
head_75_tokens = [total_tokens.pop(0) for _ in range(75)]
|
| 224 |
+
temp_77_token_ids = [bos] + head_75_tokens + [eos]
|
| 225 |
+
new_total_tokens.append(temp_77_token_ids)
|
| 226 |
+
empty_flag = False
|
| 227 |
+
if len(total_tokens) > 0 or empty_flag:
|
| 228 |
+
padding_len = 75 - len(total_tokens)
|
| 229 |
+
temp_77_token_ids = [bos] + total_tokens + [eos] + [pad_token] * padding_len
|
| 230 |
+
new_total_tokens.append(temp_77_token_ids)
|
| 231 |
+
# 1,segment_len, 77
|
| 232 |
+
new_total_tokens = torch.tensor(new_total_tokens, dtype=torch.long).unsqueeze(0)
|
| 233 |
+
text_input_id_batchs.append(new_total_tokens)
|
| 234 |
+
if text_input_id_batchs[0].shape[1] > text_input_id_batchs[1].shape[1]:
|
| 235 |
+
tokenizer = tokenizers[1]
|
| 236 |
+
pad_token = tokenizer.pad_token_id
|
| 237 |
+
bos = tokenizer.bos_token_id
|
| 238 |
+
eos = tokenizer.eos_token_id
|
| 239 |
+
padding_len = text_input_id_batchs[0].shape[1] - text_input_id_batchs[1].shape[1]
|
| 240 |
+
# padding_len, 77
|
| 241 |
+
padding_part = torch.tensor([[bos] + [eos] + [pad_token] * 75 for _ in range(padding_len)])
|
| 242 |
+
# 1, padding_len, 77
|
| 243 |
+
padding_part = padding_part.unsqueeze(0)
|
| 244 |
+
text_input_id_batchs[1] = torch.cat((text_input_id_batchs[1],padding_part), dim=1)
|
| 245 |
+
elif text_input_id_batchs[0].shape[1] < text_input_id_batchs[1].shape[1]:
|
| 246 |
+
tokenizer = tokenizers[0]
|
| 247 |
+
pad_token = tokenizer.pad_token_id
|
| 248 |
+
bos = tokenizer.bos_token_id
|
| 249 |
+
eos = tokenizer.eos_token_id
|
| 250 |
+
padding_len = text_input_id_batchs[1].shape[1] - text_input_id_batchs[0].shape[1]
|
| 251 |
+
# padding_len, 77
|
| 252 |
+
padding_part = torch.tensor([[bos] + [eos] + [pad_token] * 75 for _ in range(padding_len)])
|
| 253 |
+
# 1, padding_len, 77
|
| 254 |
+
padding_part = padding_part.unsqueeze(0)
|
| 255 |
+
text_input_id_batchs[0] = torch.cat((text_input_id_batchs[0],padding_part), dim=1)
|
| 256 |
+
|
| 257 |
+
embeddings = []
|
| 258 |
+
for segment_idx in range(text_input_id_batchs[0].shape[1]):
|
| 259 |
+
prompt_embeds_list = []
|
| 260 |
+
for i, text_encoder in enumerate(text_encoders):
|
| 261 |
+
# 1, segment_len, sequence_len
|
| 262 |
+
text_input_ids = text_input_id_batchs[i].to(text_encoder.device)
|
| 263 |
+
# 1, sequence_len, dim
|
| 264 |
+
prompt_embeds = text_encoder(
|
| 265 |
+
text_input_ids[:, segment_idx],
|
| 266 |
+
output_hidden_states=True,
|
| 267 |
+
)
|
| 268 |
+
|
| 269 |
+
# We are only ALWAYS interested in the pooled output of the final text encoder
|
| 270 |
+
temp_pooled_prompt_embeds = prompt_embeds[0]
|
| 271 |
+
if clip_skip is None:
|
| 272 |
+
prompt_embeds = prompt_embeds.hidden_states[-2]
|
| 273 |
+
else:
|
| 274 |
+
prompt_embeds = prompt_embeds.hidden_states[-(clip_skip + 2)]
|
| 275 |
+
bs_embed, seq_len, _ = prompt_embeds.shape
|
| 276 |
+
prompt_embeds = prompt_embeds.view(bs_embed, seq_len, -1)
|
| 277 |
+
prompt_embeds_list.append(prompt_embeds)
|
| 278 |
+
# b, sequence_len, dim
|
| 279 |
+
prompt_embeds = torch.concat(prompt_embeds_list, dim=-1)
|
| 280 |
+
embeddings.append(prompt_embeds)
|
| 281 |
+
if segment_idx == 0:
|
| 282 |
+
# use the first segment's pooled prompt embeddings as
|
| 283 |
+
# the pooled prompt embeddings
|
| 284 |
+
# b, dim->b, dim
|
| 285 |
+
pooled_prompt_embeds = temp_pooled_prompt_embeds.view(bs_embed, -1)
|
| 286 |
+
# b, segment_len * sequence_len, dim
|
| 287 |
+
prompt_embeds = torch.cat(embeddings, dim=1)
|
| 288 |
+
|
| 289 |
+
if byt5_prompt_embeds is None:
|
| 290 |
+
byt5_text_inputs = self.byt5_tokenizer(
|
| 291 |
+
text_prompt,
|
| 292 |
+
padding="max_length",
|
| 293 |
+
max_length=self.byt5_max_length,
|
| 294 |
+
truncation=True,
|
| 295 |
+
add_special_tokens=True,
|
| 296 |
+
return_tensors="pt",
|
| 297 |
+
)
|
| 298 |
+
byt5_text_input_ids = byt5_text_inputs.input_ids
|
| 299 |
+
byt5_attention_mask = byt5_text_inputs.attention_mask.to(self.byt5_text_encoder.device) if text_attn_mask is None else text_attn_mask.to(self.byt5_text_encoder.device, dtype=byt5_text_inputs.attention_mask.dtype)
|
| 300 |
+
with torch.cuda.amp.autocast(enabled=False):
|
| 301 |
+
byt5_prompt_embeds = self.byt5_text_encoder(
|
| 302 |
+
byt5_text_input_ids.to(self.byt5_text_encoder.device),
|
| 303 |
+
attention_mask=byt5_attention_mask.float(),
|
| 304 |
+
)
|
| 305 |
+
byt5_prompt_embeds = byt5_prompt_embeds[0]
|
| 306 |
+
byt5_prompt_embeds = self.byt5_mapper(byt5_prompt_embeds, byt5_attention_mask)
|
| 307 |
+
|
| 308 |
+
# get unconditional embeddings for classifier free guidance
|
| 309 |
+
zero_out_negative_prompt = negative_prompt is None and self.config.force_zeros_for_empty_prompt
|
| 310 |
+
if do_classifier_free_guidance and negative_prompt_embeds is None and zero_out_negative_prompt:
|
| 311 |
+
negative_prompt_embeds = torch.zeros_like(prompt_embeds)
|
| 312 |
+
negative_byt5_prompt_embeds = torch.zeros_like(byt5_prompt_embeds)
|
| 313 |
+
negative_pooled_prompt_embeds = torch.zeros_like(pooled_prompt_embeds)
|
| 314 |
+
elif do_classifier_free_guidance and negative_prompt_embeds is None:
|
| 315 |
+
raise NotImplementedError
|
| 316 |
+
|
| 317 |
+
if self.text_encoder_2 is not None:
|
| 318 |
+
prompt_embeds = prompt_embeds.to(dtype=self.text_encoder_2.dtype, device=device)
|
| 319 |
+
else:
|
| 320 |
+
prompt_embeds = prompt_embeds.to(dtype=self.unet.dtype, device=device)
|
| 321 |
+
|
| 322 |
+
bs_embed, seq_len, _ = prompt_embeds.shape
|
| 323 |
+
# duplicate text embeddings for each generation per prompt, using mps friendly method
|
| 324 |
+
prompt_embeds = prompt_embeds.repeat(1, num_images_per_prompt, 1)
|
| 325 |
+
prompt_embeds = prompt_embeds.view(bs_embed * num_images_per_prompt, seq_len, -1)
|
| 326 |
+
|
| 327 |
+
if do_classifier_free_guidance:
|
| 328 |
+
# duplicate unconditional embeddings for each generation per prompt, using mps friendly method
|
| 329 |
+
seq_len = negative_prompt_embeds.shape[1]
|
| 330 |
+
byt5_seq_len = negative_byt5_prompt_embeds.shape[1]
|
| 331 |
+
|
| 332 |
+
if self.text_encoder_2 is not None:
|
| 333 |
+
negative_prompt_embeds = negative_prompt_embeds.to(dtype=self.text_encoder_2.dtype, device=device)
|
| 334 |
+
else:
|
| 335 |
+
negative_prompt_embeds = negative_prompt_embeds.to(dtype=self.unet.dtype, device=device)
|
| 336 |
+
negative_byt5_prompt_embeds = negative_byt5_prompt_embeds.to(dtype=self.byt5_text_encoder.dtype, device=device)
|
| 337 |
+
|
| 338 |
+
negative_prompt_embeds = negative_prompt_embeds.repeat(1, num_images_per_prompt, 1)
|
| 339 |
+
negative_prompt_embeds = negative_prompt_embeds.view(batch_size * num_images_per_prompt, seq_len, -1)
|
| 340 |
+
negative_byt5_prompt_embeds = negative_byt5_prompt_embeds.repeat(1, num_images_per_prompt, 1)
|
| 341 |
+
negative_byt5_prompt_embeds = negative_byt5_prompt_embeds.view(batch_size * num_images_per_prompt, byt5_seq_len, -1)
|
| 342 |
+
|
| 343 |
+
pooled_prompt_embeds = pooled_prompt_embeds.repeat(1, num_images_per_prompt).view(
|
| 344 |
+
bs_embed * num_images_per_prompt, -1
|
| 345 |
+
)
|
| 346 |
+
if do_classifier_free_guidance:
|
| 347 |
+
negative_pooled_prompt_embeds = negative_pooled_prompt_embeds.repeat(1, num_images_per_prompt).view(
|
| 348 |
+
bs_embed * num_images_per_prompt, -1
|
| 349 |
+
)
|
| 350 |
+
|
| 351 |
+
if self.text_encoder is not None:
|
| 352 |
+
if isinstance(self, StableDiffusionXLLoraLoaderMixin) and USE_PEFT_BACKEND:
|
| 353 |
+
# Retrieve the original scale by scaling back the LoRA layers
|
| 354 |
+
unscale_lora_layers(self.text_encoder, lora_scale)
|
| 355 |
+
|
| 356 |
+
if self.text_encoder_2 is not None:
|
| 357 |
+
if isinstance(self, StableDiffusionXLLoraLoaderMixin) and USE_PEFT_BACKEND:
|
| 358 |
+
# Retrieve the original scale by scaling back the LoRA layers
|
| 359 |
+
unscale_lora_layers(self.text_encoder_2, lora_scale)
|
| 360 |
+
|
| 361 |
+
return (
|
| 362 |
+
prompt_embeds,
|
| 363 |
+
negative_prompt_embeds,
|
| 364 |
+
pooled_prompt_embeds,
|
| 365 |
+
negative_pooled_prompt_embeds,
|
| 366 |
+
byt5_prompt_embeds,
|
| 367 |
+
negative_byt5_prompt_embeds,
|
| 368 |
+
)
|
| 369 |
+
|
| 370 |
+
@torch.no_grad()
|
| 371 |
+
def __call__(
|
| 372 |
+
self,
|
| 373 |
+
prompt: Union[str, List[str]] = None,
|
| 374 |
+
prompt_2: Optional[Union[str, List[str]]] = None,
|
| 375 |
+
text_prompt = None,
|
| 376 |
+
texts = None,
|
| 377 |
+
bboxes = None,
|
| 378 |
+
height: Optional[int] = None,
|
| 379 |
+
width: Optional[int] = None,
|
| 380 |
+
num_inference_steps: int = 50,
|
| 381 |
+
timesteps: List[int] = None,
|
| 382 |
+
denoising_end: Optional[float] = None,
|
| 383 |
+
guidance_scale: float = 5.0,
|
| 384 |
+
negative_prompt: Optional[Union[str, List[str]]] = None,
|
| 385 |
+
negative_prompt_2: Optional[Union[str, List[str]]] = None,
|
| 386 |
+
num_images_per_prompt: Optional[int] = 1,
|
| 387 |
+
eta: float = 0.0,
|
| 388 |
+
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 389 |
+
latents: Optional[torch.FloatTensor] = None,
|
| 390 |
+
prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 391 |
+
negative_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 392 |
+
pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 393 |
+
negative_pooled_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 394 |
+
ip_adapter_image: Optional[PipelineImageInput] = None,
|
| 395 |
+
output_type: Optional[str] = "pil",
|
| 396 |
+
return_dict: bool = True,
|
| 397 |
+
cross_attention_kwargs: Optional[Dict[str, Any]] = None,
|
| 398 |
+
guidance_rescale: float = 0.0,
|
| 399 |
+
original_size: Optional[Tuple[int, int]] = None,
|
| 400 |
+
crops_coords_top_left: Tuple[int, int] = (0, 0),
|
| 401 |
+
target_size: Optional[Tuple[int, int]] = None,
|
| 402 |
+
negative_original_size: Optional[Tuple[int, int]] = None,
|
| 403 |
+
negative_crops_coords_top_left: Tuple[int, int] = (0, 0),
|
| 404 |
+
negative_target_size: Optional[Tuple[int, int]] = None,
|
| 405 |
+
clip_skip: Optional[int] = None,
|
| 406 |
+
callback_on_step_end: Optional[Callable[[int, int, Dict], None]] = None,
|
| 407 |
+
callback_on_step_end_tensor_inputs: List[str] = ["latents"],
|
| 408 |
+
text_attn_mask: torch.LongTensor = None,
|
| 409 |
+
denoising_start: Optional[float] = None,
|
| 410 |
+
byt5_prompt_embeds: Optional[torch.FloatTensor] = None,
|
| 411 |
+
**kwargs,
|
| 412 |
+
):
|
| 413 |
+
r"""
|
| 414 |
+
Function invoked when calling the pipeline for generation.
|
| 415 |
+
|
| 416 |
+
Args:
|
| 417 |
+
prompt (`str` or `List[str]`, *optional*):
|
| 418 |
+
The prompt or prompts to guide the image generation. If not defined, one has to pass `prompt_embeds`.
|
| 419 |
+
instead.
|
| 420 |
+
prompt_2 (`str` or `List[str]`, *optional*):
|
| 421 |
+
The prompt or prompts to be sent to the `tokenizer_2` and `text_encoder_2`. If not defined, `prompt` is
|
| 422 |
+
used in both text-encoders
|
| 423 |
+
height (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
|
| 424 |
+
The height in pixels of the generated image. This is set to 1024 by default for the best results.
|
| 425 |
+
Anything below 512 pixels won't work well for
|
| 426 |
+
[stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0)
|
| 427 |
+
and checkpoints that are not specifically fine-tuned on low resolutions.
|
| 428 |
+
width (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
|
| 429 |
+
The width in pixels of the generated image. This is set to 1024 by default for the best results.
|
| 430 |
+
Anything below 512 pixels won't work well for
|
| 431 |
+
[stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0)
|
| 432 |
+
and checkpoints that are not specifically fine-tuned on low resolutions.
|
| 433 |
+
num_inference_steps (`int`, *optional*, defaults to 50):
|
| 434 |
+
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
|
| 435 |
+
expense of slower inference.
|
| 436 |
+
timesteps (`List[int]`, *optional*):
|
| 437 |
+
Custom timesteps to use for the denoising process with schedulers which support a `timesteps` argument
|
| 438 |
+
in their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is
|
| 439 |
+
passed will be used. Must be in descending order.
|
| 440 |
+
denoising_end (`float`, *optional*):
|
| 441 |
+
When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be
|
| 442 |
+
completed before it is intentionally prematurely terminated. As a result, the returned sample will
|
| 443 |
+
still retain a substantial amount of noise as determined by the discrete timesteps selected by the
|
| 444 |
+
scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a
|
| 445 |
+
"Mixture of Denoisers" multi-pipeline setup, as elaborated in [**Refining the Image
|
| 446 |
+
Output**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output)
|
| 447 |
+
guidance_scale (`float`, *optional*, defaults to 5.0):
|
| 448 |
+
Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598).
|
| 449 |
+
`guidance_scale` is defined as `w` of equation 2. of [Imagen
|
| 450 |
+
Paper](https://arxiv.org/pdf/2205.11487.pdf). Guidance scale is enabled by setting `guidance_scale >
|
| 451 |
+
1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`,
|
| 452 |
+
usually at the expense of lower image quality.
|
| 453 |
+
negative_prompt (`str` or `List[str]`, *optional*):
|
| 454 |
+
The prompt or prompts not to guide the image generation. If not defined, one has to pass
|
| 455 |
+
`negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
|
| 456 |
+
less than `1`).
|
| 457 |
+
negative_prompt_2 (`str` or `List[str]`, *optional*):
|
| 458 |
+
The prompt or prompts not to guide the image generation to be sent to `tokenizer_2` and
|
| 459 |
+
`text_encoder_2`. If not defined, `negative_prompt` is used in both text-encoders
|
| 460 |
+
num_images_per_prompt (`int`, *optional*, defaults to 1):
|
| 461 |
+
The number of images to generate per prompt.
|
| 462 |
+
eta (`float`, *optional*, defaults to 0.0):
|
| 463 |
+
Corresponds to parameter eta (η) in the DDIM paper: https://arxiv.org/abs/2010.02502. Only applies to
|
| 464 |
+
[`schedulers.DDIMScheduler`], will be ignored for others.
|
| 465 |
+
generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
|
| 466 |
+
One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
|
| 467 |
+
to make generation deterministic.
|
| 468 |
+
latents (`torch.FloatTensor`, *optional*):
|
| 469 |
+
Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
|
| 470 |
+
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
|
| 471 |
+
tensor will ge generated by sampling using the supplied random `generator`.
|
| 472 |
+
prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 473 |
+
Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
|
| 474 |
+
provided, text embeddings will be generated from `prompt` input argument.
|
| 475 |
+
negative_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 476 |
+
Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 477 |
+
weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
|
| 478 |
+
argument.
|
| 479 |
+
pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 480 |
+
Pre-generated pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting.
|
| 481 |
+
If not provided, pooled text embeddings will be generated from `prompt` input argument.
|
| 482 |
+
negative_pooled_prompt_embeds (`torch.FloatTensor`, *optional*):
|
| 483 |
+
Pre-generated negative pooled text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 484 |
+
weighting. If not provided, pooled negative_prompt_embeds will be generated from `negative_prompt`
|
| 485 |
+
input argument.
|
| 486 |
+
ip_adapter_image: (`PipelineImageInput`, *optional*): Optional image input to work with IP Adapters.
|
| 487 |
+
output_type (`str`, *optional*, defaults to `"pil"`):
|
| 488 |
+
The output format of the generate image. Choose between
|
| 489 |
+
[PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` or `np.array`.
|
| 490 |
+
return_dict (`bool`, *optional*, defaults to `True`):
|
| 491 |
+
Whether or not to return a [`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] instead
|
| 492 |
+
of a plain tuple.
|
| 493 |
+
cross_attention_kwargs (`dict`, *optional*):
|
| 494 |
+
A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
|
| 495 |
+
`self.processor` in
|
| 496 |
+
[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
|
| 497 |
+
guidance_rescale (`float`, *optional*, defaults to 0.0):
|
| 498 |
+
Guidance rescale factor proposed by [Common Diffusion Noise Schedules and Sample Steps are
|
| 499 |
+
Flawed](https://arxiv.org/pdf/2305.08891.pdf) `guidance_scale` is defined as `φ` in equation 16. of
|
| 500 |
+
[Common Diffusion Noise Schedules and Sample Steps are Flawed](https://arxiv.org/pdf/2305.08891.pdf).
|
| 501 |
+
Guidance rescale factor should fix overexposure when using zero terminal SNR.
|
| 502 |
+
original_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
|
| 503 |
+
If `original_size` is not the same as `target_size` the image will appear to be down- or upsampled.
|
| 504 |
+
`original_size` defaults to `(height, width)` if not specified. Part of SDXL's micro-conditioning as
|
| 505 |
+
explained in section 2.2 of
|
| 506 |
+
[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
|
| 507 |
+
crops_coords_top_left (`Tuple[int]`, *optional*, defaults to (0, 0)):
|
| 508 |
+
`crops_coords_top_left` can be used to generate an image that appears to be "cropped" from the position
|
| 509 |
+
`crops_coords_top_left` downwards. Favorable, well-centered images are usually achieved by setting
|
| 510 |
+
`crops_coords_top_left` to (0, 0). Part of SDXL's micro-conditioning as explained in section 2.2 of
|
| 511 |
+
[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
|
| 512 |
+
target_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
|
| 513 |
+
For most cases, `target_size` should be set to the desired height and width of the generated image. If
|
| 514 |
+
not specified it will default to `(height, width)`. Part of SDXL's micro-conditioning as explained in
|
| 515 |
+
section 2.2 of [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).
|
| 516 |
+
negative_original_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
|
| 517 |
+
To negatively condition the generation process based on a specific image resolution. Part of SDXL's
|
| 518 |
+
micro-conditioning as explained in section 2.2 of
|
| 519 |
+
[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
|
| 520 |
+
information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
|
| 521 |
+
negative_crops_coords_top_left (`Tuple[int]`, *optional*, defaults to (0, 0)):
|
| 522 |
+
To negatively condition the generation process based on a specific crop coordinates. Part of SDXL's
|
| 523 |
+
micro-conditioning as explained in section 2.2 of
|
| 524 |
+
[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
|
| 525 |
+
information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
|
| 526 |
+
negative_target_size (`Tuple[int]`, *optional*, defaults to (1024, 1024)):
|
| 527 |
+
To negatively condition the generation process based on a target image resolution. It should be as same
|
| 528 |
+
as the `target_size` for most cases. Part of SDXL's micro-conditioning as explained in section 2.2 of
|
| 529 |
+
[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). For more
|
| 530 |
+
information, refer to this issue thread: https://github.com/huggingface/diffusers/issues/4208.
|
| 531 |
+
callback_on_step_end (`Callable`, *optional*):
|
| 532 |
+
A function that calls at the end of each denoising steps during the inference. The function is called
|
| 533 |
+
with the following arguments: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int,
|
| 534 |
+
callback_kwargs: Dict)`. `callback_kwargs` will include a list of all tensors as specified by
|
| 535 |
+
`callback_on_step_end_tensor_inputs`.
|
| 536 |
+
callback_on_step_end_tensor_inputs (`List`, *optional*):
|
| 537 |
+
The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
|
| 538 |
+
will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
|
| 539 |
+
`._callback_tensor_inputs` attribute of your pipeline class.
|
| 540 |
+
|
| 541 |
+
Examples:
|
| 542 |
+
|
| 543 |
+
Returns:
|
| 544 |
+
[`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] or `tuple`:
|
| 545 |
+
[`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] if `return_dict` is True, otherwise a
|
| 546 |
+
`tuple`. When returning a tuple, the first element is a list with the generated images.
|
| 547 |
+
"""
|
| 548 |
+
|
| 549 |
+
callback = kwargs.pop("callback", None)
|
| 550 |
+
callback_steps = kwargs.pop("callback_steps", None)
|
| 551 |
+
|
| 552 |
+
if callback is not None:
|
| 553 |
+
deprecate(
|
| 554 |
+
"callback",
|
| 555 |
+
"1.0.0",
|
| 556 |
+
"Passing `callback` as an input argument to `__call__` is deprecated, consider use `callback_on_step_end`",
|
| 557 |
+
)
|
| 558 |
+
if callback_steps is not None:
|
| 559 |
+
deprecate(
|
| 560 |
+
"callback_steps",
|
| 561 |
+
"1.0.0",
|
| 562 |
+
"Passing `callback_steps` as an input argument to `__call__` is deprecated, consider use `callback_on_step_end`",
|
| 563 |
+
)
|
| 564 |
+
|
| 565 |
+
# 0. Default height and width to unet
|
| 566 |
+
height = height or self.default_sample_size * self.vae_scale_factor
|
| 567 |
+
width = width or self.default_sample_size * self.vae_scale_factor
|
| 568 |
+
|
| 569 |
+
original_size = original_size or (height, width)
|
| 570 |
+
target_size = target_size or (height, width)
|
| 571 |
+
|
| 572 |
+
# 1. Check inputs. Raise error if not correct
|
| 573 |
+
self.check_inputs(
|
| 574 |
+
prompt,
|
| 575 |
+
prompt_2,
|
| 576 |
+
height,
|
| 577 |
+
width,
|
| 578 |
+
callback_steps,
|
| 579 |
+
negative_prompt,
|
| 580 |
+
negative_prompt_2,
|
| 581 |
+
prompt_embeds,
|
| 582 |
+
negative_prompt_embeds,
|
| 583 |
+
pooled_prompt_embeds,
|
| 584 |
+
negative_pooled_prompt_embeds,
|
| 585 |
+
callback_on_step_end_tensor_inputs,
|
| 586 |
+
)
|
| 587 |
+
|
| 588 |
+
self._guidance_scale = guidance_scale
|
| 589 |
+
self._guidance_rescale = guidance_rescale
|
| 590 |
+
self._clip_skip = clip_skip
|
| 591 |
+
self._cross_attention_kwargs = cross_attention_kwargs
|
| 592 |
+
self._denoising_end = denoising_end
|
| 593 |
+
self._interrupt = False
|
| 594 |
+
|
| 595 |
+
# 2. Define call parameters
|
| 596 |
+
if prompt is not None and isinstance(prompt, str):
|
| 597 |
+
batch_size = 1
|
| 598 |
+
elif prompt is not None and isinstance(prompt, list):
|
| 599 |
+
batch_size = len(prompt)
|
| 600 |
+
else:
|
| 601 |
+
batch_size = prompt_embeds.shape[0]
|
| 602 |
+
|
| 603 |
+
device = self._execution_device
|
| 604 |
+
|
| 605 |
+
# 3. Encode input prompt
|
| 606 |
+
lora_scale = (
|
| 607 |
+
self.cross_attention_kwargs.get("scale", None) if self.cross_attention_kwargs is not None else None
|
| 608 |
+
)
|
| 609 |
+
|
| 610 |
+
(
|
| 611 |
+
prompt_embeds,
|
| 612 |
+
negative_prompt_embeds,
|
| 613 |
+
pooled_prompt_embeds,
|
| 614 |
+
negative_pooled_prompt_embeds,
|
| 615 |
+
byt5_prompt_embeds,
|
| 616 |
+
negative_byt5_prompt_embeds,
|
| 617 |
+
) = self.encode_prompt(
|
| 618 |
+
prompt=prompt,
|
| 619 |
+
prompt_2=prompt_2,
|
| 620 |
+
text_prompt=text_prompt,
|
| 621 |
+
device=device,
|
| 622 |
+
num_images_per_prompt=num_images_per_prompt,
|
| 623 |
+
do_classifier_free_guidance=self.do_classifier_free_guidance,
|
| 624 |
+
negative_prompt=negative_prompt,
|
| 625 |
+
negative_prompt_2=negative_prompt_2,
|
| 626 |
+
prompt_embeds=prompt_embeds,
|
| 627 |
+
negative_prompt_embeds=negative_prompt_embeds,
|
| 628 |
+
pooled_prompt_embeds=pooled_prompt_embeds,
|
| 629 |
+
negative_pooled_prompt_embeds=negative_pooled_prompt_embeds,
|
| 630 |
+
lora_scale=lora_scale,
|
| 631 |
+
clip_skip=self.clip_skip,
|
| 632 |
+
text_attn_mask=text_attn_mask,
|
| 633 |
+
byt5_prompt_embeds=byt5_prompt_embeds,
|
| 634 |
+
)
|
| 635 |
+
|
| 636 |
+
# 4. Prepare timesteps
|
| 637 |
+
timesteps, num_inference_steps = retrieve_timesteps(self.scheduler, num_inference_steps, device, timesteps)
|
| 638 |
+
|
| 639 |
+
# 5. Prepare latent variables
|
| 640 |
+
num_channels_latents = self.unet.config.in_channels
|
| 641 |
+
latents = self.prepare_latents(
|
| 642 |
+
batch_size * num_images_per_prompt,
|
| 643 |
+
num_channels_latents,
|
| 644 |
+
height,
|
| 645 |
+
width,
|
| 646 |
+
prompt_embeds.dtype,
|
| 647 |
+
device,
|
| 648 |
+
generator,
|
| 649 |
+
latents,
|
| 650 |
+
)
|
| 651 |
+
|
| 652 |
+
# 6. Prepare extra step kwargs. TODO: Logic should ideally just be moved out of the pipeline
|
| 653 |
+
extra_step_kwargs = self.prepare_extra_step_kwargs(generator, eta)
|
| 654 |
+
|
| 655 |
+
# 7. Prepare added time ids & embeddings
|
| 656 |
+
add_text_embeds = pooled_prompt_embeds
|
| 657 |
+
if self.text_encoder_2 is None:
|
| 658 |
+
text_encoder_projection_dim = int(pooled_prompt_embeds.shape[-1])
|
| 659 |
+
else:
|
| 660 |
+
text_encoder_projection_dim = self.text_encoder_2.config.projection_dim
|
| 661 |
+
|
| 662 |
+
add_time_ids = self._get_add_time_ids(
|
| 663 |
+
original_size,
|
| 664 |
+
crops_coords_top_left,
|
| 665 |
+
target_size,
|
| 666 |
+
dtype=prompt_embeds.dtype,
|
| 667 |
+
text_encoder_projection_dim=text_encoder_projection_dim,
|
| 668 |
+
)
|
| 669 |
+
if negative_original_size is not None and negative_target_size is not None:
|
| 670 |
+
negative_add_time_ids = self._get_add_time_ids(
|
| 671 |
+
negative_original_size,
|
| 672 |
+
negative_crops_coords_top_left,
|
| 673 |
+
negative_target_size,
|
| 674 |
+
dtype=prompt_embeds.dtype,
|
| 675 |
+
text_encoder_projection_dim=text_encoder_projection_dim,
|
| 676 |
+
)
|
| 677 |
+
else:
|
| 678 |
+
negative_add_time_ids = add_time_ids
|
| 679 |
+
|
| 680 |
+
if self.do_classifier_free_guidance:
|
| 681 |
+
prompt_embeds = torch.cat([negative_prompt_embeds, prompt_embeds], dim=0)
|
| 682 |
+
byt5_prompt_embeds = torch.cat([negative_byt5_prompt_embeds, byt5_prompt_embeds], dim=0)
|
| 683 |
+
|
| 684 |
+
add_text_embeds = torch.cat([negative_pooled_prompt_embeds, add_text_embeds], dim=0)
|
| 685 |
+
add_time_ids = torch.cat([negative_add_time_ids, add_time_ids], dim=0)
|
| 686 |
+
|
| 687 |
+
prompt_embeds = prompt_embeds.to(device)
|
| 688 |
+
byt5_prompt_embeds = byt5_prompt_embeds.to(device)
|
| 689 |
+
add_text_embeds = add_text_embeds.to(device)
|
| 690 |
+
add_time_ids = add_time_ids.to(device).repeat(batch_size * num_images_per_prompt, 1)
|
| 691 |
+
|
| 692 |
+
if ip_adapter_image is not None:
|
| 693 |
+
output_hidden_state = False if isinstance(self.unet.encoder_hid_proj, ImageProjection) else True
|
| 694 |
+
image_embeds, negative_image_embeds = self.encode_image(
|
| 695 |
+
ip_adapter_image, device, num_images_per_prompt, output_hidden_state
|
| 696 |
+
)
|
| 697 |
+
if self.do_classifier_free_guidance:
|
| 698 |
+
image_embeds = torch.cat([negative_image_embeds, image_embeds])
|
| 699 |
+
image_embeds = image_embeds.to(device)
|
| 700 |
+
|
| 701 |
+
# 8. Denoising loop
|
| 702 |
+
num_warmup_steps = max(len(timesteps) - num_inference_steps * self.scheduler.order, 0)
|
| 703 |
+
|
| 704 |
+
# 8.1 Apply denoising_end
|
| 705 |
+
if (
|
| 706 |
+
self.denoising_end is not None
|
| 707 |
+
and isinstance(self.denoising_end, float)
|
| 708 |
+
and self.denoising_end > 0
|
| 709 |
+
and self.denoising_end < 1
|
| 710 |
+
):
|
| 711 |
+
discrete_timestep_cutoff = int(
|
| 712 |
+
round(
|
| 713 |
+
self.scheduler.config.num_train_timesteps
|
| 714 |
+
- (self.denoising_end * self.scheduler.config.num_train_timesteps)
|
| 715 |
+
)
|
| 716 |
+
)
|
| 717 |
+
num_inference_steps = len(list(filter(lambda ts: ts >= discrete_timestep_cutoff, timesteps)))
|
| 718 |
+
timesteps = timesteps[:num_inference_steps]
|
| 719 |
+
|
| 720 |
+
# 9. Optionally get Guidance Scale Embedding
|
| 721 |
+
timestep_cond = None
|
| 722 |
+
if self.unet.config.time_cond_proj_dim is not None:
|
| 723 |
+
guidance_scale_tensor = torch.tensor(self.guidance_scale - 1).repeat(batch_size * num_images_per_prompt)
|
| 724 |
+
timestep_cond = self.get_guidance_scale_embedding(
|
| 725 |
+
guidance_scale_tensor, embedding_dim=self.unet.config.time_cond_proj_dim
|
| 726 |
+
).to(device=device, dtype=latents.dtype)
|
| 727 |
+
|
| 728 |
+
assert batch_size == 1, "batch_size > 1 is not supported"
|
| 729 |
+
if texts is not None:
|
| 730 |
+
glyph_attn_mask = self.get_glyph_attn_mask(texts, bboxes)
|
| 731 |
+
# h,w
|
| 732 |
+
bg_attn_mask = glyph_attn_mask.sum(-1) == 0
|
| 733 |
+
# 1,h,w,byt5_max_len
|
| 734 |
+
glyph_attn_masks = glyph_attn_mask.unsqueeze(0).to(device)
|
| 735 |
+
# 1,h,w
|
| 736 |
+
bg_attn_masks = bg_attn_mask.unsqueeze(0).to(glyph_attn_masks.dtype).to(device)
|
| 737 |
+
|
| 738 |
+
# b, h, w, text_feat_len
|
| 739 |
+
glyph_attn_masks = (1 - glyph_attn_masks) * -10000.0
|
| 740 |
+
# b, h, w
|
| 741 |
+
bg_attn_masks = (1 - bg_attn_masks) * -10000.0
|
| 742 |
+
num_down_sample = sum(1 if i == 'CrossAttnDownBlock2D' else 0 for i in self.unet.config['down_block_types']) - 1
|
| 743 |
+
initial_resolution = self.default_sample_size
|
| 744 |
+
initial_resolution = initial_resolution // 2**sum(1 if i == 'DownBlock2D' else 0 for i in self.unet.config['down_block_types'])
|
| 745 |
+
resolution_list = [initial_resolution] + [initial_resolution // 2**i for i in range(1, num_down_sample + 1)]
|
| 746 |
+
glyph_attn_masks_dict = dict()
|
| 747 |
+
bg_attn_masks_dict = dict()
|
| 748 |
+
# b, text_fet_len, h, w
|
| 749 |
+
glyph_attn_masks = glyph_attn_masks.permute(0, 3, 1, 2)
|
| 750 |
+
# b, 1, h, w
|
| 751 |
+
bg_attn_masks = bg_attn_masks.unsqueeze(1)
|
| 752 |
+
for mask_resolution in resolution_list:
|
| 753 |
+
down_scaled_glyph_attn_masks = F.interpolate(
|
| 754 |
+
glyph_attn_masks, size=(mask_resolution, mask_resolution), mode='nearest',
|
| 755 |
+
)
|
| 756 |
+
# b, text_fet_len, h, w->b, h, w, text_fet_len->b, h*w, text_fet_len
|
| 757 |
+
down_scaled_glyph_attn_masks = down_scaled_glyph_attn_masks.permute(0, 2, 3, 1).flatten(1, 2)
|
| 758 |
+
glyph_attn_masks_dict[mask_resolution * mask_resolution] = down_scaled_glyph_attn_masks
|
| 759 |
+
|
| 760 |
+
down_scaled_bg_attn_masks = F.interpolate(
|
| 761 |
+
bg_attn_masks, size=(mask_resolution, mask_resolution), mode='nearest',
|
| 762 |
+
)
|
| 763 |
+
# b,1,h,w->b,h,w->b,h,w,1->b,h*w,1->b,h*w,clip_feat_len
|
| 764 |
+
down_scaled_bg_attn_masks = down_scaled_bg_attn_masks.squeeze(1).unsqueeze(-1)
|
| 765 |
+
down_scaled_bg_attn_masks = down_scaled_bg_attn_masks.flatten(1, 2)
|
| 766 |
+
down_scaled_bg_attn_masks = down_scaled_bg_attn_masks.repeat(1, 1, prompt_embeds.shape[1])
|
| 767 |
+
bg_attn_masks_dict[mask_resolution * mask_resolution] = down_scaled_bg_attn_masks
|
| 768 |
+
if self.do_classifier_free_guidance:
|
| 769 |
+
for key in glyph_attn_masks_dict:
|
| 770 |
+
glyph_attn_masks_dict[key] = torch.cat([
|
| 771 |
+
torch.zeros_like(glyph_attn_masks_dict[key]),
|
| 772 |
+
glyph_attn_masks_dict[key]],
|
| 773 |
+
dim=0)
|
| 774 |
+
for key in bg_attn_masks_dict:
|
| 775 |
+
bg_attn_masks_dict[key] = torch.cat([
|
| 776 |
+
torch.zeros_like(bg_attn_masks_dict[key]),
|
| 777 |
+
bg_attn_masks_dict[key]],
|
| 778 |
+
dim=0)
|
| 779 |
+
else:
|
| 780 |
+
glyph_attn_masks_dict = None
|
| 781 |
+
bg_attn_masks_dict = None
|
| 782 |
+
|
| 783 |
+
self._num_timesteps = len(timesteps)
|
| 784 |
+
with self.progress_bar(total=num_inference_steps) as progress_bar:
|
| 785 |
+
for i, t in enumerate(timesteps):
|
| 786 |
+
if self.interrupt:
|
| 787 |
+
continue
|
| 788 |
+
|
| 789 |
+
# expand the latents if we are doing classifier free guidance
|
| 790 |
+
latent_model_input = torch.cat([latents] * 2) if self.do_classifier_free_guidance else latents
|
| 791 |
+
|
| 792 |
+
latent_model_input = self.scheduler.scale_model_input(latent_model_input, t)
|
| 793 |
+
|
| 794 |
+
# predict the noise residual
|
| 795 |
+
added_cond_kwargs = {"text_embeds": add_text_embeds, "time_ids": add_time_ids}
|
| 796 |
+
if ip_adapter_image is not None:
|
| 797 |
+
added_cond_kwargs["image_embeds"] = image_embeds
|
| 798 |
+
if self.cross_attention_kwargs is None:
|
| 799 |
+
cross_attention_kwargs = {}
|
| 800 |
+
else:
|
| 801 |
+
cross_attention_kwargs = self.cross_attention_kwargs
|
| 802 |
+
cross_attention_kwargs['glyph_encoder_hidden_states'] = byt5_prompt_embeds
|
| 803 |
+
cross_attention_kwargs['glyph_attn_masks_dict'] = glyph_attn_masks_dict
|
| 804 |
+
cross_attention_kwargs['bg_attn_masks_dict'] = bg_attn_masks_dict
|
| 805 |
+
|
| 806 |
+
noise_pred = self.unet(
|
| 807 |
+
latent_model_input,
|
| 808 |
+
t,
|
| 809 |
+
encoder_hidden_states=prompt_embeds,
|
| 810 |
+
timestep_cond=timestep_cond,
|
| 811 |
+
cross_attention_kwargs=cross_attention_kwargs,
|
| 812 |
+
added_cond_kwargs=added_cond_kwargs,
|
| 813 |
+
return_dict=False,
|
| 814 |
+
)[0]
|
| 815 |
+
|
| 816 |
+
# perform guidance
|
| 817 |
+
if self.do_classifier_free_guidance:
|
| 818 |
+
noise_pred_uncond, noise_pred_text = noise_pred.chunk(2)
|
| 819 |
+
noise_pred = noise_pred_uncond + self.guidance_scale * (noise_pred_text - noise_pred_uncond)
|
| 820 |
+
|
| 821 |
+
if self.do_classifier_free_guidance and self.guidance_rescale > 0.0:
|
| 822 |
+
# Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf
|
| 823 |
+
noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=self.guidance_rescale)
|
| 824 |
+
|
| 825 |
+
# compute the previous noisy sample x_t -> x_t-1
|
| 826 |
+
latents = self.scheduler.step(noise_pred, t, latents, **extra_step_kwargs, return_dict=False)[0]
|
| 827 |
+
|
| 828 |
+
if callback_on_step_end is not None:
|
| 829 |
+
callback_kwargs = {}
|
| 830 |
+
for k in callback_on_step_end_tensor_inputs:
|
| 831 |
+
callback_kwargs[k] = locals()[k]
|
| 832 |
+
callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
|
| 833 |
+
|
| 834 |
+
latents = callback_outputs.pop("latents", latents)
|
| 835 |
+
prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
|
| 836 |
+
negative_prompt_embeds = callback_outputs.pop("negative_prompt_embeds", negative_prompt_embeds)
|
| 837 |
+
add_text_embeds = callback_outputs.pop("add_text_embeds", add_text_embeds)
|
| 838 |
+
negative_pooled_prompt_embeds = callback_outputs.pop(
|
| 839 |
+
"negative_pooled_prompt_embeds", negative_pooled_prompt_embeds
|
| 840 |
+
)
|
| 841 |
+
add_time_ids = callback_outputs.pop("add_time_ids", add_time_ids)
|
| 842 |
+
negative_add_time_ids = callback_outputs.pop("negative_add_time_ids", negative_add_time_ids)
|
| 843 |
+
|
| 844 |
+
# call the callback, if provided
|
| 845 |
+
if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
|
| 846 |
+
progress_bar.update()
|
| 847 |
+
if callback is not None and i % callback_steps == 0:
|
| 848 |
+
step_idx = i // getattr(self.scheduler, "order", 1)
|
| 849 |
+
callback(step_idx, t, latents)
|
| 850 |
+
|
| 851 |
+
if not output_type == "latent":
|
| 852 |
+
# make sure the VAE is in float32 mode, as it overflows in float16
|
| 853 |
+
needs_upcasting = self.vae.dtype == torch.float16 and self.vae.config.force_upcast
|
| 854 |
+
|
| 855 |
+
if needs_upcasting:
|
| 856 |
+
self.upcast_vae()
|
| 857 |
+
latents = latents.to(next(iter(self.vae.post_quant_conv.parameters())).dtype)
|
| 858 |
+
|
| 859 |
+
image = self.vae.decode(latents / self.vae.config.scaling_factor, return_dict=False)[0]
|
| 860 |
+
|
| 861 |
+
# cast back to fp16 if needed
|
| 862 |
+
if needs_upcasting:
|
| 863 |
+
self.vae.to(dtype=torch.float16)
|
| 864 |
+
else:
|
| 865 |
+
image = latents
|
| 866 |
+
|
| 867 |
+
if not output_type == "latent":
|
| 868 |
+
# apply watermark if available
|
| 869 |
+
if self.watermark is not None:
|
| 870 |
+
image = self.watermark.apply_watermark(image)
|
| 871 |
+
|
| 872 |
+
image = self.image_processor.postprocess(image, output_type=output_type)
|
| 873 |
+
|
| 874 |
+
# Offload all models
|
| 875 |
+
self.maybe_free_model_hooks()
|
| 876 |
+
|
| 877 |
+
if not return_dict:
|
| 878 |
+
return (image,)
|
| 879 |
+
|
| 880 |
+
return StableDiffusionXLPipelineOutput(images=image)
|
| 881 |
+
|
| 882 |
+
def get_glyph_attn_mask(self, texts, bboxes):
|
| 883 |
+
resolution = self.default_sample_size
|
| 884 |
+
text_idx_list = self.get_text_start_pos(texts)
|
| 885 |
+
mask_tensor = torch.zeros(
|
| 886 |
+
resolution, resolution, self.byt5_max_length,
|
| 887 |
+
)
|
| 888 |
+
for idx, bbox in enumerate(bboxes):
|
| 889 |
+
# box is in [x, y, w, h] format
|
| 890 |
+
# area of [y:y+h, x:x+w]
|
| 891 |
+
bbox = [int(v * resolution + 0.5) for v in bbox]
|
| 892 |
+
bbox[2] = max(bbox[2], 1)
|
| 893 |
+
bbox[3] = max(bbox[3], 1)
|
| 894 |
+
bbox[0: 2] = np.clip(bbox[0: 2], 0, resolution - 1).tolist()
|
| 895 |
+
bbox[2: 4] = np.clip(bbox[2: 4], 1, resolution).tolist()
|
| 896 |
+
mask_tensor[
|
| 897 |
+
bbox[1]: bbox[1] + bbox[3],
|
| 898 |
+
bbox[0]: bbox[0] + bbox[2],
|
| 899 |
+
text_idx_list[idx]: text_idx_list[idx + 1]
|
| 900 |
+
] = 1
|
| 901 |
+
return mask_tensor
|
| 902 |
+
|
| 903 |
+
def get_text_start_pos(self, texts):
|
| 904 |
+
prompt = "".encode('utf-8')
|
| 905 |
+
'''
|
| 906 |
+
Text "{text}" in {color}, {type}.
|
| 907 |
+
'''
|
| 908 |
+
pos_list = []
|
| 909 |
+
for text in texts:
|
| 910 |
+
pos_list.append(len(prompt))
|
| 911 |
+
text_prompt = f'Text "{text}"'
|
| 912 |
+
|
| 913 |
+
attr_list = ['0', '1']
|
| 914 |
+
|
| 915 |
+
attr_suffix = ", ".join(attr_list)
|
| 916 |
+
text_prompt += " in " + attr_suffix
|
| 917 |
+
text_prompt += ". "
|
| 918 |
+
text_prompt = text_prompt.encode('utf-8')
|
| 919 |
+
|
| 920 |
+
prompt = prompt + text_prompt
|
| 921 |
+
pos_list.append(len(prompt))
|
| 922 |
+
return pos_list
|
glyph_sdxl/modules/__init__.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .simple_byt5_mapper import ByT5Mapper
|
| 2 |
+
from .byt5_block_byt5_mapper import T5EncoderBlockByT5Mapper
|
| 3 |
+
|
| 4 |
+
__all__ = [
|
| 5 |
+
'ByT5Mapper',
|
| 6 |
+
'T5EncoderBlockByT5Mapper',
|
| 7 |
+
]
|
glyph_sdxl/modules/byt5_block_byt5_mapper.py
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
| 4 |
+
|
| 5 |
+
import warnings
|
| 6 |
+
|
| 7 |
+
import logging
|
| 8 |
+
from torch import Tensor
|
| 9 |
+
from diffusers import ModelMixin
|
| 10 |
+
from transformers.models.t5.modeling_t5 import T5LayerSelfAttention, T5LayerFF, T5LayerNorm
|
| 11 |
+
|
| 12 |
+
logger = logging.getLogger(__name__)
|
| 13 |
+
|
| 14 |
+
class T5EncoderBlock(nn.Module):
|
| 15 |
+
def __init__(self, config, has_relative_attention_bias=False):
|
| 16 |
+
super().__init__()
|
| 17 |
+
self.layer = nn.ModuleList()
|
| 18 |
+
self.layer.append(T5LayerSelfAttention(config, has_relative_attention_bias=has_relative_attention_bias))
|
| 19 |
+
self.layer.append(T5LayerFF(config))
|
| 20 |
+
|
| 21 |
+
def forward(
|
| 22 |
+
self,
|
| 23 |
+
hidden_states,
|
| 24 |
+
attention_mask=None,
|
| 25 |
+
position_bias=None,
|
| 26 |
+
layer_head_mask=None,
|
| 27 |
+
output_attentions=False,
|
| 28 |
+
):
|
| 29 |
+
self_attn_past_key_value, cross_attn_past_key_value = None, None
|
| 30 |
+
|
| 31 |
+
self_attention_outputs = self.layer[0](
|
| 32 |
+
hidden_states,
|
| 33 |
+
attention_mask=attention_mask,
|
| 34 |
+
position_bias=position_bias,
|
| 35 |
+
layer_head_mask=layer_head_mask,
|
| 36 |
+
past_key_value=self_attn_past_key_value,
|
| 37 |
+
use_cache=False,
|
| 38 |
+
output_attentions=output_attentions,
|
| 39 |
+
)
|
| 40 |
+
hidden_states, present_key_value_state = self_attention_outputs[:2]
|
| 41 |
+
attention_outputs = self_attention_outputs[2:] # Keep self-attention outputs and relative position weights
|
| 42 |
+
|
| 43 |
+
# clamp inf values to enable fp16 training
|
| 44 |
+
if hidden_states.dtype == torch.float16:
|
| 45 |
+
clamp_value = torch.where(
|
| 46 |
+
torch.isinf(hidden_states).any(),
|
| 47 |
+
torch.finfo(hidden_states.dtype).max - 1000,
|
| 48 |
+
torch.finfo(hidden_states.dtype).max,
|
| 49 |
+
)
|
| 50 |
+
hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value)
|
| 51 |
+
|
| 52 |
+
# Apply Feed Forward layer
|
| 53 |
+
hidden_states = self.layer[-1](hidden_states)
|
| 54 |
+
|
| 55 |
+
# clamp inf values to enable fp16 training
|
| 56 |
+
if hidden_states.dtype == torch.float16:
|
| 57 |
+
clamp_value = torch.where(
|
| 58 |
+
torch.isinf(hidden_states).any(),
|
| 59 |
+
torch.finfo(hidden_states.dtype).max - 1000,
|
| 60 |
+
torch.finfo(hidden_states.dtype).max,
|
| 61 |
+
)
|
| 62 |
+
hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value)
|
| 63 |
+
|
| 64 |
+
outputs = (hidden_states,) + attention_outputs
|
| 65 |
+
|
| 66 |
+
return outputs # hidden-states, present_key_value_states, (self-attention position bias), (self-attention weights), (cross-attention position bias), (cross-attention weights)
|
| 67 |
+
|
| 68 |
+
class T5EncoderBlockByT5Mapper(ModelMixin):
|
| 69 |
+
def __init__(self, byt5_config, num_layers, sdxl_channels=None):
|
| 70 |
+
super().__init__()
|
| 71 |
+
if num_layers > 0:
|
| 72 |
+
self.blocks = nn.ModuleList(
|
| 73 |
+
[
|
| 74 |
+
T5EncoderBlock(
|
| 75 |
+
byt5_config,
|
| 76 |
+
has_relative_attention_bias=bool(i == 0))
|
| 77 |
+
for i in range(num_layers)
|
| 78 |
+
]
|
| 79 |
+
)
|
| 80 |
+
else:
|
| 81 |
+
self.blocks = None
|
| 82 |
+
self.layer_norm = T5LayerNorm(byt5_config.d_model, eps=byt5_config.layer_norm_epsilon)
|
| 83 |
+
if sdxl_channels is not None:
|
| 84 |
+
self.channel_mapper = nn.Linear(byt5_config.d_model, sdxl_channels)
|
| 85 |
+
self.final_layer_norm = T5LayerNorm(sdxl_channels, eps=byt5_config.layer_norm_epsilon)
|
| 86 |
+
else:
|
| 87 |
+
self.channel_mapper = None
|
| 88 |
+
self.final_layer_norm = None
|
| 89 |
+
|
| 90 |
+
def get_extended_attention_mask(
|
| 91 |
+
self, attention_mask: Tensor, input_shape: Tuple[int], device: torch.device = None, dtype: torch.float = None
|
| 92 |
+
) -> Tensor:
|
| 93 |
+
"""
|
| 94 |
+
Makes broadcastable attention and causal masks so that future and masked tokens are ignored.
|
| 95 |
+
|
| 96 |
+
Arguments:
|
| 97 |
+
attention_mask (`torch.Tensor`):
|
| 98 |
+
Mask with ones indicating tokens to attend to, zeros for tokens to ignore.
|
| 99 |
+
input_shape (`Tuple[int]`):
|
| 100 |
+
The shape of the input to the model.
|
| 101 |
+
|
| 102 |
+
Returns:
|
| 103 |
+
`torch.Tensor` The extended attention mask, with a the same dtype as `attention_mask.dtype`.
|
| 104 |
+
"""
|
| 105 |
+
if dtype is None:
|
| 106 |
+
dtype = self.dtype
|
| 107 |
+
|
| 108 |
+
# We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length]
|
| 109 |
+
# ourselves in which case we just need to make it broadcastable to all heads.
|
| 110 |
+
if attention_mask.dim() == 3:
|
| 111 |
+
extended_attention_mask = attention_mask[:, None, :, :]
|
| 112 |
+
elif attention_mask.dim() == 2:
|
| 113 |
+
# Provided a padding mask of dimensions [batch_size, seq_length]
|
| 114 |
+
# - if the model is a decoder, apply a causal mask in addition to the padding mask
|
| 115 |
+
# - if the model is an encoder, make the mask broadcastable to [batch_size, num_heads, seq_length, seq_length]
|
| 116 |
+
extended_attention_mask = attention_mask[:, None, None, :]
|
| 117 |
+
else:
|
| 118 |
+
raise ValueError(
|
| 119 |
+
f"Wrong shape for input_ids (shape {input_shape}) or attention_mask (shape {attention_mask.shape})"
|
| 120 |
+
)
|
| 121 |
+
|
| 122 |
+
# Since attention_mask is 1.0 for positions we want to attend and 0.0 for
|
| 123 |
+
# masked positions, this operation will create a tensor which is 0.0 for
|
| 124 |
+
# positions we want to attend and the dtype's smallest value for masked positions.
|
| 125 |
+
# Since we are adding it to the raw scores before the softmax, this is
|
| 126 |
+
# effectively the same as removing these entirely.
|
| 127 |
+
extended_attention_mask = extended_attention_mask.to(dtype=dtype) # fp16 compatibility
|
| 128 |
+
extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(dtype).min
|
| 129 |
+
return extended_attention_mask
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
def forward(self, inputs_embeds, attention_mask):
|
| 133 |
+
input_shape = inputs_embeds.size()[:-1]
|
| 134 |
+
extended_attention_mask = self.get_extended_attention_mask(attention_mask, input_shape)
|
| 135 |
+
|
| 136 |
+
hidden_states = inputs_embeds
|
| 137 |
+
position_bias = None
|
| 138 |
+
|
| 139 |
+
if self.blocks is not None:
|
| 140 |
+
for layer_module in self.blocks:
|
| 141 |
+
layer_outputs = layer_module(
|
| 142 |
+
hidden_states,
|
| 143 |
+
attention_mask=extended_attention_mask,
|
| 144 |
+
position_bias=position_bias,
|
| 145 |
+
)
|
| 146 |
+
hidden_states, position_bias = layer_outputs
|
| 147 |
+
hidden_states = self.layer_norm(hidden_states)
|
| 148 |
+
if self.channel_mapper is not None:
|
| 149 |
+
hidden_states = self.channel_mapper(hidden_states)
|
| 150 |
+
hidden_states = self.final_layer_norm(hidden_states)
|
| 151 |
+
return hidden_states
|
glyph_sdxl/modules/simple_byt5_mapper.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from diffusers import ModelMixin
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
class ByT5Mapper(ModelMixin):
|
| 5 |
+
def __init__(self, byt5_output_dim, sdxl_text_dim):
|
| 6 |
+
super().__init__()
|
| 7 |
+
self.mapper = nn.Sequential(
|
| 8 |
+
nn.LayerNorm(byt5_output_dim),
|
| 9 |
+
nn.Linear(byt5_output_dim, sdxl_text_dim),
|
| 10 |
+
nn.ReLU(),
|
| 11 |
+
nn.Linear(sdxl_text_dim, sdxl_text_dim)
|
| 12 |
+
)
|
| 13 |
+
|
| 14 |
+
def forward(self, byt5_embedding):
|
| 15 |
+
return self.mapper(byt5_embedding)
|
| 16 |
+
|
glyph_sdxl/utils/__init__.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .parse_config import parse_config
|
| 2 |
+
from .constants import (
|
| 3 |
+
UNET_CKPT_NAME,
|
| 4 |
+
BYT5_CKPT_NAME,
|
| 5 |
+
BYT5_MAPPER_CKPT_NAME,
|
| 6 |
+
INSERTED_ATTN_CKPT_NAME,
|
| 7 |
+
huggingface_cache_dir,
|
| 8 |
+
)
|
| 9 |
+
from .load_pretrained_byt5 import load_byt5_and_byt5_tokenizer
|
| 10 |
+
from .format_prompt import PromptFormat, MultilingualPromptFormat
|
| 11 |
+
|
| 12 |
+
__all__ = [
|
| 13 |
+
'parse_config',
|
| 14 |
+
'UNET_CKPT_NAME',
|
| 15 |
+
'BYT5_CKPT_NAME',
|
| 16 |
+
'BYT5_MAPPER_CKPT_NAME',
|
| 17 |
+
'huggingface_cache_dir',
|
| 18 |
+
'load_byt5_and_byt5_tokenizer',
|
| 19 |
+
'INSERTED_ATTN_CKPT_NAME',
|
| 20 |
+
'PromptFormat',
|
| 21 |
+
'MultilingualPromptFormat',
|
| 22 |
+
]
|
| 23 |
+
|
glyph_sdxl/utils/constants.py
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
UNET_CKPT_NAME = "unet_lora.pt"
|
| 2 |
+
INSERTED_ATTN_CKPT_NAME = "unet_inserted_attn.pt"
|
| 3 |
+
BYT5_CKPT_NAME = "byt5_model.pt"
|
| 4 |
+
BYT5_MAPPER_CKPT_NAME = "byt5_mapper.pt"
|
| 5 |
+
huggingface_cache_dir = None
|
glyph_sdxl/utils/format_prompt.py
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
import webcolors
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def closest_color(requested_color):
|
| 6 |
+
min_colors = {}
|
| 7 |
+
for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
|
| 8 |
+
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
|
| 9 |
+
rd = (r_c - requested_color[0]) ** 2
|
| 10 |
+
gd = (g_c - requested_color[1]) ** 2
|
| 11 |
+
bd = (b_c - requested_color[2]) ** 2
|
| 12 |
+
min_colors[(rd + gd + bd)] = name
|
| 13 |
+
return min_colors[min(min_colors.keys())]
|
| 14 |
+
|
| 15 |
+
def convert_rgb_to_names(rgb_tuple):
|
| 16 |
+
try:
|
| 17 |
+
color_name = webcolors.rgb_to_name(rgb_tuple)
|
| 18 |
+
except ValueError:
|
| 19 |
+
color_name = closest_color(rgb_tuple)
|
| 20 |
+
return color_name
|
| 21 |
+
|
| 22 |
+
class PromptFormat():
|
| 23 |
+
def __init__(
|
| 24 |
+
self,
|
| 25 |
+
font_path: str = 'assets/font_idx_512.json',
|
| 26 |
+
color_path: str = 'assets/color_idx.json',
|
| 27 |
+
):
|
| 28 |
+
with open(font_path, 'r') as f:
|
| 29 |
+
self.font_dict = json.load(f)
|
| 30 |
+
with open(color_path, 'r') as f:
|
| 31 |
+
self.color_dict = json.load(f)
|
| 32 |
+
|
| 33 |
+
def format_checker(self, texts, styles):
|
| 34 |
+
assert len(texts) == len(styles), 'length of texts must be equal to length of styles'
|
| 35 |
+
for style in styles:
|
| 36 |
+
assert style['font-family'] in self.font_dict, f"invalid font-family: {style['font-family']}"
|
| 37 |
+
rgb_color = webcolors.hex_to_rgb(style['color'])
|
| 38 |
+
color_name = convert_rgb_to_names(rgb_color)
|
| 39 |
+
assert color_name in self.color_dict, f"invalid color hex {color_name}"
|
| 40 |
+
|
| 41 |
+
def format_prompt(self, texts, styles):
|
| 42 |
+
self.format_checker(texts, styles)
|
| 43 |
+
|
| 44 |
+
prompt = ""
|
| 45 |
+
'''
|
| 46 |
+
Text "{text}" in {color}, {type}.
|
| 47 |
+
'''
|
| 48 |
+
for text, style in zip(texts, styles):
|
| 49 |
+
text_prompt = f'Text "{text}"'
|
| 50 |
+
|
| 51 |
+
attr_list = []
|
| 52 |
+
|
| 53 |
+
# format color
|
| 54 |
+
hex_color = style["color"]
|
| 55 |
+
rgb_color = webcolors.hex_to_rgb(hex_color)
|
| 56 |
+
color_name = convert_rgb_to_names(rgb_color)
|
| 57 |
+
attr_list.append(f"<color-{self.color_dict[color_name]}>")
|
| 58 |
+
|
| 59 |
+
# format font
|
| 60 |
+
attr_list.append(f"<font-{self.font_dict[style['font-family']]}>")
|
| 61 |
+
attr_suffix = ", ".join(attr_list)
|
| 62 |
+
text_prompt += " in " + attr_suffix
|
| 63 |
+
text_prompt += ". "
|
| 64 |
+
|
| 65 |
+
prompt = prompt + text_prompt
|
| 66 |
+
return prompt
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
class MultilingualPromptFormat():
|
| 70 |
+
def __init__(
|
| 71 |
+
self,
|
| 72 |
+
font_path: str = 'assets/multilingual_10-lang_idx.json',
|
| 73 |
+
color_path: str = 'assets/color_idx.json',
|
| 74 |
+
):
|
| 75 |
+
with open(font_path, 'r') as f:
|
| 76 |
+
self.font_dict = json.load(f)
|
| 77 |
+
with open(color_path, 'r') as f:
|
| 78 |
+
self.color_dict = json.load(f)
|
| 79 |
+
|
| 80 |
+
def format_checker(self, texts, styles):
|
| 81 |
+
assert len(texts) == len(styles), 'length of texts must be equal to length of styles'
|
| 82 |
+
for style in styles:
|
| 83 |
+
assert style['font-family'] in self.font_dict, f"invalid font-family: {style['font-family']}"
|
| 84 |
+
rgb_color = webcolors.hex_to_rgb(style['color'])
|
| 85 |
+
color_name = convert_rgb_to_names(rgb_color)
|
| 86 |
+
assert color_name in self.color_dict, f"invalid color hex {color_name}"
|
| 87 |
+
|
| 88 |
+
def format_prompt(self, texts, styles):
|
| 89 |
+
self.format_checker(texts, styles)
|
| 90 |
+
|
| 91 |
+
prompt = ""
|
| 92 |
+
'''
|
| 93 |
+
Text "{text}" in {color}, {type}.
|
| 94 |
+
'''
|
| 95 |
+
for text, style in zip(texts, styles):
|
| 96 |
+
text_prompt = f'Text "{text}"'
|
| 97 |
+
|
| 98 |
+
attr_list = []
|
| 99 |
+
|
| 100 |
+
# format color
|
| 101 |
+
hex_color = style["color"]
|
| 102 |
+
rgb_color = webcolors.hex_to_rgb(hex_color)
|
| 103 |
+
color_name = convert_rgb_to_names(rgb_color)
|
| 104 |
+
attr_list.append(f"<color-{self.color_dict[color_name]}>")
|
| 105 |
+
|
| 106 |
+
# format font
|
| 107 |
+
attr_list.append(f"<{style['font-family'][:2]}-font-{self.font_dict[style['font-family']]}>")
|
| 108 |
+
attr_suffix = ", ".join(attr_list)
|
| 109 |
+
text_prompt += " in " + attr_suffix
|
| 110 |
+
text_prompt += ". "
|
| 111 |
+
|
| 112 |
+
prompt = prompt + text_prompt
|
| 113 |
+
return prompt
|
glyph_sdxl/utils/load_pretrained_byt5.py
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
|
| 3 |
+
from transformers import AutoTokenizer, T5ForConditionalGeneration
|
| 4 |
+
from diffusers.utils import logging
|
| 5 |
+
|
| 6 |
+
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
| 7 |
+
|
| 8 |
+
def add_special_token(tokenizer, text_encoder, add_color, add_font, color_ann_path, font_ann_path, multilingual=False):
|
| 9 |
+
with open(font_ann_path, 'r') as f:
|
| 10 |
+
idx_font_dict = json.load(f)
|
| 11 |
+
with open(color_ann_path, 'r') as f:
|
| 12 |
+
idx_color_dict = json.load(f)
|
| 13 |
+
|
| 14 |
+
if multilingual:
|
| 15 |
+
font_token = []
|
| 16 |
+
for font_code in idx_font_dict:
|
| 17 |
+
prefix = font_code[:2]
|
| 18 |
+
font_token.append(f'<{prefix}-font-{idx_font_dict[font_code]}>')
|
| 19 |
+
else:
|
| 20 |
+
font_token = [f'<font-{i}>' for i in range(len(idx_font_dict))]
|
| 21 |
+
color_token = [f'<color-{i}>' for i in range(len(idx_color_dict))]
|
| 22 |
+
additional_special_tokens = []
|
| 23 |
+
if add_color:
|
| 24 |
+
additional_special_tokens += color_token
|
| 25 |
+
if add_font:
|
| 26 |
+
additional_special_tokens += font_token
|
| 27 |
+
tokenizer.add_tokens(additional_special_tokens, special_tokens=True)
|
| 28 |
+
text_encoder.resize_token_embeddings(len(tokenizer))
|
| 29 |
+
|
| 30 |
+
def load_byt5_and_byt5_tokenizer(
|
| 31 |
+
byt5_name='google/byt5-small',
|
| 32 |
+
special_token=False,
|
| 33 |
+
color_special_token=False,
|
| 34 |
+
font_special_token=False,
|
| 35 |
+
color_ann_path='assets/color_idx.json',
|
| 36 |
+
font_ann_path='assets/font_idx_512.json',
|
| 37 |
+
huggingface_cache_dir=None,
|
| 38 |
+
multilingual=False,
|
| 39 |
+
):
|
| 40 |
+
byt5_tokenizer = AutoTokenizer.from_pretrained(
|
| 41 |
+
byt5_name, cache_dir=huggingface_cache_dir,
|
| 42 |
+
)
|
| 43 |
+
byt5_text_encoder = T5ForConditionalGeneration.from_pretrained(
|
| 44 |
+
byt5_name, cache_dir=huggingface_cache_dir,
|
| 45 |
+
).get_encoder()
|
| 46 |
+
|
| 47 |
+
if special_token:
|
| 48 |
+
add_special_token(
|
| 49 |
+
byt5_tokenizer,
|
| 50 |
+
byt5_text_encoder,
|
| 51 |
+
add_color=color_special_token,
|
| 52 |
+
add_font=font_special_token,
|
| 53 |
+
color_ann_path=color_ann_path,
|
| 54 |
+
font_ann_path=font_ann_path,
|
| 55 |
+
multilingual=multilingual,
|
| 56 |
+
)
|
| 57 |
+
|
| 58 |
+
logger.info(f'Loaded original byt5 weight')
|
| 59 |
+
|
| 60 |
+
return byt5_text_encoder, byt5_tokenizer
|
glyph_sdxl/utils/parse_config.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import os
|
| 3 |
+
import os.path as osp
|
| 4 |
+
from mmengine.config import Config
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def parse_config(path=None):
|
| 8 |
+
if path is None:
|
| 9 |
+
parser = argparse.ArgumentParser()
|
| 10 |
+
parser.add_argument('config_dir', type=str)
|
| 11 |
+
args = parser.parse_args()
|
| 12 |
+
path = args.config_dir
|
| 13 |
+
config = Config.fromfile(path)
|
| 14 |
+
|
| 15 |
+
config.config_dir = path
|
| 16 |
+
|
| 17 |
+
return config
|
inference_multilingual.py
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import os
|
| 3 |
+
import json
|
| 4 |
+
import copy
|
| 5 |
+
import os.path as osp
|
| 6 |
+
|
| 7 |
+
import torch
|
| 8 |
+
from diffusers import UNet2DConditionModel, AutoencoderKL
|
| 9 |
+
from diffusers.models.attention import BasicTransformerBlock
|
| 10 |
+
from peft import LoraConfig
|
| 11 |
+
from peft.utils import set_peft_model_state_dict
|
| 12 |
+
from transformers import PretrainedConfig
|
| 13 |
+
|
| 14 |
+
from diffusers import DPMSolverMultistepScheduler
|
| 15 |
+
|
| 16 |
+
from glyph_sdxl.utils import (
|
| 17 |
+
parse_config,
|
| 18 |
+
UNET_CKPT_NAME,
|
| 19 |
+
huggingface_cache_dir,
|
| 20 |
+
load_byt5_and_byt5_tokenizer,
|
| 21 |
+
BYT5_MAPPER_CKPT_NAME,
|
| 22 |
+
INSERTED_ATTN_CKPT_NAME,
|
| 23 |
+
BYT5_CKPT_NAME,
|
| 24 |
+
MultilingualPromptFormat,
|
| 25 |
+
)
|
| 26 |
+
from glyph_sdxl.custom_diffusers import (
|
| 27 |
+
StableDiffusionGlyphXLPipeline,
|
| 28 |
+
CrossAttnInsertBasicTransformerBlock,
|
| 29 |
+
)
|
| 30 |
+
from glyph_sdxl.modules import T5EncoderBlockByT5Mapper
|
| 31 |
+
|
| 32 |
+
byt5_mapper_dict = [T5EncoderBlockByT5Mapper]
|
| 33 |
+
byt5_mapper_dict = {mapper.__name__: mapper for mapper in byt5_mapper_dict}
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def import_model_class_from_model_name_or_path(
|
| 37 |
+
pretrained_model_name_or_path: str, revision: str, subfolder: str = "text_encoder",
|
| 38 |
+
):
|
| 39 |
+
text_encoder_config = PretrainedConfig.from_pretrained(
|
| 40 |
+
pretrained_model_name_or_path,
|
| 41 |
+
subfolder=subfolder,
|
| 42 |
+
revision=revision,
|
| 43 |
+
)
|
| 44 |
+
model_class = text_encoder_config.architectures[0]
|
| 45 |
+
|
| 46 |
+
if model_class == "CLIPTextModel":
|
| 47 |
+
from transformers import CLIPTextModel
|
| 48 |
+
|
| 49 |
+
return CLIPTextModel
|
| 50 |
+
elif model_class == "CLIPTextModelWithProjection":
|
| 51 |
+
from transformers import CLIPTextModelWithProjection
|
| 52 |
+
|
| 53 |
+
return CLIPTextModelWithProjection
|
| 54 |
+
else:
|
| 55 |
+
raise ValueError(f"{model_class} is not supported.")
|
| 56 |
+
|
| 57 |
+
if __name__ == "__main__":
|
| 58 |
+
parser = argparse.ArgumentParser()
|
| 59 |
+
parser.add_argument("config_dir", type=str)
|
| 60 |
+
parser.add_argument("ckpt_dir", type=str)
|
| 61 |
+
parser.add_argument("ann_path", type=str, default='examples/shower.json')
|
| 62 |
+
parser.add_argument("--out_folder", type=str, default='None')
|
| 63 |
+
parser.add_argument("--device", type=str, default='cuda')
|
| 64 |
+
parser.add_argument("--sampler", type=str, choices=['euler', 'dpm'])
|
| 65 |
+
parser.add_argument("--cfg", type=float, default=5.0)
|
| 66 |
+
args = parser.parse_args()
|
| 67 |
+
|
| 68 |
+
config = parse_config(args.config_dir)
|
| 69 |
+
|
| 70 |
+
text_encoder_cls_one = import_model_class_from_model_name_or_path(
|
| 71 |
+
config.pretrained_model_name_or_path, config.revision,
|
| 72 |
+
)
|
| 73 |
+
text_encoder_cls_two = import_model_class_from_model_name_or_path(
|
| 74 |
+
config.pretrained_model_name_or_path, config.revision, subfolder="text_encoder_2",
|
| 75 |
+
)
|
| 76 |
+
text_encoder_one = text_encoder_cls_one.from_pretrained(
|
| 77 |
+
config.pretrained_model_name_or_path, subfolder="text_encoder", revision=config.revision,
|
| 78 |
+
cache_dir=huggingface_cache_dir,
|
| 79 |
+
)
|
| 80 |
+
text_encoder_two = text_encoder_cls_two.from_pretrained(
|
| 81 |
+
config.pretrained_model_name_or_path, subfolder="text_encoder_2", revision=config.revision,
|
| 82 |
+
cache_dir=huggingface_cache_dir,
|
| 83 |
+
)
|
| 84 |
+
|
| 85 |
+
unet = UNet2DConditionModel.from_pretrained(
|
| 86 |
+
config.pretrained_model_name_or_path,
|
| 87 |
+
subfolder="unet",
|
| 88 |
+
revision=config.revision,
|
| 89 |
+
cache_dir=huggingface_cache_dir,
|
| 90 |
+
)
|
| 91 |
+
|
| 92 |
+
vae_path = (
|
| 93 |
+
config.pretrained_model_name_or_path
|
| 94 |
+
if config.pretrained_vae_model_name_or_path is None
|
| 95 |
+
else config.pretrained_vae_model_name_or_path
|
| 96 |
+
)
|
| 97 |
+
vae = AutoencoderKL.from_pretrained(
|
| 98 |
+
vae_path, subfolder="vae" if config.pretrained_vae_model_name_or_path is None else None,
|
| 99 |
+
revision=config.revision,
|
| 100 |
+
cache_dir=huggingface_cache_dir,
|
| 101 |
+
)
|
| 102 |
+
|
| 103 |
+
byt5_model, byt5_tokenizer = load_byt5_and_byt5_tokenizer(
|
| 104 |
+
**config.byt5_config,
|
| 105 |
+
huggingface_cache_dir=huggingface_cache_dir,
|
| 106 |
+
)
|
| 107 |
+
|
| 108 |
+
inference_dtype = torch.float32
|
| 109 |
+
if config.inference_dtype == "fp16":
|
| 110 |
+
inference_dtype = torch.float16
|
| 111 |
+
elif config.inference_dtype == "bf16":
|
| 112 |
+
inference_dtype = torch.bfloat16
|
| 113 |
+
|
| 114 |
+
if config.pretrained_vae_model_name_or_path is None:
|
| 115 |
+
vae.to(args.device, dtype=torch.float32)
|
| 116 |
+
else:
|
| 117 |
+
vae.to(args.device, dtype=inference_dtype)
|
| 118 |
+
text_encoder_one.to(args.device, dtype=inference_dtype)
|
| 119 |
+
text_encoder_two.to(args.device, dtype=inference_dtype)
|
| 120 |
+
byt5_model.to(args.device)
|
| 121 |
+
unet.to(args.device, dtype=inference_dtype)
|
| 122 |
+
|
| 123 |
+
inserted_new_modules_para_set = set()
|
| 124 |
+
for name, module in unet.named_modules():
|
| 125 |
+
if isinstance(module, BasicTransformerBlock) and name in config.attn_block_to_modify:
|
| 126 |
+
parent_module = unet
|
| 127 |
+
for n in name.split(".")[:-1]:
|
| 128 |
+
parent_module = getattr(parent_module, n)
|
| 129 |
+
new_block = CrossAttnInsertBasicTransformerBlock.from_transformer_block(
|
| 130 |
+
module,
|
| 131 |
+
byt5_model.config.d_model if config.byt5_mapper_config.sdxl_channels is None else config.byt5_mapper_config.sdxl_channels,
|
| 132 |
+
)
|
| 133 |
+
new_block.requires_grad_(False)
|
| 134 |
+
for inserted_module_name, inserted_module in zip(
|
| 135 |
+
new_block.get_inserted_modules_names(),
|
| 136 |
+
new_block.get_inserted_modules()
|
| 137 |
+
):
|
| 138 |
+
inserted_module.requires_grad_(True)
|
| 139 |
+
for para_name, para in inserted_module.named_parameters():
|
| 140 |
+
para_key = name + '.' + inserted_module_name + '.' + para_name
|
| 141 |
+
assert para_key not in inserted_new_modules_para_set
|
| 142 |
+
inserted_new_modules_para_set.add(para_key)
|
| 143 |
+
for origin_module in new_block.get_origin_modules():
|
| 144 |
+
origin_module.to(args.device, dtype=inference_dtype)
|
| 145 |
+
parent_module.register_module(name.split(".")[-1], new_block)
|
| 146 |
+
print(f"inserted cross attn block to {name}")
|
| 147 |
+
|
| 148 |
+
byt5_mapper = byt5_mapper_dict[config.byt5_mapper_type](
|
| 149 |
+
byt5_model.config,
|
| 150 |
+
**config.byt5_mapper_config,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
unet_lora_target_modules = [
|
| 154 |
+
"attn1.to_k", "attn1.to_q", "attn1.to_v", "attn1.to_out.0",
|
| 155 |
+
"attn2.to_k", "attn2.to_q", "attn2.to_v", "attn2.to_out.0",
|
| 156 |
+
]
|
| 157 |
+
unet_lora_config = LoraConfig(
|
| 158 |
+
r=config.unet_lora_rank,
|
| 159 |
+
lora_alpha=config.unet_lora_rank,
|
| 160 |
+
init_lora_weights="gaussian",
|
| 161 |
+
target_modules=unet_lora_target_modules,
|
| 162 |
+
)
|
| 163 |
+
unet.add_adapter(unet_lora_config)
|
| 164 |
+
|
| 165 |
+
unet_lora_layers_para = torch.load(osp.join(args.ckpt_dir, UNET_CKPT_NAME), map_location='cpu')
|
| 166 |
+
incompatible_keys = set_peft_model_state_dict(unet, unet_lora_layers_para, adapter_name="default")
|
| 167 |
+
if getattr(incompatible_keys, 'unexpected_keys', []) == []:
|
| 168 |
+
print(f"loaded unet_lora_layers_para")
|
| 169 |
+
else:
|
| 170 |
+
print(f"unet_lora_layers has unexpected_keys: {getattr(incompatible_keys, 'unexpected_keys', None)}")
|
| 171 |
+
|
| 172 |
+
inserted_attn_module_paras = torch.load(osp.join(args.ckpt_dir, INSERTED_ATTN_CKPT_NAME), map_location='cpu')
|
| 173 |
+
missing_keys, unexpected_keys = unet.load_state_dict(inserted_attn_module_paras, strict=False)
|
| 174 |
+
assert len(unexpected_keys) == 0, unexpected_keys
|
| 175 |
+
|
| 176 |
+
byt5_mapper_para = torch.load(osp.join(args.ckpt_dir, BYT5_MAPPER_CKPT_NAME), map_location='cpu')
|
| 177 |
+
byt5_mapper.load_state_dict(byt5_mapper_para)
|
| 178 |
+
|
| 179 |
+
byt5_model_para = torch.load(osp.join(args.ckpt_dir, BYT5_CKPT_NAME), map_location='cpu')
|
| 180 |
+
byt5_model.load_state_dict(byt5_model_para)
|
| 181 |
+
|
| 182 |
+
pipeline = StableDiffusionGlyphXLPipeline.from_pretrained(
|
| 183 |
+
config.pretrained_model_name_or_path,
|
| 184 |
+
vae=vae,
|
| 185 |
+
text_encoder=text_encoder_one,
|
| 186 |
+
text_encoder_2=text_encoder_two,
|
| 187 |
+
byt5_text_encoder=byt5_model,
|
| 188 |
+
byt5_tokenizer=byt5_tokenizer,
|
| 189 |
+
byt5_mapper=byt5_mapper,
|
| 190 |
+
unet=unet,
|
| 191 |
+
byt5_max_length=config.byt5_max_length,
|
| 192 |
+
revision=config.revision,
|
| 193 |
+
torch_dtype=inference_dtype,
|
| 194 |
+
safety_checker=None,
|
| 195 |
+
cache_dir=huggingface_cache_dir,
|
| 196 |
+
)
|
| 197 |
+
|
| 198 |
+
if args.sampler == 'dpm':
|
| 199 |
+
pipeline.scheduler = DPMSolverMultistepScheduler.from_pretrained(
|
| 200 |
+
config.pretrained_model_name_or_path,
|
| 201 |
+
subfolder="scheduler",
|
| 202 |
+
use_karras_sigmas=True,
|
| 203 |
+
)
|
| 204 |
+
|
| 205 |
+
pipeline = pipeline.to(args.device)
|
| 206 |
+
|
| 207 |
+
with open(args.ann_path, 'r') as f:
|
| 208 |
+
ann = json.load(f)
|
| 209 |
+
|
| 210 |
+
os.makedirs(args.out_folder, exist_ok=True)
|
| 211 |
+
|
| 212 |
+
prompt_format = MultilingualPromptFormat()
|
| 213 |
+
|
| 214 |
+
texts = copy.deepcopy(ann['texts'])
|
| 215 |
+
bboxes = copy.deepcopy(ann['bbox'])
|
| 216 |
+
styles = copy.deepcopy(ann['styles'])
|
| 217 |
+
|
| 218 |
+
text_prompt = prompt_format.format_prompt(texts, styles)
|
| 219 |
+
|
| 220 |
+
if 'seed' not in ann:
|
| 221 |
+
generator = torch.Generator(device=args.device)
|
| 222 |
+
else:
|
| 223 |
+
generator = torch.Generator(device=args.device).manual_seed(ann['seed'])
|
| 224 |
+
|
| 225 |
+
with torch.cuda.amp.autocast():
|
| 226 |
+
image = pipeline(
|
| 227 |
+
prompt=ann['bg_prompt'],
|
| 228 |
+
text_prompt=text_prompt,
|
| 229 |
+
texts=texts,
|
| 230 |
+
bboxes=bboxes,
|
| 231 |
+
num_inference_steps=50,
|
| 232 |
+
generator=generator,
|
| 233 |
+
text_attn_mask=None,
|
| 234 |
+
guidance_scale=args.cfg,
|
| 235 |
+
).images[0]
|
| 236 |
+
image.save(f'{args.out_folder}/result.png')
|
requirements.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
transformers==4.36.2
|
| 2 |
+
diffusers==0.26.1
|
| 3 |
+
mmengine
|
| 4 |
+
accelerate
|
| 5 |
+
torch==2.2.0
|
| 6 |
+
torchvision==0.17.0
|
| 7 |
+
deepspeed
|
| 8 |
+
peft
|
| 9 |
+
webcolors
|
| 10 |
+
gradio
|