L i  dZddlmZddlZddlZej ZGddeZdZ dZ dZ dd Z d Z d Zd Zddd ZdddZdZdZddZddZedk(r4ddlZddlZej2ej4j6yy)z6fontTools.misc.textTools.py -- miscellaneous routines.) annotationsNc:eZdZedZdZdZdZdZdZ y)TagcHt|tr|jd}|SNzlatin-1) isinstancebytesdecode)blobs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/misc/textTools.py transcodez Tag.transcodes dE ";;y)D cLtj||j|SN)str__new__r )selfcontents r rz Tag.__new__s{{4!899rc&|j| Sr)__eq__rothers r __ne__z Tag.__ne__s;;u%%%rcLtj||j|Sr)rrr rs r rz Tag.__eq__szz$u 566rc,tj|Sr)r__hash__rs r rz Tag.__hash__s||D!!rc$|jdSr)encoders r tobytesz Tag.tobytes s{{9%%rN) __name__ __module__ __qualname__ staticmethodr rrrrr rr rr s- :&7"&rrc8ttd|DS)z-Convert a list of hex strings to binary data.c3BK|]}t|ts|ywr)rr).0chunks r zreadHex..&sQe*UC:PEQs)deHexStrstrjoin)rs r readHexr-$s GQwQQ RRrc t|j}t|dzr|dz}g}tdt|dD],}|j t t |||dzd.t|S)z$Convert a hex string to binary data.0r)r,splitlenrangeappendbytechrint bytesjoin)hexdatadatais r r+r+)sugmmo&G 7|aC- D 1c'lA &: GCAE 2B789: T?rc|tj}d}|D]$}t|}|||dz dzz||dzz}&|S)z$Convert binary data to a hex string.)string hexdigitsbyteord)r:hrcr;s r hexStrrF4sUA A / AJ 16S.! !Aa#gJ ./ Hrc g}d}t|D]3}|dzrd|z}nd|z}|dz }|dzdzr!|j|d}5|r|j||j|dvsJddj|S) Nr=1r0)rz$number doesn't fit in number of bits )r4r5reversejoin)lbitsitemsbinaryr;s r num2binaryrS>s E F 4[ s76\F6\F FQ! LL F V MMO <???< 88E?rcjt|j}d}|D]}|dz}|dk7s|dz}|S)NrrHr0)r,r2)binrOdigits r binary2numrWQsF #))+ C A F C<CA HrcT t|dS#t$rt|cYSwxYw)zjReturn a sorted copy of a list. If there are only strings in the list, it will not consider case. c&|j|fSr)lower)as r zcaselessSort..asAGGIq>r)key)sorted TypeError)alists r caselessSortra[s. e!9:: e}s ''c\t|}|dkDrt||z}|r |d||z zz }|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 r3)r:size remainders r padrffs> 4=D axI$  ETI-. .D KrcJt|ts|j||S|Sr)rrr sencodingerrorss r tostrrl{s" a xx&))rc\t|tr|j||St|Sr)rrrr rhs r r r s&!Sxx&))Qxrct|gSr)r )ns r r6r6s !:rc<t|tr|St|Sr)rr7ord)rEs r rBrBs1c"1.A.rc6t|j|Sr)rlrNiterablejoiners r r,r,s =  h ''rcDt|jd|DS)Nc32K|]}t|ywr)r )r(items r r*zbytesjoin..sC$ Cs)r rNrss r r8r8s 6?  C(C CCr__main__) )asciistrict)ri str | bytesrjrrkrreturnr)rir}rjrrkrr~r )r=)r)__doc__ __future__rastr@ literal_evalsafeEvalrrr-r+rFrSrWrarfrlr r6rBr,r8r!doctestsysexittestmodfailedr%rr rs<"    &#&.S  & */(D z CHH_W__  % %&r