我正在处理一个呈现音乐符号的应用程序。音乐符号在常规字体文件中指定,使用the convention表示em方块的高度对应于常规五行音乐人员的高度。例如,音符头的字形大约为0.25 em高,即两条线之间的距离。
在渲染时,我使用一个坐标系,其中4个单位对应于五行音乐人员的高度。因此,我需要渲染字形,使得em方形最终呈现4个单位高。但是,DirectWrite只允许在设备无关像素(DIP)中指定文本大小,而且我对如何在坐标系之间进行操作感到困惑。这有两个部分:
好的衡量标准:
答案 0 :(得分:1)
经过一些实验和研究,我得出以下结论。
layoutRect
函数的ID2D1RenderTarget::DrawText
参数的前Y坐标映射到字体上升的顶部(对于第一行文本)。ID2D1RenderTarget::GetSize
检索,是右下角,在DIP中。这意味着对于任何变换矩阵,字体大小单位应与渲染目标坐标系中的单位匹配,42个单位的垂直线将与EM方块一样高,字体大小为42个单位。然而,我无法找到有关任意转换对字体提示的影响的信息。