{"_id":"text-shaper","_rev":"29-ff1bb93e91b2298d81019788511f25c4","name":"text-shaper","dist-tags":{"latest":"0.1.28"},"versions":{"0.0.1":{"name":"text-shaper","version":"0.0.1","_id":"text-shaper@0.0.1","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"b13993263d87e622e170bf7e76f2af2675840d82","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.0.1.tgz","fileCount":97,"integrity":"sha512-6+9/4VvhEBhYdjIBv+XBHX7n7Mq0JYrQzSTNZYZuW46JUmoBRoO+9yZPULHV05ogqwqRGVY078EgLsVRkwJM8g==","signatures":[{"sig":"MEUCIEg7vcuT9i1rkX7F/6l+zr6VnG8Y18KHQGMryZj7y/aoAiEAs4SP9wLZbPQMZX72NOE6aJo0GFWm++giCr2nHIRa8YM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1992481},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"037411ab540a0c2ff6f2cf1c1a1408eac32c7c94","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@biomejs/biome":"2.3.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.0.1_1764692916853_0.0610373851336794","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"text-shaper","version":"0.1.0","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.0","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"b6b7ac29d713bda298931c850dde1a3bfaac3628","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.0.tgz","fileCount":127,"integrity":"sha512-ds7qzluzf+aCB6liz6IVYumTriToqomjKlwn7hsu0OHld49jsGBEiyzOyxY5fTbrTYWp55TuPMnaoyE3viWHyg==","signatures":[{"sig":"MEUCIQDDcgbH0BePTi+9GsU8bdEaQ/dRDP+OcjlFQcCnOmKNCQIgamF4Vy6k/PXFB9csHz2gQTEEDbp1soO4P7+vvP+8lgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2504033},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f2e447cfc88add1fc38b2284fecc1d5d86fbe825","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"vitepress":"^2.0.0-alpha.15","@types/bun":"latest","@biomejs/biome":"2.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.0_1764842542499_0.47033157376492274","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"text-shaper","version":"0.1.1","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.1","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"6a6c389b3dc4478f691d5c39107619c07dc2d324","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.1.tgz","fileCount":134,"integrity":"sha512-LRwduwEXz9ARNKzCWkjba4gm9vaNivaDYwHC+5f6JnppYFDjv8uyEFCX4zp6TUALngA7PAqavB5aw7ca25H31Q==","signatures":[{"sig":"MEQCIFlfyli4agl+uVzfEIKOGeNc3oVLwRTX9aa2SrQh8i+VAiAwlvr5Vnu4OXrcd/CWa10XEHzzBP7Qzv0iN6djlEq3wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2655363},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4fcf680fa264bb30affbc2b0b23ba56f0bd6c44c","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"vitepress":"^2.0.0-alpha.15","@types/bun":"latest","@biomejs/biome":"2.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.1_1764915536053_0.3729624585308886","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"text-shaper","version":"0.1.2","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.2","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"e8509f7faac8a88e7bd866a7e27d48773b221b38","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.2.tgz","fileCount":152,"integrity":"sha512-3oW5Q/75uy27aa+OA7wVtBQSRLjoI+PKB3MNoXYBSHrPyxh76vPxmHlXqYIBjf+rGgIMm4PvE7IswVcS+d+5jA==","signatures":[{"sig":"MEYCIQDDGdS9nLp0QPhvLst5WYw76EdBZlm0sGUOtjwT3SuMFQIhAJcwvlAL+gEje9UB201EEt4jz+RlHwsIl0UUMx3sqHn6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7327531},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a2e3409700c56a8fb47fda6f4bfad82754949b10","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"vitepress":"^2.0.0-alpha.15","@types/bun":"latest","@biomejs/biome":"2.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.2_1764926040451_0.17887262487751343","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"text-shaper","version":"0.1.3","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.3","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"b1b97553dbbf09f9c1e69397c5cc6cef544b52af","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.3.tgz","fileCount":158,"integrity":"sha512-6+0kyIg19ogqj2TrpvHk4GCQ0fORT0dR6Jarte1wi8qChvLaf+wicXxr8Yd5VLQ90Tg759sazK+owOfBIM7DKQ==","signatures":[{"sig":"MEUCIHR0PsEFeMxYhClkqSXDieIK0n4jZQrL1tjo8MsVMphBAiEA/mEJuEcBmMlFVFEYFXgKRSmR57Dvxxy6T0ssQZovrdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7699535},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"35f5d73b9dbdead92f97b3be79a8ad032739617c","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.3_1765166008250_0.40181148621059637","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"text-shaper","version":"0.1.4","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.4","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"735a697182ed7490b06b20225f73e445b0924020","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.4.tgz","fileCount":158,"integrity":"sha512-oE/0ZTvbsqEL6m/OuElYNno2Lj7ztv+wXtP876bB62AuziQnoGsLY2NRUJcv9ykiR+DOVVYgUfmkk9+yWs29sw==","signatures":[{"sig":"MEQCIFX/1W7fBgUjNLFgfWfThVWUB0+g8CTUIJDI7YnK9NegAiBKW4tWUmnOjN0+vyyjjjrv6ifs4rtpFQcD5sUW3vrOPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7725574},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bf207c3352af132ffb296a2a3d2c8f1cdc34d58e","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production --sourcemap=external","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.4_1765191943641_0.812892296366317","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"text-shaper","version":"0.1.5","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.5","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"dist":{"shasum":"4af59073bed0e1a42599850f08b250f0a17b5f4c","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.5.tgz","fileCount":138,"integrity":"sha512-CbicsNFccBkW1W/qpusXa2PTBMe74/T8irCGWRtsceMcaoEL19h6IuZvXcUvcZPcKJJNoXJ2GfFoJLXLOkgGPQ==","signatures":[{"sig":"MEUCIQDtbJiCjuw3T1KeFBeLn89Q727s2TWmLB80ix8m7godBwIgbkJU52tZWR1idHVoFeZtHCro/1kVd0oaDQmpIfU8GII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":827533},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"80a1ede7d2232e8df7b76778873a005f4279a4ce","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.5_1765268926937_0.08326535282611114","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"text-shaper","version":"0.1.6","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.6","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"b6bae388b51fbc80ed336b9922cc2304abc4636b","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.6.tgz","fileCount":138,"integrity":"sha512-IeJW0S6wOpvdohUIJmE9KbeDruQFCdP3c3eQM3C3YpNbsfF+RQWLJaqamjo6u82adk4ZTLm7rYW2E9rWSgkpLA==","signatures":[{"sig":"MEYCIQDegVSdnxQ3KbfU9eo0Hbfqpwkv5Nraw5hiIafy5WWQ4gIhAISyGrT8bbvflORNA3uIPnwePn7FHF1KxJD2ZTPhQEPm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830270},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e459b9ab135cac2c9c0b91ef484e11842873256b","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.6_1766242098502_0.2641434228531523","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"text-shaper","version":"0.1.7","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.7","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"d3971d77e1c4cbd491a223d0b32f8459dd10d5eb","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.7.tgz","fileCount":138,"integrity":"sha512-DBp3P4LUGJJjeCnEIFvrgZP3wHPVxtZsDQ80CobN5Gzih7SfJd9XgFSre5pBo8bPxNiB7kiiPz+4YwswMXE2wA==","signatures":[{"sig":"MEYCIQDQMK0YzMV3iXb5MSWUFVcwfFkhmyAoMtucDzeG1BqjEAIhALi0VZ3USr5x3xfEVKGqs23SlYJOBQ723jkoMmr0Q2zl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":851912},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3d6448d2c4e4811044c66028ef555a3213d094f9","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.7_1767368650888_0.2889642606173837","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"text-shaper","version":"0.1.8","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.8","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"e24630e7e698659542db97b08dfa49fadb81efbe","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.8.tgz","fileCount":140,"integrity":"sha512-ffDSapo3q4In57+ZG7KwprI112tVVx+ndereRNevfjO8zTzvwgdJgsnR7d8p/v0/x3qER1EVVXFQOqYKKYHH+g==","signatures":[{"sig":"MEQCIFSsuU7HEc+b9blTX0XwQG0oT5DmMiVzvdlfSYJdfsjtAiByDwofdBv2Z6xa32XV2xs1+9POp9PozCNCAt+GcdfRxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":862327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"609bc79af5022518cd94008b33ed53dfecc64154","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","postinstall":"node scripts/patch-pkg-prebuilds.js","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.5.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"24.6.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.8_1767421383141_0.09342381904011865","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"text-shaper","version":"0.1.9","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.9","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"12ffd4a19427424d979967e6eea0855a87c2cd90","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.9.tgz","fileCount":140,"integrity":"sha512-+OKkMLOtZrD5Q5PD1KFTMqzjCMtWR0xrCezmUKYB1wllgpUFa6TzXutpmKlTLuUxPqhnpJHdLOlaeruK8IV8iw==","signatures":[{"sig":"MEUCIDx2Aif04DQ2vn7Y5lTxEgCXwyYBDR50zXQsFgormST9AiEAgrhC9Qii51gl5zEMx3CLWrcONaQtt1V1fY1CySk1Q1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":862331},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b79c0a047f9acc87d23475bc2d6e7e51a267b0fb","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.5.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"24.6.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.9_1767421527373_0.2978183101082743","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"text-shaper","version":"0.1.10","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.10","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"7b2fdde43824839a217888d0c9b60f81ca9ec822","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.10.tgz","fileCount":141,"integrity":"sha512-y1TIieR2fFz1WIDD5+gGlXBnIPZRBdCHLSYOZZSZ834Out5nbrtPzDRY4iQFkl8aQG/OyCOjdeehQ8gLdLILpg==","signatures":[{"sig":"MEUCIQCwqk8nZFlNSFzSUIB2pt8ZzSsjhzShO1vwwvJ21fquTAIgJxAMq+elzLYcrdA/24ovAWo2uwD4eolfMYNN1IgISQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3109935},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ef2d41a8e0b4ebf75ed4eb5bc64953c55ed5f320","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.5.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"24.6.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.10_1767449321936_0.12472227264065339","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"text-shaper","version":"0.1.11","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.11","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"88650d61a11d4348ee11d1a955b7b148428e84f9","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.11.tgz","fileCount":141,"integrity":"sha512-mIJS8ur2aCxpW7eMFaveR9YtOUUIDaBgb0MMG9s+bTPmiuE6cob5/uRsGHPtZNP9+wo8tsxN/uLUQlyYqpJTLA==","signatures":[{"sig":"MEUCIQDLDU/ronAFRoQvcZgcMaUxvDJ08UcU5vTjCB+VZk4C1AIgXp80xQBowq2NqlHP4OixcBua7ycMIRk+62Lx1dVHciI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3110423},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"942454065105ee05aecc5f912b4714e70dfc1364","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.11_1767450171838_0.08706447151475483","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"text-shaper","version":"0.1.12","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.12","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"671cbadffa65d371d9d5a398134ce81724a6a54f","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.12.tgz","fileCount":141,"integrity":"sha512-g3mABebm/dOjBAR+jGe/Z3EmSPLG+pV1dTpEEz/yDmSx0v6ijCul/KIRtYLzcMOQeMAerYbgQcghQ9B2vxRImA==","signatures":[{"sig":"MEYCIQCz+zCz8+J9yQFs5ql70eIwoffVb2a9scNDTGnAgoUxcAIhAJpX9HahVgRfoSMjDw+ubFGKzxwGydC+jaZZrY2WHnYs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3110673},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"825e4b9c4a21d6e9105e52fd76b69b71c3095eda","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.12_1767510826322_0.7001926730242718","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"text-shaper","version":"0.1.13","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.13","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"4854d29db219cf15d76d8df686842ece5370e0c6","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.13.tgz","fileCount":141,"integrity":"sha512-eGq1c3OsIaJmGzCBZm2TO8Xk5h97mbVbc918KdkWLmAarfi0G3rLpfoBRYFi+35uqr2Nxb4PLyS3aSzd/ATVfQ==","signatures":[{"sig":"MEYCIQDn0fWKaWdhyYelNJY60NXtVid55x2XlkmdZPZIVoLN4wIhANScqbpIXv8Wm6KaAKjh97hegd69kqMhFMd8Sg3DwUlr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3172820},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a0be6cda09f9b1c44abc78e11e49728c5e1ad52a","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.13_1767518022427_0.9130960223581857","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"text-shaper","version":"0.1.14","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.14","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"475438daf35585bd175efc77b52e38a5effc3b68","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.14.tgz","fileCount":141,"integrity":"sha512-ci8yBdsolkV6MmIkj6s0265IKz/84v4XIoZMoGSOfeCIE1W9gXEY/womrNtRLOqct3imIdCBP0GeqGKkphq80g==","signatures":[{"sig":"MEYCIQC3wyBQUe8Iw5sh2NFbUwhOOY+RTOxAPMkBj0C6kd3EPwIhAP5ke2KcjaVlgJ6h4Z/HCOm+lZIZR2zAKXkvxigS2aTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3173069},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"16b9cce3484ecf37d315910af030db370c4c510b","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.14_1767519620732_0.14881734044508366","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"text-shaper","version":"0.1.15","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.15","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"06b6a3911820b14c5c7df1843cc8269c6bb329cc","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.15.tgz","fileCount":142,"integrity":"sha512-U+41lLJbRRvYXW14ErN0qYT319NjHEiE2XT8Vhzt6pEDStpBGi9dXfEgvb6yRz70V3T4qw1OkupCtASXPt9jvQ==","signatures":[{"sig":"MEUCIEkIlruoQQMll9vEilvhdZ5BBksf+7xhoYg/1dNvrxtFAiEAiH1P/ij2Ho+XQxw5FyxLcHPYIvGWqQK3XYebuKVu5ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3174618},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5b67108007f3c78c33cb37f4162427f0a746f742","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.15_1767522601586_0.35480940661606697","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"text-shaper","version":"0.1.17","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.17","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"822715809194b8a96f5f3aa2c012a5f7d648143a","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.17.tgz","fileCount":143,"integrity":"sha512-tBG9N2dicwv3WisJ4MkSv4xIEafyB3aSjVY6LYIRbF1eNF7aKoRqQuYQFGtEafwwUS2SXtbUqlYI6NvriMuQyA==","signatures":[{"sig":"MEQCIHDlydEFpsVvnABOw96NLPt3fEXJk77zqcB53u1fE9nBAiAYtjuFUbSSXC3q+1uolH4RFu65VNm0snMOy2BkhdW7Yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3232739},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2995e1a9c7bdd3c4a656dcf2fa2f8ded769a1314","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.6.2","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.17_1768039760591_0.4557597652312231","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"text-shaper","version":"0.1.18","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.18","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"7493786eac0cad015a6d0e53ee202c689749cbdd","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.18.tgz","fileCount":142,"integrity":"sha512-ZfuqKPupphWz6OS3IhlEc5tPmJFmOJVqhp5Q4uQc32zrHwfu6uY/cIsv0i/tirUVSfVDohmVpuGr5lYOVyK13w==","signatures":[{"sig":"MEUCIQD/2NJZA3DF7rr2HZSuexNy86vyMlbcPXXkvyIrAv8++gIgRz7zbF7GVGjdLP5K0cjsTT54krJAg6phvmub9n9mp3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":888609},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ea6160aa94134c8e51e620e728a696a7a1567df2","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.10.0","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.18_1771317071586_0.5163006529710235","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"text-shaper","version":"0.1.19","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.19","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"6ad099307ddc23518256fc50d43c586c6ed7af3f","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.19.tgz","fileCount":143,"integrity":"sha512-lTbvwhW2WM9YfL1e6qUVKUqKIFwz/Qpbe8pTd9aXtoR2s9ev5Te+pqI+SriKaZI1i0WIgL0eO/yetSTrtO1rGQ==","signatures":[{"sig":"MEYCIQCjbZ+GNPh61ycS0PQP4rKkYhe56V8iJBY0mLjOcCCm+AIhAPmwUR05yv4WdHtnLbPTBlM8jXgHNRWpHQMLrbyoTumO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1360989},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"56aae7609c8d5937dd046551d764a84ffcd13b8e","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.12.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.19_1774867368848_0.02056659956195328","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"text-shaper","version":"0.1.20","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.20","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"bab9b5c0e5af97cce437b1da2214739e8f9badc9","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.20.tgz","fileCount":143,"integrity":"sha512-COPSxFDChy45o3LkBlQ6KfWZ5oD59b5aIq2ptvBDt3hM1mg1dG1OicvPQioT8TCOezlNG14sdQGNE0aHZGGVFg==","signatures":[{"sig":"MEUCIQDPJ/s1g8+C9MIrEp2lI4ktNxonmj6xlttyoaKOvYdO0wIgfhuPDr973zMV2tkrhTRo9xr1FhqWBK1YkuAQ9lw/Rzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1360989},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"56aae7609c8d5937dd046551d764a84ffcd13b8e","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.12.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.20_1774869126884_0.039740752885878194","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"text-shaper","version":"0.1.21","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.21","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"6df2cc3cd043c52f105deed03a0bfdae8f0f2165","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.21.tgz","fileCount":143,"integrity":"sha512-aDziwVDXbFgXjc9Ymp9gmzeHYrjsRsvyQfZsriT2vrilnVBmVRxHN3WdUDa71ZI9VUBEPerm1Ng2KOvXHnA1xQ==","signatures":[{"sig":"MEQCIEFmjIdhkNaiP7ZVblJDDGwjK2cYnPFqRjoYCjybz6rMAiBivVfjVa8pZD2yGg0pOWFS3r3L75WbvmImYQPbBKyT8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1363100},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"94db4fba9186b99b868b401ce404a9930b93fcbf","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.12.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.21_1774885516178_0.30641597346072413","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"text-shaper","version":"0.1.22","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.22","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"0cb4b6b5990bebc0f7854b53a475f4b5de376b5c","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.22.tgz","fileCount":143,"integrity":"sha512-OYxqPcNEox3tlXilxZVPNub8EU/A6Lxy9vlCAe362fiGI9f3pMav497wL7cecX0CPq1yVtiBn/lii/ZZUUk9bQ==","signatures":[{"sig":"MEUCIFm8+my1xOAjOtJhGw+TL8b0i9XO7o130xlF/SspKWwSAiEApCTVFsB1dah2K5LQb95fYi4uVABnwH/REsFdeQYoZLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1363231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"683f22f0ce1004ad3bbe8eac0261548fc8ff70c6","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.12.1","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.22_1775158674779_0.880558000018381","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"text-shaper","version":"0.1.23","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.23","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"46d45986d001397db4aa9cd07251e7db464d17c8","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.23.tgz","fileCount":143,"integrity":"sha512-kBItvxckAzS4JkcferjxbXN7tFir/RDUBcxk1aKe2Z9QqtmoddGezmwFOc7xBjKKF/Nf9JVDCWXnK6XNVzTjIA==","signatures":[{"sig":"MEYCIQCrr2YQrbF4IcUGsxF6qWfkC55uaEXoT2OkoEMozUJg3AIhAM0h8qMwO7kqxUJKHEwx+b1OOUmWfuRcg1jT71yGyCWd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1363332},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"97491136072124b6412d1becfbb496a5d3e5c139","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.18.0","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.23_1783155714024_0.4998079294804205","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"text-shaper","version":"0.1.24","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.24","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"75bd7922d4c3e3fce5152d38ca66863301206a99","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.24.tgz","fileCount":145,"integrity":"sha512-pReUzdTV+XZyy6NthFne2ABbQJSCqBVRVmC8z85XIT+HoeZV5TEYEpqFh0RDSSbZPBRuKRNlJH1ZSCdGhCw6tw==","signatures":[{"sig":"MEYCIQD+dEWjsZnVwojOz/rwwsRgXN2nSTEzqfjbSMzfdzNgIQIhAKAof+NA08FZPJipj423gS2Rq3MZMF9cCwuKo3L7fsxn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1381179},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3d12374188d7fcbcead0b49f7cb6a41958e3775f","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"rm -rf dist && bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.18.0","description":"Pure TypeScript text shaping engine with OpenType layout, TrueType hinting, and FreeType-style rasterization","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.24_1783612367122_0.769010401661711","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"text-shaper","version":"0.1.25","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.25","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"0319cae3a42f35bf5d71237437be0266c1a822b3","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.25.tgz","fileCount":147,"integrity":"sha512-CO8+1RYWNQJSPLJqAqO2wdowd0WGDWY0m41slUetr/P7xP1qg/srKpZShpxdfMRRaK1XIijGAdxpDxFwTVB1VA==","signatures":[{"sig":"MEUCIGF2nZ4f0enwu4sVjSh2gjzw4cQTRUWjCCs+mJMvFMpdAiEArnK6kvgm6Z6b13Q8jyYWCl9CJjIe2jwsusdAHqzrMzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415920},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b94bc05b55273ebe5562c46c0d3019dd53926e67","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"rm -rf dist && bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.18.0","description":"TypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","typescript":"7.0.2","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.25_1783688548371_0.5477777696828958","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"text-shaper","version":"0.1.26","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.26","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"9a2352b46fcc42bd07e61d7d231556ff5c5416ce","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.26.tgz","fileCount":147,"integrity":"sha512-tTLEZskIQYadTw7pNQpGstZGLZX/TPbMreexrxtJzTQCQe9upWYfEcJxDW3yN+m3NhO1kI2v/BUor+qyCpOm+Q==","signatures":[{"sig":"MEUCIDuKvdgfEXNfd1//PBNbnCaumpHyi5/wXDT8Ds46fbDrAiEA6kgjBLm4BLp4odwSnoKHx84J+2N9Mf3mnSQYvM2Q79k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1416039},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0ea5c040a9bee62caad19379a5118eb299888bd3","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"rm -rf dist && bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.18.0","description":"TypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","typescript":"7.0.2","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.26_1784179442240_0.700498900814913","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"text-shaper","version":"0.1.27","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","_id":"text-shaper@0.1.27","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"homepage":"https://github.com/wiedymi/text-shaper#readme","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"dist":{"shasum":"365cc041d327733df8493fe85e010ec2ea94aa09","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.27.tgz","fileCount":148,"integrity":"sha512-kfuOgxNHEHGfYaMJ5uaMbNfnmS5adMG3qPjLAgwwEy9pBsqAj4F0oSkOl8QoOdnQ8+wyIkX7M+hBYA4btWB4sw==","signatures":[{"sig":"MEYCIQDrsa3wY/jcS4dolEwJMLSvMKRv4pQ4e1O3bEbb+7VtpQIhAITK/4tbRi+RtGVyFgmkKy2DR8xRzTNZzR/ID3a0qTde","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1417854},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"59a2a2279f3f764bfcbaa8762a7b9c9e89a01332","scripts":{"lint":"biome check --write --unsafe --max-diagnostics 99999","bench":"bun test ./bench/ --timeout 120000","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","check":"bun run typecheck && bun run lint","docs:dev":"vitepress dev docs","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","docs:build":"vitepress build docs","bench:update":"bun scripts/update-benchmarks.ts","docs:preview":"vitepress preview docs","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","prepublishOnly":"rm -rf dist && bun run build:prod && bun run build:dts","patch:prebuilds":"node scripts/patch-pkg-prebuilds.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"repository":{"url":"git+https://github.com/wiedymi/text-shaper.git","type":"git"},"_npmVersion":"11.18.0","description":"TypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"freetype2":"^2.1.0","graphemer":"^1.4.0","vitepress":"^2.0.0-alpha.15","@types/bun":"latest","harfbuzzjs":"^0.4.13","typescript":"7.0.2","opentype.js":"^1.3.4","@biomejs/biome":"2.3.8","@types/opentype.js":"^1.3.8","vitepress-plugin-llms":"^1.9.3"},"trustedDependencies":["freetype2"],"_npmOperationalInternal":{"tmp":"tmp/text-shaper_0.1.27_1784214977218_0.15318540184554474","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"text-shaper","version":"0.1.28","repository":{"type":"git","url":"git+https://github.com/wiedymi/text-shaper.git"},"main":"./dist/index.js","module":"./dist/index.js","devDependencies":{"@biomejs/biome":"2.3.8","@types/bun":"latest","@types/opentype.js":"^1.3.8","freetype2":"^2.1.0","graphemer":"^1.4.0","harfbuzzjs":"^0.4.13","opentype.js":"^1.3.4","typescript":"7.0.2","vitepress":"^2.0.0-alpha.15","vitepress-plugin-llms":"^1.9.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"description":"TypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"license":"MIT","scripts":{"patch:prebuilds":"node scripts/patch-pkg-prebuilds.js","bench":"bun test ./bench/ --timeout 120000","bench:update":"bun scripts/update-benchmarks.ts","build":"bun build ./src/index.ts --outdir ./dist --target browser --minify --sourcemap=linked","build:prod":"bun build ./src/index.ts --outdir ./dist --target browser --production","build:analyze":"bun build ./src/index.ts --outdir ./dist --target browser --minify --metafile=./dist/meta.json","build:dts":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","lint":"biome check --write --unsafe --max-diagnostics 99999","check":"bun run typecheck && bun run lint","prepublishOnly":"rm -rf dist && bun run build:prod && bun run build:dts","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"type":"module","types":"./dist/index.d.ts","trustedDependencies":["freetype2"],"gitHead":"a23058f475f2b0655b93a89bfce426eecafb9439","_id":"text-shaper@0.1.28","bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"homepage":"https://github.com/wiedymi/text-shaper#readme","_nodeVersion":"24.15.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-uwm6+tkgYJ4hsTV0wZVHkZeoXR1/mthLxDiJvfU9o/FiibNinpFRC8PAMTNx8SaOjaK/5ZjDG1XAkPbKlIe2Jg==","shasum":"b783bea9b2dbc318c562cccc500bd57b33d342e4","tarball":"https://registry.npmjs.org/text-shaper/-/text-shaper-0.1.28.tgz","fileCount":148,"unpackedSize":1419306,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/text-shaper@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFP+UqqyfxxiFCiATd3mybcGk9DcCZseQk0lmxbmrsPaAiEAhAmORdxqYejPcu36U0KCLZ841cHtIE0Xx5l1D9zYowI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98551762-c38a-4306-b1a3-3ee236b3a377"}},"directories":{},"maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/text-shaper_0.1.28_1784273339691_0.5678428911059261"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T16:28:36.852Z","modified":"2026-07-17T07:29:00.151Z","0.0.1":"2025-12-02T16:28:37.074Z","0.1.0":"2025-12-04T10:02:22.693Z","0.1.1":"2025-12-05T06:18:56.273Z","0.1.2":"2025-12-05T09:14:00.684Z","0.1.3":"2025-12-08T03:53:28.485Z","0.1.4":"2025-12-08T11:05:43.843Z","0.1.5":"2025-12-09T08:28:47.105Z","0.1.6":"2025-12-20T14:48:18.644Z","0.1.7":"2026-01-02T15:44:11.053Z","0.1.8":"2026-01-03T06:23:03.350Z","0.1.9":"2026-01-03T06:25:27.547Z","0.1.10":"2026-01-03T14:08:42.208Z","0.1.11":"2026-01-03T14:22:52.028Z","0.1.12":"2026-01-04T07:13:46.523Z","0.1.13":"2026-01-04T09:13:42.614Z","0.1.14":"2026-01-04T09:40:20.939Z","0.1.15":"2026-01-04T10:30:01.814Z","0.1.17":"2026-01-10T10:09:20.807Z","0.1.18":"2026-02-17T08:31:11.794Z","0.1.19":"2026-03-30T10:42:49.041Z","0.1.20":"2026-03-30T11:12:07.079Z","0.1.21":"2026-03-30T15:45:16.348Z","0.1.22":"2026-04-02T19:37:54.914Z","0.1.23":"2026-07-04T09:01:54.182Z","0.1.24":"2026-07-09T15:52:47.362Z","0.1.25":"2026-07-10T13:02:28.562Z","0.1.26":"2026-07-16T05:24:02.426Z","0.1.27":"2026-07-16T15:16:17.382Z","0.1.28":"2026-07-17T07:28:59.843Z"},"bugs":{"url":"https://github.com/wiedymi/text-shaper/issues"},"license":"MIT","homepage":"https://github.com/wiedymi/text-shaper#readme","keywords":["font","text","shaping","harfbuzz","opentype","truetype","rasterizer","hinting","typography","glyph","freetype","arabic","indic","bidi","variable-fonts","lcd-rendering","texture-atlas"],"repository":{"type":"git","url":"git+https://github.com/wiedymi/text-shaper.git"},"description":"TypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization","maintainers":[{"name":"wiedy.mi","email":"u.yakauleu@gmail.com"}],"readme":"# text-shaper\n\n[![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github&logoColor=white)](https://github.com/wiedymi)\n[![Twitter](https://img.shields.io/badge/-Twitter-1DA1F2?style=flat-square&logo=twitter&logoColor=white)](https://x.com/wiedymi)\n[![Email](https://img.shields.io/badge/-Email-EA4335?style=flat-square&logo=gmail&logoColor=white)](mailto:contact@wiedymi.com)\n[![Discord](https://img.shields.io/badge/-Discord-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/zemMZtrkSb)\n[![Support me](https://img.shields.io/badge/-Support%20me-ff69b4?style=flat-square&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/vivy-company)\n\nTypeScript-first text shaping engine with OpenType layout, TrueType hinting, and selectable FreeType-style or libass-style rasterization. It works in browsers and Bun/Node.js with zero package dependencies; small embedded, self-verified WebAssembly kernels accelerate optional raster paths.\n\n## Performance\n\ntext-shaper outperforms harfbuzzjs (WebAssembly) and opentype.js across all benchmarks:\n\n| Category | vs harfbuzzjs | vs opentype.js |\n|----------|---------------|----------------|\n| Path Extraction | 16x faster | 10x faster |\n| Text to SVG | 1.2-1.5x faster | 4-6x faster |\n| Latin Shaping | 1.5x faster | 22x faster |\n| Arabic Shaping | 1.2x faster | 86x faster |\n| Hebrew Shaping | 1.6x faster | 33x faster |\n| Hindi Shaping | 3.6x faster | 11x faster |\n| Myanmar Shaping | 10.5x faster | 17x faster |\n| CJK Shaping | 1.3-1.5x faster | 11-13x faster |\n\n## Features\n\n- **OpenType Layout**: Full GSUB (substitution) and GPOS (positioning) support\n- **Complex Scripts**: Arabic, Indic, USE (Universal Shaping Engine) shapers\n- **Variable Fonts**: fvar, gvar, avar, HVAR, VVAR, MVAR tables\n- **AAT Support**: morx, kerx, trak tables for Apple fonts\n- **Color Fonts**: SVG, sbix, CBDT/CBLC, COLR/CPAL tables\n- **BiDi**: UAX #9 bidirectional text algorithm\n- **Rasterization**: FreeType-style grayscale, LCD subpixel, and monochrome rendering, plus an opt-in libass 16x16 tiled gray rasterizer\n- **TrueType Hinting**: Full bytecode interpreter (150+ opcodes)\n- **Texture Atlas**: GPU-ready glyph atlas generation with shelf packing\n- **SDF/MSDF**: Signed distance field rendering for scalable text\n- **Zero Package Dependencies**: TypeScript APIs with embedded optional WebAssembly kernels; works in browser and Node.js\n\n## Installation\n\n```bash\nnpm install text-shaper\n# or\nbun add text-shaper\n```\n\n## Usage\n\n### Basic Shaping\n\n```typescript\nimport { Font, shape, UnicodeBuffer } from \"text-shaper\";\n\n// Load a font\nconst fontData = await fetch(\"path/to/font.ttf\").then(r => r.arrayBuffer());\nconst font = Font.load(fontData);\n\n// Create a buffer with text\nconst buffer = new UnicodeBuffer();\nbuffer.addStr(\"Hello, World!\");\n\n// Shape the text\nconst glyphBuffer = shape(font, buffer);\n\n// Access shaped glyphs\nfor (let i = 0; i < glyphBuffer.length; i++) {\n  const info = glyphBuffer.info[i];\n  const pos = glyphBuffer.pos[i];\n  console.log(`Glyph ${info.glyphId}: advance=${pos.xAdvance}`);\n}\n```\n\n### High-Performance Shaping\n\nFor best performance, reuse buffers with `shapeInto`:\n\n```typescript\nimport { Font, shapeInto, UnicodeBuffer, GlyphBuffer } from \"text-shaper\";\n\nconst font = Font.load(fontData);\nconst uBuffer = new UnicodeBuffer();\nconst gBuffer = GlyphBuffer.withCapacity(128);\n\n// Shape multiple strings efficiently\nfor (const text of texts) {\n  uBuffer.clear();\n  uBuffer.addStr(text);\n  gBuffer.reset();\n  shapeInto(font, uBuffer, gBuffer);\n  // Process gBuffer...\n}\n```\n\n### TTC Collections\n\n```typescript\nimport { Font } from \"text-shaper\";\n\nconst buffer = await fetch(\"fonts.ttc\").then(r => r.arrayBuffer());\nconst collection = Font.collection(buffer);\n\nif (collection) {\n  console.log(collection.count);\n  const names = collection.names();\n  const font = collection.get(0);\n}\n```\n\n### With Features\n\n```typescript\nimport { Font, shape, UnicodeBuffer, feature } from \"text-shaper\";\n\nconst glyphBuffer = shape(font, buffer, {\n  features: [\n    feature(\"smcp\"),      // Small caps\n    feature(\"liga\"),      // Ligatures\n    feature(\"kern\"),      // Kerning\n  ],\n});\n\n// Or use convenience helpers\nimport { smallCaps, standardLigatures, kerning, combineFeatures } from \"text-shaper\";\n\nconst glyphBuffer = shape(font, buffer, {\n  features: combineFeatures(smallCaps(), standardLigatures(), kerning()),\n});\n```\n\n### Variable Fonts\n\n```typescript\nimport { Font, shape, UnicodeBuffer, tag } from \"text-shaper\";\n\nconst glyphBuffer = shape(font, buffer, {\n  variations: [\n    { tag: tag(\"wght\"), value: 700 },  // Bold\n    { tag: tag(\"wdth\"), value: 75 },   // Condensed\n  ],\n});\n```\n\n### Rendering to SVG\n\n```typescript\nimport {\n  Font, shape, UnicodeBuffer,\n  glyphBufferToShapedGlyphs, shapedTextToSVG\n} from \"text-shaper\";\n\nconst buffer = new UnicodeBuffer();\nbuffer.addStr(\"Hello\");\n\nconst glyphBuffer = shape(font, buffer);\nconst shapedGlyphs = glyphBufferToShapedGlyphs(glyphBuffer);\nconst svg = shapedTextToSVG(font, shapedGlyphs, { fontSize: 48 });\n```\n\n### Rasterization\n\n```typescript\nimport { Font, rasterizeGlyph, buildAtlas, PixelMode } from \"text-shaper\";\n\n// Rasterize a single glyph\nconst bitmap = rasterizeGlyph(font, glyphId, 48, {\n  pixelMode: PixelMode.Gray,  // Gray, Mono, or LCD\n  hinting: true,              // Enable TrueType hinting\n});\n\n// Build a texture atlas for GPU rendering\nconst atlas = buildAtlas(font, glyphIds, {\n  fontSize: 32,\n  padding: 1,\n  pixelMode: PixelMode.Gray,\n  hinting: true,\n});\n```\n\n### SDF/MSDF Rendering\n\n```typescript\nimport {\n  Font, getGlyphPath, renderSdf, renderMsdf, buildMsdfAtlas\n} from \"text-shaper\";\n\n// Single glyph SDF\nconst path = getGlyphPath(font, glyphId);\nif (path) {\n  const sdf = renderSdf(path, {\n    width: 64,\n    height: 64,\n    scale: 1,\n    spread: 8,\n  });\n}\n\n// MSDF atlas for GPU text rendering (handles font internally)\nconst msdfAtlas = buildMsdfAtlas(font, glyphIds, {\n  fontSize: 32,\n  spread: 4,\n});\n```\n\n### Fluent API\n\nTwo composition styles for glyph manipulation and rendering:\n\n#### Builder Pattern (Method Chaining)\n\n```typescript\nimport { Font, glyph, char, glyphVar, combine, PixelMode } from \"text-shaper\";\n\n// From glyph ID\nconst rgba = glyph(font, glyphId)\n  ?.scale(2)\n  .rotateDeg(15)\n  .rasterizeAuto({ padding: 2 })\n  .blur(5)\n  .toRGBA();\n\n// From character\nconst svg = char(font, \"A\")\n  ?.scale(3)\n  .italic(12)\n  .toSVG({ width: 100, height: 100 });\n\n// Variable fonts\nconst bitmap = glyphVar(font, glyphId, [700, 100])  // wght=700, wdth=100\n  ?.embolden(50)\n  .rasterize({ pixelMode: PixelMode.Gray, scale: 2 })\n  .toBitmap();\n\n// Combine multiple glyphs\nconst h = glyph(font, hGlyphId)?.translate(0, 0);\nconst i = glyph(font, iGlyphId)?.translate(100, 0);\nif (h && i) {\n  const combined = combine(h, i).scale(2).rasterizeAuto().toRGBA();\n}\n```\n\n#### PathBuilder Methods\n\n```typescript\n// Transforms (lazy - accumulated as matrix)\n.scale(sx, sy?)           // Scale uniformly or non-uniformly\n.translate(dx, dy)        // Translate by offset\n.rotate(radians)          // Rotate by angle in radians\n.rotateDeg(degrees)       // Rotate by angle in degrees\n.shear(shearX, shearY)    // Shear transform\n.italic(degrees)          // Italic slant (convenience for shear)\n.matrix(m)                // Apply custom 2D matrix\n.perspective(m)           // Apply 3D perspective matrix\n.resetTransform()         // Reset accumulated transforms\n.apply()                  // Apply accumulated transforms to path\n\n// Path effects (immediate - modifies path)\n.embolden(strength)       // Make strokes thicker\n.condense(factor)         // Horizontal compression\n.oblique(slant)           // Oblique slant effect\n.stroke(width, cap?, join?)  // Convert to stroked outline\n.strokeAsymmetric(opts)   // Independent x/y stroke widths\n\n// Output\n.rasterize(options)       // Rasterize to BitmapBuilder\n.rasterizeAuto(options?)  // Auto-sized rasterization\n.toSdf(options)           // Render to SDF bitmap\n.toMsdf(options)          // Render to MSDF bitmap\n.toSVG(options?)          // Export as SVG string\n.toSVGElement(options?)   // Export as SVG path element\n.toCanvas(ctx, options?)  // Draw to Canvas 2D context\n.toPath()                 // Get raw GlyphPath\n.clone()                  // Clone the builder\n```\n\n#### BitmapBuilder Methods\n\n```typescript\n// Blur effects\n.blur(radius)             // Gaussian blur\n.boxBlur(radius)          // Box blur (faster)\n.fastBlur(radius)         // Fast approximated blur\n.cascadeBlur(rx, ry?)     // Cascade blur for large radii\n.adaptiveBlur(rx, ry?)    // Adaptive quality blur\n\n// Modifications\n.embolden(xStrength, yStrength?)  // Expand bitmap\n.shift(dx, dy)            // Shift bitmap contents\n.resize(width, height)    // Resize (nearest neighbor)\n.resizeBilinear(w, h)     // Resize with bilinear filtering\n.pad(left, top, right, bottom)  // Add padding\n.convert(pixelMode)       // Convert pixel format\n\n// Output\n.toRGBA()                 // Export as RGBA Uint8Array\n.toGray()                 // Export as grayscale Uint8Array\n.toBitmap()               // Get Bitmap object\n.toRasterizedGlyph()      // Get RasterizedGlyph with metrics\n.clone()                  // Clone the builder\n```\n\n#### Pipe Pattern (Functional)\n\n```typescript\nimport {\n  pipe, glyph,\n  $scale, $rotate, $embolden,\n  $rasterize, $blur, $toRGBA\n} from \"text-shaper\";\n\n// Compose operations functionally\nconst rgba = pipe(\n  glyph(font, glyphId),\n  $scale(2),\n  $rotate(Math.PI / 12),\n  $embolden(30),\n  $rasterize({ pixelMode: PixelMode.Gray }),\n  $blur(3),\n  $toRGBA()\n);\n```\n\n### Line Breaking & Justification\n\n```typescript\nimport { breakIntoLines, justify, JustifyMode } from \"text-shaper\";\n\n// Break text into lines\nconst lines = breakIntoLines(glyphBuffer, font, maxWidth);\n\n// Justify a line\nconst justified = justify(line, targetWidth, {\n  mode: JustifyMode.Distribute,\n});\n```\n\n### Text Segmentation\n\n```typescript\nimport { countGraphemes, splitGraphemes, splitWords } from \"text-shaper\";\n\n// Count grapheme clusters (visual characters)\nconst count = countGraphemes(\"👨‍👩‍👧‍👦Hello\"); // 6 (family emoji = 1)\n\n// Split into graphemes\nconst graphemes = splitGraphemes(\"नमस्ते\"); // Devanagari clusters\n\n// Split into words\nconst words = splitWords(\"Hello World\"); // [\"Hello\", \" \", \"World\"]\n```\n\n### Canvas Rendering\n\n```typescript\nimport {\n  Font, shape, UnicodeBuffer,\n  glyphBufferToShapedGlyphs, renderShapedText\n} from \"text-shaper\";\n\nconst canvas = document.getElementById(\"canvas\") as HTMLCanvasElement;\nconst ctx = canvas.getContext(\"2d\")!;\n\nconst buffer = new UnicodeBuffer();\nbuffer.addStr(\"Hello Canvas!\");\n\nconst glyphBuffer = shape(font, buffer);\nconst shapedGlyphs = glyphBufferToShapedGlyphs(glyphBuffer);\n\nrenderShapedText(ctx, font, shapedGlyphs, {\n  x: 50,\n  y: 100,\n  fontSize: 48,\n});\n```\n\n### BiDi & RTL Text\n\n```typescript\nimport {\n  Font, shape, UnicodeBuffer,\n  processBidi, reorderGlyphs, detectDirection\n} from \"text-shaper\";\n\n// Automatic RTL detection and reordering\nconst buffer = new UnicodeBuffer();\nbuffer.addStr(\"Hello שלום World\");  // Mixed LTR/RTL\n\nconst glyphBuffer = shape(font, buffer);\n// Glyphs are automatically reordered for visual display\n\n// Manual BiDi processing\nconst bidiResult = processBidi(\"مرحبا Hello\");\nconsole.log(bidiResult.direction);  // \"rtl\"\nconsole.log(bidiResult.levels);     // Embedding levels per character\n\n// Detect text direction\nconst dir = detectDirection(\"שלום\");  // \"rtl\"\n```\n\n### Color Fonts\n\n```typescript\nimport {\n  Font,\n  hasColorGlyph, getColorPaint, getColorLayers,  // COLR\n  hasSvgGlyph, getSvgDocument,                     // SVG\n  hasColorBitmap, getBitmapGlyph,                  // CBDT/sbix\n} from \"text-shaper\";\n\n// Check for color glyph support\nconst glyphId = font.glyphId(\"😀\".codePointAt(0)!);\n\n// COLR/CPAL (vector color)\nif (hasColorGlyph(font, glyphId)) {\n  const paint = getColorPaint(font, glyphId);\n  // Render paint tree...\n}\n\n// SVG color glyphs\nif (hasSvgGlyph(font, glyphId)) {\n  const svgDoc = getSvgDocument(font, glyphId);\n  // Use SVG document directly\n}\n\n// Bitmap color glyphs (sbix, CBDT)\nif (hasColorBitmap(font, glyphId)) {\n  const bitmap = getBitmapGlyph(font, glyphId, 128);  // ppem=128\n  // bitmap.data contains PNG/JPEG data\n}\n```\n\n### Texture Atlas (WebGL/GPU)\n\n```typescript\nimport {\n  Font, buildAtlas, buildStringAtlas, buildMsdfAtlas,\n  atlasToRGBA, getGlyphUV, PixelMode\n} from \"text-shaper\";\n\n// Build atlas from glyph IDs\nconst atlas = buildAtlas(font, glyphIds, {\n  fontSize: 32,\n  padding: 2,\n  pixelMode: PixelMode.Gray,\n});\n\n// Build atlas from string (auto-extracts unique glyphs)\nconst textAtlas = buildStringAtlas(font, \"Hello World!\", {\n  fontSize: 48,\n  padding: 1,\n});\n\n// Convert to RGBA for WebGL texture\nconst rgba = atlasToRGBA(atlas);\ngl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, atlas.width, atlas.height,\n              0, gl.RGBA, gl.UNSIGNED_BYTE, rgba);\n\n// Get UV coordinates for rendering\nconst uv = getGlyphUV(atlas, glyphId);\n// uv = { u0, v0, u1, v1, ... }\n\n// MSDF atlas for scalable GPU text\nconst msdfAtlas = buildMsdfAtlas(font, glyphIds, {\n  fontSize: 32,\n  spread: 4,\n});\n```\n\n### Browser Usage\n\n```typescript\n// Fetch font from URL\nconst fontData = await fetch(\"/fonts/MyFont.ttf\").then(r => r.arrayBuffer());\nconst font = Font.load(fontData);\n\n// Or from File input\nconst file = input.files[0];\nconst buffer = await file.arrayBuffer();\nconst font = Font.load(buffer);\n\n// Works with any ArrayBuffer source\n```\n\n## API Reference\n\n### Core Classes\n\n| Class | Description |\n|-------|-------------|\n| `Font` | Load and parse OpenType/TrueType fonts |\n| `Face` | Font face with variation coordinates applied |\n| `UnicodeBuffer` | Input buffer for text to shape |\n| `GlyphBuffer` | Output buffer containing shaped glyphs |\n\n### Shaping Functions\n\n| Function | Description |\n|----------|-------------|\n| `shape(font, buffer, options?)` | Shape text, returns new GlyphBuffer |\n| `shapeInto(font, buffer, glyphBuffer, options?)` | Shape into existing buffer (faster) |\n| `createShapePlan(font, options)` | Create reusable shape plan |\n| `getOrCreateShapePlan(font, options)` | Get cached or create shape plan |\n\n### Rendering Functions\n\n| Function | Description |\n|----------|-------------|\n| `getGlyphPath(font, glyphId)` | Get glyph outline as path commands |\n| `shapedTextToSVG(font, shapedGlyphs, options)` | Render shaped text to SVG string |\n| `renderShapedText(ctx, font, shapedGlyphs, options)` | Render to Canvas 2D context |\n| `glyphBufferToShapedGlyphs(buffer)` | Convert GlyphBuffer to ShapedGlyph[] |\n| `rasterizeGlyph(font, glyphId, size, options)` | Rasterize glyph to bitmap |\n| `rasterizePath(path, options)` | Rasterize path commands to bitmap |\n| `buildAtlas(font, glyphIds, options)` | Build texture atlas |\n\n### Feature Helpers\n\n```typescript\n// Ligatures\nstandardLigatures()      // liga\ndiscretionaryLigatures() // dlig\ncontextualAlternates()   // calt\n\n// Caps\nsmallCaps()              // smcp\ncapsToSmallCaps()        // c2sc\nallSmallCaps()           // smcp + c2sc\n\n// Figures\noldstyleFigures()        // onum\nliningFigures()          // lnum\ntabularFigures()         // tnum\nproportionalFigures()    // pnum\n\n// Stylistic\nstylisticSet(n)          // ss01-ss20\ncharacterVariant(n)      // cv01-cv99\nswash()                  // swsh\n```\n\n### Unicode Utilities\n\n| Function | Description |\n|----------|-------------|\n| `processBidi(text)` | Process bidirectional text (UAX #9) |\n| `getScript(codepoint)` | Get Unicode script for codepoint |\n| `getScriptRuns(text)` | Split text into script runs |\n| `countGraphemes(text)` | Count grapheme clusters |\n| `splitGraphemes(text)` | Split into grapheme clusters |\n| `analyzeLineBreaks(text)` | Find line break opportunities (UAX #14) |\n\n## Supported Tables\n\n### Required\nhead, hhea, hmtx, maxp, cmap, loca, glyf, name, OS/2, post\n\n### OpenType Layout\nGDEF, GSUB, GPOS, BASE\n\n### CFF\nCFF, CFF2\n\n### Variable Fonts\nfvar, gvar, avar, HVAR, VVAR, MVAR, STAT\n\n### AAT (Apple)\nmorx, kerx, kern, trak, feat\n\n### Color\nCOLR, CPAL, SVG, sbix, CBDT, CBLC\n\n### Vertical\nvhea, vmtx, VORG\n\n### Hinting\nfpgm, prep, cvt, gasp\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}