o
    ¾Ùøia–  ã                   @   s¦  d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZ d d
l m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< e
r¢d dl=m>Z> e ?e@¡ZAdeeB deCeDeEB eFf fdd„ZGdeeB deCeEeHeFe8f f fdd„ZIG dd„ dƒZJG dd„ de4eE ƒZKdZLdddœZMdeNdeCeEeOeFeEB  f fdd „ZPG d!d"„ d"ƒZQG d#d$„ d$ƒZRG d%d&„ d&e!ƒZSG d'd(„ d(eSƒZTe1d)ƒZUe1d*ƒZVeCeEeDB eFf ZWG d+d,„ d,ƒZXG d-d.„ d.eXƒZYG d/d0„ d0eYƒZZG d1d2„ d2eZƒZ[G d3d4„ d4eYƒZ\G d5d6„ d6eXƒZ]dS )7é    N)ÚIterableÚIteratorÚMapping)ÚBytesIO)ÚTYPE_CHECKINGÚAnyÚBinaryIOÚcast)Úsettings)Ú
safe_floatÚsafe_rect_list)ÚCMapÚCMapBaseÚCMapDBÚ
CMapParserÚFileUnicodeMapÚIdentityUnicodeMapÚ
UnicodeMap)Ú
EncodingDBÚname2unicode©ÚFONT_METRICS)ÚPDFExceptionÚPDFKeyErrorÚPDFValueError)Ú	PDFStreamÚ
dict_valueÚ	int_valueÚ
list_valueÚ	num_valueÚresolve1Úresolve_allÚstream_value)ÚPSEOF)ÚKWDÚLITÚ	PSKeywordÚ	PSLiteralÚPSStackParserÚliteral_name)ÚMatrixÚPointÚRectÚapply_matrix_normÚchoplistÚnunpack)ÚPDFResourceManagerÚseqÚreturnc                 C   s   i }g }| D ]n}t |ƒ}t|tƒr,|r+|d }t|ƒD ]\}}||tt|ƒ| < qg }qt|ttfƒrk| |¡ t|ƒdkrj|\}}}t|tƒr\t|tƒr\t	||d ƒD ]}|||< qTnt
 d|› d|› d�¡ g }qt
 d|› d�¡ qttttB tf |ƒS )z;Build a mapping of character widths for horizontal writing.éÿÿÿÿé   é   z.Skipping invalid font width specification for z to z% because either of them is not an intz% because it is not a number or a list)r    Ú
isinstanceÚlistÚ	enumerater	   ÚintÚfloatÚappendÚlenÚrangeÚlogÚwarningÚdictÚstr)r1   ÚwidthsÚrÚvÚchar1ÚiÚwÚchar2© rI   ú]/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/pdfminer/pdffont.pyÚ
get_widths6   s<   
€


ÿÿÿ€
ÿrK   c           
      C   sÐ   i }g }| D ]_}t |tƒr2|r1|d }ttd|ƒƒD ]\}\}}}|||ff|tt|ƒ| < qg }qt |ttfƒre| |¡ t|ƒdkre|\}}	}}}t	tt|ƒtt|	ƒd ƒD ]
}|||ff||< qXg }q|S )z9Build a mapping of character widths for vertical writing.r3   r4   é   r5   )
r6   r7   r8   r.   r	   r9   r:   r;   r<   r=   )
r1   rB   rC   rD   rE   rF   rG   ÚvxÚvyrH   rI   rI   rJ   Úget_widths2W   s&   
€
€rO   c                	   @   s:   e Zd Zededeeeef eeef f fdd„ƒZ	dS )ÚFontMetricsDBÚfontnamer2   c                 C   s   t | S ©Nr   )ÚclsrQ   rI   rI   rJ   Úget_metricsm   s   zFontMetricsDB.get_metricsN)
Ú__name__Ú
__module__Ú__qualname__ÚclassmethodrA   Útupler@   Úobjectr9   rT   rI   rI   rI   rJ   rP   l   s    0rP   c                   @   sŠ   e Zd ZedƒZedƒZedƒZedƒZedƒZedƒZ	edƒZ
edƒZd	ed
dfdd„Zd
eeef fdd„Zdeded
dfdd„ZdS )ÚType1FontHeaderParsers   begins   ends   defs   puts   dicts   arrays   readonlys   forÚdatar2   Nc                 C   s   t  | |¡ i | _d S rR   )r(   Ú__init__Ú_cid2unicode)Úselfr\   rI   rI   rJ   r]   }   s   
zType1FontHeaderParser.__init__c              
   C   sx   	 z|   ¡ \}}W n ty   Y | jS w zttt|ƒƒ| j|< W n ty: } zt t|ƒ¡ W Y d}~nd}~ww q)a}  Parse the font encoding.

        The Type1 font encoding maps character codes to character names. These
        character names could either be standard Adobe glyph names, or
        character names associated with custom CharStrings for this font. A
        CharString is a sequence of operations that describe how the character
        should be drawn. Currently, this function returns '' (empty string)
        for character names that are associated with a CharStrings.

        Reference: Adobe Systems Incorporated, Adobe Type 1 Font Format

        :returns mapping of character identifiers (cid's) to unicode characters
        r5   N)	Ú
nextobjectr#   r   r	   rA   r^   ÚKeyErrorr>   Údebug)r_   ÚcidÚnameÚerI   rI   rJ   Úget_encoding�   s   ú€ÿùz"Type1FontHeaderParser.get_encodingÚposÚtokenc                 C   sV   || j u r%|  d¡\\}}\}}t|tƒr't|tƒr)|  |t|ƒf¡ d S d S d S d S )Né   )ÚKEYWORD_PUTÚpopr6   r9   r'   Úadd_resultsr)   )r_   rg   rh   Ú_ÚkeyÚvaluerI   rI   rJ   Ú
do_keywordš   s   
ýz Type1FontHeaderParser.do_keyword)rU   rV   rW   r$   ÚKEYWORD_BEGINÚKEYWORD_ENDÚKEYWORD_DEFrj   ÚKEYWORD_DICTÚKEYWORD_ARRAYÚKEYWORD_READONLYÚKEYWORD_FORr   r]   r@   r9   rA   rf   r&   rp   rI   rI   rI   rJ   r[   s   s    r[   )Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú.re   ze-Nú-z
Identity-Hz
Identity-V)z	DLIdent-Hz	DLIdent-Vr\   c                 C   s�  i }t | ƒ}g }	 | d¡}|s	 |S t|ƒ}|dkr"|||< g }q|dkrZd}d}|rUt| d¡ƒ}|d? |d@ fD ]}	|	dkrDd}q;t|	 }
|
d usNJ ‚||
7 }q;|s,t|ƒ}nh|d	krg|d
krg|d }n[t| d¡ƒ}|dkr�|dkr�|d d> | d }nA|dkr•|dkr•|d d>  | d }n-t| d¡ƒ}|dkr¤|d8 }|dkr¯|d> |B }n|d> |d> B t d| d¡¡d B }| |¡ q	)Nr5   é   é   Ú Té   é   Fé    éö   é‹   é÷   éú   é   él   éû   éþ   é€   é   é   é   é   ú>Hri   r   )r   ÚreadÚordÚNIBBLESr:   ÚstructÚunpackr;   )r\   ÚdÚfpÚstackÚcÚb0ÚsÚloopÚbÚnÚnibblero   Úb1Úb2rI   rI   rJ   Úgetdict«   sR   
$Ý
ø
	
&
Úr©   c                   @   sJ   e Zd ZdZG dd„ dƒZdededdfdd	„Zd
edee	B fdd„Z
dS )ÚCFFFont(‡  z.notdefÚspaceÚexclamÚquotedblÚ
numbersignÚdollarÚpercentÚ	ampersandÚ
quoterightÚ	parenleftÚ
parenrightÚasteriskÚplusÚcommaÚhyphenÚperiodÚslashÚzeroÚoneÚtwoÚthreeÚfourÚfiveÚsixÚsevenÚeightÚnineÚcolonÚ	semicolonÚlessÚequalÚgreaterÚquestionÚatÚAÚBÚCÚDÚEÚFÚGÚHÚIÚJÚKÚLÚMÚNÚOÚPÚQÚRÚSÚTÚUÚVÚWÚXÚYÚZÚbracketleftÚ	backslashÚbracketrightÚasciicircumÚ
underscoreÚ	quoteleftÚar¤   r    r�   re   ÚfÚgÚhrF   ÚjÚkÚlÚmr¥   ÚoÚpÚqrC   r¢   ÚtÚurD   rG   ÚxÚyÚzÚ	braceleftÚbarÚ
bracerightÚ
asciitildeÚ
exclamdownÚcentÚsterlingÚfractionÚyenÚflorinÚsectionÚcurrencyÚquotesingleÚquotedblleftÚguillemotleftÚguilsinglleftÚguilsinglrightÚfiÚflÚendashÚdaggerÚ	daggerdblÚperiodcenteredÚ	paragraphÚbulletÚquotesinglbaseÚquotedblbaseÚquotedblrightÚguillemotrightÚellipsisÚperthousandÚquestiondownÚgraveÚacuteÚ
circumflexÚtildeÚmacronÚbreveÚ	dotaccentÚdieresisÚringÚcedillaÚhungarumlautÚogonekÚcaronÚemdashÚAEÚordfeminineÚLslashÚOslashÚOEÚordmasculineÚaeÚdotlessiÚlslashÚoslashÚoeÚ
germandblsÚonesuperiorÚ
logicalnotÚmuÚ	trademarkÚEthÚonehalfÚ	plusminusÚThornÚ
onequarterÚdivideÚ	brokenbarÚdegreeÚthornÚthreequartersÚtwosuperiorÚ
registeredÚminusÚethÚmultiplyÚthreesuperiorÚ	copyrightÚAacuteÚAcircumflexÚ	AdieresisÚAgraveÚAringÚAtildeÚCcedillaÚEacuteÚEcircumflexÚ	EdieresisÚEgraveÚIacuteÚIcircumflexÚ	IdieresisÚIgraveÚNtildeÚOacuteÚOcircumflexÚ	OdieresisÚOgraveÚOtildeÚScaronÚUacuteÚUcircumflexÚ	UdieresisÚUgraveÚYacuteÚ	YdieresisÚZcaronÚaacuteÚacircumflexÚ	adieresisÚagraveÚaringÚatildeÚccedillaÚeacuteÚecircumflexÚ	edieresisÚegraveÚiacuteÚicircumflexÚ	idieresisÚigraveÚntildeÚoacuteÚocircumflexÚ	odieresisÚograveÚotildeÚscaronÚuacuteÚucircumflexÚ	udieresisÚugraveÚyacuteÚ	ydieresisÚzcaronÚexclamsmallÚHungarumlautsmallÚdollaroldstyleÚdollarsuperiorÚampersandsmallÚ
AcutesmallÚparenleftsuperiorÚparenrightsuperiorÚtwodotenleaderÚonedotenleaderÚzerooldstyleÚoneoldstyleÚtwooldstyleÚthreeoldstyleÚfouroldstyleÚfiveoldstyleÚsixoldstyleÚsevenoldstyleÚeightoldstyleÚnineoldstyleÚcommasuperiorÚthreequartersemdashÚperiodsuperiorÚquestionsmallÚ	asuperiorÚ	bsuperiorÚcentsuperiorÚ	dsuperiorÚ	esuperiorÚ	isuperiorÚ	lsuperiorÚ	msuperiorÚ	nsuperiorÚ	osuperiorÚ	rsuperiorÚ	ssuperiorÚ	tsuperiorÚffÚffiÚfflÚparenleftinferiorÚparenrightinferiorÚCircumflexsmallÚhyphensuperiorÚ
GravesmallÚAsmallÚBsmallÚCsmallÚDsmallÚEsmallÚFsmallÚGsmallÚHsmallÚIsmallÚJsmallÚKsmallÚLsmallÚMsmallÚNsmallÚOsmallÚPsmallÚQsmallÚRsmallÚSsmallÚTsmallÚUsmallÚVsmallÚWsmallÚXsmallÚYsmallÚZsmallÚcolonmonetaryÚ	onefittedÚrupiahÚ
TildesmallÚexclamdownsmallÚcentoldstyleÚLslashsmallÚScaronsmallÚZcaronsmallÚDieresissmallÚ
BrevesmallÚ
CaronsmallÚDotaccentsmallÚMacronsmallÚ
figuredashÚhypheninferiorÚOgoneksmallÚ	RingsmallÚCedillasmallÚquestiondownsmallÚ	oneeighthÚthreeeighthsÚfiveeighthsÚseveneighthsÚonethirdÚ	twothirdsÚzerosuperiorÚfoursuperiorÚfivesuperiorÚsixsuperiorÚsevensuperiorÚeightsuperiorÚninesuperiorÚzeroinferiorÚoneinferiorÚtwoinferiorÚthreeinferiorÚfourinferiorÚfiveinferiorÚsixinferiorÚseveninferiorÚeightinferiorÚnineinferiorÚcentinferiorÚdollarinferiorÚperiodinferiorÚcommainferiorÚAgravesmallÚAacutesmallÚAcircumflexsmallÚAtildesmallÚAdieresissmallÚ
AringsmallÚAEsmallÚCcedillasmallÚEgravesmallÚEacutesmallÚEcircumflexsmallÚEdieresissmallÚIgravesmallÚIacutesmallÚIcircumflexsmallÚIdieresissmallÚEthsmallÚNtildesmallÚOgravesmallÚOacutesmallÚOcircumflexsmallÚOtildesmallÚOdieresissmallÚOEsmallÚOslashsmallÚUgravesmallÚUacutesmallÚUcircumflexsmallÚUdieresissmallÚYacutesmallÚ
ThornsmallÚYdieresissmallz001.000z001.001z001.002z001.003ÚBlackÚBoldÚBookÚLightÚMediumÚRegularÚRomanÚSemiboldc                   @   s^   e Zd Zdeddfdd„Zdefdd„Zdefdd	„Zd
ede	fdd„Z
dee	 fdd„ZdS )zCFFFont.INDEXrž   r2   Nc                 C   sz   || _ g | _t d| j  d¡¡\}}t|d ƒD ]}| j t| j  |¡ƒ¡ q| j  ¡ d | _	| j  
| j	| jd  ¡ d S )Nz>HBr4   r5   r3   )rž   Úoffsetsr›   rœ   r˜   r=   r;   r/   ÚtellÚbaseÚseek)r_   rž   ÚcountÚoffsizeÚ_irI   rI   rJ   r]   e  s   zCFFFont.INDEX.__init__c                 C   s   dt | ƒ› d�S )Nz<INDEX: size=ú>)r<   ©r_   rI   rI   rJ   Ú__repr__n  s   zCFFFont.INDEX.__repr__c                 C   s   t | jƒd S ©Nr5   )r<   r#  r+  rI   rI   rJ   Ú__len__q  ó   zCFFFont.INDEX.__len__rF   c                 C   s8   | j  | j| j|  ¡ | j  | j|d  | j|  ¡S r-  )rž   r&  r%  r#  r˜   )r_   rF   rI   rI   rJ   Ú__getitem__t  s    zCFFFont.INDEX.__getitem__c                    s   t ‡ fdd„ttˆ ƒƒD ƒƒS )Nc                 3   s   � | ]}ˆ | V  qd S rR   rI   )Ú.0rF   r+  rI   rJ   Ú	<genexpr>y  s   € z)CFFFont.INDEX.__iter__.<locals>.<genexpr>)Úiterr=   r<   r+  rI   r+  rJ   Ú__iter__x  s   zCFFFont.INDEX.__iter__)rU   rV   rW   r   r]   rA   r,  r9   r.  Úbytesr0  r   r4  rI   rI   rI   rJ   ÚINDEXd  s    	r6  rd   rž   r2   Nc              
   C   sP  || _ || _t d| j d¡¡\}}}}| j |d ¡ |  | j¡| _|  | j¡| _|  | j¡| _|  | j¡| _	t
| jd ƒ| _| j ddg¡\}| j ddg¡\}| j ddg¡\}	| j tt|	ƒ¡ |  | j¡| _t| jƒ| _i | _i | _| j tt|ƒ¡ | j d¡}
|
dkr³t d	| j d¡¡\}tt d	| | j |¡¡ƒD ]\}}|| j|< || j|< q£nF|
d
kròt d	| j d¡¡\}d}t|ƒD ](}t d| j d¡¡\}}t||| d ƒD ]}|| j|< || j|< |d7 }qßqÈntd|
›�ƒ‚i | _i | _| j tt|ƒ¡ | j d¡}
|
dk�rL| jd }ttttdf t dd|  | j d| ¡¡ƒƒD ]\}}|d7 }|  |¡}|| j|< || j|< �q1d S |
d
k�r”t d	| j d¡¡\}d}t|ƒD ]/}t d| j d¡¡\}}t||| d ƒD ]}|  |¡}|| j|< || j|< |d7 }�qy�qbd S |
dk�r¡ttd|
fƒƒ‚td|
›�ƒ‚)NÚBBBBr‡   r   rˆ   r–   é   r5   ó    rÍ   ó   ÚBBri   zunsupported encoding format: .r*  rÓ   ó   Ú	Unhandledzunsupported charset format: )rd   rž   r›   rœ   r˜   r6  Ú
name_indexÚ
dict_indexÚstring_indexÚ
subr_indexr©   Útop_dictÚgetr&  r	   r9   Ú
charstringr<   ÚnglyphsÚcode2gidÚgid2coder8   r=   r   Úname2gidÚgid2namerY   ÚgetstrÚAssertionErrorrA   )r_   rd   rž   Ú_majorÚ_minorÚhdrsizeÚ_offsizeÚcharset_posÚencoding_posÚcharstring_posÚformatr¥   ÚcodeÚgidr)  ÚfirstÚnleftÚsidÚsidnamerI   rI   rJ   r]   {  sˆ   $
þ


ýþ

(ÿÿ

ø
	


üþ
zCFFFont.__init__rX  c                 C   s,   |t | jƒk r| j| S | j|t | jƒ  S rR   )r<   ÚSTANDARD_STRINGSr@  )r_   rX  rI   rI   rJ   rJ  Ë  s   
zCFFFont.getstr)rU   rV   rW   rZ  r6  rA   r   r]   r9   r5  rJ  rI   rI   rI   rJ   rª   Ù   s       Prª   c                   @   s@   e Zd ZG dd„ deƒZdededdfdd„Zdefd	d
„Z	dS )ÚTrueTypeFontc                   @   ó   e Zd ZdS )zTrueTypeFont.CMapNotFoundN©rU   rV   rW   rI   rI   rI   rJ   ÚCMapNotFoundÔ  ó    r^  rd   rž   r2   Nc              	   C   s°   || _ || _i | _| d¡| _z=ttttttf t 	d| d¡¡ƒ\}}}}t
|ƒD ]}ttttttf t 	d| d¡¡ƒ\}}	}
}|
|f| j|< q*W d S  tjyW   Y d S w )Nr‡   ú>HHHHrŽ   z>4sLLLr–   )rd   rž   Útablesr˜   Úfonttyper	   rY   r9   r›   rœ   r=   r5  Úerror)r_   rd   rž   ÚntablesÚ_1Ú_2Ú_3rm   Ú
name_bytesÚ_tsumÚoffsetÚlengthrI   rI   rJ   r]   ×  s&   þþûüzTrueTypeFont.__init__c           ,      C   sR  d| j vrtj‚| j d \}}| j}| |¡ ttttf t 	d| 
d¡¡ƒ\}}g }t|ƒD ]}| tttttf t 	d| 
d¡¡ƒ¡ q/i }|D �]Â\}	}
}|	dks]|	dkr\|
dv s]qJ| || ¡ tttttf t 	d	| 
d
¡¡ƒ\}}}|dkr’| ttttdf t 	d| 
d¡¡ƒƒ¡ qJ|dk�r2tttdf t 	d| 
d¡¡ƒ}dgd }t|ƒD ]
\}}|||d < q°t|ƒd d }g }t|ƒD ](}ttttttf t 	d| 
d¡¡ƒ\}}}}| ||||| ¡ d | f¡ qÉ|D ]<\}}}}}|sþqô||| d>  }| |¡ t|ƒD ] }ttt t 	d| 
d¡¡ƒd }|�r(||7 }|||| < �qqôqJ|dk�rttttttf t 	d| 
d¡¡ƒ\}}}} |d }tttdf t 	d|› d�| 
d| ¡¡ƒ}!| 
d¡ tttdf t 	d|› d�| 
d| ¡¡ƒ}"tttdf t 	d|› d�| 
d| ¡¡ƒ}#| ¡ }tttdf t 	d|› d�| 
d| ¡¡ƒ}$t|!|"|#|$dd�D ]I\}%}&}'}(|(�rð| ||( ¡ t|&|%d ƒD ]}ttt t 	d| 
d¡¡ƒd })|)|' d@ ||< �qÒ�q»t|&|%d ƒD ]}||' d@ ||< �q÷�q»qJttd|fƒƒ‚|�stj‚tƒ }*| ¡ D ]\}+}|* ||+¡ �q|*S )Ns   cmapz>HHr‡   z>HHLrŽ   r   r4   )r5   é
   z>HHHé   .z>256Br“   ri   z>256Hi   i    r5   z>HHhHr—   r`  r*  rÓ   rï   F)Ústrictiÿÿ  r=  )ra  r[  r^  rž   r&  r	   rY   r9   r›   rœ   r˜   r=   r;   Úupdater8   Úmaxr$  ÚziprK  rA   r   ÚitemsÚadd_cid2unichr),r_   Úbase_offsetÚ_lengthrž   Ú_versionÚ
nsubtablesÚ	subtablesr)  Úchar2gidÚplatform_idÚencoding_idÚ	st_offsetÚfmttypeÚ_fmtlenÚ_fmtlangÚsubheaderkeysÚ
firstbytesrF   rñ   ÚnhdrsÚhdrsÚ	firstcodeÚentcountÚdeltarj  rg   rV  r    rU  Úsegcountre  rf  rg  ÚecsÚscsÚiddsÚidrsÚecÚscÚiddÚidrr¤   Úunicode_mapÚcharrI   rI   rJ   Úcreate_unicode_mapí  sÀ   

$ ÿ
þÿÿ

þ
þ"
 üû

þ
þ

þ
þ
þ þÿù
zTrueTypeFont.create_unicode_map)
rU   rV   rW   r   r^  rA   r   r]   r   r’  rI   rI   rI   rJ   r[  Ó  s    r[  c                   @   r\  )ÚPDFFontErrorNr]  rI   rI   rI   rJ   r“  Q  r_  r“  c                   @   r\  )ÚPDFUnicodeNotDefinedNr]  rI   rI   rI   rJ   r”  U  r_  r”  ÚStandardEncodingÚType1Cc                	   @   s$  e Zd Z	d%deeef dededB ddfdd„Zdefdd	„Z	de
fd
d„Zde
fdd„Zdedee fdd„Zdefdd„Zdefdd„Zdefdd„Zdefdd„Zdedefdd„ZdedeeedB ef B fdd„Zdedefdd „Zdedefd!d"„Zedeeef defd#d$„ƒZdS )&ÚPDFFontNÚ
descriptorrB   Údefault_widthr2   c                 C   sö   || _ t|ƒ| _t| dd¡ƒ| _t| jtƒrt| jƒ| _t	| dd¡ƒ| _
t| dd¡ƒ| _t| dd¡ƒ| _t| dd¡ƒ| _|d u rOt| dd¡ƒ| _n|| _t| jƒ| _t| d	d¡ƒ| _|  |¡| _d
 | _| _| jdkry| j | _d S d S )NÚFontNameÚunknownÚFlagsr   ÚAscentÚDescentÚItalicAngleÚMissingWidthÚLeadinggü©ñÒMbP?)r˜  r!   rB   r    rC  rQ   r6   r'   r)   r   Úflagsr   ÚascentÚdescentÚitalic_angler™  ÚleadingÚ_parse_bboxÚbboxÚhscaleÚvscale)r_   r˜  rB   r™  rI   rI   rJ   r]   b  s&   

ÿzPDFFont.__init__c                 C   ó   dS )Nz	<PDFFont>rI   r+  rI   rI   rJ   r,  �  ó   zPDFFont.__repr__c                 C   r«  ©NFrI   r+  rI   rI   rJ   Úis_vertical„  r¬  zPDFFont.is_verticalc                 C   r«  r­  rI   r+  rI   rI   rJ   Úis_multibyte‡  r¬  zPDFFont.is_multibyter5  c                 C   s   t |ƒS rR   )Ú	bytearray©r_   r5  rI   rI   rJ   ÚdecodeŠ  s   zPDFFont.decodec                 C   ó   | j | j S )z.Ascent above the baseline, in text space units)r£  rª  r+  rI   rI   rJ   Ú
get_ascent�  ó   zPDFFont.get_ascentc                 C   r³  )z@Descent below the baseline, in text space units; always negative)r¤  rª  r+  rI   rI   rJ   Úget_descent‘  rµ  zPDFFont.get_descentc                 C   s.   | j d | j d  }|dkr| j }|| j S )Nri   r   )r¨  r™  r©  )r_   rG   rI   rI   rJ   Ú	get_width•  s   
zPDFFont.get_widthc                 C   s2   | j d | j d  }|dkr| j| j }|| j S )Nr4   r5   r   )r¨  r£  r¤  rª  )r_   rï   rI   rI   rJ   Ú
get_height›  s   
zPDFFont.get_heightrc   c                 C   st   t | j |¡ƒ}|d ur|| j S z|  |¡}t | j |¡ƒ}|d ur)|| j W S W n	 ty3   Y nw | j| j S rR   )r   rB   rC  r©  Ú	to_unichrr”  r™  )r_   rc   Ú	cid_widthÚstr_cidrI   rI   rJ   Ú
char_width¡  s   

ÿÿzPDFFont.char_widthc                 C   r«  )úDReturns an integer for horizontal fonts, a tuple for vertical fonts.r   rI   ©r_   rc   rI   rI   rJ   Ú	char_disp³  s   zPDFFont.char_dispr¢   c                    s   t ‡ fdd„ˆ  |¡D ƒƒS )Nc                 3   s   � | ]}ˆ   |¡V  qd S rR   )r¼  )r1  rc   r+  rI   rJ   r2  ¸  s   € z'PDFFont.string_width.<locals>.<genexpr>)Úsumr²  )r_   r¢   rI   r+  rJ   Ústring_width·  s   zPDFFont.string_widthc                 C   s   t ‚rR   )ÚNotImplementedErrorr¾  rI   rI   rJ   r¹  º  r¬  zPDFFont.to_unichrc                 C   s8   t |  d¡ƒ}t|ƒ}|du rt d|›d�¡ dS |S )z(Parse FontBBox from the fonts descriptorÚFontBBoxNz4Could not get FontBBox from font descriptor because z cannot be parsed as 4 floats)ç        rÄ  rÄ  rÄ  )r!   rC  r   r>   r?   )r˜  Ú	font_bboxr¨  rI   rI   rJ   r§  ½  s   ÿÿzPDFFont._parse_bboxrR   )rU   rV   rW   r   rA   r   ÚFontWidthDictr:   r]   r,  Úboolr®  r¯  r5  r   r9   r²  r´  r¶  r·  r¸  r¼  rY   r¿  rÁ  r¹  Ústaticmethodr,   r§  rI   rI   rI   rJ   r—  a  s2    ü
þýü
û" r—  c                   @   sH   e Zd Zdeeef dedeeef ddfdd„Zdedefd	d
„Z	dS )ÚPDFSimpleFontr˜  rB   Úspecr2   Nc           	      C   sÌ   t }t| d¡ƒdkrtdƒ}|}d|v rt|d ƒ}t|tƒr8t| d|¡ƒ}t| dg ¡ƒ}t 	||¡| _
nt 	t|ƒ¡| _
d | _d|v r]t|d ƒ}tƒ | _t| jt| ¡ ƒƒ ¡  t | ||¡ d S )NÚSubtypeÚTrueTypeÚWinAnsiEncodingÚEncodingÚBaseEncodingÚDifferencesÚ	ToUnicode)ÚLITERAL_STANDARD_ENCODINGr)   rC  r%   r    r6   r@   r   r   rf   Úcid2unicoder�  r"   r   r   r   Úget_dataÚrunr—  r]   )	r_   r˜  rB   rÊ  Údefault_encodingÚencodingrd   ÚdiffÚstrmrI   rI   rJ   r]   Ì  s"   

zPDFSimpleFont.__init__rc   c              
   C   sZ   | j rz| j  |¡W S  ty   Y nw z| j| W S  ty, } ztd |ƒ|‚d }~ww rR   )r�  Ú
get_unichrra   rÓ  r”  ©r_   rc   ÚerrrI   rI   rJ   r¹  í  s   ÿ€ÿzPDFSimpleFont.to_unichr)
rU   rV   rW   r   rA   r   rÆ  r]   r9   r¹  rI   rI   rI   rJ   rÉ  Ë  s    
þý
ü
û!rÉ  c                   @   ó8   e Zd Zdddeeef ddfdd„Zdefdd	„ZdS )
ÚPDFType1FontÚrsrcmgrr0   rÊ  r2   Nc           
   	      s8  z	t |d ƒ| _W n ty   tjrtdƒd ‚d| _Y nw zt | j¡\}}tt	t
tB tf |ƒ}W n/ tyb   t| di ¡ƒ}t| dd¡ƒ‰ t| ddgd ¡ƒ}‡ fd	d
„t|ƒD ƒ}Y nw t | |||¡ d|vr˜d|v ršt| d¡ƒ| _t| jd ƒ}| j ¡ d |… }tt|ƒƒ}	|	 ¡ | _d S d S d S )NÚBaseFontúBaseFont is missingr›  ÚFontDescriptorÚ	FirstCharr   ÚWidthsr“   c                    s   i | ]\}}|ˆ  t |ƒ“qS rI   )r    ©r1  rF   rG   ©Ú	firstcharrI   rJ   Ú
<dictcomp>  s    z)PDFType1Font.__init__.<locals>.<dictcomp>rÎ  ÚFontFileÚLength1)r)   Úbasefontra   r
   ÚSTRICTr“  rP   rT   r	   r@   rA   r9   r:   r   rC  r   r   r8   rÉ  r]   r"   ÚfontfilerÔ  r[   r   rf   rÓ  )
r_   rß  rÊ  r˜  Ú
int_widthsrB   Ú
width_listÚlength1r\   ÚparserrI   ræ  rJ   r]   ú  s0   

ýûúzPDFType1Font.__init__c                 C   ó   d| j ›d�S )Nz<PDFType1Font: basefont=r*  ©rë  r+  rI   rI   rJ   r,    r/  zPDFType1Font.__repr__©rU   rV   rW   r   rA   r   r]   r,  rI   rI   rI   rJ   rÞ  ù  s    rÞ  c                   @   s   e Zd Zdefdd„ZdS )ÚPDFTrueTypeFontr2   c                 C   rò  )Nz<PDFTrueTypeFont: basefont=r*  ró  r+  rI   rI   rJ   r,    r/  zPDFTrueTypeFont.__repr__N)rU   rV   rW   rA   r,  rI   rI   rI   rJ   rõ    s    rõ  c                   @   rÝ  )
ÚPDFType3Fontrß  r0   rÊ  r2   Nc                    s¶   t | dd¡ƒ‰ t| ddgd ¡ƒ}‡ fdd„t|ƒD ƒ}d|v r)t|d ƒ}ndd|d d	œ}t | |||¡ ttt	t| d
¡ƒƒƒ| _
| j\}| _}| _t| j
dƒ\| _| _d S )Nrã  r   rä  r“   c                    s   i | ]	\}}|ˆ  |“qS rI   rI   rå  ræ  rI   rJ   rè  #  ó    ÿz)PDFType3Font.__init__.<locals>.<dictcomp>râ  rÃ  )r�  rž  rÃ  Ú
FontMatrix)r5   r5   )r   rC  r   r8   r   rÉ  r]   r	   r*   rY   Úmatrixr¨  r¤  r£  r-   r©  rª  )r_   rß  rÊ  rï  rB   r˜  rm   rI   ræ  rJ   r]     s   
ÿzPDFType3Font.__init__c                 C   r«  )Nz<PDFType3Font>rI   r+  rI   rI   rJ   r,  /  r¬  zPDFType3Font.__repr__rô  rI   rI   rI   rJ   rö    s    rö  c                	   @   s  e Zd ZU eeedB ef B ed< ejfdddee	e
f deddfdd	„Zdee	e
f dedefd
d„Zedee	e
f dede	fdd„ƒZde	fdd„Zdefdd„Zdefdd„Zdedee fdd„ZdedeeedB ef B fdd„Zdede	fdd„ZdS )Ú
PDFCIDFontNÚdefault_disprß  r0   rÊ  rn  r2   c                 C   sÐ  z	t |d ƒ| _W n ty   |rtdƒd ‚d| _Y nw t| di ¡ƒ| _t| j dd¡ƒ d¡}t| j dd¡ƒ d¡}| 	¡ › d	| 	¡ › �| _
|  ||¡| _zt|d
 ƒ}W n tyk   |rgtdƒd ‚i }Y nw d }d|v r…t| d¡ƒ| _t| jt| j ¡ ƒƒ}d | _d|v rÇt|d tƒrªt|d ƒ}tƒ | _t| jt| ¡ ƒƒ ¡  nbt |d ƒ}	t |d ƒ}
d|v sÂd|	v sÂd|
v rÆtƒ | _nE| j
dv rê|rét tj¡� | ¡ | _W d   ƒ n1 säw   Y  n"t tj¡� t | j
| j ¡ ¡| _W d   ƒ n	1 �sw   Y  | j ¡ | _ | j �rGt!t"| dg ¡ƒƒ}dd„ | #¡ D ƒ| _$t| dddg¡ƒ\}}d |f| _%dd„ | #¡ D ƒ}|}ni | _$d| _%t&t"| dg ¡ƒƒ}| dd¡}t'j(| |||d� d S )Nrà  rá  r›  ÚCIDSystemInfoÚRegistrys   unknownÚlatin1ÚOrderingrƒ   râ  zFontDescriptor is missingÚ	FontFile2rÑ  rÎ  ÚIdentity)zAdobe-Identityz	Adobe-UCSÚW2c                 S   s"   i | ]\}\}\}}|||f“qS rI   rI   )r1  rc   rm   rM   rN   rI   rI   rJ   rè  t  s   " z'PDFCIDFont.__init__.<locals>.<dictcomp>ÚDW2ip  iüÿÿc                 S   s   i | ]	\}\}}||“qS rI   rI   )r1  rc   rG   rm   rI   rI   rJ   rè  w  r÷  r   râ   ÚDWiè  )r™  ))r)   rë  ra   r“  r   rC  Úcidsysteminfor    r²  ÚstripÚ	cidcodingÚget_cmap_from_specÚcmapr"   rí  r[  r   rÔ  r�  r6   r   r   r   rÕ  r   Ú
contextlibÚsuppressr^  r’  r   Úget_unicode_mapr®  ÚverticalrO   r   rr  Údispsrû  rK   r—  r]   )r_   rß  rÊ  rn  Úcid_registryÚcid_orderingr˜  ÚttfrÙ  Ú	cmap_namer×  Úwidths2rN   rG   rB   r™  rI   rI   rJ   r]   6  s†   

ýÿÿ
ý€
ÿ€þÿ
ÿzPDFCIDFont.__init__c              
   C   sT   |   ||¡}zt |¡W S  tjy) } z|rt|ƒ|‚tƒ W  Y d}~S d}~ww )an  Get cmap from font specification

        For certain PDFs, Encoding Type isn't mentioned as an attribute of
        Encoding but as an attribute of CMapName, where CMapName is an
        attribute of spec['Encoding'].
        The horizontal/vertical modes are mentioned with different name
        such as 'DLIdent-H/V','OneByteIdentityH/V','Identity-H/V'.
        N)Ú_get_cmap_namer   Úget_cmapr^  r“  r   )r_   rÊ  rn  r  re   rI   rI   rJ   r  ƒ  s   	
€ýzPDFCIDFont.get_cmap_from_specc                 C   sš   d}z| d }t |dƒrt| d ƒ}nt|d ƒ}W n ty*   |r(tdƒd‚Y nw t|ƒtu rGtt|ƒ}d|v rA| d¡j}n|rGtdƒ‚t	 ||¡S )z%Get cmap name from font specificationr›  rÎ  rd   ÚCMapNamezEncoding is unspecifiedNz!CMapName unspecified for encoding)
Úhasattrr)   ra   r“  Útyper   r	   rC  rd   ÚIDENTITY_ENCODER)rÊ  rn  r  Úspec_encodingÚcmap_name_streamrI   rI   rJ   r  •  s&   
€
ÿÿ
zPDFCIDFont._get_cmap_namec                 C   s   d| j ›d| j›d�S )Nz<PDFCIDFont: basefont=z, cidcoding=r*  )rë  r  r+  rI   rI   rJ   r,  ­  s   zPDFCIDFont.__repr__c                 C   s   | j S rR   )r  r+  rI   rI   rJ   r®  °  s   zPDFCIDFont.is_verticalc                 C   r«  )NTrI   r+  rI   rI   rJ   r¯  ³  r¬  zPDFCIDFont.is_multibyter5  c                 C   s   | j  |¡S rR   )r	  r²  r±  rI   rI   rJ   r²  ¶  s   zPDFCIDFont.decoderc   c                 C   s   | j  || j¡S )r½  )r  rC  rû  r¾  rI   rI   rJ   r¿  ¹  s   zPDFCIDFont.char_dispc              
   C   sD   z| j st|ƒ‚| j  |¡W S  ty! } zt| j|ƒ|‚d }~ww rR   )r�  r   rÚ  ra   r”  r  rÛ  rI   rI   rJ   r¹  ½  s   €ÿzPDFCIDFont.to_unichr)rU   rV   rW   r:   rY   Ú__annotations__r
   rì  r   rA   r   rÇ  r]   r   r  rÈ  r  r,  r®  r¯  r5  r   r9   r²  r¿  r¹  rI   rI   rI   rJ   rú  3  s*   
 üþ
ýü
ûM "rú  )^r
  Úloggingr›   Úcollections.abcr   r   r   Úior   Útypingr   r   r   r	   Úpdfminerr
   Úpdfminer.castingr   r   Úpdfminer.cmapdbr   r   r   r   r   r   r   Úpdfminer.encodingdbr   r   Úpdfminer.fontmetricsr   Úpdfminer.pdfexceptionsr   r   r   Úpdfminer.pdftypesr   r   r   r   r   r    r!   r"   Úpdfminer.psexceptionsr#   Úpdfminer.psparserr$   r%   r&   r'   r(   r)   Úpdfminer.utilsr*   r+   r,   r-   r.   r/   Úpdfminer.pdfinterpr0   Ú	getLoggerrU   r>   rZ   r@   rA   r9   r:   rK   rY   rO   rP   r[   rš   r  r5  r7   r©   rª   r[  r“  r”  rÒ  ÚLITERAL_TYPE1CrÆ  r—  rÉ  rÞ  rõ  rö  rú  rI   rI   rI   rJ   Ú<module>   sX    $	(
  
"&!.þ".   }~j. 