我正在开发一个呈现音乐符号的应用程序。音乐符号在常规字体文件中指定,它们使用的约定是 em 方格的高度对应于常规五行乐谱的高度。例如,音符头的字形大约 0.25 em 高,即五线谱两行之间的距离。
在渲染方面,我使用了一个坐标系,其中 4 个单位对应于五线谱表的高度。因此,我需要渲染字形以使 em 方格最终呈现 4 个单位高。但是 DirectWrite 只允许在设备独立像素 (DIP) 中指定文本大小,我对如何在坐标系之间进行调整感到困惑。这有两个部分:
- 从 DIP 中给定的字体大小,我可以计算物理像素的高度,但是映射到该高度的是什么?em square 还是其他一些设计空间度量?
- 如果我使用一些任意变换矩阵怎么办?如何指定 DIP 以便在我使用的坐标系中获得有意义的值?
为了更好的衡量:
- 如果让它工作,这是否会弄乱字体提示,因为我的 DIP 值与物理像素没有明确的关系?