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.
Files changed (540) hide show
  1. package/.eslintrc.json +30 -0
  2. package/CHANGELOG.md +13 -0
  3. package/README.md +275 -0
  4. package/UA_Styles_Chromium.md +93 -0
  5. package/_ext/woff2_conversion/brotli-decode.d.ts +139 -0
  6. package/_ext/woff2_conversion/brotli-encode.d.ts +129 -0
  7. package/_ext/woff2_conversion/brotli-port.d.ts +12 -0
  8. package/_ext/woff2_conversion/brotli-shared-dictionary.d.ts +25 -0
  9. package/_ext/woff2_conversion/brotli-types.d.ts +15 -0
  10. package/_ext/woff2_conversion/woff2-common.d.ts +37 -0
  11. package/_ext/woff2_conversion/woff2-decode.d.ts +32 -0
  12. package/_ext/woff2_conversion/woff2-encode.d.ts +31 -0
  13. package/_ext/woff2_conversion/woff2-output.d.ts +39 -0
  14. package/_ext/woff2_original_cpp/brotli/brotli.c +1559 -0
  15. package/_ext/woff2_original_cpp/brotli/brotli.md +116 -0
  16. package/_ext/woff2_original_cpp/brotli/decode.h +409 -0
  17. package/_ext/woff2_original_cpp/brotli/encode.h +505 -0
  18. package/_ext/woff2_original_cpp/brotli/port.h +302 -0
  19. package/_ext/woff2_original_cpp/brotli/shared_dictionary.h +100 -0
  20. package/_ext/woff2_original_cpp/brotli/types.h +83 -0
  21. package/_ext/woff2_original_cpp/cmake/FindBrotliDec.cmake +35 -0
  22. package/_ext/woff2_original_cpp/cmake/FindBrotliEnc.cmake +35 -0
  23. package/_ext/woff2_original_cpp/include/woff2/decode.h +36 -0
  24. package/_ext/woff2_original_cpp/include/woff2/encode.h +43 -0
  25. package/_ext/woff2_original_cpp/include/woff2/output.h +86 -0
  26. package/_ext/woff2_original_cpp/src/buffer.h +164 -0
  27. package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer.cc +13 -0
  28. package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer_new_entry.cc +12 -0
  29. package/_ext/woff2_original_cpp/src/file.h +30 -0
  30. package/_ext/woff2_original_cpp/src/font.cc +400 -0
  31. package/_ext/woff2_original_cpp/src/font.h +105 -0
  32. package/_ext/woff2_original_cpp/src/glyph.cc +383 -0
  33. package/_ext/woff2_original_cpp/src/glyph.h +71 -0
  34. package/_ext/woff2_original_cpp/src/normalize.cc +314 -0
  35. package/_ext/woff2_original_cpp/src/normalize.h +39 -0
  36. package/_ext/woff2_original_cpp/src/port.h +66 -0
  37. package/_ext/woff2_original_cpp/src/round.h +27 -0
  38. package/_ext/woff2_original_cpp/src/store_bytes.h +55 -0
  39. package/_ext/woff2_original_cpp/src/table_tags.cc +82 -0
  40. package/_ext/woff2_original_cpp/src/table_tags.h +30 -0
  41. package/_ext/woff2_original_cpp/src/transform.cc +430 -0
  42. package/_ext/woff2_original_cpp/src/transform.h +26 -0
  43. package/_ext/woff2_original_cpp/src/variable_length.cc +129 -0
  44. package/_ext/woff2_original_cpp/src/variable_length.h +30 -0
  45. package/_ext/woff2_original_cpp/src/woff2_common.cc +50 -0
  46. package/_ext/woff2_original_cpp/src/woff2_common.h +64 -0
  47. package/_ext/woff2_original_cpp/src/woff2_compress.cc +43 -0
  48. package/_ext/woff2_original_cpp/src/woff2_dec.cc +1398 -0
  49. package/_ext/woff2_original_cpp/src/woff2_decompress.cc +41 -0
  50. package/_ext/woff2_original_cpp/src/woff2_enc.cc +458 -0
  51. package/_ext/woff2_original_cpp/src/woff2_info.cc +142 -0
  52. package/_ext/woff2_original_cpp/src/woff2_out.cc +63 -0
  53. package/assets/fonts/ttf/arimo/Arimo-Bold.ttf +0 -0
  54. package/assets/fonts/ttf/arimo/Arimo-BoldItalic.ttf +0 -0
  55. package/assets/fonts/ttf/arimo/Arimo-Italic.ttf +0 -0
  56. package/assets/fonts/ttf/arimo/Arimo-Regular.ttf +0 -0
  57. package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Black.ttf +0 -0
  58. package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Bold.ttf +0 -0
  59. package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Regular.ttf +0 -0
  60. package/assets/fonts/ttf/dejavu/DejaVuSans.ttf +0 -0
  61. package/assets/fonts/ttf/firecode/FiraCode-Bold.ttf +0 -0
  62. package/assets/fonts/ttf/firecode/FiraCode-Light.ttf +0 -0
  63. package/assets/fonts/ttf/firecode/FiraCode-Medium.ttf +0 -0
  64. package/assets/fonts/ttf/firecode/FiraCode-Regular.ttf +0 -0
  65. package/assets/fonts/ttf/firecode/FiraCode-SemiBold.ttf +0 -0
  66. package/assets/fonts/ttf/notoemoji/NotoEmoji-Bold.ttf +0 -0
  67. package/assets/fonts/ttf/notoemoji/NotoEmoji-Light.ttf +0 -0
  68. package/assets/fonts/ttf/notoemoji/NotoEmoji-Medium.ttf +0 -0
  69. package/assets/fonts/ttf/notoemoji/NotoEmoji-Regular.ttf +0 -0
  70. package/assets/fonts/ttf/notoemoji/NotoEmoji-SemiBold.ttf +0 -0
  71. package/assets/fonts/ttf/notosans/NotoSans-Regular.ttf +0 -0
  72. package/assets/fonts/ttf/roboto/Roboto-Bold.ttf +0 -0
  73. package/assets/fonts/ttf/roboto/Roboto-BoldItalic.ttf +0 -0
  74. package/assets/fonts/ttf/roboto/Roboto-Italic.ttf +0 -0
  75. package/assets/fonts/ttf/roboto/Roboto-Regular.ttf +0 -0
  76. package/assets/fonts/ttf/stixtwomath/STIXTwoMath-Regular.ttf +0 -0
  77. package/assets/fonts/ttf/tinos/Tinos-Bold.ttf +0 -0
  78. package/assets/fonts/ttf/tinos/Tinos-BoldItalic.ttf +0 -0
  79. package/assets/fonts/ttf/tinos/Tinos-Italic.ttf +0 -0
  80. package/assets/fonts/ttf/tinos/Tinos-Regular.ttf +0 -0
  81. package/assets/fonts/woff/lato/lato-latin-400-italic.woff +0 -0
  82. package/assets/fonts/woff/lato/lato-latin-400-normal.woff +0 -0
  83. package/assets/fonts/woff/lato/lato-latin-700-italic.woff +0 -0
  84. package/assets/fonts/woff/lato/lato-latin-700-normal.woff +0 -0
  85. package/assets/fonts/woff2/caveat/Caveat-Bold.woff2 +0 -0
  86. package/assets/fonts/woff2/caveat/Caveat-Regular.woff2 +0 -0
  87. package/assets/fonts/woff2/lato/lato-latin-400-italic.woff2 +0 -0
  88. package/assets/fonts/woff2/lato/lato-latin-400-normal.woff2 +0 -0
  89. package/assets/fonts/woff2/lato/lato-latin-700-italic.woff2 +0 -0
  90. package/assets/fonts/woff2/lato/lato-latin-700-normal.woff2 +0 -0
  91. package/docs/AGENTS.md +288 -0
  92. package/docs/BACKGROUND-REPEAT-IMPLEMENTATION.md +127 -0
  93. package/docs/BACKGROUND-REPEAT-REFERENCE.md +127 -0
  94. package/docs/BACKGROUND-REPEAT-SPACE-ROUND.md +164 -0
  95. package/docs/css-properties-support.md +256 -0
  96. package/docs/src_modules_table.md +172 -0
  97. package/docs/text-overlap-fix.md +85 -0
  98. package/docs/text-overlap-investigation.md +27 -0
  99. package/eslint.config.js +36 -0
  100. package/glyph_measure.htm +1458 -0
  101. package/package.json +50 -0
  102. package/playground/browser-entry.ts +2 -0
  103. package/playground/exports/background-text-debug.pdf +0 -0
  104. package/playground/public/app.js +875 -0
  105. package/playground/public/assets/1.webp +0 -0
  106. package/playground/public/examples/accents-test.html +24 -0
  107. package/playground/public/examples/advanced-selectors-demo.html +118 -0
  108. package/playground/public/examples/background-advanced-showcase.html +82 -0
  109. package/playground/public/examples/background-clip-text.html +36 -0
  110. package/playground/public/examples/background-origin-showcase.html +137 -0
  111. package/playground/public/examples/background-position-showcase.html +83 -0
  112. package/playground/public/examples/background-repeat-showcase.html +83 -0
  113. package/playground/public/examples/background-repeat-space-round.html +348 -0
  114. package/playground/public/examples/background-size-showcase.html +82 -0
  115. package/playground/public/examples/background-text-debug.html +18 -0
  116. package/playground/public/examples/baseline-test.html +24 -0
  117. package/playground/public/examples/bold-showcase.html +150 -0
  118. package/playground/public/examples/bold-strike-example.html +12 -0
  119. package/playground/public/examples/border-collapse-test.html +23 -0
  120. package/playground/public/examples/centered-shadow-div.html +72 -0
  121. package/playground/public/examples/css-variables.html +50 -0
  122. package/playground/public/examples/debug-accents.html +11 -0
  123. package/playground/public/examples/debug-text-overlap.html +46 -0
  124. package/playground/public/examples/flex-gap-column.html +130 -0
  125. package/playground/public/examples/flex-gap-row.html +137 -0
  126. package/playground/public/examples/flex-padding-test.html +29 -0
  127. package/playground/public/examples/flexbox-text-test.html +193 -0
  128. package/playground/public/examples/fonts-demo.html +126 -0
  129. package/playground/public/examples/footer-example.html +4 -0
  130. package/playground/public/examples/gradient-text.html +54 -0
  131. package/playground/public/examples/grid-gap-demo.html +156 -0
  132. package/playground/public/examples/header-example.html +4 -0
  133. package/playground/public/examples/header-footer-example.html +27 -0
  134. package/playground/public/examples/image-showcase.html +33 -0
  135. package/playground/public/examples/justify-text.html +22 -0
  136. package/playground/public/examples/linear-gradient-example.html +38 -0
  137. package/playground/public/examples/lorem-span.html +14 -0
  138. package/playground/public/examples/margin-block-showcase.html +21 -0
  139. package/playground/public/examples/margin-inline-showcase.html +21 -0
  140. package/playground/public/examples/monthly-summary.html +95 -0
  141. package/playground/public/examples/multi-page-lorem.html +190 -0
  142. package/playground/public/examples/opacity-debug.html +39 -0
  143. package/playground/public/examples/opacity-example.html +70 -0
  144. package/playground/public/examples/png-image-example.html +13 -0
  145. package/playground/public/examples/red-rectangle.html +18 -0
  146. package/playground/public/examples/repro.html +24 -0
  147. package/playground/public/examples/rounded-borders-test.html +24 -0
  148. package/playground/public/examples/simple-list.html +89 -0
  149. package/playground/public/examples/simple-svg.html +37 -0
  150. package/playground/public/examples/simple-table.html +52 -0
  151. package/playground/public/examples/skew-div.html +138 -0
  152. package/playground/public/examples/skew-text.html +21 -0
  153. package/playground/public/examples/starter-report.css +51 -0
  154. package/playground/public/examples/starter-report.html +23 -0
  155. package/playground/public/examples/svg-aspect-ratio-showcase.html +116 -0
  156. package/playground/public/examples/svg-gradients-linear.html +28 -0
  157. package/playground/public/examples/svg-gradients-radial.html +29 -0
  158. package/playground/public/examples/svg-gradients-showcase.html +66 -0
  159. package/playground/public/examples/svg-image-path-test.html +43 -0
  160. package/playground/public/examples/svg-images-clipping.html +27 -0
  161. package/playground/public/examples/svg-path-gallery.html +118 -0
  162. package/playground/public/examples/svg-radial-transform-demo.html +78 -0
  163. package/playground/public/examples/svg-transform-stack.html +103 -0
  164. package/playground/public/examples/svg-transforms-demo.html +127 -0
  165. package/playground/public/examples/table-merge-test.html +34 -0
  166. package/playground/public/examples/text-decoration-showcase.html +138 -0
  167. package/playground/public/examples/text-indent-showcase.html +137 -0
  168. package/playground/public/examples/text-shadow-example.html +29 -0
  169. package/playground/public/examples/very-complex-css.html +293 -0
  170. package/playground/public/examples/webp-example.html +13 -0
  171. package/playground/public/examples/z-index-demo.html +93 -0
  172. package/playground/public/examples.json +240 -0
  173. package/playground/public/images/dice.png +0 -0
  174. package/playground/public/images/duck.jpg +0 -0
  175. package/playground/public/index.html +149 -0
  176. package/playground/public/mode.js +1 -0
  177. package/playground/public/styles.css +382 -0
  178. package/playground/public/tmp-h2-debug.html +33 -0
  179. package/playground/public/tmp-italic-debug.html +32 -0
  180. package/playground/public/vendor/codemirror/codemirror.min.css +1 -0
  181. package/playground/public/vendor/codemirror/codemirror.min.js +1 -0
  182. package/playground/public/vendor/codemirror/css.min.js +1 -0
  183. package/playground/public/vendor/codemirror/darcula.min.css +1 -0
  184. package/playground/public/vendor/codemirror/htmlmixed.min.js +1 -0
  185. package/playground/public/vendor/codemirror/javascript.min.js +1 -0
  186. package/playground/public/vendor/codemirror/xml.min.js +1 -0
  187. package/playground/public/vendor/pagyra-playground-browser.js +165966 -0
  188. package/playground/public/vendor/pagyra-playground-browser.js.map +7 -0
  189. package/playground/server.d.ts +1 -0
  190. package/playground/server.js +68 -0
  191. package/playground/server.ts +128 -0
  192. package/scripts/browser-build.ts +101 -0
  193. package/scripts/build-browser-bundle.ts +52 -0
  194. package/scripts/glyph-comparison/simulate.ts +744 -0
  195. package/scripts/playground-browser-server.ts +57 -0
  196. package/scripts/probe-roboto.ts +6 -0
  197. package/scripts/render-playground-example.ts +121 -0
  198. package/scripts/run-glyph-atlas-tuner-runner.mjs +113 -0
  199. package/scripts/run-glyph-atlas-tuner.ts +141 -0
  200. package/scripts/top-ts-files.ps1 +39 -0
  201. package/scripts/top-ts-files.sh +37 -0
  202. package/scripts/woff2_info.ps1 +132 -0
  203. package/src/browser-entry.ts +14 -0
  204. package/src/compression/adler32.ts +45 -0
  205. package/src/compression/brotli/brotli.ts +463 -0
  206. package/src/compression/brotli/index.ts +15 -0
  207. package/src/compression/brotli/transform.ts +184 -0
  208. package/src/compression/brotli/types.ts +58 -0
  209. package/src/compression/brotli/utils.ts +157 -0
  210. package/src/compression/brotli/vendor/bit_reader.js +124 -0
  211. package/src/compression/brotli/vendor/context.js +250 -0
  212. package/src/compression/brotli/vendor/decode.d.ts +2 -0
  213. package/src/compression/brotli/vendor/decode.js +938 -0
  214. package/src/compression/brotli/vendor/dictionary-data.js +9469 -0
  215. package/src/compression/brotli/vendor/dictionary.js +36 -0
  216. package/src/compression/brotli/vendor/huffman.js +123 -0
  217. package/src/compression/brotli/vendor/package.json +3 -0
  218. package/src/compression/brotli/vendor/prefix.js +60 -0
  219. package/src/compression/brotli/vendor/streams.js +31 -0
  220. package/src/compression/brotli/vendor/transform.js +247 -0
  221. package/src/compression/brotli/vendor-decode.d.ts +4 -0
  222. package/src/compression/brotli/woff2-glyf-transform.ts +623 -0
  223. package/src/compression/decompress.ts +16 -0
  224. package/src/compression/deflate.ts +295 -0
  225. package/src/compression/index.ts +4 -0
  226. package/src/compression/types.ts +26 -0
  227. package/src/compression/utils.ts +107 -0
  228. package/src/core.ts +18 -0
  229. package/src/css/apply-declarations.ts +86 -0
  230. package/src/css/background-types.ts +65 -0
  231. package/src/css/browser-defaults.ts +16 -0
  232. package/src/css/clip-path-types.ts +13 -0
  233. package/src/css/compute-style.ts +494 -0
  234. package/src/css/css-unit-resolver.ts +65 -0
  235. package/src/css/custom-properties.ts +215 -0
  236. package/src/css/enums.ts +127 -0
  237. package/src/css/font-face-parser.ts +233 -0
  238. package/src/css/font-weight.ts +65 -0
  239. package/src/css/inline-style-parser.ts +27 -0
  240. package/src/css/layout-property-resolver.ts +75 -0
  241. package/src/css/length.ts +141 -0
  242. package/src/css/line-height.ts +96 -0
  243. package/src/css/named-colors.ts +150 -0
  244. package/src/css/parsers/background-parser-extended.ts +111 -0
  245. package/src/css/parsers/background-parser.ts +456 -0
  246. package/src/css/parsers/border-block-parser.ts +26 -0
  247. package/src/css/parsers/border-inline-parser.ts +26 -0
  248. package/src/css/parsers/border-parser-extended.ts +256 -0
  249. package/src/css/parsers/border-parser.ts +175 -0
  250. package/src/css/parsers/box-shadow-parser.ts +106 -0
  251. package/src/css/parsers/clip-path-parser.ts +92 -0
  252. package/src/css/parsers/color-parser.ts +14 -0
  253. package/src/css/parsers/dimension-parser.ts +117 -0
  254. package/src/css/parsers/display-flex-parser.ts +59 -0
  255. package/src/css/parsers/flex-parser.ts +144 -0
  256. package/src/css/parsers/font-parser.ts +40 -0
  257. package/src/css/parsers/gradient-parser.ts +366 -0
  258. package/src/css/parsers/grid-parser-extended.ts +55 -0
  259. package/src/css/parsers/grid-parser.ts +218 -0
  260. package/src/css/parsers/length-parser.ts +95 -0
  261. package/src/css/parsers/list-style-parser.ts +39 -0
  262. package/src/css/parsers/margin-block-parser.ts +12 -0
  263. package/src/css/parsers/margin-inline-parser.ts +12 -0
  264. package/src/css/parsers/margin-parser.ts +30 -0
  265. package/src/css/parsers/opacity-parser.ts +32 -0
  266. package/src/css/parsers/overflow-wrap-parser.ts +38 -0
  267. package/src/css/parsers/padding-block-parser.ts +12 -0
  268. package/src/css/parsers/padding-inline-parser.ts +12 -0
  269. package/src/css/parsers/padding-parser.ts +30 -0
  270. package/src/css/parsers/position-parser.ts +75 -0
  271. package/src/css/parsers/register-parsers.ts +302 -0
  272. package/src/css/parsers/registry.ts +18 -0
  273. package/src/css/parsers/text-parser-extended.ts +144 -0
  274. package/src/css/parsers/text-parser.ts +25 -0
  275. package/src/css/parsers/text-shadow-parser.ts +94 -0
  276. package/src/css/properties/box-model.ts +82 -0
  277. package/src/css/properties/flexbox.ts +44 -0
  278. package/src/css/properties/gap.ts +14 -0
  279. package/src/css/properties/grid.ts +94 -0
  280. package/src/css/properties/layout.ts +59 -0
  281. package/src/css/properties/misc.ts +44 -0
  282. package/src/css/properties/typography.ts +71 -0
  283. package/src/css/properties/visual.ts +68 -0
  284. package/src/css/selectors/matcher.ts +219 -0
  285. package/src/css/selectors/parser.ts +163 -0
  286. package/src/css/selectors/simple-key.ts +31 -0
  287. package/src/css/selectors/specificity.ts +41 -0
  288. package/src/css/selectors/types.ts +31 -0
  289. package/src/css/shorthands/border-shorthand.ts +68 -0
  290. package/src/css/shorthands/box-shorthand.ts +33 -0
  291. package/src/css/style-inheritance.ts +50 -0
  292. package/src/css/style.ts +402 -0
  293. package/src/css/ua-defaults/base-defaults.ts +266 -0
  294. package/src/css/ua-defaults/browser-defaults.ts +134 -0
  295. package/src/css/ua-defaults/element-defaults.ts +374 -0
  296. package/src/css/ua-defaults/types.ts +43 -0
  297. package/src/css/unit-conversion.ts +24 -0
  298. package/src/css/utils.ts +108 -0
  299. package/src/css/viewport.ts +17 -0
  300. package/src/debug/audit.ts +20 -0
  301. package/src/debug/ids.ts +13 -0
  302. package/src/debug/log.js +28 -0
  303. package/src/debug/log.ts +52 -0
  304. package/src/debug/tree.ts +57 -0
  305. package/src/dom/node.ts +133 -0
  306. package/src/environment/browser-environment.ts +78 -0
  307. package/src/environment/environment.ts +35 -0
  308. package/src/environment/global.ts +13 -0
  309. package/src/environment/node-environment.browser.ts +28 -0
  310. package/src/environment/node-environment.ts +64 -0
  311. package/src/fonts/detector.ts +28 -0
  312. package/src/fonts/engines/ttf-engine.ts +28 -0
  313. package/src/fonts/engines/woff-engine.ts +38 -0
  314. package/src/fonts/engines/woff2-engine.ts +41 -0
  315. package/src/fonts/extractors/metrics-extractor.ts +362 -0
  316. package/src/fonts/font-registry-resolver.ts +132 -0
  317. package/src/fonts/index.ts +3 -0
  318. package/src/fonts/orchestrator.ts +92 -0
  319. package/src/fonts/parsers/base-parser.ts +23 -0
  320. package/src/fonts/types.ts +85 -0
  321. package/src/fonts/utils/ttf-reconstructor.ts +120 -0
  322. package/src/fonts/woff/decoder.ts +105 -0
  323. package/src/fonts/woff2/buffer.ts +106 -0
  324. package/src/fonts/woff2/decoder.ts +981 -0
  325. package/src/geometry/box.ts +48 -0
  326. package/src/geometry/matrix.ts +59 -0
  327. package/src/html/css/parse-css.ts +85 -0
  328. package/src/html/dom-converter.ts +433 -0
  329. package/src/html/image-converter.ts +200 -0
  330. package/src/html-to-pdf.ts +410 -0
  331. package/src/image/base-decoder.ts +149 -0
  332. package/src/image/image-service.ts +188 -0
  333. package/src/image/jpeg-decoder.ts +73 -0
  334. package/src/image/png-decoder.ts +550 -0
  335. package/src/image/types.ts +20 -0
  336. package/src/image/webp-decoder.ts +242 -0
  337. package/src/image/webp-huffman.ts +218 -0
  338. package/src/image/webp-riff-parser.ts +54 -0
  339. package/src/image/webp-vp8l-decoder.ts +199 -0
  340. package/src/index.ts +35 -0
  341. package/src/layout/context/float-context.ts +62 -0
  342. package/src/layout/context/layout-environment.ts +29 -0
  343. package/src/layout/debug.ts +18 -0
  344. package/src/layout/inline/bounding-box-calculator.ts +132 -0
  345. package/src/layout/inline/font-baseline-calculator.ts +76 -0
  346. package/src/layout/inline/inline-utils.ts +94 -0
  347. package/src/layout/inline/layout.ts +285 -0
  348. package/src/layout/inline/line_breaker.ts +109 -0
  349. package/src/layout/inline/measurement.ts +144 -0
  350. package/src/layout/inline/run-placer.ts +139 -0
  351. package/src/layout/inline/text-alignment.ts +70 -0
  352. package/src/layout/inline/tokenizer.ts +195 -0
  353. package/src/layout/inline/types.ts +76 -0
  354. package/src/layout/pipeline/context-factory.ts +16 -0
  355. package/src/layout/pipeline/default-engine.ts +24 -0
  356. package/src/layout/pipeline/engine.ts +59 -0
  357. package/src/layout/pipeline/layout-tree.ts +13 -0
  358. package/src/layout/pipeline/out-of-flow-manager.ts +73 -0
  359. package/src/layout/pipeline/strategy.ts +12 -0
  360. package/src/layout/pipeline/text-metrics-initializer.ts +13 -0
  361. package/src/layout/strategies/block.ts +236 -0
  362. package/src/layout/strategies/display-none.ts +14 -0
  363. package/src/layout/strategies/fallback.ts +15 -0
  364. package/src/layout/strategies/flex.ts +477 -0
  365. package/src/layout/strategies/fragmentation.ts +17 -0
  366. package/src/layout/strategies/grid.ts +247 -0
  367. package/src/layout/strategies/image.ts +342 -0
  368. package/src/layout/strategies/inline.ts +128 -0
  369. package/src/layout/strategies/table.ts +595 -0
  370. package/src/layout/table/cell_layout.ts +31 -0
  371. package/src/layout/table/diagnostics.ts +19 -0
  372. package/src/layout/text-run.ts +42 -0
  373. package/src/layout/utils/content-measurer.ts +117 -0
  374. package/src/layout/utils/display-utils.ts +24 -0
  375. package/src/layout/utils/floats.ts +98 -0
  376. package/src/layout/utils/gap-calculator.ts +167 -0
  377. package/src/layout/utils/inline-formatter.ts +31 -0
  378. package/src/layout/utils/inline-formatting.ts +9 -0
  379. package/src/layout/utils/margin.ts +140 -0
  380. package/src/layout/utils/node-math.ts +237 -0
  381. package/src/layout/utils/overflow.ts +14 -0
  382. package/src/layout/utils/sizing.ts +12 -0
  383. package/src/layout/utils/text-metrics.ts +361 -0
  384. package/src/logging/debug.ts +58 -0
  385. package/src/pdf/font/base14/widths-courier-bold.ts +159 -0
  386. package/src/pdf/font/base14/widths-courier.ts +159 -0
  387. package/src/pdf/font/base14/widths-helvetica-bold.ts +158 -0
  388. package/src/pdf/font/base14/widths-helvetica.ts +158 -0
  389. package/src/pdf/font/base14/widths-times-bold.ts +158 -0
  390. package/src/pdf/font/base14/widths-times-roman.ts +158 -0
  391. package/src/pdf/font/base14/widths-types.ts +25 -0
  392. package/src/pdf/font/base14-widths.ts +32 -0
  393. package/src/pdf/font/blur.ts +81 -0
  394. package/src/pdf/font/builtin-fonts.browser.ts +262 -0
  395. package/src/pdf/font/builtin-fonts.ts +126 -0
  396. package/src/pdf/font/composite-glyph-parser.ts +242 -0
  397. package/src/pdf/font/embedder.ts +395 -0
  398. package/src/pdf/font/font-config.ts +190 -0
  399. package/src/pdf/font/font-registry.ts +263 -0
  400. package/src/pdf/font/font-subset.ts +258 -0
  401. package/src/pdf/font/glyph-atlas-maxrects.ts +305 -0
  402. package/src/pdf/font/glyph-atlas-tuner.ts +98 -0
  403. package/src/pdf/font/glyph-atlas.ts +226 -0
  404. package/src/pdf/font/glyph-cache.ts +127 -0
  405. package/src/pdf/font/loca-reader.ts +109 -0
  406. package/src/pdf/font/managers/font-resource-manager.ts +73 -0
  407. package/src/pdf/font/managers/subset-resource-manager.ts +164 -0
  408. package/src/pdf/font/rasterizer.ts +270 -0
  409. package/src/pdf/font/resolvers/base-font-mapper.ts +77 -0
  410. package/src/pdf/font/resolvers/family-resolver.ts +33 -0
  411. package/src/pdf/font/resolvers/weight-style-applicator.ts +63 -0
  412. package/src/pdf/font/simple-glyph-parser.ts +289 -0
  413. package/src/pdf/font/to-unicode.ts +109 -0
  414. package/src/pdf/font/transformation-matrix.ts +136 -0
  415. package/src/pdf/font/ttf-cmap.ts +180 -0
  416. package/src/pdf/font/ttf-global-metrics.ts +58 -0
  417. package/src/pdf/font/ttf-glyf.ts +125 -0
  418. package/src/pdf/font/ttf-glyph-metrics.ts +43 -0
  419. package/src/pdf/font/ttf-lite.ts +269 -0
  420. package/src/pdf/font/ttf-table-parser.ts +132 -0
  421. package/src/pdf/font/ttf-table-provider.ts +61 -0
  422. package/src/pdf/font/widths.ts +79 -0
  423. package/src/pdf/font-subset/font-registry.ts +127 -0
  424. package/src/pdf/header-footer-layout.ts +153 -0
  425. package/src/pdf/header-footer-painter.ts +209 -0
  426. package/src/pdf/header-footer-renderer.ts +357 -0
  427. package/src/pdf/header-footer-tokens.ts +55 -0
  428. package/src/pdf/header-footer.ts +25 -0
  429. package/src/pdf/layout-tree-builder.ts +261 -0
  430. package/src/pdf/page-painter.ts +241 -0
  431. package/src/pdf/pagination.ts +155 -0
  432. package/src/pdf/primitives/pdf-builder.ts +378 -0
  433. package/src/pdf/primitives/pdf-bytes.ts +40 -0
  434. package/src/pdf/primitives/pdf-document.ts +108 -0
  435. package/src/pdf/primitives/pdf-reference-manager.ts +47 -0
  436. package/src/pdf/primitives/pdf-resource-registries.ts +255 -0
  437. package/src/pdf/primitives/pdf-serializers.ts +194 -0
  438. package/src/pdf/primitives/pdf-types.ts +73 -0
  439. package/src/pdf/render.ts +210 -0
  440. package/src/pdf/renderer/box-painter.ts +236 -0
  441. package/src/pdf/renderer/page-paint.ts +102 -0
  442. package/src/pdf/renderer/paint-box-shadows.ts +218 -0
  443. package/src/pdf/renderer/radius.ts +58 -0
  444. package/src/pdf/renderers/graphics-state-manager.ts +40 -0
  445. package/src/pdf/renderers/image-renderer.ts +127 -0
  446. package/src/pdf/renderers/radius-utils.ts +80 -0
  447. package/src/pdf/renderers/rectangle-renderer.ts +129 -0
  448. package/src/pdf/renderers/rounded-rect-path.ts +120 -0
  449. package/src/pdf/renderers/shape-renderer.ts +563 -0
  450. package/src/pdf/renderers/shape-utils.ts +194 -0
  451. package/src/pdf/renderers/text-decoration-renderer.ts +313 -0
  452. package/src/pdf/renderers/text-encoder.ts +41 -0
  453. package/src/pdf/renderers/text-font-resolver.ts +75 -0
  454. package/src/pdf/renderers/text-renderer-utils.ts +28 -0
  455. package/src/pdf/renderers/text-renderer.ts +391 -0
  456. package/src/pdf/renderers/text-shadow-renderer.ts +300 -0
  457. package/src/pdf/shading/gradient-service.ts +525 -0
  458. package/src/pdf/shading/index.ts +1 -0
  459. package/src/pdf/stacking/build-stacking-contexts.ts +93 -0
  460. package/src/pdf/stacking/resolve-paint-order.ts +157 -0
  461. package/src/pdf/stacking/types.ts +40 -0
  462. package/src/pdf/svg/aspect-ratio.ts +81 -0
  463. package/src/pdf/svg/coordinate-mapper.ts +81 -0
  464. package/src/pdf/svg/geometry-builder.ts +45 -0
  465. package/src/pdf/svg/render-svg.ts +296 -0
  466. package/src/pdf/svg/shape-renderer.ts +463 -0
  467. package/src/pdf/svg/style-computer.ts +246 -0
  468. package/src/pdf/transform-adapter.ts +26 -0
  469. package/src/pdf/types.ts +377 -0
  470. package/src/pdf/utils/background-layer-resolver.ts +439 -0
  471. package/src/pdf/utils/background-tiles.ts +192 -0
  472. package/src/pdf/utils/border-dashes.ts +109 -0
  473. package/src/pdf/utils/border-radius-utils.ts +86 -0
  474. package/src/pdf/utils/box-dimensions-utils.ts +47 -0
  475. package/src/pdf/utils/clip-path-resolver.ts +50 -0
  476. package/src/pdf/utils/clipping-path-builder.ts +190 -0
  477. package/src/pdf/utils/color-utils.ts +102 -0
  478. package/src/pdf/utils/coordinate-transformer.ts +30 -0
  479. package/src/pdf/utils/drop-shadow-raster.ts +233 -0
  480. package/src/pdf/utils/encoding.ts +98 -0
  481. package/src/pdf/utils/glyph-atlas-registrar.ts +13 -0
  482. package/src/pdf/utils/glyph-run-renderer.ts +129 -0
  483. package/src/pdf/utils/image-command-partitioner.ts +28 -0
  484. package/src/pdf/utils/image-matrix-builder.ts +31 -0
  485. package/src/pdf/utils/image-utils.ts +26 -0
  486. package/src/pdf/utils/list-utils.ts +194 -0
  487. package/src/pdf/utils/node-text-run-factory.ts +202 -0
  488. package/src/pdf/utils/page-resource-registrar.ts +46 -0
  489. package/src/pdf/utils/result-combiner.ts +102 -0
  490. package/src/pdf/utils/shadow-utils.ts +127 -0
  491. package/src/pdf/utils/text-alignment-resolver.ts +76 -0
  492. package/src/pdf/utils/text-decoration-utils.ts +64 -0
  493. package/src/pdf/utils/text-layout-adjuster.ts +185 -0
  494. package/src/pdf/utils/text-utils.ts +193 -0
  495. package/src/pdf/utils/transform-scope-manager.ts +69 -0
  496. package/src/render/offset.ts +170 -0
  497. package/src/shim/empty.ts +2 -0
  498. package/src/shim/fs-empty.ts +5 -0
  499. package/src/shim/url-empty.ts +7 -0
  500. package/src/shim/zlib-empty.ts +9 -0
  501. package/src/style/shorthands/index.ts +19 -0
  502. package/src/style/ua/defaults.ts +69 -0
  503. package/src/svg/index.ts +4 -0
  504. package/src/svg/parser-registry.ts +71 -0
  505. package/src/svg/parser.ts +486 -0
  506. package/src/svg/path-data.ts +515 -0
  507. package/src/svg/types.ts +194 -0
  508. package/src/text/line-breaker.ts +321 -0
  509. package/src/text/text-transform.ts +43 -0
  510. package/src/text/text.ts +33 -0
  511. package/src/transform/css-parser.ts +95 -0
  512. package/src/types/fonts.ts +62 -0
  513. package/src/types/public.ts +19 -0
  514. package/src/units/page-utils.ts +58 -0
  515. package/src/units/units.ts +50 -0
  516. package/src/utils/base64.ts +24 -0
  517. package/test-output.txt +79 -0
  518. package/tests/css/background-parser.spec.ts +14 -0
  519. package/tests/css/clip-path-parser.spec.ts +66 -0
  520. package/tests/environment/path-resolution.spec.ts +104 -0
  521. package/tests/helpers/ai-layout-diagnostics.ts +141 -0
  522. package/tests/helpers/render-utils.ts +52 -0
  523. package/tests/helpers/text-geometry.ts +56 -0
  524. package/tests/layout/custom-properties.test.ts +38 -0
  525. package/tests/layout/gap-calculator.spec.ts +196 -0
  526. package/tests/layout/inline-background-alignment.spec.ts +93 -0
  527. package/tests/layout/inline-fragments.spec.ts +26 -0
  528. package/tests/layout/run-placer-baseline.spec.ts +108 -0
  529. package/tests/pdf/alignments.spec.ts +26 -0
  530. package/tests/pdf/background-clip.spec.ts +57 -0
  531. package/tests/pdf/background-repeat-space-round.spec.ts +35 -0
  532. package/tests/pdf/background-repeat.spec.ts +137 -0
  533. package/tests/pdf/border-radius.spec.ts +151 -0
  534. package/tests/pdf/clip-path.spec.ts +92 -0
  535. package/tests/pdf/radial-gradient.spec.ts +50 -0
  536. package/tests/pdf/svg-stroke-dash.spec.ts +81 -0
  537. package/tests/pdf/text-transform-matrix.spec.ts +43 -0
  538. package/tsconfig.json +17 -0
  539. package/types/fonts.js +10 -0
  540. package/vitest.config.ts +9 -0
@@ -0,0 +1,164 @@
1
+ # Background-Repeat Space & Round Implementation
2
+
3
+ ## Challenge Completed! ✅
4
+
5
+ Successfully implemented **full support** for CSS `background-repeat: space` and `background-repeat: round` modes in the pagyra-js HTML-to-PDF converter.
6
+
7
+ ## What Was Implemented
8
+
9
+ ### 1. **Space Mode** (`background-repeat: space`)
10
+ - Tiles repeat as many times as they fit without clipping
11
+ - Even spacing is distributed between tiles
12
+ - First and last tiles touch the container edges
13
+ - Original tile dimensions are preserved
14
+
15
+ **Algorithm:**
16
+ ```typescript
17
+ - Calculate how many tiles fit: Math.floor(containerSize / tileSize)
18
+ - Calculate spacing: (containerSize - (tiles × tileSize)) / (tiles - 1)
19
+ - Position tiles with consistent spacing between them
20
+ ```
21
+
22
+ ### 2. **Round Mode** (`background-repeat: round`)
23
+ - Tiles repeat and scale to fit perfectly
24
+ - No gaps or clipping
25
+ - Tiles are stretched or shrunk as needed
26
+
27
+ **Algorithm:**
28
+ ```typescript
29
+ - Calculate tile count: Math.round(containerSize / tileSize)
30
+ - Calculate scaled size: containerSize / tileCount
31
+ - Render tiles at scaled dimensions
32
+ ```
33
+
34
+ ## Files Modified
35
+
36
+ 1. **`src/pdf/utils/background-tiles.ts`**
37
+ - Added `computeSpacedTiles()` function
38
+ - Added `computeRoundedTiles()` function
39
+ - Enhanced `computeBackgroundTileRects()` to route to appropriate algorithm
40
+ - Fixed bug in standard repeat mode bounds checking
41
+
42
+ 2. **`src/pdf/renderer/box-painter.ts`**
43
+ - Removed warning messages for space and round modes
44
+ - Now fully supports all repeat modes without warnings
45
+
46
+ 3. **`tests/pdf/background-repeat-space-round.spec.ts`** (NEW)
47
+ - Tests for space mode functionality
48
+ - Tests for round mode scaling
49
+ - Validation of tile dimensions and positioning
50
+
51
+ 4. **`playground/public/examples/background-repeat-space-round.html`** (NEW)
52
+ - Comprehensive visual showcase
53
+ - Side-by-side comparisons
54
+ - Multiple examples demonstrating different scenarios
55
+
56
+ 5. **`playground/public/examples.json`**
57
+ - Added new showcase to playground menu
58
+
59
+ ## Test Results
60
+
61
+ ✅ **All 22 tests passing** (19 existing + 3 new)
62
+ ```
63
+ ✓ background-repeat-space-round.spec.ts (3 tests)
64
+ ✓ background-repeat.spec.ts (11 tests - longhand property)
65
+ ✓ All other existing tests still passing
66
+ ```
67
+
68
+ ## Visual Examples
69
+
70
+ The new showcase HTML file demonstrates:
71
+ - **Space mode** with 60px, 40px, and 80px tiles
72
+ - **Round mode** with 70px, 45px, and 90px tiles
73
+ - Side-by-side comparison of all three modes
74
+ - Gradient patterns with space and round
75
+ - Detailed comparison table
76
+
77
+ ## Usage Examples
78
+
79
+ ### Space Mode
80
+ ```html
81
+ <div style="
82
+ background-image: url(pattern.png);
83
+ background-size: 60px 60px;
84
+ background-repeat: space;
85
+ ">
86
+ Evenly spaced tiles
87
+ </div>
88
+ ```
89
+
90
+ ### Round Mode
91
+ ```html
92
+ <div style="
93
+ background-image: url(pattern.png);
94
+ background-size: 70px 70px;
95
+ background-repeat: round;
96
+ ">
97
+ Scaled tiles, perfect fit
98
+ </div>
99
+ ```
100
+
101
+ ### With Gradients
102
+ ```css
103
+ .pattern {
104
+ background-image: linear-gradient(45deg, #3498db 25%, #2ecc71 25%);
105
+ background-size: 40px 40px;
106
+ background-repeat: space; /* or round */
107
+ }
108
+ ```
109
+
110
+ ## Technical Details
111
+
112
+ ### Space Mode Behavior
113
+ - Preserves original tile dimensions
114
+ - Adds spacing between tiles to fill container
115
+ - If only one tile fits, centers it with no repetition
116
+ - Spacing is calculated to distribute tiles evenly
117
+
118
+ ### Round Mode Behavior
119
+ - Scales tiles uniformly in both directions
120
+ - Rounds tile count to nearest integer
121
+ - No fractional tiles or gaps
122
+ - Perfect edge-to-edge coverage
123
+
124
+ ## Compatibility Matrix
125
+
126
+ | Mode | Tile Size | Edge Behavior | Scaling | Best Use Case |
127
+ |------|-----------|---------------|---------|---------------|
128
+ | `repeat` | Original | May clip | None | Seamless patterns |
129
+ | `repeat-x` | Original | Horizontal clip | None | Horizontal bands |
130
+ | `repeat-y` | Original | Vertical clip | None | Vertical strips |
131
+ | `no-repeat` | Original | No clip | None | Single positioned image |
132
+ | **`space`** | **Original** | **No clip** | **None** | **Distinct elements with spacing** |
133
+ | **`round`** | **Scaled** | **Perfect fit** | **Yes** | **Flexible tile patterns** |
134
+
135
+ ## Performance Considerations
136
+
137
+ - Both modes calculate tiles once per background layer
138
+ - Space mode: O(n) where n = number of tiles that fit
139
+ - Round mode: O(n) where n = rounded tile count
140
+ - No significant performance impact vs. standard repeat modes
141
+
142
+ ## Browser Compatibility Notes
143
+
144
+ These implementations follow the CSS3 Background specification:
145
+ - `space`: Tiles with spacing (CSS3 standard)
146
+ - `round`: Scaled tiles (CSS3 standard)
147
+ - Behavior matches modern browser implementations
148
+
149
+ ## Demo Available
150
+
151
+ Access the playground at `http://localhost:5177` and select:
152
+ - **"Background Repeat: Space & Round"** from the examples dropdown
153
+
154
+ ## Summary
155
+
156
+ The implementation is **complete and production-ready**:
157
+ - ✅ Full algorithmic implementation
158
+ - ✅ Comprehensive testing
159
+ - ✅ Visual showcase and documentation
160
+ - ✅ No warnings or deprecation notices
161
+ - ✅ Spec-compliant behavior
162
+ - ✅ Works with images and gradients
163
+
164
+ Both `space` and `round` modes are now first-class citizens in the pagyra-js background-repeat implementation!
@@ -0,0 +1,256 @@
1
+ # CSS Properties Support for Pagyra-JS PDF Output
2
+
3
+ This document lists the CSS properties supported by Pagyra-JS for static PDF generation.
4
+
5
+ ## 1. LAYOUT & BOX MODEL
6
+
7
+ | Property | Description | Is possible on PDF? | Is implemented? |
8
+ |----------|-------------|----------------------|----------------|
9
+ aspect-ratio | Sets preferred width/height ratio. | ✅ Yes | ❌ No
10
+ block-size | Logical height (block axis). | ✅ Yes | ❌ No
11
+ box-sizing | Calculates size (content-box vs border-box). | ✅ Yes | ❌ No
12
+ display | Defines rendering box type (block, inline, flex, etc.). | ✅ Yes | ✅ Yes
13
+ float | Moves element to left/right of flow. | ✅ Yes | ✅ Yes
14
+ clear | Specifies side where floating elements are not allowed. | ✅ Yes | ❌ No
15
+ height | Sets height of the element. | ✅ Yes | ✅ Yes
16
+ inline-size | Logical width (inline axis). | ✅ Yes | ❌ No
17
+ margin | Shorthand for outer spacing. | ✅ Yes | ✅ Yes
18
+ margin-block | Shorthand for logical vertical margins. | ✅ Yes | ❌ No
19
+ margin-inline | Shorthand for logical horizontal margins. | ✅ Yes | ❌ No
20
+ margin-top / right / bottom / left | Individual outer spacing. | ✅ Yes | ✅ Yes
21
+ max-height | Sets maximum height. | ✅ Yes | ✅ Yes
22
+ max-width | Sets maximum width. | ✅ Yes | ✅ Yes
23
+ min-height | Sets minimum height. | ✅ Yes | ✅ Yes
24
+ min-width | Sets minimum width. | ✅ Yes | ✅ Yes
25
+ padding | Shorthand for inner spacing. | ✅ Yes | ✅ Yes
26
+ padding-block | Shorthand for logical vertical padding. | ✅ Yes | ❌ No
27
+ padding-inline | Shorthand for logical horizontal padding. | ✅ Yes | ❌ No
28
+ padding-top / right / bottom / left | Individual inner spacing. | ✅ Yes | ✅ Yes
29
+ vertical-align | Vertical alignment of inline/table-cell boxes. | ✅ Yes | ❌ No
30
+ visibility | Hides element but reserves space. | ✅ Yes | ❌ No
31
+ width | Sets width of the element. | ✅ Yes | ✅ Yes
32
+
33
+ ## 2. FLEXBOX & GRID
34
+
35
+ | Property | Description | Is possible on PDF? | Is implemented? |
36
+ |----------|-------------|----------------------|----------------|
37
+ align-content | Aligns rows/grid tracks (cross-axis). | ✅ Yes | ✅ Yes
38
+ align-items | Aligns items inside container (cross-axis). | ✅ Yes | ✅ Yes
39
+ align-self | Aligns individual item (overrides align-items). | ✅ Yes | ✅ Yes
40
+ column-gap | Space between columns. | ✅ Yes | ✅ Yes
41
+ flex | Shorthand for grow, shrink, and basis. | ✅ Yes | ❌ No
42
+ flex-basis | Initial size of flex item. | ✅ Yes | ❌ No
43
+ flex-direction | Direction of flex items (row/column). | ✅ Yes | ✅ Yes
44
+ flex-flow | Shorthand for flex-direction and flex-wrap. | ✅ Yes | ❌ No
45
+ flex-grow | Factor for item to grow. | ✅ Yes | ❌ No
46
+ flex-shrink | Factor for item to shrink. | ✅ Yes | ❌ No
47
+ flex-wrap | Whether items wrap to next line. | ✅ Yes | ✅ Yes
48
+ gap | Shorthand for row and column gaps. | ✅ Yes | ✅ Yes
49
+ grid | Shorthand for all explicit/implicit grid properties. | ✅ Yes | ❌ No
50
+ grid-area | Assigns item to named area or start/end lines. | ✅ Yes | ❌ No
51
+ grid-auto-columns | Default size of implicit columns. | ✅ Yes | ❌ No
52
+ grid-auto-flow | Algorithm for auto-placing items. | ✅ Yes | ✅ Yes
53
+ grid-auto-rows | Default size of implicit rows. | ✅ Yes | ❌ No
54
+ grid-column | Shorthand for column start/end. | ✅ Yes | ❌ No
55
+ grid-row | Shorthand for row start/end. | ✅ Yes | ❌ No
56
+ grid-template | Shorthand for rows, columns, and areas. | ✅ Yes | ❌ No
57
+ grid-template-areas | Defines named grid areas. | ✅ Yes | ❌ No
58
+ grid-template-columns | Defines explicit column sizes. | ✅ Yes | ✅ Yes
59
+ grid-template-rows | Defines explicit row sizes. | ✅ Yes | ✅ Yes
60
+ justify-content | Aligns items along main axis. | ✅ Yes | ✅ Yes
61
+ justify-items | Aligns items inside their grid cells (inline axis). | ✅ Yes | ❌ No
62
+ justify-self | Aligns individual item inside its cell. | ✅ Yes | ❌ No
63
+ order | Controls visual order of items. | ✅ Yes | ❌ No
64
+ place-content | Shorthand for align-content and justify-content. | ✅ Yes | ❌ No
65
+ place-items | Shorthand for align-items and justify-items. | ✅ Yes | ❌ No
66
+ place-self | Shorthand for align-self and justify-self. | ✅ Yes | ❌ No
67
+ row-gap | Space between rows. | ✅ Yes | ✅ Yes
68
+
69
+ ## 3. TYPOGRAPHY & TEXT
70
+
71
+ | Property | Description | Is possible on PDF? | Is implemented? |
72
+ |----------|-------------|----------------------|----------------|
73
+ color | Foreground text color. | ✅ Yes | ✅ Yes
74
+ direction | Writing direction (LTR / RTL). | ✅ Yes | ❌ No
75
+ font | Shorthand for font style, weight, size, family. | ✅ Yes | ❌ No
76
+ font-family | Specifies typeface (Arial, Times, etc.). | ✅ Yes | ✅ Yes
77
+ font-feature-settings | Advanced OpenType features control. | ✅ Yes | ❌ No
78
+ font-kerning | Controls kerning information usage. | ✅ Yes | ❌ No
79
+ font-optical-sizing | Toggles optical sizing for variable fonts. | ✅ Yes | ❌ No
80
+ font-size | Size of the font (px, rem, pt). | ✅ Yes | ✅ Yes
81
+ font-size-adjust | Preserves aspect ratio (x-height) of font. | ✅ Yes | ❌ No
82
+ font-stretch | Selects normal, condensed, or expanded face. | ✅ Yes | ❌ No
83
+ font-style | Font style (normal, italic, oblique). | ✅ Yes | ✅ Yes
84
+ font-synthesis | Controls synthesis of missing font weights/styles. | ✅ Yes | ❌ No
85
+ font-variant | Controls small-caps and other variants. | ✅ Yes | ✅ Yes
86
+ font-weight | Thickness of characters (bold, 100-900). | ✅ Yes | ✅ Yes
87
+ hyphens | Controls hyphenation of words at line breaks. | ✅ Yes | ❌ No
88
+ letter-spacing | Spacing between characters (tracking). | ✅ Yes | ✅ Yes
89
+ line-break | Strictness of line-breaking rules. | ✅ Yes | ❌ No
90
+ line-height | Height of a line box (leading). | ✅ Yes | ✅ Yes
91
+ overflow-wrap | Specifies if browser can break lines within words. | ✅ Yes | ✅ Yes
92
+ quotes | Defines quotation marks for generated content. | ✅ Yes | ❌ No
93
+ tab-size | Width of tab character. | ✅ Yes | ❌ No
94
+ text-align | Horizontal alignment (left, center, justify). | ✅ Yes | ✅ Yes
95
+ text-align-last | Alignment of the last line of a block. | ✅ Yes | ❌ No
96
+ text-decoration | Shorthand for underline, overline, line-through. | ✅ Yes | ✅ Yes
97
+ text-decoration-color | Color of text decoration. | ✅ Yes | ✅ Yes
98
+ text-decoration-line | Type of decoration (underline, etc.). | ✅ Yes | ✅ Yes
99
+ text-decoration-style | Style of decoration (solid, wavy, dotted). | ✅ Yes | ✅ Yes
100
+ text-indent | Indentation of the first line of text. | ✅ Yes | ✅ Yes
101
+ text-justify | Justification method for text. | ✅ Yes | ❌ No
102
+ text-orientation | Orientation of text characters in a line. | ✅ Yes | ❌ No
103
+ text-overflow | How to signal clipped content (ellipsis). | ✅ Yes | ❌ No
104
+ text-shadow | Adds shadow to text. | ✅ Yes | ✅ Yes
105
+ text-transform | Controls capitalization (uppercase, lowercase). | ✅ Yes | ✅ Yes
106
+ white-space | Handling of white space and line breaks. | ✅ Yes | ❌ No
107
+ word-break | Rules for breaking lines within words. | ✅ Yes | ❌ No
108
+ word-spacing | Spacing between words. | ✅ Yes | ❌ No
109
+ writing-mode | Horizontal or vertical layout of text. | ✅ Yes | ❌ No
110
+
111
+ ## 4. BACKGROUNDS & BORDERS
112
+
113
+ | Property | Description | Is possible on PDF? | Is implemented? |
114
+ |----------|-------------|----------------------|----------------|
115
+ background | Shorthand for all background properties. | ✅ Yes | ✅ Yes
116
+ background-attachment | Whether background scrolls or is fixed. | ✅ Yes (Fixed works as static) | ❌ No
117
+ background-blend-mode | Blending mode of background layers. | ✅ Yes | ❌ No
118
+ background-clip | Painting area of the background (text clip fills glyphs). | ✅ Yes | ✅ Yes (text clipping for gradients)
119
+ background-color | Background color of element. | ✅ Yes | ✅ Yes
120
+ background-image | Background image(s). | ✅ Yes | ✅ Yes
121
+ background-origin | Positioning area of background images. | ✅ Yes | ✅ Yes
122
+ background-position | Initial position of background image. | ✅ Yes | ✅ Yes
123
+ background-repeat | How background image is repeated. | ✅ Yes | ✅ Yes (repeat / repeat-x / repeat-y; space/round treated as repeat)
124
+ background-size | Size of background image. | ✅ Yes | ✅ Yes
125
+ border | Shorthand for width, style, and color. | ✅ Yes | ✅ Yes
126
+ border-collapse | Whether table borders are separated or collapsed. | ✅ Yes | ✅ Yes
127
+ border-color | Color of the border. | ✅ Yes | ✅ Yes
128
+ border-image | Shorthand for using image as border. | ✅ Yes | ❌ No
129
+ border-radius | Rounds the corners of an element's outer border edge. | ✅ Yes | ✅ Yes
130
+ border-spacing | Distance between borders of adjacent cells. | ✅ Yes | ❌ No
131
+ border-style | Style of border (solid, dashed, dotted). | ✅ Yes | ✅ Yes
132
+ border-width | Width of border. | ✅ Yes | ✅ Yes
133
+ box-shadow | Adds shadow effects around an element's frame. | ✅ Yes | ✅ Yes
134
+ object-fit | How content (img/video) fits its container. | ✅ Yes | ✅ Yes
135
+ object-position | Alignment of content within container. | ✅ Yes | ❌ No
136
+ opacity | Transparency level (0.0 to 1.0). | ✅ Yes | ✅ Yes
137
+
138
+ ## 5. PRINT & FRAGMENTATION
139
+
140
+ | Property | Description | Is possible on PDF? | Is implemented? |
141
+ |----------|-------------|----------------------|----------------|
142
+ box-decoration-break | How box decorations render at breaks. | 📄 Print-Specific | ❌ No
143
+ break-after | Force/forbid break after element. | 📄 Print-Specific | ❌ No
144
+ break-before | Force/forbid break before element. | 📄 Print-Specific | ❌ No
145
+ break-inside | Force/forbid break inside element. | 📄 Print-Specific | ❌ No
146
+ column-count | Splits text into specific number of columns. | ✅ Yes | ❌ No
147
+ column-fill | How content fills columns (balance/auto). | ✅ Yes | ❌ No
148
+ column-span | Element spans across all columns. | ✅ Yes | ❌ No
149
+ column-rule | Line drawn between columns. | ✅ Yes | ❌ No
150
+ column-width | Ideal width of columns. | ✅ Yes | ❌ No
151
+ orphans | Min lines left at bottom of page. | 📄 Print-Specific | ❌ No
152
+ page | Named page type for @page rules. | 📄 Print-Specific | ❌ No
153
+ page-break-after | Legacy (use break-after). | 📄 Print-Specific | ❌ No
154
+ page-break-before | Legacy (use break-before). | 📄 Print-Specific | ❌ No
155
+ page-break-inside | Legacy (use break-inside). | 📄 Print-Specific | ❌ No
156
+ widows | Min lines at top of new page. | 📄 Print-Specific | ❌ No
157
+
158
+ ## 6. POSITIONING & TRANSFORMS
159
+
160
+ | Property | Description | Is possible on PDF? | Is implemented? |
161
+ |----------|-------------|----------------------|----------------|
162
+ bottom | Distance from bottom edge. | ✅ Yes | ✅ Yes
163
+ inset | Shorthand for top/right/bottom/left. | ✅ Yes | ❌ No
164
+ left | Distance from left edge. | ✅ Yes | ✅ Yes
165
+ position | Positioning method (static, relative, absolute, fixed). | ✅ Yes | ✅ Yes
166
+ right | Distance from right edge. | ✅ Yes | ✅ Yes
167
+ top | Distance from top edge. | ✅ Yes | ✅ Yes
168
+ z-index | Stack order of positioned elements. | ✅ Yes | ✅ Yes
169
+ backface-visibility | Whether back face is visible when turned. | ✅ Yes (Snapshot) | ❌ No
170
+ perspective | Distance from viewer to z=0 plane. | ✅ Yes | ❌ No
171
+ perspective-origin | Position of the viewer. | ✅ Yes | ❌ No
172
+ rotate | Individual rotation transform. | ✅ Yes | ❌ No
173
+ scale | Individual scale transform. | ✅ Yes | ❌ No
174
+ transform | 2D/3D transformations (matrix, skew, etc.). | ✅ Yes | ✅ Yes
175
+ transform-box | Layout box that transform relates to. | ✅ Yes | ❌ No
176
+ transform-origin | Origin point for transformations. | ✅ Yes | ❌ No
177
+ transform-style | Whether children preserve 3D position. | ✅ Yes | ❌ No
178
+ translate | Individual translation transform. | ✅ Yes | ❌ No
179
+
180
+ ## 7. ANIMATION & TRANSITION
181
+
182
+ | Property | Description | Is possible on PDF? | Is implemented? |
183
+ |----------|-------------|----------------------|----------------|
184
+ animation | Shorthand for animation properties. | ❌ No (Static) | ❌ No
185
+ animation-delay | Time before animation starts. | ❌ No | ❌ No
186
+ animation-direction | Forward, backward, or alternate. | ❌ No | ❌ No
187
+ animation-duration | How long animation takes. | ❌ No | ❌ No
188
+ animation-fill-mode | Styles applied before/after execution. | ❌ No | ❌ No
189
+ animation-iteration-count | Number of times to play. | ❌ No | ❌ No
190
+ animation-name | Name of @keyframes. | ❌ No | ❌ No
191
+ animation-play-state | Running or paused. | ❌ No | ❌ No
192
+ animation-timing-function | Speed curve of animation. | ❌ No | ❌ No
193
+ offset | Motion path shorthand. | ❌ No (Static) | ❌ No
194
+ transition | Shorthand for transitions. | ❌ No | ❌ No
195
+ transition-delay | Delay before transition. | ❌ No | ❌ No
196
+ transition-duration | Time transition takes. | ❌ No | ❌ No
197
+ transition-property | Properties to transition. | ❌ No | ❌ No
198
+ transition-timing-function | Speed curve of transition. | ❌ No | ❌ No
199
+ will-change | Hints to browser for optimization. | ❌ No (Irrelevant) | ❌ No
200
+
201
+ ## 8. SVG & MASKING
202
+
203
+ | Property | Description | Is possible on PDF? | Is implemented? |
204
+ |----------|-------------|----------------------|----------------|
205
+ clip-path | Clipping region (shape/SVG). | ✅ Yes | ❌ No
206
+ clip-rule | How to determine inside of shape. | ✅ Yes | ❌ No
207
+ fill | Color of SVG shape. | ✅ Yes | ❌ No
208
+ fill-opacity | Opacity of fill. | ✅ Yes | ❌ No
209
+ fill-rule | Algorithm for filling shapes. | ✅ Yes | ❌ No
210
+ filter | Graphical effects (blur, brightness). | ✅ Yes | ❌ No
211
+ mask | Shorthand for mask properties. | ✅ Yes | ❌ No
212
+ mask-clip | Area affected by mask. | ✅ Yes | ❌ No
213
+ mask-image | Image used as mask. | ✅ Yes | ❌ No
214
+ mask-mode | Alpha or luminance masking. | ✅ Yes | ❌ No
215
+ shape-outside | Shape for content to wrap around. | ✅ Yes | ❌ No
216
+ stop-color | Color of gradient stop. | ✅ Yes | ❌ No
217
+ stroke | Color of SVG stroke. | ✅ Yes | ❌ No
218
+ stroke-dasharray | Pattern of dashes/gaps. | ✅ Yes | ❌ No
219
+ stroke-linecap | Shape of endpoints of line. | ✅ Yes | ❌ No
220
+ stroke-width | Width of stroke. | ✅ Yes | ❌ No
221
+
222
+ ## 9. UI, INTERACTION & SCROLL
223
+
224
+ | Property | Description | Is possible on PDF? | Is implemented? |
225
+ |----------|-------------|----------------------|----------------|
226
+ accent-color | Color for UI controls (checkboxes). | ✅ Yes (Visual) | ❌ No
227
+ appearance | Native OS UI styling. | ✅ Yes (Static) | ❌ No
228
+ caret-color | Color of text insertion cursor. | ❌ No | ❌ No
229
+ cursor | Mouse cursor icon. | ❌ No | ❌ No
230
+ outline | Drawn line outside border (doesn't take space). | ✅ Yes | ❌ No
231
+ outline-offset | Space between border and outline. | ✅ Yes | ❌ No
232
+ overflow | Handling of content spill (scroll/hidden). | ✅ Yes | ❌ No
233
+ overscroll-behavior | Scroll chaining behavior. | ❌ No | ❌ No
234
+ pointer-events | Reaction to pointer events. | ❌ No | ❌ No
235
+ resize | User resizability. | ❌ No | ❌ No
236
+ scroll-behavior | Smooth scrolling. | ❌ No | ❌ No
237
+ scroll-margin | Scroll snap margin. | ❌ No | ❌ No
238
+ scroll-padding | Scroll snap padding. | ❌ No | ❌ No
239
+ scroll-snap-align | Snap alignment. | ❌ No | ❌ No
240
+ scroll-snap-type | Snap physics. | ❌ No | ❌ No
241
+ scrollbar-color | Color of scrollbars. | ✅ Yes (If visible) | ❌ No
242
+ scrollbar-width | Width of scrollbars. | ✅ Yes (If visible) | ❌ No
243
+ touch-action | Touch gesture handling. | ❌ No | ❌ No
244
+ user-select | Text selection control. | ❌ No | ❌ No
245
+
246
+ ## 10. LOGIC & GLOBAL
247
+
248
+ | Property | Description | Is possible on PDF? | Is implemented? |
249
+ |----------|-------------|----------------------|----------------|
250
+ all | Resets all properties. | ✅ Yes | ❌ No
251
+ contain | Performance isolation. | ✅ Yes | ❌ No
252
+ content | Generated content (::before/::after). | ✅ Yes | ❌ No
253
+ counter-increment | Increment CSS counter. | ✅ Yes | ❌ No
254
+ counter-reset | Reset CSS counter. | ✅ Yes | ❌ No
255
+ mix-blend-mode | How element blends with parent. | ✅ Yes | ❌ No
256
+ isolation | New stacking context for blending. | ✅ Yes | ❌ No
@@ -0,0 +1,172 @@
1
+ # Source Modules Table
2
+
3
+ This table lists all modules in the src folder with a brief summary of each module's purpose.
4
+
5
+ | Module Path | Summary |
6
+ |-------------|---------|
7
+ | core.ts | Core functionality and main entry point for the library, exports key types and classes for layout, styling, geometry, and PDF rendering |
8
+ | html-to-pdf.ts | Module for converting HTML content to PDF format, including parsing HTML/CSS, handling resources, and generating PDF output |
9
+ | index.ts | Main entry point/export file for the library, exports core functionality and provides a demo layout function |
10
+ | assets/fonts/ | Directory containing font assets |
11
+ | assets/images/ | Directory containing image assets |
12
+ | compression/adler32.ts | Calculates Adler-32 checksum as required by zlib format, used in WOFF 1.0 for data integrity verification |
13
+ | compression/deflate.ts | DEFLATE compression/decompression module for WOFF 1.0, implementing zlib format with header and Adler-32 checksum |
14
+ | compression/index.ts | Entry point for compression module exports |
15
+ | compression/types.ts | Type definitions for compression functionality |
16
+ | compression/utils.ts | Utility functions for compression operations |
17
+ | css/apply-declarations.ts | Applies CSS declarations to style accumulator, handles property parsing and shorthand expansion |
18
+ | css/background-types.ts | Type definitions for CSS background properties |
19
+ | css/browser-defaults.ts | Browser-like User Agent (UA) defaults for PDF conversion, acts as a façade re-exporting focused UA defaults modules |
20
+ | css/compute-style.ts | Computes styles for DOM elements by applying CSS rules, inline styles, and inheritance logic |
21
+ | css/css-unit-resolver.ts | Resolves CSS units to absolute values using font size context |
22
+ | css/enums.ts | Enumerations for CSS properties like display, position, float, overflow, white-space, align-items, etc. |
23
+ | css/font-face-parser.ts | Parser for CSS @font-face rules |
24
+ | css/font-weight.ts | Font weight handling and utilities |
25
+ | css/inline-style-parser.ts | Parser for inline CSS styles |
26
+ | css/layout-property-resolver.ts | Resolves CSS layout properties like grid tracks to absolute values |
27
+ | css/length.ts | CSS length unit handling and conversion utilities |
28
+ | css/line-height.ts | Line height calculation and handling utilities |
29
+ | css/named-colors.ts | Definitions for named CSS colors |
30
+ | css/style-inheritance.ts | CSS style inheritance logic |
31
+ | css/style.ts | Complete CSS style properties and ComputedStyle class implementation |
32
+ | css/unit-conversion.ts | Unit conversion utilities for CSS |
33
+ | css/utils.ts | General CSS utility functions |
34
+ | css/viewport.ts | Viewport-related CSS functionality |
35
+ | css/cascade/ | Directory for CSS cascade implementation |
36
+ | css/declarations/ | Directory for CSS declaration handling |
37
+ | css/parsers/background-parser-extended.ts | Extended parser for CSS background properties |
38
+ | css/parsers/background-parser.ts | Parser for CSS background properties |
39
+ | css/parsers/border-block-parser.ts | Parser for CSS border-block properties |
40
+ | css/parsers/border-inline-parser.ts | Parser for CSS border-inline properties |
41
+ | css/parsers/border-parser-extended.ts | Extended parser for CSS border properties |
42
+ | css/parsers/border-parser.ts | Parser for CSS border properties |
43
+ | css/parsers/box-shadow-parser.ts | Parser for CSS box-shadow properties |
44
+ | css/parsers/color-parser.ts | Parser for CSS color values |
45
+ | css/parsers/dimension-parser.ts | Parser for CSS dimension values |
46
+ | css/parsers/display-flex-parser.ts | Parser for CSS flex display properties |
47
+ | css/parsers/flex-parser.ts | Parser for CSS flex properties |
48
+ | css/parsers/font-parser.ts | Parser for CSS font properties |
49
+ | css/parsers/gradient-parser.ts | Parser for CSS gradient values |
50
+ | css/parsers/grid-parser-extended.ts | Extended parser for CSS grid properties |
51
+ | css/parsers/grid-parser.ts | Parser for CSS grid properties |
52
+ | css/parsers/length-parser.ts | Parser for CSS length values |
53
+ | css/parsers/list-style-parser.ts | Parser for CSS list-style properties |
54
+ | css/parsers/margin-block-parser.ts | Parser for CSS margin-block properties |
55
+ | css/parsers/margin-inline-parser.ts | Parser for CSS margin-inline properties |
56
+ | css/parsers/margin-parser.ts | Parser for CSS margin properties |
57
+ | css/parsers/opacity-parser.ts | Parser for CSS opacity values |
58
+ | css/parsers/overflow-wrap-parser.ts | Parser for CSS overflow-wrap properties |
59
+ | css/parsers/padding-block-parser.ts | Parser for CSS padding-block properties |
60
+ | css/parsers/padding-inline-parser.ts | Parser for CSS padding-inline properties |
61
+ | css/parsers/padding-parser.ts | Parser for CSS padding properties |
62
+ | css/parsers/position-parser.ts | Parser for CSS position properties |
63
+ | css/parsers/register-parsers.ts | Module for registering CSS parsers |
64
+ | css/parsers/registry.ts | Registry for CSS property parsers |
65
+ | css/parsers/text-parser-extended.ts | Extended parser for CSS text properties |
66
+ | css/parsers/text-parser.ts | Parser for CSS text properties |
67
+ | css/parsers/text-shadow-parser.ts | Parser for CSS text-shadow properties |
68
+ | css/properties/box-model.ts | CSS box model property handling |
69
+ | css/properties/flexbox.ts | CSS flexbox property handling |
70
+ | css/properties/grid.ts | CSS grid property handling |
71
+ | css/properties/layout.ts | CSS layout property handling |
72
+ | css/properties/misc.ts | Miscellaneous CSS property handling |
73
+ | css/properties/typography.ts | CSS typography property handling |
74
+ | css/properties/visual.ts | CSS visual property handling |
75
+ | css/selectors/matcher.ts | CSS selector matching functionality |
76
+ | css/selectors/parser.ts | CSS selector parser |
77
+ | css/selectors/simple-key.ts | Simple key implementation for selectors |
78
+ | css/selectors/specificity.ts | CSS selector specificity calculation |
79
+ | css/selectors/types.ts | Type definitions for CSS selectors |
80
+ | css/shorthands/border-shorthand.ts | CSS border shorthand property handling |
81
+ | css/shorthands/box-shorthand.ts | CSS box shorthand property handling |
82
+ | css/ua-defaults/base-defaults.ts | Base user agent default styles |
83
+ | css/ua-defaults/browser-defaults.ts | Browser-specific default styles |
84
+ | css/ua-defaults/element-defaults.ts | Element-specific default styles |
85
+ | css/ua-defaults/types.ts | Type definitions for user agent defaults |
86
+ | debug/audit.ts | Audit functionality for line runs, including text reconstruction and font face switching analysis |
87
+ | debug/ids.ts | ID management for debugging purposes |
88
+ | debug/log.js | JavaScript logging functionality for debugging |
89
+ | debug/log.ts | TypeScript logging functionality for debugging (deprecated, forwards to src/logging/debug.ts) |
90
+ | debug/tree.ts | Tree structure debugging utilities |
91
+ | dom/node.ts | LayoutNode class representing DOM nodes with computed styles, box model, and tree structure |
92
+ | fonts/detector.ts | Font format detection utility that identifies font formats from binary data |
93
+ | fonts/font-registry-resolver.ts | Adapter implementing FontResolver using FontRegistry, allowing layout system to resolve fonts during render tree building |
94
+ | fonts/index.ts | Entry point for font module exports |
95
+ | fonts/orchestrator.ts | Font handling orchestration |
96
+ | fonts/types.ts | Type definitions for font functionality including font metrics, programs, and loading |
97
+ | fonts/embedders/ | Directory for font embedding functionality |
98
+ | fonts/engines/ttf-engine.ts | TTF font engine implementation |
99
+ | fonts/engines/woff-engine.ts | WOFF font engine implementation |
100
+ | fonts/engines/woff2-engine.ts | WOFF2 font engine implementation |
101
+ | fonts/extractors/metrics-extractor.ts | Font metrics extraction utilities |
102
+ | fonts/parsers/ | Directory for font parsing functionality |
103
+ | fonts/utils/ | Directory for font utility functions |
104
+ | geometry/box.ts | Box class for geometric representations and viewport/containing block interfaces |
105
+ | geometry/matrix.ts | Matrix operations for geometric transformations |
106
+ | html/dom-converter.ts | Converts HTML DOM nodes to layout nodes, applying computed styles and handling different element types |
107
+ | html/image-converter.ts | Converts HTML image elements to layout nodes with proper sizing and resource handling |
108
+ | html/css/ | Directory for HTML-CSS integration |
109
+ | html/parse/ | Directory for HTML parsing functionality |
110
+ | image/base-decoder.ts | Base class for image decoders with common functionality |
111
+ | image/image-service.ts | Image service following SOLID principles, handles loading and decoding of various image formats |
112
+ | image/jpeg-decoder.ts | JPEG decoder that extracts metadata and intrinsic dimensions from SOF0 marker |
113
+ | image/png-decoder.ts | PNG image decoder implementation |
114
+ | image/types.ts | Type definitions for image processing |
115
+ | image/webp-decoder.ts | WebP image decoding implementation |
116
+ | image/webp-huffman.ts | WebP Huffman decoding utilities |
117
+ | image/webp-riff-parser.ts | WebP RIFF format parser |
118
+ | image/webp-vp8l-decoder.ts | WebP VP8L decoding implementation |
119
+ | layout/text-run.ts | GlyphRun interface representing sequences of glyphs for rendering with precise font information |
120
+ | layout/context/ | Directory for layout context management |
121
+ | layout/inline/ | Directory for inline layout implementation |
122
+ | layout/pipeline/engine.ts | Layout engine that orchestrates the layout process using different strategies for different node types |
123
+ | layout/pipeline/ | Directory for layout pipeline processing |
124
+ | layout/strategies/ | Directory for layout strategy implementations |
125
+ | layout/table/ | Directory for table layout implementation |
126
+ | layout/tree/ | Directory for layout tree management |
127
+ | layout/utils/ | Directory for layout utility functions |
128
+ | logging/debug.ts | Debug logging functionality |
129
+ | orchestrator/ | Directory for processing orchestration |
130
+ | pdf/header-footer-layout.ts | PDF header and footer layout |
131
+ | pdf/header-footer-painter.ts | PDF header and footer painting |
132
+ | pdf/header-footer-tokens.ts | PDF header and footer token handling |
133
+ | pdf/header-footer.ts | PDF header and footer functionality |
134
+ | pdf/layout-tree-builder.ts | PDF layout tree construction |
135
+ | pdf/page-painter.ts | PDF page painting implementation |
136
+ | pdf/pagination.ts | PDF pagination functionality |
137
+ | pdf/render.ts | Main PDF rendering implementation that creates PDF documents from layout trees |
138
+ | pdf/transform-adapter.ts | PDF transformation adapter |
139
+ | pdf/types.ts | Type definitions for PDF functionality including render boxes, text runs, and graphics |
140
+ | pdf/font/ | Directory for PDF font handling |
141
+ | pdf/font-subset/ | Directory for PDF font subsetting |
142
+ | pdf/graphics/ | Directory for PDF graphics operations |
143
+ | pdf/primitives/ | Directory for PDF primitive operations |
144
+ | pdf/renderer/ | Directory for PDF rendering implementation |
145
+ | pdf/renderers/ | Directory for PDF renderer implementations |
146
+ | pdf/shading/ | Directory for PDF shading operations |
147
+ | pdf/stacking/ | Directory for PDF stacking context |
148
+ | pdf/svg/ | Directory for PDF-SVG integration |
149
+ | pdf/utils/ | Directory for PDF utility functions |
150
+ | render/offset.ts | Functions for offsetting render tree elements and applying page vertical margins |
151
+ | render/pdf/ | Directory for PDF rendering implementation |
152
+ | render/pipeline/ | Directory for render pipeline processing |
153
+ | render/tree/ | Directory for render tree management |
154
+ | style/inheritance/ | Directory for style inheritance implementation |
155
+ | style/shorthands/ | Directory for CSS shorthand handling |
156
+ | style/ua/ | Directory for user agent style handling |
157
+ | svg/index.ts | SVG module entry point, exports parser and type definitions |
158
+ | svg/parser-registry.ts | Registry for SVG element parsers |
159
+ | svg/parser.ts | SVG parsing implementation |
160
+ | svg/path-data.ts | SVG path data handling |
161
+ | svg/types.ts | Type definitions for SVG functionality |
162
+ | svg/path/ | Directory for SVG path operations |
163
+ | svg/transform/ | Directory for SVG transformation |
164
+ | text/line-breaker.ts | Text line breaking algorithm using Knuth-Plass algorithm for optimal line breaks |
165
+ | text/text-transform.ts | Text transformation functionality for applying CSS text-transform |
166
+ | text/text.ts | Core text processing functionality |
167
+ | transform/css-parser.ts | CSS transformation parser |
168
+ | types/fonts.js | Font type definitions in JavaScript |
169
+ | types/fonts.ts | Font type definitions in TypeScript |
170
+ | types/public.ts | Public API type definitions |
171
+ | units/page-utils.ts | Page unit utilities |
172
+ | units/units.ts | Unit conversion and handling utilities for CSS units |