C#中的连字符化

6
我正在寻找一个在C#中执行文本断字的示例项目。理想情况下,这将源自TeX断字算法或类似算法。目前我只需要英文,但未来可能需要其他语言。有人看到过类似的东西吗? 背景:我计划在使用CoreText的MonoTouch项目中包含它。
2个回答

5
我在https://github.com/alkozko/NHyphenator发现了一个Knuth-Liang断字算法的C#实现,看起来很不错。但是目前存在两个缺点:
  1. 它不能直接加载TeX断字模式文件(但添加支持似乎很容易)。
  2. 源代码适用哪种许可证尚不清楚。

如果您能提供一些提示,告诉那些不知道这两种格式文件内容意义的人如何将像这个文件http://mirror.ctan.org/language/hyph-utf8/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex转换为NHyphenator使用的格式,那就太好了。我也想使用这个库,但我担心如果我开始阅读算法细节以理解文件内容,我可能最终会重新实现这个东西... :( - NoOne
在查看了这两种文件格式之后,我可以很安全地推测,您只需要将\hyphenation{}的内容复制到hyph-***.hyp.txt文件中,将\patterns{}的内容复制到hyph-***.pat.txt文件中。嗯...建立一个解析器并不需要太多工作... - NoOne
1
许可证目前(无论如何)是Apache-2.0许可证,如许可证文件中所述。 - dstj

3

显然,唐纳德·克努斯的算法非常优秀。虽然现在没有 C#实现,但您是否考虑将另一种实现转换为 C#?(例如,您可以将相当接近 C#的 Java 实现进行转换)

另一个选项是使用更简单的实现,可以在StackOverflow上这个答案中找到。


谢谢,Jason。我真的希望有人已经将TeX版本转换为C#,但我可能不得不自己进行转换。你知道我可以在哪里找到一个好的Java版本来开始吗? - Ethan
对于Liang的工作的Java实现,您可以查看TeXHyphenator-J:http://www.davidashen.net/texhyphj.html - Jeremy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接