带有重音符号的宽弦音高

时间:2019-04-23 11:53:44

标签: delphi winapi delphi-6

我正在开发一些代码(在Delphi 6中),我在画布上画了一个粗线。这对图形本身很好用。

但是,我想使客户拥有可变的音调。目前,我是通过计算一定的间距并为每个字形移动此步骤来完成此操作的。适用于大多数情况,但是某些脚本的重音符号突然分离。下图:Incorrect glyph pitch

插图的顶部是我想要的输出。不需要的是粘贴到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;

0 个答案:

没有答案