需要知道 TextBlock.IsHyphenationEnabled 支持哪些文化

问题描述 投票:0回答:1

我目前正在开发 WPF 应用程序,并使用

TextBlock.IsHyphenationEnabled
属性来处理文本连字符。我知道连字符行为可能是特定于文化的,并且我正在努力确保不同语言之间的正确功能。

任何人都可以提供使用

TextBlock.IsHyphenationEnabled
属性时官方支持连字符的文化列表吗?具体来说,我有兴趣了解是否完全支持瑞典语 (sv-SE)、德语 (de-DE) 等语言。

我看到一些与之相关的代码,但不确定文化支持是如何完成的:

班级:

NaturalLanguageHyphenator

 public override bool IsCultureSupported(CultureInfo culture)
 {
    // Accept all cultures for the time being. Ideally, NL6 should provide a way for the client to test supported culture.
    return true;
 }

此外,如果客户端计算机上需要任何特定设置或配置,例如在 Windows 中安装语言包

TextBlock 和文化信息的代码和调试值(sv-SE 在这里不起作用)

<TextBlock IsHyphenationEnabled="True" 
Text="{Binding Name}" Language="sv-SE"
TextWrapping="Wrap"/>

System.Globalization.CultureInfo.CurrentCulture - en-IN System.Globalization.CultureInfo.CurrentUICulture - sv

在此处创建示例存储库来演示问题https://github.com/ankushmadankar/Hyphenation

您可以分享的任何文档或经验将不胜感激!

预先感谢您的帮助。

c# wpf
1个回答
0
投票

这不是答案,但可能有助于调查。

正如您可能怀疑的那样,连字符是使用本机 dll 完成的。最有可能的是最后

C:\Windows\System32\NaturalLanguage6.dll

中间有一个

PresentationNative_xxxxx.dll
,不过现在没关系。正如我们从评论中可以看到的那样,NL6 团队没有为客户提供测试支持的文化的方法。

NaturalLanguage6.dll
导出4个函数:
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
,所以它是一个COM库。

我找到了与此 dll 相关的 4 个 CLSID:{0E1EEFB2-E336-481C-B178-36261EC5A843}{333E6924-4353-4934-A7BE-5FB5BDDDB2D6}{89EA5B5A-D01C- 4560-A874- 9FC92AFB0EFA}{D385FDAD-D394-4812-9CEC-C6575C0B2B38},但我找不到更多。我尝试使用

OleView.exe
检查
NaturalLanguage6.dll
,但失败了。

更糟糕的是,无法保证

PresentationNative_xxxxx.dll
使用
NaturalLanguage6.dll
,尤其是在 Windows 以外的平台上。

无论如何看起来:

  • .NET 团队不知道支持哪些文化,
  • 功能深埋在 Windows 系统 dll 中,
  • 支持的文化可能会随着 Windows 更新而改变。

由于调用

PresentationNative
的方法毫无意义(没有任何帮助),下一步可能的步骤是反编译 dll 以查看里面的内容。

© www.soinside.com 2019 - 2024. All rights reserved.