//声明:
GetCharABCWidths(
DC: HDC; {设备环境句柄}
FirstChar, LastChar: UINT; {范围内的第一个和最后一个字符值}
const ABCStructs {接受每个字符信息的 TABC 结构数组}
): BOOL;
//TABC 类型是 _ABC 结构的重定义:
_ABC = packed record
abcA: Integer; {左间距}
abcB: UINT; {字宽}
abcC: Integer; {右间距}
end;
{GetCharABCWidths 只用于 TrueType 字体}
//获取当前字体所有大写字母三个宽度信息(用Memo显示)
procedure TForm1.FormCreate(Sender: TObject);
var
arr: array[0..25] of TABC;
i: Integer;
begin
GetCharABCWidths(Canvas.Handle, Ord('A'), Ord('Z'), arr);
Memo1.Clear;
Memo1.Lines.Add('字符'#9'A'#9'B'#9'C');
for i := 0 to 25 do
begin
Memo1.Lines.Add(
Char(Ord('A')+i) + #9 +
IntToStr(arr[i].abcA) + #9 +
IntToStr(arr[i].abcB) + #9 +
IntToStr(arr[i].abcC) + #9
);
end;
end;
//效果图:
转载于:https://my.oschina.net/hermer/blog/320952