
    <`                         d Z ddlmZmZmZmZmZ ddlZddlZej	        Z
d Zd Zd ZddZd	 Zd
 Z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.    )bytechrbyteord	bytesjoinstrjointobytesNc                 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 N)
isinstancestr).0chunks     8lib/python3.11/site-packages/fontTools/misc/textTools.py	<genexpr>zreadHex.<locals>.<genexpr>   s1      NN5z%7M7MNNNNNNN    )deHexStrr   )contents    r   readHexr      s'    NNGNNNNNOOOr   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appendr   intr   )hexdatadatais      r   r   r      s    7==??##LL1 cM'

3w<<
#
# 0 0Q++gc'!AaC%."--..////$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	hexdigitsr   )r   hrcr    s        r   hexStrr*      sT    
 ) )Qajj!!Q!VsN
aCj(!!	r       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 )r   r   reversejoin)lbitsitemsbinaryr    s        r   
num2binaryr8   '   s    	

++  QW &L66&L61f!Q3!) <<6
 ,,v	W<r   c                 v    t          |                                           } d}| D ]}|dz  }|dk    r|dz  }|S )Nr   r-   r   )r   r   )binr4   digits      r   
binary2numr<   :   sL    syy{{  U1f!
c\\3w1	r   c                 f    	 t          | d           S # t          $ r t          |           cY S w xY w)zdReturn 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>J   s    aggii^ r   )key)sorted	TypeError)alists    r   caselessSortrF   D   sK    
	33	4	4	44   	s    00c                 n    t          |           } |dk    rt          |           |z  }|r| d||z
  z  z  } | S )z Pad 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
	r-       )r   r   )r   size	remainders      r   padrK   O   sI     	1HH$ii$) &5D9$%%4r   __main__)r+   )__doc__fontTools.misc.py23r   r   r   r   r   astr%   literal_evalsafeEvalr   r   r*   r8   r<   rF   rK   __name__doctestsysexittestmodfailed r   r   <module>rY      s   < < N M M M M M M M M M M M M M 



  P P P
  
 
 
   &
 
 
    * z	/'/


"##### r   