{"_id":"three-msdf-text-utils","_rev":"19-e1d1ea329bc8319bbf386a0a03d8997d","name":"three-msdf-text-utils","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"three-msdf-text-utils","version":"1.0.0","author":"","license":"ISC","_id":"three-msdf-text-utils@1.0.0","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"584e0f3fd9fc19dc5802ad8295f51224eebea585","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.0.0.tgz","fileCount":50,"integrity":"sha512-2iS9yQt88tuopmgRI4xRTxw7v6FcveQAQYroHHYGVvmo17KdHsOakBFvnkm8jpOhDCHMFaArRjTqBYGsdSp7cw==","signatures":[{"sig":"MEQCIEdQptBL4ucKMiaAoPA59cOM6Ta3doudQkqw//XgLugwAiA2wv6j8ug+TDezg4N1bUiEAAE9R7FQzpfQ7DcbmNQENg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1389940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwBeMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreOQ/8C/nBTmbrEPPvYgc+pJXcJKNtR+oSryNP3PJ7pWl+hhkCnvfP\r\nPRS5MS/66WkC6UMoa4e0MbA98L69UsE9PEbK4ySucBhBFT/GyKh9ObUlles9\r\n4CedPp6M6psRY8VKqrFlyZnLl8okqfFhcM0VwAk2l/deaopu0TPohBwcd0b3\r\nCAsc8/KQ1CaAkfuhfArnXSN7uPEmUDKy121/ITCtRdZN0UsjuCwHEdZeqkk3\r\n40rdT++3bUcF+6edXohV5CLnpPmYCXevs0Vc67SHz3/CITl07cMfQhgW7Edt\r\n7AB0kEUB5oFQFmq+2+PAM+umAh4B+xpq1VL8aXcezVUn6iXpbVDPdoYCtCl3\r\nzOQlbsoKXCnLFpiwvChE0cKmemHq9SCQTALcFxJ7WWLhtuAVTdWNy1aPDsZD\r\nOno5WYnOw1aQeTwpfCWZn02aXK7qa2chciqfDn7kDMQkotB3PcNU+u8sACa0\r\nNeS/N95vwZydgP7tfcyrWXp50pXyU1bqo9+VsFwIhblwHK3WPfQnVh3Tg5/g\r\nak0euRuTFdqUlRFWK+NNuqbCSv9uNBkdiqH/duEUzNNFsUYogTLB4SnDeeL+\r\nP9AS0I/oZfcG9c7uJBwqUnRB+SdTJaF43Svrb9g3xCGz84I7ktdADuaV95Ot\r\n8N/SCdNPT8C4iUK5Vro0hEDQquzEemyqOdo=\r\n=176t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/bundle.js","gitHead":"ccf83ee990e9fce2831b142882ef5bb4a3801ca6","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0","tweakpane":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.0.0_1673533323956_0.38282187392041833","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"three-msdf-text-utils","version":"1.0.1","author":"","license":"ISC","_id":"three-msdf-text-utils@1.0.1","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"ff5d911d961864d649e84b435da23ef8e4f4a3d7","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.0.1.tgz","fileCount":38,"integrity":"sha512-Gf+Y8eRSLi8thlm32q/hFreD2EpBtfHxAUDfsV+oYFX+WxGzrPq1w6V7g58tQQHwoeNxtDsd4oSHvyCZPC5vUA==","signatures":[{"sig":"MEUCIBiV3gKHkzt3hKCMFhPRzbdimbT10flgJdY7OyhZ2SZEAiEAxNqk0bD3lUloZjb+EpQdcv4ldNjAPpUl0uhlg0xqL1A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj297hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrxxg//SFsPkqJp5d/yA/FgTWjTgo6z4o+inn3YpTB2pEzIzcpV613f\r\nbxLG9IPpmV5wElHPsIng2U8m/V8GfwOUlUKpKhmhsbgLph1doZ9xiSzyqRl1\r\ndRJN9505tbFfp0W/GyqoHg78/kwzqgKUY7uOyAMrGcW3n+k9ZkLf08FhdevV\r\nVhowlecPfU+X74D3uTMJ+lF9Ni2tX689OCYFbyl4SYwSnU8QbpsR4e3p7gJV\r\n9a2+CDHXvoolT1MxyQGBibxNBMXgluVQQ49l2ERzve7BFJ8fpH6vOyCY7iiH\r\n5yGudhXSD0elVFEi4B6dlCdRHyychUxRJtc5vfSITPNCkxPj0wIqK7+5+SG9\r\n3MsyCBoR4a+daqgygIVvTevlkp/7/wrIWJ8a1g7yRTg5bdwsk7EAFX3IbSFM\r\n5hFx/3pEK5EKNuDyWqWphprjR57V3YK8cO/vyJHgQNyIKy8ACE8frgtQ9jY6\r\ns6LkylwJE3FQIjHBHm3Au/OFz2PHHc4EyWP9sE27d0aP6MK1tyDupq1U50Pw\r\nFFCXxn8hTTBGLePyP7Ky0ur3OOOzFAMk6lSSdU80n/XCjqOJ8zTleLK8wc51\r\nLOrRLmSPuPmnShcdaPvwdEhSgua7+Nnu02ZNBj5SzOz9EzcfIopl8eb5/Pjh\r\nsSnUdZr8xs/NJDb+NFhte572atp+SUNrohQ=\r\n=efxs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/bundle.js","gitHead":"48065e3132789006f75fc4b9dddd10f3aa20e58c","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.0.1_1675353825516_0.6357018453129886","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"three-msdf-text-utils","version":"1.1.0","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.0","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"b0ed6d1c2113ef6ae35713caf2781574d707bafe","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.0.tgz","fileCount":38,"integrity":"sha512-24kISaOIbmULoIn4i01LIrQe6cdxem8xKFiDFSzawiLKz8GQt2QtQ/EHXYDQl33VwPT+i5HhF4xATf6tomtP+A==","signatures":[{"sig":"MEUCIGeY3/7LIupLV/0FPkv/ugt/lhLLxApgaQAS6bXofOWhAiEA8Jv75RS+zbFuUwh6CrYdDyZ7/LkIO6cSew7062YxJV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2971ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmreuw/6An6cQ5vkDDTEbCZacW/oUwAUTKNsyTCbyiTlvnEYI05MY8IE\r\n0LSOIdr0OQ1UYHHMbbhzGjHZP8d3VX2UlMz+hfQmkmK71ylEmnXwtk57LHhE\r\nIbKF9IzlR4AE1q8MN5P2UTgDb7nqWG5ozMRyDBBRLzx7SqyUQ/3EiBUYEmmB\r\nUJ47SY5l4gEgQeZTYnhf/0Rf5VmnGAguoBUDUjLJln9oSh5IM6BINGaSpYVP\r\n5yFFj7PQGoZbbIZLQggwT1NwYX3vjNz5HoBnCn9g2EOkd26iyfQ+8PeVSxdF\r\nRCUxCgDm3FdNmFY7+KZSTzgDFWC4MGnem9TZT/36TFP75L8Jxx/DFqh/dT+S\r\nVLOUMKeK1ccmxJcYfb+m0IIwcepfbEQ3Vr7xw4DpwI/mBhEtIgqiAmclI95A\r\njnFfqSe4jDC3tltMjdgujamH+sJ7Fu3OxC53QuuMaUjzQfykaBirIrw2dyW4\r\nypz2/0LXCJsns1H9l5Is+NESs5Z09oq46DX478iqdox9a3OAvs1pz452Ta+a\r\n/fAlgYKX6VWdpk3CZ/ExoHAiYEa+8RMzeDHoJi2mo2p34Xv9ZkWjYHPGcHgP\r\nS3inyPhgeeU/ut9NvktNzQijVhezO3INvNA6GdlpWYWoNATk9KOZHaEn5WJW\r\nhrG9YTBSQBE/gtjXnLOnNvIyHwDauKUpGqw=\r\n=0Fzw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/bundle.js","gitHead":"2374cd0f0cfc814822015157911ad91f9f349ce6","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.0_1675353845425_0.6450354674045076","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"three-msdf-text-utils","version":"1.1.1","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.1","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"47013ada6e4e5774a30eeb87a83ce62cb1c80103","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.1.tgz","fileCount":38,"integrity":"sha512-bjpcSdMzneSrms+2vRVkdkRRMpi5ZVVA5nvx5QgSo42MPnbzxFuFK64TR4cSdc/1scedwxlhjNPpwTOqLgmbXg==","signatures":[{"sig":"MEUCIQCbxSJZfUrjxFbgjpKHzmZHiBXpVMHS63EYGu4WLl2G8AIgSC108ffIYieD0nfnReIBUstWyQ7RRwYaTXoZB7jSAiU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396652},"main":"build/bundle.js","gitHead":"d62c4ad36b8fcdec1078f4de05cdcbdb48a720e1","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.1_1684489156596_0.0364355447038498","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"three-msdf-text-utils","version":"1.1.2","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.2","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"f1aea114441cc6dc8a37bc4958fef42bd49e7307","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.2.tgz","fileCount":38,"integrity":"sha512-/GAb8I2wVJlBQ/h7HTcQPl1u8YRHZdiLe2XIyFSxarhH7xjhkMRcpGZOGznY3b/nGX+sYLmyNzgkCuH36cPnJA==","signatures":[{"sig":"MEUCIQDMdeQ2Q7a5/BXISGPiTaVh+FZN4/4gK+OPrR4xJlZ6KwIgP/ncTl7hp6ubSzl4hbNucNbVss6dd2WkZWBAN3ysDTA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396677},"main":"build/bundle.js","gitHead":"aa00bee455057e7a0bfc5280858adf2e8989cf24","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.2_1684489358759_0.6834002024487944","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"three-msdf-text-utils","version":"1.1.3","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.3","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"f67dd2d3f3006d809f3053a7101c2ffa3a88401e","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.3.tgz","fileCount":38,"integrity":"sha512-h+LHPLkFwih+Lwt4uA2XMeVKIMqSAhe/vwgGFYcwDJKr/vYtKmDBfCCWBkEz5pr8ez2by2zJrjhRk601tEKH0A==","signatures":[{"sig":"MEYCIQC1OWk7a/dBkJe94abj0HTmxLneIjNwARjBv04IKL5LMwIhAJwSqkSD1kX7kHvTQVdxhvVwQL/rb1cpsTmhmh5/ujsS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396677},"main":"build/bundle.js","gitHead":"aa00bee455057e7a0bfc5280858adf2e8989cf24","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.3_1684489644274_0.1390202932437936","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"three-msdf-text-utils","version":"1.1.4","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.4","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"1297d0df391ebc5575fd54bf2d22e2b2ed29f5bc","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.4.tgz","fileCount":38,"integrity":"sha512-9QGsWfqslp8+06bHp98noo1jQIKiLLQY113AMBNahKXpKiOpLMykL+taD+HRmrRoUHkbltx19KORQ5giWc9KZw==","signatures":[{"sig":"MEUCIBC+346xj2uzhkOmCU4lUJe/xSSZy4BP5JH4kDbxFY1BAiEAsu4AAVCjhV1H6wgUaJEc870lwnsmuIBRuU3eOJNwF7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396677},"main":"build/bundle.js","gitHead":"aa00bee455057e7a0bfc5280858adf2e8989cf24","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.4_1684489833675_0.2119025352618522","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"three-msdf-text-utils","version":"1.1.5","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.5","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"3b4b4d097e713406ac41df56d34143ed92b71678","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.5.tgz","fileCount":38,"integrity":"sha512-cOJ8ahm5l0V2G2FyONlIyqYD30h1KarqD6+lRt8SmC4wd80fooAi6rOZL1MjUzPewUiywG4n1I7C0JMoEbQRyA==","signatures":[{"sig":"MEQCIHMjBYK+sxKT3iN5APRZ9DMP5GVj2J4ZtoGPUxahX+c5AiBAMUPwjcnuWSxtmh6AfvLYsbgF1o++DNJuU/6UhZXtVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396727},"main":"build/bundle.js","gitHead":"949672ee0235115d60d089e735635d3833ee1ee5","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.5_1684491630643_0.054126291174844576","host":"s3://npm-registry-packages"}},"1.1.6":{"name":"three-msdf-text-utils","version":"1.1.6","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.6","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"6942a211fc58fca76b9866b60b14feb22d34bd52","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.6.tgz","fileCount":38,"integrity":"sha512-I9H7oypKE3J5nlNr03cqgl/5dZPkDftDQjxvOE3NmMlxs2TB5LT/IHbO2qbp500VwPLCyx+luB4TF21FoaLP9Q==","signatures":[{"sig":"MEUCIDtKqJ9+qBeHvEySXW5Mvr8d9wQ2TI6wuZP90JTPafZuAiEA9hopT85S/LKdN+3fqFHh18khq4kj4Poa1KhHlRB3Iu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1396686},"main":"build/bundle.js","gitHead":"949672ee0235115d60d089e735635d3833ee1ee5","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.6_1684491702202_0.3622664073371138","host":"s3://npm-registry-packages"}},"1.1.7":{"name":"three-msdf-text-utils","version":"1.1.7","author":"","license":"ISC","_id":"three-msdf-text-utils@1.1.7","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"73b52f791238244e716ce8415e356b7380902555","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.1.7.tgz","fileCount":38,"integrity":"sha512-wnK349KJlDmq3eH76VD62xC+Hz6z2/7ql9mztrc7qgsXpwyxHrzOsftBUxwNBxTLEzXUvnWcSkpvjcrAThJ1Wg==","signatures":[{"sig":"MEUCIEUlD0K0ehxLRzqtx03aPF/AIXLY0znd6sBs4825ZJy9AiEAgHHTeySpnWIWjQ8klEZolVSniigfZS262zlkHm1inzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1398415},"main":"build/bundle.js","gitHead":"f794dd73d71bd0078e1bf5069ba2dd1bb101d0c3","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"8.19.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"16.17.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.142.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.129.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.1.7_1709817196594_0.19092626269787272","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"three-msdf-text-utils","version":"1.2.0","author":"","license":"ISC","_id":"three-msdf-text-utils@1.2.0","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"0fa27d2eacd8029f0b5176fa8709130a0ffec2a9","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.2.0.tgz","fileCount":42,"integrity":"sha512-t3Gi08ZScGstzcZmXEsALpV8lGdkt1QBbKq1mReFYsRI1KMdogFhWzP9ZT70cTzDe58euK30TK5SfuL3SSU0UA==","signatures":[{"sig":"MEUCIAo1aVgV6GOIoXIXHnzR15BYkNYRAvijg9GAkSUQTbb9AiEAq5SpR26bUf95+GPACjQiJ92Ys5TXnUuCHUvP2osMp+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3663814},"main":"build/bundle.js","gitHead":"b39af4eea6b1f732d7fa76bb272fb0d7ed4a04fa","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.178.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.2.0_1754658281532_0.28588379139154907","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"three-msdf-text-utils","version":"1.2.1","author":"","license":"ISC","_id":"three-msdf-text-utils@1.2.1","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"8d74bf8c1eee78ca06fed4e1b0ec7eafc18bdc87","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.2.1.tgz","fileCount":42,"integrity":"sha512-f5usSnjfpy5nnAEm/zwZeiuxSdIm5rBDfw2I90EKLsa5DS1fD6/DC97waRAOeLsHm6CR3JZxsBxV8NRJacGdMQ==","signatures":[{"sig":"MEYCIQCdsvLQIh0AINcv9PEuEnslqpep/sasPpfBZIDHEdQmYwIhAPNTJEBlYlfBkLw71pzADVMA3X5DY2oqn8TrnQUhoAH7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3665277},"main":"build/bundle.js","gitHead":"b39af4eea6b1f732d7fa76bb272fb0d7ed4a04fa","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"three":"^0.178.0","eslint":"^8.19.0","rollup":"^2.77.0","tweakpane":"^3.1.0","@babel/core":"^7.18.6","eslint-plugin-n":"^15.2.4","@babel/preset-env":"^7.18.6","@rollup/plugin-json":"^4.1.0","rollup-plugin-serve":"^2.0.0","@babel/eslint-parser":"^7.18.2","@rollup/plugin-babel":"^5.3.1","eslint-plugin-import":"^2.26.0","rollup-plugin-terser":"^7.0.2","eslint-plugin-promise":"^6.0.0","rollup-plugin-glslify":"^1.3.0","@rollup/plugin-commonjs":"^22.0.1","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.2.1_1754658312510_0.10671217773909003","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"three-msdf-text-utils","version":"1.3.1","author":"","license":"ISC","_id":"three-msdf-text-utils@1.3.1","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"9fa4aac405f42457537c02cb42db01525063a36c","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.3.1.tgz","fileCount":44,"integrity":"sha512-k+U+Xr9g7SU/HEx187vNuwLoQOLpoGQKEjL+u7ztypD8J8SBKj1IkB+82fMsSJroeOHJeFQku7jD1d/VwL/31w==","signatures":[{"sig":"MEQCIF3aV/IQNWgaTIqzdNWZQrYDTzFL579iTEe4kwCQTXYhAiBqvZHzF88PZbEtbPJd7tkHQis5JSReoR3Ud/Aj79vJ2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3741618},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"2d2649ed54d9563e67f4052fb158f3c1d9344fba","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for Text rendering in Three.js using Bitmap fonts and MSDF (multi-channel signed distance fields).","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.3.1_1769681770985_0.6566434498946565","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"three-msdf-text-utils","version":"1.3.2","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"author":{"name":"leochocolat"},"license":"ISC","_id":"three-msdf-text-utils@1.3.2","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"64abeefb75a4736feec73ce5dbef41b28c7a372e","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.3.2.tgz","fileCount":44,"integrity":"sha512-oXvc3ef09mMr+5S77sRUgIJ9a7JwOui4YowpWbzxUSo6J+lxwNVnw24DNO/8jrizwFbD0QE9BEnBymC057o0PA==","signatures":[{"sig":"MEYCIQCK8YkB/icjxue6CK6wtY2Cym0DOL79KF3NMBtLWUY80QIhAKjJj95mjv2c4e3XyocJZcidNfMqQ5x1NYPNVsTvZaLW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3744684},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"3897bc7ee79bc0d8a8dc25fb5aeae32a098901c8","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.3.2_1769683232643_0.35161625063504154","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"three-msdf-text-utils","version":"1.3.3","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"author":{"name":"leochocolat"},"license":"ISC","_id":"three-msdf-text-utils@1.3.3","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"6ccced5d104d9b9b674ac98b34adf356de81f1ba","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.3.3.tgz","fileCount":44,"integrity":"sha512-urH2vy+1t11rd3AQvd2xaT27IiZAAxt7GmTAIl6ystiz2Y5YoUW4qPDdXsJ2eVSqprhLGdFwITiFvJ+MIGUB5A==","signatures":[{"sig":"MEQCIHBu1OIXfeQJ8dIkU4JnY1Y3sXWTlnaZQk+nYtQrJJhxAiByhm68SshJuXe/NNTJ/tgqG//BtgdVO2ZL/1Swe1pcgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3746710},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"d9d44edad8f5a226b74dbf8c5ef60788382f72bc","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.3.3_1769692697356_0.6986515102525828","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"three-msdf-text-utils","version":"1.3.4","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"author":{"name":"leochocolat"},"license":"ISC","_id":"three-msdf-text-utils@1.3.4","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"4d1a5854d7f7c456049e30b141d02ca5abe0e891","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.3.4.tgz","fileCount":44,"integrity":"sha512-AHvvQ3zljVj+TOU5mdZojB1sOk+Xu40dR1rdyPZNpWIOVhs4s8e/4oyAKMsN5phVgF3X9Zvrro8i8Spw8RdRyg==","signatures":[{"sig":"MEUCIQCFQmRf8dFFwf75+EXliXfOh6zBnx3ZnPTE4YezX+rNBQIgXtOczeZeYDn4W1pJp9HzQBTp76OSNp7SuIH4UX1V2b8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3746930},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"740718a5d946ca6551ad398c71136a8787095273","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.3.4_1769694794667_0.7884485607498846","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"three-msdf-text-utils","version":"1.4.0","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"author":{"name":"leochocolat"},"license":"ISC","_id":"three-msdf-text-utils@1.4.0","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"74686c8afd57679a778c64addebbe0a5470d2215","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.4.0.tgz","fileCount":66,"integrity":"sha512-bdOIbxE8ckbZlDwSLguqDpL+GQEX6btoV14AAzwEKDR+tbhOflOiCN87Gg9wKePjbcUM0vpUDDF7ZNXt07YurA==","signatures":[{"sig":"MEUCIBFweeLRJfpKKf7MDxavzocWdoKCzqvHo+vF8Z5pvYySAiEAvzG0EKFYFZemphLg911DLGRcizg3C7A4RrPkKlkHrL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5087669},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"9357fea85e728d9be0d470c3bda5afa8e14587d3","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"comlink":"^4.4.2","quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.4.0_1770981452802_0.09915319748969842","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"three-msdf-text-utils","version":"1.4.1","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"author":{"name":"leochocolat"},"license":"ISC","_id":"three-msdf-text-utils@1.4.1","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"dist":{"shasum":"d352870250a40ee7ebb0401014050dc29688d697","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.4.1.tgz","fileCount":65,"integrity":"sha512-8VfddXtVjsSdl1gPdB79LVccKvg3WGNb6BDkQeQ5t1OsQ5gHggI7HN1xdYmfFa5HnzWvYglcEIiVApXQg8xqNw==","signatures":[{"sig":"MEUCIQCuKQIteNdM85TGISTamnwgdt0SjrSfb5JOPlpY79YbWQIgRbLZwZ/ogAiv5UZiyKBHFBKiO75CVw018DhwHqEltfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5066121},"main":"build/bundle.js","types":"./types/index.d.ts","gitHead":"81b7d6df3294b19daed89cf55228322d9c11462a","scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","help":"rollup --help","build":"rollup --config ./rollup.build.config.js"},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"repository":{"url":"git+https://github.com/leochocolat/three-msdf-text-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"comlink":"^4.4.2","quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.38.0","rollup":"^4.52.5","tweakpane":"^4.0.5","@babel/core":"^7.28.5","@types/three":"^0.178.0","eslint-plugin-n":"^17.23.1","@babel/preset-env":"^7.28.5","@rollup/plugin-json":"^6.1.0","rollup-plugin-serve":"^3.0.0","@babel/eslint-parser":"^7.28.5","@rollup/plugin-babel":"^6.1.0","eslint-plugin-import":"^2.32.0","@rollup/plugin-terser":"^0.4.4","eslint-plugin-promise":"^7.2.1","rollup-plugin-glslify":"^1.3.1","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-livereload":"^2.0.5","@rollup/plugin-node-resolve":"^16.0.3","rollup-plugin-peer-deps-external":"^2.2.4","@babel/plugin-proposal-class-properties":"^7.18.6"},"peerDependencies":{"three":">= 0.178.0"},"_npmOperationalInternal":{"tmp":"tmp/three-msdf-text-utils_1.4.1_1770981809457_0.6359616706650262","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"three-msdf-text-utils","version":"1.5.0","description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"main":"build/bundle.js","module":"build/bundle.js","types":"./types/index.d.ts","exports":{".":{"import":"./build/bundle.js","require":"./build/bundle.js","types":"./types/index.d.ts"},"./webgpu":{"import":"./build/webgpu.js","require":"./build/webgpu.js","types":"./types/webgpu.d.ts"}},"repository":{"type":"git","url":"git+https://github.com/leochocolat/three-msdf-text-utils.git"},"author":{"name":"leochocolat"},"license":"ISC","bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","devDependencies":{"@babel/core":"^7.28.5","@babel/eslint-parser":"^7.28.5","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/preset-env":"^7.28.5","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-terser":"^0.4.4","@types/three":"^0.178.0","eslint":"^9.38.0","eslint-plugin-import":"^2.32.0","eslint-plugin-n":"^17.23.1","eslint-plugin-promise":"^7.2.1","rollup":"^4.52.5","rollup-plugin-glslify":"^1.3.1","rollup-plugin-livereload":"^2.0.5","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-serve":"^3.0.0","tweakpane":"^4.0.5"},"peerDependencies":{"three":">= 0.178.0"},"dependencies":{"comlink":"^4.4.2","quad-indices":"^2.0.1","word-wrapper":"^1.0.7"},"scripts":{"dev":"rollup --config ./rollup.dev.config.js --watch","build":"rollup --config ./rollup.build.config.js","help":"rollup --help"},"_id":"three-msdf-text-utils@1.5.0","_integrity":"sha512-U04FaSYcRCrHL72nL4o3E95zy1ldSrXh+LhzB0VPXFvA6AOJfhDscYaC/xYvW2m7jkpihGPNAtkoo7tnN7GUZw==","_resolved":"/private/var/folders/9f/gtktg6wd6277hfm5q4tsywyh0000gn/T/da21301020ce577893f2dd72e7adbb15/three-msdf-text-utils-1.5.0.tgz","_from":"file:three-msdf-text-utils-1.5.0.tgz","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-U04FaSYcRCrHL72nL4o3E95zy1ldSrXh+LhzB0VPXFvA6AOJfhDscYaC/xYvW2m7jkpihGPNAtkoo7tnN7GUZw==","shasum":"8b50c7339e1eb2ed35c809a58354f4efccd6f80a","tarball":"https://registry.npmjs.org/three-msdf-text-utils/-/three-msdf-text-utils-1.5.0.tgz","fileCount":68,"unpackedSize":5096061,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDbf1VQSbWN01qVi7dwXnPLKjVx4cjuvy8kt3r4dEEBSAiAlPM57Nn8hIw4RHzMBgOYeiVoh5qsg7zxdeE05OB6hYg=="}]},"_npmUser":{"name":"leochocolat","email":"leo.mouraire@gmail.com"},"directories":{},"maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/three-msdf-text-utils_1.5.0_1773325369025_0.6119353302955235"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-12T14:22:03.811Z","modified":"2026-03-12T14:22:49.386Z","1.0.0":"2023-01-12T14:22:04.203Z","1.0.1":"2023-02-02T16:03:45.748Z","1.1.0":"2023-02-02T16:04:05.645Z","1.1.1":"2023-05-19T09:39:16.836Z","1.1.2":"2023-05-19T09:42:39.022Z","1.1.3":"2023-05-19T09:47:24.565Z","1.1.4":"2023-05-19T09:50:33.928Z","1.1.5":"2023-05-19T10:20:30.894Z","1.1.6":"2023-05-19T10:21:42.501Z","1.1.7":"2024-03-07T13:13:16.749Z","1.2.0":"2025-08-08T13:04:41.973Z","1.2.1":"2025-08-08T13:05:12.784Z","1.3.1":"2026-01-29T10:16:11.197Z","1.3.2":"2026-01-29T10:40:32.840Z","1.3.3":"2026-01-29T13:18:17.592Z","1.3.4":"2026-01-29T13:53:14.890Z","1.4.0":"2026-02-13T11:17:33.039Z","1.4.1":"2026-02-13T11:23:29.676Z","1.5.0":"2026-03-12T14:22:49.240Z"},"bugs":{"url":"https://github.com/leochocolat/three-msdf-text-utils/issues"},"author":{"name":"leochocolat"},"license":"ISC","homepage":"https://github.com/leochocolat/three-msdf-text-utils#readme","keywords":["three","threejs","three.js","msdf","sdf","text","font","bitmap-font","webgl","webgpu","signed-distance-field","text-rendering","3d-text","shader","glsl"],"repository":{"type":"git","url":"git+https://github.com/leochocolat/three-msdf-text-utils.git"},"description":"Utility classes for text rendering in Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Includes geometry with rich attributes for animations and WebGPU support.","maintainers":[{"name":"leochocolat","email":"leo.mouraire@gmail.com"}],"readme":"# Three MSDF Text\n\n[![npm](https://img.shields.io/npm/v/three-msdf-text-utils.svg)](https://www.npmjs.com/package/three-msdf-text-utils)\n[![downloads](https://img.shields.io/npm/dm/three-msdf-text-utils.svg)](https://www.npmjs.com/package/three-msdf-text-utils)\n\n[![Featured on Three.js Resources](https://img.shields.io/badge/Featured%20on-Three.js%20Resources-7871ff?labelColor=7871ff&style=flat&logoColor=black&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzMzIiBoZWlnaHQ9IjM3NSIgdmlld0JveD0iMCAwIDMzMyAzNzUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNzAuNDY2IDI5Ni4xNDRMMzkuMTExMiAzNzAuNjU0QzIxLjU3NTUgMzgwLjYwMiAtMC4xNTI3MTIgMzY3LjgzNiAwLjAwMDgwODk0OSAzNDcuNjc2TDEuMTIzODYgMjAwLjA4NUwxNzAuNDY2IDI5Ni4xNDRaTTE4MC42NTcgMjkwLjM2MkwxODAuNiAyOTAuMzk1TDEuNTUzNTQgMTg4LjgzMkwxNzkuMDkxIDg0LjUyMTVMMTgwLjY1NyAyOTAuMzYyWk0zMTkuMjM0IDE2Ni41OTFDMzM2LjYxNyAxNzYuODA0IDMzNi40MjUgMjAyLjAwNCAzMTguODg5IDIxMS45NTFMMTkwLjYxNSAyODQuNzE0TDE4OS4xMzQgOTAuMTUwNEwzMTkuMjM0IDE2Ni41OTFaTTIuNDQ5MDUgMjYuMDI5M0MyLjYwMjYyIDUuODY5NTIgMjQuNTIxNCAtNi41NjUwNyA0MS45MDQxIDMuNjQ3NUwxNjkuNDUyIDc4LjU4N0wxLjI5NjcxIDE3Ny4zODVMMi40NDkwNSAyNi4wMjkzWiIgZmlsbD0iI2ZmZiIvPgo8L3N2Zz4K)](https://threejsresources.com/tool/three-msdf-text)\n\nText rendering utilities for Three.js using MSDF (multi-channel signed distance fields) and bitmap fonts. Provides crisp text at any scale with support for WebGL and WebGPU.\n\nForked from [three-bmfont-text](https://github.com/Jam3/three-bmfont-text).\n\n## Features\n\n- Refacto to ES6\n- Remove deprecated dependencies\n- Rich geometry attributes for text animations (letter index, word index, line index, layout UVs...)\n- WebGPU support via `MSDFTextNodeMaterial`\n- Compatible with [Three.js FontLoader](https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/FontLoader.js)\n- Runtime MSDF atlas generation from TTF fonts\n\n## Demo\n\n- [Basic](https://leochocolat.github.io/three-msdf-text-utils/demo/?demo=basic)\n- [Stroke](https://leochocolat.github.io/three-msdf-text-utils/demo/?demo=stroke)\n- [Editor](https://leochocolat.github.io/three-msdf-text-utils/demo/?demo=editor)\n- [Reveal](https://leochocolat.github.io/three-msdf-text-utils/demo/?demo=reveal)\n- [WebGPU](https://leochocolat.github.io/three-msdf-text-utils/demo/?demo=webgpu)\n- [MSDF Generator](https://msdf-font-generator.leomouraire.com/)\n\n## Getting Font Assets\n\nMSDF text rendering requires two assets: bitmap font data (glyph metrics) and an MSDF atlas texture. You can either pre-generate these at build time or generate them at runtime in the browser.\n\n### Option 1: Pre-generated Assets (Recommended for Production)\n\nPre-generating assets gives you full control over quality and reduces runtime overhead.\n\n**Tools:**\n- [Online MSDF Font Generator](https://msdf-font-generator.leomouraire.com/) - Web-based tool\n- [Online generator](https://msdf-bmfont.donmccurdy.com/) - Web-based tool\n- [msdf-bmfont-xml](https://github.com/soimy/msdf-bmfont-xml) - CLI tool\n- [msdf-font-factory](https://github.com/leochocolat/msdf-font-factory) - Ready-to-use fonts and generation scripts\n\n### Option 2: Runtime Generation with `generateMSDF`\n\nForked from [@zappar/msdf-generator](https://www.npmjs.com/package/@zappar/msdf-generator)\n\nGenerate MSDF assets directly in the browser from any TTF font file. This approach is convenient for dynamic font loading or when you want to support user-uploaded fonts.\n\n**Setup:**\n\nDownload the required WebAssembly files and place them in your public folder:\n- [worker.bundled.js](https://github.com/leochocolat/three-msdf-text-utils/raw/main/demo/msdfgen/worker.bundled.js)\n- [msdfgen.wasm](https://github.com/leochocolat/three-msdf-text-utils/raw/main/demo/msdfgen/msdfgen.wasm)\n\n**Usage:**\n\n```js\nimport { MSDFTextGeometry, MSDFTextMaterial, generateMSDF } from \"three-msdf-text-utils\";\nimport * as THREE from \"three\";\n\ngenerateMSDF('./fonts/roboto.ttf', {\n    workerUrl: '/msdfgen/worker.bundled.js',\n    wasmUrl: '/msdfgen/msdfgen.wasm',\n}).then(({ font, atlas }) => {\n    const geometry = new MSDFTextGeometry({\n        text: \"Hello World\",\n        font: font.data,\n    });\n\n    const material = new MSDFTextMaterial();\n    material.uniforms.uMap.value = atlas;\n\n    const mesh = new THREE.Mesh(geometry, material);\n    scene.add(mesh);\n}).catch((error) => {\n    console.error('Font generation failed:', error);\n});\n```\n\nSee the [live demo](https://msdf-font-generator.leomouraire.com/) and [source code](https://github.com/leochocolat/three-msdf-text-utils/blob/main/demo/scenes/MSDFGenerator/index.js) for a complete example with font switching.\n\nMore details about this can be found here [@zappar/msdf-generator](https://www.npmjs.com/package/@zappar/msdf-generator)\n\n## Installation\n\n```bash\nnpm install three-msdf-text-utils\n```\n\n## Usage\n\n```js\nimport { MSDFTextGeometry, MSDFTextMaterial } from \"three-msdf-text-utils\";\nimport { FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';\nimport * as THREE from 'three';\n\nPromise.all([\n    loadFontAtlas(\"./fonts/roboto/roboto-regular.png\"),\n    loadFont(\"./fonts/roboto/roboto-regular.fnt\"),\n]).then(([atlas, font]) => {\n    const geometry = new MSDFTextGeometry({\n        text: \"Hello World\",\n        font: font.data,\n    });\n\n    const material = new MSDFTextMaterial();\n    material.uniforms.uMap.value = atlas;\n\n    const mesh = new THREE.Mesh(geometry, material);\n});\n\nfunction loadFontAtlas(path) {\n    const promise = new Promise((resolve, reject) => {\n        const loader = new THREE.TextureLoader();\n        loader.load(path, resolve);\n    });\n\n    return promise;\n}\n\nfunction loadFont(path) {\n    const promise = new Promise((resolve, reject) => {\n        const loader = new FontLoader();\n        loader.load(path, resolve);\n    });\n\n    return promise;\n}\n```\n\n## References\n\n### MSDFTextGeometry\n\n```js\nconst geometry = new MSDFTextGeometry(options);\n```\n\n**Options can be an object, or a String – equivalent to { text: str }.**\n\n#### Three.js-specific Options\n\n- `flipY` (boolean): whether the texture will be Y-flipped (default: `true`)\n- `multipage` (boolean): whether to construct this geometry with an extra buffer containing page IDs. This is necessary for multi-texture fonts (default: `false`)\n\n#### Layout Options\n\n- `font` (required) - the BMFont definition which holds chars, kernings, etc\n- `text` (string) - the text to layout. Newline characters (`\\n`) will cause line breaks\n- `width` (number) - the desired width of the text box, causes word-wrapping and clipping in \"pre\" mode. Leave as undefined to remove word-wrapping (default behaviour)\n- `mode` (string) - a mode for word-wrapper; can be `'pre'` (maintain spacing), or `'nowrap'` (collapse whitespace but only break on newline characters), otherwise assumes normal word-wrap behaviour (collapse whitespace, break at width or newlines)\n- `align` (string) - can be `'left'`, `'center'` or `'right'` (default: `'left'`)\n- `letterSpacing` (number) - the letter spacing in pixels (default: `0`)\n- `lineHeight` (number) - the line height in pixels (default: `font.common.lineHeight`)\n- `tabSize` (number) - the number of spaces to use in a single tab (default: `4`)\n- `start` (number) - the starting index into the text to layout (default: `0`)\n- `end` (number) - the ending index (exclusive) into the text to layout (default: `text.length`)\n\n#### Methods\n\n**`update(options)`**\n\nRe-builds the geometry using the given options. Any options not specified here will default to those set in the constructor. This method will recompute the text layout and rebuild the WebGL buffers. Options can be an object, or a String (equivalent to `{ text: str }`).\n\n#### Properties\n\n**`layout`**\n\nText Layout instance with attributes: `width`, `height`, `descender`, `ascender`, `xHeight`, `baseline`, `capHeight`, `lineHeight`, `linesTotal`, `lettersTotal`\n\n**`visibleGlyphs`**\n\nA filtered set from `geometry.layout.glyphs` intended to align with the vertex data being used by the underlying BufferAttributes. This is an array of `{ line, position, index, data }` objects ([see here](https://github.com/Jam3/layout-bmfont-text#layoutglyphs)).\n\n#### Attributes\n\nBesides the basic geometry attributes. There are some text specific attributes, mostly useful for animation purposes.\n\n- `position`\n- `uv` : uv coordinates used to map the right letter in the right letter quad\n- `center` : center of each letter quad\n- `layoutUv` : uv coordinates of the full text block.\n- `glyphUv` : uv coordinates of each individual letter quad.\n- `glyphResolution` : resolution of each individual letter quad.\n- `lineIndex` : index of each line\n- `lineLettersTotal`: total amount of letters in each lines\n- `lineLetterIndex`: index of each letter by line\n- `lineWordsTotal`: total amount of words by line\n- `lineWordIndex`: index of each word by line\n- `wordIndex`: index of each word\n- `letterIndex`: index of each letter\n\n\n### MSDFTextMaterial\n\nExtends [Three.js ShaderMaterial](https://threejs.org/docs/#api/en/materials/ShaderMaterial) with MSDF-specific rendering.\n\n```js\nconst material = new MSDFTextMaterial();\nmaterial.uniforms.uMap.value = atlas;\n```\n\n#### Default Properties\n\n```js\nconst defaultOptions = {\n    side: THREE.FrontSide,\n    transparent: true,\n    defines: {\n        IS_SMALL: false,\n    },\n    extensions: {\n        derivatives: true,\n    },\n    uniforms: {\n        // Common\n        uOpacity: { value: 1 },\n        uColor: { value: new Color(\"#ffffff\") },\n        uMap: { value: null },\n        // Rendering\n        uThreshold: { value: 0.05 },\n        uAlphaTest: { value: 0.01 },\n        // Strokes\n        uStrokeColor: { value: new Color(\"#ff0000\") },\n        uStrokeOutsetWidth: { value: 0.0 },\n        uStrokeInsetWidth: { value: 0.3 },\n    },\n    vertexShader,\n    fragmentShader,\n};\n```\n\n**Note: `IS_SMALL` boolean is useful to render small fonts, it will switch the alpha rendering calculation to make them visually much smoother**\n\n#### Custom material\n\nIf you want to make some specific text effects you can create your own glsl code in your shader material based on the MSDFTextMaterial shader.\n\n```js\nimport { uniforms } from \"three-msdf-text-utils\";\nimport * as THREE from 'three';\n\nconst material = new THREE.ShaderMaterial({\n    side: DoubleSide,\n    transparent: true,\n    defines: {\n        IS_SMALL: false,\n    },\n    extensions: {\n        derivatives: true,\n    },\n    uniforms: {\n        // Common\n        ...uniforms.common,\n        \n        // Rendering\n        ...uniforms.rendering,\n        \n        // Strokes\n        ...uniforms.strokes,\n    },\n    vertexShader: `\n        // Attribute\n        attribute vec2 layoutUv;\n\n        attribute float lineIndex;\n\n        attribute float lineLettersTotal;\n        attribute float lineLetterIndex;\n\n        attribute float lineWordsTotal;\n        attribute float lineWordIndex;\n\n        attribute float wordIndex;\n\n        attribute float letterIndex;\n\n        // Varyings\n        varying vec2 vUv;\n        varying vec2 vLayoutUv;\n        varying vec3 vViewPosition;\n        varying vec3 vNormal;\n\n        varying float vLineIndex;\n\n        varying float vLineLettersTotal;\n        varying float vLineLetterIndex;\n\n        varying float vLineWordsTotal;\n        varying float vLineWordIndex;\n\n        varying float vWordIndex;\n\n        varying float vLetterIndex;\n\n        void main() {\n            // Output\n            vec4 mvPosition = vec4(position, 1.0);\n            mvPosition = modelViewMatrix * mvPosition;\n            gl_Position = projectionMatrix * mvPosition;\n\n            // Varyings\n            vUv = uv;\n            vLayoutUv = layoutUv;\n            vViewPosition = -mvPosition.xyz;\n            vNormal = normal;\n\n            vLineIndex = lineIndex;\n\n            vLineLettersTotal = lineLettersTotal;\n            vLineLetterIndex = lineLetterIndex;\n\n            vLineWordsTotal = lineWordsTotal;\n            vLineWordIndex = lineWordIndex;\n\n            vWordIndex = wordIndex;\n\n            vLetterIndex = letterIndex;\n        }\n    `,\n    fragmentShader: `\n        // Varyings\n        varying vec2 vUv;\n\n        // Uniforms: Common\n        uniform float uOpacity;\n        uniform float uThreshold;\n        uniform float uAlphaTest;\n        uniform vec3 uColor;\n        uniform sampler2D uMap;\n\n        // Uniforms: Strokes\n        uniform vec3 uStrokeColor;\n        uniform float uStrokeOutsetWidth;\n        uniform float uStrokeInsetWidth;\n\n        // Utils: Median\n        float median(float r, float g, float b) {\n            return max(min(r, g), min(max(r, g), b));\n        }\n\n        void main() {\n            // Common\n            // Texture sample\n            vec3 s = texture2D(uMap, vUv).rgb;\n\n            // Signed distance\n            float sigDist = median(s.r, s.g, s.b) - 0.5;\n\n            float afwidth = 1.4142135623730951 / 2.0;\n\n            #ifdef IS_SMALL\n                float alpha = smoothstep(uThreshold - afwidth, uThreshold + afwidth, sigDist);\n            #else\n                float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);\n            #endif\n\n            // Strokes\n            // Outset\n            float sigDistOutset = sigDist + uStrokeOutsetWidth * 0.5;\n\n            // Inset\n            float sigDistInset = sigDist - uStrokeInsetWidth * 0.5;\n\n            #ifdef IS_SMALL\n                float outset = smoothstep(uThreshold - afwidth, uThreshold + afwidth, sigDistOutset);\n                float inset = 1.0 - smoothstep(uThreshold - afwidth, uThreshold + afwidth, sigDistInset);\n            #else\n                float outset = clamp(sigDistOutset / fwidth(sigDistOutset) + 0.5, 0.0, 1.0);\n                float inset = 1.0 - clamp(sigDistInset / fwidth(sigDistInset) + 0.5, 0.0, 1.0);\n            #endif\n\n            // Border\n            float border = outset * inset;\n\n            // Alpha Test\n            if (alpha < uAlphaTest) discard;\n\n            // Output: Common\n            vec4 filledFragColor = vec4(uColor, uOpacity * alpha);\n\n            // Output: Strokes\n            vec4 strokedFragColor = vec4(uStrokeColor, uOpacity * border);\n\n            gl_FragColor = filledFragColor;\n        }\n    `,\n});\nmaterial.uniforms.uMap.value = atlas;\n```\n\n### MSDFTextNodeMaterial (WebGPU)\n\nIt extends from Three.js WebGPU NodeMaterial\n\n```js\nimport { MSDFTextNodeMaterial } from 'three-msdf-text-utils/webgpu';\n\nconst material = new MSDFTextNodeMaterial({ map: atlas, color: '#ff0000' });\n\n// Here no uniforms object, you can access materials properties directly.\nmaterials.strokeOutsetWidth = 0.2;\nmaterials.strokeInsetWidth = 0.2;\nmaterials.strokeColor = '#00ff00';\n```\n#### Properties\n\n- `color`: fill color\n- `strokeColor`: stroke color\n- `strokeOutsetWidth`: stroke size outside the glyph\n- `strokeInsetWidth`: stroke size inside the glyph\n- `isSmooth`: Switch render mode from sharp to smooth, useful for tiny fonts –– use only 0 or 1\n- `threshold`: smooth threshold (only used for isSmooth === 1)\n\n### generateMSDF\n\nGenerates MSDF font assets at runtime from a TTF font file.\nForked from [@zappar/msdf-generator](https://www.npmjs.com/package/@zappar/msdf-generator)\n\n```js\nconst { font, atlas } = await generateMSDF(fontPath, options);\n```\n\n#### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `fontPath` | `string` | Yes | URL or path to a TTF font file |\n| `options` | `object` | Yes | Configuration options (see below) |\n\n#### Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `workerUrl` | `string` | **required** | Path to `worker.bundled.js` |\n| `wasmUrl` | `string` | **required** | Path to `msdfgen.wasm` |\n| `charset` | `string` | `A-Za-z0-9` + space | Characters to include in the atlas |\n| `fontSize` | `number` | `48` | Font size in pixels |\n| `textureSize` | `[number, number]` | `[512, 512]` | Atlas texture dimensions |\n| `fieldRange` | `number` | `4` | Distance field range in pixels |\n| `fixOverlaps` | `boolean` | `true` | Fix overlapping glyph paths |\n| `onProgress` | `function` | - | Callback with progress percentage `(progress: number) => void` |\n\n#### Returns\n\nA Promise that resolves to an object containing:\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `font` | `THREE.Font` | Three.js Font instance (use `font.data` for geometry) |\n| `atlas` | `THREE.Texture` | Three.js Texture ready to use with materials |\n\n#### Example with Progress\n\n```js\ngenerateMSDF('./font.ttf', {\n    workerUrl: '/msdfgen/worker.bundled.js',\n    wasmUrl: '/msdfgen/msdfgen.wasm',\n    charset: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,!?',\n    fontSize: 64,\n    textureSize: [1024, 1024],\n    onProgress: (progress) => console.log(`Generating: ${progress}%`),\n}).then(({ font, atlas }) => {\n    // font.data contains the glyph metrics for MSDFTextGeometry\n    // atlas is a THREE.Texture for MSDFTextMaterial\n});\n```\n\n\n## Troubleshooting\n\n**Text not visible?**\n\n1. **Check mesh orientation** - The text might be facing away from the camera. Try `material.side = THREE.DoubleSide`\n2. **Check rotation** - MSDF text geometry is created facing +Z. You may need to rotate it\n3. **Check scale** - The geometry units are in pixels. For a typical scene, you might need to scale down (e.g., `mesh.scale.set(0.01, 0.01, 0.01)`)\n4. **Check camera frustum** - Adjust `near`/`far` values if the mesh is being culled\n\n**generateMSDF not working?**\n\n1. **Worker fails to load** - Ensure `worker.bundled.js` is the bundled version (not `worker.js`)\n2. **WASM error** - Verify `wasmUrl` points to the `.wasm` file, not `.js`\n3. **CORS issues** - Worker and WASM files must be served from the same origin or with proper CORS headers\n\n**Random m char in you webgl text?**\n\nMake sure to include a space chat in the charset when generating the bitmap font and atlas.\n\n## Dependencies\n\n- [three.js](https://www.npmjs.com/package/three) (peer dependency, >= 0.178.0)\n- [comlink](https://www.npmjs.com/package/comlink)\n- [quad-indices](https://www.npmjs.com/package/quad-indices)\n- [word-wrapper](https://www.npmjs.com/package/word-wrapper)\n\n## Development\n\n```bash\nnpm install\nnpm run dev\n```\n\n## Use cases & tutorials\n\n- [Immersive Garden](https://immersive-g.com/) by Immersive Garden\n- [Aten7](https://www.aten7.com/) by [Immersive Garden](https://immersive-g.com/)\n- [100 Lost Species](https://www.100lostspecies.com/) by [Immersive Garden](https://immersive-g.com/)\n- [Gleec](https://gleec.com/) by [Immersive Garden](https://immersive-g.com/)\n- [Gleec text transition effect](https://www.youtube.com/watch?v=NRheDOjkOs8) by [Yuri Artiukh](https://gist.github.com/akella)\n- [WebGPU gommage effect](https://tympanus.net/codrops/2026/01/28/webgpu-gommage-effect-dissolving-msdf-text-into-dust-and-petals-with-three-js-tsl/) by [WallabyMonochrome](https://github.com/WallabyMonochrome)\n- [Cosmic Shelter](https://cosmicshelter.com/studio) by Cosmic Shelter\n","readmeFilename":"README.md"}