我目前正在开发 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
您可以分享的任何文档或经验将不胜感激!
预先感谢您的帮助。
这不是答案,但可能有助于调查。
正如您可能怀疑的那样,连字符是使用本机 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 以外的平台上。
无论如何看起来:
由于调用
PresentationNative
的方法毫无意义(没有任何帮助),下一步可能的步骤是反编译 dll 以查看里面的内容。