diff --git a/glossy/src/gloss.typ b/glossy/src/gloss.typ index a2bae80..3260652 100644 --- a/glossy/src/gloss.typ +++ b/glossy/src/gloss.typ @@ -605,7 +605,7 @@ // 1. create array of tuples with (lower [if ignore-case], entry) .map(e => { if ignore-case { (lower(e.short), e) } else { (e.short, e) } }) // 2. sort the tuples (by first element then second) - .sorted(key: t => t.first()) + .sorted() // NOTE: sorted() is NOT language-aware // 3. strip away the tuple's first element, leaving an array of entries .map(t => t.last()) diff --git a/glossy/src/utils.typ b/glossy/src/utils.typ index eda1e60..ea44e8d 100644 --- a/glossy/src/utils.typ +++ b/glossy/src/utils.typ @@ -203,7 +203,7 @@ if is_acronym { // Use acronym rules - let first_char = upper_word.slice(0,1) + let first_char = upper_word.codepoints().slice(0,1).first() if acronym_vowels.contains(first_char) { "an" } else { @@ -211,7 +211,7 @@ } } else { // Non-acronym rules - let first_char = lower_word.slice(0,1) + let first_char = lower_word.codepoints().slice(0,1).first() // Special cases for words matching a set of known 'silent h' prefixes let silent_h_words = ( diff --git a/glossy/tests/utf-handling/glossary.yml b/glossy/tests/utf-handling/glossary.yml new file mode 100644 index 0000000..6e62754 --- /dev/null +++ b/glossy/tests/utf-handling/glossary.yml @@ -0,0 +1,23 @@ +cab: + short: "cab" + long: "taxi cab" + +coo: + short: "COO" + long: "Chief Operations Officer" + +cuckoo: + short: "cuckoo" + long: "really crazy" + +delta: + short: "delta" + long: "difference between two values" + +dal: + short: "DAL" + long: "Delta Airlines" + +čr: + short: "ČR" + long: "Česká Republika" diff --git a/glossy/tests/utf-handling/ref/1.png b/glossy/tests/utf-handling/ref/1.png new file mode 100644 index 0000000..71395b8 Binary files /dev/null and b/glossy/tests/utf-handling/ref/1.png differ diff --git a/glossy/tests/utf-handling/test.typ b/glossy/tests/utf-handling/test.typ new file mode 100644 index 0000000..7b2e0ad --- /dev/null +++ b/glossy/tests/utf-handling/test.typ @@ -0,0 +1,20 @@ +#import "/lib.typ":* + +#set text(lang: "cs", region: "CZ") + +#show: init-glossary.with(yaml("glossary.yml")) +#glossary(ignore-case: true) + +#line(length: 20em) + +@čr + +@cab + +@coo + +@cuckoo + +@delta + +@dal