# M0 第三方套件告知

查核日期：2026-11-03。本檔描述目前已保留材料，不是法律意見。未執行的重建或替換不寫成已完成。

## 主套件

|套件|鎖定版本|授權本文|官方版本來源|
|---|---|---|---|
|Verovio|6.4.0|[LGPLv3](VEROVIO-LGPL-3.0.txt)、[GPLv3](VEROVIO-GPL-3.0.txt)|https://github.com/rism-digital/verovio/tree/version-6.4.0|
|OpenSheetMusicDisplay|2.2.1|[BSD-3-Clause](OSMD-BSD-3-Clause.txt)|https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/tree/2.2.1|
|VexFlow|1.2.93|[MIT](VEXFLOW-MIT.txt)|https://github.com/0xfe/vexflow/tree/1.2.93|

各授權直接取自官方指定版本，未更動本文；來源、大小、SHA-256 見 source-manifest.json。OSMD 官方建置會套用 VexFlowPatch，VexFlow 版本是依賴基線，不表示 bundle 內未經上游修改。

## OSMD 實際 bundle 與相依告知

官方 GitHub release 2.2.1 的 min.js 為1,420,498 bytes；安裝 npm 的 min.js 為1,420,444 bytes。官方 release 完整包含 npm 檔的相同前綴，只多54 bytes的 sourceMappingURL 註解。因此同次官方發布的 source map 對應此程式內容，而不是不同版本推測。

官方 map 有326個來源，其中100個 node_modules 模組來自 jszip、loglevel、typescript-collections、vexflow。全部模組路徑與內容hash、bundle差異及map hash保存在 osmd-sourcemap-manifest.json。可辨識的原始授權／著作權註解82段原樣保存在 OSMD-2.2.1-SOURCE-LICENSE-COMMENTS.txt。這是官方map的提取告知，不偽稱上游未附的 opensheetmusicdisplay.min.js.LICENSE.txt。

來源：
- https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/releases/tag/2.2.1
- https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/releases/download/2.2.1/opensheetmusicdisplay.min.js.map
- https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/blob/2.2.1/webpack.prod.js

另附 JSZip3.10.1、loglevel1.9.2、typescript-collections1.3.3、pako1.0.11、lie3.3.0、immediate3.0.6、setimmediate1.0.5 的官方授權本文。下載封存均與 lock integrity核對，見 dependency-source-manifest.json。JSZip選擇MIT使用，保留官方完整雙授權檔。JSZip本身是bundle；pako等內嵌程式另保留告知，pako的deflate.js與inflate.js完整原檔含zlib原著／改作告知。

readable-stream及Node相依授權為保守補充，不代表全在瀏覽器執行。JSZip module16的readable-stream映射至external stream；不得把安裝依賴直接等同瀏覽器bundle。isarray未另複製README中的授權，沒有證據其實作進入本瀏覽器bundle。

BSD/MIT要求保留適用的著作權、條件及免責聲明；沒有要求必須使用某個檔名。因此已補官方完整授權與精確來源告知後，不把缺上游同名LICENSE.txt本身當成無法進行測試的理由。BSD並禁止未經許可拿權利人／貢獻者姓名背書。

## Verovio 原始碼、替換與重建材料

兩個原始.mjs獨立保存在vendor/verovio/，與npm原檔逐位元組相同；沒有再混進應用程式bundle。M0自有建置輸入與lock保存在replaceable-app/。官方來源封存由建置流程提供於dist/sources，應用頁可下載；建置說明見REBUILDING.md。

version-6.4.0 annotated tag 831f9e3a88e9fd6b80955a86556173f4e8bfeb2c 解引用到 cb5fcfa1178238138aa7f51f1e55f6a743eb26cc，與npm6.4.0 gitHead一致，來源版本已確認。封存SHA-256為8c36565ba46d37c184d4a1265e9a8b3bd0db854c7f0b77bbf448fd7c5968c1f6。

尚未用上游工具鏈重新編譯並逐位元組重現npm WASM，也未實測替換相容修改版；這些未測事項不等於觀察到授權禁止。LGPL的實際義務包括保留告知與本文、依交付方式提供對應原始碼及適用的重新組合／替換材料，並不得限制為修改函式庫除錯所需的逆向工程。須按實際散布形式履行，不以此檔代替義務，也不以「無法律保證」作無限期擱置理由。

## Leipzig 字型

Verovio6.4.0內嵌的Leipzig.ttf自身name table列出四位作者Etienne Darbellay、Jean-Francois Marti、Laurent Pugin、Klaus Rettinghaus，並明示SIL Open Font License及版本5.2.102。原始中繼資料與精確字型hash見leipzig-embedded-metadata.json。這是內嵌版本自身的授權證據，不是只從目前main推論。

已保留官方[OFL1.1全文](LEIPZIG-LICENSE.txt)與[FONTLOG](LEIPZIG-FONTLOG.txt)，來源為同版本時期提交8de1ebfc102db2dee283381971f89a502ee29a55，見leipzig-historical-manifest.json。該提交TTF與內嵌TTF並非byte相同，未宣稱同一二進位；不影響內嵌檔自身已有OFL授權聲明。現行main另取的LEIPZIG-OFL.txt保留來源紀錄，未冒充歷史檔。

OFL要求保存適用作者／授權告知，修改字型另涉及保留字型名稱等條件。目前沒有修改字型。這裡未宣稱其他所有內嵌字型都完成逐位元組歷史對照。

## 交付前最小檢查

1. 重新建置，確認dist包含更新告知、獨立Verovio模組、來源封存與應用重建輸入。
2. 確認收件人可實際下載上述材料，連結不能只有私人工作區可見。
3. 瀏覽器執行與相容替換的測試結果如未完成，照實標示，不偽造。

目前沒有找到需要額外購買授權或重新取得上游許可才能進行本次用途的證據。不提供法律保證，不等於已有禁止發布的證據；仍須履行上述具體散布條件。
