我正在开发一些代码(在Delphi 6中),我在画布上画了一个粗线。这对图形本身很好用。
但是,我想使客户拥有可变的音调。目前,我是通过计算一定的间距并为每个字形移动此步骤来完成此操作的。适用于大多数情况,但是某些脚本的重音符号突然分离。下图:
插图的顶部是我想要的输出。不需要的是粘贴到MSWord中,然后手动添加空格。插图的底部是Word,为段落样式添加了字母间距。
其他软件具有相同的“简单绘制方式”,我也尝试了InkScape。
问题是-可以使用Windows API完成吗?还是要知道哪些代码点代表重音符号,然后在其后留空格来解决问题? (我猜这个列表应该是this one。当然可以完成最后一个操作,但是就像我书中的一个“小技巧”。
作为参考,我使用“ DrawTextW”功能,类似于 example here
我的输出代码:
for d := 1 to Textlength do
begin
DrawTextW(
bmp.Canvas.Handle,
PWideChar(copy(TextW,d,1)),
1,
tmpArea,
DT_SINGLELINE or DT_NOCLIP);
// widest is width of widest char, for spacing
//
// this is where I could check if next is a nonspacing/combining
// to avoid adding space.
if dtoPitch in Options.Option then
tmpArea.Left := tmpArea.Left + widest;
end;