@@ -26,7 +26,8 @@ export interface SNRootMeta {
2626 * - meta 中:数据层追溯来源,知道这些字段来自 ABC 的 T:、C: 等字段
2727 *
2828 * 2. ABC 特有的元数据仅存储在 meta 中(不参与布局渲染):
29- * - origin, area, notes, copyright, noteLength 等
29+ * - origin, area, notes, copyright 等
30+ * - noteLength(冗余存储,用于追溯 ABC 来源,同时在 props 中用于布局计算)
3031 *
3132 * 根据 ABC 标准 v2.1
3233 * @see https://abcnotation.com/wiki/abc:standard:v2.1
@@ -47,8 +48,38 @@ export interface SNScoreMeta {
4748 notes ?: string ;
4849 /** 版权信息(S: 字段在头部时)- ABC 特有 */
4950 copyright ?: string ;
50- /** 默认音符长度(L: 字段,如 "1/4", "1/8")- ABC 特有 */
51+ /** 默认音符长度(L: 字段,如 "1/4", "1/8")- ABC 特有,存储在 meta 中以便追溯来源,已转换为 timeUnit 存储在 props 中 */
5152 noteLength ?: string ;
5253 /** 其他 ABC 特有的字段(H:, G:, R:, Z:, D:, F:, B: 等) */
5354 [ key : string ] : unknown ;
5455}
56+
57+ /**
58+ * Section 级别的元数据(ABC 特有的 section 元数据)
59+ *
60+ * 设计理念:支持冗余存储(与 Score 层一致)
61+ * 1. 通用布局渲染信息(title, subtitle, contributors)同时存储在:
62+ * - props 中:布局层统一访问,不关心具体记谱法格式
63+ * - meta 中:数据层追溯来源,知道这些字段来自 ABC 的 T:、C: 等字段
64+ *
65+ * 2. ABC 特有的元数据仅存储在 meta 中(不参与布局渲染):
66+ * - 其他 ABC 特有字段
67+ *
68+ * 根据 ABC 标准 v2.1,Section 可以有自己的标题、拍号、调号、速度等
69+ * @see https://abcnotation.com/wiki/abc:standard:v2.1
70+ */
71+ export interface SNSectionMeta {
72+ /** 标题(T: 字段)- ABC 特有,冗余存储在 meta 中以便追溯来源 */
73+ title ?: string ;
74+ /** 副标题(第二个 T: 字段)- ABC 特有,冗余存储在 meta 中以便追溯来源 */
75+ subtitle ?: string ;
76+ /** 创作者列表(C: 字段)- ABC 特有,冗余存储在 meta 中以便追溯来源 */
77+ contributors ?: Array < { name : string ; role ?: string } > ;
78+
79+ /** 默认音符长度(L: 字段,如 "1/4", "1/8")- ABC 特有 */
80+ noteLength ?: string ;
81+ /** Section 标识符(S: 字段的值)- ABC 特有 */
82+ sectionId ?: string ;
83+ /** 其他 ABC 特有的字段 */
84+ [ key : string ] : unknown ;
85+ }
0 commit comments