|
使用当前字体测量 Unicode 字符串的显示宽度(v2.216.0)
Delphi 语法:
function GetWideTextWidth ( Text: WideString ): Single;
说明
GetWideTextWidth 是 TextWidth 的 Unicode 版本,通过 GDI GetTextExtentPoint32W(以 lfHeight = -1000 调用)测量 WideString 的宽度,结果与 TextWidth 单位相同(用户空间点,再除以 DocScale)。修复了 TextWidth(AnsiString) 对 CJK / 代理对 / 多字节文本导致的逐字节误测量 —— TextWidth 先将 WideString 窄化后再索引 0..255 的 ABC 字宽表,对 Latin-1 以外字符毫无意义。在布局或换行任何非拉丁文本前必须使用本方法,也是 WideTextOutBox 的测量基础
参数
| Név | 说明 |
Text | 要测量的 Unicode 文本 |
返回值
文本在当前字体和大小下的用户空间宽度(点)
代码示例
// 测量中文字符串宽度并据此居中输出
var
W: Single;
PageW: Single;
Text: WideString;
begin
Text := '你好,世界';
W := HPDF.CurrentPage.GetWideTextWidth(Text);
PageW := HPDF.CurrentPage.Width;
HPDF.CurrentPage.TextOut((PageW - W) / 2, 400, 0, Text);
end;
另请参阅: GetWideTextRowCount GetWideCharAdvances WideTextOutBox TextWidth
|