Unicode Autocad用于比较图层名称的无大小写匹配算法是什么?

Unicode Autocad用于比较图层名称的无大小写匹配算法是什么?,unicode,autocad,unicode-normalization,teigha,Unicode,Autocad,Unicode Normalization,Teigha,Autocad DXF和DWG文件使用unicode字符串来标识图层。我通过实验确定Autocad必须采用某种大小写折叠和规范化(Autocad认为“groß”和“GROSS”是相同的,“Am\U+00e9lie”和“Ame\U+0301lie”是相同的)。我想在我自己的软件中知道,根据Autocad,两个图层名称是否相同。Unicode标准的默认无大小写匹配算法似乎给了我正确的答案,但我想确定一下 任何人都可以确认默认的无大小写匹配是Autocad使用的算法吗?或者如果它不是什么 是否有测试输

Autocad DXF和DWG文件使用unicode字符串来标识图层。我通过实验确定Autocad必须采用某种大小写折叠和规范化(Autocad认为“groß”和“GROSS”是相同的,“Am\U+00e9lie”和“Ame\U+0301lie”是相同的)。我想在我自己的软件中知道,根据Autocad,两个图层名称是否相同。Unicode标准的默认无大小写匹配算法似乎给了我正确的答案,但我想确定一下

  • 任何人都可以确认默认的无大小写匹配是Autocad使用的算法吗?或者如果它不是什么

  • 是否有测试输入可用于区分不同的无壳匹配算法


  • 我没有明确的答案,但定义了四种无大小写匹配算法:

  • 默认无大小写匹配(D144):仅使用(完整)大小写折叠,而不使用规范化。由于您提到了
    Am\U+00e9lie
    Ame\U+0301lie
    匹配,因此可以明确排除此变体

  • 规范无大小写匹配(D145):除了大小写折叠之外,还使用(标准NFC或NFD)规范化

  • 兼容性无大小写匹配(D146):除了大小写折叠之外,还使用“兼容性”(NFKC或NFKD)规范化形式

  • 标识符无大小写匹配(D147):与兼容性无大小写匹配类似,但也忽略默认的可忽略字符

  • 因此,我建议进行以下附加测试:

    • 如果
      \U+0133
      (带有兼容映射的拉丁小连字IJ)与
      IJ
      匹配,则Autocad似乎使用了兼容规范化,可以排除规范无大小写匹配(D145)

    • 如果
      A\U+00adB
      (带有属性Default\U Ignorable\U code\U Point的软连字符)和
      AB
      匹配,则Autocad似乎忽略了默认可忽略字符,可以排除兼容性无大小写匹配(D146)


    当然,Autocad可能不使用任何一种Unicode算法,但上面的测试应该有助于缩小范围。请考虑发布任何附加的结果来帮助其他用户。< /P> < P>我截取API调用,发现Windows上的AutoCAD 2018使用<代码> COMPARESTRIGWW(LoaleEuSuuleSudio,NoalthNealCaseCaseSotjStReGrand,…)<代码>检查层名称是否相等。< /P>依赖于区域,而不是算法。@LưuVĩnhPhúc这篇博文是关于案例映射的,但问题是关于案例折叠的<代码>ß通常会在任何语言环境下折叠成
    ss
    。此外,该问题还询问了Unicode默认的无大小写匹配算法,该算法不依赖于语言环境。@LưuVĩnhPhúc大小写操作在不同的语言中肯定是不同的。Unicode标准定义了默认大小写操作,这些操作应该是所有语言的良好通用默认值,但我不知道这是多么正确。我的问题是Autocad是否使用由Unicode或其他系统定义的默认大小写折叠算法。Autocad可能会使用大量潜在的大小写折叠算法,我想确定我的算法是否正确。我尝试了这些字符,排除了除D147以外的所有算法。