2

我正在将程序从 Windows 移植到 linux。
对于复杂的文本,我们在 windows 上调用 uniscribe 库。我打算在 linux 上使用 icu。
1. uniscribe:scriptItem 函数将脚本分割成许多不同字体或方向的scriptitem。在 icu 上哪个功能相同?
2. 有人知道 icu 上复杂文本的一些片段吗?

谢谢肯

4

1 回答 1

3

我不确定 icu 是不是一个好的选择,它的主要 Linux 用户一直是 LibreOffice,而 LibreOffice 刚刚完成了将其文本引擎从 ICU 移植出来(实际上由于遗留代码问题,他们似乎保留了 icu 的一种形式,但只是作为到 harfbuzz-ng 文本整形器的桥接;我不知道这种桥接模式是否可用于通用 ICU 版本,也不知道是否值得使用)。

当前 Linux 上的规范字体堆栈是 fontconfig + freetype + freebidi + harfbuzz-ng(我可能已经忘记了一些)。所有处理文本的大型 Linux 程序都以一种或另一种形式使用它们。由于要集成很多组件,并且随着字体格式变得更加复杂而添加了新库,因此通常通过更高级别的库访问它们。对于通常是 pango 的其他所有人的 QT 应用程序(除了一些应用程序,如 Libreoffice,出于遗留原因使用 icu 等独一无二的配置)。而且由于应用程序需要绘制的不仅仅是文本,因此 pango 本身并不直接使用,而是通过 cairo 使用。

因此,我建议在选择 icu 之前至少先看看 pango-cairo。这是一个更常见的选择,您可能会在网上找到更多文档和示例。
https://developer.gnome.org/pango/unstable/pango-Cairo-Rendering.html
http://cairographics.org/FAQ/#using_pango
http://x11.gp2x.de/personal/google/

几年前,当文本库整合开始时,*nix 下文本库的主要开发人员之一写了以下摘要:http: //behdad.org/text/

PS。相当于 pango 中的 scriptItem 似乎是 itemize:
https ://developer.gnome.org/pango/unstable/pango-Text-Processing.html#pango-itemize

于 2013-08-30T07:19:22.460 回答