unicodeautocadunicode-normalizationteigha

What caseless matching algorithm does Autocad use to compare layer names?


Autocad DXF and DWG files use unicode strings to identify layers. I've determined experimentally that Autocad must employ some sort of case folding and normalisation (Autocad considers 'groß' and 'GROSS' to be the same, and 'Am\U+00e9lie' and 'Ame\U+0301lie' to be the same). I'd like to know in my own software if two layer names are the same according to Autocad. Default Caseless Matching algorithm from the Unicode standard seems to give me the right answer but I'd like to be sure.

  1. Can anyone conform that Default Caseless Matching is the algorithm used by Autocad? Or if it isn't what is.

  2. Are there test inputs I can use to distinguish between different caseless matching algorithms?


Solution

  • I intercepted the api calls and discovered that Autocad 2018 on Windows uses CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT, ...) to check layer names for equality.