pagyra-js 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +30 -0
- package/CHANGELOG.md +13 -0
- package/README.md +275 -0
- package/UA_Styles_Chromium.md +93 -0
- package/_ext/woff2_conversion/brotli-decode.d.ts +139 -0
- package/_ext/woff2_conversion/brotli-encode.d.ts +129 -0
- package/_ext/woff2_conversion/brotli-port.d.ts +12 -0
- package/_ext/woff2_conversion/brotli-shared-dictionary.d.ts +25 -0
- package/_ext/woff2_conversion/brotli-types.d.ts +15 -0
- package/_ext/woff2_conversion/woff2-common.d.ts +37 -0
- package/_ext/woff2_conversion/woff2-decode.d.ts +32 -0
- package/_ext/woff2_conversion/woff2-encode.d.ts +31 -0
- package/_ext/woff2_conversion/woff2-output.d.ts +39 -0
- package/_ext/woff2_original_cpp/brotli/brotli.c +1559 -0
- package/_ext/woff2_original_cpp/brotli/brotli.md +116 -0
- package/_ext/woff2_original_cpp/brotli/decode.h +409 -0
- package/_ext/woff2_original_cpp/brotli/encode.h +505 -0
- package/_ext/woff2_original_cpp/brotli/port.h +302 -0
- package/_ext/woff2_original_cpp/brotli/shared_dictionary.h +100 -0
- package/_ext/woff2_original_cpp/brotli/types.h +83 -0
- package/_ext/woff2_original_cpp/cmake/FindBrotliDec.cmake +35 -0
- package/_ext/woff2_original_cpp/cmake/FindBrotliEnc.cmake +35 -0
- package/_ext/woff2_original_cpp/include/woff2/decode.h +36 -0
- package/_ext/woff2_original_cpp/include/woff2/encode.h +43 -0
- package/_ext/woff2_original_cpp/include/woff2/output.h +86 -0
- package/_ext/woff2_original_cpp/src/buffer.h +164 -0
- package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer.cc +13 -0
- package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer_new_entry.cc +12 -0
- package/_ext/woff2_original_cpp/src/file.h +30 -0
- package/_ext/woff2_original_cpp/src/font.cc +400 -0
- package/_ext/woff2_original_cpp/src/font.h +105 -0
- package/_ext/woff2_original_cpp/src/glyph.cc +383 -0
- package/_ext/woff2_original_cpp/src/glyph.h +71 -0
- package/_ext/woff2_original_cpp/src/normalize.cc +314 -0
- package/_ext/woff2_original_cpp/src/normalize.h +39 -0
- package/_ext/woff2_original_cpp/src/port.h +66 -0
- package/_ext/woff2_original_cpp/src/round.h +27 -0
- package/_ext/woff2_original_cpp/src/store_bytes.h +55 -0
- package/_ext/woff2_original_cpp/src/table_tags.cc +82 -0
- package/_ext/woff2_original_cpp/src/table_tags.h +30 -0
- package/_ext/woff2_original_cpp/src/transform.cc +430 -0
- package/_ext/woff2_original_cpp/src/transform.h +26 -0
- package/_ext/woff2_original_cpp/src/variable_length.cc +129 -0
- package/_ext/woff2_original_cpp/src/variable_length.h +30 -0
- package/_ext/woff2_original_cpp/src/woff2_common.cc +50 -0
- package/_ext/woff2_original_cpp/src/woff2_common.h +64 -0
- package/_ext/woff2_original_cpp/src/woff2_compress.cc +43 -0
- package/_ext/woff2_original_cpp/src/woff2_dec.cc +1398 -0
- package/_ext/woff2_original_cpp/src/woff2_decompress.cc +41 -0
- package/_ext/woff2_original_cpp/src/woff2_enc.cc +458 -0
- package/_ext/woff2_original_cpp/src/woff2_info.cc +142 -0
- package/_ext/woff2_original_cpp/src/woff2_out.cc +63 -0
- package/assets/fonts/ttf/arimo/Arimo-Bold.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-Italic.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-Regular.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Black.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Bold.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Regular.ttf +0 -0
- package/assets/fonts/ttf/dejavu/DejaVuSans.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Bold.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Light.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Medium.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Regular.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-SemiBold.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Bold.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Light.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Medium.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Regular.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-SemiBold.ttf +0 -0
- package/assets/fonts/ttf/notosans/NotoSans-Regular.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Bold.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Italic.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Regular.ttf +0 -0
- package/assets/fonts/ttf/stixtwomath/STIXTwoMath-Regular.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Bold.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Italic.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Regular.ttf +0 -0
- package/assets/fonts/woff/lato/lato-latin-400-italic.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-400-normal.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-700-italic.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-700-normal.woff +0 -0
- package/assets/fonts/woff2/caveat/Caveat-Bold.woff2 +0 -0
- package/assets/fonts/woff2/caveat/Caveat-Regular.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-400-italic.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-400-normal.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-700-italic.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-700-normal.woff2 +0 -0
- package/docs/AGENTS.md +288 -0
- package/docs/BACKGROUND-REPEAT-IMPLEMENTATION.md +127 -0
- package/docs/BACKGROUND-REPEAT-REFERENCE.md +127 -0
- package/docs/BACKGROUND-REPEAT-SPACE-ROUND.md +164 -0
- package/docs/css-properties-support.md +256 -0
- package/docs/src_modules_table.md +172 -0
- package/docs/text-overlap-fix.md +85 -0
- package/docs/text-overlap-investigation.md +27 -0
- package/eslint.config.js +36 -0
- package/glyph_measure.htm +1458 -0
- package/package.json +50 -0
- package/playground/browser-entry.ts +2 -0
- package/playground/exports/background-text-debug.pdf +0 -0
- package/playground/public/app.js +875 -0
- package/playground/public/assets/1.webp +0 -0
- package/playground/public/examples/accents-test.html +24 -0
- package/playground/public/examples/advanced-selectors-demo.html +118 -0
- package/playground/public/examples/background-advanced-showcase.html +82 -0
- package/playground/public/examples/background-clip-text.html +36 -0
- package/playground/public/examples/background-origin-showcase.html +137 -0
- package/playground/public/examples/background-position-showcase.html +83 -0
- package/playground/public/examples/background-repeat-showcase.html +83 -0
- package/playground/public/examples/background-repeat-space-round.html +348 -0
- package/playground/public/examples/background-size-showcase.html +82 -0
- package/playground/public/examples/background-text-debug.html +18 -0
- package/playground/public/examples/baseline-test.html +24 -0
- package/playground/public/examples/bold-showcase.html +150 -0
- package/playground/public/examples/bold-strike-example.html +12 -0
- package/playground/public/examples/border-collapse-test.html +23 -0
- package/playground/public/examples/centered-shadow-div.html +72 -0
- package/playground/public/examples/css-variables.html +50 -0
- package/playground/public/examples/debug-accents.html +11 -0
- package/playground/public/examples/debug-text-overlap.html +46 -0
- package/playground/public/examples/flex-gap-column.html +130 -0
- package/playground/public/examples/flex-gap-row.html +137 -0
- package/playground/public/examples/flex-padding-test.html +29 -0
- package/playground/public/examples/flexbox-text-test.html +193 -0
- package/playground/public/examples/fonts-demo.html +126 -0
- package/playground/public/examples/footer-example.html +4 -0
- package/playground/public/examples/gradient-text.html +54 -0
- package/playground/public/examples/grid-gap-demo.html +156 -0
- package/playground/public/examples/header-example.html +4 -0
- package/playground/public/examples/header-footer-example.html +27 -0
- package/playground/public/examples/image-showcase.html +33 -0
- package/playground/public/examples/justify-text.html +22 -0
- package/playground/public/examples/linear-gradient-example.html +38 -0
- package/playground/public/examples/lorem-span.html +14 -0
- package/playground/public/examples/margin-block-showcase.html +21 -0
- package/playground/public/examples/margin-inline-showcase.html +21 -0
- package/playground/public/examples/monthly-summary.html +95 -0
- package/playground/public/examples/multi-page-lorem.html +190 -0
- package/playground/public/examples/opacity-debug.html +39 -0
- package/playground/public/examples/opacity-example.html +70 -0
- package/playground/public/examples/png-image-example.html +13 -0
- package/playground/public/examples/red-rectangle.html +18 -0
- package/playground/public/examples/repro.html +24 -0
- package/playground/public/examples/rounded-borders-test.html +24 -0
- package/playground/public/examples/simple-list.html +89 -0
- package/playground/public/examples/simple-svg.html +37 -0
- package/playground/public/examples/simple-table.html +52 -0
- package/playground/public/examples/skew-div.html +138 -0
- package/playground/public/examples/skew-text.html +21 -0
- package/playground/public/examples/starter-report.css +51 -0
- package/playground/public/examples/starter-report.html +23 -0
- package/playground/public/examples/svg-aspect-ratio-showcase.html +116 -0
- package/playground/public/examples/svg-gradients-linear.html +28 -0
- package/playground/public/examples/svg-gradients-radial.html +29 -0
- package/playground/public/examples/svg-gradients-showcase.html +66 -0
- package/playground/public/examples/svg-image-path-test.html +43 -0
- package/playground/public/examples/svg-images-clipping.html +27 -0
- package/playground/public/examples/svg-path-gallery.html +118 -0
- package/playground/public/examples/svg-radial-transform-demo.html +78 -0
- package/playground/public/examples/svg-transform-stack.html +103 -0
- package/playground/public/examples/svg-transforms-demo.html +127 -0
- package/playground/public/examples/table-merge-test.html +34 -0
- package/playground/public/examples/text-decoration-showcase.html +138 -0
- package/playground/public/examples/text-indent-showcase.html +137 -0
- package/playground/public/examples/text-shadow-example.html +29 -0
- package/playground/public/examples/very-complex-css.html +293 -0
- package/playground/public/examples/webp-example.html +13 -0
- package/playground/public/examples/z-index-demo.html +93 -0
- package/playground/public/examples.json +240 -0
- package/playground/public/images/dice.png +0 -0
- package/playground/public/images/duck.jpg +0 -0
- package/playground/public/index.html +149 -0
- package/playground/public/mode.js +1 -0
- package/playground/public/styles.css +382 -0
- package/playground/public/tmp-h2-debug.html +33 -0
- package/playground/public/tmp-italic-debug.html +32 -0
- package/playground/public/vendor/codemirror/codemirror.min.css +1 -0
- package/playground/public/vendor/codemirror/codemirror.min.js +1 -0
- package/playground/public/vendor/codemirror/css.min.js +1 -0
- package/playground/public/vendor/codemirror/darcula.min.css +1 -0
- package/playground/public/vendor/codemirror/htmlmixed.min.js +1 -0
- package/playground/public/vendor/codemirror/javascript.min.js +1 -0
- package/playground/public/vendor/codemirror/xml.min.js +1 -0
- package/playground/public/vendor/pagyra-playground-browser.js +165966 -0
- package/playground/public/vendor/pagyra-playground-browser.js.map +7 -0
- package/playground/server.d.ts +1 -0
- package/playground/server.js +68 -0
- package/playground/server.ts +128 -0
- package/scripts/browser-build.ts +101 -0
- package/scripts/build-browser-bundle.ts +52 -0
- package/scripts/glyph-comparison/simulate.ts +744 -0
- package/scripts/playground-browser-server.ts +57 -0
- package/scripts/probe-roboto.ts +6 -0
- package/scripts/render-playground-example.ts +121 -0
- package/scripts/run-glyph-atlas-tuner-runner.mjs +113 -0
- package/scripts/run-glyph-atlas-tuner.ts +141 -0
- package/scripts/top-ts-files.ps1 +39 -0
- package/scripts/top-ts-files.sh +37 -0
- package/scripts/woff2_info.ps1 +132 -0
- package/src/browser-entry.ts +14 -0
- package/src/compression/adler32.ts +45 -0
- package/src/compression/brotli/brotli.ts +463 -0
- package/src/compression/brotli/index.ts +15 -0
- package/src/compression/brotli/transform.ts +184 -0
- package/src/compression/brotli/types.ts +58 -0
- package/src/compression/brotli/utils.ts +157 -0
- package/src/compression/brotli/vendor/bit_reader.js +124 -0
- package/src/compression/brotli/vendor/context.js +250 -0
- package/src/compression/brotli/vendor/decode.d.ts +2 -0
- package/src/compression/brotli/vendor/decode.js +938 -0
- package/src/compression/brotli/vendor/dictionary-data.js +9469 -0
- package/src/compression/brotli/vendor/dictionary.js +36 -0
- package/src/compression/brotli/vendor/huffman.js +123 -0
- package/src/compression/brotli/vendor/package.json +3 -0
- package/src/compression/brotli/vendor/prefix.js +60 -0
- package/src/compression/brotli/vendor/streams.js +31 -0
- package/src/compression/brotli/vendor/transform.js +247 -0
- package/src/compression/brotli/vendor-decode.d.ts +4 -0
- package/src/compression/brotli/woff2-glyf-transform.ts +623 -0
- package/src/compression/decompress.ts +16 -0
- package/src/compression/deflate.ts +295 -0
- package/src/compression/index.ts +4 -0
- package/src/compression/types.ts +26 -0
- package/src/compression/utils.ts +107 -0
- package/src/core.ts +18 -0
- package/src/css/apply-declarations.ts +86 -0
- package/src/css/background-types.ts +65 -0
- package/src/css/browser-defaults.ts +16 -0
- package/src/css/clip-path-types.ts +13 -0
- package/src/css/compute-style.ts +494 -0
- package/src/css/css-unit-resolver.ts +65 -0
- package/src/css/custom-properties.ts +215 -0
- package/src/css/enums.ts +127 -0
- package/src/css/font-face-parser.ts +233 -0
- package/src/css/font-weight.ts +65 -0
- package/src/css/inline-style-parser.ts +27 -0
- package/src/css/layout-property-resolver.ts +75 -0
- package/src/css/length.ts +141 -0
- package/src/css/line-height.ts +96 -0
- package/src/css/named-colors.ts +150 -0
- package/src/css/parsers/background-parser-extended.ts +111 -0
- package/src/css/parsers/background-parser.ts +456 -0
- package/src/css/parsers/border-block-parser.ts +26 -0
- package/src/css/parsers/border-inline-parser.ts +26 -0
- package/src/css/parsers/border-parser-extended.ts +256 -0
- package/src/css/parsers/border-parser.ts +175 -0
- package/src/css/parsers/box-shadow-parser.ts +106 -0
- package/src/css/parsers/clip-path-parser.ts +92 -0
- package/src/css/parsers/color-parser.ts +14 -0
- package/src/css/parsers/dimension-parser.ts +117 -0
- package/src/css/parsers/display-flex-parser.ts +59 -0
- package/src/css/parsers/flex-parser.ts +144 -0
- package/src/css/parsers/font-parser.ts +40 -0
- package/src/css/parsers/gradient-parser.ts +366 -0
- package/src/css/parsers/grid-parser-extended.ts +55 -0
- package/src/css/parsers/grid-parser.ts +218 -0
- package/src/css/parsers/length-parser.ts +95 -0
- package/src/css/parsers/list-style-parser.ts +39 -0
- package/src/css/parsers/margin-block-parser.ts +12 -0
- package/src/css/parsers/margin-inline-parser.ts +12 -0
- package/src/css/parsers/margin-parser.ts +30 -0
- package/src/css/parsers/opacity-parser.ts +32 -0
- package/src/css/parsers/overflow-wrap-parser.ts +38 -0
- package/src/css/parsers/padding-block-parser.ts +12 -0
- package/src/css/parsers/padding-inline-parser.ts +12 -0
- package/src/css/parsers/padding-parser.ts +30 -0
- package/src/css/parsers/position-parser.ts +75 -0
- package/src/css/parsers/register-parsers.ts +302 -0
- package/src/css/parsers/registry.ts +18 -0
- package/src/css/parsers/text-parser-extended.ts +144 -0
- package/src/css/parsers/text-parser.ts +25 -0
- package/src/css/parsers/text-shadow-parser.ts +94 -0
- package/src/css/properties/box-model.ts +82 -0
- package/src/css/properties/flexbox.ts +44 -0
- package/src/css/properties/gap.ts +14 -0
- package/src/css/properties/grid.ts +94 -0
- package/src/css/properties/layout.ts +59 -0
- package/src/css/properties/misc.ts +44 -0
- package/src/css/properties/typography.ts +71 -0
- package/src/css/properties/visual.ts +68 -0
- package/src/css/selectors/matcher.ts +219 -0
- package/src/css/selectors/parser.ts +163 -0
- package/src/css/selectors/simple-key.ts +31 -0
- package/src/css/selectors/specificity.ts +41 -0
- package/src/css/selectors/types.ts +31 -0
- package/src/css/shorthands/border-shorthand.ts +68 -0
- package/src/css/shorthands/box-shorthand.ts +33 -0
- package/src/css/style-inheritance.ts +50 -0
- package/src/css/style.ts +402 -0
- package/src/css/ua-defaults/base-defaults.ts +266 -0
- package/src/css/ua-defaults/browser-defaults.ts +134 -0
- package/src/css/ua-defaults/element-defaults.ts +374 -0
- package/src/css/ua-defaults/types.ts +43 -0
- package/src/css/unit-conversion.ts +24 -0
- package/src/css/utils.ts +108 -0
- package/src/css/viewport.ts +17 -0
- package/src/debug/audit.ts +20 -0
- package/src/debug/ids.ts +13 -0
- package/src/debug/log.js +28 -0
- package/src/debug/log.ts +52 -0
- package/src/debug/tree.ts +57 -0
- package/src/dom/node.ts +133 -0
- package/src/environment/browser-environment.ts +78 -0
- package/src/environment/environment.ts +35 -0
- package/src/environment/global.ts +13 -0
- package/src/environment/node-environment.browser.ts +28 -0
- package/src/environment/node-environment.ts +64 -0
- package/src/fonts/detector.ts +28 -0
- package/src/fonts/engines/ttf-engine.ts +28 -0
- package/src/fonts/engines/woff-engine.ts +38 -0
- package/src/fonts/engines/woff2-engine.ts +41 -0
- package/src/fonts/extractors/metrics-extractor.ts +362 -0
- package/src/fonts/font-registry-resolver.ts +132 -0
- package/src/fonts/index.ts +3 -0
- package/src/fonts/orchestrator.ts +92 -0
- package/src/fonts/parsers/base-parser.ts +23 -0
- package/src/fonts/types.ts +85 -0
- package/src/fonts/utils/ttf-reconstructor.ts +120 -0
- package/src/fonts/woff/decoder.ts +105 -0
- package/src/fonts/woff2/buffer.ts +106 -0
- package/src/fonts/woff2/decoder.ts +981 -0
- package/src/geometry/box.ts +48 -0
- package/src/geometry/matrix.ts +59 -0
- package/src/html/css/parse-css.ts +85 -0
- package/src/html/dom-converter.ts +433 -0
- package/src/html/image-converter.ts +200 -0
- package/src/html-to-pdf.ts +410 -0
- package/src/image/base-decoder.ts +149 -0
- package/src/image/image-service.ts +188 -0
- package/src/image/jpeg-decoder.ts +73 -0
- package/src/image/png-decoder.ts +550 -0
- package/src/image/types.ts +20 -0
- package/src/image/webp-decoder.ts +242 -0
- package/src/image/webp-huffman.ts +218 -0
- package/src/image/webp-riff-parser.ts +54 -0
- package/src/image/webp-vp8l-decoder.ts +199 -0
- package/src/index.ts +35 -0
- package/src/layout/context/float-context.ts +62 -0
- package/src/layout/context/layout-environment.ts +29 -0
- package/src/layout/debug.ts +18 -0
- package/src/layout/inline/bounding-box-calculator.ts +132 -0
- package/src/layout/inline/font-baseline-calculator.ts +76 -0
- package/src/layout/inline/inline-utils.ts +94 -0
- package/src/layout/inline/layout.ts +285 -0
- package/src/layout/inline/line_breaker.ts +109 -0
- package/src/layout/inline/measurement.ts +144 -0
- package/src/layout/inline/run-placer.ts +139 -0
- package/src/layout/inline/text-alignment.ts +70 -0
- package/src/layout/inline/tokenizer.ts +195 -0
- package/src/layout/inline/types.ts +76 -0
- package/src/layout/pipeline/context-factory.ts +16 -0
- package/src/layout/pipeline/default-engine.ts +24 -0
- package/src/layout/pipeline/engine.ts +59 -0
- package/src/layout/pipeline/layout-tree.ts +13 -0
- package/src/layout/pipeline/out-of-flow-manager.ts +73 -0
- package/src/layout/pipeline/strategy.ts +12 -0
- package/src/layout/pipeline/text-metrics-initializer.ts +13 -0
- package/src/layout/strategies/block.ts +236 -0
- package/src/layout/strategies/display-none.ts +14 -0
- package/src/layout/strategies/fallback.ts +15 -0
- package/src/layout/strategies/flex.ts +477 -0
- package/src/layout/strategies/fragmentation.ts +17 -0
- package/src/layout/strategies/grid.ts +247 -0
- package/src/layout/strategies/image.ts +342 -0
- package/src/layout/strategies/inline.ts +128 -0
- package/src/layout/strategies/table.ts +595 -0
- package/src/layout/table/cell_layout.ts +31 -0
- package/src/layout/table/diagnostics.ts +19 -0
- package/src/layout/text-run.ts +42 -0
- package/src/layout/utils/content-measurer.ts +117 -0
- package/src/layout/utils/display-utils.ts +24 -0
- package/src/layout/utils/floats.ts +98 -0
- package/src/layout/utils/gap-calculator.ts +167 -0
- package/src/layout/utils/inline-formatter.ts +31 -0
- package/src/layout/utils/inline-formatting.ts +9 -0
- package/src/layout/utils/margin.ts +140 -0
- package/src/layout/utils/node-math.ts +237 -0
- package/src/layout/utils/overflow.ts +14 -0
- package/src/layout/utils/sizing.ts +12 -0
- package/src/layout/utils/text-metrics.ts +361 -0
- package/src/logging/debug.ts +58 -0
- package/src/pdf/font/base14/widths-courier-bold.ts +159 -0
- package/src/pdf/font/base14/widths-courier.ts +159 -0
- package/src/pdf/font/base14/widths-helvetica-bold.ts +158 -0
- package/src/pdf/font/base14/widths-helvetica.ts +158 -0
- package/src/pdf/font/base14/widths-times-bold.ts +158 -0
- package/src/pdf/font/base14/widths-times-roman.ts +158 -0
- package/src/pdf/font/base14/widths-types.ts +25 -0
- package/src/pdf/font/base14-widths.ts +32 -0
- package/src/pdf/font/blur.ts +81 -0
- package/src/pdf/font/builtin-fonts.browser.ts +262 -0
- package/src/pdf/font/builtin-fonts.ts +126 -0
- package/src/pdf/font/composite-glyph-parser.ts +242 -0
- package/src/pdf/font/embedder.ts +395 -0
- package/src/pdf/font/font-config.ts +190 -0
- package/src/pdf/font/font-registry.ts +263 -0
- package/src/pdf/font/font-subset.ts +258 -0
- package/src/pdf/font/glyph-atlas-maxrects.ts +305 -0
- package/src/pdf/font/glyph-atlas-tuner.ts +98 -0
- package/src/pdf/font/glyph-atlas.ts +226 -0
- package/src/pdf/font/glyph-cache.ts +127 -0
- package/src/pdf/font/loca-reader.ts +109 -0
- package/src/pdf/font/managers/font-resource-manager.ts +73 -0
- package/src/pdf/font/managers/subset-resource-manager.ts +164 -0
- package/src/pdf/font/rasterizer.ts +270 -0
- package/src/pdf/font/resolvers/base-font-mapper.ts +77 -0
- package/src/pdf/font/resolvers/family-resolver.ts +33 -0
- package/src/pdf/font/resolvers/weight-style-applicator.ts +63 -0
- package/src/pdf/font/simple-glyph-parser.ts +289 -0
- package/src/pdf/font/to-unicode.ts +109 -0
- package/src/pdf/font/transformation-matrix.ts +136 -0
- package/src/pdf/font/ttf-cmap.ts +180 -0
- package/src/pdf/font/ttf-global-metrics.ts +58 -0
- package/src/pdf/font/ttf-glyf.ts +125 -0
- package/src/pdf/font/ttf-glyph-metrics.ts +43 -0
- package/src/pdf/font/ttf-lite.ts +269 -0
- package/src/pdf/font/ttf-table-parser.ts +132 -0
- package/src/pdf/font/ttf-table-provider.ts +61 -0
- package/src/pdf/font/widths.ts +79 -0
- package/src/pdf/font-subset/font-registry.ts +127 -0
- package/src/pdf/header-footer-layout.ts +153 -0
- package/src/pdf/header-footer-painter.ts +209 -0
- package/src/pdf/header-footer-renderer.ts +357 -0
- package/src/pdf/header-footer-tokens.ts +55 -0
- package/src/pdf/header-footer.ts +25 -0
- package/src/pdf/layout-tree-builder.ts +261 -0
- package/src/pdf/page-painter.ts +241 -0
- package/src/pdf/pagination.ts +155 -0
- package/src/pdf/primitives/pdf-builder.ts +378 -0
- package/src/pdf/primitives/pdf-bytes.ts +40 -0
- package/src/pdf/primitives/pdf-document.ts +108 -0
- package/src/pdf/primitives/pdf-reference-manager.ts +47 -0
- package/src/pdf/primitives/pdf-resource-registries.ts +255 -0
- package/src/pdf/primitives/pdf-serializers.ts +194 -0
- package/src/pdf/primitives/pdf-types.ts +73 -0
- package/src/pdf/render.ts +210 -0
- package/src/pdf/renderer/box-painter.ts +236 -0
- package/src/pdf/renderer/page-paint.ts +102 -0
- package/src/pdf/renderer/paint-box-shadows.ts +218 -0
- package/src/pdf/renderer/radius.ts +58 -0
- package/src/pdf/renderers/graphics-state-manager.ts +40 -0
- package/src/pdf/renderers/image-renderer.ts +127 -0
- package/src/pdf/renderers/radius-utils.ts +80 -0
- package/src/pdf/renderers/rectangle-renderer.ts +129 -0
- package/src/pdf/renderers/rounded-rect-path.ts +120 -0
- package/src/pdf/renderers/shape-renderer.ts +563 -0
- package/src/pdf/renderers/shape-utils.ts +194 -0
- package/src/pdf/renderers/text-decoration-renderer.ts +313 -0
- package/src/pdf/renderers/text-encoder.ts +41 -0
- package/src/pdf/renderers/text-font-resolver.ts +75 -0
- package/src/pdf/renderers/text-renderer-utils.ts +28 -0
- package/src/pdf/renderers/text-renderer.ts +391 -0
- package/src/pdf/renderers/text-shadow-renderer.ts +300 -0
- package/src/pdf/shading/gradient-service.ts +525 -0
- package/src/pdf/shading/index.ts +1 -0
- package/src/pdf/stacking/build-stacking-contexts.ts +93 -0
- package/src/pdf/stacking/resolve-paint-order.ts +157 -0
- package/src/pdf/stacking/types.ts +40 -0
- package/src/pdf/svg/aspect-ratio.ts +81 -0
- package/src/pdf/svg/coordinate-mapper.ts +81 -0
- package/src/pdf/svg/geometry-builder.ts +45 -0
- package/src/pdf/svg/render-svg.ts +296 -0
- package/src/pdf/svg/shape-renderer.ts +463 -0
- package/src/pdf/svg/style-computer.ts +246 -0
- package/src/pdf/transform-adapter.ts +26 -0
- package/src/pdf/types.ts +377 -0
- package/src/pdf/utils/background-layer-resolver.ts +439 -0
- package/src/pdf/utils/background-tiles.ts +192 -0
- package/src/pdf/utils/border-dashes.ts +109 -0
- package/src/pdf/utils/border-radius-utils.ts +86 -0
- package/src/pdf/utils/box-dimensions-utils.ts +47 -0
- package/src/pdf/utils/clip-path-resolver.ts +50 -0
- package/src/pdf/utils/clipping-path-builder.ts +190 -0
- package/src/pdf/utils/color-utils.ts +102 -0
- package/src/pdf/utils/coordinate-transformer.ts +30 -0
- package/src/pdf/utils/drop-shadow-raster.ts +233 -0
- package/src/pdf/utils/encoding.ts +98 -0
- package/src/pdf/utils/glyph-atlas-registrar.ts +13 -0
- package/src/pdf/utils/glyph-run-renderer.ts +129 -0
- package/src/pdf/utils/image-command-partitioner.ts +28 -0
- package/src/pdf/utils/image-matrix-builder.ts +31 -0
- package/src/pdf/utils/image-utils.ts +26 -0
- package/src/pdf/utils/list-utils.ts +194 -0
- package/src/pdf/utils/node-text-run-factory.ts +202 -0
- package/src/pdf/utils/page-resource-registrar.ts +46 -0
- package/src/pdf/utils/result-combiner.ts +102 -0
- package/src/pdf/utils/shadow-utils.ts +127 -0
- package/src/pdf/utils/text-alignment-resolver.ts +76 -0
- package/src/pdf/utils/text-decoration-utils.ts +64 -0
- package/src/pdf/utils/text-layout-adjuster.ts +185 -0
- package/src/pdf/utils/text-utils.ts +193 -0
- package/src/pdf/utils/transform-scope-manager.ts +69 -0
- package/src/render/offset.ts +170 -0
- package/src/shim/empty.ts +2 -0
- package/src/shim/fs-empty.ts +5 -0
- package/src/shim/url-empty.ts +7 -0
- package/src/shim/zlib-empty.ts +9 -0
- package/src/style/shorthands/index.ts +19 -0
- package/src/style/ua/defaults.ts +69 -0
- package/src/svg/index.ts +4 -0
- package/src/svg/parser-registry.ts +71 -0
- package/src/svg/parser.ts +486 -0
- package/src/svg/path-data.ts +515 -0
- package/src/svg/types.ts +194 -0
- package/src/text/line-breaker.ts +321 -0
- package/src/text/text-transform.ts +43 -0
- package/src/text/text.ts +33 -0
- package/src/transform/css-parser.ts +95 -0
- package/src/types/fonts.ts +62 -0
- package/src/types/public.ts +19 -0
- package/src/units/page-utils.ts +58 -0
- package/src/units/units.ts +50 -0
- package/src/utils/base64.ts +24 -0
- package/test-output.txt +79 -0
- package/tests/css/background-parser.spec.ts +14 -0
- package/tests/css/clip-path-parser.spec.ts +66 -0
- package/tests/environment/path-resolution.spec.ts +104 -0
- package/tests/helpers/ai-layout-diagnostics.ts +141 -0
- package/tests/helpers/render-utils.ts +52 -0
- package/tests/helpers/text-geometry.ts +56 -0
- package/tests/layout/custom-properties.test.ts +38 -0
- package/tests/layout/gap-calculator.spec.ts +196 -0
- package/tests/layout/inline-background-alignment.spec.ts +93 -0
- package/tests/layout/inline-fragments.spec.ts +26 -0
- package/tests/layout/run-placer-baseline.spec.ts +108 -0
- package/tests/pdf/alignments.spec.ts +26 -0
- package/tests/pdf/background-clip.spec.ts +57 -0
- package/tests/pdf/background-repeat-space-round.spec.ts +35 -0
- package/tests/pdf/background-repeat.spec.ts +137 -0
- package/tests/pdf/border-radius.spec.ts +151 -0
- package/tests/pdf/clip-path.spec.ts +92 -0
- package/tests/pdf/radial-gradient.spec.ts +50 -0
- package/tests/pdf/svg-stroke-dash.spec.ts +81 -0
- package/tests/pdf/text-transform-matrix.spec.ts +43 -0
- package/tsconfig.json +17 -0
- package/types/fonts.js +10 -0
- package/vitest.config.ts +9 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
14
|
+
|
|
15
|
+
Collection of static dictionary words.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
var data = require('./dictionary-data');
|
|
19
|
+
exports.init = function() {
|
|
20
|
+
exports.dictionary = data.init();
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.offsetsByLength = new Uint32Array([
|
|
24
|
+
0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,
|
|
25
|
+
53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
|
|
26
|
+
115968, 118528, 119872, 121280, 122016,
|
|
27
|
+
]);
|
|
28
|
+
|
|
29
|
+
exports.sizeBitsByLength = new Uint8Array([
|
|
30
|
+
0, 0, 0, 0, 10, 10, 11, 11, 10, 10,
|
|
31
|
+
10, 10, 10, 9, 9, 8, 7, 7, 8, 7,
|
|
32
|
+
7, 6, 6, 5, 5,
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
exports.minDictionaryWordLength = 4;
|
|
36
|
+
exports.maxDictionaryWordLength = 24;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
function HuffmanCode(bits, value) {
|
|
2
|
+
this.bits = bits; /* number of bits used for this symbol */
|
|
3
|
+
this.value = value; /* symbol value or table offset */
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
exports.HuffmanCode = HuffmanCode;
|
|
7
|
+
|
|
8
|
+
var MAX_LENGTH = 15;
|
|
9
|
+
|
|
10
|
+
/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
|
|
11
|
+
bit-wise reversal of the len least significant bits of key. */
|
|
12
|
+
function GetNextKey(key, len) {
|
|
13
|
+
var step = 1 << (len - 1);
|
|
14
|
+
while (key & step) {
|
|
15
|
+
step >>= 1;
|
|
16
|
+
}
|
|
17
|
+
return (key & (step - 1)) + step;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
|
|
21
|
+
/* Assumes that end is an integer multiple of step */
|
|
22
|
+
function ReplicateValue(table, i, step, end, code) {
|
|
23
|
+
do {
|
|
24
|
+
end -= step;
|
|
25
|
+
table[i + end] = new HuffmanCode(code.bits, code.value);
|
|
26
|
+
} while (end > 0);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Returns the table width of the next 2nd level table. count is the histogram
|
|
30
|
+
of bit lengths for the remaining symbols, len is the code length of the next
|
|
31
|
+
processed symbol */
|
|
32
|
+
function NextTableBitSize(count, len, root_bits) {
|
|
33
|
+
var left = 1 << (len - root_bits);
|
|
34
|
+
while (len < MAX_LENGTH) {
|
|
35
|
+
left -= count[len];
|
|
36
|
+
if (left <= 0) break;
|
|
37
|
+
++len;
|
|
38
|
+
left <<= 1;
|
|
39
|
+
}
|
|
40
|
+
return len - root_bits;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
exports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
|
|
44
|
+
var start_table = table;
|
|
45
|
+
var code; /* current table entry */
|
|
46
|
+
var len; /* current code length */
|
|
47
|
+
var symbol; /* symbol index in original or sorted table */
|
|
48
|
+
var key; /* reversed prefix code */
|
|
49
|
+
var step; /* step size to replicate values in current table */
|
|
50
|
+
var low; /* low bits for current root entry */
|
|
51
|
+
var mask; /* mask for low bits */
|
|
52
|
+
var table_bits; /* key length of current table */
|
|
53
|
+
var table_size; /* size of current table */
|
|
54
|
+
var total_size; /* sum of root table size and 2nd level table sizes */
|
|
55
|
+
var sorted; /* symbols sorted by code length */
|
|
56
|
+
var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */
|
|
57
|
+
var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */
|
|
58
|
+
|
|
59
|
+
sorted = new Int32Array(code_lengths_size);
|
|
60
|
+
|
|
61
|
+
/* build histogram of code lengths */
|
|
62
|
+
for (symbol = 0; symbol < code_lengths_size; symbol++) {
|
|
63
|
+
count[code_lengths[symbol]]++;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* generate offsets into sorted symbol table by code length */
|
|
67
|
+
offset[1] = 0;
|
|
68
|
+
for (len = 1; len < MAX_LENGTH; len++) {
|
|
69
|
+
offset[len + 1] = offset[len] + count[len];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* sort symbols by length, by symbol order within each length */
|
|
73
|
+
for (symbol = 0; symbol < code_lengths_size; symbol++) {
|
|
74
|
+
if (code_lengths[symbol] !== 0) {
|
|
75
|
+
sorted[offset[code_lengths[symbol]]++] = symbol;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
table_bits = root_bits;
|
|
80
|
+
table_size = 1 << table_bits;
|
|
81
|
+
total_size = table_size;
|
|
82
|
+
|
|
83
|
+
/* special case code with only one value */
|
|
84
|
+
if (offset[MAX_LENGTH] === 1) {
|
|
85
|
+
for (key = 0; key < total_size; ++key) {
|
|
86
|
+
root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return total_size;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* fill in root table */
|
|
93
|
+
key = 0;
|
|
94
|
+
symbol = 0;
|
|
95
|
+
for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
|
|
96
|
+
for (; count[len] > 0; --count[len]) {
|
|
97
|
+
code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
|
|
98
|
+
ReplicateValue(root_table, table + key, step, table_size, code);
|
|
99
|
+
key = GetNextKey(key, len);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* fill in 2nd level tables and add pointers to root table */
|
|
104
|
+
mask = total_size - 1;
|
|
105
|
+
low = -1;
|
|
106
|
+
for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
|
|
107
|
+
for (; count[len] > 0; --count[len]) {
|
|
108
|
+
if ((key & mask) !== low) {
|
|
109
|
+
table += table_size;
|
|
110
|
+
table_bits = NextTableBitSize(count, len, root_bits);
|
|
111
|
+
table_size = 1 << table_bits;
|
|
112
|
+
total_size += table_size;
|
|
113
|
+
low = key & mask;
|
|
114
|
+
root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
|
|
115
|
+
}
|
|
116
|
+
code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
|
|
117
|
+
ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
|
|
118
|
+
key = GetNextKey(key, len);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return total_size;
|
|
123
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
14
|
+
|
|
15
|
+
Lookup tables to map prefix codes to value ranges. This is used during
|
|
16
|
+
decoding of the block lengths, literal insertion lengths and copy lengths.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/* Represents the range of values belonging to a prefix code: */
|
|
20
|
+
/* [offset, offset + 2^nbits) */
|
|
21
|
+
function PrefixCodeRange(offset, nbits) {
|
|
22
|
+
this.offset = offset;
|
|
23
|
+
this.nbits = nbits;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.kBlockLengthPrefixCode = [
|
|
27
|
+
new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
|
|
28
|
+
new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
|
|
29
|
+
new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
|
|
30
|
+
new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
|
|
31
|
+
new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
|
|
32
|
+
new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
|
|
33
|
+
new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
exports.kInsertLengthPrefixCode = [
|
|
37
|
+
new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
|
|
38
|
+
new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
|
|
39
|
+
new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
|
|
40
|
+
new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
|
|
41
|
+
new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
|
|
42
|
+
new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
exports.kCopyLengthPrefixCode = [
|
|
46
|
+
new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
|
|
47
|
+
new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
|
|
48
|
+
new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
|
|
49
|
+
new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
|
|
50
|
+
new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
|
|
51
|
+
new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
exports.kInsertRangeLut = [
|
|
55
|
+
0, 0, 8, 8, 0, 16, 8, 16, 16,
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
exports.kCopyRangeLut = [
|
|
59
|
+
0, 8, 0, 8, 16, 0, 16, 8, 16,
|
|
60
|
+
];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function BrotliInput(buffer) {
|
|
2
|
+
this.buffer = buffer;
|
|
3
|
+
this.pos = 0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
BrotliInput.prototype.read = function (buf, i, count) {
|
|
7
|
+
if (this.pos + count > this.buffer.length) {
|
|
8
|
+
count = this.buffer.length - this.pos;
|
|
9
|
+
}
|
|
10
|
+
for (var p = 0; p < count; p++) {
|
|
11
|
+
buf[i + p] = this.buffer[this.pos + p];
|
|
12
|
+
}
|
|
13
|
+
this.pos += count;
|
|
14
|
+
return count;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function BrotliOutput(buf) {
|
|
18
|
+
this.buffer = buf;
|
|
19
|
+
this.pos = 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
BrotliOutput.prototype.write = function (buf, count) {
|
|
23
|
+
if (this.pos + count > this.buffer.length) {
|
|
24
|
+
throw new Error("Output buffer is not large enough");
|
|
25
|
+
}
|
|
26
|
+
this.buffer.set(buf.subarray(0, count), this.pos);
|
|
27
|
+
this.pos += count;
|
|
28
|
+
return count;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
module.exports = { BrotliInput, BrotliOutput };
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
14
|
+
|
|
15
|
+
Transformations on dictionary words.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
var BrotliDictionary = require('./dictionary');
|
|
19
|
+
|
|
20
|
+
var kIdentity = 0;
|
|
21
|
+
var kOmitLast1 = 1;
|
|
22
|
+
var kOmitLast2 = 2;
|
|
23
|
+
var kOmitLast3 = 3;
|
|
24
|
+
var kOmitLast4 = 4;
|
|
25
|
+
var kOmitLast5 = 5;
|
|
26
|
+
var kOmitLast6 = 6;
|
|
27
|
+
var kOmitLast7 = 7;
|
|
28
|
+
var kOmitLast8 = 8;
|
|
29
|
+
var kOmitLast9 = 9;
|
|
30
|
+
var kUppercaseFirst = 10;
|
|
31
|
+
var kUppercaseAll = 11;
|
|
32
|
+
var kOmitFirst1 = 12;
|
|
33
|
+
var kOmitFirst2 = 13;
|
|
34
|
+
var kOmitFirst3 = 14;
|
|
35
|
+
var kOmitFirst4 = 15;
|
|
36
|
+
var kOmitFirst5 = 16;
|
|
37
|
+
var kOmitFirst6 = 17;
|
|
38
|
+
var kOmitFirst7 = 18;
|
|
39
|
+
var kOmitFirst8 = 19;
|
|
40
|
+
var kOmitFirst9 = 20;
|
|
41
|
+
|
|
42
|
+
function Transform(prefix, transform, suffix) {
|
|
43
|
+
this.prefix = new Uint8Array(prefix.length);
|
|
44
|
+
this.transform = transform;
|
|
45
|
+
this.suffix = new Uint8Array(suffix.length);
|
|
46
|
+
|
|
47
|
+
for (var i = 0; i < prefix.length; i++)
|
|
48
|
+
this.prefix[i] = prefix.charCodeAt(i);
|
|
49
|
+
|
|
50
|
+
for (var i = 0; i < suffix.length; i++)
|
|
51
|
+
this.suffix[i] = suffix.charCodeAt(i);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var kTransforms = [
|
|
55
|
+
new Transform( "", kIdentity, "" ),
|
|
56
|
+
new Transform( "", kIdentity, " " ),
|
|
57
|
+
new Transform( " ", kIdentity, " " ),
|
|
58
|
+
new Transform( "", kOmitFirst1, "" ),
|
|
59
|
+
new Transform( "", kUppercaseFirst, " " ),
|
|
60
|
+
new Transform( "", kIdentity, " the " ),
|
|
61
|
+
new Transform( " ", kIdentity, "" ),
|
|
62
|
+
new Transform( "s ", kIdentity, " " ),
|
|
63
|
+
new Transform( "", kIdentity, " of " ),
|
|
64
|
+
new Transform( "", kUppercaseFirst, "" ),
|
|
65
|
+
new Transform( "", kIdentity, " and " ),
|
|
66
|
+
new Transform( "", kOmitFirst2, "" ),
|
|
67
|
+
new Transform( "", kOmitLast1, "" ),
|
|
68
|
+
new Transform( ", ", kIdentity, " " ),
|
|
69
|
+
new Transform( "", kIdentity, ", " ),
|
|
70
|
+
new Transform( " ", kUppercaseFirst, " " ),
|
|
71
|
+
new Transform( "", kIdentity, " in " ),
|
|
72
|
+
new Transform( "", kIdentity, " to " ),
|
|
73
|
+
new Transform( "e ", kIdentity, " " ),
|
|
74
|
+
new Transform( "", kIdentity, "\"" ),
|
|
75
|
+
new Transform( "", kIdentity, "." ),
|
|
76
|
+
new Transform( "", kIdentity, "\">" ),
|
|
77
|
+
new Transform( "", kIdentity, "\n" ),
|
|
78
|
+
new Transform( "", kOmitLast3, "" ),
|
|
79
|
+
new Transform( "", kIdentity, "]" ),
|
|
80
|
+
new Transform( "", kIdentity, " for " ),
|
|
81
|
+
new Transform( "", kOmitFirst3, "" ),
|
|
82
|
+
new Transform( "", kOmitLast2, "" ),
|
|
83
|
+
new Transform( "", kIdentity, " a " ),
|
|
84
|
+
new Transform( "", kIdentity, " that " ),
|
|
85
|
+
new Transform( " ", kUppercaseFirst, "" ),
|
|
86
|
+
new Transform( "", kIdentity, ". " ),
|
|
87
|
+
new Transform( ".", kIdentity, "" ),
|
|
88
|
+
new Transform( " ", kIdentity, ", " ),
|
|
89
|
+
new Transform( "", kOmitFirst4, "" ),
|
|
90
|
+
new Transform( "", kIdentity, " with " ),
|
|
91
|
+
new Transform( "", kIdentity, "'" ),
|
|
92
|
+
new Transform( "", kIdentity, " from " ),
|
|
93
|
+
new Transform( "", kIdentity, " by " ),
|
|
94
|
+
new Transform( "", kOmitFirst5, "" ),
|
|
95
|
+
new Transform( "", kOmitFirst6, "" ),
|
|
96
|
+
new Transform( " the ", kIdentity, "" ),
|
|
97
|
+
new Transform( "", kOmitLast4, "" ),
|
|
98
|
+
new Transform( "", kIdentity, ". The " ),
|
|
99
|
+
new Transform( "", kUppercaseAll, "" ),
|
|
100
|
+
new Transform( "", kIdentity, " on " ),
|
|
101
|
+
new Transform( "", kIdentity, " as " ),
|
|
102
|
+
new Transform( "", kIdentity, " is " ),
|
|
103
|
+
new Transform( "", kOmitLast7, "" ),
|
|
104
|
+
new Transform( "", kOmitLast1, "ing " ),
|
|
105
|
+
new Transform( "", kIdentity, "\n\t" ),
|
|
106
|
+
new Transform( "", kIdentity, ":" ),
|
|
107
|
+
new Transform( " ", kIdentity, ". " ),
|
|
108
|
+
new Transform( "", kIdentity, "ed " ),
|
|
109
|
+
new Transform( "", kOmitFirst9, "" ),
|
|
110
|
+
new Transform( "", kOmitFirst7, "" ),
|
|
111
|
+
new Transform( "", kOmitLast6, "" ),
|
|
112
|
+
new Transform( "", kIdentity, "(" ),
|
|
113
|
+
new Transform( "", kUppercaseFirst, ", " ),
|
|
114
|
+
new Transform( "", kOmitLast8, "" ),
|
|
115
|
+
new Transform( "", kIdentity, " at " ),
|
|
116
|
+
new Transform( "", kIdentity, "ly " ),
|
|
117
|
+
new Transform( " the ", kIdentity, " of " ),
|
|
118
|
+
new Transform( "", kOmitLast5, "" ),
|
|
119
|
+
new Transform( "", kOmitLast9, "" ),
|
|
120
|
+
new Transform( " ", kUppercaseFirst, ", " ),
|
|
121
|
+
new Transform( "", kUppercaseFirst, "\"" ),
|
|
122
|
+
new Transform( ".", kIdentity, "(" ),
|
|
123
|
+
new Transform( "", kUppercaseAll, " " ),
|
|
124
|
+
new Transform( "", kUppercaseFirst, "\">" ),
|
|
125
|
+
new Transform( "", kIdentity, "=\"" ),
|
|
126
|
+
new Transform( " ", kIdentity, "." ),
|
|
127
|
+
new Transform( ".com/", kIdentity, "" ),
|
|
128
|
+
new Transform( " the ", kIdentity, " of the " ),
|
|
129
|
+
new Transform( "", kUppercaseFirst, "'" ),
|
|
130
|
+
new Transform( "", kIdentity, ". This " ),
|
|
131
|
+
new Transform( "", kIdentity, "," ),
|
|
132
|
+
new Transform( ".", kIdentity, " " ),
|
|
133
|
+
new Transform( "", kUppercaseFirst, "(" ),
|
|
134
|
+
new Transform( "", kUppercaseFirst, "." ),
|
|
135
|
+
new Transform( "", kIdentity, " not " ),
|
|
136
|
+
new Transform( " ", kIdentity, "=\"" ),
|
|
137
|
+
new Transform( "", kIdentity, "er " ),
|
|
138
|
+
new Transform( " ", kUppercaseAll, " " ),
|
|
139
|
+
new Transform( "", kIdentity, "al " ),
|
|
140
|
+
new Transform( " ", kUppercaseAll, "" ),
|
|
141
|
+
new Transform( "", kIdentity, "='" ),
|
|
142
|
+
new Transform( "", kUppercaseAll, "\"" ),
|
|
143
|
+
new Transform( "", kUppercaseFirst, ". " ),
|
|
144
|
+
new Transform( " ", kIdentity, "(" ),
|
|
145
|
+
new Transform( "", kIdentity, "ful " ),
|
|
146
|
+
new Transform( " ", kUppercaseFirst, ". " ),
|
|
147
|
+
new Transform( "", kIdentity, "ive " ),
|
|
148
|
+
new Transform( "", kIdentity, "less " ),
|
|
149
|
+
new Transform( "", kUppercaseAll, "'" ),
|
|
150
|
+
new Transform( "", kIdentity, "est " ),
|
|
151
|
+
new Transform( " ", kUppercaseFirst, "." ),
|
|
152
|
+
new Transform( "", kUppercaseAll, "\">" ),
|
|
153
|
+
new Transform( " ", kIdentity, "='" ),
|
|
154
|
+
new Transform( "", kUppercaseFirst, "," ),
|
|
155
|
+
new Transform( "", kIdentity, "ize " ),
|
|
156
|
+
new Transform( "", kUppercaseAll, "." ),
|
|
157
|
+
new Transform( "\xc2\xa0", kIdentity, "" ),
|
|
158
|
+
new Transform( " ", kIdentity, "," ),
|
|
159
|
+
new Transform( "", kUppercaseFirst, "=\"" ),
|
|
160
|
+
new Transform( "", kUppercaseAll, "=\"" ),
|
|
161
|
+
new Transform( "", kIdentity, "ous " ),
|
|
162
|
+
new Transform( "", kUppercaseAll, ", " ),
|
|
163
|
+
new Transform( "", kUppercaseFirst, "='" ),
|
|
164
|
+
new Transform( " ", kUppercaseFirst, "," ),
|
|
165
|
+
new Transform( " ", kUppercaseAll, "=\"" ),
|
|
166
|
+
new Transform( " ", kUppercaseAll, ", " ),
|
|
167
|
+
new Transform( "", kUppercaseAll, "," ),
|
|
168
|
+
new Transform( "", kUppercaseAll, "(" ),
|
|
169
|
+
new Transform( "", kUppercaseAll, ". " ),
|
|
170
|
+
new Transform( " ", kUppercaseAll, "." ),
|
|
171
|
+
new Transform( "", kUppercaseAll, "='" ),
|
|
172
|
+
new Transform( " ", kUppercaseAll, ". " ),
|
|
173
|
+
new Transform( " ", kUppercaseFirst, "=\"" ),
|
|
174
|
+
new Transform( " ", kUppercaseAll, "='" ),
|
|
175
|
+
new Transform( " ", kUppercaseFirst, "='" )
|
|
176
|
+
];
|
|
177
|
+
|
|
178
|
+
exports.kTransforms = kTransforms;
|
|
179
|
+
exports.kNumTransforms = kTransforms.length;
|
|
180
|
+
|
|
181
|
+
function ToUpperCase(p, i) {
|
|
182
|
+
if (p[i] < 0xc0) {
|
|
183
|
+
if (p[i] >= 97 && p[i] <= 122) {
|
|
184
|
+
p[i] ^= 32;
|
|
185
|
+
}
|
|
186
|
+
return 1;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* An overly simplified uppercasing model for utf-8. */
|
|
190
|
+
if (p[i] < 0xe0) {
|
|
191
|
+
p[i + 1] ^= 32;
|
|
192
|
+
return 2;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* An arbitrary transform for three byte characters. */
|
|
196
|
+
p[i + 2] ^= 5;
|
|
197
|
+
return 3;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
|
|
201
|
+
var prefix = kTransforms[transform].prefix;
|
|
202
|
+
var suffix = kTransforms[transform].suffix;
|
|
203
|
+
var t = kTransforms[transform].transform;
|
|
204
|
+
var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
|
|
205
|
+
var i = 0;
|
|
206
|
+
var start_idx = idx;
|
|
207
|
+
var uppercase;
|
|
208
|
+
|
|
209
|
+
if (skip > len) {
|
|
210
|
+
skip = len;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var prefix_pos = 0;
|
|
214
|
+
while (prefix_pos < prefix.length) {
|
|
215
|
+
dst[idx++] = prefix[prefix_pos++];
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
word += skip;
|
|
219
|
+
len -= skip;
|
|
220
|
+
|
|
221
|
+
if (t <= kOmitLast9) {
|
|
222
|
+
len -= t;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
for (i = 0; i < len; i++) {
|
|
226
|
+
dst[idx++] = BrotliDictionary.dictionary[word + i];
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
uppercase = idx - len;
|
|
230
|
+
|
|
231
|
+
if (t === kUppercaseFirst) {
|
|
232
|
+
ToUpperCase(dst, uppercase);
|
|
233
|
+
} else if (t === kUppercaseAll) {
|
|
234
|
+
while (len > 0) {
|
|
235
|
+
var step = ToUpperCase(dst, uppercase);
|
|
236
|
+
uppercase += step;
|
|
237
|
+
len -= step;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
var suffix_pos = 0;
|
|
242
|
+
while (suffix_pos < suffix.length) {
|
|
243
|
+
dst[idx++] = suffix[suffix_pos++];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return idx - start_idx;
|
|
247
|
+
}
|