开源五线谱打谱软件MuseScore代码分析之五:MuseScore 的长度单位(上)

 

排版离不开位置的计算,MuseScore 是如何表示这些位置的呢?
MuseScore 里和长度相关的单位有这样几种:毫米,谱线间距,磅,点等。
几个常用的量:
MM                           // 毫米
PDPI        = 96  / 120      // 屏幕分辨率
DPI         = 600            // 打印机的逻辑分辨率,相当于 Qt 的 高分辨率打印机的精度
INCH        = 25.4 MM
PPI         = 72.0           // 每英寸对应的磅数,磅是印刷行业的专用单位,见:http://zh.wikipedia.org/zh/%E9%BB%9E_(%E5%8D%B0%E5%88%B7)
DPMM        = DPI / INCH = 600 / 25.4 = 23.622  // 每英寸上的点数,由于 DPI 是针对打印的,所以该值也是针对打印机说的
spatium     = 1.764 MM        // 两条相邻的谱线间距,这是一个变量,这是初始默认值,可在设置对话框里修改
MuseScore 中有大量表示排版位置的值,它们的单位都线间距 spatium,简写为 sp。
使用 spatium 作为计算单位对打谱软件有很大好处。在排版时,最多遇到的是某个元素该放在哪条线、哪个间的位置上。比如在高音谱表里,要添加一个 F 音(即第一间),已知谱表左上角的位置,那么直接加上 3 倍 sp 就是该音的 Y 方向位置,要是用毫米,就晕菜了。为了统一起见,排版时不仅 Y 方向使用 sp 做单位,X 方向也一样。
音符的符头高度是 1 sp,这样音符在间位置时,正好和上下谱线相切,看起来最美观。谱线宽度是 0.08 sp,代码中查找 ST_staffLineWidth。新建的空白乐谱看起来所有的线都差不多,实际值也确实差不多,上下加线(ST_ledgerLineWidth 为 0.12 sp),单小节线(ST_barWidth 为 0.16 sp)。
MuseScore 文件以 xml 形式表示,<Style> 标签下的许多项都以 spatium 为单位,源代码变量 styleTypes[] 定义了它们的名称及类型,类型为 ST_SPATIUM 的单位即是 spatium,具体见 样式编辑对话框(菜单[样式]->[编辑一般样式])。
使用 spatium 作为计量单位,这在打谱软件行业是一种通用标准。打开一个 Finale 保存的MusicXml文件,可以看到,Finale 使用谱线间距的十分之一作为计量单位,叫做 tenth,10 tenths 就等于 spatium。其中最重要的一个参照物就是 40 tenths 即五条线的高度,对应 7.2319 mm(毫米),搜索标签 <scaling>。
MuseScore 的页面大小设置在[设置]对话框中,页面大小使用毫米表示。常见的页面尺寸,如打印最常用的 A4 尺寸,宽度为 210 毫米,长度为 297 毫米。297 / 1.764 = 168.37,这样就可以说页面从上到下可以容纳 168.37 个谱线间距,实际上要考虑各种间距,一个页面能显示 5~6 组钢琴谱表就不错了。

排版离不开位置的计算,MuseScore 是如何表示这些位置的呢?
MuseScore 里和长度相关的单位有这样几种:毫米,谱线间距,磅,点等。
几个常用的量:
MM                           // 毫米
PDPI        = 96  / 120      // 屏幕分辨率
DPI         = 600            // 打印机的逻辑分辨率,相当于 Qt 的 高分辨率打印机的精度
INCH        = 25.4 MM
PPI         = 72.0           // 每英寸对应的磅数,磅是印刷行业的专用单位,见:http://zh.wikipedia.org/zh/%E9%BB%9E_(%E5%8D%B0%E5%88%B7)
DPMM        = DPI / INCH = 600 / 25.4 = 23.622  // 每英寸上的点数,由于 DPI 是针对打印的,所以该值也是针对打印机说的
spatium     = 1.764 MM        // 两条相邻的谱线间距,这是一个变量,这是初始默认值,可在设置对话框里修改

MuseScore 中有大量表示排版位置的值,它们的单位都线间距 spatium,简写为 sp。
使用 spatium 作为计算单位对打谱软件有很大好处。在排版时,最多遇到的是某个元素该放在哪条线、哪个间的位置上。比如在高音谱表里,要添加一个 F 音(即第一间),已知谱表左上角的位置,那么直接加上 3 倍 sp 就是该音的 Y 方向位置,要是用毫米,就晕菜了。为了统一起见,排版时不仅 Y 方向使用 sp 做单位,X 方向也一样。
音符的符头高度是 1 sp,这样音符在间位置时,正好和上下谱线相切,看起来最美观。谱线宽度是 0.08 sp,代码中查找 ST_staffLineWidth。新建的空白乐谱看起来所有的线都差不多,实际值也确实差不多,上下加线(ST_ledgerLineWidth 为 0.12 sp),单小节线(ST_barWidth 为 0.16 sp)。
MuseScore 文件以 xml 形式表示,<Style> 标签下的许多项都以 spatium 为单位,源代码变量 styleTypes[] 定义了它们的名称及类型,类型为 ST_SPATIUM 的单位即是 spatium,具体见 样式编辑对话框(菜单[样式]->[编辑一般样式])。
使用 spatium 作为计量单位,这在打谱软件行业是一种通用标准。打开一个 Finale 保存的MusicXml文件,可以看到,Finale 使用谱线间距的十分之一作为计量单位,叫做 tenth,10 tenths 就等于 spatium。其中最重要的一个参照物就是 40 tenths 即五条线的高度,对应 7.2319 mm(毫米),搜索标签 <scaling>。
MuseScore 的页面大小设置在[设置]对话框中,页面大小使用毫米表示。常见的页面尺寸,如打印最常用的 A4 尺寸,宽度为 210 毫米,长度为 297 毫米。297 / 1.764 = 168.37,这样就可以说页面从上到下可以容纳 168.37 个谱线间距,实际上要考虑各种间距,一个页面能显示 5~6 组钢琴谱表就不错了。

posted @ 2010-04-29 17:04  vanferry  Views(2592)  Comments(0)    收藏  举报