# `WritingScript`

A writing system, written as its four-letter code: `Latn`, `Jpan`.

Use it when the script matters separately from the language, such as Serbian in Latin or Cyrillic, or choosing a font. Most apps want [`Language`](/docs/types/type-language.md) or [`Locale`](/docs/types/type-locale.md).

## Shape

One of 224 values, such as `WritingScript.adlm`, written `Adlm`. Details has them.

## Example

```jadpo
WritingScript.latn
```

`text.parse(raw, as: WritingScript)` reads one from text that comes from outside. Text that isn't one at all fails `malformed`, such as `latin`, `Lat` or `Latnn`.

## Good to know

- The value's name is lower case, `WritingScript.latn`, but it is written `Latn`.
- `==` tells you whether two are the same. `<` and `list.sort_by` don't take it.

## In JSON

A string, in a request, a response or `json.write`:

```json
"Jpan"
"Latn"
"Zyyy"
```

## Details

<details>
<summary>Text form, storage, how it is shown, and operations</summary>

`WritingScript` is in the group Places, and has been in Jadpo since 0.1.0.

### Every value

Every value, each after `WritingScript.`, with how it is written:

`adlm` (`Adlm`), `afak` (`Afak`), `aghb` (`Aghb`), `ahom` (`Ahom`), `arab` (`Arab`), `aran` (`Aran`), `armi` (`Armi`), `armn` (`Armn`), `avst` (`Avst`), `bali` (`Bali`), `bamu` (`Bamu`), `bass` (`Bass`), `batk` (`Batk`), `beng` (`Beng`), `berf` (`Berf`), `bhks` (`Bhks`), `blis` (`Blis`), `bopo` (`Bopo`), `brah` (`Brah`), `brai` (`Brai`), `bugi` (`Bugi`), `buhd` (`Buhd`), `cakm` (`Cakm`), `cans` (`Cans`), `cari` (`Cari`), `cham` (`Cham`), `cher` (`Cher`), `chis` (`Chis`), `chrs` (`Chrs`), `cirt` (`Cirt`), `copt` (`Copt`), `cpmn` (`Cpmn`), `cprt` (`Cprt`), `cyrl` (`Cyrl`), `cyrs` (`Cyrs`), `deva` (`Deva`), `diak` (`Diak`), `dogr` (`Dogr`), `dsrt` (`Dsrt`), `dupl` (`Dupl`), `egyd` (`Egyd`), `egyh` (`Egyh`), `egyp` (`Egyp`), `elba` (`Elba`), `elym` (`Elym`), `ethi` (`Ethi`), `gara` (`Gara`), `geok` (`Geok`), `geor` (`Geor`), `glag` (`Glag`), `gong` (`Gong`), `gonm` (`Gonm`), `goth` (`Goth`), `gran` (`Gran`), `grek` (`Grek`), `gujr` (`Gujr`), `gukh` (`Gukh`), `guru` (`Guru`), `hanb` (`Hanb`), `hang` (`Hang`), `hani` (`Hani`), `hano` (`Hano`), `hans` (`Hans`), `hant` (`Hant`), `hatr` (`Hatr`), `hebr` (`Hebr`), `hira` (`Hira`), `hluw` (`Hluw`), `hmng` (`Hmng`), `hmnp` (`Hmnp`), `hntl` (`Hntl`), `hrkt` (`Hrkt`), `hung` (`Hung`), `inds` (`Inds`), `ital` (`Ital`), `jamo` (`Jamo`), `java` (`Java`), `jpan` (`Jpan`), `jurc` (`Jurc`), `kali` (`Kali`), `kana` (`Kana`), `kawi` (`Kawi`), `khar` (`Khar`), `khmr` (`Khmr`), `khoj` (`Khoj`), `kitl` (`Kitl`), `kits` (`Kits`), `knda` (`Knda`), `kore` (`Kore`), `kpel` (`Kpel`), `krai` (`Krai`), `kthi` (`Kthi`), `lana` (`Lana`), `laoo` (`Laoo`), `latf` (`Latf`), `latg` (`Latg`), `latn` (`Latn`), `leke` (`Leke`), `lepc` (`Lepc`), `limb` (`Limb`), `lina` (`Lina`), `linb` (`Linb`), `lisu` (`Lisu`), `loma` (`Loma`), `lyci` (`Lyci`), `lydi` (`Lydi`), `mahj` (`Mahj`), `maka` (`Maka`), `mand` (`Mand`), `mani` (`Mani`), `marc` (`Marc`), `maya` (`Maya`), `medf` (`Medf`), `mend` (`Mend`), `merc` (`Merc`), `mero` (`Mero`), `mlym` (`Mlym`), `modi` (`Modi`), `mong` (`Mong`), `moon` (`Moon`), `mroo` (`Mroo`), `mtei` (`Mtei`), `mult` (`Mult`), `mymr` (`Mymr`), `nagm` (`Nagm`), `nand` (`Nand`), `narb` (`Narb`), `nbat` (`Nbat`), `newa` (`Newa`), `nkdb` (`Nkdb`), `nkgb` (`Nkgb`), `nkoo` (`Nkoo`), `nshu` (`Nshu`), `ogam` (`Ogam`), `olck` (`Olck`), `onao` (`Onao`), `orkh` (`Orkh`), `orya` (`Orya`), `osge` (`Osge`), `osma` (`Osma`), `ougr` (`Ougr`), `palm` (`Palm`), `pauc` (`Pauc`), `pcun` (`Pcun`), `pelm` (`Pelm`), `perm` (`Perm`), `phag` (`Phag`), `phli` (`Phli`), `phlp` (`Phlp`), `phlv` (`Phlv`), `phnx` (`Phnx`), `piqd` (`Piqd`), `plrd` (`Plrd`), `prti` (`Prti`), `psin` (`Psin`), `ranj` (`Ranj`), `rjng` (`Rjng`), `rohg` (`Rohg`), `roro` (`Roro`), `runr` (`Runr`), `samr` (`Samr`), `sara` (`Sara`), `sarb` (`Sarb`), `saur` (`Saur`), `seal` (`Seal`), `sgnw` (`Sgnw`), `shaw` (`Shaw`), `shrd` (`Shrd`), `shui` (`Shui`), `sidd` (`Sidd`), `sidt` (`Sidt`), `sind` (`Sind`), `sinh` (`Sinh`), `sogd` (`Sogd`), `sogo` (`Sogo`), `sora` (`Sora`), `soyo` (`Soyo`), `sund` (`Sund`), `sunu` (`Sunu`), `sylo` (`Sylo`), `syrc` (`Syrc`), `syre` (`Syre`), `syrj` (`Syrj`), `syrn` (`Syrn`), `tagb` (`Tagb`), `takr` (`Takr`), `tale` (`Tale`), `talu` (`Talu`), `taml` (`Taml`), `tang` (`Tang`), `tavt` (`Tavt`), `tayo` (`Tayo`), `telu` (`Telu`), `teng` (`Teng`), `tfng` (`Tfng`), `tglg` (`Tglg`), `thaa` (`Thaa`), `thai` (`Thai`), `tibt` (`Tibt`), `tirh` (`Tirh`), `tnsa` (`Tnsa`), `todr` (`Todr`), `tols` (`Tols`), `toto` (`Toto`), `tutg` (`Tutg`), `ugar` (`Ugar`), `vaii` (`Vaii`), `visp` (`Visp`), `vith` (`Vith`), `wara` (`Wara`), `wcho` (`Wcho`), `wole` (`Wole`), `xpeo` (`Xpeo`), `xsux` (`Xsux`), `yezi` (`Yezi`), `yiii` (`Yiii`), `zanb` (`Zanb`), `zinh` (`Zinh`), `zmth` (`Zmth`), `zsye` (`Zsye`), `zsym` (`Zsym`), `zxxx` (`Zxxx`), `zyyy` (`Zyyy`), `zzzz` (`Zzzz`).

### Text form

`text.from` writes one standard text form, the same form `text.parse` reads back: `Jpan`, `Latn` and `Zyyy`.

### How it is stored

It is stored in one column named for the field, of type `text`. `Latn` is stored as `'Latn'`.

### How it is shown to people

`text.format(value, locale:)` shows it to people in their locale.

With `locale: Locale.en_gb`:

| Value | Shown |
|---|---|
| `Jpan` | `Japanese` |
| `Latn` | `Latin` |
| `Zyyy` | `Common` |

### Operations

It also takes `text.parse`, `text.from`, `text.format`, `json.read`, `json.write` and `==`. [How every standard type behaves](/docs/every-standard-type-meets-one-contract.md) says how they work.

</details>
