§
    ¥”jƒ"  ã                   ój  — d Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZ ddlmZmZ dd	lmZ  ed
¬¦  «         G d„ de¦  «        ¦   «         Z ej        ej        j        ej        j        ¬¦  «        ZdZ ed
¬¦  «         G d„ de¦  «        ¦   «         Z G d„ de¦  «        ZdS )z-Utilities related to text rendering & layout.é    )Ú	dataclassÚfield)ÚOptionalÚTuple)ÚConfigurableMixin)ÚConfigurationError)Úlayout)Ú
PdfContentÚPdfResourcesÚResourceType)ÚFontEngineFactoryÚSimpleFontEngineFactory)Úpdf_nameT)Úfrozenc                   óŽ   ‡ — e Zd ZU dZ eej        ¬¦  «        Zee	d<   	 dZ
ee	d<   	 dZee         e	d<   	 eˆ fd„¦   «         Zˆ xZS )	Ú	TextStylez*Container for basic test styling settings.)Údefault_factoryÚfonté
   Ú	font_sizeNÚleadingc                 óB  •— t          ¦   «                              |¦  «         	 |d         }t          |t          ¦  «        r*|                     d¦  «        s$|                     d¦  «        st          d¦  «        ‚ddlm}  ||¦  «        |d<   d S # t          $ r Y d S w xY w)Nr   z.otfz.ttfz;'font' must be a path to an OpenType or TrueType font file.r   )ÚGlyphAccumulatorFactory)	ÚsuperÚprocess_entriesÚ
isinstanceÚstrÚendswithr   Úpyhanko.pdf_utils.font.opentyper   ÚKeyError)ÚclsÚconfig_dictÚfcr   Ú	__class__s       €úe/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/pdf_utils/text.pyr   zTextStyle.process_entries$   sÏ   ø€ å‰Œ×Ò Ñ,Ô,Ð,ð	Ø˜VÔ$ˆBÝ˜b¥#Ñ&Ô&ð Ø—’˜FÑ#Ô#ðØ')§{¢{°6Ñ':Ô':ðõ )ð*ñô ð ð
 PÐOÐOÐOÐOÐOà"9Ð"9¸"Ñ"=Ô"=ˆK˜ÑÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøs   ¤A*B Â
BÂB)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Ú__annotations__r   Úintr   r   Úclassmethodr   Ú__classcell__©r$   s   @r%   r   r      s±   ø€ € € € € € à4Ð4à#˜eØ/Ô?ðñ ô €DÐ
ð ð ñ ðð
 €IˆsÐÐÑðð "€GˆX�cŒ]Ð!Ð!Ñ!ðð ðð ð ð ñ „[ðð ð ð ð ó    r   )Úx_alignÚy_alignr   c                   ó†   — e Zd ZU dZdZeed<   	 dZee	j
                 ed<   	 dZeed<   	 dZeeeeef                  ed<   dS )	ÚTextBoxStylez7Extension of :class:`.TextStyle` for use in text boxes.r   Úborder_widthNÚbox_layout_ruleFÚvertical_textÚ
text_color)r&   r'   r(   r)   r4   r+   r*   r5   r   r	   ÚSimpleBoxLayoutRuler6   Úboolr7   r   Úfloat© r/   r%   r3   r3   @   s‹   € € € € € € àAÐAà€L�#ÐÐÑðð =A€O�X˜fÔ8Ô9Ð@Ð@Ñ@ðð  €M�4ÐÐÑðð 8<€J�˜˜u e¨UÐ2Ô3Ô4Ð;Ð;Ñ;ðð r/   r3   c                   óä   ‡ — e Zd ZdZ	 	 	 ddedee         deej                 fˆ fd„Z	d„ Z
ed	„ ¦   «         Zed
„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zedefd„¦   «         Zd„ Zˆ xZS )ÚTextBoxzªImplementation of a text box that implements the :class:`.PdfContent`
    interface.

    .. note::
        Text boxes currently don't offer automatic word wrapping.
    NÚF1ÚstyleÚ	resourcesÚboxc                 óð   •— t          ¦   «                              |||¬¦  «         || _        d | _        d x| _        | _        || _        |j                             |¦  «        | _	        dx| _
        | _        d S )N)ÚwriterrA   r   )r   Ú__init__r?   Ú_contentÚ_content_linesÚ_wrapped_linesÚ	font_namer   Úcreate_font_engineÚfont_engineÚ_nat_text_heightÚ_nat_text_width)Úselfr?   rC   r@   rA   rH   r$   s         €r%   rD   zTextBox.__init__h   sw   ø€ õ 	‰Œ×Ò˜¨6°sÐÑ;Ô;Ð;ØˆŒ
ØˆŒØ48Ð8ˆÔ˜dÔ1Ø"ˆŒØ œ:×8Ò8¸Ñ@Ô@ˆÔØ78Ð8ˆÔ Ô 4Ð 4Ð 4r/   c                 ót  — | j         }|                     |¦  «        }|j        | j        j        z  }|j        | j        j        z  }|j        }|j        rO| }| }| j        j        }	| j	        }
|	r||
z  }t          |¦  «        }n||
z  }t          |¦  «        }|d||fz  z  }n|dz  }t          |¦  «        }||fS )Ns	    %g %g Tds    T*)rJ   ÚshapeÚ	x_advancer?   r   Ú	y_advanceÚgraphics_opsÚuses_complex_positioningr6   r   Úabs)rM   ÚtxtrJ   Úshape_resultrP   rQ   ÚopsÚ	newline_xÚ	newline_yÚverticalr   Úextents               r%   Úput_string_linezTextBox.put_string_linex   sÝ   € ØÔ&ˆØ"×(Ò(¨Ñ-Ô-ˆØ Ô*¨T¬ZÔ-AÑAˆ	Ø Ô*¨T¬ZÔ-AÑAˆ	ØÔ'ˆØÔ/ð 	$à"˜
ˆIØ"˜
ˆIð ”zÔ/ˆHØ”lˆGØð (Ø˜WÑ$�	Ý˜Y™œ��à˜WÑ$�	Ý˜Y™œ�à�< 9¨iÐ"8Ñ8Ñ8ˆCˆCà�6‰MˆCÝ˜‘^”^ˆFà�Fˆ{Ðr/   c                 ó   — | j         S )zZ
        :return:
            Text content of the text box, broken up into lines.
        )rF   ©rM   s    r%   Úcontent_lineszTextBox.content_lines”   s   € ð Ô"Ð"r/   c                 ó   — | j         S )zú
        :return:
            The actual text content of the text box.
            This is a modifiable property.

            In textboxes that don't have a fixed size, setting this property
            can cause the text box to be resized.
        )rE   r^   s    r%   ÚcontentzTextBox.contentœ   s   € ð Œ}Ðr/   c                 ó¦  — || _         d}d}| j        }g }| j        j        }|                     d¦  «        D ]k}|                      |¦  «        \  }}	t          |	¦  «        }
|rt          ||
¦  «        }||z  }nt          ||
¦  «        }||z  }|                     |¦  «         Œl|| _	        |                     d¦  «        | _
        || _        || _        d S )Nr   ú
)rE   r   r?   r6   Úsplitr\   ÚroundÚmaxÚappendrG   rF   rL   rK   )rM   ra   Únatural_text_widthÚnatural_text_heightr   ÚlinesrZ   ÚlineÚwrapped_liner[   Úrounded_extents              r%   ra   zTextBox.content¨   sõ   € ð  ˆŒàÐØÐØ”,ˆØˆØ”:Ô+ˆØ—M’M $Ñ'Ô'ð 		'ð 		'ˆDØ#'×#7Ò#7¸Ñ#=Ô#=Ñ ˆL˜&Ý" 6™]œ]ˆNØð /Ý&)Ð*=¸~Ñ&NÔ&NÐ#Ø" gÑ-Ð"Ð"å%(Ð);¸^Ñ%LÔ%LÐ"Ø# wÑ.Ð#Ø�LŠL˜Ñ&Ô&Ð&Ð&Ø#ˆÔØ%Ÿmšm¨DÑ1Ô1ˆÔà1ˆÔØ 3ˆÔÐÐr/   c                 ó:   — | j         }|j        €|j        n|j        S )zó
        :return:
            The effective leading value, i.e. the
            :attr:`~.TextStyle.leading` attribute of the associated
            :class:`.TextBoxStyle`, or :attr:`~.TextStyle.font_size` if
            not specified.
        )r?   r   r   )rM   r?   s     r%   r   zTextBox.leadingÃ   s    € ð ”
ˆØ"'¤-Ð"7ˆuŒˆ¸U¼]ÐJr/   Úreturnc                 ó`   — d| j                              d¦  «        | j        j        | j        fz  S )Nó   /%s %d Tf %d TLÚlatin1)rH   Úencoder?   r   r   r^   s    r%   Ú	da_stringzTextBox.da_stringÏ   s4   € à!ØŒN×!Ò! (Ñ+Ô+ØŒJÔ ØŒLð%
ñ 
ð 	
r/   c                 ó~  — | j         }|                      t          j        t	          d| j        z   ¦  «        | j                             ¦   «         ¬¦  «         | j        }| j	        }| j
        }| j         j        }| j         j        }|€>t          j                             t           ¦  «        }t"                               |¦  «        }|                     | j        ||¦  «        }g }	|j        r4|	                     d|j        | j        j        | j        j        fz  ¦  «         |	                     |                     ¦   «         ¦  «         | j         j        r"|	                     d| j         j        z  ¦  «         |	dd| j        gz  }	|	                     d| j                             d¦  «        |j        |fz  ¦  «         |rd	||j        z  |d
z  z
  ||j        z  fz  }
nd||j        z  |z
  z  }
|	                     |
¦  «         |	                      | j!        ¦  «         |	                     d¦  «         d "                    |	¦  «        S )Nú/)ÚcategoryÚnameÚvalues   q %g w 0 0 %g %g re S Qs   %g %g %g rgs	   /Tx BMC qs   BTrq   rr   s   %g %g Tdé   s   0 %g Tds   ET Q EMCó    )#r?   Úset_resourcer   ÚFONTr   rH   rJ   Úas_resourcer   rL   rK   r6   r5   r	   ÚMarginsÚuniformÚDEFAULT_TEXT_BOX_MARGINÚDEFAULT_BOX_LAYOUTÚsubstitute_marginsÚfitrA   r4   rg   ÚwidthÚheightÚas_cmr7   rt   rs   r   Úx_scaleÚy_scaleÚextendrG   Újoin)rM   r?   r   Únat_text_widthÚnat_text_heightrZ   Ú
box_layoutÚmarginsÚpositioningÚcommand_streamÚtext_cursor_starts              r%   ÚrenderzTextBox.render×   s`  € Ø”
ˆà×ÒÝ!Ô&Ý˜# ¤Ñ.Ñ/Ô/ØÔ"×.Ò.Ñ0Ô0ð 	ñ 	
ô 	
ð 	
ð
 ”,ˆàÔ-ˆØÔ/ˆà”:Ô+ˆà”ZÔ/ˆ
ØÐÝ”n×,Ò,Õ-DÑEÔEˆGÝ+×>Ò>¸wÑGÔGˆJà —n’n T¤X¨~¸ÑOÔOˆàˆð Ôð 	Ø×!Ò!Ø*ØÔ% t¤x¤~°t´x´ÐGñHñô ð ð 	×Ò˜k×/Ò/Ñ1Ô1Ñ2Ô2Ð2àŒ:Ô ð 	Ø×!Ò!Ø ¤Ô!6Ñ6ñô ð ð 	˜<¨°´Ð?Ñ?ˆà×ÒØØŒ~×$Ò$ XÑ.Ô.°´ÀÐIñJñ	
ô 	
ð 	
ð ð 
	Ø +ð  Ô!4Ñ4°wÀ±{ÑBØ +Ô"5Ñ5ð	/ñ !ÐÐð !+Ø +Ô"5Ñ5¸Ñ?ñ!Ðð 	×ÒÐ/Ñ0Ô0Ð0à×Ò˜dÔ1Ñ2Ô2Ð2Ø×Ò˜kÑ*Ô*Ð*Ø�yŠy˜Ñ(Ô(Ð(r/   )NNr>   )r&   r'   r(   r)   r3   r   r   r	   ÚBoxConstraintsrD   r\   Úpropertyr_   ra   Úsetterr   Úbytesrt   r“   r-   r.   s   @r%   r=   r=   `   s=  ø€ € € € € ðð ð -1Ø/3Øð9ð 9àð9ð ˜LÔ)ð	9ð
 �fÔ+Ô,ð9ð 9ð 9ð 9ð 9ð 9ð ð ð ð8 ð#ð #ñ „Xð#ð ð	ð 	ñ „Xð	ð „^ð4ð 4ñ „^ð4ð4 ð	Kð 	Kñ „Xð	Kð ð
˜5ð 
ð 
ð 
ñ „Xð
ð@)ð @)ð @)ð @)ð @)ð @)ð @)r/   r=   N)r)   Údataclassesr   r   Útypingr   r   Úpyhanko.config.apir   Úpyhanko.config.errorsr   Úpyhanko.pdf_utilsr	   Úpyhanko.pdf_utils.contentr
   r   r   Úpyhanko.pdf_utils.fontr   r   Úpyhanko.pdf_utils.genericr   r   r8   ÚAxisAlignmentÚ	ALIGN_MIDr‚   r�   r3   r=   r;   r/   r%   ú<module>r¢      s·  ðØ 3Ð 3à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø $Ð $Ð $Ð $Ð $Ð $Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ .Ð .Ð .Ð .Ð .Ð .ð €�$ÐÑÔð&ð &ð &ð &ð &Ð!ñ &ô &ñ Ôð&ðR 0�VÔ/ØÔ Ô*ØÔ Ô*ðñ ô Ð ð
 Ð ð €�$ÐÑÔðð ð ð ð �9ñ ô ñ Ôðð>w)ð w)ð w)ð w)ð w)ˆjñ w)ô w)ð w)ð w)ð w)r/   