Should enforcing a string using PRECIS be idempotent? If I apply the
enforce operation to a string twice, should I get the same result as
applying it just once?
The nickname profile is NOT idempotent for some inputs.
1. Certain characters are NFKC normalized to sequences with ASCII spaces.
This can lead to nicknames that begin with a space or contain adjacent
interior spaces that are removed if you apply the nickname profile again.
U+00A8 => U+0020 U+0308 => U+0308
2. Some characters can be further case mapped after NFKC normalization.
U+1F11 => (K) => (k)
I also noticed that the RFC 7700 has case-mapping defined only when
comparing nicknames. I thought this was confusing. I didn't understand why
username is split into two profiles (CasePreserved and CaseMapped), but
nickname is not.
If not all PRECIS profiles are idempotent, it would help to mention this in
the IANA Profile registry, e.g.
As an implementer, I would prefer profiles that are idempotent.
precis mailing list