From 51df7aee763d162b3aeec0a59788818e0292004f Mon Sep 17 00:00:00 2001 From: Florent Michel <56166507+FlorentCLMichel@users.noreply.github.com> Date: Mon, 2 Sep 2024 14:12:57 +0100 Subject: [PATCH] Add Devanagari numbering (#4850) --- crates/typst/src/model/numbering.rs | 5 +++++ tests/suite/model/numbering.typ | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/typst/src/model/numbering.rs b/crates/typst/src/model/numbering.rs index 5530830f7..3afde1f81 100644 --- a/crates/typst/src/model/numbering.rs +++ b/crates/typst/src/model/numbering.rs @@ -297,6 +297,8 @@ pub enum NumberingKind { EasternArabic, /// The variant of Eastern Arabic numerals used in Persian and Urdu. EasternArabicPersian, + /// Devanagari numerals. + DevanagariNumber, /// Circled numbers (①, ②, ③, etc.), up to 50. CircledNumber, /// Double-circled numbers (⓵, ⓶, ⓷, etc.), up to 10. @@ -321,6 +323,7 @@ impl NumberingKind { '가' => NumberingKind::KoreanSyllable, '\u{0661}' => NumberingKind::EasternArabic, '\u{06F1}' => NumberingKind::EasternArabicPersian, + '\u{0967}' => NumberingKind::DevanagariNumber, '①' => NumberingKind::CircledNumber, '⓵' => NumberingKind::DoubleCircledNumber, _ => return None, @@ -345,6 +348,7 @@ impl NumberingKind { Self::KoreanSyllable => '가', Self::EasternArabic => '\u{0661}', Self::EasternArabicPersian => '\u{06F1}', + Self::DevanagariNumber => '\u{0967}', Self::CircledNumber => '①', Self::DoubleCircledNumber => '⓵', } @@ -556,6 +560,7 @@ impl NumberingKind { ), Self::EasternArabic => decimal('\u{0660}', n), Self::EasternArabicPersian => decimal('\u{06F0}', n), + Self::DevanagariNumber => decimal('\u{0966}', n), Self::CircledNumber => zeroless::<50>( |x| { [ diff --git a/tests/suite/model/numbering.typ b/tests/suite/model/numbering.typ index e101365c6..55c24f653 100644 --- a/tests/suite/model/numbering.typ +++ b/tests/suite/model/numbering.typ @@ -102,6 +102,11 @@ #assert.eq(numbering("\u{0661}", 1475), "١٤٧٥") #assert.eq(numbering("\u{06F1}", 1475), "۱۴۷۵") +--- numbering-devanagari-number --- +#assert.eq(numbering("\u{0967}", 1), "१") +#assert.eq(numbering("\u{0967}", 10), "१०") +#assert.eq(numbering("\u{0967}", 123456789), "१२३४५६७८९") + --- numbering-negative --- // Error: 17-19 number must be at least zero #numbering("1", -1) @@ -112,4 +117,4 @@ --- numbering-double-circled-number --- #assert.eq(numbering("⓵", 1), "⓵") -#assert.eq(numbering("⓵", 10), "⓾") \ No newline at end of file +#assert.eq(numbering("⓵", 10), "⓾")