阿拉伯语字型选项
为每个需要特殊处理的阿拉伯字符都提供了一组字型选项,以保证不会在代码页转换期间丢失此类字符。
Lam-Alef
在从可视代码页到隐式代码页的转换过程中,每个 Lam-Alef 字符都将展开为 Lam 和 Alef,并耗用一个空白空间。 如果无可用空白空间,那么 Lam-Alef 字符将保留其在 Unicode uFExx 范围时的原样,并在其转换为隐式单字节代码页时更改为替代控制字符 (SUB)。 在从隐式到可视代码页的转换过程中,Lam-Alef 压缩会产生一个空间。 耗用或产生的该空间的位置取决于字型选项,如下表中所述:
| 字型选项 | 耗用或产生的空白空间的位置 |
|---|---|
| 接近 | 紧接着要转换的字符 |
| 开始 | 缓冲区的开头 (buffer[0]) |
| 末尾 | 缓冲区的末尾 (buffer[length - 1]) |
| 自动 | 相对于文本方向的缓冲区的开头:buffer[0](用于从左到右文本)和 buffer[length - 1](用于从右到左文本) |
| 调整缓冲区大小 | 未耗用或产生空间。 通过提高缓冲区大小来容纳额外字符,而通过减小来消除收缩过程中产生的空间。 |
Seen Tail
- 接近
在从可视到隐式的代码页转换过程中,Seen 系列字符(包括四分之三字型字符和 Tail 字符)的每个双字符最终形式都将转换为相应的单字符最终形式,将通过空间来代替 Tail。 该空间位于 Seen 字符的旁边。 在从隐式到可视代码页的转换过程中,每个单字符最终形式都将转换为相应的双字符最终形式,并耗用紧接着 Seen 字符的空间。 如果无可用空间,那么该字符将转换为单个四分之三字型字符。
塔什基尔
- 自动
不执行任何特殊处理。
- 定制在开端
除 Shadda 之外的所有元音符号字符都将使用空间代替。 生成的空间将移至缓冲区的开头 (
buffer[0])。- 定制在末尾
除 Shadda 之外的所有元音符号字符都将使用空间代替。 生成的空间将移至缓冲区的末尾 (
buffer[length - 1])。- 以宽度定制
- 所有元音符号字符都将转换为其相应的间距字符。 此选项不能用于可视到隐式代码页转换,因为 Arabic u06xx 范围内的元音符号字符仅使用无间距(零宽度)字符表示。
- 定制为零宽度
- 所有元音符号字符都将转换为其相应的无间距(零宽度)字符。
- 保留
不执行任何特殊处理。
Yeh-Hamza
- 接近
在从可视到隐式代码页的转换过程中,后跟 Hamza 字符的每个 Yeh 字符都将转换为 Yeh-Hamza 字符。 收缩过程产生的空间在紧接着 Yeh-Hamza 字符的位置。 在从隐式到可视代码页的转换中,每个 Yeh-Hamza 字符都将展开为两个字符(Yeh 和 Hamza),并耗用紧接着原始 Yeh-Hamza 字符位置的空间。 如果无可用空间,那么 Yeh-Hamza 字符将转换为单字符 Yeh。