通过icu布局引擎计算字形

我正在将一个程序从Windows移植到Linux。
对于复杂的文本,我们把窗口称为uniscribe库。 我打算在linux上使用icu。
1. uniscribe:scriptItem函数会将脚本分成许多不同的字体或方向。 这与icu上的function是一样的吗?
2.有人知道关于icu复杂文本的一些片段吗?

谢谢ken

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

目前linux上的规范字体堆栈是fontconfig + freetype + freebidi + harfbuzz-ng(我可能已经忘记了一些)。 所有处理文本的大型Linux程序都以这种或那种形式使用这些程序。 由于要集成很多组件,并且由于字体格式变得越来越复杂,所以新的库被添加了,所以通常通过更高级别的库访问它们。 对于QT应用程序来说,对于其他所有人来说,QT应用程序通常都是pango(除了Libreoffice之类的应用程序,因为传统原因使用icu之类的独特配置)。 很多时候,应用程序需要绘制比文本更多的文本,而本身并不是直接使用,而是通过开罗。

所以我建议至少看一下潘戈开罗,然后再定居icu。 这是一个更常见的选择,你可能会在网上找到更多的文档和例子。
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似乎是分项:
https://developer.gnome.org/pango/unstable/pango-Text-Processing.html#pango-itemize

linux 字体 opentype 文本渲染 icu pango pangocairo harfbuzz