Ë
    Ã?Æiº  ã                   ó4   — d dl mZmZ ddlmZ  G d„ d«      Zy)é    )ÚFinalÚListé   )ÚCharWidthDatac            	       óü   — e Zd ZU dZeed<   ddeddfd„Zedefd„«       Z	de
defd	„Zde
defd
„Zde
defd„Zdedede
dee   fd„Zdede
dede
fd„Zdede
fd„Zedee   dede
de
fd„«       Zededefd„«       Zy)ÚFontMetricsg>é“>é“Ö?ÚPT_TO_MMÚfont_family_listÚreturnNc                 ó  — || _         | j                  |«      j                  «       | _        | j                  dk(  r€t        j
                  | _        t        j                  | _        t        j                  | _
        t        j                  | _        t        j                  | _        t        j                  | _        �n›| j                  dk(  r€t        j"                  | _        t        j$                  | _        t        j&                  | _
        t        j(                  | _        t        j*                  | _        t        j,                  | _        �n| j                  dk(  rt        j.                  | _        t        j0                  | _        t        j2                  | _
        t        j4                  | _        t        j6                  | _        t        j8                  | _        n~t        j:                  | _        t        j<                  | _        t        j>                  | _
        t        j@                  | _        t        jB                  | _        t        jD                  | _        |r4| j                  | _        | j                  | _        | j                   | _
        y y )NÚarialzliberation sansÚfrutiger)#Ú_font_family_listÚ_get_first_font_familyÚlowerÚfirst_font_familyr   ÚARIAL_NORMAL_20_7FÚchar_width_x20_x7FÚARIAL_NORMAL_A0_FFÚchar_width_xA0_xFFÚARIAL_NORMAL_DEFAULT_WIDTHÚchar_default_widthÚARIAL_BOLD_20_7FÚbold_char_width_x20_x7FÚARIAL_BOLD_A0_FFÚbold_char_width_xA0_xFFÚARIAL_BOLD_DEFAULT_WIDTHÚbold_char_default_widthÚLIBERATION_SANS_NORMAL_20_7FÚLIBERATION_SANS_NORMAL_A0_FFÚ$LIBERATION_SANS_NORMAL_DEFAULT_WIDTHÚLIBERATION_SANS_BOLD_20_7FÚLIBERATION_SANS_BOLD_A0_FFÚ"LIBERATION_SANS_BOLD_DEFAULT_WIDTHÚFRUTIGER_NORMAL_20_7FÚFRUTIGER_NORMAL_A0_FFÚFRUTIGER_NORMAL_DEFAULT_WIDTHÚFRUTIGER_BOLD_20_7FÚFRUTIGER_BOLD_A0_FFÚFRUTIGER_BOLD_DEFAULT_WIDTHÚHELVETICA_NORMAL_20_7FÚHELVETICA_NORMAL_A0_FFÚHELVETICA_NORMAL_DEFAULT_WIDTHÚHELVETICA_BOLD_20_7FÚHELVETICA_BOLD_A0_FFÚHELVETICA_BOLD_DEFAULT_WIDTH)Úselfr
   Úis_bolds      úg/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/swiss_qr_bill/canvas/fontmetrics.pyÚ__init__zFontMetrics.__init__   sÔ  € Ø!1ˆÔØ!%×!<Ñ!<Ð=MÓ!N×!TÑ!TÓ!VˆÔà×!Ñ! WÒ,Ü&3×&FÑ&FˆDÔ#Ü&3×&FÑ&FˆDÔ#Ü&3×&NÑ&NˆDÔ#Ü+8×+IÑ+IˆDÔ(Ü+8×+IÑ+IˆDÔ(Ü+8×+QÑ+QˆDÖ(Ø×#Ñ#Ð'8Ò8Ü&3×&PÑ&PˆDÔ#Ü&3×&PÑ&PˆDÔ#Ü&3×&XÑ&XˆDÔ#Ü+8×+SÑ+SˆDÔ(Ü+8×+SÑ+SˆDÔ(Ü+8×+[Ñ+[ˆDÖ(Ø×#Ñ# zÒ1Ü&3×&IÑ&IˆDÔ#Ü&3×&IÑ&IˆDÔ#Ü&3×&QÑ&QˆDÔ#Ü+8×+LÑ+LˆDÔ(Ü+8×+LÑ+LˆDÔ(Ü+8×+TÑ+TˆDÕ(ä&3×&JÑ&JˆDÔ#Ü&3×&JÑ&JˆDÔ#Ü&3×&RÑ&RˆDÔ#Ü+8×+MÑ+MˆDÔ(Ü+8×+MÑ+MˆDÔ(Ü+8×+UÑ+UˆDÔ(áØ&*×&BÑ&BˆDÔ#Ø&*×&BÑ&BˆDÔ#Ø&*×&BÑ&BˆDÕ#ð ó    c                 ó   — | j                   S )N)r   )r1   s    r3   r
   zFontMetrics.font_family_list7   s   € à×%Ñ%Ð%r5   Ú	font_sizec                 ó&   — |dz  | j                   z  S )z‘Distance between baseline and top of highest letter.

        * font_size : the font size (in pt)
        * returns the distance (in mm)
        gš™™™™™é?©r	   ©r1   r7   s     r3   Úget_ascenderzFontMetrics.get_ascender;   ó   € ð ˜3‰ §¡Ñ.Ð.r5   c                 ó&   — |dz  | j                   z  S )z¶Distance between baseline and bottom of letter extending the farthest below the baseline.

        * font_size : the font size (in pt)
        * returns the distance (in mm)
        gš™™™™™É?r9   r:   s     r3   Úget_descenderzFontMetrics.get_descenderC   r<   r5   c                 ó    — || j                   z  S )zšDistance between the baselines of two consecutive text lines.

        * font_size : the font size (in pt)
        * returns the distance (in mm)
        r9   r:   s     r3   Úget_line_heightzFontMetrics.get_line_heightK   s   € ð ˜4Ÿ=™=Ñ(Ð(r5   ÚtextÚ
max_lengthc                 ó  — g }t        |dz  |z  «      }t        |«      }d}d}d}	d}
||k  r§||   }|dk(  r||k(  r|dz  }|dz  }Œ|	| j                  |«      z  }	d}
|dk(  s|	|kD  rb|dk(  r|}n3|dz
  }||kD  r||   dk(  rn|dz  }||kD  rŒ||kD  r|}n||kD  r|}n|dz   }| j                  ||||«       |}|dk(  r|dz   }d}
|}d}	n|dz  }||k  rŒ§||kD  r| j                  ||||«       |S |
r|j	                  d«       |S )	zîSplits the text into lines.

        If a line would exceed the specified maximum length, line breaks are
        inserted. Newlines are treated as fixed line breaks.

        Yes, this code has a cognitive complexity of 37. Deal with it.éè  r   Tú r   Fú
Ú )ÚintÚlenÚ_get_char_widthÚ_add_result_lineÚappend)r1   rA   rB   r7   ÚlinesÚmaxÚstr_lenÚposÚline_start_posÚ
line_widthÚadd_empty_lineÚchÚ	break_posÚ	space_poss                 r3   Úsplit_lineszFontMetrics.split_linesS   s�  € ð ˆÜ�*˜tÑ# iÑ/Ó0ˆÜ�d“)ˆØˆØˆØˆ
Øˆà�GŠmà�c‘ˆBà�SŠy˜S NÒ2Ø !Ñ#�Ø�q‘�Øð ˜$×.Ñ.¨rÓ2Ñ2ˆJØ"ˆNð �TŠz˜Z¨#Ò-à˜’:Ø #‘Ið !$ a¡�IØ# nÒ4Ø 	™?¨cÒ1Ø!Ø! Q™˜	ð $ nÓ4ð ! >Ò1Ø$-™	ð  Ò/Ø(+™Ià(6¸Ñ(:˜Ið ×%Ñ% e¨T°>À9ÔMð "+�Ø˜’:Ø%.°¡]�NØ%)�NØ$�Ø‘
ð �q‘�ðc �G‹mðh �ÒØ×!Ñ! %¨¨~¸sÔCð ˆñ Ø�L‰L˜Ôàˆr5   r2   c                 ó¾   — |r*t        | j                  d¬«      }|j                  ||d«      S d}|D ]  }|| j                  |«      z  }Œ ||z  dz  | j                  z  S )zDReturns the width of the specified text for the specified font size.T)r2   Fr   rD   )r   r   Úget_text_widthrJ   r	   )r1   rA   r7   r2   Úbold_metricsÚwidthrT   s          r3   rY   zFontMetrics.get_text_widthž   sn   € áÜ& t×'=Ñ'=ÀtÔLˆLØ×.Ñ.¨t°YÀÓFÐFàˆØò 	.ˆBØ�T×)Ñ)¨"Ó-Ñ-‰Eð	.à�yÑ  4Ñ'¨$¯-©-Ñ7Ð7r5   rT   c                 ó´   — d}t        |«      }|dk\  r|dk  r| j                  |dz
     }n|dk\  r|dk  r| j                  |dz
     }|dk(  r| j                  }|S )Nr   é    é   é    éÿ   )Úordr   r   r   )r1   rT   r[   s      r3   rJ   zFontMetrics._get_char_width©   si   € ØˆÜ�‹WˆØ�Š:˜" š*Ø×+Ñ+¨B°©IÑ6‰EØ�4ŠZ˜B $šJØ×+Ñ+¨B°©IÑ6ˆEà�AŠ:Ø×+Ñ+ˆEØˆr5   rM   ÚstartÚendc                 óH   — | j                  ||| j                  «       «       y)a  Add the specified text range to the resulting lines.

        Trim trailing white space

        * lines : resulting lines array
        * text : text
        * start : start of text range (including)
        * end :   end of text range (excluding)
        N)rL   Ústrip)rM   rA   rb   rc   s       r3   rK   zFontMetrics._add_result_lineµ   s   € ð 	�‰�T˜% �_×*Ñ*Ó,Õ-r5   c                 óH   — | j                  d«      d   j                  d«      S )Nú,r   z ")Úsplitre   )r
   s    r3   r   z"FontMetrics._get_first_font_familyÂ   s#   € à×%Ñ% cÓ*¨1Ñ-×3Ñ3°DÓ9Ð9r5   )F)Ú__name__Ú
__module__Ú__qualname__r	   r   Ú__annotations__Ústrr4   Úpropertyr
   rH   Úfloatr;   r>   r@   r   rW   ÚboolrY   rJ   ÚstaticmethodrK   r   © r5   r3   r   r      s-  … Ø€HˆeÓñ$C¨ð $CÀó $CðL ð& #ò &ó ð&ð/ cð /¨eó /ð/ sð /¨uó /ð)¨ð )°ó )ðI ð I°ð IÀ3ð IÈ4ÐPSÉ9ó IðV	8 3ð 	8°3ð 	8Àð 	8È#ó 	8ð
 #ð 
¨#ó 
ð ð
.  S¡	ð 
.°ð 
.¸Sð 
.Àsò 
.ó ð
.ð ð:°ð :¸ò :ó ñ:r5   r   N)Útypingr   r   Úchar_width_datar   r   rr   r5   r3   ú<module>ru      s   ð÷ å *÷v:ò v:r5   