i18n: a right-to-left message leads with its mark
gpui sets no paragraph direction, so CoreText took a Hebrew line whose first strong character was Latin, or the left-to-right mark of a signed number, as left to right and swapped its parts. I18n::text now leads a right-to-left message with U+200F; the number keeps CLDR's U+200E, so its sign stays at the digits' left. The demo adds a change that opens with a signed number, in every catalog; under Hebrew it lies at the line's right end. A test holds the marks on a message that starts with a number and one that starts with a Latin name.
This commit is contained in:
1 parent
83ecacde65
commit
451fdcc7c0
4 files changed
+40
-6
No files matched your search
@@ -190,7 +190,7 @@ Ely GPUI Component. A component library for GPUI, in light and dark.
|
||||
- A pane the window's blur shows through is `shell::Vibrancy`, filled with the palette's `glass`, in a window opened `WindowBackgroundAppearance::Blurred`: vibrancy on macOS, acrylic on Windows. gpui 0.2.2 has no Mica.
|
||||
- The chart's hues go by `theme::HUE_NAMES`, for an event's color and a label's alike.
|
||||
- Text whose every character counts, encoded data and keys, goes through `typography::literal`: JetBrains Mono draws `==` and `->` as ligatures (`devtools::Encoder`).
|
||||
- Messages go through `i18n::I18n`, a global the app sets: `cx.global::<I18n>().text(key, args)` fills each `{name}`. Every catalog holds the first one's keys; a missing key, argument or catalog fails. A right-to-left locale mirrors a stack with `Direction::row` and sets its text with `Direction::align`; CoreText orders mixed Hebrew and Latin runs on macOS. gpui 0.2.2 wraps shaped glyphs in the order they are drawn, so a right-to-left line that wraps comes out garbled: right-to-left text stays on one line, an `Ellipsis`, which cuts by characters and sits by its text's alignment.
|
||||
- Messages go through `i18n::I18n`, a global the app sets: `cx.global::<I18n>().text(key, args)` fills each `{name}`. Every catalog holds the first one's keys; a missing key, argument or catalog fails. A right-to-left locale mirrors a stack with `Direction::row` and sets its text with `Direction::align`; CoreText orders mixed Hebrew and Latin runs on macOS, but gpui sets no paragraph direction, so a line takes its first strong character's: `text` leads a right-to-left message with U+200F, and `Locale::number` a right-to-left minus with U+200E, as CLDR does. gpui 0.2.2 wraps shaped glyphs in the order they are drawn, so a right-to-left line that wraps comes out garbled: right-to-left text stays on one line, an `Ellipsis`, which cuts by characters and sits by its text's alignment.
|
||||
|
||||
## Decisions
|
||||
|
||||
|
||||
Reference in new issue
Block a user