
    ]Mh1                         d Z ddlZddlZej        Z G d de          Zd Zd Zd Z	dd	Z
d
 Zd Zd ZddZddZd Zd ZddZddZedk    r,ddlZddlZ ej         ej                    j                   dS dS )z6fontTools.misc.textTools.py -- miscellaneous routines.    Nc                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )Tagc                 Z    t          | t                    r|                     d          } | S Nzlatin-1)
isinstancebytesdecode)blobs    X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/misc/textTools.py	transcodezTag.transcode   s*    dE"" 	*;;y))D    c                 ^    t                               | |                     |                    S N)str__new__r   )selfcontents     r   r   zTag.__new__   s"    {{4!8!8999r   c                 .    |                      |           S r   )__eq__r   others     r   __ne__z
Tag.__ne__   s    ;;u%%%%r   c                 ^    t                               | |                     |                    S r   )r   r   r   r   s     r   r   z
Tag.__eq__   s"    zz$u 5 5666r   c                 6    t                               |           S r   )r   __hash__r   s    r   r   zTag.__hash__   s    ||D!!!r   c                 ,    |                      d          S r   )encoder   s    r   tobyteszTag.tobytes   s    {{9%%%r   N)
__name__
__module____qualname__staticmethodr   r   r   r   r   r    r   r   r   r      sx          \
: : :& & &7 7 7" " "& & & & &r   r   c                 N    t          t          d | D                                 S )z-Convert a list of hex strings to binary data.c              3   D   K   | ]}t          |t                    |V  d S r   )r   r   ).0chunks     r   	<genexpr>zreadHex.<locals>.<genexpr>$   s1      QQe*UC:P:PQEQQQQQQr   )deHexStrstrjoin)r   s    r   readHexr,   "   s'    GQQwQQQQQRRRr   c                 L   t          |                                           } t          |           dz  r| dz   } g }t          dt          |           d          D ]=}|                    t          t          | ||dz            d                               >t          |          S )z$Convert a hex string to binary data.   0r      )r+   splitlenrangeappendbytechrint	bytesjoin)hexdatadatais      r   r*   r*   '   s    gmmoo&&G
7||a  C-D1c'llA&& : :GCAE	 2B77889999T??r   c                     t           j        }d}| D ].}t          |          }|||dz	  dz           z   ||dz           z   }/|S )z$Convert binary data to a hex string.       )string	hexdigitsbyteord)r9   hrcr:   s        r   hexStrrE   2   sT    A
A / /AJJ16S.!!Aa#gJ.Hr       c                 2   g }d}t          |          D ]6}| dz  rd|z   }nd|z   }| dz	  } |dz   dz  s|                    |           d}7|r|                    |           |                                 | dv s
J d            d                    |          S )	Nr<      1r/      )r   z$number doesn't fit in number of bits )r3   r4   reversejoin)lbitsitemsbinaryr:   s        r   
num2binaryrS   <   s    EF4[[  s7 	"6\FF6\FFQ! 	LL   F V	MMOOO<<<?<<<88E??r   c                 v    t          |                                           } d}| D ]}|dz  }|dk    r|dz  }|S )Nr   rH   r/   )r+   r1   )binrO   digits      r   
binary2numrW   O   sL    
#))++

C	A  FC<<CAHr   c                 f    	 t          | d           S # t          $ r t          |           cY S w xY w)zjReturn a sorted copy of a list. If there are only strings
    in the list, it will not consider case.
    c                 .    |                                  | fS r   )lower)as    r   <lambda>zcaselessSort.<locals>.<lambda>_   s    AGGIIq> r   )key)sorted	TypeError)alists    r   caselessSortra   Y   sK    
e!9!9::::   e}}s    00c                 n    t          |           } |dk    rt          |           |z  }|r| d||z
  z  z  } | S )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
    rH       )r   r2   )r9   size	remainders      r   padrf   d   sI     4==DaxxII$	 	/ETI-..DKr   asciistrictc                 \    t          | t                    s|                     ||          S | S r   )r   r   r	   sencodingerrorss      r   tostrrn   y   s-    a xx&)))r   c                 v    t          | t                    r|                     ||          S t          |           S r   )r   r   r   r   rj   s      r   r   r      s3    !S xx&)))Qxxr   c                 "    t          | g          S r   )r   )ns    r   r5   r5      s    !::r   c                 N    t          | t                    r| nt          |           S r   )r   r6   ord)rD   s    r   rA   rA      s!    1c"".11A.r   r<   c                 F    t          |                              |           S r   )rn   rN   iterablejoiners     r   r+   r+      s    ==h'''r   r   c                 Z    t          |                              d | D                       S )Nc              3   4   K   | ]}t          |          V  d S r   )r   )r'   items     r   r)   zbytesjoin.<locals>.<genexpr>   s(      CC$CCCCCCr   )r   rN   ru   s     r   r7   r7      s+    6??CC(CCCCCCr   __main__)rF   )rg   rh   )r<   )r   )__doc__astr?   literal_evalsafeEvalr   r   r,   r*   rE   rS   rW   ra   rf   rn   r   r5   rA   r+   r7   r    doctestsysexittestmodfailedr$   r   r   <module>r      s   < < 



  & & & & &# & & &.S S S
       &      *        / / /( ( ( (D D D D zCH_W_%&&&&& r   