
    h1                        S 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 jrSS 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\R.                  " \R0                  " 5       R2                  5        gg)z6fontTools.misc.textTools.py -- miscellaneous routines.    Nc                   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    J/var/www/html/env/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   readHexr6   "   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      )r5   splitlenrangeappendbytechrint	bytesjoin)hexdatadatais      r   r4   r4   '   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)rC   hrcrD   s        r   hexStrrO   2   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      $ )	NrF      1r9      )r   z$number doesn't fit in number of bits )r=   r>   reversejoin)lbitsitemsbinaryrD   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   rQ   r9   )r5   r;   )binrX   digits      r   
binary2numr`   O   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>_   s    AGGIq>r   )key)sorted	TypeError)alists    r   caselessSortrk   Y   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
rQ       )r%   r<   )rC   size	remainders      r   padrp   d   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   tostrrv   y   s#    axx))r   c                 d    [        U [        5      (       a  U R                  X5      $ [        U 5      $ r   )r   r   r$   r	   rr   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   r@   ord)rN   s    r   rK   rK      s    1c""1.A.r   c                 6    [        U5      R                  U 5      $ r   )rv   rW   iterablejoiners     r   r5   r5      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%   )r0   items     r   r2   bytesjoin.<locals>.<genexpr>   s     C($(s   )r%   rW   r}   s     r   rA   rA      s    6?C(CCCr   __main__)    )asciistrict)rF   )r   )__doc__astrI   literal_evalsafeEvalr   r   r6   r4   rO   r\   r`   rk   rp   rv   r%   r?   rK   r5   rA   r(   doctestsysexittestmodfailedr'   r   r   <module>r      s    < 
  &# &.S
&*/(D zHHW__%%& r   