§
    ¥”j»m  ã                   óÜ   — d Z ddlZddlmZ ddlZddlmZmZmZ ddl	m
Z
mZm	Z	mZmZmZ ddlmZmZ d„ Z	 dd
„Z G d„ d¦  «        Zd„ Z	 dd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )z!Decide where to break text lines.é    N)Úinfé   )Ú
LST_TO_ISOÚPANGO_DIRECTIONÚPANGO_WRAP_MODE)Ú
FROM_UNITSÚTO_UNITSÚffiÚgobjectÚpangoÚunicode_to_char_p)Úfont_featuresÚget_font_descriptionc                 ó  — t          j        d¦  «        }t          j        | t           j        |¦  «         |j        t          z  }|j        t          z  }t          j        |¦  «         |d         dk    r||d         z  }||fS )zsGet logical width and height of the given ``line``.

    ``style`` is used to add letter spacing (if needed).

    úPangoRectangle *Úletter_spacingÚnormal)	r
   Únewr   Úpango_layout_line_get_extentsÚNULLÚwidthr   ÚheightÚrelease)ÚlineÚstyleÚlogical_extentsr   r   s        úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/text/line_break.pyÚ	line_sizer      s€   € õ ”gÐ0Ñ1Ô1€OÝ	Ô'¨­c¬h¸ÑHÔHÐHØÔ!¥JÑ.€EØÔ#¥jÑ0€FÝ„K�Ñ Ô Ð ØÐÔ (Ò*Ð*Ø�Ð'Ô(Ñ(ˆØ�&ˆ=Ðó    Fc                 ó.  — | j         }|r%|t          |                     ¦   «         ¦  «        z  }n˜|r–t          j        |j        d¦  «         |                     ¦   «         d |…                              ¦   «         }	|r|	                     d¦  «        }	|                     |	¦  «         | 	                    ¦   «         \  } }
| �| j         nd}t          | |¦  «        \  }}t          j        |j        ¦  «        t          z  }|                     ¦   «          ||||||fS )Néÿÿÿÿú r   )ÚlengthÚlenÚencoder   Úpango_layout_set_widthÚlayoutÚdecodeÚrstripÚset_textÚget_first_liner   Úpango_layout_get_baseliner   Ú
deactivate)Ú
first_lineÚtextr'   Ú	resume_atÚspace_collapser   Ú
hyphenatedÚhyphenation_characterr#   Úfirst_line_textÚ_r   r   Úbaselines                 r   Úfirst_line_metricsr7      s  € àÔ€FØð DØ•#Ð+×2Ò2Ñ4Ô4Ñ5Ô5Ñ5ˆˆØ	ð Dõ 	Ô$ V¤]°BÑ7Ô7Ð7ð Ÿ+š+™-œ-¨¨¨Ô0×7Ò7Ñ9Ô9ˆð ð 	:Ø-×4Ò4°SÑ9Ô9ˆOà�Š˜Ñ(Ô(Ð(Ø×-Ò-Ñ/Ô/‰ˆ
�AØ&0Ð&<�Ô"Ð"À!ˆå˜j¨%Ñ0Ô0�M€Eˆ6ÝÔ.¨v¬}Ñ=Ô=Å
ÑJ€HØ
×ÒÑÔÐØ�6˜9 e¨V°XÐ=Ð=r   c                   ó@   — e Zd ZdZdd„Zd„ Zd„ Zdd„Zd	„ Zd
„ Z	d„ Z
dS )ÚLayoutz2Object holding PangoLayout-related cdata pointers.r   Nc                 óL   — || _         |                      |¦  «         || _        d S ©N)Újustification_spacingÚsetupÚ	max_width)Úselfr   r<   r>   s       r   Ú__init__zLayout.__init__;   s'   € Ø%:ˆÔ"Ø�
Š
�5ÑÔÐØ"ˆŒˆˆr   c                 óÒ  — || _         d| _        |j        j        }t	          j        t          j        |¦  «        t          j	        ¦  «        }t          j
        |d¦  «         t          j        |t          |d                  ¦  «         |d         dk    rDt          t          j        |d                              ¦   «         |d         ¦  «        ¦  «        \  }}n;|d         rt          |d         ¦  «        \  }}nd }t          j        ¦   «         | _        |r3t          j        |¦  «        | _        t          j        || j        ¦  «         t+          |d         t,          ¦  «        r
J d¦   «         ‚t/          |¦  «        }t	          j        t          j        |¦  «        t          j	        ¦  «        | _        t          j        | j        d¦  «         t          j        | j        |¦  «         |d	         }|d
k    rÞt	          j        t          j        ||| j        ¦  «        t          j        ¦  «        }t<          t          j        |¦  «        z  | _         t<          t          j!        |¦  «        z  | _"        t<          t          j#        |¦  «        z  | _$        t<          t          j%        |¦  «        z  | _&        t<          t          j'        |¦  «        z  | _(        nd | _         d | _"        d | _$        tS          |d         |d         |d         |d         |d         |d         |d         |d         ¦  «        }	|	r¹d *                    d„ |	 +                    ¦   «         D ¦   «         ¦  «         ,                    ¦   «         }	|j        j)         -                    |	t          j.        |	¦  «        ¦  «        }
t          j/        ¦   «         }t          j0        ||
¦  «         t          j1        | j        |¦  «         d S d S )Nr   FÚ	directionÚfont_language_overrider   ÚlangÚfont_familyzfont_family should be a listÚtext_decoration_lineÚnoneÚfont_kerningÚfont_variant_ligaturesÚfont_variant_positionÚfont_variant_capsÚfont_variant_numericÚfont_variant_alternatesÚfont_variant_east_asianÚfont_feature_settingsú,c              3   ó*   K  — | ]\  }}|› d |› �V — ŒdS )r"   N© )Ú.0ÚkeyÚvalues      r   ú	<genexpr>zLayout.setup.<locals>.<genexpr>}   sM   è è € ð  Eð  EÙ%/ S¨%�3Ð Ð ˜Ð Ð ð Eð  Eð  Eð  Eð  Eð  Er   )2r   Úfirst_line_directionÚfont_configÚfont_mapr
   Úgcr   Úpango_font_map_create_contextr   Úg_object_unrefÚ'pango_context_set_round_glyph_positionsÚpango_context_set_base_dirr   r   r   ÚgetÚlowerÚpango_language_get_defaultÚlanguageÚpango_language_from_stringÚpango_context_set_languageÚ
isinstanceÚstrr   Úpango_layout_newr'   Úpango_layout_set_auto_dirÚ!pango_layout_set_font_descriptionÚpango_context_get_metricsÚpango_font_metrics_unrefr   Úpango_font_metrics_get_ascentÚascentÚ)pango_font_metrics_get_underline_positionÚunderline_positionÚ-pango_font_metrics_get_strikethrough_positionÚstrikethrough_positionÚ*pango_font_metrics_get_underline_thicknessÚunderline_thicknessÚ.pango_font_metrics_get_strikethrough_thicknessÚstrikethrough_thicknessr   ÚjoinÚitemsr%   Ú
setdefaultÚpango_attr_font_features_newÚpango_attr_list_newÚpango_attr_list_insertÚpango_layout_set_attributes)r?   r   rY   Úpango_contextÚlang_prD   Úfont_descriptionÚtext_decorationÚmetricsÚfeaturesÚattrÚ	attr_lists               r   r=   zLayout.setup@   sÞ  € ØˆŒ
Ø$%ˆÔ!àÔ$Ô-ˆÝœÝÔ/°Ñ9Ô9ÝÔ"ñ$ô $ˆõ 	Ô5°mÀUÑKÔKÐKÝÔ(Ø�?¨5°Ô+=Ô>ñ	@ô 	@ð 	@ð Ð)Ô*¨hÒ6Ð6Ý,­Z¬^ØÐ.Ô/×5Ò5Ñ7Ô7ØÐ.Ô/ñ.1ô .1ñ 2ô 2‰LˆF�D�Dð �6Œ]ð 	?Ý,¨U°6¬]Ñ;Ô;‰LˆF�D�DàˆDÝ!Ô<Ñ>Ô>ˆDŒMØð 	KÝ!Ô<¸VÑDÔDˆDŒMÝÔ,¨]¸D¼MÑJÔJÐJå˜e MÔ2µCÑ8Ô8ð 	,ð 	,Ø*ñ	,ô 	,ð 	,å/°Ñ6Ô6ÐÝ”fÝÔ" =Ñ1Ô1ÝÔ"ñ$ô $ˆŒõ 	Ô'¨¬°UÑ;Ô;Ð;ÝÔ/°´Ð=MÑNÔNÐNàÐ 6Ô7ˆØ˜fÒ$Ð$Ý”fÝÔ/Ø!Ð#3°T´]ñDô DåÔ.ñ0ô 0ˆGõ %ÝÔ3°GÑ<Ô<ñ>ˆDŒKå&0ÝÔ?ÀÑHÔHñ'JˆDÔ#å*4ÝÔCÀGÑLÔLñ+NˆDÔ'å'1ÝÔ@ÀÑIÔIñ(KˆDÔ$å+5ÝÔDÀWÑMÔMñ,OˆDÔ(Ð(ð ˆDŒKØ&*ˆDÔ#Ø*.ˆDÔ'å Ø�.Ô! 5Ð)AÔ#BØÐ)Ô*¨EÐ2EÔ,FØÐ(Ô)¨5Ð1JÔ+KØÐ+Ô,¨eÐ4KÔ.Lñ	Nô Nˆð
 ð 	FØ—x’xð  Eð  EØ3;·>²>Ñ3CÔ3Cð Eñ  Eô  Eñ Eô EßEKÂVÁXÄXð ð Ô$Ô2×=Ò=Ø�%Ô<¸XÑFÔFñHô HˆDåÔ1Ñ3Ô3ˆIÝÔ(¨°DÑ9Ô9Ð9ÝÔ-¨d¬k¸9ÑEÔEÐEÐEÐEð	Fð 	Fr   c                 ó¼   — t          j        | j        d¦  «        }t          j        | j        d¦  «        }|t          j        k    rd n|j        }|j        | _        ||fS )Nr   r   )r   Úpango_layout_get_line_readonlyr'   r
   r   Ústart_indexÚresolved_dirrW   )r?   r.   Úsecond_lineÚindexs       r   r+   zLayout.get_first_line†   sX   € ÝÔ9¸$¼+ÀqÑIÔIˆ
ÝÔ:¸4¼;ÈÑJÔJˆØ#¥s¤xÒ/Ð/��°[Ô5LˆØ$.Ô$;ˆÔ!Ø˜5Ð Ð r   Fc                 ó<  ‡— |                      d¦  «        }|dk    r|d |dz   …         }|| _        t          |¦  «        \  }}t          j        | j        |d¦  «         | j        d         }|r
|| j        z  }| j        d         }|dk    rd}| j        d         d	v }| j        �rß|s|s|�rØt          j        | j        ¦  «        Š‰t          j
        k    r0t          j        t          j        ¦   «         t          j        ¦  «        Šˆfd
„}|r1t          |t          z  ¦  «        } |dt!          |¦  «        |¦  «         |rä|dk    r9d| _        t          | j        ¦  «        \  }}t          j        | j        |d¦  «         t          |t          z  |z   ¦  «        }	dt!          |¦  «        dz
  f}
t#          j        d                     ¦   «         |¦  «        D ]O}d|                     ¦   «         |
v z   } ||                     ¦   «         |                     ¦   «         ||	z  ¦  «         ŒP|rEt          j        d¦  «        }dt!          |¦  «        c|_        |_        t          j        ‰|¦  «         t          j        | j        ‰¦  «         d|v r|                      ¦   «          d S d S )Nú
r!   é   Úword_spacingr   r   r   Úoverflow_wrap)Úanywhereú
break-wordc                 óx   •— t          j        |¦  «        }| |c|_        |_        t          j        ‰|¦  «         d S r;   )r   Úpango_attr_letter_spacing_newr‡   Ú	end_indexÚpango_attr_list_change)ÚstartÚendÚspacingrƒ   r„   s       €r   Úadd_attrz!Layout.set_text.<locals>.add_attrª   s=   ø€ ÝÔ:¸7ÑCÔC�Ø38¸#Ð0�Ô  $¤.ÝÔ,¨Y¸Ñ=Ô=Ð=Ð=Ð=r   ó    u    â€‹r   u    |Â Fó   	)Úfindr/   r   r   Úpango_layout_set_textr'   r   r<   Úpango_layout_get_attributesr
   r   rZ   rz   Úpango_attr_list_unrefÚintr	   r$   ÚreÚfinditerr%   r–   r—   Úpango_attr_insert_hyphens_newr‡   r”   r•   r|   Úset_tabs)r?   r/   ÚjustifyrŠ   Ú
bytestringrŽ   r   Úword_breakingr™   Úspace_spacingÚboundary_positionsÚmatchÚfactorrƒ   r„   s                 @r   r*   zLayout.set_text�   sÆ  ø€ Ø—	’	˜$‘”ˆØ�BŠ;ˆ;à˜˜˜q™˜”>ˆDØˆŒ	Ý,¨TÑ2Ô2ÑˆˆjÝÔ# D¤K°°rÑ:Ô:Ð:à”z .Ô1ˆØð 	7ð ˜DÔ6Ñ6ˆLàœÐ$4Ô5ˆØ˜XÒ%Ð%ØˆNð ŒJ�Ô'Ð+EÐEð 	ð Œ9ñ #	F˜,ð #	F¨.ð #	F¸Mñ #	FÝÔ9¸$¼+ÑFÔFˆIØ�CœHÒ$Ð$ÝœFÝÔ-Ñ/Ô/ÝÔ/ñ1ô 1�	ð>ð >ð >ð >ð >ð
 ð =Ý!$ ^µhÑ%>Ñ!?Ô!?�Ø�˜�C 
™OœO¨^Ñ<Ô<Ð<àð QØ Ò%Ð%à )�D”IÝ'8¸¼Ñ'CÔ'CÑ$�D˜*ÝÔ/°´¸TÀ2ÑFÔFÐFå # Lµ8Ñ$;¸nÑ$LÑ MÔ M�à&'­¨Z©¬¸1Ñ)<Ð%=Ð"Ýœ[¨×):Ò):Ñ)<Ô)<¸jÑIÔIð Qð Q�EØ %§+¢+¡-¤-Ð3EÐ"EÑF�FØ�H˜UŸ[š[™]œ]¨E¯IªI©K¬K¸À-Ñ9OÑPÔPÐPÐPàð >ÝÔ:¸5ÑAÔA�Ø34µc¸*±o´oÐ0�Ô  $¤.ÝÔ,¨Y¸Ñ=Ô=Ð=åÔ-¨d¬k¸9ÑEÔEÐEð �JÐÐØ�MŠM‰OŒOˆOˆOˆOð Ðr   c                 ó0  — t          | j        d         t          ¦  «        r|t          | j        | j        ¦  «        }|                     d| j        d         z  ¦  «         |                     ¦   «         \  }}t          || j        ¦  «        \  }}t          |¦  «        }nt          | j        d         j	        ¦  «        }t          j        t          j        ddt          j        |pd¦  «        t          j        ¦  «        }t          j        | j        |¦  «         d S )NÚtab_sizer"   r   T)re   r   r    r9   r<   r*   r+   r   ÚroundrU   r
   rZ   r   Ú"pango_tab_array_new_with_positionsÚPANGO_TAB_LEFTÚpango_tab_array_freeÚpango_layout_set_tabsr'   )r?   r'   r   r5   r   Úarrays         r   r¤   zLayout.set_tabsÌ   sï   € Ý�d”j Ô,­cÑ2Ô2ð 	6Ý˜DœJ¨Ô(BÑCÔCˆFØ�OŠO˜C $¤*¨ZÔ"8Ñ8Ñ9Ô9Ð9Ø×+Ò+Ñ-Ô-‰GˆD�!Ý   t¤zÑ2Ô2‰HˆE�1Ý˜%‘L”LˆEˆEå˜œ
 :Ô.Ô4Ñ5Ô5ˆEå”ÝÔ4Ø�4�Ô-¨u¨z¸ñ;ô ;åÔ&ñ(ô (ˆõ 	Ô# D¤K°Ñ7Ô7Ð7Ð7Ð7r   c                 ó   — | ` | `| `d S r;   )r'   rb   r   )r?   s    r   r-   zLayout.deactivateÜ   s   € ØˆK˜˜¨¨
¨
¨
r   c                 óh   — |                       |¦  «         |                      | j        d¬¦  «         d S )NT)r¥   )r=   r*   r/   )r?   r   s     r   Ú
reactivatezLayout.reactivateß   s2   € Ø�
Š
�5ÑÔÐØ�Š�d”i¨ˆÑ.Ô.Ð.Ð.Ð.r   )r   N©F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r@   r=   r+   r*   r¤   r-   r¶   rR   r   r   r9   r9   9   s•   € € € € € Ø<Ð<ð#ð #ð #ð #ð
DFð DFð DFðL!ð !ð !ð=ð =ð =ð =ð~8ð 8ð 8ð 3ð 3ð 3ð/ð /ð /ð /ð /r   r9   c           	      óô   — t          |||¦  «        }|d         dv }|�E|rC|dk     r=t          j        |j        t	          t          d|¦  «        t          z  ¦  «        ¦  «         |                     | ¦  «         |S )z=Return an opaque Pango layout with default Pango line-breaks.Úwhite_space©r   zpre-wrapúpre-lineNi    r   )r9   r   r&   r'   r    Úmaxr	   r*   )r/   r   Úcontextr>   r<   r'   Ú	text_wraps          r   Úcreate_layoutrÃ   ä   s~   € å�EÐ0°)Ñ<Ô<€Fð �mÔ$Ð(JÐJ€IØÐ Ð¨y¸7Ò/BÐ/BÝÔ$ V¤]µC½¸A¸yÑ8IÔ8IÍHÑ8TÑ4UÔ4UÑVÔVÐVà
‡O‚O�DÑÔÐØ€Mr   Tc                 ó²  ‡;‡<— ddl m} |d         dv }|d         dv }	|}
|sd}d}| }|��d|t          k    �rX|d         �rO|d         |z  |k    r)|                      d	¦  «        }|d
k    r| d|dz   …         }n#| dt	          ||d         z  |z  ¦  «        …         }t          |||||¦  «        }|                     ¦   «         \  }}|€5|| k    r/| }|                     | ¦  «         |                     ¦   «         \  }}n½|                     ¦   «         d|…          	                    ¦   «         }||k    r^t          |¦  «        dz   t          |¦  «        }}t          j        |j        t          j        ¦  «        ||…         }t!          |¦  «        �|} n*t          | |||
|¦  «        }|                     ¦   «         \  }}|€t#          || |||	|¦  «        S t%          ||¦  «        \  }}|€||k    rt#          || |||	|¦  «        S ||k    rM|                      ¦   «         }|d|…          	                    ¦   «         }||d…          	                    ¦   «         Š<nd}| Š<||k    rd}nut          j        |j        t          j        ¦  «        }t          |¦  «        dz   t          |¦  «        }}|||…         }t!          |¦  «        }|�|t          |¦  «        dz   z  }‰<d|…                              d	¦  «        }|r¯|	r¬‰<|pd
         d	k    rž||z   }|                     |¦  «         |                     ¦   «         \  }}|€k|r8t          |                     ¦   «         ¦  «        dz   }t#          || |||	|¦  «        S |j        dz   }|t          |                      ¦   «         ¦  «        k    rd}n|rt#          || |||	|¦  «        S |d         }|d         ot+          j        |d         ¦  «        }|d         \  }} }!d}"d}#dx}$}%|dk    r|#|‰<z   v }%|dk    r |rž‰<}&t/          ‰<|¦  «        x}'r
|&d|'…         }&d}(|&r|t1          |&|¦  «        })|)rg|)\  }*}+|&|*|+…         }|+|*z
  |k    r?t%          ||¦  «        \  }}||z
  }, ||d         ||¦  «        }-|,|-k    s|,dk     rd}$|(|*z  }(n|&|+d…         }&|(|+z  }(nn|&°||%r\|                     |#¦  «        rd|c}Š<d„ t5          j        |#‰<¦  «        D ¦   «         }.|.                     ¦   «          ˆ<fd„|.D ¦   «         }/ns|$ro|| |!|f}0|j                             |0¦  «        }1|1€!t+          j        || |!¬¦  «        }1|1|j        |0<   ‰<d|(…         Š;ˆ;fd„|1                      |¦  «        D ¦   «         }/ng }/|/�r@|/D ]“}2||2z   }||d         z   }3t          |3||||¦  «        }4|4                     ¦   «         \  }5}6t%          |5|¦  «        \  }7}||7z
  }8|6du o|8dk    p|2|/d
         k    }"|"r'|4}|5}t          |                     ¦   «         ¦  «        } nŒ”|"s¨|s¦d}"|                     |3¦  «         t          j!        |j        d
¦  «         |                     ¦   «         \  }}t          |                     ¦   «         ¦  «        }| t          |¦  «                 |#k    r$|t          |#                     ¦   «         ¦  «        z  }|"s‰|                     |#¦  «        rtd}"||d         z   }3|                     |3¦  «         t          j!        |j        d
¦  «         |                     ¦   «         \  }}t          |                     ¦   «         ¦  «        }|d         }9t%          ||¦  «        \  }}||z
  },|d         dk    p|o|9dk    p|9d k    o| }:|,dk     r´|:r²d}"|                     | ¦  «         t          j!        |j        t	          |tD          z  ¦  «        ¦  «         t          j#        |j        tH          d!         ¦  «         |                     ¦   «         \  }}6|6p|j        }|t          |                      ¦   «         ¦  «        k    rd}t#          || |||	||"|d         ¦  «        S )"a¨  Fit as much as possible in the available width for one line of text.

    Return ``(layout, length, resume_index, width, height, baseline)``.

    ``layout``: a pango Layout with the first line
    ``length``: length in UTF-8 bytes of the first line
    ``resume_index``: The number of UTF-8 bytes to skip for the next line.
                      May be ``None`` if the whole text fits in one line.
                      This may be greater than ``length`` in case of preserved
                      newline characters.
    ``width``: width in pixels of the first line
    ``height``: height in pixels of the first line
    ``baseline``: baseline in pixels of the first line

    r�   )Ú
percentager½   r¾   )r   Únowrapr¿   Né   Ú	font_sizer"   r!   r   Ú ÚhyphensrD   Úhyphenate_limit_charsFõ   Â­rG   Úautor   Úhyphenate_limit_zoneTc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rR   )r–   )rS   rª   s     r   ú
<listcomp>z$split_first_line.<locals>.<listcomp>¦  s3   € ð Sð Sð SØ#ˆE�KŠK‰MŒMðSð Sð Sr   c                 ó*   •— g | ]}‰d |dz   …         ‘ŒS )Nr   rR   )rS   ÚiÚsecond_line_texts     €r   rÐ   z$split_first_line.<locals>.<listcomp>©  s'   ø€ Ð UÐ UÐ U¸AÐ!1°$°1°Q±3°$Ô!7Ð UÐ UÐ Ur   )rD   ÚleftÚrightc                 ó    •— g | ]
\  }}‰|z   ‘ŒS rR   rR   )rS   r–   r—   Úprevious_wordss      €r   rÐ   z$split_first_line.<locals>.<listcomp>±  s5   ø€ ð !Tð !Tð !TÙ'1 u¨cˆN˜UÑ"ð!Tð !Tð !Tr   Úhyphenate_characterr�   Ú
word_breakz	break-allr�   r‘   Ú	WRAP_CHAR)%Úlayout.percentrÅ   r   rœ   r    rÃ   r+   r*   r%   r(   r$   r   Ú#pango_layout_get_log_attrs_readonlyr'   r
   r   Úget_next_break_pointr7   r   r)   r#   ÚpyphenÚlanguage_fallbackÚget_next_break_point_from_textÚget_next_word_boundariesÚendswithr¡   r¢   ÚreverseÚdictionariesr_   ÚPyphenÚiterater&   r	   Úpango_layout_set_wrapr   )=r/   r   rÁ   r>   r<   Úis_line_startÚminimumrÅ   rÂ   r1   Úoriginal_max_widthÚratioÚ
short_textÚspace_indexr'   r.   Úresume_indexr4   r–   r—   Útext_end_log_attrsÚfirst_line_widthr5   Úencoded_textÚbreak_pointÚ	log_attrsÚsecond_line_log_attrsÚ	next_wordÚnew_first_line_textrÊ   rD   ÚtotalrÔ   rÕ   r2   Úsoft_hyphenÚauto_hyphenationÚmanual_hyphenationÚ	next_textÚnext_break_pointÚnext_text_indexÚnext_word_boundariesÚ
start_wordÚ	stop_wordÚspaceÚ
limit_zoneÚsoft_hyphen_indexesÚdictionary_iterationsÚdictionary_keyÚ
dictionaryÚfirst_word_partÚhyphenated_first_line_textÚ
new_layoutÚnew_first_linerŠ   Únew_first_line_widthÚ	new_spacer�   Ú	can_breakr×   rÓ   s=                                                              @@r   Úsplit_first_liner  ò   s¯
  øø€ ð" ,Ð+Ð+Ð+Ð+Ð+ð �mÔ$Ð(JÐJ€IØ˜=Ô)Ð-MÐM€Nà"ÐØð Øˆ	ð €EØ€JØÑ ­cÒ!1Ñ!1°e¸KÔ6HÑ!1ð �Ô Ñ%¨	Ò1Ð1ð Ÿ)š) C™.œ.ˆKØ˜bÒ Ð Ø! . ;¨q¡= .Ô1�
øð ÐJ�s 9¨u°[Ô/AÑ#AÀEÑ#IÑJÔJÐJÔKˆJÝØ˜˜w¨	Ð3HñJô Jˆà#)×#8Ò#8Ñ#:Ô#:Ñ ˆ
�LØÐ J°$Ò$6Ð$6ð ˆJØ�OŠO˜DÑ!Ô!Ð!Ø'-×'<Ò'<Ñ'>Ô'>Ñ$ˆJ˜˜ð )×/Ò/Ñ1Ô1°-°<°-Ô@×GÒGÑIÔIˆOØ *Ò,Ð,Ý  Ñ1Ô1°AÑ5µs¸:±´�s�Ý%*Ô%NØ”M¥3¤8ñ&-ô &-Ø-2°3¨Yô&8Ð"å'Ð(:Ñ;Ô;ÐGØ%�DøåØ�%˜Ð"4Ð6KñMô Mˆà#)×#8Ò#8Ñ#:Ô#:Ñ ˆ
�Lð Ðå!Ø˜˜f l°NÀEñKô Kð 	Kå# J°Ñ6Ô6ÑÐ�aØÐÐ 0°IÒ =Ð =å!Ø˜˜f l°NÀEñKô Kð 	Kð ˜9Ò$Ð$à—{’{‘}”}ˆØ& }¨ }Ô5×<Ò<Ñ>Ô>ˆØ'¨¨¨Ô6×=Ò=Ñ?Ô?ÐÐð ˆØÐØ˜*Ò$Ð$àˆˆõ Ô=¸f¼mÍSÌXÑVÔVˆ	Ý˜Ñ)Ô)¨AÑ-­s°:©¬ˆsˆØ )¨%°¨)Ô 4ÐÝ*Ð+@ÑAÔAˆØÐ"Ø�3˜Ñ/Ô/°!Ñ3Ñ3ˆKØ   + Ô.×5Ò5°cÑ:Ô:€IØð KØð 	,Ð.¨{Ð/@¸bÔAÀSÒHÐHð #2°IÑ"=ÐØ�OŠOÐ/Ñ0Ô0Ð0Ø'-×'<Ò'<Ñ'>Ô'>Ñ$ˆJ˜ØÐ#Ø"ð 	,å#&Ð':×'AÒ'AÑ'CÔ'CÑ#DÔ#DÀqÑ#H�LÝ-Ø" D¨&°,ÀÐPUñWô Wð Wð $.Ô#4°qÑ#8�LØ#¥s¨4¯;ª;©=¬=Ñ'9Ô'9Ò9Ð9Ø'+˜øØ	ð Kõ "Ø˜˜f l°NÀEñKô Kð 	Kð �IÔ€GØ�Œ=ÐD�VÔ5°e¸F´mÑDÔD€DØÐ6Ô7Ñ€Eˆ4�Ø€JØ€Kà,1Ð1ÐÐ)à�&ÒÐØ(¨OÐ>NÑ,NÐNÐà�&ÒÐ˜TÐà$ˆ	Ý >Ð?OÐQUÑ VÔ VÐVÐð 	5Ø!Ð"3Ð#3Ð"3Ô4ˆIð ˆØð 	Ý#;¸IÀtÑ#LÔ#LÐ Ø#ð à(<Ñ%�
˜IØ% j°Ð&:Ô;�	Ø˜zÑ)¨UÒ2Ð2å*3°JÀÑ*FÔ*FÑ'Ð$ aØ%Ð(8Ñ8�EØ!+ ØÐ4Ô5°u¸iñ"Iô "I�Jà˜zÒ)Ð)¨U°QªY¨Yð ,0Ð(Ø'¨:Ñ5˜Øð & i j jÔ1�	Ø 9Ñ,��àð/ ð 	ð: ð #ð ×#Ò# KÑ0Ô0ð 	Dà02°OÐ-ˆOÐ-ðSð SÝ')¤{°;Ð@PÑ'QÔ'QðSñ Sô SÐà×#Ò#Ñ%Ô%Ð%Ø UÐ UÐ UÐ UÐATÐ UÑ UÔ UÐÐØ	ð 
#Ø  e¨UÐ3ˆØÔ)×-Ò-¨nÑ=Ô=ˆ
ØÐÝœ¨D°tÀ5ÐIÑIÔIˆJØ3=ˆGÔ  Ñ0Ø)Ð*:¨?Ð*:Ô;ˆð!Tð !Tð !Tð !TØ5?×5GÒ5GÈ	Ñ5RÔ5Rð!Tñ !Tô !TÐÐð !#Ðàñ :Ø4ð 	ð 	ˆOØ"1°OÑ"CÐà# eÐ,AÔ&BÑBð 'å&Ø*¨E°7¸IØ%ñ'ô 'ˆJð %/×$=Ò$=Ñ$?Ô$?Ñ!ˆN˜EÝ&/°ÀÑ&FÔ&FÑ#Ð  !Ø!Ð$8Ñ8ˆIØ $˜ð PØ˜Q’ÐN /Ð5JÈ2Ô5NÒ"Nð àð Ø#�Ø+�
Ý"Ð#6×#=Ò#=Ñ#?Ô#?Ñ@Ô@�Ø�ð	ð ð 		: /ð 		:ð ˆJØ�OŠOÐ6Ñ7Ô7Ð7ÝÔ(¨¬¸Ñ;Ô;Ð;Ø"×1Ò1Ñ3Ô3‰MˆJ˜ÝÐ2×9Ò9Ñ;Ô;Ñ<Ô<ˆLØ•C˜Ñ(Ô(Ô)¨[Ò8Ð8Ø¥ K×$6Ò$6Ñ$8Ô$8Ñ 9Ô 9Ñ9�àð 	5˜/×2Ò2°;Ñ?Ô?ð 	5ð ˆ
à˜eÐ$9Ô:Ñ:ð 	#à�ŠÐ2Ñ3Ô3Ð3ÝÔ$ V¤]°BÑ7Ô7Ð7Ø×-Ò-Ñ/Ô/‰ˆ
�AÝ˜?×1Ò1Ñ3Ô3Ñ4Ô4ˆð ˜/Ô*€MÝ# J°Ñ6Ô6ÑÐ�aØÐ(Ñ(€Eð 	ˆlÔ˜{Ò*ð 	BØð AØ Ò+ð @Ø ,Ò.Ð>°w°;ð	 ð
 ˆq‚y€y�Y€yàˆ
ð 	�Š˜ÑÔÐÝÔ$ V¤]µC¸	ÅHÑ8LÑ4MÔ4MÑNÔNÐNÝÔ# F¤Mµ?À;Ô3OÑPÔPÐPØ"×1Ò1Ñ3Ô3Ñˆ
�EØÐ1 
Ô 1ˆØ�3˜tŸ{š{™}œ}Ñ-Ô-Ò-Ð-ØˆLåØ�D˜& ,°ÀØ�EÐ/Ô0ñ2ô 2ð 2r   c                 óH  — t          | d         | d         | d         | d         | d         | d         | d         | d         | d	         | d
         | d         | d         | d         | d         f¦  «        }|r.|t          | d         ¦  «        t          | d         ¦  «        z   z  }|S )NrE   Ú
font_styleÚfont_stretchÚfont_weightrI   rJ   rK   rL   rM   rN   rO   Úfont_variation_settingsrC   rD   rÈ   Úline_height)rf   )r   Úinclude_sizerT   s      r   Ú_font_style_cache_keyr  ÿ  sÇ   € Ý
ØˆmÔØˆlÔØˆnÔØˆmÔØÐ&Ô'ØÐ%Ô&ØÐ!Ô"ØÐ$Ô%ØÐ'Ô(ØÐ'Ô(ØÐ%Ô&ØÐ'Ô(ØÐ&Ô'ØˆfŒðñ ô €Cð  ð CØ�s�5˜Ô%Ñ&Ô&­¨U°=Ô-AÑ)BÔ)BÑBÑBˆØ€Jr   c                 óä  — | d         dk    rdS t          | d¬¦  «        }|| j        j        v r| j        j        |         S t          | ¦  «        }|                     d¦  «         |                     ¦   «         \  }}t          |d|dd	| ¬
¦  «        \  }}}}}}| d         dk    r||f}|| j        j        |<   |S | d         \  }}	|dk    r|	| d         z  }	|	||	|z
  dz  z   f}|| j        j        |<   |S )zˆReturn a tuple of the used value of ``line-height`` and the baseline.

    The baseline is given from the top edge of line height.

    rÈ   r   )r   r   T)r  r"   rÉ   NF)r0   r1   r   r  r   ÚNUMBERr�   )r  rX   Ústrut_layoutsr9   r*   r+   r7   )
r   rT   r'   r   r5   Útext_heightr6   ÚresultÚtype_r  s
             r   Ústrutr    s6  € ð ˆ[Ô˜QÒÐØˆtå
 °DÐ
9Ñ
9Ô
9€CØ
ˆeÔÔ-Ð-Ð-ØÔ Ô.¨sÔ3Ð3å�E‰]Œ]€FØ
‡O‚O�CÑÔÐØ×#Ò#Ñ%Ô%�G€Dˆ!Ý(:Øˆb�& D¸Àeð)Mñ )Mô )MÑ%€A€qˆ!ˆQ�˜Xàˆ]Ô˜xÒ'Ð'Ø˜hÐ&ˆØ/5ˆÔÔ'¨Ñ,ØˆØ˜}Ô-Ñ€Eˆ;Ø�ÒÐØ�u˜[Ô)Ñ)ˆØ˜( k°KÑ&?À1Ñ%DÑDÐD€FØ+1€EÔÔ# CÑ(Ø€Mr   c                 óö  — dddddœ                      |¦  «        }|sJ ‚| j                             |i ¦  «        }t          | ¦  «        }||v r||         S |                      ¦   «         } d| d<   d| d	<   d
| d<   t          | ¦  «        }|                     |¦  «         |                     ¦   «         \  }}t          j	        d¦  «        }t          j	        d¦  «        }	t          j        |||	¦  «         |dk    r|j         t          z  }
n%|dk    r|	j        t          z  }
n|	j        t          z  }
t          j        |¦  «         t          j        |	¦  «         t#          |
| d         z  d¦  «        pd||<   ||         S )z.Return the font size ratio used by given unit.ÚxÚOu   æ°´Ú0)ÚexÚcapÚicÚchr   r   r   rŽ   iè  rÈ   r   r"  r#  é   g      à?)r_   Úcacherx   r  Úcopyr9   r*   r+   r
   r   r   r   Úyr   r   r   r   r®   )r   ÚunitÚ	characterr'  Ú	cache_keyr'   r   r5   Úink_extentsr   Úmeasures              r   Úcharacter_ratior/  3  sŒ  € à 3¨e¸3Ð?Ð?×CÒCÀDÑIÔI€IØÐÐÐàŒK×"Ò" 4¨Ñ,Ô,€EÝ% eÑ,Ô,€IØ�EÐÐØ�YÔÐð �JŠJ‰LŒL€EØ&€EÐ
ÑØ€Eˆ.Ñà€Eˆ+Ñå�E‰]Œ]€FØ
‡O‚O�IÑÔÐØ×#Ò#Ñ%Ô%�G€Dˆ!å”'Ð,Ñ-Ô-€KÝ”gÐ0Ñ1Ô1€OÝ	Ô'¨¨k¸?ÑKÔKÐKØˆt‚|€|Ø”=�.¥:Ñ-ˆˆØ	�eÒ	Ð	Ø!Ô(­:Ñ5ˆˆà!Ô'­*Ñ4ˆÝ„K�ÑÔÐÝ„K�Ñ Ô Ð õ ˜W u¨[Ô'9Ñ9¸1Ñ=Ô=ÐDÀ€Eˆ)ÑØ�ÔÐr   c                 óz  — |rt          |¦  «        \  }}nd }t          j        ¦   «         }|rt          j        |¦  «        }dD ]}|                      |d¦  «        } Œt          | ¦  «        \  }}t          | ¦  «        dz   }t          j        d|¦  «        }t          j        |t          |¦  «        d|||¦  «         |S )N)u   â€ªu   â€«u   â€¬u   â€­u   â€®u   â€‹r   zPangoLogAttr[]r!   )	r   r   ra   rc   Úreplacer$   r
   r   Úpango_get_log_attrs)	r/   rD   r~   rb   ÚcharÚtext_pr¦   r#   ró   s	            r   Úget_log_attrsr5  Z  sÐ   € Øð 6Ý(¨Ñ.Ô.‰ˆ��àˆÝÔ3Ñ5Ô5ˆØð <ÝÔ3°FÑ;Ô;ˆàBð ,ð ,ˆØ�|Š|˜D (Ñ+Ô+ˆˆÝ*¨4Ñ0Ô0Ñ€FˆJÝ�‰YŒY˜‰]€FÝ”Ð(¨&Ñ1Ô1€IÝ	ÔØ•�J‘”  X¨y¸&ñBô Bð BàÐr   c                 óF   — t          | ¦  «        D ]\  }}|j        r|c S Œd S r;   )Ú	enumerateÚis_line_break)ró   rÒ   rƒ   s      r   rÝ   rÝ   m  s@   € Ý˜YÑ'Ô'ð ð ‰ˆˆ4ØÔð 	ØˆHˆHˆHð	ðð r   c                 ó¨   — | rt          | ¦  «        dk     rd S t          | |¦  «        }t          | ¦  «        dz   }t          |d|dz
  …         ¦  «        S )Nr�   r   )r$   r5  rÝ   )r/   rD   ró   r#   s       r   rà   rà   s  sV   € Øð •3�t‘9”9˜q’=�=ØˆtÝ˜d DÑ)Ô)€IÝ�‰YŒY˜‰]€FÝ 	¨!¨F°1©H¨*Ô 5Ñ6Ô6Ð6r   c                 ó&   — t          | |¦  «        d uS r;   )rà   )r/   rD   s     r   Úcan_break_textr;  {  s   € Ý)¨$°Ñ5Ô5¸TÐAÐAr   c                 ó®   — | rt          | ¦  «        dk     rd S t          | |¦  «        }t          |¦  «        D ]\  }}|j        r|} n|j        r|}Œd S ||fS )Nr�   )r$   r5  r7  Úis_word_endÚis_word_boundary)r/   rD   ró   rÒ   rƒ   Úword_endÚ
word_starts          r   rá   rá     s}   € Øð •3�t‘9”9˜q’=�=ØˆtÝ˜d DÑ)Ô)€IÝ˜YÑ'Ô'ð ð ‰ˆˆ4ØÔð 	ØˆHØˆEØÔ ð 	ØˆJøàˆtØ�xÐÐr   c                 óä   — | rt          | ¦  «        dk     rd S t          | |¦  «        }t          t          |¦  «        d d d…         ¦  «        D ]"\  }}|r|j        rt          | ¦  «        |z
  c S Œ#d S )Nr�   r!   )r$   r5  r7  Úlistr=  )r/   rD   ró   rÒ   rƒ   s        r   Úget_last_word_endrC  Ž  s‹   € Øð •3�t‘9”9˜q’=�=ØˆtÝ˜d DÑ)Ô)€IÝ�T )™_œ_¨T¨T¨r¨TÔ2Ñ3Ô3ð !ð !‰ˆˆ4Øð 	!�Ô!ð 	!Ý�t‘9”9˜q‘=Ð Ð Ð øð!ð !r   )FN)TFr·   ) r»   r¡   Úmathr   rÞ   Ú	constantsr   r   r   r
   r   r	   r   r   r   Úfontsr   r   r   r7   r9   rÃ   r  r  r  r/  r5  rÝ   rà   r;  rá   rC  rR   r   r   ú<module>rG     s·  ðØ 'Ð 'à 	€	€	€	Ø Ð Ð Ð Ð Ð à €€€à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð" GKð>ð >ð >ð >ð8h/ð h/ð h/ð h/ð h/ñ h/ô h/ð h/ðVð ð ð 27ðJ2ð J2ð J2ð J2ðZð ð ð ð,ð ð ð<$ð $ð $ðNð ð ð&ð ð ð7ð 7ð 7ðBð Bð Bð ð  ð  ð!ð !ð !ð !ð !r   