From 68cf5941a30460520596011829eb866b2e28de21 Mon Sep 17 00:00:00 2001 From: Lucas Cimon <925560+Lucas-C@users.noreply.github.com> Date: Mon, 17 Jun 2024 15:33:00 +0200 Subject: [PATCH] Fixed FPDF.local_context() style leak during page breaks - Fix #1204 (#1207) --- CHANGELOG.md | 10 +- fpdf/fpdf.py | 100 ++++++++++++++---- fpdf/graphics_state.py | 5 +- fpdf/html.py | 41 +++---- fpdf/text_region.py | 2 +- scripts/compare-changed-pdfs.py | 11 +- test/embed_file_all_optionals.pdf | Bin 1459 -> 1566 bytes test/embed_file_self.pdf | Bin 1492 -> 1683 bytes test/file_attachment_annotation.pdf | Bin 1664 -> 1855 bytes test/html/html_align_paragraph.pdf | Bin 1685 -> 1691 bytes test/html/html_blockquote_color.pdf | Bin 1030 -> 1032 bytes test/html/html_blockquote_indent.pdf | Bin 1349 -> 1357 bytes test/html/html_bold_italic_underline.pdf | Bin 1462 -> 1464 bytes test/html/html_custom_heading_sizes.pdf | Bin 2024 -> 2027 bytes test/html/html_custom_line_height.pdf | Bin 1011 -> 1017 bytes test/html/html_custom_pre_code_font.pdf | Bin 8068 -> 8072 bytes test/html/html_customize_ul.pdf | Bin 1298 -> 1299 bytes test/html/html_description.pdf | Bin 1160 -> 1166 bytes test/html/html_features.pdf | Bin 6243 -> 6323 bytes test/html/html_font_color_name.pdf | Bin 1393 -> 1397 bytes test/html/html_format_within_p.pdf | Bin 1432 -> 1435 bytes test/html/html_heading_color_attribute.pdf | Bin 1421 -> 1424 bytes test/html/html_heading_hebrew.pdf | Bin 8993 -> 8997 bytes test/html/html_headings_color.pdf | Bin 1371 -> 1376 bytes test/html/html_headings_line_height.pdf | Bin 2821 -> 2825 bytes test/html/html_images.pdf | Bin 2295 -> 2299 bytes test/html/html_img_not_overlapping.pdf | Bin 11198 -> 11203 bytes test/html/html_li_prefix_color.pdf | Bin 1108 -> 1113 bytes test/html/html_li_tag_indent.pdf | Bin 1076 -> 1078 bytes test/html/html_link_color.pdf | Bin 1139 -> 1141 bytes test/html/html_list_vertical_margin.pdf | Bin 2766 -> 2783 bytes test/html/html_ln_outside_p.pdf | Bin 1054 -> 1056 bytes test/html/html_long_list_entries.pdf | Bin 1040 -> 1043 bytes test/html/html_long_ol_bullets.pdf | Bin 1213 -> 1218 bytes test/html/html_measurement_units.pdf | Bin 1303 -> 1306 bytes test/html/html_ol_start_and_type.pdf | Bin 1042 -> 1045 bytes test/html/html_ol_ul_line_height.pdf | Bin 1255 -> 1261 bytes .../html/html_preserve_initial_text_color.pdf | Bin 1012 -> 1017 bytes test/html/html_superscript.pdf | Bin 1315 -> 1317 bytes test/html/html_table_honoring_align.pdf | Bin 1201 -> 1205 bytes test/html/html_table_line_separators.pdf | Bin 1254 -> 1261 bytes test/html/html_table_simple.pdf | Bin 1224 -> 1228 bytes .../html_table_th_inside_tr_issue_137.pdf | Bin 1229 -> 1233 bytes test/html/html_table_with_bgcolor.pdf | Bin 1654 -> 1657 bytes test/html/html_table_with_border.pdf | Bin 1354 -> 1359 bytes ...e_with_data_that_contains_entity_names.pdf | Bin 1162 -> 1165 bytes .../html_table_with_empty_cell_contents.pdf | Bin 1281 -> 1286 bytes ..._with_font_tags_used_to_set_text_color.pdf | Bin 1212 -> 1217 bytes test/html/html_table_with_img.pdf | Bin 14743 -> 14748 bytes ...e_with_img_without_explicit_dimensions.pdf | Bin 14743 -> 14748 bytes ...l_table_with_imgs_captions_and_colspan.pdf | Bin 15233 -> 15236 bytes .../html/html_table_with_multi_lines_text.pdf | Bin 1366 -> 1370 bytes ...th_multiline_cells_and_split_over_page.pdf | Bin 3159 -> 3183 bytes test/html/html_table_with_only_tds.pdf | Bin 1038 -> 1043 bytes test/html/html_table_with_width_and_align.pdf | Bin 1229 -> 1236 bytes test/html/html_ul_type.pdf | Bin 8837 -> 8842 bytes .../html_unorthodox_headings_hierarchy.pdf | Bin 1337 -> 1341 bytes test/html/html_whitespace_handling.pdf | Bin 1857 -> 1864 bytes test/html/issue_156.pdf | Bin 12326 -> 12330 bytes test/html/test_html.py | 20 ++-- test/hyperlinks.pdf | Bin 1543 -> 1546 bytes test/internal_links.pdf | Bin 2196 -> 2200 bytes test/link_to_other_document.pdf | Bin 1805 -> 1808 bytes test/outline/html_toc.pdf | Bin 4296 -> 4312 bytes test/outline/html_toc_2_pages.pdf | Bin 20861 -> 20920 bytes ...pdf => html_toc_with_custom_rendering.pdf} | Bin 2461 -> 2476 bytes .../html_toc_with_h1_as_2nd_heading.pdf | Bin 2838 -> 2850 bytes test/outline/test_outline_html.py | 4 +- test/requirements.txt | 1 + test/table/table_vertical_alignment.pdf | Bin 2722 -> 2723 bytes test/table/table_with_rowspan.pdf | Bin 2253 -> 2260 bytes test/table/table_with_rowspan_and_colspan.pdf | Bin 2986 -> 2991 bytes test/test_graphics_context.py | 3 - ...der_footer_and_local_context_font_size.pdf | Bin 0 -> 1546 bytes test/text/header_footer_and_use_font_face.pdf | Bin 0 -> 1577 bytes test/text/test_cell.py | 21 ++++ test/text/test_use_font_face.py | 28 +++++ 77 files changed, 177 insertions(+), 69 deletions(-) rename test/outline/{custom_HTML2FPDF.pdf => html_toc_with_custom_rendering.pdf} (72%) create mode 100644 test/text/header_footer_and_local_context_font_size.pdf create mode 100644 test/text/header_footer_and_use_font_face.pdf create mode 100644 test/text/test_use_font_face.py diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a768c95..de0f49290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,18 +24,20 @@ This can also be enabled programmatically with `warnings.simplefilter('default', * feature to identify the Unicode script of the input text and break it into fragments when different scripts are used, improving text shaping results * [`FPDF.image()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.image): now handles `keep_aspect_ratio` in combination with an enum value provided to `x` * file names are mentioned in errors when `fpdf2` fails to parse a SVG image -* * feature to adjust spacing before lists via the `HTML2FPDF.list_vertical_margin` attribute +* [`FPDF.write_html()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.write_html): spacing before lists can now be adjusted via the `HTML2FPDF.list_vertical_margin` attribute ### Fixed +* [`FPDF.local_context()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.local_context) used to leak styling during page breaks, when rendering `footer()` & `header()` * [`fpdf.drawing.DeviceCMYK`](https://py-pdf.github.io/fpdf2/fpdf/drawing.html#fpdf.drawing.DeviceCMYK) objects can now be passed to [`FPDF.set_draw_color()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.set_draw_color), [`FPDF.set_fill_color()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.set_fill_color) and [`FPDF.set_text_color()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.set_text_color) without raising a `ValueError`: [documentation](https://py-pdf.github.io/fpdf2/Text.html#text-formatting). +* [`FPDF.write_html()`](https://py-pdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.write_html): fixing rendering of `
, remove one initial nl. - ) + # nothing written yet to, remove one initial nl: + self._pre_started = False self.follows_trailing_space = False # The last write has ended with a space. self.follows_heading = False # We don't want extra space below a heading. self.href = "" @@ -464,11 +461,7 @@ def _end_paragraph(self): self.align = "" if self._paragraph: self._column.end_paragraph() - our_context = ( - self.pdf._pop_local_stack() # pylint: disable=protected-access - ) self._column.render() - self.pdf._push_local_stack(our_context) # pylint: disable=protected-access self._paragraph = None self.follows_trailing_space = True @@ -530,15 +523,12 @@ def handle_data(self, data): elif self._pre_formatted: # pre blocks # If we want to mimick the exact HTML semantics about newlines at the # beginning and end of the block, then this needs some more thought. - s_nl = data.startswith("\n") and self._pre_started + if data.startswith("\n") and self._pre_started: + if data.endswith("\n"): + data = data[1:-1] + else: + data = data[1:] self._pre_started = False - e_nl = data.endswith("\n") - if s_nl and e_nl: - data = data[1:-1] - elif s_nl: - data = data[1:] - # elif e_nl: - # data = data[:-1] self._write_data(data) else: data = _WS_SUB_PAT.sub(" ", data) @@ -650,7 +640,13 @@ def handle_starttag(self, tag, attrs): size=tag_style.size_pt or self.font_size, ) if tag == "hr": - self.pdf.add_page(same=True) + self.pdf.line( + x1=self.pdf.l_margin, + y1=self.pdf.y, + x2=self.pdf.l_margin + self.pdf.epw, + y2=self.pdf.y, + ) + self._write_paragraph("\n") if tag == "code": self.style_stack.append( FontFace( @@ -667,6 +663,7 @@ def handle_starttag(self, tag, attrs): size=tag_style.size_pt or self.font_size, ) if tag == "pre": + self._end_paragraph() self.style_stack.append( FontFace( family=self.font_family, @@ -682,8 +679,8 @@ def handle_starttag(self, tag, attrs): size=tag_style.size_pt or self.font_size, ) self._pre_formatted = True - self._new_paragraph() self._pre_started = True + self._new_paragraph() if tag == "blockquote": tag_style = self.tag_styles[tag] if tag_style.color: @@ -928,12 +925,12 @@ def handle_endtag(self, tag): self.set_font(font_face.family, font_face.size_pt) self.set_text_color(*font_face.color.colors255) if tag == "pre": - self._end_paragraph() font_face = self.style_stack.pop() self.set_font(font_face.family, font_face.size_pt) self.set_text_color(*font_face.color.colors255) self._pre_formatted = False self._pre_started = False + self._end_paragraph() if tag == "blockquote": self._end_paragraph() self.set_text_color(*self.font_color) @@ -991,10 +988,6 @@ def feed(self, data): while self._tags_stack and self._tags_stack[-1] in self.HTML_UNCLOSED_TAGS: self._tags_stack.pop() self._end_paragraph() # render the final chunk of text and clean up our local context. - self.pdf._pop_local_stack() # pylint: disable=protected-access - if self._prev_font[0]: # restore previously defined font settings - self.emphasis = self._prev_font[2] - self.set_font(self._prev_font[0], size=self._prev_font[1], set_default=True) if self._tags_stack and self.warn_on_tags_not_matching: LOGGER.warning("Missing HTML end tag for <%s>", self._tags_stack[-1]) diff --git a/fpdf/text_region.py b/fpdf/text_region.py index 4c8dc3f8d..2b1a02e0b 100644 --- a/fpdf/text_region.py +++ b/fpdf/text_region.py @@ -718,7 +718,7 @@ def render(self): _first_page_top = max(self.pdf.t_margin, self.pdf.y) self._render_page_lines(text_lines, _first_page_top, page_bottom) while text_lines: - self.pdf.add_page(same=True) + self.pdf._perform_page_break() self._cur_column = 0 self._render_page_lines(text_lines, self.pdf.y, page_bottom) diff --git a/scripts/compare-changed-pdfs.py b/scripts/compare-changed-pdfs.py index 1b165a6a5..ebd48462b 100755 --- a/scripts/compare-changed-pdfs.py +++ b/scripts/compare-changed-pdfs.py @@ -3,9 +3,9 @@ # Generate a HTML page that makes it easy to visually compare all PDF files # that are modified in the current branch, compared to the master branch. -# USAGE: ./compare-changed-pdfs.py +# USAGE: ./compare-changed-pdfs.py [test_subdir_path] -import webbrowser +import sys, webbrowser from functools import partial from http.server import HTTPServer, SimpleHTTPRequestHandler from os import makedirs, scandir @@ -30,15 +30,18 @@ def scantree_dirs(path): yield from scantree_dirs(entry.path) +target_dir = sys.argv[1] if len(sys.argv) > 1 else "test" +print(f"Processing all PDF reference files in {target_dir}") + stdout = check_output("git diff --name-status master", shell=True) changed_pdf_files = [ line[1:].strip() for line in stdout.decode("utf-8").splitlines() - if line.startswith("M\ttest/") + if line.startswith(f"M\t{target_dir}") ] TMP_DIR.mkdir(exist_ok=True) -for dir in scantree_dirs(REPO_DIR / "test"): +for dir in scantree_dirs(REPO_DIR / target_dir): (TMP_DIR / dir).mkdir(exist_ok=True) for changed_pdf_file in changed_pdf_files: command = f"git show master:{changed_pdf_file} > {TMP_DIR}/{changed_pdf_file}" diff --git a/test/embed_file_all_optionals.pdf b/test/embed_file_all_optionals.pdf index 2331560eb4cf9aabff97632bcebe61e799d87b02..7059b51b3e5459870f8b9d77eb3d06acc64cef9b 100644 GIT binary patch delta 527 zcmdnYJ&$KYB9pkWkqMW6Kw?p1Zn1)mjec-uRjPuSf#qaR7R|{Ene-G4%ng$bO_MFs zOe`&oOwCP_5>pHfEewp)(h|**k`fIkzh_ddpJeOLY{=90{STLS>}|Ia$5jzl1`37> zW-S6-@SJ0HF7)_%b={DT{;4M?=Gec_w!WtF-1TO{uDwwX=}K&qLg&q2tNDW| zx}b$sh*PHX`va{efgYuuIa}rS^juwM-BtDJ ;M vZ!a}>{)$1Q>MkQoVVj_txa#X+9y7rrrk3-pH7=u!JQtr`QVN|(+=}9 zX>Ip@T-X&o-CkT@T7$)^uEX@0U(4RLP4j15zx(*{yO*Wk3!Ka2iv3M3E&68IG1~E7 z@Rk00_WA#OZR2%O!8!Yt&mUYKETA*}LeXTa0(ZX9gBAv9s>iM+__42B{P5nj?dD(k z43FHozxfrj6r;GIk-35a2q@$!aDf>HhK80Vlcia$W6jK++)SOF%#19|jm*uAElmuJ w4J@6EU7Rc|T+CdIjqGd)s)*&Xv*Ri*Nh~U ^a}0O|SCKmY&$ delta 415 zcmbQovzdECB9pk0p*fd+Kw?p1Zn1)mjec-uRjPuCp~d71rf`MSR5K$Bixe}9q(mbl z6GKb0q-4X? z?cAi|6ScL)&KDNOT2Ew9owT6bG|jZGG|`ZmCA>gYw(|cMzYpAM9W6{#MdYrCb;vq$ zPSQG^@^+4CX+3Ain`x_W-!&5Rd8KoFw$SyPX%qXB)`x$7oV&qo%ASQYg*&}6W{M^> zw1t14C++s(_j;|%@e7{^9(nuZ+WIHCg^O;iSx~m`gI@z0yf*60Lbm1ONWF$g`01 ze>!9Ochl?Q8mBnhx6Q2P7P-hVZKtAi>Av;vwg&jGyIWIlch-Et>gl&Ohq6d9iW?Xi zC>Vf%LY@K_m| r*}&D()zQSj*}%lo&Ct@t%+ hRl}*~+I&6#e;zRHvCOnCW z4`gjfJUXYz{NH^4_r;;{N$bsl<&y4 GlEp@HL|#C| zWn7BOFImBDh;$t5y|}B|N(nOt *2s2F_(p*(+lmub$st%VnKYL U> g-}_VCrmW?rLUeW?*4wLr_I5 dmz^C~aY n7XVQjDBA!4 diff --git a/test/file_attachment_annotation.pdf b/test/file_attachment_annotation.pdf index ff5d89099ab37579a15f61cf3a772e13f64d0d09..3db222d90aaf0fb76b41e50c790e35d27b17f7c2 100644 GIT binary patch delta 354 zcmaitPfo%>6o&)R%_O*G`x3(rfsUnrw82b(Cafg5azV&Ir!q-9Qy){HZuAab#OMJ$ zg9mW$0X%@UA#v$jy}aM|zTZ>h{p97d-gJ6C=}tNFbOS-qy^#+B%G=v_y-|Bqd72dg z1vmv1_qjw7!Lk6I3ANguWrbO5)&7fOjiB@nj0V2dG6Jq(l4css7*XQ|RKCtiqv)i0 zVkAf81;kt?rMUc(72JkcCyCyPtE#P(Fk?_Ib0ZF(1)I&-?Sf4wWuGbWTt%>33w1C^ zbqA|0eLec9HEqj*-tT|{QY}5p_RgQbjxXoF%cw_3PUt#Am-ao6QD$47ZG}UBMBQ)@ a{7cNqU_ds8quHZ~iPg7l(rS&bL-GTp%5K~M delta 163 zcmdnb*TB2sE|a*4p#_(IKw?p1Zn1)mjec-uRjL9|Z1Wc;UdGJ_SS~P%8yT4@7=VC6 zo&pz`VPI%vX*78`n{}*#g^Qu7g{!%NshhL8g_*gLiHotbp__$?g|UUBiJ7UL4M7#L dTy}O`#U+VFB^5=fX Vs;>TSTmb5xDOmsj diff --git a/test/html/html_align_paragraph.pdf b/test/html/html_align_paragraph.pdf index 09ed3b81169dd9fb32ec7368224a5370ff89746d..65bb70a85fa52eeb4372205860fea6a4b5d95ca6 100644 GIT binary patch delta 955 zcmbQrJDYcd17p2~5tp4ES8+*EYGN)|#hkTMZ|BW15NLb zDs!TZj3@MgcxbGE7HlL^fJQk8psPxam(0jx!RKbE^MW-t6@8eG?O^i}hD z>+VO+tjC}KXXX3;nqlYpTKT0v53*KB|GM6|sYFntxbfZ!5s^$m_1^yrC4MKx@~EEU z4{y`&Ug4pjU;E44j4_4p{L*Y6f5|AG+}nk(7Ky!FZ7^$|!-=SZgPhlbChXGdt5?)_ znrHm*=Q``TF1iv6$_|RD3WkYiT{Kx1d+OPhr>ajXGZtA|30V2syp3a@RM`|>x6)VN zVli`IM{C)vXMr;v=dnilZAkYrh%OIW7JT`EfOOAim006{mwisInqZY3zEA06ScG ~o z9)0ZNyOeVx=gcmKJmP)pY{l;sU)3iyb?SYGIcFyqyTmM(3E0~db8N!d%~?k*qHjd^ zMIDX26DMQ-iMv-wuEX<{`}RuJc(+K_n|85h3nn;mXWWe36zVE#eEg>SRgqjNwr`J5 z-CX*&zJBTF2P#^8n@mk#&RV8!Es^d})R#MH>BQp+%HLaaoEDoZ-c;H!yXDO*-V>Sg z)+=&XE|jk0{*s`5MCJeMdgHmvg=dx(DJ|VGt5jLfUTEgRTVGZQ%k16Raxb87b>+KO zPRp-e;n#Vx7a7{IZQZ$NO7qMsh0ZneCU5((EzHDg*_YngiUE&1E}pwNIW_j}-pn_K zaop;m4N|`*1o8ZMU%sDFc+a*)n?qUZ7`2Rz6%0T?Ay0t|%rG!CGB&~xGd8rG{Fl`_ z*4fFx#Ld~#($LY+%+1Ks*xbq0)Wp%;$ *v^Kaidaa#Oe`v?C`wJ^GBma@ M;8Im}^>^a}0MqcK?*IS* delta 949 zcmbQuJC%2X17p3p8JC?MS8+*EYGN)|#hkTMZ|BW15NLb I#=oGtWc#H>1^uTdsaEg0d*JJLxeD!bLgyZFKIJv3c(l#*Lj9wYH7(x@YIami zUHb59{@z1;M;7F=m$Rj;@7=`9kt*7B$nl}=DYmHw2bR7#)Wm!CkATVSeX5}sZZwz{ z{0@4Ya6xOvyUVt@OJ`LNFL9K7QL!>Xdx*uJ?V0GZR-SzpbY0lN>{Pv#|+YtS4b9l&s^Ep<# z4Exg6tCtn!3HvJFyKwJ$u|V5J^A&-XKY5QFoij)Ik}5P@nKxOd*G5cwr+$iY*R`IM( 8y}vLY~G!;%2upYIL4Ycw?lH$g|4bv@712{EZeSFoM`cSWR={b zIlZFM#$15?MYHPmMxS+w#Vn_oLr+!SU-18Q?OFAo6P`s(Tj<02{=VaSI{^z##m&bV z>lrmo6%0T?Ay0t|%rG!8H8;T!Gcz-soX>0><7Vz`W?^7#=;Y$);%sST;$q@z;$~oJ mVQJ{(X71=_YG*@GMJ&YsiA5z9MX70A=0-+bs;aL3Zd?G1Fke6b delta 287 zcmeC+Xye%6$XIX0WoO4#TvC*pn9Ef$C$x7rSF?kNOZEOFuiU(Mb}84*61a9B_{-S5 zn{oEhP=opUY^F=3B+kvb_=0QMtwh~-O}CvLGn3j}wrmP_oA~KN&Weo_7?-x3Zwl|w zZ09n1ccX>7 |*R>YU*fi;^b=KY-DL>V&Q1u lWMJlMWa;Q=XG2g$EX4PTMI{wQscBs1Mh0A}s;>TSTmUNiWLy9M diff --git a/test/html/html_blockquote_indent.pdf b/test/html/html_blockquote_indent.pdf index 45099424b0f016c0f37a90a8abf9797f54a7756c..c63968eb9d2f3277633a7e7928968d2af7901bc7 100644 GIT binary patch delta 616 zcmX@gb(U*`BV)Y W kBIM@8!SdKYDeF#-0@kkD{BKH^j^`i48CKy=~pDZ(-Bro6-(?pAkED z-cDgt$kr*>F5Gjy)EUGV&?eqD>#m^5W)@}1pA3&=)|z*|d34zNJ$pmi4(0=Xn-eF; zI{D4GI+>yIl4x7P)r*=dX8K2l*8iC4(6{!&fg($r)1f!NY8JPAHf+twbGWkGTA*av z0?U<0?kS$%yy;eaq*rWT%ndz(Jq_m+R3AmmydCc 3(!zXiu85^8R=3+y0*^iTKNSa-M+uW>)5UMomiv0}xQiQ{VzK3=AwR zEil9^Elek`WwDNRH8F5Aa& M z?{L4Pe{cW4gWtD5dc3YSJVtlsqs?7vd$TX_I $ zn)wU%dM`14DzuP?-EY=i!7ZCuge8A6Jest|d}hvvkG)@I9n9}CBrLzVK~ryW%9>Y! z4Guq ZgqG2lm5?qX@1v=Z}w(h=6Xg=Lj?m6P{>o@0y7K@EG!K$#4OFtCvRo3 zj&(9LHg~i%GIDV;H!(CZwls8eF*k9wa5OSDaJ4WnFtoEFs3I1UdJ>CDDvDCmxC{-9 MEx1%wUH#p-05Bl}DF6Tf diff --git a/test/html/html_bold_italic_underline.pdf b/test/html/html_bold_italic_underline.pdf index 7a705e4a117eb7498450120574aa6396ac57f480..a4968f5b852d7ee4a3299fc8cea441ea37f5269a 100644 GIT binary patch delta 386 zcmdnSy@Pv$BV)ZKmz^C~aY<2XVlG$3oYKD2d`$)-F5mxl6}EG)-@AqN&a4NAWIgK{ z7OG5OV> n-N? zGnuJk;}gekdCtR-&&MsPD8ngwl9%|p!#CQ*7YX>ET5j`a^DD+POlgJ&3I-sckf*=} zW*8Wl8CYV7nH!j6h*@9}vothBS7&HoWHDKW)i%})Xo#t+vx}jHtE-udnWK}ri?gMX piJ6 JcjE#88V`Xn diff --git a/test/html/html_custom_heading_sizes.pdf b/test/html/html_custom_heading_sizes.pdf index a4ae2c5209a2f753b05d4822980262913fec090d..298a62dc74cc2934140bd390053c7f1b1a47f7e4 100644 GIT binary patch delta 461 zcmaFC|C)b8AY;8Tmz^C~aY<2XVlG$3oYD*XxtI)j*gov_|Jb|h$`aq(ceFGfm0b`Q zI8uLmZu9zl(Sy=KQW`A#;+>fK`f9W)cIF;UJOAK8XMp~VQ1hLfYh`b4cJizhykZ>X zVA^nN_WJt)|5C%gmenu1%E=zL*lt!+;YyL*`3rR>AN2G3;+$@$wtAz3$xIuO;zoYq zBMC>+T6SIUNHI8>5;V~+Io9<5%!_*&zY3=A*!-DsDNDVPfr0@DDC8+{ff)t{W`>p+ zV&(>Bm}2JU7-E(NhUj9321Xd_3=K_9!0ODAEH*T xtt7nSReegJ1SYa(sTB hHz{ E01GOKIsgCw diff --git a/test/html/html_custom_line_height.pdf b/test/html/html_custom_line_height.pdf index 916327fe7e528f343727ba15cc2ff4953696aa08..54a126a782f1da6e0182bf2f6cc784dc2c2a2719 100644 GIT binary patch delta 211 zcmey&{*!%!BO{~bWG6-~)`wawoKlnX8RfN}u(UAy_?|3dSeDp!jQO>+F}L?8*@nzn znykwLk6Noen^LVlftz9T!&_{dw=mW*YMB`*7=VC6o&pz`VPIftYKb9cW@0uuhS@sC z(8a*b*wob7#lq0V!r0W%&Ct-u(aqG!&C$%<(8$=#&W50hSS~v|uHur!qLPZD)HE)0 N19L7_RabvEE&!U>IRgLy delta 205 zcmey#{+WG)BO{~nWG6-~W=2lQ$%TyaYF8PTElaUxxNPA3xbbW6%vRN(d A@Mg|s^U@>zfi_MKq&CwN_n_v+$H8q?3O3pUcz}&*s&A`an z*~G%!&D_n%%-q1-$ $HD(?^K! Svkn^wxPG@gs&n^jiptrFCwk0h7wvB7 zo3LcZg_bsl{0rVsxbA+h+S-$mbA6eHoAuxGd(LnE5F^la$bBQ 7C~R{UKr^VB0{?Zt56&->Uvi|%ndy!}&>W#>7|l6lLYpZLkx880ZfIhg4+qpgX8 z0SGAMDR6-q1_tJa#u#E2hK3komIfA+t68jLObyM b2EnS_>%*@;joDD4vjm*uB m4K2(pj7*(f?Q96Dh=s&YVo^y&QED2OrI{s{s;aBM8y5f{GPK12 delta 448 zcmbQtHHmA3BV)Z0mz^C~aY<2XVlG$3oTU>S{SG_uxPG^7ou2skmT{R)Vq~Y@4aKv9 zw-zY`x`cL0e-Vmlw7sqz+ 8yjoLXLM1I{U=W zo5;)}6w #BIw!rm zpX4LtyXH^;pU>}iKHSqp-o%~Wd^Ba3&%)CdfBz@dF&KR3-MKl0={2LRv4Q~zDC8+{ zff)t{=7vTXVitx57-E(N=96n!tYb_}4IK@gT%25-U0f^;3{5R8TuhxzER0+&U5t%P goGt8Z2yML{DN-Nkvg=8keP+1(&L-tG^o;02W8Ar2qf` diff --git a/test/html/html_description.pdf b/test/html/html_description.pdf index 548a87db26d3a599108383aceac87d93af907352..516d99de750856323b55dadeb57e57caeb3847d2 100644 GIT binary patch delta 279 zcmeC+?Bm?vz{q55FxiPwEBT=o3#XLyE6FI02nmVTk+U>fmN1A)DvD$-St6z`o+>sa z<=J!1DJj#QEXmSpNm(ehWFdnX^DK6gvsZ%7Ux_$)=aN8{R2QS>O4ZJpmPb##QrtFs z_RQeRWx>HoIs8wU7|zW0e7N}}<10ox3qu715Kzcd-~uxY3`{KyFvQHvEilB)%}pnN zWVViRG&6TLGH`Xaa5gtHc6Ky3b9FScG&eLgGIBLBcXo5LvmvM=mdnnLtGFbwsHCDO RHI2){*o;e6)z#mP3jk!wQ@H>D delta 273 zcmeCu-ltzSv#Ouge8ZAp0rb;MI$yl;POkF%xY)Z _RPx6 z-77T>w=pwpn&Zj6`8?w*Mmuv;1p^RJ$W!0~GYkw&%}p@G%*>52#LUesCx2(QjxjKC zbu=(Hb}= &&YVHY*b2{hud;F^X@%#Ms{yZP=_xts}Jl 5A(MS4XL5jy_H_=_{5LU6FAaTd#+=xjoGC$D6{x< zKKOhVQB`M1j-T%#%AM7olkt2D1s#aIN8rh;EKWaKiWQZ+tvCtnJW|ya_-SsTsc9`N z m{nO}e1+idt!*s*Rnv8QYDUc~Z{A#0F z*&Qx}fO^u>KM_0so!ag7vdXi!NvVcD4?}M{_w+)e)*;=ZX%EB7UGXyZ$jj%%dS}|m z>$`U-d2tl8wZ*zyoqBo_(0oAOKRTtexUenCmDS3Q>3c0&nNL33YFw<*>)>P19j+Vb zE6>?mr5p`S4h0VqYNrJ{iz26s4cDi cx9lxGa0M{!-{ zkcsY~``~Ub1=Xwqw%W $F`J&t7g! zE7|ea8G7wLebzRGwA ioI; z!m^5de$s4n$zrwrz2*DLH{53uctUOQfC#Lu7B}s5(9+blXWZ@ou*V`biq$MSn*00` zOAHMYJx^ewUj5D|iZW L@Q=b$V!6s)O0@ z?jh(ZSY#g2XfR%(YBaYdOtvrj5R>5-PH9wFU|Wq!w`@Mo3X8)&?3agk0{GRznVAKf z%;1ecQi >3DZd=&gOx6^6ZCBf(2E0cgf#9O(#w{`OuOlb$LHco8y1hxB<`q= zZ6EIlecXpE&k(XdrVl7Rc^8cT=u$&|iaY=>Z9+3`@fO U|{Ex}1o$1~O)E$l$92uDTsai z-g4pxqs+wEDL+Ty_2;(DdS=O{&PJCLW8b{rYN_}y51sEbf5EKZ5~tKjSqZ`YM!C$j zS+IJmlrzXsb2y$2J>a2J=b{%>*xOq@G5`e*L W9}oTRnUgD#@yvK zZ?6>JQd`|)H3y3=U2^N@o`u?2v~xdy9(ugz;f}Qm3^Y5`+r=xDF(Evn31`rb7UYUb z@fG-1rlu^Y-ETS&h>yq2eW<(mplnzgGraM)j7N$Wq)8c$a13VL#0?+ SLP0B9g!Wo>OmBN46e kWNQ+LrI?%kKM$|JkIp+RJSxohID$YRk`ac6woWv}A6o5)dH?_b delta 2148 zcmaizc|6qlAIB}ZrkNZ~YYZ8TYc!bSJLWs(oH5f_#~??cpNQlr*Z8fnHE6~ap^+;` zG?Ca}j(&t(Ns&8NxsqJTN@cA?{Azdq*ll_|exJWSkLTn4dcWSs<6VuP##JnR$01Tc zh=~a#j2-IZc?uGd+n(NK%f-QC*H+-Z2|ELpmjZ3rQ>W$sC2~UyG3QmX-=t~QS^to` zzf|hmf|O>{c{s#CDTy1iIEUxO`HFJYlhh{K4viXl?T~{ZiFamG=bE^eG%fvJe`HH8 zY$)5jI9nBd=~~RMB8|OT^=0Lq9JI23flc0((XG<3ieH!^*OV>A*ASM_;T9FHnJe^` z2F%!AI&F9M6LITj-%IcB2;9X|kK}L1V?P9?9SA3d%G{>EnemyCLC`kb6p$MiqV!ZT zx-RFN^qo6{H?;2IMoE(?0f|x)Jg4pdJaDEjsFszzJQ*51H#T9NHPjZU%~?|Devvy; zUNKU~9rL17-^q=y4#69&vc@dcJDr#on iTlb9r)# zEwHH*;)qsNnV;wa@izDXyN&EnxrdXy)zE%9QOXIPg6zW~_iUS6wWDhf|GrXBiyy7} zlu#Ej6t%o)C^`t-seAwlM5e#$w{hVH2$ax=8yr8KSLP_?J^?RXzw4OXcl<)S{6Ppj z`_?2>z|5Ls-=r8#(|;&g9Tcp{G M{JWFyZYt(7n zI-^&i8__ZyCf02DC_ZTK^|yPj=Q70}+o_X{dsz_Lq{_Whfel--< (}%3rRo)^}O7oBKW*I3N >*ZlPhvI@mpvS8aYF(52 l8d z2qrd-cYZ4-r}I8)7Ke@1tm-$&FS(6S8%MR3BQiRu&Fm?gDw>-6!w@_+op*jgJIv*H z+(n)O546K(^Ulvs?4?SPU6r*ny0ISQE%o*T++)^A?Tj9*hpCNwoCshw_~3H(ENV3{ zgRw5tD5%Zj|64MN0}%glCA?H)R@;{=*-TVg2z@r+=O#ywiH>$<>kl#Mmge@lLmZhx zyzPKAW8>Y%y?ONA0C>F!s>dm&O9_@^hhZ92SSSC^?Un^q-CjkNx5{?a@qWQr_!i#Y z*P|k4?#Labj^1xyS`~e=$mKlE4LHE5h)w;ljigCj$$L5;RKIy}U@h>uCm>sN@JEQB zep(uT^_5>QYS(fdYAz@deKVxx9SqZHzyA8eod8W<*hwv32K-8i$#OdedOQoRfzf4s z@{CM}dv{56G7}%8e(Y;=GoUzPccS-EbUlJb)vR{){Z?(K4W9TZZ*6s7K~T2n)f@cX z(wDv?@{6RgI*vF)oJfed>|>y+pJ?cWBLTxil0CE6secV{4DNK1nh_NN88TYcAEgx} zB_Re3Kot-0U&xtOTgxr(;1GzaxGzujv?}C}4-SvR0YVHUfkKQzq 1!>~ko>3dUmlz y5b78J zNJ1t6=^M I|<-09zB67~uzsJOR$VAF4uy}_8VhDDrD zM(dqvi>yNV)GaC*bJZrE(vYZ*c)NRw(GkX5hIMsMA95bDE=<^6|0LpddY^*+Px-Z# zYufkyzMXl-*70lYtxW4cn^T>e?wy!afAz_hW^41Kb@eT3bN?ky{ JcjE#8)flHc delta 430 zcmey$^^t3XBV)Y@mz^C~aY<2XVlG$3oYDzr{SF%lw7jqEvYghv`(O84?V#!hZBN8K zE=`c~S<|L; *OF#1cvkd;Q ?^xe$C!QXh?pAbFW6o@eU6)qAJ^U*)esWpS zj?IQlQA~lR3I-sckf*=}W*8WlnVVpUnVTD7h*@9}voyDye22v**3j6(&A`IU)Wy-r z+{n_%z}(Hy#njQ*$jHRd+0nq#$ ua6s4wd85)=vaH*=g`nz!f0Ak>y AZU6uP diff --git a/test/html/html_format_within_p.pdf b/test/html/html_format_within_p.pdf index 29e600e68b4a3c203625b59173cf066f967d0653..eebcf3effc22d5b7eace17885c0cbdfeefa5417a 100644 GIT binary patch delta 473 zcmbQiJ)3)jBV)Z8mz^C~aY<2XVlG$3oZg9N^9~sZw7jqDvOKg<`u_u!ePOEY^SY*p zd$cmUE!0v8{q>{N=by&Pkei#rw*5K#rtgUM<0Zmd-dMU%;p~`V;U1SXdo%a$1M%6; zQHq`xOaG TJve~>WAfxyDaL%#CrecU6AQ!Tf16o&u!CB^^@Hb%iAw)azDCc z3D=6t;dggjx@mi-T|HvY-jtRPwkPhaQZO@EdTEK(tQR`kH|P4#;W>VF(I3^7W_y<~ ze1Bclpp@%!VctysoWADiv$i*0yjSF`B==&9N@0WD7Qxh_S?{h~zI!2@|8mTgZeOdk z#520xsk=XC>Mg#ccugaCvY@B5gyylH|H)taZ>TS<;Hb5H{g3 hM0w+35J*@rkJ6Dk>TY3EH<$whL$dF#;$J8CT^C7jwYtY u&Q7KVMy_tA#!haorl#h0HUw3~LZU6PsHCDOHI2*Az`}@2Rn^tsjSB!ZSh W-XEl_7=0~EwcdEQ@`pJFL6*OsEOd%0`p_ideD%RfFT01cy(UjO zQS8?G{=I?+k88hg=?2+9YcF11-hb`D%zXCp6|z;gw^bOIujrGjZ@I2LMMzmoSu@2! zcE44+bavT>_wy1ye2Ne{^j)ENWz&r#B0&>nGHMKTj()gje2FK$`PuX(clsvDoSFYw zZqk%zj@7Al8zjHQW!bW&Rex-(FuSOEelx>fNoC!mn{KBrTRk;DZ=2-R( qp7NiG+{K3IxA{x9)Y`J1c8Y^VNo+d9uWhD83=*EWYUMKJ}MC>Vf% zLY@K_m| p1{2!kg?vF%g&CgxTGjGF_)`iPVU)*T!##Jj(x12_sII3ckZp;vT#@adu^3W z8~Zv#%(V9H3)Oa(*xCB$lexu&u-?Oy&6>W>JLs0lyE8%E 60Fw zJ?0lGm;Gz@i49P7-qkAlWR|VftgV+_!*5snD5_0ay}zw=)nBs%GM}rz?f-uKxaMAN z38i0}Ejy+pEuZx?#9jZ}Ma%rnFBz9GX&4$P7=VC6o&pz`VPIfpV2LR i>j0 zHioDqbyn0acIygAGe0vseM9i9sQ%?qoYSJ&q%TPo9do-PyL5|>%mZupYmR;zp9OeI zPTr^&c&v5l#Dw*Qj5|f7s!cD(h3|^IAJnJ0c-=plYr)@38 H;hY|>J7{l3_w63Pk{@}FfcGPFvAqHG{z7!H#5Nyv#>D4 z5VN!}MTnIYC1&QN7IE3waOnqUR!!z-Rf% TSTmYU HmCcQhN z|2VrM3c}6f_Rm*pRAGq|nlJQc>2v?QQ=gTM)a04Ip51*)$2j-hqW;#uroZ)q<4qP! zIg;?pPkYKId8?#mF6FGxx@8Jd7H=*_Sw~oHQGa#(oaG4x?zd-{MCvwQV0 C@X z0t$HwTwsQQftj%phM1+HCAyfQnW;I3n7I*#d4`rI7-B|7MivmgUI>dV42_|JNMc5q z23i;cor~sZ3llTL$?ZzEu|_7Yrly9*maayQ&W5fA#x9P|&IXnSE~b_)28J#crgk<2 cRm4JKCb6ibq9`?u%fi&im`hdF)!&T^01hsE00000 delta 441 zcmZ4Lw$N=uFk`(jmz^C~aY<2XVlG$399^HYT!#!KPXF8fPPOQYckb>}yIwo+-)ni# z*``r3d-~pe^2scd1SYZA^=!UAarVsC>ARQnU$Z #u#GeMi}N9TAE;p85tRwK=gVcEVeK-h6*By0ac<~ zVqs)yh9PERYCgGJ$u`!}+{oC>$kD{u(b?I;+{n<<#lXqX$jH*f)y%-c)X>t-hM cO$`jrBcSWVm&1&+!Hd)s<9J(Gw!aK_V1$7zP}304MsPqm)SCm5$P z)mtbSfPg}t0vDKJU|?!)jv;1dW`ZGRZfuGnW?^c8A!ccUBvw+Cn3 TSTmS{fRLcMW delta 305 zcmaFBb(?EL03(xu`Q#u*9m5a?E-C3(l2IBnqG!F3oUPHaM1x^!w8V@C4dGyCiO?y0 z*K$&ruCAFlZT|X|0+U!xTqkd26lP;)n14fc+vYQjQ<>^b6bwK>Ay0t|%rG!8H8;i( zGcz;55HmM6#1OMEF~bnEG)59DDN4-DNiE{CvEkAW&a6tE{D4I{#>~ya+0ezs%*4#t z(#go#+|lE7%$XIX6WoO4#TvC*pn9Ef$XYZ8LeuoVNT)+S8+RY>VIQ`houz*leA(v15 z3R0(>1*BGr{HR*9DtCd!mCS{wl!9!GzssHX5jo~l;2p7{@%YOCCoMgeKf32^XK$1| zl&-t8WWk|=+z09$oaZz S&TBj;0dRUuBV+7yB7fz!lgtuEzugy=7N`(VeW1uRehxmdP_ zhu_`i{!0NQB<#)UC)D9|STjgndZvBr4cn=eH+oh~KFog6>TK@y)K1^qZ~hA&Z+aZ2 zc{Izv#(A#kZPPRT-v6@;v}K&dcN>0_m=fmj>Z)IAxckH3O1jtVr WRu?2>hrGX{7n4zJe35J-l z5r%n&rbZCG=13MBnp+s7Yc?`4HpdV%Hn5zW&1D SpNT?C56T;$&fHXG2g$EF`@o7L`;KrKWKi8Jin&sj9mAyKw;k*D22` delta 590 zcmeAaYZcoN$XIX4WoO4#TvC*pn9Ef$XYZ8reuo?c+TYi9-QO5@?eFcIahyU WmEwVvLtQbo=n|npeU9kjZDoR&I~Jw6CFB%OJ+q-tXedQ(tBF)_>w{zM2!*Q}8`1 zWcJtF?fvB?r%#IB>3*K@qu0fz=?Yu3fxFZ+^MaPU(kH{*+7BigE$1kzUflC%wPt>; z`zxKrhaVKEwkc_K8hjG>YqZIX|G)Cc$8~4^#IR^v?icJ0J!2v(c0YdhPy5FK1v^5z zG`B9@x9r%QuM%m~xBfS^ShG<5(_<-h6E9wYEbHKxe_j9VTk!MUaiRQzs8;(6x1L#- z{Mo2F|KOUpt2S3L*|XQ1SST2PfI^-E7nosSU~XcLA!cE0f+1#UV2UngXlQ7FA!cld zVV 5k#*!lEsGR=9cK1jSP&9F~p1wOeg1a*~YpWIGVV+8aY|GI9pg)m>N4;I=dM< pTN)dg8k@NonV8tw5L6KhNh^s(B^5=fX TSTmTsZ)B6Ab diff --git a/test/html/html_images.pdf b/test/html/html_images.pdf index 20e7f4ea64145dd5edd29c694a7acd15ffc0df06..72909f3ad0b568b287b07e9735e730660a6101c8 100644 GIT binary patch delta 244 zcmew^_*-y;10$owWJg9F-6vWh24)5foDB+7GBc9arKc@Q$jVrgp0#MgoYf27XRdfK zX}!P+(G#o;U9SWTHcw+LXA87YFaQCCJOwT=!@$7Q$Q)hF(8$OTL(JUV6hq9y!gO*R zhfS=pxsid1k&C&dshNeTtFyDYi?getv5ASRsjI82g`t_94M7#LTy}O`#U+VFB^5=f RX TSTmWR=K_>tJ delta 240 zcmew@_+4;=10$o!WJg9F%@6}K1BOCJfm0?XhS!aa0}V_~t{IyKdYlWr@ZBV&;AA+* z6D9`tF#f2`vlz?S0! ||nU=4k0`=xFNbY++_->E>kWW?^7z>SSj_P(>`4ogG(kNn%k+MNw)Rm!YMJ M5tpi}tG^o;0D93oJpcdz diff --git a/test/html/html_img_not_overlapping.pdf b/test/html/html_img_not_overlapping.pdf index d65c643d9e21644832a8079afd6a4b5da22e000e..2218bcd13b76a29682791e3e5699d03dd5be6507 100644 GIT binary patch delta 367 zcmdlNemHzXC1brQmz^C~aY<2XVlG$39MztUT!#&KSj%gVO5b+fn6tX@+6A^rx(n<* zZYv6O9lTIeC-`*Q z2mdx-<@b!>3dy%gxgk9Lo7HX6ZNKxD%Kv>Neu*nJF9l-f=Fg0$H0lkF6bwK>Ay0t| z%rG!8Gc-gOvotd|MiVnMFfljB5HmA1!w@q!LlP?~O3chjE#k7V;nEMzteR}2trF+r zW@2G#U}R+BWNK>R ||tY *` delta 342 zcmX>czAt=3C1bq-mz^C~aY<2XVlG$39Mv9ct_A}E*57j;O}(||rpoG#qM}=bzp>SE zIl2gZ`62Yg)cB}P`^AV!T>Y6MuICfnuQ{2QWa+W!dtScNuQy5DL)4S$8S~Kt8U8*i zzx&821_jA3;NDbS`(9?(^3D8nRK@;qrRJqTtpl?1H~(cks*z@3u3!KH3V8}#V1|K# znSmL)n5CJS1)7+lfr+^hhM1YDA%>W_nc-v&ZQD3=CrdL!M-xjkS2s6j3lnowa~C6X rCu3s^Q&&@C7c&<-8-glgAwiZ{R8motn#N^lU}0p;rK;-c@5TiHV_; _DYue zfDHjG^N)NtRe!EJF~(xGL)vrcG>$S}u5BN3uE~W(b8@jN{ZP)SDSmA~Rb*4E*wzHz zI)3hmru|=v1Wt0kJh07c%QxkHLV=qD=5#$j{!oj%Y~4-E&A|tw{7kJ=%S> NKb@g}S0syhnhPnU% delta 365 zcmcb~afM@pBV)Y*mz^C~aY<2XVlG$3oT(G`axobSv{cVe^3J{XMs4=|unUL$PALCq zZfaHfp|WrN@_Ex;ijGIJZZf`aaCpN!4H5S5CzTG>xGoUYVlCu9{o~iAmL~_bo0Ams z61j{!mVZ0JsM+vYYHzi?{LPCTStt9C-+t#Kx|`?b(hbE&&pDUrg}$-cUOy{x`NYth zZ p`_v)wljv=Nzy9u;W2tuX>`5e&+9E0?zk$u1fTI8|Eu= zAs}S=oB4-YHf~w+M*h%^izd+*F7fzRw6EW{S&FHiQPWVt00b2B6u7_)0|PTt0}L^9 zWAn*}n5|=+EsdNUEuD?s3>}Ru94*WYER38CTwE+1Esaba9nD?rYzV4|g@k2dQAtHn RY8schr3II&s;j>n7XVygjcWh^ diff --git a/test/html/html_li_tag_indent.pdf b/test/html/html_li_tag_indent.pdf index e7f84ff0fbe8e7e778857e9ee911ba87e8060cdc..68ed219adbd418b3e4b5a3ab29a2be18175d2c37 100644 GIT binary patch delta 336 zcmdnOv5jMc17p3p0hgT}S8+*EYGN)|#hlu6zFdb41Xv%``hT2OYJ5&5Q|%_#u7dCr zf`1$jwklN!z0Xck)(!G1n|b{Ayo37^Ux} N4`=UpCXcxHR@#x|^c(!ns#`yO$*@K30EuaLeMKjK7S612=zV ztYg$NGE^`C0fjsTE-=Huz|6=1L(JU3eDYjon`je9Lt}F{XD3Sw3o{EhQxivXOG7tT pO9MwYHzOlUOFJ8&5PlW0kkCpjDyb++P2(~*v*1!yb@g}S0svxPfVltw delta 334 zcmdnSv4vxU17p3J1(%&2S8+*EYGN)|#hltcTP`L;f!1pOkEgaurmNlbxx^K9gVVCf zUL!)IN&Vx#yc=uuv`&|Nw!8OTWVU2*cEy=#lHFS!rp%bgAMx~4k&}?1W#Fe1)+RHQ z=X+PUig$lb;qjh$#p_(kKGA~m?aHmu}QeeN T2X_XJbl8MJyz&5{pVIic-_K%+1WWR8?L5-M9d0CwdV8 diff --git a/test/html/html_link_color.pdf b/test/html/html_link_color.pdf index 751b65e0ce994e07becca89cfde07f0167b83be5..d11bf1bb2000d50c3c804a68d28677ff48738bbc 100644 GIT binary patch delta 279 zcmey&@s(r4amIQ}E;~D};*z4 Xe5Iksmu@;NvNv^=bvpX9}r{k_jwd*OxHP5lQv zO`INoo$I#j_vcg@F`+zb8xyHlkqi4=6F4VdbQLf9cIwt*@$=5i(F-T+sdk@uZgY$5 z&3`8fuR9zr58`ZpW2WNL^@Zu#R&f=s)Vvg^Z9rCj(q |xDaJ4WpHgI%vF?BU^wsbN#H8(UdF>`Y>H?(v!u(KhkA{OH7 W#G;alqSQ1l3u8krRaIAiH!cAFWnH=e delta 279 zcmey$@tI@8amIRcE;~D};*z4 Xe5IksmM`5FuaTmtV0_plt?bbDHm4kw4qNjXNZ zrpyBcwOxvj>*9_j8T!QbAMfcZ6YEe-%Q&>;nNz2qhmw-Dlub!Xl!ag ~JZCO3h1w+683gCuMPM_F&3o)HG5s00D(O1uihdz`)GH z5JSw|%wqCAX6qP3LsMr*3r8~(7YhRe3qx~DM@L5>!`R8#(!kQi&Be}!po&+( TDvDCmxGan;xl~nM{oS|#4u4qg diff --git a/test/html/html_list_vertical_margin.pdf b/test/html/html_list_vertical_margin.pdf index 00304ff24f86d2a90f2f30b2aeb3dd66421c054a..380f5f1cd83dc28c085eefffbef80a42c6cbb0b6 100644 GIT binary patch delta 1373 zcmX>ndS7%y2xGkkmz^C~aY<2XVlG$3oT(Si`ZYU N|bt^cFnr#$9L6q)nx-l=|{)BT~UaEk1{P3--@)j3ysaQx7ft1av5kD8 ScwKO|+3{jOGe~k2)tLwH24G&!12qe>lSRbi}1^@fP)Rhvg=Tc7I|s zY)uc`xJWloAh<%z)VR~IUReLtviq}NZP}-{ZN=mxUzeKfKk1`&a&nhy@GSXMHP@q) zXQ>8P?L4LRn{j2_tWd7hyp+j)OdXT2unN>)*z0%L0OIju8)E*vuW)7J+~#%fHpd+k zjitGhrl~)y&75^gp+r(Ef1msPiG7E>6;D*vi17=4_ZJG9DA18@bL^2pZI YZB`Y2uy ;7AT~KwC-b* yqQV(lN^C=-0H>34(YugQA-!a2X6mqon4z47&ZvmILw*IPc?;My$Ra{Wl^8B6b5 zwaJwgPEygUY+`a(JTplvni~3Gy?L32echo5)zzC)-pnufX>r_kibhmv>x{$QD_k%B z&^{s)=b{|4XvUstT8XP{v)+3~C(cz$yq_QSE=5sVeR7maag<)F;^kP?OC2eG|MOEr zYnUSHX7WOVWwI}8N4*)oFsSK!djvTQE~x1GANn06oFZ^1sPgmQUw*&*A1@3@$=)Mw z&Un3?=h_mHLt@((S}Zx=)hTVVN-1Ap9ykovzE$cAp0h#nS7zM&M;71v-)^|KJ^A|n zoPw %Vd}1@l_WSylQlCTn=5M)k z(n)HXr|u+6-RYYq+&Z12I?3|y_Nk#CIo}1%w1Nb}=5uVFO!XED1|Xo2r@#ef7#NsY zSYn7-S{k8?85)=yV~81B7+{E*m|^NQH#dZ+i$hp!XaN&M60 TGG~YGCYQ=4@u}=wjw-;Am$ ^xsU#Ma VR1~GAaTys|SaPYVy863u0RXlDG!*~< delta 1351 zcmcaFdQNmh2xGkomz^C~aY<2XVlG$3oT(Si`ZYU
c<<-q2d=pY$Ih5> zW}m8+D^IRyMy=5O@CjCdMdrM_cdFm#bbp+9^ofmKxH;qXaxO1n<3nQG6RV86LK>TR zr;0sfjjYJ6+7n)SWMjXrS?*>2*THYvp6$%KzI)Z`*?-xVud;Qkm)TZf^G11{z`cK! z`>rhc+dsWee#W`J9L{)yr#5qE?kVN6sf+D>^IGQE<&;SGV}Ci*zdPS?>`aP_QCRjt zCo8bzCu &nPxuIb8SjccZ%2P#b;Ee8)do} zEuFr)hS@xFW<6JGUJA(9lf#%=>W$3N0%5P;VFv-02X_93OEahKt&i^(QF$?8oxe^& z&qU_~Wrrqz*mtC` !y66+t=4`ynWyi*UP8kVqX69 z{3Go4C0ki<5>&iVEFQeUud#o9en8EeUiI9k*JmA+^wN;+5%_KdBj?3{>0d@obCDsm?EkCzeb+@&3#G(0vR- z9y7vVz6ZuRFdQb|VXmKin~A^vqOad!0|8*<`+uC4Xx#JGqHp`ut}E{*?8#Rya1OZT zG-=x8f_MYRXYQL)hv}tGxH(4V@Wl4&P3aET~?-z{F7b%|@=5r!|61v&^1&x44Tu zTq*tW(iXwzhJ81_-nGcpFPyQfec64vSqtCxS;x%!CsTN9@iE>*pXJY3df%!|tgQdh zWwI@#YR9R7qnT%(c&$D#KR+XIPknpg{56**ZQOt8XjK=xM&OoLT!!uGf!&KfhJ(Gn z!o{#sH}p_QWyrnB+YVW|9@;m5%bk-x*Zjbqk2&SDY`51E!IN|T-9N?tDtm@Gs^9aI zvbZc23=}~0 u>uh0YZ0YD~VPfXy4D_C*iK&r^sf(eDi>alnfsv7goee=1 bv5@j1v8be?C^e1C$jID?OI6j?-;E0Z>3}@F diff --git a/test/html/html_ln_outside_p.pdf b/test/html/html_ln_outside_p.pdf index 0ccbb593de65507a97caaa4a3682e42e423833c1..a552e647db4349a7c936dd203736948832253d9b 100644 GIT binary patch delta 313 zcmbQov4CTPBV)YFhr(& YRRdt6Ozxv~cVW +umq}rk&U&1@M?TxiAA9)zzqOdUdH=_M z6>q%)m%VtN`6cvk@k8ZmMsasTiOmlg>lqo%Cnqusi<&7IfPg}t0vDKJU|?opJh_wE zI>y-4#oWxq$=u1n*~P%X)X~|(#mUXU(A2=#$j!pY(bCR_po&;XI3yO8R1~GAahaQ# MaH*=g`nz!f042d}xBvhE diff --git a/test/html/html_long_list_entries.pdf b/test/html/html_long_list_entries.pdf index e82f70ca78d9e93c423052ca8c3853b594530640..dd2063ba270252c452ec70c1767aa1398c3f318d 100644 GIT binary patch delta 286 zcmbQhF_~k7BV)ZOmz^C~aY<2XVlG$3oV|U9d`yNsEWh_8oxUJpogP0)NJZm?-zQ-K zkCF=?g#J~t6gEk9W>}xkI?maCAVu=~hSD|PnLLm1*e5=Jc&o2@f{4hv5Yal9BV2Wr zi6%KqM0bjL?Mz&@M(sg*Uiy*ayL(pVuDqBK|8&Q}_)RrG0;g>h*=>|v{&dDJ?cVxO zz3AW>jB|cAtlE5$v7V99Y;qv8u&Akm0SGAMDR6-q1_oy4Mw2U K|8A+kEnz&&ma@b0;Ww zG|e@ecjWgvM)9?*?f0M7{_{STn6Rno_=eIo- siD1;yU3n^RQ2^yB(d zso889iS<`DUtz3g)HGHw00D(O1uihdz`)eP2t&-w%yM!KvvrJ%iKCIZo2j9*rGcT5 xqm!GttErKri>aHllZ%msk(ra74M7#LkZ?#WDyb++P2(~*HsDfKb@g}S0ssYwX<7gP diff --git a/test/html/html_long_ol_bullets.pdf b/test/html/html_long_ol_bullets.pdf index d8173b39358f4e7b971a4bc1a3a54fc75393b02d..a7e28d7207bf8068e909abfdf8c64650336d967b 100644 GIT binary patch delta 478 zcmdnXd5Cj^17p3R0hgT}S8+*EYGN)|#hkNO&iWlT;5qQIdj6r~g$IuKC0!3!nef1D zW&eTpwk?MRgx34-DqAS^u8;fe+LI5{zv>&?lrwHVR9 ;I1;GVH?9?X&auqiGL(G zSGL njS(4wk7b?=jSO znZ11db=wPEd#0Ba6g> QHT^YHVKTC(WIkF9s=vFzO2XZQOd_ zdr8fi-IM;zO4}*1b@F8G|EfP-E$2STdi&(fY3-Lueo9?pd*`%>wmKHwJo`yMEO<%F zBypwvYMrU&Q|l)MS^qdUJ$zF9 |x delta 473 zcmX@axtDW;17p2`DVLocS8+*EYGN)|#hkNO_WB($;5qQ|@4Q2g4HJ^AH@+6-RJk$X z7e~#D33&{PAAc>`BJMYJcU;DHwZrFM#iv!=QPp9)zx%de-aF0?Lsg0Rhk0}CI2Cyf zRNT)S*d3NzmrygG&whbiym+Yy(`Uw;%eXmp#hXIzpEth|yz4-7eK+SkwIV%@r#@Ti ze^gmA lG6 $=S);T_$XnG?8A+FCT_D{ROFRw8g{N_SwiV9%Ps$Ycl6X> z&Reo$iR(JQzfVL?{r4#JQs3!NX>WP_liMvHM zpq19E|Mk!LeUKk$=A%g=MqW&!?= H z2Ii)w7-AMCMw7K!tYchF%#19IEzL|!+}teOEG!(2%v_C~3=Lh4jZDl<&5i7A2yM YL|bA}Nkvg=8kePkF_)^UtG^o;04l4v%>V!Z diff --git a/test/html/html_measurement_units.pdf b/test/html/html_measurement_units.pdf index de98495426935332cf73f355ae083f920ede5107..21a0e5f18aa71b9fa583c2e366fb6b8eb6524860 100644 GIT binary patch delta 457 zcmbQvHH&M517p3p0hgT}S8+*EYGN)|#hj^^y!{Rv2(Ue<^)vL|JhSiq$8C$ICWN09 zcUbGF+4v=qMf~BuD}^buPR-WZ{bPRqlKWyG?g(UY-#>flaMIaEZWX5gT-x_#F8iOH zxc$N;=j8|9HymXC@wbBKWyIp5gxKyw%aWZ|o3QVyS#F-NKUl)-WPOm-(tTW;mrK|+ zgde?jM{!z#m}}^kS9}{=HfwZ8Xl-;`urNxs<=G~`%U5okwd&his~Y=WW%8!AlNWhS zE7?26hbve;b*j$G+hImCs}-BQ(t@lMg*xv@+3q@BcVnOY{x%7Pw)qy(lb-iZeR1sP z(WpQB-M>kkyB%EKarXn~#_n1P+4S`MX|eYwm90>fIINz__Qt8^<*(wC`Lpcf9XGpe zj$nGlXlG=oU;qLNc?w)$hJk^(kpYI7g`ow8n5CiV zyUXou+Q7_KE^zPDL&i@V-JTw-YCrTW*=e;2yH)-1@Pz%r67x1KtvB(i6-?vTtYgUU zI(J9mT7jTz@RnC>8{4`yR!3-WbX%}6Ott0N9>2?1Zd|qMTU%>-_uY~Sm$rIdRLR~I z>!sM5IeC-kwJ)XGtvY)rII41M?iHBnlGiJDH`G4oK7YJ(*Mvv@vvf5-AM^V1_)n4Y zzj)>7 {`gI)o876?w=c2H;ym`jb2j7d8S{4k3;A5%TD_@Yb2QT{ zMms|b1p^RJ$W!0~GYkyO4b3scEDTLC#4HVsCO5O#M4Olxn;IIrTADbUn7NraS(v&w rnVXoHnz@;}nVY&e+S!;AQV|P@qr{?;ilWpsE=zM`E>%@me>W}wa2Byg diff --git a/test/html/html_ol_start_and_type.pdf b/test/html/html_ol_start_and_type.pdf index d786793a9b9b4df5b9ccd872121a875bbca5ffd0..2496bfbd1e931fedf7af862eac4317f70768f074 100644 GIT binary patch delta 302 zcmbQlF_mM3BV)Zemz^C~aY<2XVlG$3oZ2(CTuz1pED!9K&oDB3oi`~pm^ 8E)Y z(*lDUpL*Q *e<(@73jQ@Hw@0}-=JdG zo*>aYxtj4ot*gT3%Z&AmnidKMAfS+^zy)R)7?@g^V~ClVn@p}|wvMr|G&6HHb98Yw zG%#^;H8nDKbaOK`bvAP`H*+y^H8QlbA*do25*Ud^B^5=fX 5};G0rQvNUZ0`DcG L_qxmp5|vzwEl vftk6fiHo7Bqoui{g^Q^P5Zl=hR1pgaiNvCkilWpsE^}ieE>%@me>W}w{Mu+~ diff --git a/test/html/html_ol_ul_line_height.pdf b/test/html/html_ol_ul_line_height.pdf index ae2ae26f8064f3eda44bb88a8da154b235d92902..c2f95f593a57d29985e4732ee2b58a5ca036693f 100644 GIT binary patch delta 537 zcmaFP`Id8o17p3ZF_)bkS8+*EYGN)|#hj^=PWv4;5ODqevnwz>_27f+KMo3sioMZ# z%HGA18^|zqnNtnNfA1huvs_!%K(UEN>h6zUuYRymz=LmJ*KVOaITepqCx@R*-%~ff zw9D$e)GRL5-1tdy+2&WN8&^xOxc>g?*Huya;b-59PFa6feqy;}{lcPZxnB?2b{Q_@ ze6Ytsd)G#XbdRQt`R7%A>iG=LSWj2H@`Zigy4kOEUvI8!(Lc1O{|!fcOMk5<&)O;n zrN6>+glaFScW+hP(#=_Y;%kaw=gzZAbFE*-W$ZoA9qKnDBkqMu+=|VIJdAHfF0M}a zwy}EE>eC-@ek<*;DqkPA&GcG5^Lx{SIsPZwAMRuMZ0D_9Bbc^HS+;TVy@N^IlXE}E zhEM*?<0%<3ZLLCQgGgJL!Nr_pp9z(T+nPF`wfa48y~(9EtMj77ZRY2qduA-T$kv>6 zJ7bBnD|5c}!JO)n3x{htpVgZ6d~p47!(6|PacXW=C|7D;3N*BVto+T}nerI5%?(Tx z3_w63Pk{@}Ffgz%Fvb+KG?*N~VjW{_Y3kzQXl!a^YHn!mV(jGP;$~>>XkcjIX71+d gXl!I>Lr_I5B-#^;N-By{)3_{64Y^cRUH#p-04n?1xc~qF delta 516 zcmaFM`J8iu17p33IhUOsS8+*EYGN)|#hj^=PWv4S5NP{ubF@WNPv(5?xuZ)R#ozh- zVv^vV64D!#R3mWz`m_thEawtt>&+_JS2Oe9XYGnP94hSblXo-a$*Fj>Iyr1?`Mv1( z5>+q$xC|b)F7X*>Pd`lxHxCHUfBJRTny}Z;zHxP(6@1_1^z@re{g=c1FOIdSHGF1T z`{EeWTt&`BwRYhKzby}ZxU!RH;WGOVYqCyVUvvJK;69GecAJ!I1ns^pHQ4fsvGa?6 zf!7zu`8wCyF6gPfQM^9+sLC_5?vi)@-<@99#;qti {7{`~!J zaco@Q`EBc+uk73%b@N&T|DNootef*D@E@+_d{#Tn?T6Bt6n85o^}WqU#g^TEwp(xc zbID0YD|DhAg%~w?)+Q{vd2EKl=R-NH!e_bXp5xvu>SH3j*l-*BIqeEV&&9lKN4H({ zXzyZ+vp$$pU2*|zs9Dbk*B>{&b5FFXtlzwjsg_aO%+f-^00b2B6u7_)0|RqQa||&H z3zNxVEY>j=j&4R4Zbq)=j?RuohQ?+FCdMwN#*U7LhQ@A|2ChbSHUw3~LSi_vsHCDO RHI2*C#FR@_)z#mP3jkta)$afR diff --git a/test/html/html_preserve_initial_text_color.pdf b/test/html/html_preserve_initial_text_color.pdf index 7e7be5c772414150b78dbd048c42c7f3d1de2b1f..cb135d7532a9726fa7185dc86a62a20104d4efa9 100644 GIT binary patch delta 280 zcmeyu{*!%!17p3RA(x#US8+*EYGN)|#T?t7ja O3nb*1xe&~KS7@rSY2 z?#rQDhtCGPF-o5g{8N8t+xhK#-t*nw@T{io+60Y@{K5J1letp!Ht%ArWYjV H2 zTIcP+GIxG&z5X|g>+%2cyOVD@S2(SGafbDZf!toM)VvgsrJIj1mN06WnkyK9fI^-E z7nosSU}|cDA!cS`I5~;gI>yPw($UDs!qvdl*~G%g+{E0-(#grh*v-Jw+0?|)$kEP* bpo& +(DvDCmxXcZVxKveL{oS|#3;bN2 diff --git a/test/html/html_superscript.pdf b/test/html/html_superscript.pdf index bd1f0b2f7afff3e816d8c792e8c86c2c05871ef5..f29e0f9a579ba727729ed9cb0a59f22148dbeb20 100644 GIT binary patch delta 372 zcmZ3?wUlc^AY;8bmz^C~aY<2XVlG$3oYX#h{w4!~qu=Yg%%>f^G)<}0^y0zZ3llw8 zvOSj95cv7yT9-s}Ud8n4?{(!u)`uczJ#@Ur_A$)C 3?IINljCbq*$EE*^ma! zWqZpOye#_m?0ZE({-dgLvFX3k{?6R^f3eOH_TWpqq)xy1?cq1?p_<*S%}h)dOo1i} z1|Xo2r@#ef7#Nrt8)Jx>8yR4VSsG%9SsIv3?q;!xF?Mn^w6JtEFmW_;G&VMLb+$A% qGc&Sqbu(~vayBtHw6h_oA{G*)iA5z9MX70AmS(10s;aL3Zd?GyxPw;! delta 370 zcmZ3=wU}!|AY;8Lmz^C~aY<2XVlG$3oYX#h{w4!~qvdu-rB5ehdQaRn>&1h#7blj4 z1V5J7QT_CBt*GI#J0JAQzt??dG2>k9+UdUO%86?-F#*RG@JGCS(r0kS@+sF-r%N$T z<{ZzxI5z~mlhAeQ6ASvfw(#z~o7d7q_g9yHSoT@-i>AWHzm3y!j9P>Q`QuDnQ(HV& zHI*qGt-0m P@?3ue!gq8ntT8 (Dlls GaVu+a=nq!Dr7@AC$VzG{KvoLaVb2N5!ayD_cFmp9GHMexN pFg12HHnKD_HE?ycvmvM=77~JqMI{wQscBpm=B8Y#s;>TSTmY00f8GE9 delta 351 zcmdnWxsh{&BV)ZOmz^C~aY<2XVlG$3oYo5mxegidus!%a?~(m0)n%Exmt1eOuGp%t z(7|5FvxmcOZ}ZA6JlldZf2+rLJh)=udUW+mBfh=O!bxuX9?p<9{3JMQO3(p@MAgmr z|2BS(Q4T%(<%!NDD+%tM4K+vC$sf1<^!NAvgjM^P_h_=-D@!@0YNR{&-KUtsSNoWg zZU=q3-RJKkl=Xb?qcheSC$&qg9wo7V{@`} 2^58-glgA)%L8R8motn#N^eZpfvo>gw;t1pqdVfZPB8 diff --git a/test/html/html_table_line_separators.pdf b/test/html/html_table_line_separators.pdf index bdfbff3f1bef274c6a206d091d382447610534bb..a3723e07b2d781e3d4e62c75cecde035f015e1a8 100644 GIT binary patch delta 428 zcmaFH`Id8o17p3BDVLocS8+*EYGN)|#hl&=yYrY81zfB5C3)?ZJbZvBM_N A{av{TC2# U`}#;aB@YM6Ggy8TT8 zlXA=93D1rH>aW+l-QQQ&$A6mi`Ti?T z#l`D3ai!*^Ks^g& 7=) Ks_N?R#svVlcd0-C delta 405 zcmaFM`HXXe17p3R1(%&2S8+*EYGN)|#hl&=yZM+D1zdms?b6&TnV7(~&Gh1-uzwEM z!(+IUAHDZp#IoVWQke($4$CyfE}tN~XLo7C)v)Hk6(TLdIZp0!yv@a8HxF?{as0MB zTYjV7I3)E^;GXY>&m^a|7PK6#wb(mNAaDQgdY`-2O{OhZ4k(soXaqI!9e!+TqaIND zl|!d#?@af|!W-e%w(Fmtz7k|#-j-c{-?C|e>$;08YQJc9t`gq(?)15$`pKcXJ@=-t zc(v>@Tz#rVZKm12>mfouN@p~+cr>P8+IG`nXZ*S1&vj4V7smztW47R2duOvA(?h zGfM>n5Kzcd-~uxY49v_dFvQHw%rL|(%#0_8u~^5rm>Rp8yEz)V8CsZ`x;VQzxw=`n p7@Hfr8M(L^ni{y+*$`9_3kmYXqLPZD)HE(jBNHxFRabvEE&%;UmjwU- diff --git a/test/html/html_table_simple.pdf b/test/html/html_table_simple.pdf index edfad2bc95ed283914fd8aad5bbc164e6545fc04..d26e6f26316bf14474a2fee03c2f824bdb62d22e 100644 GIT binary patch delta 378 zcmX@Xd4_X?17p3V5tp4ES8+*EYGN)|#hl&=yZH_o@VI`jX?2hAd33~Ym(sxlZ71X% zDm#@LwLbpdvM4Y(MAYr~i#yu06Be6nYM&nE7O{pmqBqLf=8)E^_C*cT4pz6nS-_;+ z;yUq}^cy=d-Zg1gKU~OY47BcGpK %%QSM)2fS#rZv7x%k#x(+sE2e4dj$oxFPu*k&i6+PJx=tthAXPHOi2 z71F2Q8TO}sj}W@I%KTJt;n&TaOs^R2OpFx_KtLf+feXwqFfcPQ!VohzF~AVBFgBlT z$YK+1>Sk!* >}F_eYUpHVV?annEF@eLi%KerQq#CB NEG@WHRbBnvxB$SfiC_Q# delta 360 zcmX@Zd4h9;17p2~1(%&2S8+*EYGN)|#hl&=yZH_o@VI`jYjuzCd33~YlhVNhUjG=P z Rgd>wwpqMM;QWTFDWSXDD&&8ZpEcRemd)|9UoOe3U8(Zo%9?Gdn*&UH z*EPBt%(x#KCewD(_w3uESgTd{C3|m`zn`G;Qsqks_hNI)Wiru+S7;trJMO%#sPop& zH-evIzICWRG=K56P<}Hn(?TV@m}C5Kzcd-~uxY49tuzFvQG_%_b|d2s0W_Hf6Di zHgs_`aW!;tGB7bRFfwv TSTmbewfS>>X diff --git a/test/html/html_table_th_inside_tr_issue_137.pdf b/test/html/html_table_th_inside_tr_issue_137.pdf index 0952510e3f3c1914363a5be642a69e473eead0d5..18510970d70ff39f5c1fea347b78e9daa003db95 100644 GIT binary patch delta 382 zcmX@hd69F2BV)Zemz^C~aY<2XVlG$3oZbn$xtI(ETz}Ub)!iyNd8SRYBe%7oy}}Nq zMXlVg-oF-#ydE3xn{deU-OSSw8oqiDRxOj9yt6U!l2m1PWSIKViANNdIGlXcVdSR# zM29b;acw|{?1D3~i+(@h4Ji7l`n@i-M|riN>Ew+kq aVD|e{*Fg4@k@`d{KpLL(Qscn3amU!^*7pc;(OJ`gW5nhzvGHb! uq_cLufR>r+qi0L(>t%-sG2q@$!aDf>H24*J47-Hroh8SWN#uk&U zSgd2rO$=O(osG<$EetK(oSn_wjLcmPjSP$o+)OQ8Ow26oYzV4|g#>J3QAtHnY8sb? Nr6rfDs;j>n7XTh-haCU_ diff --git a/test/html/html_table_with_bgcolor.pdf b/test/html/html_table_with_bgcolor.pdf index ab085490a2f75052fc83cd2be5e1aedd756d31d0..9f97932078bae250b8a7cd53d4095aff669f110e 100644 GIT binary patch delta 690 zcmeyy^OI+TBV)Y oxVn)15UtRW4j) znzrlcloR(HZd>}C4qx+yd4FL&w~p`aooV{V+-6G3pHHc<+%)}!&DD9APB_^gO?Yno zc179iVj2Ir%uR96jG8u{G58koeEaG%KG$DNJ7y;leK%q4?Q0g*Gv<7aHoKHzt$gf2 z=#lrmZx66mZ_oX)ZrM8Jk8PpWO@R~n@3AW{o)Z7@;2-hTuWN7bRW{uF!(G@oY`=1S zQbI*c*0F;r5^Ot5eP?7=UtOr`lv;MBDqw}wqfK)^X2g5;h1gA>&L~^wZ+VYHuhmn` zPOSN|{kcj0>*DQfORc4(cWl``=lL4*uk+^g>i*diwXl@;zuAw|EqAufJG_gJ`>^5V z8$WD0xUYX%xvTuLvB%^G^6_1Mj9jUCDWF*2Y{eYJBx TSTmY%VCKdny delta 704 zcmey#^NnYNBV)ZOmz^C~aY<2XVlG$3oVin?^JhBws zE>iefncM$St>QZ4n-l-{Z9b;LHu0H~ih#jk%g=8UmH*6Qby`|6r&jmFPxlT3A;*TK z*4Ig5sZLr;Dz!dINVj;ZeA=^reZlRoF3oavQ 6oWMGfBU!||KBn%nY2aVZqjy&( z>6rZa#HQuxq8A@NsZcMaK(BOjvF=~@&URj y7k%FXT ^7<+I{%rlmT~;P D`v@|2FlB$J1g<-WNZrPd#)q5LKJ`JK~Gq ze+zHBopnFI+ *Libzb^q+Sv7pfOzuAw|EqB&M9oi+Pec14F#fNHv zuyyZ(N}oSd_V~}B^3zwFD>W|#8s(cEnEjao%@hnkKp{_o3(PPuurxMB7c(?4HpUP$ z#3E*7Vleput4*w-v5SR?p@FH3xv8O(xrwuxi>U$7+m3FgPHtvSrml821XaXBQfFdO VNkvg=8keE5fgzWws;j>n7XT$+BwGLg diff --git a/test/html/html_table_with_border.pdf b/test/html/html_table_with_border.pdf index 8e8b306e925643371264be47618c03cb6d82e00b..7a156a2b800c2a7cfb96602b336c4f5f66fbaf2a 100644 GIT binary patch delta 511 zcmX@bb)IX317p3B5tp4ES8+*EYGN)|#hlhjr~Qr?@VI{e%cY-~{K;>ZYZI%r%YOzd z8xz+glS_a8Z86E4vt+K`+&fR?en%bjR=!ZR!=zu<#>V>sQ)|OJ2LIU4*H<*$YWmK$ zwvq9fk%#S6_X_5hBHMC>j?B{Bq^{j`Gdy+Q 4(6BqohZ`hq&Z*kxGyYPGO zE42cPMYWc7l-@maC`!{TV(QlyGVQhR>(Bpv$@b2!r<5;xuE@r9(oqH4N7>dD%H7V{ zw*3A1_0flWqZjDjZ}K>{y@91tB9r@6$)tp$t3s&~&E+ksoSFaYXQ^v``nfJQYv~Mu zC7UHo(gTicc<<0TQOUm`mo-rPXuZwj>XjDFYHgKW>q;Z}HpkEUR3snWXDaQq(j$I@ zOpAJb@RJRH_ZW4^8n^sO(U_!N S&|}>RMMI0EirjSzG( V6FVD%Dq hHz{0OT>orvLx| delta 506 zcmX@lb&6|)17p3RIhUOsS8+*EYGN)|#hlhjyMvAx@VNf2Y4yrznZN0-5i_gqPv#S! zX7C<8ckaV)l_Pzr);FhYT3_2=vh=}H;SAY7W&O4`Hr^MQS{wec_}4DC$>KgIxrNOw z!b|^a%)E!9Dw;fs+(~Cej!x!1_-GZ^^_LmHF8Ck2x5(ha{=;`G>n&p6FZ|#4-SmZF z$3-sD;3K {?P!x}OWHPlegFCB z!@bc9bniEL9NVtIdCK6E*p-(l2j8qx^|EL6=k!)v^7#K{o5_pjyuY^0tV_~ylIwcQ zW-p%Oe3~1VXb9hlI_UOM-sk+6IIVLFgby3Ja)mtE@Z+iG`tKW`Mr>BR()EY+wBwE^ z`Kx5U%{OP;nA{dHuP3x9lyBz2Fv~al^JN}Qk#w#!3OgBUnZoA9Q~zzbNZsasrdN!1 zW)=ztAfS+^zy)R)7?_)xV~AOpnPP}pni);r&SD*FX6fi+VCrP(Vs371Y;0(1XkuYt qYU1SVVruSW?BZx?XG2g$EF@YJi%KerQq#B$4UCMrR8?L5-M9e1`pOCb diff --git a/test/html/html_table_with_data_that_contains_entity_names.pdf b/test/html/html_table_with_data_that_contains_entity_names.pdf index 4397aecf3b55a46a6f95366ff0b685b26f07ff0f..a28b2ab2646bad75ae9b61cebd7a09265c4f2cfb 100644 GIT binary patch delta 312 zcmeC;?B(3x$XIXAWoO4#TvC*pn9Ef$C$@JZ*C7W1*57}-!m~Etdz)HZouHbLxOB%2 zZY_ =-f9rES#gcA&qBCk&c<*F~tMxBdl#bdnO-pdUWFfV{Wuw<}F#i zWR?Aas!5@zLxc5r|McAac;)MK%Rm22|Ml5vxc0ThOexJNGuPo!Y!d$z^6n+?BW*Rm z%_kY(GTK@w7=VC6o&pz`VPIftZi*phW^RrlW^QgW`7^V1jFFp*nT4s5o3V+BvxS9) vv#G0#lcBMbi;JPFsfCl9ft?LO6|s JcjE#8Z+&Lm delta 309 zcmeC>?Bd+u$XIW}WoO4#TvC*pn9Ef$C$@JZ*C7W1*5ALo!e^!Jy?y%Gw*y)N+}a0^ z#&tAJnsU&8`&TC+fz#$^K1irP_Y}If&h$+`qu0H|axczo3=&z gZ%@>g?*~=;G#V tWNv2eY+>kPVC-UHY-wy@XG2g$EF?@4i%KerQq#CBjE%TdRbBnvxB!OoYBT@< diff --git a/test/html/html_table_with_empty_cell_contents.pdf b/test/html/html_table_with_empty_cell_contents.pdf index 27f586687a7622259ed4361dfcb15ff95ea01d6d..37a5d3efcf0fce8547bf824e0a914aaeda1261b8 100644 GIT binary patch delta 439 zcmZqVYUA4Az*ui;z-4F0Ra{b(nwZN~F=y(;-G0o50 +dT_s0H@rU*t zvl&jgDRmurzghduS&Pn1-kI`ut5fB<*Lx|m{s{D!4AWDhVPcv 3&G*g8cd^DytE zt&>l@KD6n{>-2E8>H?kj%UYKI-~T{xPbr(_ftAte5qqNw*m@iHG)})0=yF`3$^Dx_ zgXp0tuPWK!Kj$%>`7!HBVUMfZW5xPIm)G5wnXmX?q|W;CH@*k5^@_ST6!|n3wcGvr zyV2feM%HTf1VNv?x>Mc fq*4OX5*3Wof8ox25rtF-i$+^>&=XTEcVgG#kT&1+K A*do25+8|0 UB^5=fX<3e1?UJN7-t?|Wa?{z^{b;J+u?$YNlLwbClu6If zT4 ^ZE9rG8!6lD|^dL3OIXhaZRcL4~*t zR?p7X_Ex->cb_xoagBj&o>ko^J&mIJC)GDDWv4%?5*F9Fd2or|EwT66|5|2o%{?OS z`P}o&=HHBO7`2QI6bwK>Ay0t|%rG!8Gcv~zGdHrFEXX3vXf|1u#X82+)zHPn(A3=7 z*uc@u+0oL;)X>G%$<4{k%*f5s#mLCchM @4ZrH_RT>S3hjZ~jUA5L5oT)nnQJ?#kB>=|O$q*&FC9$bE*uXs!8 zGF!>Ubmvn}J?fkRFK1kww&KIKeNLa|G|ha**4`7?pZjb6wvv^#)=ouE9IV|HN0Q>V zOjmtWSuv+T{*&DeIrIMMd$?!a5&y~f?e$jk!sbqHC!<*=sn;LYY2{rgUZ^g(!sFW} zrZ FuVThR *4rvmvM=77~hyMI{wQscBpm7DimEs;>TSTmZb4f6o8_ diff --git a/test/html/html_table_with_img.pdf b/test/html/html_table_with_img.pdf index 230135ad7c3f4cc276e74c9476d4a0f7d2209cf8..03b3c9369dd8c94d5ca90605f3650381a758a396 100644 GIT binary patch delta 367 zcmbPUJg0a=1!KLTfiahz9anKlQEFl?SH+yzv({WK4gxI?_xJ~@XY9_N6TWN3f|&;9 z0%uYTZ@t!@r91U+O~4VQWrmN{=eOk*SzP7GJ$~bfh~>c$6ZRXn?-y6GbuViuDPMhq zuVi!bkEFksb*_XQoV8WR(8iws`RVYT3`xe4JGoNxQXn>N{=_)JtlrR2!2kpl@)Wqh z3 >cSv7;}+Fi@{Q@glkab9ms zP)kbr-IZo^^E|ur89!B(n02c&+?oSJ0?m1@?iB8coYZc&*{nm=!23&w|MjL)cVo$4 z%%}a0gOeD&CpoeF-?wLu{C>tSFC`vxrRJqTZ3D9MH~(SmHq$aNQ!oGlg**i=FvGyW z%)k^~%+k!veDX#MVOv8q8AAgzQv-A{6GJm}6AVp^EX*b|TH3}LI+>Umo12nHv~b zx;Q%-nm8Fd8JoBnIUBfGS~@z}*$`9_3kkQxqLPZD)HE(b6Jrw#E>%@me>W}wJHlyH diff --git a/test/html/html_table_with_img_without_explicit_dimensions.pdf b/test/html/html_table_with_img_without_explicit_dimensions.pdf index 230135ad7c3f4cc276e74c9476d4a0f7d2209cf8..03b3c9369dd8c94d5ca90605f3650381a758a396 100644 GIT binary patch delta 367 zcmbPUJg0a=1!KLTfiahz9anKlQEFl?SH+yzv({WK4gxI?_xJ~@XY9_N6TWN3f|&;9 z0%uYTZ@t!@r91U+O~4VQWrmN{=eOk*SzP7GJ$~bfh~>c$6ZRXn?-y6GbuViuDPMhq zuVi!bkEFksb*_XQoV8WR(8iws`RVYT3`xe4JGoNxQXn>N{=_)JtlrR2!2kpl@)Wqh z3 >cSv7;}+Fi@{Q@glkab9ms zP)kbr-IZo^^E|ur89!B(n02c&+?oSJ0?m1@?iB8coYZc&*{nm=!23&w|MjL)cVo$4 z%%}a0gOeD&CpoeF-?wLu{C>tSFC`vxrRJqTZ3D9MH~(SmHq$aNQ!oGlg**i=FvGyW z%)k^~%+k!veDX#MVOv8q8AAgzQv-A{6GJm}6AVp^EX*b|TH3}LI+>Umo12nHv~b zx;Q%-nm8Fd8JoBnIUBfGS~@z}*$`9_3kkQxqLPZD)HE(b6Jrw#E>%@me>W}wJHlyH diff --git a/test/html/html_table_with_imgs_captions_and_colspan.pdf b/test/html/html_table_with_imgs_captions_and_colspan.pdf index 6231defb62155e5cca1487f0ab46c5874b5021d9..a95dc31004aefd89f5f5cf117dca1f719a645f34 100644 GIT binary patch delta 438 zcmZoHZz -WE1yRV$RFwOn+wH2N3I{q@Y ztde+|+f%Qvp<-v;ZN1ZSrlnB!v6JCDHqC6@EFv(;qWxxKV#LvTYiqK1du6ybvY%Du z VgOyRyPvOa2Sk-;A|h)thGfvd~ehM)h@0 z{SPPQGIl95znIN7OokTq#tH@?ppd7)1!fo+m{}TOh?!d&potk8nVO)hGc++WKsV3O z#LUzJU9X9`xg|tw@*6AjI5%e}GYc0-XEzITOD7XULn9YgM^|GfLst`1XGcRbXFD5$ dDq gw;t1pxN!l05(b delta 415 zcmZoEZ!F(X#aM5|WoO4#TvC*pn9Ef$r?k(TugO8c<@=mP({^P(V?MLNG;5Ld;~0ka zKtnDLiN|kQTV0x$iC v4^c9o5Fn^(POq8nSIZeyHNTUrlN5(XER#8q%67 z7$zreIvdn}m$`KMwWqzSW4eqspIuvII?1Nh_mrCUrz)=ESMPhA@5L%A`Fb^Ny}aHj zSVeG~p!W^#KcdI?9C*ertKD_fe~<8V#h2eC!c`7U|8eu}Y{y)K*C!eZgFdQ9rnW!k zsAYPZ?c285p2^T6&_KZe1QhZVxWEhp12YRt3^8*Hb2KqSBU58^b%rKJ1_qN4S_zAq zqN_GBH#eL7(#kf@(9zJ)(AC`B+|tm%)Xmw^&CJor+1$|0*wF~cGIp`EA*do2684Ej WB^5=fX I9ev zPS~}~>sAnBP|%_k_3^@Ily|f|onifbo}` Z@Bej`FyEW zYiw*Be!UG1evm2?BqJ& Z>Jujt^7O_ }@ mxk9b0sEB@-Q(|xLNx9YuQhgz}23+RZ8zZ(YW6` zYtH6X#y8#SA0|F5-8_xyHKVPGf&mC9 llQS$#~K-$ zyIC3 -_d#Menx;I~$-npetO3)cj)g`AeR4rN?iVVw^*H|G^UqXCQei#j z5hA4Z;?#`b=xH0+<)XJFiTtn%h}rr_`9;vt&{fq+-CoU|qDGwcFB#2tKl*XmVQ%P8 z*(LFDrblCsD;^Ep82Iq@PY>pgJ{ui$Bo;0c_-Prf9`}5rO27?}gbzq!OY+)_n $0`aM61Sjep tyQeYV2raZ0cxf zV&-b-Y-V6+>gMcX>g4F=V(Q{-X=g)FMJyzS6N^eJic-_K3=ND;xl~nM{oS|#?$ps) diff --git a/test/html/html_table_with_multiline_cells_and_split_over_page.pdf b/test/html/html_table_with_multiline_cells_and_split_over_page.pdf index 1b894eb53445db51a190095dc33ee565adae615f..317979244821c98f5fe52c4dee50614ca5dba1e1 100644 GIT binary patch delta 2108 zcmai!X*?8)8i#FTG$o--4$9JzHM5xoGtvxG4hq9$&sxel;V_kvC5(NWQ;cgJ2F1u& zBN0)uWU`kfH$zPJI4PZb?)`LcAMXFt`+t7V`|*9pj;|i)5QS+75Do{r8A9=P_XmYD zAKCX&rqD-Pm$etzZC4IN3H2`9M@Ts}mlod^!gn5S*o9pf-~V>VRW&D$IZ4-(VX0E7 zWw(5u%@)|2#72+t+`zk=fgn<5aa5n0k+ap{X?y82XGfCRGU8Y2RUccl-`bV2s?D?A z1%ISNQdj5JWoT!Vm?x(jSiX(Mvm1f8`TQ%5
bmtiHjD~YK$OT=pMC$ (a2_*AX8{Xyh^EY zC&Ai;-6I{FnC@bjQWbz|QyD6Yk8nIYwRKd}r^CzT#W}KA(&r8vEpgvPR2$dl1`?h! zw6!piEAJW-co_5f3caVZz<&mXH@xdg&bLu0!)Y!K9tCI~(@-B)u|GNnPE`aXnUhKj z@2bhrgx>E`+AZ4hGm7qo{c^7&uTVb3RV2|Z^exw?Q_a_tYy|M}v%G3R-gC)bwmp$L z%qCo@glRyrxZF|1{if65oVZ|Uq5hq~cpWA?i48Eg2xt=3*7;7Sq80TBqP4vd5Qm<} z6x9+=;}?H{UyJxb{OSlHAdy^WG~CDmS2DX78Kt5MjIFp3=Kp%>|{j5-Tw5f{u6o<#M~ zdQ47OtH-MqvuUICfln 41gGuIJSYef=v5(X;*hKGmSURbL Do$AdE*(26CjYT1d!LLUKpE zq$9dLM3@jW?1v$vl>U_QNZhR=8Q%6`{25=;`Ai#18aTcj*ilK%aTfJBG&Q(L%!}8u z6`k#rRdE>8z7~uU3& X~+4kF2jd+~(zwvh5VIrP~02ch2~I zUU}6pkFm~esh#`uY!E&??Xf6=B6xls9bAGqD@`$vCYO!mGfL_fM(~X)I|#M(Kr xWn}4GsOTLuN7hDD%i8raSv|*Xu|LiFBb_%app_0IgR* tIhR^S=ukFc4?v+HFA2FZ%CYHvJ|KpoGo{*38)SZ(& z-<|N#U97D1hYQvCncKSdiWShfvWa#od46VY%(^n3H}CBh+DN;**}fDQiCeOw#+peK z@7AP!pl9Vyp9n?%p(GB+uFlNhs?kDg)MFKn={A|_z4fsl_BN%^l3~CScR03nAjT=I zO<{2%n7Jpvb&Ya!O<+|a{ZyD#OsG}YkY7fAlN+z7YZJWZKA&g7`vTrkX{}m)>-X5o z m-H+nDBAsiPdphu zu_L|hn4Reu?PV$FnH@ Z~}@wZ4B+Q`N#471cdw? z*K$5B>rcZ&OZFH_@~IUYxrdcqb*dH#%J+#Y-X&W;83L?)O1<1M1yflP$?xspVfiiN zO}Z(7$12}(54Ve&l*qvtHD7&r@ZI5wXHCSHt!)#p>0eKF-+4`&vu(<2v24<|I-0VX zOh}XH9ZB0fqAGIo;|17*E1u#v<+viQ@3h5+u5uv#wvR2Dd@q!feJL#T z;sLb*WTZIQt~gPp(Bn>#s_bie #+l^zQ)zg`;8r%V2Q0{!a`6NBqR};Xm&p zVVIvh6b$t@%j!6Yalym!NC*;*hr*x;JO+kF!VnlUg2_3gi5bcSV}isP{a?f7KM%#7 W5)w}F_5s0AXbkArUrjHXf&Kz?4bU9` delta 2098 zcmai#dpr}29>#N7m|oO~kk;0`tyJ6Ch7FOq*O*JFgxra}3?pqQ$t5Lv$tAaPzr;>8 z t?7EVsF*2|FE(!)}5fJ#pDRlFU%*=tdpF;6%kKJ=e%x1nu&@#@L_p(8vIQdJM zHXg5%=a2fnR01(zy(+p|xw2LzTYStGFd|QF)UCcl7BW-M_fd%QCb(UpNw0Wnw|?#A zUQIpOqS+YR;miC+Cx_93e8+2ZxIaQ^bM=;?qfl{p-0be*1m6ohp2DKfr1CzG@Zg+} zaT@|ai?^AVh#4F* ym+*`AhP4p~{e+QHWeU>RJ9hWptigt%7k_OuL zOGJ8Kqt`a|-n#lAFUnt~qc$h+a8Ir1fhNkZjr#uN#C4@7!noj @YiFs8^!we36MqFKicC2Kq9oJn&v zfe^;?jc-d^u0Ib-%6k!3o?W@VnDq85IXDH)1k(Z2{URwkR@PH#;TO-d-c?4ClI?LV z11xd9vHr^oLBKFqWZzo3&2Z#?Cv>eBJco#U0SzprA^C9UiOzCim<3zh9td& ?aVGQ| z@%If&51nBEkCfWPJZ+uyhpB!G_Uow6Ba4<%{}jIn^8DFsAbsuqkMYZo$?Z?UCBT%4 zFK|eJ{e?(SyO*Kz_((|u2-iDz+{UF&$GH>M12iR>tE}=@62bOE#U!t@iJxKt+w*;S zyum%p6+<(O0O*L{7gb-FFlyQg%BE`#IovW&Vk&(pR=wz6tV2ri&IaTf&I-jhBxef6 zeK@~q)4B2IUhAHUtrK&j;gq(T-j~=noIJ<*=^9{u%^Wpf&Cf{jv7+18x?zfak=tD* zzQ6L!wlfFiWQWCMUD$#^L8tDV7C)y^v^<@4p%wjHCnb8Irmib+-|*{A%x66(4^h63 zm3QB2vYAa0yIK6elTg zN95Lko^*-`Ad!wi{#S`(Y`X$K{8i$`le5gmX7E|z8MNHygG(nCr6WyE4C2ou-~LBV z4l7}1%zm!rrffflGokLbG6I4 *T2^_Y!^;)aLjQ4+~)!5A^U2j#G8*JM5e$)q{4aVaD+ueHui oY4Ghe ?PKZ|H=TB6EqV&awiuDvanbVcv zeNVU{JbL0CG2t8jUYStE!VTQar}%hT6)6Yyo>13y{~q9vS+Y&QWQFkfhL2Z~TDljz zSo8OMiTqRHPJ&DoTtjX|MfUk3OHJdhTYWxA9~|~Zv#E*>6AWlz#j2d=_Z=xnO+9d| zY*5Q+fyT8cca0Szg}eHkU2dn_zRGOpOVJPoho*ukH}lgsbyuO(X7Qq6*;9hGiB};; zQarKk?kq92_;~~UbQu+d#I&=Bz^6a?hK^id55(@bdv;*gp{*~zRWu99hkUCzVw%eC zscQsS# MaY&U{E48u8RwR?qFx@eTWg^~^_ac@_*K&5!WHlZH4bJ13D3qK-V z91`XqfS++y0ywRBf{e{j{mfn&-%(mSehi;#A`&TC1MI1DVBM{Uk+BpN95sElR;_EE z1+&8ohlDWv21z&QGahfL8o6M|Y0Ip8n)^%)KMDpF-Q4@5z%!Z^ 372(TNGIrW;>=&GoM8>9Pmzz<9g5+;v%RQ6@#aEvclESBP{(%Ou+B*1i>D$N{KBz zbP0L~PBzzg8L<6Cs%xma$AM*@aV&}RIlp!eBX|-b%I~2wDT42vFei HW;NugM{= zc*Ksuw2; f|A U)|x!0yYl;WtgKKXPN~J2m@y>uR*Gmzp27*IqfY5|f4ny8FBR=Vkuo z0vO5?y25mn78Z>7TVQ`M@LvXjRL5%mFGHy#k-snvB;pr_M*Mn g7US$&Twr%m% zyowb+SmK+aT!S{BXRK$`G*d7D0fjsTE-=Huz|_JNL(I(FXmUBTb&Qdvp@p%ln}vm` zp|gdnlc9l|rK_>Ag{hm9v!kP{nX#P>K^3u(phzq#sVGWK<1#lk=2BI4^>^a}04$Gf A^8f$< delta 295 zcmbQt(Z{jDk+I%@%g&CgxTGjGF_)`iPHyjRE+#_(*WWcqb+<~Uf4cEzTa(ze&+N0l zHb&@h|J%pW<}%~kyu&-?)Q?Xwx|g^9hAeAir=->61@CsVDoRc~?jo~LJZD~N-1ZCZ zqI(QdU-lMPu1$S8*TC@S4eQf?tA3yUQ}-x uadk2?H+OO|GBI;8w{SEywX-3pA{G(~iA5z9MX70A=0+A=s;aL3Zd?EzFla#l diff --git a/test/html/html_table_with_width_and_align.pdf b/test/html/html_table_with_width_and_align.pdf index ffe932e552e2caad08d9d1656e0c31d0838b9f93..e3f284da394220e1d6bc97b4fd12eda5e0b3e9d1 100644 GIT binary patch delta 388 zcmX@hd4+R>J!8F*fdQAD9anKlQEFl?SH+yx38(Xz40&9?|LoemMEbg?O!cO `_{=NW{^# Ke5p1;vXd;jAvYyR|=9xyIvSr}gQc{3l=D@Hq0Lj?m6P{>o@0y7K@%uEe1 z#LP`BFvKiOOedSMSjSknnmId~x*50_8Ms;+Il5T_8D=hyrY24XE-t1fE_OBqRm4I9 XII*atq9`?u%hJG%OI6j?-;E0Z-WHE) delta 381 zcmcb@d6sj7J!8G0r7@SC9anKlQEFl?SH+yx3A_0Y8SuD%uRAK6Xz2Io#@Q|wX6>KM z8v224T%GryM^02?NiHgSzwz s1jhu7IPY%C6xI81`j#H3Q>3`Ql0X_$(E($HSGQZ1z zb;B;#kfkF3Rx3%XYKGpe+x>g%mB;FN%v}eQ7X9$qY4`C!R!DJYZKrazkY=I8lK7|l z_Vw2t|Frf`@8j*C%&*DCGw$IolHDxI^or5W#6-aW1QhZVxWEhp12Yq23^8*PLkuws zV~feQEY>jw#x8E=MvfMa=58(qCgx6Vj;032#%`{rCI;q?ZZ5`lHUw3~LP9pNsHCDO RHI2){(vnM6)z#mP3jnBaj(Pw9 diff --git a/test/html/html_ul_type.pdf b/test/html/html_ul_type.pdf index fdb16ada2b6c6fcc882954c29d9c9ac3aa98d753..0421be0f7b521386f151e1433f1180d832f214b2 100644 GIT binary patch delta 536 zcmZp5?Q-4V#8_|1WoO4#TvC*pn9Ef$XX=EzUd)C9t?p~ z=o8!`QMuh=Yq;$?-#=8Ib+vS@s+fv^)3bto{f0YqO@23Af25UEq`YC)R<}KeOLgY$ z_Se=C)p~ow`iP{+v5wW}4KLkb(aUZ*RV2D= ?wu4ANmAkQ>N5i>f+-paZ$EfHu;Ox(%)0ged779-*!7~%}X28_$BX7|J}3f z2g6;nY-z64ycDR1Q}Z@kGyReiu`pCH00D(O1uihdz`$&>qM~rUg^?M$jG>{C0fv}` zxe >WoZGOwsjP7#UfB!~~F?WMOP%Hu<%pZLFb*rJ1>#siB3lfr+c5 xlZm0Tp|hKlp^Krbi;Ibwi-DaDK^3u(SWhe}sVGWK rEjluP3s}$N1Gz+6xaGbSmdOkJAGkfHs3k!606(gD{7_dk9l8yY7<>A5@x(c z?7pek*P6Rm%gzKum{}cP6CreYX4uP~ou>_VZ j0{a7>dcWWHZn0WK-X+xWMqsXW^80Q`GcZutcj(WrJJRznT3gylaYa;lc|N1 siJOs`qluw`rKP!>shtf$6|s;skXTewQIwj-WnpY#%%!U8>hHz{02s))>Hq)$ diff --git a/test/html/html_unorthodox_headings_hierarchy.pdf b/test/html/html_unorthodox_headings_hierarchy.pdf index 643c5e733f1b6f2f69cf08aa27084d2f2a1f07c6..b9a4f26c8a1fb12e31a9a967dfdc7a9964374432 100644 GIT binary patch delta 290 zcmdnVwU=u{AS0v6 1W<<|=Avs&4Wr+rZX+(sCrUXM`pjE`= ziJT#m+u9c{bMg=i*zBaxl@?rV>n$^jm-oReU%^?-I~l|#DN1ZU$XLmgW^Slp00Ihm z3S3}@fq|*H0fv~FsX2z2xse5in1vyxI!gny$qQI)V~ow*3@wa|T@9Q~olT7lO-+m} v98FzKO^r;93|uV@4DD JcjE#8OwUM6 delta 311 zcmdnXwUcW@AS0u} y+ME69_ zknXnjh0B~g!~#}3DRiX;7u$Nv%;M#JFw0kP7GuwB1*gqN87rCU&CC@HKtLf+feXwq zFfcVU!w@qwHO3G#H!{HxvoOR|XK7%BP*+lvn3 r~5v!#)fiL;#zK^3uFc6MCFC5c5P6-B9OT$W}gT&k+B H{%%|V`qobr diff --git a/test/html/html_whitespace_handling.pdf b/test/html/html_whitespace_handling.pdf index 21f87eff6708d9149eb915d374f3192faef7da1c..f676cd5b19306a621324eae5fec170bf6c73a433 100644 GIT binary patch delta 605 zcmX@ecY<$2AY;9;374H6S8+*EYGN)|#hj^=F8VbaNVLAM>?-c;EDJc5uw6~>;%?PF z4w9k;J%+b-Uf=F&bs=>5)21bs&;R`O^ZxjVRmHF1o1C%EHAN?{CWf2Z^NilVkX^Wa z@q`x5NutVv&S4JHm!>FPh>zz}JLNX{zs^%ng)~kh#jCQL%w=2Zd(Dp?c`30u;&SG! z{3oT+NgHY`JMMp+H{JHV)|0b|yC(;ThKEU Qc@>`)^k1hmN9Zcu@^LC+t*yotluYQ+&Ql7ta z{mX6BR)4u}8JmCHr`%-wa_{A_wHf!W@VGaID{>aMNzCfn-|cU<_e@({@uAggEOs3I zZ1DQrT)~~zKjlSA%|EBF(A3=E|In#0>owz|v#IH4cE~4bZOvb1dwg|Q_%_*i?wly) zio}1-m#fU~vG1?rOy9heshGLm+`ve|00b2B6u7_)0|N^KLrgJCOAIkfOff?POA~Z; zhDL@M<{27Un1a*^AX{u`Y+*5ZIh$>)k)?r=ldGYTv73vzg^_`?g@L8Hg@u8cnW2lB jp`n3=oee=1v5=ILSX5F`l$yq6Xku!>rK;-c@5TiHk+R|| delta 583 zcmX@XcaU#GAY;9eIhUOsS8+*EYGN)|#hj^=F8VbaNVLAM?D{Vx{MJj8InOs{QMuY4 zhej@oYl^z>zUEF`_hOdiX;#nbbKk$qD0~n~n6jjROOE@-8>J48LlRx)6 zEaJH|XVDC&z~*V`l8kHSZ=9*yqBreB {#kvU&E@v++$%;ZEDEoEMhy zWNt>nwm&=EEH+FuRhEv@_?^6U`huusYYgHzpB`vAp1<^UVf)JPyBCUISRY(^yyd_> zkBvc0!loHDTQf>c^#t$gbviB9azFR&))kMGrLV;}Esrms_v7luXJ*e<2ETp(@ X6nP5qnxpZdHZ>(u#< zzjOcSi+nUMF4k~A^zHEcV4p>^ojZc~j`4gqUKZMZ@9o0w|GFo0Ef?Bt-!O0Utv%_B zzt%7|Okfq>yoRZmInB({RKWlQ6!H|fzzhQeb4wEpF$+s03^7YgF+&3jb98lvMh24$ z*@VT+Eihz^Eet2GW3!DlFt#vvay55zF?4h^ad9zmbha=yF*G$WH8e4FHZ^dzvmvM= a7LrC1i%KerQq#B$O-zirR8?L5-M9d@>fbE@ diff --git a/test/html/issue_156.pdf b/test/html/issue_156.pdf index b838c5ef899747e2ee391473d4e8ca4278568636..c8d9ce6858021ad137d65a9c85d3e058a01147b7 100644 GIT binary patch delta 501 zcmZ3Muqt7L6C kc^Oskh~#r zLsCS-qM^o*jnB7rg3bm#)*X7q-p(uZL~aYXX*lpEwq}KKJmGr6#IS#cw87>*jEi*Y z%@hnkKp{_o3(PPuFf*{g5VNo_Mi( ^wGcm%j*xV4)Vsj&749A$8m_RLt+My4$(A?a}9L*9#pzlmD#LO&>CwJ@H#<>|9 z8ksw}7&y6D8af+UxEQ;+8Cn>-nz&jxxmmhdn%dbAR1wQ%XUA1sl2}wyQIwj-WoT$_ NYRaXm>gw;t1ppt9aA*Jk delta 497 zcmZ3Luq KcI)tPD2CrJ^<;U|ghAZ=_%V z0t$HwTwsQQfti5`hM0x9CAyfQsRgE(nW+VaIxKpP49yH7>go{|n_60$p=&lXG&aW& zGcm-l*c|8@bam!NMwntICQyr^_UZ#YZEkL4jHcPp(A3fZL(I&=a&o`EZJdjvk+YMj ztD%vFqob3hfs><~fs=)ytFeovxtp=8vzwg_K^3uFc6MCFC5c5P6-B9OT!x0`riNUq Js;>TSTmXO1a>@Vz diff --git a/test/html/test_html.py b/test/html/test_html.py index dbb0c22bb..cdbc13af1 100644 --- a/test/html/test_html.py +++ b/test/html/test_html.py @@ -53,10 +53,11 @@ def test_html_features(tmp_path): pdf.write_html(" h4
") pdf.write_html("h5
") pdf.write_html("h6
") - pdf.write_html("
") - pdf.write_html("
") - pdf.write_html("
") - pdf.write_html("
") + pdf.write_html("Rendering <hr>:
") + pdf.write_html("
") + # Now inserting
tags until a page jump is triggered: + for _ in range(25): + pdf.write_html("
") pdf.write_html("i am preformatted text.") pdf.write_html("hello blockquote") pdf.write_html("") @@ -427,10 +428,11 @@ def test_html_whitespace_handling(tmp_path): # Issue 547
- li1
- another
- l item
Testing paragraph blocks that span multiple lines. - Testing tabs and spaces
-
- and break tags.
+ Testing tabs and spaces +
and break tags.Testing code blocks with tabs and spaces.
+Testing code blocks with tabs and spaces.
+
Testing pre blocks that span multiple lines @@ -444,8 +446,8 @@ def test_html_whitespace_handling(tmp_path): # Issue 547Testing unicode nbsp \u00a0\u00a0\u00a0\u00a0, -and html nbsp .
- \u00a0 Testing leading nbsp +and html nbsp . +
\u00a0 Testing leading nbsp