
    h                    0   S r SSKJr  SSKrSSKr\R
                  r " S S\5      rS r	S r
S rSS	 jrS
 rS rS rSSS jjrSSS jjrS rS rSS jrSS jr\S:X  a4  SSKrSSKr\R2                  " \R4                  " 5       R6                  5        gg)z6fontTools.misc.textTools.py -- miscellaneous routines.    )annotationsNc                  B    \ rS rSr\S 5       rS rS rS rS r	S r
Srg	)
Tag   c                R    [        U [        5      (       a  U R                  S5      n U $ Nzlatin-1)
isinstancebytesdecode)blobs    R/var/www/fran/franai/venv/lib/python3.13/site-packages/fontTools/misc/textTools.py	transcodeTag.transcode   s"    dE"";;y)D    c                J    [         R                  X R                  U5      5      $ N)str__new__r   )selfcontents     r   r   Tag.__new__   s    {{4!899r   c                .    U R                  U5      (       + $ r   )__eq__r   others     r   __ne__
Tag.__ne__   s    ;;u%%%r   c                J    [         R                  X R                  U5      5      $ r   )r   r   r   r   s     r   r   
Tag.__eq__   s    zz$u 566r   c                ,    [         R                  U 5      $ r   )r   __hash__r   s    r   r!   Tag.__hash__   s    ||D!!r   c                $    U R                  S5      $ r   )encoder"   s    r   tobytesTag.tobytes    s    {{9%%r    N)__name__
__module____qualname____firstlineno__staticmethodr   r   r   r   r!   r&   __static_attributes__r(   r   r   r   r      s-     
:&7"&r   r   c                8    [        [        S U  5       5      5      $ )z-Convert a list of hex strings to binary data.c              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7fr   )r	   r   ).0chunks     r   	<genexpr>readHex.<locals>.<genexpr>&   s     Qwe*UC:PEEws   (	()deHexStrstrjoin)r   s    r   readHexr7   $   s    GQwQQRRr   c                
   [        U R                  5       5      n [        U 5      S-  (       a  U S-   n / n[        S[        U 5      S5       H,  nUR	                  [        [        XUS-    S5      5      5        M.     [        U5      $ )z$Convert a hex string to binary data.   0r      )r6   splitlenrangeappendbytechrint	bytesjoin)hexdatadatais      r   r5   r5   )   sn    gmmo&G
7|aC-D1c'lA&GCAE 2B789 'T?r   c                |    [         R                  nSnU  H#  n[        U5      nX!US-	  S-     -   XS-     -   nM%     U$ )z$Convert binary data to a hex string.       )string	hexdigitsbyteord)rD   hrcrE   s        r   hexStrrP   4   sL    A
AAJ16S.!!A#gJ.  Hr   c                2   / nSn[        U5       H?  nU S-  (       a  SU-   nOSU-   nU S-	  n US-   S-  (       a  M,  UR                  U5        SnMA     U(       a  UR                  U5        UR                  5         U S;   d   S5       eSR                  U5      $ )	NrG      1r:      )r   z$number doesn't fit in number of bits )r>   r?   reversejoin)lbitsitemsbinaryrE   s        r   
num2binaryr]   >   s    EF4[s76\F6\FFQ!LL F  V	MMO<???<88E?r   c                r    [        U R                  5       5      n SnU  H  nUS-  nUS:w  d  M  US-  nM     U$ )Nr   rR   r:   )r6   r<   )binrY   digits      r   
binary2numra   Q   sA    
#))+
C	AFC<CA  Hr   c                P     [        U S S9$ ! [         a    [        U 5      s $ f = f)zbReturn a sorted copy of a list. If there are only strings
in the list, it will not consider case.
c                &    U R                  5       U 4$ r   )lower)as    r   <lambda>caselessSort.<locals>.<lambda>a   s    AGGIq>r   )key)sorted	TypeError)alists    r   caselessSortrl   [   s.    
e!9:: e}s   
 %%c                f    [        U 5      n US:  a  [        U 5      U-  nU(       a
  U SX-
  -  -  n U $ )zPad byte string 'data' with null bytes until its length is a
multiple of 'size'.

>>> len(pad(b'abcd', 4))
4
>>> len(pad(b'abcde', 2))
6
>>> len(pad(b'abcde', 4))
8
>>> pad(b'abcdef', 4) == b'abcdef\x00\x00'
True
rR       )r&   r=   )rD   size	remainders      r   padrq   f   s<     4=DaxI$	ET-..DKr   c                R    [        U [        5      (       d  U R                  X5      $ U $ r   )r	   r   r   sencodingerrorss      r   tostrrw   {   s#    axx))r   c                d    [        U [        5      (       a  U R                  X5      $ [        U 5      $ r   )r	   r   r%   r
   rs   s      r   r&   r&      s'    !Sxx))Qxr   c                    [        U /5      $ r   )r
   )ns    r   r@   r@      s    !:r   c                F    [        U [        5      (       a  U $ [        U 5      $ r   )r	   rA   ord)rO   s    r   rL   rL      s    1c""1.A.r   c                6    [        U5      R                  U 5      $ r   )rw   rX   iterablejoiners     r   r6   r6      s    =h''r   c                D    [        U5      R                  S U  5       5      $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fr   )r&   )r1   items     r   r3   bytesjoin.<locals>.<genexpr>   s     C($(s   )r&   rX   r~   s     r   rB   rB      s    6?C(CCCr   __main__)    )asciistrict)rt   str | bytesru   r   rv   r   returnr   )rt   r   ru   r   rv   r   r   r
   )rG   )r   )__doc__
__future__r   astrJ   literal_evalsafeEvalr   r   r7   r5   rP   r]   ra   rl   rq   rw   r&   r@   rL   r6   rB   r)   doctestsysexittestmodfailedr(   r   r   <module>r      s    < " 
  &# &.S
&*/(D zHHW__%%& r   