Jewelry AI - scripts and typography
A change of writing direction is the only language change that restarts the app
Moving into Arabic, or out of it, restarts the app, because the direction of the writing can be applied only at a fresh start. The lettering changes separately, wherever the app's bundled fonts do not carry the characters a language needs.
Direction is the trigger, not the language
Arabic is where a seller notices this, but Arabic is not the reason. The restart follows a change of writing direction, and it follows that change in both directions: from a left-to-right language into Arabic, and from Arabic back out to one.
Between any two languages that share a direction, nothing reloads. The interface changes on the screen you are already looking at, which is why a seller moving between two Latin-script languages sees no restart at all and should not wait for one.
What this page settles about direction is the restart itself. How a right-to-left interface then arranges its screens is a separate and wider subject, and no inventory of it is given here.
Where the lettering changes, and what decides it
The font change is a second mechanism, independent of the restart. It is decided by what the bundled font files can draw.
- Arabic and CJK screens are drawn entirely with the system font.
- The bundled typeface is set aside for both body text and headings in Arabic, Chinese, Japanese and Korean (apps/jewelry-mobile/src/theme/typography-for-locale.ts, delete adapted.fontFamily).
- Russian and Vietnamese fall back for headings only.
- Body text in those languages keeps the app's bundled typeface, so headings and paragraphs on the same screen are drawn with different type.
- The measurement is of characters, not of languages.
- The decision follows the coverage measured from the bundled font files (font-coverage.generated.ts). A language is handed over because the bundled files do not carry the characters it needs, not because of any judgement about that language.
- Line height and uppercasing move with the font change.
- In Arabic and CJK the line height is increased and automatic uppercasing is switched off. The result is a deliberate step away from the Latin-script typography rather than an accident of rendering.
What each group of languages is drawn with
These rows describe what draws the characters on screen. Each grouping follows the coverage measured from the bundled font files.
| Language group | Body text | Headings | Also adjusted |
|---|---|---|---|
| Arabic | The device's system font | The device's system font | Line height increased; automatic uppercasing switched off |
| Chinese, Japanese, Korean | The device's system font | The device's system font | Line height increased; automatic uppercasing switched off |
| Russian, Vietnamese | The app's bundled typeface | The device's system font | Nothing further |
| Languages the bundled files already cover | The app's bundled typeface | The app's bundled typeface | Nothing further |
Behaviours that are easily read as faults
Each row below pairs the appearance with the mechanism that produced it.
The restart is taken for a crash, and Arabic is avoided because of it.
Check whether the change crossed the direction boundary. A reload at exactly that moment is the direction being applied, and moving between languages that share a direction produces no reload.
A screen captured in Arabic or Chinese is judged against one captured in a Latin-script language and called a rendering error.
Those screens are drawn with the device's system font because the bundled files do not cover the script. Judge them against each other, and expect the wider line spacing that comes with them.
A heading that does not match its paragraph in Russian or Vietnamese is treated as a broken screen.
Only the headings fall back in those two languages. Two typefaces on one screen is the expected outcome there, not a sign that something failed to load.
A restart is expected as confirmation that a language change was applied.
The restart confirms a direction change and nothing else. For every other language the interface has already changed on the screen in front of you.
What is not described here
This page covers the restart and the typography that follows a script change. The following are outside it.
- Where the interface language is changed, and what such a change is written to, are not covered on this page.
- Which language the app opens in when nothing has been chosen is decided by a separate rule that is not repeated here.
- Beyond the direction change itself, how a right-to-left interface arranges its screens is not inventoried on this page.
- How long the reload takes is not something this page states.
Questions
The app closed and opened again when I chose Arabic. Is something wrong?
No. A change of writing direction can be applied only at a fresh start, so the app reloads itself at that moment. The reload follows the direction change, and it happens again if you move from Arabic back to a left-to-right language.
Why did switching between two Latin-script languages not restart anything?
Those languages share a writing direction, so there is nothing that needs a fresh start. The interface changes on the screen you already have open, and the absence of a restart does not mean the change was missed.
Why does Chinese use different type from the rest of the app?
In Chinese, Japanese, Korean and Arabic the app's bundled typeface is set aside and the device's system font draws the screen, because the bundled font files do not carry the characters those scripts need. Line height is increased and automatic uppercasing is switched off at the same time.
Why do only the headings look different in Russian?
Russian and Vietnamese fall back for headings alone; body text keeps the app's bundled typeface. The split follows what the bundled files can draw, so the two parts of the screen are drawn with different type.