)Ej7dZddlmZddlZddlZejZGddeZdZ dZ dZ d d Z d Z d Zd Zd!d"dZd!d#dZdZdZd$dZd%dZedkr,ddlZddlZejejjdSdS)&z6fontTools.misc.textTools.py -- miscellaneous routines.) annotationsNcBeZdZedZdZdZdZdZdZ dS)TagcZt|tr|d}|SNzlatin-1) isinstancebytesdecode)blobs JC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/misc/textTools.py transcodez Tag.transcodes* dE " " *;;y))D c^t|||SN)str__new__r )selfcontents r rz Tag.__new__s"{{4!8!8999rc.|| Sr)__eq__rothers r __ne__z Tag.__ne__s;;u%%%%rc^t|||Sr)rrr rs r rz Tag.__eq__s"zz$u 5 5666rc6t|Sr)r__hash__rs r rz Tag.__hash__s||D!!!rc,|dSr)encoders r tobytesz Tag.tobytes s{{9%%%rN) __name__ __module__ __qualname__ staticmethodr rrrrr rr rr sx\ :::&&&777"""&&&&&rrcNttd|DS)z-Convert a list of hex strings to binary data.c3DK|]}t|t|VdSr)rr).0chunks r zreadHex..&s1QQe*UC:P:PQEQQQQQQr)deHexStrstrjoin)rs r readHexr-$s' GQQwQQQQQ R RRrc Lt|}t|dzr|dz}g}tdt|dD]=}|t t |||dzd>t|S)z$Convert a hex string to binary data.0r)r,splitlenrangeappendbytechrint bytesjoin)hexdatadatais r r+r+)sgmmoo&&G 7||a C- D 1c'llA & &:: GCAE 2B77889999 T??rctj}d}|D].}t|}|||dz dzz||dzz}/|S)z$Convert binary data to a hex string.)string hexdigitsbyteord)r:hrcr;s r hexStrrF4sTA A // AJJ 16S.! !Aa#gJ . Hr c2g}d}t|D]6}|dzrd|z}nd|z}|dz }|dzdzs||d}7|r||||dvs Jdd|S) Nr=1r0)rz$number doesn't fit in number of bits )r4r5reversejoin)lbitsitemsbinaryr;s r num2binaryrT>s E F 4[[ s7 "6\FF6\F FQ!   LL F  V MMOOO <<<?<<< 88E??rcvt|}d}|D]}|dz}|dkr|dz}|S)NrrIr0)r,r2)binrPdigits r binary2numrXQsL #))++  C A F C<<CA Hrcf 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.||fSr)lower)as r zcaselessSort..asAGGIIq>r)key)sorted TypeError)alists r caselessSortrb[sK e!9!9:::: e}}s 00cnt|}|dkrt||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 rI)r r3)r:size remainders r padrgfsI 4==D axxII$  / ETI-. .D Krasciistricts str | bytesencodingrerrorsreturnc\t|ts|||S|Sr)rrr rjrlrms r tostrrq{s- a  xx&)))rr cvt|tr|||St|Sr)rrrr rps r r r s3!Sxx&)))Qxxrc"t|gSr)r )ns r r6r6s !::rcNt|tr|nt|Sr)rr7ord)rEs r rBrBs!1c"" .11A.rr=cFt||Sr)rqrOiterablejoiners r r,r,s ==  h ' ''rrcZt|d|DS)Nc34K|]}t|VdSr)r )r(items r r*zbytesjoin..s(CC$ CCCCCCr)r rOrxs r r8r8s+ 6??  CC(CCC C CCr__main__)rG)rhri)rjrkrlrrmrrnr)rjrkrlrrmrrnr )r=)r)__doc__ __future__rastr@ literal_evalsafeEvalrrr-r+rFrTrXrbrgrqr r6rBr,r8r!doctestsysexittestmodfailedr%rr rs<<""""""   &&&&&#&&&.SSS    &   *///((((DDDD z CH_W_   %&&&&&r