diff --git a/crates/typst/src/model/numbering.rs b/crates/typst/src/model/numbering.rs index ed2081b9..ce1d6eae 100644 --- a/crates/typst/src/model/numbering.rs +++ b/crates/typst/src/model/numbering.rs @@ -301,6 +301,8 @@ pub enum NumberingKind { DevanagariNumber, /// Bengali numerals. BengaliNumber, + /// Bengali letters (ক, খ, গ, ...কক, কখ etc.). + BengaliLetter, /// Circled numbers (①, ②, ③, etc.), up to 50. CircledNumber, /// Double-circled numbers (⓵, ⓶, ⓷, etc.), up to 10. @@ -327,6 +329,7 @@ impl NumberingKind { '\u{06F1}' => NumberingKind::EasternArabicPersian, '\u{0967}' => NumberingKind::DevanagariNumber, '\u{09E7}' => NumberingKind::BengaliNumber, + '\u{0995}' => NumberingKind::BengaliLetter, '①' => NumberingKind::CircledNumber, '⓵' => NumberingKind::DoubleCircledNumber, _ => return None, @@ -353,6 +356,7 @@ impl NumberingKind { Self::EasternArabicPersian => '\u{06F1}', Self::DevanagariNumber => '\u{0967}', Self::BengaliNumber => '\u{09E7}', + Self::BengaliLetter => '\u{0995}', Self::CircledNumber => '①', Self::DoubleCircledNumber => '⓵', } @@ -566,6 +570,16 @@ impl NumberingKind { Self::EasternArabicPersian => decimal('\u{06F0}', n), Self::DevanagariNumber => decimal('\u{0966}', n), Self::BengaliNumber => decimal('\u{09E6}', n), + Self::BengaliLetter => zeroless::<32>( + |x| { + [ + 'ক', 'খ', 'গ', 'ঘ', 'ঙ', 'চ', 'ছ', 'জ', 'ঝ', 'ঞ', 'ট', 'ঠ', 'ড', + 'ঢ', 'ণ', 'ত', 'থ', 'দ', 'ধ', 'ন', 'প', 'ফ', 'ব', 'ভ', 'ম', 'য', + 'র', 'ল', 'শ', 'ষ', 'স', 'হ', + ][x] + }, + n, + ), Self::CircledNumber => zeroless::<50>( |x| { [ diff --git a/tests/suite/model/numbering.typ b/tests/suite/model/numbering.typ index d0cbe247..241ef3ea 100644 --- a/tests/suite/model/numbering.typ +++ b/tests/suite/model/numbering.typ @@ -50,6 +50,11 @@ #t(pat: "\u{09E7}", 10, "১০") #t(pat: "\u{09E7}", 123456789, "১২৩৪৫৬৭৮৯") +// Bengali Consonants. +#t(pat: "\u{0995}", 1, "ক") +#t(pat: "\u{0995}", 32, "হ") +#t(pat: "\u{0995}", 32*2 , "কহ") + // Circled number. #t(pat: "①", 1, "①") #t(pat: "①", 50, "㊿")