我正在把一个程序从windows移植到linux。
对于复杂的文本,我们在windows上调用uniscribe库。我计划在linux上使用icu。
谢谢,肯
发布于 2013-08-30 15:19:22
我不确定icu是不是一个好的选择,它的主要Linux用户总是LibreOffice,而LibreOffice刚刚从ICU移植完它的文本引擎(实际上,出于对遗留代码的考虑,他们似乎保留了一种icu的形式,但只是作为到harfbuzz-ng文本整形器的桥梁;我不知道这种桥模式在通用ICU版本中是否可用,也不知道它是否值得使用)。
当前linux上的规范字体堆栈是fontconfig + freetype + freebidi + harfbuzz-ng (我可能忘记了一些)。所有处理文本的大型Linux程序都使用这种或那种形式的文本。由于需要集成大量组件,而且随着字体格式变得更加复杂而添加新的库,因此通常通过更高级别的库来访问它们。对于QT应用程序来说,这是QT,对于其他所有人来说,这通常是pango (除了一些像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
linux fonts opentype text-rendering icu pango pangocairo harfbuzz
https://stackoverflow.com/questions/18525198
复制相似问题