@@ -55,23 +55,14 @@ where `resolvedSelector` is the _resolved value_ of a _selector_
5555and ` keys ` is a list of strings,
5656the ` :string ` selector function performs as described below.
5757
58- 1 . Let ` compare ` be the string value of ` resolvedSelector ` .
58+ 1 . Let ` compare ` be the string value of ` resolvedSelector `
59+ in Unicode Normalization Form C (NFC) [ \[ UAX #15 \] ] ( https://www.unicode.org/reports/tr15 )
59601 . Let ` result ` be a new empty list of strings.
60611 . For each string ` key ` in ` keys ` :
6162 1 . If ` key ` and ` compare ` consist of the same sequence of Unicode code points, then
6263 1 . Append ` key ` as the last element of the list ` result ` .
63641 . Return ` result ` .
6465
65- > [ !NOTE]
66- > Matching of ` key ` and ` compare ` values is sensitive to the sequence of code points
67- > in each string.
68- > As a result, variations in how text can be encoded can affect the performance of matching.
69- > The function ` :string ` does not perform case folding or Unicode Normalization of string values.
70- > Users SHOULD encode _ messages_ and their parts (such as _ keys_ and _ operands_ ),
71- > in Unicode Normalization Form C (NFC) unless there is a very good reason
72- > not to.
73- > See also: [ String Matching] ( https://www.w3.org/TR/charmod-norm )
74-
7566> [ !NOTE]
7667> Unquoted string literals in a _ variant_ do not include spaces.
7768> If users wish to match strings that include whitespace
@@ -90,6 +81,11 @@ the `:string` selector function performs as described below.
9081
9182The `:string` function returns the string value of the _resolved value_ of the _operand_.
9283
84+ > [!NOTE]
85+ > The function `:string` does not perform Unicode Normalization of its formatted output.
86+ > Users SHOULD encode _messages_ and their parts in Unicode Normalization Form C (NFC)
87+ > unless there is a very good reason not to.
88+
9389## Numeric Value Selection and Formatting
9490
9591### The `:number` function
0 commit comments