Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 0øªj°ïã@sødZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z m Z ddlZddlmZddlmZmZmZddlmZmZmZdd lmZdd lmZdd lmZdd lm Z m!Z!dd l"m#Z#ddl$m%Z%ddl&m'Z'm(Z(ddl)m*Z+ddl,m-Z-m.Z.ddl/m0Z0ddl1m2Z2m3Z3ddl4m5Z5m6Z6m7Z7ddl8m9Z9ddl:m;Z;dd„ZƒZ>ej?dd4ƒZ@d"d#„ZAd5d$d%„ZBd&d'„ZCd(d)„ZDd*d+„ZEGd,d-„d-eFƒZGGd.d/„d/ƒZHGd0d1„d1ƒZIGd2d3„d3ƒZJdS)6z2 weasyprint.document ------------------- éN)Úbasename)ÚunquoteÚurlsplit)Úsubset)ÚTTFontÚ TTLibErrorÚttFonté)ÚCSSÚ AttachmentÚ __version__)Úget_all_computed_styles)Ú CounterStyle)ÚTargetCollector)Ú draw_pageÚstacked)Úboxes)Úbuild_formatting_structure)Ú W3C_DATE_REÚget_html_metadata)Úget_image_from_uri)Ú LayoutContextÚlayout_document)Ú percentage)ÚLOGGERÚPROGRESS_LOGGER)ÚffiÚharfbuzzÚpango)ÚFontConfiguration)ÚURLFetchingErrorc Cs|dkr dStj|ƒ}|dkr8tjd|›d|›�ƒdS|jƒ}d}|d}xYsz Font.__init__..éó/Úasciió+ó órièéP)-rZpango_font_get_metricsrZNULLZpango_font_get_hb_fontrZhb_font_get_faceZpango_font_describeÚ_font_descriptionr4Z!pango_font_description_get_familyÚfamilyZpango_font_description_get_sizeZ pango_font_description_to_stringÚhashlibÚsha256ÚupdateÚstrÚencodeÚ file_contentÚindexÚhashÚbytesÚ file_hashÚjoinÚdigestÚreplaceÚnameÚ italic_angler3Zpango_font_metrics_get_ascentÚascentZpango_font_metrics_get_descentÚdescentZhb_face_get_upemZupemZhb_ot_color_has_pngÚpngZhb_ot_color_has_svgÚsvgÚstemvÚstemhÚbboxÚwidthsÚcmap) ÚselfÚ font_hashrQÚ pango_fontrRZ pango_metricsZhb_fontZhb_faceZ font_sizeZdescription_stringZshar9r9r:Ú__init__FsF         z Font.__init__cCs`d}tj|jƒr|d 7}d|jjƒkr.|d 7}|jjƒ}t|ƒdkr\tt|ƒƒdkr\|d 7}|S)Néér ésSerifrhérCé@r rhrr ) rZ pango_font_description_get_stylerJrKÚsplitrbÚvaluesÚlenÚset)rdÚflagsrbr9r9r:rqps  z Font.flagsN)Ú__name__Ú __module__Ú __qualname__rgÚpropertyrqr9r9r9r:r<Es*r<csÖeZdZdZ‡fdd„Zedd„ƒZ‡fdd„Z‡fdd „Zd*‡fd d „ Z ‡fdd„Z ‡fdd„Z d+‡fdd„ Z ‡fdd„Z ‡fdd„Zd,‡fdd„ Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Z‡ZS)-ÚStreamz4PDF stream object with context storing alpha states.c s tƒj|| Žd|_||_||_||_||_||_||_||_ d|_ |_ d|_ |_ d|_|_d|_|_tƒg|_tjdƒ|_tjdƒ|_tjdƒ|_dS)NTzunsigned int *zPangoRectangle *)ÚsuperrgÚcompressÚpage_rectangleÚ _documentÚ_statesÚ _x_objectsÚ _patternsÚ _shadingsÚ_imagesÚ_current_colorÚ_current_color_strokeÚ_current_alphaÚ_current_alpha_strokeÚ _current_fontZ_current_font_sizeÚ _old_fontZ_old_font_sizeÚMatrixÚ _ctm_stackrÚnewÚlengthZink_rectZ logical_rect) rdÚdocumentryÚstatesÚ x_objectsÚpatternsÚshadingsÚimagesÚargsÚkwargs)Ú __class__r9r:rgs"       zStream.__init__cCs |jdS)Nr éÿÿÿÿ)r‡)rdr9r9r:Úctm•sz Stream.ctmcstƒjƒ|jj|jƒdS)N)rwÚ push_stater‡Úappendr”)rd)r’r9r:r•™s zStream.push_statecs@tƒjƒd|_|_d|_|_d|_|jjƒ|js³sz'_write_pdf_attachment..z /EmbeddedFilez /FlateDecodeú<ú>)ZCheckSumÚSize)r½rèZParamsNzFailed to load attachment: %szattachment.binz /FilespecÚF)r½r ZUFZEFZDesc) Ú isinstanceÚtupler rrTrÏrÐrLÚmd5ÚzlibÚ compressobjÚiterrorNrxÚflushÚZ_FINISHr°r±Ú hexdigestrvÚ add_objectr rÚerrorrÚpathrrÚStringÚ referencer)ÚpdfÚ attachmentrrrZ source_typeÚ_Zuncompressed_lengthr r rxÚdataÚ compressedZ file_extraZ file_streamÚ exceptionÚfilenamer9)rr:Ú_write_pdf_attachmentšsX             rcCst|ƒ}g}�xþ|D]ö\}\}}}} } tj|j|jd|djd||dfƒ} tjtj|ƒ| dœƒ} |j| ƒt | || d�\} }|| d<| dkr¤| dd9<n||7}|rÌ|dj| d <| j|dd <| rì| dj| d <| dj| d <|dk �r|j| d<|j | ƒqW||fS)NZKidsriz/XYZr)ÚTitleÚDest)ÚparentÚCountÚclosedr ZPrevZNextÚFirstÚLastÚParentr“r“r“r“) ror°rÇÚobjectsÚpagesrr±rrÚcreate_bookmarksr–)Ú bookmarksrr"ÚcountÚoutlinesÚtitleÚpagerÆÚyrÿr¬rþÚoutlineZchildren_outlinesZchildren_countr9r9r:r*Ûs2   r*c Cs(xÚ|D]Ò}|\}}} } |j| dd…Ž\} } |j| dd…Ž\} }|dkrtjddtj| | | |gƒtjddiƒd œƒ}|dkrŽtj|ƒ|d <ntjd d tj|ƒd œƒ|d<|j|ƒd|krÈtjƒ|d<|dj|jƒqWxF|D]>}|\}}}|j||ƒ\}}|j|tj|jd||dgƒgƒqâWdS)z'Include hyperlinks in current PDF page.NrhÚinternalÚexternalz/Annotz/LinkÚWr)r½rÁÚRectZBSr!z/Actionz/URI)r½r¾ÚURIr­ÚAnnotsz/XYZ)r2r3)Útransform_pointr°r±rÇrrr–r)ÚlinksÚanchorsrõrr/ÚnamesÚlinkÚ link_typeZ link_targetÚ rectanglerÚx1Úy1Úx2Úy2ÚannotÚanchorÚ anchor_namerÆr0r9r9r:Úadd_hyperlinksøs2      rFcCs’|j}|||ƒ\}}||||ƒ\}} ||||ƒ\} } |||||ƒ\} } t||| | ƒ}t|| | | ƒ}t||| | ƒ}t|| | | ƒ}||||fS)z„Apply a transformation matrix to an axis-aligned rectangle. Return its axis-aligned bounding box as ``(x1, y1, x2, y2)``. )r8ÚminÚmax)rõÚpos_xÚpos_yrïrðr8r?r@rArBZx3Zy3Zx4Zy4Zbox_x1Zbox_y1Zbox_x2Zbox_y2r9r9r:Úrectangle_aabbsrKc csêtƒ}g}x`t|ƒD]T\}}|jgƒx@|jjƒD]2\}\}}||kr2|dj|||fƒ|j|ƒq2WqWxx|D]p}g}xV|jD]L} | \} }} } | dkrÄ||kr°tjd|ƒqÎ|j| || dfƒq‚|j| ƒq‚W||j dƒfVqrWdS)aþResolve internal hyperlinks. Links to a missing anchor are removed with a warning. If multiple anchors have the same name, the first one is used. :returns: A generator yielding lists (one per page) like :attr:`Page.links`, except that ``target`` for internal hyperlinks is ``(page_number, x, y)`` instead of an anchor name. The page number is a 0-based index into the :attr:`pages` list, and ``x, y`` are in CSS pixels from the top-left of the page. r r2z(No anchor #%s for internal URI referenceNrr“) rpÚ enumerater–r:ÚitemsÚaddr9rrr˜) r)r:Z paged_anchorsrÚr/rEÚpoint_xÚpoint_yÚ page_linksr<r=r>rr9r9r:Ú resolve_links+s*    rRcsReZdZd‡fdd„ Zdd„Zedd „ƒZed d „ƒZd d „Zedd„ƒZ ‡Z S)r†r rNcs4|dkr$||dg||dg||dgg}tƒj|ƒdS)Nrr )rwrg)rdršr›rœr�ržrŸrõ)r’r9r:rgUszMatrix.__init__cs\tˆdƒtˆƒko0tˆdƒko0dkns:t‚t‡‡fdd„ttˆƒƒDƒd�S)Nrrics&g|]‰‡‡‡fdd„tdƒDƒ‘qS)cs,g|]$‰t‡‡‡‡fdd„tdƒDƒƒ‘qS)c3s&|]}ˆˆ|ˆ|ˆVqdS)Nr9)r@Úk)rÚÚjÚotherrdr9r:rB]sz:Matrix.__matmul__....ri)ÚsumÚrange)r@)rÚrUrd)rTr:ú ]sz0Matrix.__matmul__...ri)rW)r@)rUrd)rÚr:rX]sz%Matrix.__matmul__..)rõ)ror1r†rW)rdrUr9)rUrdr:Ú __matmul__Zs: zMatrix.__matmul__c Csà|j}t|dd|dd|dd|dd||dd|dd|dd|dd| |dd|dd|dd|dd|g|dd|dd|dd|dd| |dd|dd|dd|dd||dd|dd|dd|dd| g|dd|dd|dd|dd||dd|dd|dd|dd| |dd|dd|dd|dd|ggd�S)Nr rhr)rõ)Ú determinantr†)rdr�r9r9r:Úinvert`s24442624z Matrix.invertcCsÜt|ƒt|dƒkodkns(t‚|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|ddS)Nrrir rh)ror1)rdr9r9r:rZus(vzMatrix.determinantcCs"t||dggd�|ddd…S)Nr )rõrrh)r†)rdrÆr0r9r9r:r8}szMatrix.transform_pointcCs0dd„|Dƒ\\}}\}}\}}||||||fS)NcSsg|]}|dd…‘qS)Nrhr9)r@Úcolumnr9r9r:rX‚sz!Matrix.values..r9)rdršr›rœr�ržrŸr9r9r:rn€s z Matrix.values)r rrr rrN) rrrsrtrgrYrur[rZr8rnrûr9r9)r’r:r†Ts   r†c@s,eZdZdZdd„Zd dd„Zd d d „ZdS)ÚPagez›Represents a single rendered page. .. versionadded:: 0.15 Should be obtained from :attr:`Document.pages` but not instantiated directly. csNˆjƒ|_ˆjƒ|_‡fdd„dDƒ|_g|_g|_i|_|jˆƒˆ|_ dS)Ncs i|]}ˆjd|›�j|“qS)Zbleed_)ÚstyleÚvalue)r@Zside)Úpage_boxr9r:ú ˜sz!Page.__init__..ÚtopÚrightÚbottomÚleft)rbrcrdre) Z margin_widthrïZ margin_heightrðÚbleedr+r9r:Ú_gather_links_and_bookmarksÚ _page_box)rdr`r9)r`r:rg�s     z Page.__init__Nc"Cs4|jdot|tjƒ �rˆ|jƒ}|jƒ}|jd\}}t||ƒ}t||ƒ}|jƒ|}|jƒ|}t ||d�} xæ|jdD]Ø\} } d\} } }}}}| dkr¦| \} }n˜| dkrÎt j | ƒ} }t j | ƒ} | }np| dk�röt| d|ƒ}t| d|ƒ}nH| d k�r t j | dƒt j | dƒ} }n| d k�s.t‚| \} } }}}}t | | ||||ƒ| } q|Wt | | d�| |_|�r€|j|} n|j} n|} |j}|jd d k�r¨d}n |jd }|jd }|jd}|jd}|�oØ|}|�oòt|tjtjfƒ }|�o||jk}|�s|�s|�r|jƒ\}}}}|�r¼|\}}|dk�sBt‚|\}} t| tƒ�sZt‚|dk�rp|j�rpd}| �r’|| t| ||||ƒ|jf}n|| ||||||f|jf}|jj|ƒ| �rÞ|�sÎ|�rÞ| j||ƒ\}}|�rü|jj||||f|fƒ|�r||f|j|<x|jƒD]}!|j|!| ƒ�qWdS)Nr™Ztransform_origin)ržrŸr rÚscaleÚrotateÚ translateZskewrõÚbookmark_levelÚnoneZbookmark_stater<rDrr3r)r rrr rr)r^r rZ InlineBoxÚ border_widthÚ border_heightrZ border_box_xZ border_box_yr†ÚmathÚcosÚsinÚtanr1Ztransformation_matrixÚbookmark_labelZTextBoxZLineBoxr:Zhit_arearOÚ is_attachmentrKZ download_namer9r–r8r+Z all_childrenrg)"rdZboxZ parent_matrixrnroZorigin_xZorigin_yZoffset_xZoffset_yrõrYr�ršr›rœr�ržrŸrtrlr¬r<rEZ has_bookmarkZhas_linkZ has_anchorrIrJrïrðÚ token_typer=ÚtargetÚchildr9r9r:rg¹s„                  z Page._gather_links_and_bookmarksrr Fc Cs^t|ƒ�L|j||||d�|rD|j}|j}|jdd||ƒ|jƒt|j|ƒWdQRXdS)a Paint the page into the PDF file. :type stream: ``document.Stream`` :param stream: A document stream. :param float left_x: X coordinate of the left of the page, in PDF points. :param float top_y: Y coordinate of the top of the page, in PDF points. :param float scale: Zoom scale. :param bool clip: Whether to clip/cut content outside the page. If false or not provided, content can overflow. )ršr�ržrŸrN)rr™rïrðr>Úcliprrh)rdr Zleft_xZtop_yriryrïrðr9r9r:Úpaints z Page.paint)N)rrr F)rrrsrtrúrgrgrzr9r9r9r:r]†s* Wr]c@seZdZdZddd„ZdS)ÚDocumentMetadataz�Meta-information belonging to a whole :class:`Document`. .. versionadded:: 0.20 New attributes may be added in future versions of WeasyPrint. Nc Cs@||_|p g|_||_|pg|_||_||_||_|p8g|_dS)N)r.ÚauthorsrÚkeywordsÚ generatorÚcreatedÚmodifiedÚ attachments) rdr.r|rr}r~rr€r�r9r9r:rg4s  zDocumentMetadata.__init__)NNNNNNNN)rrrsrtrúrgr9r9r9r:r{,sr{c@sheZdZdZeddd„ƒZeddd„ƒZd d „Zd d „Zd d„Z ddd„Z dd„Z dd„Z ddd„Z dS)ÚDocumentaŸA rendered document ready to be painted in a pydyf stream. Typically obtained from :meth:`HTML.render() `, but can also be instantiated directly with a list of :class:`pages `, a set of :class:`metadata `, a :func:`url_fetcher ` function, and a :class:`font_config `. FrµNcCs¸|dkrtƒ}|dkrtƒ}tƒ}g} g} |dkr6in|}x6|pBgD]*} t| dƒsdt| |j||d�} | j| ƒqDWt|| |||| |ƒ} tj t ||j |d�} t j dƒt| | |||ƒ}|S)NZmatcher)rÚ media_typeÚ font_configÚ counter_style)Úcacherròz&Step 4 - Creating formatting structure)rrrÚhasattrr rƒr–r Ú functoolsÚpartialÚoriginal_get_image_from_urirrrìr)ÚclsÚhtmlÚ stylesheetsÚpresentational_hintsròr„r…Ú image_cacheÚtarget_collectorZ page_rulesZuser_stylesheetsÚcssÚ style_forrÚcontextr9r9r:Ú_build_layout_contextns2     zDocument._build_layout_contextc Csˆ|dkrtƒ}|dkrtƒ}|j|||||||ƒ}t|j|j|j|j|j||j ƒ} t || |ƒ} |dd„| Dƒt ft |ƒŽ|j ||ƒ} | S)NcSsg|] }t|ƒ‘qSr9)r])r@r`r9r9r:rX¢sz$Document._render..)rrr”rZ etree_elementr’rÚbase_urlr�Z footnotesrr{rr) r‹rŒr�rŽròr„r…r�r“Zroot_boxZ page_boxesZ renderingr9r9r:Ú_render�s"       zDocument._rendercCs>d|kr |ddkst‚||d<|j|||ƒ|j|ƒ|jS)Nr<)r1Ú_use_referencesrr)rdrrÉr�rµr9r9r:Ú_reference_resources§s  zDocument._reference_resourcesc Cs x´|jdiƒjƒD] \}}|dkrD||}|jdk rD|j|d|<q|j|ƒ|j|d|<d|jkrˆ|j|jdƒ|jdj|jd<d|jkr|j||jd||dƒ|jd<qWx^|jdiƒjƒD]J\}}|j|ƒ|j|d|<d|jkrÈ|j||jd||dƒ|jd<qÈWx6|jdiƒjƒD]"\}}|j|ƒ|j|d|<�q(WxL|jdiƒjƒD]8\}}d|k�r`d|dk�r`|ddj|dd<�q`WdS) Nr¹rërÃr<rºr»r¸ÚG)ÚgetrMÚnumberrrrÅr˜) rdrrÉr�r8Zx_objectrörør²r9r9r:r—¯s6         zDocument._use_referencescCs(||_||_||_i|_||_||_dS)N)r)ÚmetadatarrµÚ _font_configÚ_optimize_size)rdr)rœrr„ròr9r9r:rgÚs zDocument.__init__ÚallcCs>|dkr|j}nt|tƒs"t|ƒ}t|ƒ||j|j|j|jƒS)apTake a subset of the pages. .. versionadded:: 0.15 :type pages: :term:`iterable` :param pages: An iterable of :class:`Page` objects from :attr:`pages`. :return: A new :class:`Document` object. Examples: Write two PDF files for odd-numbered and even-numbered pages:: # Python lists count from 0 but pages are numbered from 1. # [::2] is a slice of even list indexes but odd-numbered pages. document.copy(document.pages[::2]).write_pdf('odd_pages.pdf') document.copy(document.pages[1::2]).write_pdf('even_pages.pdf') Combine multiple documents into one PDF file, using metadata from the first:: all_pages = [p for doc in documents for p in doc.pages] documents[0].copy(all_pages).write_pdf('combined.pdf') rŸ)r)r ÚlistÚtyperœrr�rž)rdr)r9r9r:Úcopyòs z Document.copycCsHg}g}|g}d}tƒ}x*t|jƒD]\}}|j||||||ƒ}q$W|S)asMake a tree of all bookmarks in the document. .. versionadded:: 0.15 :return: A list of bookmark subtrees. A subtree is ``(label, target, children, state)``. ``label`` is a string, ``target`` is ``(page_number, x, y)`` like in :meth:`resolve_links`, and ``children`` is a list of child subtrees. r)r†rLr)Ú_make_page_bookmark_tree)rdÚrootÚskipped_levelsÚ last_by_depthÚprevious_levelrõÚ page_numberr/r9r9r:Úmake_bookmark_trees  zDocument.make_bookmark_treecCsòxì|jD]â\}}\} } } ||kr4|j||dƒn<|} x| |krT| d|jƒ7} q:W| |krp|j| |dƒ|}|t|ƒ} | t|ƒks�t‚| dksœt‚g}|j| | ƒ\} } t||| | f|| ƒ}|| dj|ƒ|| d…=|j|ƒqW|S)z-Make a tree of all bookmarks in a given page.r N)r+r–r˜rVror1r8rü)rdr/r¥r¦r§r¨rõÚlevelrýrOrPr¬ÚtempÚdepthrÿZsubtreer9r9r:r£0s(    z!Document._make_page_bookmark_treer c[Cs2 |d}tjdƒtjƒ}tjƒ}tjƒ}tjƒ} tjƒ} i} tj||| | dœƒ} |j| ƒg} tt|jƒƒ}dd„|Dƒ}i}xH|D]@}x:|D]2\}}}}|dkr�||kr�t ||df|j ƒ||<q�Wq†Wg}g}|g}d}�xút t |j||ƒƒD�]â\}\}}}t |dd| d|j|ƒ}|\}}||j|jd |jd } ||j|jd |jd }!| |jd }"| |jd }#|"| }$|#|!}%|"||#||$|"||%|#|f}&t||&||| | | ƒ}'|'jd|j|d�|j|'|d�|j|'ƒtjd|jjtj|"|#|$|%gƒ|'j| jdœƒ}(|j|(ƒt|||||(| ƒdd„|jjƒDƒ})|"|)d }*|#|)d }+|$|)d },|%|)d }-|*td|)d ƒ}.|+td|)d ƒ}/|,td|)d ƒ}0|-td|)d ƒ}1tj|*|+|,|-gƒ|(d<tj|.|/|0|1gƒ|(d<xÌ|D]Ä\}}}}||}2|dk�rú|2dk �rú|j|dd…Ž|j|dd…Ž˜}tjdtj|ƒdtjƒ|2jtjdtjgddtj|ƒddœƒiƒdœƒ}3|j|3ƒd|(k�r¬tjƒ|(d<|(dj|3jƒ�qúW|j||||||ƒ}qòWt||ƒ\}4}5|4�rx>|j,j-ƒD]0}?|?j.|>k�rV|>|?j.j|?ƒn |?g|>|?j.<�q4Wi}@�xd|>jƒD�]V\}A}B|Bdj/};d2|j0k�rDi}Cx|BD]}?|C|?j1–}C�q¢Wt2j3|;ƒ}Dt2j3ƒ}EyZt4|D|Bdj5d3�}Ft6j7d4d4d4d4d5�}Gt6j8|Gƒ}H|Hj9|Cd6�|Hj6|Fƒ|Fj:|Eƒ|Ej;ƒ};Wn td7ƒYnX|Bdj?�s\|Bdj@�rbt2j3|;ƒ}DyÚt4|D|Bdj5d3�}Fd8|Fk�sŽd9|Fk�rØtAjBd8ƒƒ|Fd8<tAjBd9ƒƒ|Fd9<|FjCƒ|Fd9_Dd:d„|Fd9jDDƒ|Fd9_En,x*|Fd9jED]}ItAjFd9ƒjGƒ|Fd9|I<�qäWxd�D]}J|J|Fk�r |F|J=�q Wt2j3ƒ}K|Fj:|Kƒ|Kj;ƒ};Wn td>ƒYnX|;dd?…d@k�rxdAndB}L|LdAk�r–tjdCdDiƒ}MntjdEtH|;ƒiƒ}Mtj|;g|Md4dF�}N|j|Nƒ|Nj|@|A<�qxW�xX|j,j-ƒD�]H}?tjƒ}OxPtI|?jJƒD]B}<|..r9)r@rQZ page_anchorsr9r9r:rX€sz&Document.write_pdf..rNrrercrbrdr )r�rŸ)riz/Page)r½r'ZMediaBoxZContentsrÃcSsi|]\}}|d|“qS)gè?r9)r@r8r_r9r9r:raÃsz&Document.write_pdf..é ZTrimBoxZBleedBoxrhz/Annotz/FileAttachmentÚNz/XObjectz/Form)r½rÁrÂZLength)r½r5rÁÚTZFSZAPr7)r#r%r&r'ZOutlineszStep 7 - Adding PDF metadatar z, ÚAuthorÚSubjectZKeywordsZCreatorz WeasyPrint ZProducerrZ CreationDater€ZModDateZNamesZ EmbeddedFilesrµ)Z fontNumberT)Z retain_gidsZpassthrough_tablesZignore_missing_glyphsZ notdef_glyph)ZgidszUnable to optimize fontZlocaÚglyfcSsi|]}tjdƒjƒ|“qS)r²)rÚgetTableModuleÚGlyph)r@rYr9r9r:raZsÚCBDTÚCBLCúSVG zUnable to save emoji fontrksOTTOZotfZttfrÁz /OpenTypeZLength1)rxr½z/FontDescriptorZFontNameZ FontFamilyZFlagsZFontBBoxZ ItalicAngleZAscentZDescentZ CapHeightriZStemVZStemHZFontFileÚ3Ú2z/Fontz /CIDFontTypeÚ0ZAdobeZIdentity)ZRegistryZOrderingZ Supplement)r½rÁÚBaseFontZ CIDSystemInfor4ZFontDescriptors$/CIDInit /ProcSet findresource begins 12 dict begins begincmaps/CIDSystemInfos<< /Registry (Adobe)s/Ordering (UCS)s /Supplement 0s>> defs!/CMapName /Adobe-Identity-UCS defs/CMapType 2 defs1 begincodespaceranges <0000> sendcodespacerangez beginbfcharrEr!css|]}|jdƒjƒ›VqdS)z utf-16-beN)rPÚhex)r@rAr9r9r:rB­sz%Document.write_pdf..rZ04xz> rr¤r¥r¦r§r¨r/Zlinks_and_anchorsrõr9r:Z page_widthZ page_heightrerbrcrdryr Zpdf_pagerfZ trim_leftZtrim_topZ trim_rightZ trim_bottomZ bleed_leftZ bleed_topZ bleed_rightZ bleed_bottomZ annot_filerCr-r,Zoutlines_dictionaryr1Zpdf_attachmentsrZpdf_attachmentÚcontentrÚZ pdf_fontsZfonts_by_file_hashr¨Zfont_references_by_file_hashrUrµrcZ full_fontZoptimized_fontZttfontÚoptionsZ subsetterZglyphZ table_nameZ output_fontZ font_typeZ font_extraZ font_streamrbZcurrent_widthsZfont_descriptorZsubfont_dictionaryZ to_unicodeÚtextZunicode_codepointsZfont_dictionaryZ name_arrayrDZfile_objÚfdr9r9r:Ú write_pdfOs<                                                                "            zDocument.write_pdf©rµ)FrÎNNN©rµ)FrÏNNN)rŸ)Nr NN)rrrsrtrúÚ classmethodr”r–r˜r—rgr¢r©r£rÍr9r9r9r:r‚cs    + #r‚)rýrþrÿr¬)N)KrúÚ collectionsrˆrLrÏrprÆrÔr Úos.pathrÚ urllib.parserrr°Z fontToolsrZfontTools.ttLibrrrr!r r r r‘r Z css.countersrZ css.targetsrZdrawrrZformatting_structurerZformatting_structure.buildrrŒrrr�rrŠZlayoutrrZlayout.percentrÚloggerrrZtext.ffirrrZ text.fontsrÚurlsr r;r<rvÚ namedtuplerürr*rFrKrRr r†r]r{r‚r9r9r9r:ÚsZ           8A !)2'7