Three sets, all CC BY-SA 4.0 and verified at the source on 2026-09-29: Mulberry 3.6.1 (default; "you must not charge for the symbols themselves"), OpenMoji 17.0.0 (brand logos excluded) and Blissymbolics BCI-AV 2026-07-25. No ARASAAC, Sclera or other NC/ND set. tools/symbols/build.py rebuilds everything reproducibly from pinned, SHA-256-checked sources: one self-contained sprite per set (<set>.<sha256-12>.svg; no scripts, styles, classes or external refs), crates/aac-core/src/symbols/index.json, and LICENSES.md. Concepts are every default-board label plus the core vocabulary (502); each set's own index gives candidates, and overrides.toml (about 175 entries, each with a reason) fixes what the contact sheets showed was wrong — Mulberry's "I" is the letter, its "pants" UK underpants, OpenMoji's "apple" the brand, Bliss's "fast" means not eating. A concept stays unmapped rather than get a misleading picture. aac_core::symbols gives lookup / lookup_for_cell (action-aware, so the Back navigation cell does not get the body part) with a preferred set and a fallback flag, set_info for attribution, and normalize_concept, kept in parity with the builder by a 533-case fixture. crates/aac-web/tests/symbol_coverage.rs checks every label of every default layout resolves (221/237) or is on a short allowlist with reasons, and that each sprite holds every slug and nothing unsafe. Co-Authored-By: Claude Opus 5.5 <[email protected]>
237 lines
8.2 KiB
JSON
237 lines
8.2 KiB
JSON
{
|
|
"name": "aac-symbols-build",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"name": "aac-symbols-build",
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"svgo": "4.1.0"
|
|
}
|
|
},
|
|
"node_modules/boolbase": {
|
|
"version": "1.0.0",
|
|
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
|
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
|
|
"license": "ISC"
|
|
},
|
|
"node_modules/commander": {
|
|
"version": "11.1.0",
|
|
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
|
|
"integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=16"
|
|
}
|
|
},
|
|
"node_modules/css-select": {
|
|
"version": "6.0.0",
|
|
"resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz",
|
|
"integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==",
|
|
"license": "BSD-2-Clause",
|
|
"dependencies": {
|
|
"boolbase": "^1.0.0",
|
|
"css-what": "^7.0.0",
|
|
"domhandler": "^5.0.3",
|
|
"domutils": "^3.2.2",
|
|
"nth-check": "^2.1.1"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/fb55"
|
|
}
|
|
},
|
|
"node_modules/css-tree": {
|
|
"version": "3.2.1",
|
|
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
|
|
"integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"mdn-data": "2.27.1",
|
|
"source-map-js": "^1.2.1"
|
|
},
|
|
"engines": {
|
|
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
|
|
}
|
|
},
|
|
"node_modules/css-what": {
|
|
"version": "7.0.0",
|
|
"resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz",
|
|
"integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==",
|
|
"license": "BSD-2-Clause",
|
|
"engines": {
|
|
"node": ">= 6"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/fb55"
|
|
}
|
|
},
|
|
"node_modules/csso": {
|
|
"version": "5.0.5",
|
|
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
|
|
"integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"css-tree": "~2.2.0"
|
|
},
|
|
"engines": {
|
|
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
|
|
"npm": ">=7.0.0"
|
|
}
|
|
},
|
|
"node_modules/csso/node_modules/css-tree": {
|
|
"version": "2.2.1",
|
|
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
|
|
"integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"mdn-data": "2.0.28",
|
|
"source-map-js": "^1.0.1"
|
|
},
|
|
"engines": {
|
|
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
|
|
"npm": ">=7.0.0"
|
|
}
|
|
},
|
|
"node_modules/csso/node_modules/mdn-data": {
|
|
"version": "2.0.28",
|
|
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
|
|
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
|
|
"license": "CC0-1.0"
|
|
},
|
|
"node_modules/dom-serializer": {
|
|
"version": "2.0.0",
|
|
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
|
|
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"domelementtype": "^2.3.0",
|
|
"domhandler": "^5.0.2",
|
|
"entities": "^4.2.0"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
|
}
|
|
},
|
|
"node_modules/domelementtype": {
|
|
"version": "2.3.0",
|
|
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
|
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
|
|
"funding": [
|
|
{
|
|
"type": "github",
|
|
"url": "https://github.com/sponsors/fb55"
|
|
}
|
|
],
|
|
"license": "BSD-2-Clause"
|
|
},
|
|
"node_modules/domhandler": {
|
|
"version": "5.0.3",
|
|
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
|
|
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
|
|
"license": "BSD-2-Clause",
|
|
"dependencies": {
|
|
"domelementtype": "^2.3.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 4"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
|
}
|
|
},
|
|
"node_modules/domutils": {
|
|
"version": "3.2.2",
|
|
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
|
|
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
|
|
"license": "BSD-2-Clause",
|
|
"dependencies": {
|
|
"dom-serializer": "^2.0.0",
|
|
"domelementtype": "^2.3.0",
|
|
"domhandler": "^5.0.3"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/fb55/domutils?sponsor=1"
|
|
}
|
|
},
|
|
"node_modules/entities": {
|
|
"version": "4.5.0",
|
|
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
|
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
|
"license": "BSD-2-Clause",
|
|
"engines": {
|
|
"node": ">=0.12"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
}
|
|
},
|
|
"node_modules/mdn-data": {
|
|
"version": "2.27.1",
|
|
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
|
|
"integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
|
|
"license": "CC0-1.0"
|
|
},
|
|
"node_modules/nth-check": {
|
|
"version": "2.1.1",
|
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
|
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
|
|
"license": "BSD-2-Clause",
|
|
"dependencies": {
|
|
"boolbase": "^1.0.0"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/fb55/nth-check?sponsor=1"
|
|
}
|
|
},
|
|
"node_modules/picocolors": {
|
|
"version": "1.1.1",
|
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
|
"license": "ISC"
|
|
},
|
|
"node_modules/sax": {
|
|
"version": "1.6.1",
|
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
|
|
"integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==",
|
|
"license": "BlueOak-1.0.0",
|
|
"engines": {
|
|
"node": ">=11.0.0"
|
|
}
|
|
},
|
|
"node_modules/source-map-js": {
|
|
"version": "1.2.1",
|
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
|
"license": "BSD-3-Clause",
|
|
"engines": {
|
|
"node": ">=0.10.0"
|
|
}
|
|
},
|
|
"node_modules/svgo": {
|
|
"version": "4.1.0",
|
|
"resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz",
|
|
"integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"commander": "^11.1.0",
|
|
"css-select": "^6.0.0",
|
|
"css-tree": "^3.0.1",
|
|
"css-what": "^7.0.0",
|
|
"csso": "^5.0.5",
|
|
"picocolors": "^1.1.1",
|
|
"sax": "1.6.1"
|
|
},
|
|
"bin": {
|
|
"svgo": "bin/svgo.js"
|
|
},
|
|
"engines": {
|
|
"node": ">=16"
|
|
},
|
|
"funding": {
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/svgo"
|
|
}
|
|
}
|
|
}
|
|
}
|