🤓 Uniscribe/DirectWrite

Uniscribe 是 Windows 系统用来处理 Unicode 编码的文字,特别是复杂文种的一组服务,USP10.DLL 为其核心文件。Windows 2000 和 Internet Explorer 5.0 首先提供了 USP10.DLL。USP 即 Unicode Scripts Processor,意为 Unicode 文字系统处理器。

Uniscribe 的主要目的包括:

1. 根据上下文选择字符变形(如:蒙文字母的变形)
2. 整理输入文字的显示,使其由输入顺序转为视觉顺序(如:西双版纳傣文的声母和韵母的顺序)
3. 按照文字流的方向排列显示的文字(如:从左到右或从右到左,横排或竖排)

虽然 Windows 2000 就开始提供 Uniscribe,但是新版本的 Uniscribe 提供更多的系统功能,即支持更多文字系统。早期版本的 Uniscribe 提供了阿拉伯字母、希伯来字母的显示支持。Microsoft Office 2003 SP2 版本的 Uniscribe 开始支持藏文字母。Windows Vista 版本的 Uniscribe 开始支持蒙古字母。

从 Windows 7 开始,Uniscribe 随着功能更多的 DirectWrite 的引入而被取代,但 Uniscribe 组件仍然被继续维护。

 

DirectWrite 是微软的一个文本布局和字形渲染 API。它的设计是为取代 GDI/GDI+ 和面向屏幕渲染的Uniscribe,并已随 Windows 7 和 Windows Server 2008 R2 发售提供,Windows Vista 和 Windows Server 2008 亦可获取(只需安装平台更新)。DirectWrite 在 Direct2D 上以硬件加速(使用 GPU)形式运行,但也可以在 CPU 上渲染任何目标,包括 GDI 位图。

DirectWrite 特性

全面支持 Unicode,超过 20 个文字系统,为 Windows 支持的每种语言的提供布局和渲染。DirectWrite支持多格式文本的测量、渲染和命中测试。

支持 Unicode 特性,包括 BIDI(双向文稿)、line breaking(换行)、surrogates、UVS、language-guided script itemization、number substitution、glyph shaping.

有双向反锯齿的子像素 ClearType 文本渲染可以与 GDI/GDI+、Direct2D/Direct3D 和任何应用程序的特定技术互操作。在使用 Direct2D 时,文字渲染可以硬件加速,或者可以在硬件加速不可用时使用 WARP 软件光栅化器。

支持 OpenType 高级印刷特性,例如文体交替和花饰。

为采用专有文字布局和 Unicode 到字形处理的案例提供底层字形渲染 API。

支持彩色字体。