§
    §‘Új‰«  ã                  ó  — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	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mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlm Z  ddl!m"Z"m#Z# e	rd dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ ddl,m-Z- 	 d dl.m/Z/ d dl0m1Z1 dZ2n# e3$ r dZ2Y nw xY wdZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=d Z>d!Z? ed¬"¦  «         G d#„ d$¦  «        ¦   «         Z@ ed¬"¦  «         G d%„ d&¦  «        ¦   «         ZAe G d'„ d(¦  «        ¦   «         ZBdS ))é    )ÚannotationsN)ÚSequence)Ú	dataclassÚfield)ÚTYPE_CHECKINGÚAnyÚClassVarÚcast)	ÚArrayObjectÚDictionaryObjectÚFloatObjectÚIndirectObjectÚ
NameObjectÚNumberObjectÚ	PdfObjectÚStreamObjectÚTextStringObjecté   )Úget_encoding)Ú!encoding_dict_from_named_encoding©Úadobe_glyphs)Úlogger_warning)Ú	FontFlags)ÚLimitReachedErrorÚPdfReadError)Útable__h_e_a_d)Útable__p_o_s_t)ÚDefaultTable)Útable_O_S_2f_2)Ú	PdfWriter)ÚBytesIO)ÚTTFontTFi   i † éÿ   é   é   é   é   é	   é
   é   éd   )Úfrozenc                  óÄ   — e Zd ZU dZdZded<   dZded<   dZded<   dZded	<   d
Z	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   eZded<   dZded<   d d„ZdS )!ÚFontDescriptorzï
    Represents the FontDescriptor dictionary as defined in the PDF specification.
    This contains both descriptive and metric information.

    The defaults are derived from the mean values of the 14 core fonts, rounded
    to 100.
    )g      YÀç      iÀç     @�@g      Œ@z+ClassVar[tuple[float, float, float, float]]Ú_DEFAULT_BBOXÚUnknownÚstrÚnameÚfamilyÚweightg     à…@ÚfloatÚascentr0   Údescentg     À‚@Ú
cap_heightg     @@Úx_heightç        Úitalic_angleé    ÚintÚflagsz!tuple[float, float, float, float]ÚbboxNzStreamObject | NoneÚ	font_fileÚreturnr   c                óÂ  — t          t          d¦  «        t          d¦  «        t          d¦  «        t          d| j        › �¦  «        t          d¦  «        t          | j        ¦  «        t          d¦  «        t          d„ | j        D ¦   «         ¦  «        t          d¦  «        t          | j        ¦  «        t          d	¦  «        t          | j	        ¦  «        t          d
¦  «        t          | j
        ¦  «        t          d¦  «        t          | j        ¦  «        t          d¦  «        t          | j        ¦  «        i	¦  «        }| j        r| j        |t          d¦  «        <   |S )Nú/Typeú/FontDescriptorú	/FontNameú/ú/Flagsú	/FontBBoxc                ó,   — g | ]}t          |¦  «        ‘ŒS © )r   )Ú.0Úns     ú…/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/generic/_font.pyú
<listcomp>z>FontDescriptor.as_font_descriptor_resource.<locals>.<listcomp>`   s   € Ð1TÐ1TÐ1TÀQµ+¸a±.´.Ð1TÐ1TÐ1Tó    ú/ItalicAngleú/Ascentú/Descentú
/CapHeightú/XHeightú
/FontFile2)r   r   r5   r   rA   r   rB   r   r>   r9   r:   r;   r<   rC   )ÚselfÚfont_descriptor_resources     rP   Úas_font_descriptor_resourcez*FontDescriptor.as_font_descriptor_resource[   s#  € Ý#3Ý�wÑÔ¥Ð,=Ñ!>Ô!>Ý�{Ñ#Ô#¥Z°°D´I°°Ñ%@Ô%@Ý�xÑ Ô ¥,¨t¬zÑ":Ô":Ý�{Ñ#Ô#¥[Ð1TÐ1TÈ$Ì)Ð1TÑ1TÔ1TÑ%UÔ%UÝ�~Ñ&Ô&­°DÔ4EÑ(FÔ(FÝ�yÑ!Ô!¥;¨t¬{Ñ#;Ô#;Ý�zÑ"Ô"¥K°´Ñ$=Ô$=Ý�|Ñ$Ô$¥k°$´/Ñ&BÔ&BÝ�zÑ"Ô"¥K°´Ñ$>Ô$>ð
5
ñ 
$ô 
$Ð ð Œ>ð 	PàAEÄÐ$¥Z°Ñ%=Ô%=Ñ>à'Ð'rR   ©rD   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   Ú__annotations__r5   r6   r7   r9   r:   r;   r<   r>   rA   rB   rC   r[   rM   rR   rP   r/   r/   B   s   € € € € € € ðð ð Ba€MÐ`Ð`Ð`Ñ`à€DÐÐÐÑØ€FÐÐÐÑØ€FÐÐÐÑà€FÐÐÐÑØ€GÐÐÐÑØ€JÐÐÐÑØ€HÐÐÐÑØ€LÐÐÐÑØ€E€O€O€O�OØ.;€DÐ;Ð;Ð;Ñ;Ø%)€IÐ)Ð)Ð)Ñ)ð(ð (ð (ð (ð (ð (rR   r/   c                  ó$   — e Zd ZU ded<   ded<   dS )ÚCoreFontMetricsr/   Úfont_descriptorúdict[str, float]Úcharacter_widthsN)r]   r^   r_   ra   rM   rR   rP   rc   rc   o   s*   € € € € € € à#Ð#Ð#Ñ#Ø&Ð&Ð&Ñ&Ð&Ð&rR   rc   c                  óP  — e Zd ZU dZded<   ded<    ee¬¦  «        Zded<   d	Zded
<    ee	¬¦  «        Z
ded<    ed„ ¬¦  «        Zded<   dZded<   dZded<   dZded<   edYd„¦   «         ZedZd"„¦   «         Zeefd[d%„¦   «         Zed\d'„¦   «         Zed]d(„¦   «         Zed^d*„¦   «         Zed_d,„¦   «         Zed`d0„¦   «         Zedad3„¦   «         Zedbd4„¦   «         Zedcd:„¦   «         ZedddA„¦   «         ZededD„¦   «         ZedfdgdG„¦   «         ZdhdI„Z didK„Z!djdL„Z"dkdS„Z#dldmdV„Z$dndW„Z%dXS )oÚFonta  
    A font object for use during text extraction and for producing
    text appearance streams.

    Attributes:
        name: Font name, derived from ``font["/BaseFont"]``
        character_map: The font's character map
        encoding: Font encoding. Must be a dict for a simple font, and string otherwise.
        sub_type: The font type, such as Type1, TrueType, or Type3.
        font_descriptor: Font metrics, including a mapping of characters to widths
        character_widths: A mapping of characters to widths
        space_width: The width of a space, or an approximation
        interpretable: Default True. If False, the font glyphs cannot
            be translated to characters, e.g. Type3 fonts that do not define
            a ``/ToUnicode`` mapping.

    r4   r5   ústr | dict[int, str]Úencoding)Údefault_factoryúdict[Any, Any]Úcharacter_mapr3   Úsub_typer/   rd   c                 ó
   — ddiS )NÚdefaultéô  rM   rM   rR   rP   ú<lambda>zFont.<lambda>Ž   s   € È	ÐSVÐGW€ rR   re   rf   éú   zfloat | intÚspace_widthú Ú
space_charTÚboolÚinterpretableÚpdf_font_dictr   Úchar_mapÚcurrent_widthsrD   ÚNonec                óª  — | d                               ¦   «         }t          |t          ¦  «        st          dt          |¬¦  «         dS t
                               t          |¦  «        t          dz   ¦  «         |  	                    dd¦  «        }t          |t          t          f¦  «        st          dt          |¬	¦  «         dS t          |¦  «        }|dk     rt          d
t          |¬	¦  «         dS t          ||¬¦  «        D ]O\  }}|t          k    r t          dt          |t          ¬¦  «          dS t          |¦  «        |t          |¦  «        <   ŒPdS )zcParses a TrueType or Type1 font's /Widths array from a font dictionary and updates character widthsú/WidthszAExpected an array for /Widths, got %(widths_array)s. Ignoring it.)ÚsourceÚwidths_arrayNr%   z
/FirstCharr   z%Ignoring invalid /FirstChar %(code)s.)r   Úcodez)Ignoring invalid /FirstChar %(code)d < 0.)ÚstartzDIgnoring invalid character codes > %(limit)d (starting at %(code)d).)r   r�   Úlimit)Ú
get_objectÚ
isinstancer   r   r]   rh   Ú_Font__check_entry_countÚlenÚMAX_SIMPLE_FONT_CHARACTER_CODEÚgetr@   r8   Ú	enumerateÚchr)ry   rz   rj   r{   r€   Ú
first_charÚcharacter_codeÚwidths           rP   Ú_collect_tt_t1_character_widthsz$Font._collect_tt_t1_character_widths“   sˆ  € ð % YÔ/×:Ò:Ñ<Ô<ˆÝ˜,­Ñ4Ô4ð 	ÝØSÝØ)ðñ ô ð ð
 ˆFÝ× Ò Ý�ÑÔÕ=ÀÑAñ	
ô 	
ð 	
ð #×&Ò& |°QÑ7Ô7ˆ
Ý˜*¥s­E lÑ3Ô3ð 	ÝØ7ÅÈzðñ ô ð ð ˆFÝ˜‘_”_ˆ
Ø˜Š>ˆ>ÝØ;ÅHÐS]ðñ ô ð ð ˆFÝ%.¨|À:Ð%NÑ%NÔ%Nð 		=ð 		=Ñ!ˆN˜EØÕ >Ò>Ð>ÝØZÝ#Ø'Ý8ð	ñ ô ð ð ��Ý25°e±*´*ˆN�3˜~Ñ.Ô.Ñ/Ð/ð		=ð 		=rR   r‚   r@   Úendc                ó”   — || k     rt          d| › d|› d�¦  «        ‚|| z
  }|t          k    rt          d|› dt          › d�¦  «        ‚d S )NzInvalid CID width range: z..ú.zCID width range too large: ú > )r   ÚMAX_CID_WIDTH_ENTRY_COUNT)r‚   r�   Úcounts      rP   Ú__check_range_lengthzFont.__check_range_length½   su   € à�Š;ˆ;Ý#Ø;¨EÐ;Ð;°SÐ;Ð;Ð;ñô ð ð �e‘ˆØÕ,Ò,Ð,Ý#Ð$hÀ%Ð$hÐ$hÕLeÐ$hÐ$hÐ$hÑiÔiÐið -Ð,rR   r•   rƒ   c                ó>   — | |k    rt          d| › d|› d�¦  «        ‚d S )NzToo many character widths: r“   r’   )r   )r•   rƒ   s     rP   Ú__check_entry_countzFont.__check_entry_countÈ   s4   € à�5Š=ˆ=Ý#Ð$TÀ%Ð$TÐ$TÈEÐ$TÐ$TÐ$TÑUÔUÐUð ˆ=rR   Úd_fontc                óp  ‡— d}d}|                       dt          ¦   «         ¦  «                             ¦   «         }t          |¦  «        }t	          |¦  «        D �]\\  }}|r|dz  }Œ|                     ¦   «         }t          |t          t          f¦  «        st          dt          |¬¦  «         ŒV|dz   |k     r||dz                                 ¦   «         nd}t          |t          ¦  «        r t          |¦  «        |}
}	|	t          |
¦  «        z   }t                               |	|¦  «         |||	z
  z  }t                               |¦  «         |                     d„ t          t!          |	|d¦  «        |
¦  «        D ¦   «         ¦  «         d}�Œ3t          |t          t          f¦  «        rö|dz   |k     rít          ||dz                                 ¦   «         t          t          f¦  «        r¶t          |¦  «        t          |¦  «        ||dz                                 ¦   «         c}	}Št                               |	|dz   ¦  «         |||	z
  dz   z  }t                               |¦  «         |                     ˆfd	„t!          |	|dz   d¦  «        D ¦   «         ¦  «         d}�ŒEt          d
t          |¬¦  «         �Œ^dS )zRParses the /W array from a DescendantFont dictionary and updates character widths.r   ú/Wr%   z?Expected numeric value for width, got %(w_entry)s. Ignoring it.)r   Úw_entryNc                ó4   — i | ]\  }}t          |¦  «        |“ŒS rM   ©r‹   )rN   Ú_cidxÚ_widths      rP   ú
<dictcomp>z6Font._collect_cid_character_widths.<locals>.<dictcomp>ð   s4   € ð ð ð á)˜E 6õ ˜E™
œ
 Fðð ð rR   r   c                ó0   •— i | ]}t          |¦  «        ‰“ŒS rM   rž   )rN   rŸ   Úconst_widths     €rP   r¡   z6Font._collect_cid_character_widths.<locals>.<dictcomp>  s1   ø€ ð ð ð à!õ ˜E™
œ
 Kðð ð rR   z9Invalid font width definition. Last element: %(w_entry)s.)r‰   r   r„   r‡   rŠ   r…   r@   r8   r   r]   r   rh   Ú_Font__check_range_lengthr†   ÚupdateÚzipÚrange)r™   r{   Ú
skip_countÚentry_countÚ_wÚ	_w_lengthÚidxrœ   Úw_next_entryÚ	start_idxÚ
width_listÚstop_idxr£   s               @rP   Ú_collect_cid_character_widthsz"Font._collect_cid_character_widthsÍ   s  ø€ ð ˆ
ØˆØ�ZŠZ˜�k™mœmÑ,Ô,×7Ò7Ñ9Ô9ˆÝ˜‘G”Gˆ	Ý% b™MœMð >	ñ >	‰LˆC�Øð Ø˜a‘�
ØØ×(Ò(Ñ*Ô*ˆGÝ˜g­­U |Ñ4Ô4ð õ ØUÝ#Ø#ðñ ô ð ð
 à7:¸Q±wÀÒ7JÐ7J˜2˜c A™gœ;×1Ò1Ñ3Ô3Ð3ÐPTˆLÝ˜,­Ñ1Ô1ð .Ý(+¨G©¬°l˜:�	Ø$¥s¨:¡¤Ñ6�Ý×)Ò)¨)°XÑ>Ô>Ð>Ø ¨9Ñ 4Ñ5�Ý×(Ò(¨Ñ5Ô5Ð5Ø×%Ò%ðð å-0Ý! )¨X°qÑ9Ô9Ø&ñ.ô .ðñ ô ñô ð ð �
‘
õ ˜<­#­u¨Ñ6Ô6ðà˜!‘G˜iÒ'Ð'Ý˜r #¨¡'œ{×5Ò5Ñ7Ô7½#½u¸ÑFÔFð (õ ˜‘L”LÝ˜Ñ%Ô%Ø�s˜Q‘w”K×*Ò*Ñ,Ô,ð 1�	˜8 [õ
 ×)Ò)¨)°XÀ±\ÑBÔBÐBØ ¨9Ñ 4°qÑ 8Ñ9�Ý×(Ò(¨Ñ5Ô5Ð5Ø×%Ò%ðð ð ð å%*Ø% x°!¡|°Qñ&ô &ðñ ô ñô ð ð �
‘
õ ØOÝ#Ø#ðñ ô ð ñ ðu>	ð >	rR   c                óø   — d}|                      ¦   «         D ]\  }}||k    rt          |¦  «        c S Œt          | t          ¦  «        r1|                       ¦   «         D ]\  }}||k    rt	          |¦  «        c S Œ|S )Nru   )Úitemsr4   r…   Údictr‹   )rj   rm   rv   Úglyph_idÚchar_strÚ	char_codes         rP   Ú_get_space_charzFont._get_space_char  s§   € ð
 ˆ
Ø"/×"5Ò"5Ñ"7Ô"7ð 	%ð 	%ÑˆH�hØ˜:Ò%Ð%Ý˜8‘}”}Ð$Ð$Ð$ð &õ �h¥Ñ%Ô%ð 	*Ø'/§~¢~Ñ'7Ô'7ð *ð *Ñ#�	˜8Ø˜zÒ)Ð)Ý˜y™>œ>Ð)Ð)Ð)ð *ð ÐrR   rA   c                óN  — | sd| d<   d S || v rS| |         dk    rG|t           j        z  t           j        k    r| |         | d<   d S t          d| |         z  ¦  «        | d<   d S d„ |                      ¦   «         D ¦   «         }|rt	          |¦  «        t          |¦  «        z  nd| d<   d S )Nrq   rp   r   r   c                ó   — g | ]
}|d k    ¯|‘ŒS )r   rM   )rN   Úws     rP   rQ   z+Font._add_default_width.<locals>.<listcomp>:  s   € ÐDÐDÐD˜a¸aÀ!ºe¸e˜¸e¸e¸erR   )r   ÚFIXED_PITCHr@   ÚvaluesÚsumr‡   )r{   rA   rv   Úvalid_widthss       rP   Ú_add_default_widthzFont._add_default_width*  sÐ   € àð 	Ø(+ˆN˜9Ñ%ØˆFà˜Ð'Ð'¨N¸:Ô,FÈ!Ò,KÐ,Kà�	Ô-Ñ-µ)Ô2GÒGÐGØ,:¸:Ô,F�˜yÑ)Ø�å(+¨A°¸zÔ0JÑ,JÑ(KÔ(KˆN˜9Ñ%ØˆFð EÐD >×#8Ò#8Ñ#:Ô#:ÐDÑDÔDˆØNZÐ$c¥C¨Ñ$5Ô$5½¸\Ñ9JÔ9JÑ$JÐ$JÐ`cˆ�yÑ!Ð!Ð!rR   r8   c                óž   — |                       |d¦  «        }|dk    r|S |t          j        z  t          j        k    r| d         S | d         dz  S )Nr   rp   r   )r‰   r   r¼   )rf   rA   rv   rt   s       rP   Ú_add_space_widthzFont._add_space_width=  s[   € ð '×*Ò*¨:°qÑ9Ô9ˆØ˜!ÒÐØÐà•IÔ)Ñ)­iÔ.CÒCÐCØ# IÔ.Ð.à 	Ô*¨aÑ/Ð/rR   Úraw_bboxr   ú(tuple[float, float, float, float] | Nonec                ó´   — 	 d„ | D ¦   «         }n# t           t          f$ r Y dS w xY wt          |¦  «        dk    rdS |d         |d         |d         |d         fS )a‚  
        Convert a raw /FontBBox value into four floats.

        Args:
            raw_bbox: The raw /FontBBox value read from the PDF.

        Returns:
            The four bounding box values, or ``None`` when the value is not
            a sequence of exactly four numbers, so that a malformed entry
            falls back to the default bounding box rather than raising.

        c                ó,   — g | ]}t          |¦  «        ‘ŒS rM   )r8   )rN   Úvalues     rP   rQ   z$Font._parse_bbox.<locals>.<listcomp>[  s   € Ð7Ð7Ð7 U•E˜%‘L”LÐ7Ð7Ð7rR   Nr'   r   r%   r   r&   )Ú	TypeErrorÚ
ValueErrorr‡   )rÃ   rB   s     rP   Ú_parse_bboxzFont._parse_bboxL  sv   € ð	Ø7Ð7¨hÐ7Ñ7Ô7ˆDˆDøÝ�:Ð&ð 	ð 	ð 	Ø�4�4ð	øøøåˆt‰9Œ9˜Š>ˆ>Ø�4Ø�AŒw˜˜Qœ  a¤¨$¨q¬'Ð1Ð1s   ‚ �$£$Úfont_descriptor_objúdict[str, Any]c           	     óv  — i }dD ]\  }}|| v r| |         ||<   Œd|v r+t                                |d         ¦  «        }|€|d= n||d<   dD ]m}|| v rgd|v rt          d| › �¦  «        ‚	 | |                              ¦   «         }||d<   Œ=# t          $ r#}t	          dt
          || |¬¦  «         Y d }~Œed }~ww xY wŒn|S )N)
)rH   r5   )z/FontFamilyr6   )z/FontWeightr7   )rT   r9   )rU   r:   )rV   r;   )rW   r<   )rS   r>   )rJ   rA   )rK   rB   rB   ©z	/FontFilerX   z
/FontFile3rC   z!More than one /FontFile found in zBFailed to get %(source_key)r in %(font_descriptor_obj)s: %(error)s)r   Ú
source_keyrË   Úerror)rh   rÊ   r   r„   r   r]   )rË   Úfont_descriptor_kwargsrÏ   Ú
target_keyrB   rC   Ú	exceptions          rP   Ú_parse_font_descriptorzFont._parse_font_descriptorb  sU  € à13Ðð'
ð 	Uð 	UÑ"ˆJ˜
ð Ð0Ð0Ð0Ø5HÈÔ5TÐ& zÑ2øàÐ+Ð+Ð+Ý×#Ò#Ð$:¸6Ô$BÑCÔCˆDØˆ|Ø*¨6Ð2Ð2à15Ð& vÑ.ð Dð 	ð 	ˆJØÐ0Ð0Ð0ØÐ"8Ð8Ð8Ý&Ð'`ÐK^Ð'`Ð'`ÑaÔaÐað
Ø 3°JÔ ?× JÒ JÑ LÔ L�IØ:CÐ*¨;Ñ7Ð7øÝ#ð ð ð Ý"Ø\Ý'Ø#-Ø,?Ø'ðñ ô ð ð ð ð ð ð øøøøðøøøð 1ð &Ð%s   Á(BÂ
B5ÂB0Â0B5c                ój  — ddl m} |                     dd¦  «        }t          |t          ¦  «        r|                     d¦  «        nd}|                     dd¦  «        }t          |t          ¦  «        r|                     d¦  «        nd}t          |¦  «        \  }}d }	i }
d}|                     d¦  «        dv �rŸ|d	k    r2d
|vr.t          d„ |                     d¦  «        pg D ¦   «         ¦  «        }|�rbd|v r|                      ||||
¦  «         n‚||v r~||         j	        }	t          t          t          t          f         |¦  «                             ¦   «         D ]7\  }}|||         j        v r#||         j        |         |
t          |¦  «        <   Œ8d|v r‰|                     dt!          ¦   «         ¦  «                             ¦   «         }d|v r0t          t          |d                              ¦   «         ¦  «        |
d<   t%          di |                      |¦  «        ¤Ž}	�n…d|v r2d|i}|                      |d         ¦  «        }|�||d<   t%          di |¤Ž}	�nM|                     dt+          ¦   «         ¦  «                             ¦   «         }t          |t*          ¦  «        s%t-          dt.          |¬¦  «         t+          ¦   «         }t1          |¦  «        D ]Ï\  }}t          t           |                     ¦   «         ¦  «        }|||<   |                      ||
¬¦  «         d|v r0t          t          |d                              ¦   «         ¦  «        |
d<   |                     dt!          ¦   «         ¦  «                             ¦   «         }t%          di |                      |¦  «        ¤Ž}	ŒÐ|	st%          |¬¦  «        }	|                      ||¦  «        }|
                     dd¦  «        dk    r|                      |
|	j        |¦  «         |                      |
|	j        |¦  «        } | ||||	||
|||¬¦	  «	        S )Nr   ©ÚCORE_FONT_METRICSú	/BaseFontr3   rI   ú/SubtypeT)ú/Type1z/MMType1z	/TrueTypez/Type3ÚType3ú
/ToUnicodec              3  ó(   K  — | ]}|t           v V — Œd S ©Nr   )rN   Úcnames     rP   ú	<genexpr>z*Font.from_font_resource.<locals>.<genexpr>¨  s;   è è € ð $ð $àð �\Ð)ð$ð $ð $ð $ð $ð $rR   z
/CharProcsr~   rG   z/MissingWidthrp   rK   r5   rB   ú/DescendantFontszNExpected an array for /DescendantFonts, got %(descendant_fonts)s. Ignoring it.)r   Údescendant_fonts)r™   r{   ú/DW)r5   ©	r5   rn   rj   rd   rm   rf   rt   rv   rx   rM   )Úpypdf._codecs.core_font_metricsr×   r‰   r…   r4   Úremoveprefixr   Úallr�   rd   r
   r´   r@   r³   rf   r‹   r   r„   r/   rÔ   rÊ   r   r   r]   rŠ   r±   r¸   rÀ   rA   rÂ   )Úclsry   r×   Ú	base_fontr5   Úsub_type_valuern   rj   rm   rd   rf   rx   r�   Ú	characterrË   rÑ   rB   râ   Ú
d_font_idxr™   rv   rt   s                         rP   Úfrom_font_resourcezFont.from_font_resourceŽ  s¹  € ð
 	FÐEÐEÐEÐEÐEð
 "×%Ò% k°9Ñ=Ô=ˆ	Ý.8¸ÅCÑ.HÔ.HÐWˆy×%Ò% cÑ*Ô*Ð*ÈiˆØ&×*Ò*¨:°yÑAÔAˆÝ7AÀ.ÕRUÑ7VÔ7VÐe�>×.Ò.¨sÑ3Ô3Ð3Ð\eˆÝ".¨}Ñ"=Ô"=Ñˆ�-ØˆØ-/ÐØˆð ×Ò˜ZÑ(Ô(Ð,YÐYÑYð
 ˜7Ò"Ð" |¸=Ð'HÐ'HÝ #ð $ð $à!.×!2Ò!2°<Ñ!@Ô!@Ð!FÀBð$ñ $ô $ñ !ô !�ð ñ OØ Ð-Ð-Ø×7Ò7Ø% }°hÐ@Pñô ð ð ð Ð.Ð.Ð.Ø&7¸Ô&=Ô&M�OÝ+/µµS½#°X´ÀÑ+IÔ+I×+OÒ+OÑ+QÔ+Qð nð n™˜˜ià$Ð(9¸$Ô(?Ô(PÐPÐPØ:KÈDÔ:QÔ:bÐclÔ:mÐ,­S°©Y¬YÑ7øØ$¨Ð5Ð5Ø*7×*;Ò*;Ð<MÕO_ÑOaÔOaÑ*bÔ*b×*mÒ*mÑ*oÔ*oÐ'Ø&Ð*=Ð=Ð=Ý6:½3Ð@SÐTcÔ@d×@oÒ@oÑ@qÔ@qÑ6rÔ6rÐ(¨Ñ3Ý&4Ð&gÐ&g°s×7QÒ7QÐReÑ7fÔ7fÐ&gÐ&g�O‘OØ  MÐ1Ð1à>DÀd¸^Ð*ØŸ?š?¨=¸Ô+EÑFÔF�DØÐ'Ø9=Ð.¨vÑ6Ý&4Ð&NÐ&NÐ7MÐ&NÐ&N�Oùð
  -×0Ò0Ð1CÅ[Á]Ä]ÑSÔS×^Ò^Ñ`Ô`ÐÝÐ.µÑ<Ô<ð 1ÝØdÝ#Ø%5ðñ ô ð õ
 $/¡=¤=Ð å&/Ð0@Ñ&AÔ&Að dð dÑ"�
˜FÝÕ.°×0AÒ0AÑ0CÔ0CÑDÔD�Ø/5Ð  Ñ,Ø×1Ò1¸ÐP`Ð1ÑaÔaÐaØ˜F�?�?Ý26µs¸FÀ5¼M×<TÒ<TÑ<VÔ<VÑ2WÔ2WÐ$ YÑ/Ø&,§j¢jÐ1BÕDTÑDVÔDVÑ&WÔ&W×&bÒ&bÑ&dÔ&dÐ#Ý"0Ð"cÐ"c°3×3MÒ3MÐNaÑ3bÔ3bÐ"cÐ"c��àð 	8Ý,°$Ð7Ñ7Ô7ˆOà×(Ò(¨°=ÑAÔAˆ
Ø×Ò 	¨1Ñ-Ô-°Ò2Ð2Ø×"Ò"Ð#3°_Ô5JÈJÑWÔWÐWØ×*Ò*Ð+;¸_Ô=RÐT^Ñ_Ô_ˆàˆsØØØØ+Ø'Ø-Ø#Ø!Ø'ð

ñ 

ô 

ð 
	
rR   Ú
table_nameÚis_criticalÚtt_font_objectr#   úDefaultTable | Nonec                ó$  — 	 |                      | ¦  «        }|€.|rt          d| ›d�¦  «        ‚t          dt          | ¬¦  «         dS nH# t          $ r;}|rt          d| ›d|› �¦  «        |‚t          dt          | |¬	¦  «         Y d}~dS d}~ww xY w|S )
a¿  Once we have a TTFont object, we can try to get the necessary font tables from
        which we collect the information to instantiate a Font class. However, some of
        these tables might be missing from the embedded font file, and others might be
        corrupt in some form and then throw a struct.error on decompilation. We decompile
        all tables we need using this method to guard against fontTools exceptions.

        This method distinguishes between optional tables and critical tables without which
        we cannot instantiate a Font. For critical tables, raises PdfReadError if missing
        OR if binary data is corrupt. For optional tables, it logs warnings instead.
        NzFont file does not have a z tablez<Optional font table %(table_name)r is missing from font file)r   rî   zFont table z is corrupt or truncated: zPOptional font table %(table_name)r is corrupt and will be ignored: %(exception)s)r   rî   rÓ   )r‰   r   r   r]   Ú	Exception)rî   rï   rð   ÚtablerÓ   s        rP   Ú_load_fonttools_tablezFont._load_fonttools_tableî  sú   € ð	à"×&Ò& zÑ2Ô2ˆEØˆ}Øð ZÝ&Ð'XÀJÐ'XÐ'XÐ'XÑYÔYÐYÝØRÝ#Ø)ðñ ô ð ð
 �tð øõ ð 	ð 	ð 	Øð !Ý"ØU *ÐUÐUÈ)ÐUÐUñô à ð!õ ØbÝØ%Ø#ð	ñ ô ð ð �4�4�4�4�4øøøøð	øøøð ˆs   ‚AA Á
BÁ0BÂBÚheader_tabler   Úpostscript_tabler   Ú	os2_tabler    c                ót  — |r|j         }|j        dz	  }d}| j        t          z  s|r|j        t
          z  r|t          j        z  }|r|j        }|dk    r|t          j        z  }|r|j	        t          k    s|r|j        dk    r|t          j        z  }|r*|t          k    s|j        t          k    r|t          j        z  }|r8d|j        cxk    rdk    sn d|cxk    rdk    sn |dk    r|t          j        z  }|r0|t&          k    s|j        t(          t*          hv r|t          j        z  }n|t          j        z  }|S )	Né   r   r=   r   r*   r%   r(   é   )ÚpanoseÚsFamilyClassÚmacStyleÚHEADER_MACSTYLE_ITALICÚfsSelectionÚOS2_FSSELECTION_ITALICr   ÚITALICÚitalicAngleÚbProportionÚ!OS2_PANOSE_BPROPORTION_MONOSPACEDÚisFixedPitchr¼   ÚOS2_SFAMILYSCLASS_SCRIPTSÚbFamilyTypeÚOS2_PANOSE_BFAMILYTYPE_SCRIPTÚSCRIPTÚbSerifStyleÚSERIFÚOS2_SFAMILYSCLASS_SYMBOLICÚ!OS2_PANOSE_BFAMILYTYPE_DECORATIVEÚ OS2_PANOSE_BFAMILYTYPE_PICTORIALÚSYMBOLICÚNONSYMBOLIC)rö   r÷   rø   rü   Úfamily_classrA   r>   s          rP   Ú)_get_font_flags_from_truetype_font_tablesz.Font._get_font_flags_from_truetype_font_tables  s¦  € ð ð 	7ØÔ%ˆFð %Ô1°QÑ6ˆLØˆð Ô Õ#9Ñ9ð 	&Øð	&Ø#Ô/Õ2HÑHð	&ð •YÔ%Ñ%ˆEØð 	*Ø+Ô7ˆLØ˜sÒ"Ð"Ø�Ô)Ñ)�ð ð	+Ø!Ô-Õ1RÒRÐRØð SØ"2Ô"?À!Ò"CÐ"Cà•YÔ*Ñ*ˆEð ð 	&ØÕ5Ò5Ð5¸Ô9KÕOlÒ9lÐ9là•YÔ%Ñ%ˆEð ð 	%Ø�Ô#Ð)Ð)Ò)Ð) rÒ)Ð)Ð)Ð)Ø�LÐ%Ð%Ò%Ð% AÒ%Ð%Ð%Ð%¨¸Ò):Ð):à•Y”_Ñ$ˆEð ð 	+ØÕ6Ò6Ð6ØÔÕ#DÕFfÐ"gÐgÐgà•YÔ'Ñ'ˆEˆEà•YÔ*Ñ*ˆEàˆrR   rC   r"   c                ó  ‡ ‡— t           st          d¦  «        ‚	 t          |¦  «        Šn%# t          $ r}t	          d|› �¦  «        |‚d }~ww xY w‰5  ˆ ˆfd„dD ¦   «         \  }}}}}}}	t
          r|€J ‚|€J ‚|€J ‚|j        x}
dk    rt	          d|
› �¦  «        ‚d|
z  }i }|r1d|j        fd	|j        fd
|j	        ffD ]\  }} |¦   «         x}�|||<   Œ|rPt          t          |j        |z  d¦  «        ¦  «        |d<   t          t          |j        |z  d¦  «        ¦  «        |d<   |rb	 t          t          |j        |z  d¦  «        ¦  «        |d<   t          t          |j        |z  d¦  «        ¦  «        |d<   n# t           $ r Y nw xY w‰                      ||	|¦  «        |d<   t          |j        |z  d¦  «        t          |j        |z  d¦  «        t          |j        |z  d¦  «        t          |j        |z  d¦  «        f|d<   t-          ¦   «         }|                     ¦   «         }|                     |¦  «         |                     t5          d¦  «        t7          t9          |¦  «        ¦  «        i¦  «         ||d<   t;          di |¤Ž}d}i }i }	 |                     ¦   «         }n@# t           $ r3 d„ |                     ¦   «                               ¦   «         D ¦   «         }Y nw xY w|j!        }tE          ‰ #                    ¦   «         ¦  «        D ]y\  }}| $                    dd¦  «         %                    dd¦  «        }t          ||         d         |z  ¦  «        ||<   | &                    |¦  «        x}�tO          |¦  «        ||<   Œz‰  (                    ||¦  «        }‰  )                    ||d         |¦  «         ‰  *                    ||d         |¦  «        }d d d ¦  «         n# 1 swxY w Y    ‰ |j+        d||||||d¬¦	  «	        S )NzDThe 'fontTools' library is required to use 'from_truetype_font_file'zCould not open font file: c              3  óL   •K  — | ]}‰                      ||d v ‰¬¦  «        V — ŒdS )>   ÚcmapÚheadÚhmtx©rî   rï   rð   N)rõ   )rN   rî   rè   rð   s     €€rP   rà   z/Font.from_truetype_font_file.<locals>.<genexpr>b  s]   øè è € ð ð ð ð ×)Ò)Ø)Ø *Ð.FÐ FØ#1ð *ñ ô ðð ð ð ð ð rR   )r  r  r  Úhhear5   zOS/2Úpostr   z'Font file has an invalid unitsPerEm of r1   r5   r6   r7   r9   r:   r;   r<   rA   rB   z/Length1rC   Ú	utf_16_bec                ó4   — i | ]\  }}|t          |¦  «        “ŒS rM   )Úmin)rN   ÚkÚrs      rP   r¡   z0Font.from_truetype_font_file.<locals>.<dictcomp>«  s$   € ÐYÐYÐY©d¨a° ¥3 q¡6¤6ÐYÐYÐYrR   r   Úbigú	utf-16-beÚsurrogatepassÚType0Trä   rM   ),ÚHAS_FONTTOOLSÚImportErrorr#   ró   r   r   Ú
unitsPerEmÚgetBestFullNameÚgetBestFamilyNameÚgetBestSubFamilyNamer@   Úroundr9   r:   Ú
sCapHeightÚsxHeightÚAttributeErrorr  ÚxMinÚyMinÚxMaxÚyMaxr   ÚgetvalueÚset_datar¥   r   r   r‡   r/   ÚbuildReversedMinÚbuildReversedr³   ÚmetricsrŠ   ÚgetGlyphOrderÚto_bytesÚdecoder‰   r‹   r¸   rÀ   rÂ   r5   )rè   rC   rÓ   Ú
cmap_tablerö   Úmetrics_tableÚhorizontal_header_tableÚ
name_tablerø   r÷   Úunits_per_emÚscale_factorrÑ   r5   ÚgetterrÇ   Úfont_file_dataÚfont_file_raw_bytesrd   rj   rf   rm   Úreverse_cmapr7  ÚgidÚglyphÚgid_key_stringr·   rv   rt   rð   s   `                             @rP   Úfrom_truetype_font_filezFont.from_truetype_font_fileK  sw  øø€ åð 	fÝÐdÑeÔeÐeð	XÝ# IÑ.Ô.ˆNˆNøÝð 	Xð 	Xð 	XÝÐG¸IÐGÐGÑHÔHÈiÐWøøøøð	Xøøøàð g	ð g	ðð ð ð ð ð #[ðñ ô ñØØØØ'ØØØ õ ð .Ø#Ð/Ð/Ð/Ø$Ð0Ð0Ð0Ø!Ð-Ð-Ð-ð !-Ô 7Ð7�¸AÒ=Ð=Ý"Ð#[È\Ð#[Ð#[Ñ\Ô\Ð\Ø! LÑ0ˆLð 68Ð"àð =à˜ZÔ7Ð8Ø˜zÔ;Ð<Ø˜zÔ>Ð?ð%ð =ð =‘L�D˜&ð
 "( ¡¤Ð)˜Ð6Ø7<Ð.¨tÑ4øà&ð rÝ36µuÐ=TÔ=[Ð^jÑ=jÐlmÑ7nÔ7nÑ3oÔ3oÐ& xÑ0Ý47½Ð>UÔ>]Ð`lÑ>lÐnoÑ8pÔ8pÑ4qÔ4qÐ& yÑ1àð ðÝ;>½uÀYÔEYÐ\hÑEhÐjkÑ?lÔ?lÑ;mÔ;mÐ*¨<Ñ8Ý9<½UÀ9ÔCUÐXdÑCdÐfgÑ=hÔ=hÑ9iÔ9iÐ*¨:Ñ6Ð6øÝ%ð ð ð Ø�Dðøøøð /2×.[Ò.[ØØ Øñ/ô /Ð" 7Ñ+õ �lÔ'¨,Ñ6¸Ñ:Ô:Ý�lÔ'¨,Ñ6¸Ñ:Ô:Ý�lÔ'¨,Ñ6¸Ñ:Ô:Ý�lÔ'¨,Ñ6¸Ñ:Ô:ð	.Ð" 6Ñ*õ *™^œ^ˆNØ"+×"4Ò"4Ñ"6Ô"6ÐØ×#Ò#Ð$7Ñ8Ô8Ð8Ø×!Ò!¥:¨jÑ#9Ô#9½<ÍÐL_ÑH`ÔH`Ñ;aÔ;aÐ"bÑcÔcÐcØ2@Ð" ;Ñ/å,ÐFÐFÐ/EÐFÐFˆOØ"ˆHà13ÐØ,.ˆMðZØ)×:Ò:Ñ<Ô<��øÝ!ð Zð Zð ZàYÐY°j×6NÒ6NÑ6PÔ6P×6VÒ6VÑ6XÔ6XÐYÑYÔY���ðZøøøð $Ô+ˆGÝ'¨×(DÒ(DÑ(FÔ(FÑGÔGð Cð C‘
��Uà!$§¢¨a°Ñ!7Ô!7×!>Ò!>¸{ÈOÑ!\Ô!\�å38¸À¼ÈÔ9JÈ\Ñ9YÑ3ZÔ3ZÐ  Ñ0à!-×!1Ò!1°%Ñ!8Ô!8Ð8�IÐEÝ47¸	±N´N�M .Ñ1øà×,Ò,¨X°}ÑEÔEˆJØ×"Ò"Ð#3Ð5KÈGÔ5TÐV`ÑaÔaÐaØ×.Ò.Ø Ð"8¸Ô"AÀ:ñô ˆKðKg	ð g	ð g	ñ g	ô g	ð g	ð g	ð g	ð g	ð g	ð g	øøøð g	ð g	ð g	ð g	ðR ˆsØ Ô%ØØØ+Ø'Ø-Ø#Ø!Øð

ñ 

ô 

ð 
	
sr   š* ª
A´AÁAÁCO&Ä*AE;Å:O&Å;
FÆO&ÆFÆD
O&ÊJ(Ê'O&Ê(:K%Ë"O&Ë$K%Ë%C5O&Ï&O*Ï-O*ú
/HelveticaÚcore_font_namec           
     ó  ‡‡— ddl m} |                     d¦  «        }||         Št          d¦  «        } | |i |d‰j        ˆˆfd„|                     ¦   «         D ¦   «         ¬¦  «        }‰j        d         |j        d<   |S )	Nr   rÖ   rI   Úcp1252ÚType1c                ób   •— i | ]+\  }}t          |¦  «        xŠ‰j        v ¯‰‰j        |         “Œ,S rM   )r‹   rf   )rN   r�   rë   ÚcharÚcore_font_metricss      €€rP   r¡   z,Font.from_core_font_name.<locals>.<dictcomp>Ö  sL   ø€ ð ð ð á#�D˜)Ý ™IœIÐ%�DÐ*;Ô*LÐLÐLð Ð'Ô8¸ÔCàLÐLÐLrR   )r5   rm   rj   rn   rd   rf   rp   )rå   r×   ræ   r   rd   r³   rf   )rè   rJ  r×   Ú	font_nameÚwin_ansi_encodingÚfontrO  rP  s         @@rP   Úfrom_core_font_namezFont.from_core_font_nameÈ  s½   øø€ àEÐEÐEÐEÐEÐEà"×/Ò/°Ñ4Ô4ˆ	Ø-¨iÔ8ÐÝ=¸hÑGÔGÐàˆsØØØ&ØØ-Ô=ðð ð ð ð à'8×'>Ò'>Ñ'@Ô'@ðñ ô ð
ñ 
ô 
ˆð ,=Ô+MÈiÔ+XˆÔ˜iÑ(àˆrR   ú'tuple[dict[str, str], dict[str, bytes]]c           	     ó¦  — i }i }t           �r–t          | j        dd¦  «        �rt          | j        t
          ¦  «        �rdt          t          | j        j        ¦  «         	                    ¦   «         x}��0	 t          t          |¦  «        ¦  «        }|5  |                      dd|¬¦  «        }|r°|                     ¦   «         x}rš|                     ¦   «         D ]u\  }}|                     |¦  «        }	|	                     dd¦  «                             dd	¦  «        }
t%          |¦  «        }|
||<   |
                     | j        ¦  «        ||
<   Œv||fcddd¦  «         S ddd¦  «         n# 1 swxY w Y   n.# t(          $ r!}t+          d
t,          |¬¦  «         Y d}~nd}~ww xY wt          | j        t
          ¦  «        rQ| j                             ¦   «         D ]6\  }}t          |¦  «        }|||<   |                     | j        ¦  «        ||<   Œ7nÁ| j                             ¦   «         D ],\  }}t%          |¦  «        }|||<   t1          |f¦  «        ||<   Œ-d„ | j                             ¦   «         D ¦   «         }| j                             ¦   «         D ]>\  }}|||<   |                     |t1          t5          |¦  «        f¦  «        ¦  «        ||<   Œ?||fS )z°
        Generates maps to translate input unicode text to bytes in two steps:
        Unicode code point -> raw_character (reverse cmap) -> PDF bytes (encoding cmap).
        rC   Nr  Fr  r   r!  r"  r#  z'Could not open font file: %(exception)s)r   rÓ   c                ó6   — i | ]\  }}|t          |f¦  «        “ŒS rM   )Úbytes)rN   r�   Úunicode_chars      rP   r¡   z.Font._get_typographic_maps.<locals>.<dictcomp>  s6   € ð  ð  ð  Ù;W¸>È<��e ^Ð$5Ñ6Ô6ð ð  ð  rR   )r%  Úgetattrrd   r…   rj   r4   r
   r   rC   Úget_datar#   r"   rõ   ÚgetBestCmapr³   Ú
getGlyphIDr9  r:  r‹   Úencoderó   r   r]   rm   rX  r‰   Úord)rY   rD  Úencoding_cmaprB  rð   Útt_font_cmap_tableÚ	best_cmapÚunicode_intÚ
glyph_namerE  rG  rY  rÓ   rµ   Úglyph_id_strr�   Úcharacter_strÚunicode_to_bytesÚcharacter_code_strs                      rP   Ú_get_typographic_mapszFont._get_typographic_mapsà  sž  € ð
 ˆØˆåñ	;å˜Ô,¨k¸4Ñ@Ô@ñ	;õ ˜4œ=­#Ñ.Ô.ñ	;õ $(­°dÔ6JÔ6TÑ#UÔ#U×#^Ò#^Ñ#`Ô#`Ð`�Ñmð;Ý!'­°Ñ(?Ô(?Ñ!@Ô!@�ð $ð ;ð ;à)-×)CÒ)CØ#)°uÈ^ð *Dñ *ô *Ð&ð *ð ;Ð<N×<ZÒ<ZÑ<\Ô<\Ð/\¨yð ;Ø7@·²Ñ7HÔ7Hð að aÑ3˜K¨Ø"0×";Ò";¸JÑ"GÔ"G˜CØ-0¯\ª\¸!¸UÑ-CÔ-C×-JÒ-JÈ;ÐXgÑ-hÔ-h˜NÝ+.¨{Ñ+;Ô+;˜LØ9G˜L¨Ñ6Ø<J×<QÒ<QÐRVÔR_Ñ<`Ô<`˜M¨.Ñ9Ð9à+¨]Ð:ð;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;øøõ ð pð pð pÝÐHÕQYÐenÐoÑoÔoÐoÐoÐoÐoÐoÐoøøøøðpøøøõ$ �d”m¥SÑ)Ô)ð 	Ø*.Ô*<×*BÒ*BÑ*DÔ*Dð Qð QÑ&�˜,Ý" 8™}œ}�Ø-9�˜\Ñ*Ø.:×.AÒ.AÀ$Ä-Ñ.PÔ.P�˜lÑ+Ð+ðQð
 15´×0CÒ0CÑ0EÔ0Eð Hð HÑ,� Ý # NÑ 3Ô 3�Ø-:�˜\Ñ*Ý/4°nÐ5FÑ/GÔ/G�˜mÑ,Ð,ð ð  Ø[_Ô[h×[nÒ[nÑ[pÔ[pð ñ  ô  Ðð 59Ô4F×4LÒ4LÑ4NÔ4Nð ð Ñ0Ð" LØ-?�˜\Ñ*Ø4D×4HÒ4HØ Ý�3Ð1Ñ2Ô2Ð4Ñ5Ô5ñ5ô 5�Ð0Ñ1Ð1ð
 ˜]Ð*Ð*s+   Á4E5 ÂB>E)Å)E-Å0E-Å5
F Å?FÆF ú$tuple[list[PdfObject], StreamObject]c                óR  — ddl m} g }g }g }| j        dk    rdnd}| j        dk    rdnd}| j        dk    rdnd	}| j        dk    rd
nd}| j        dk    rdnd}	| j        p+t	          t
          t          t          f         | j        ¦  «         	                    ¦   «         }
|
D �]-\  }}t          j        d|¦  «        }t          |t          ¦  «        rt          |¦  «        n|}|                     |¬¦  «        }|                     d¦  «                             ¦   «                              ¦   «         }|                     d|› d|› d�¦  «         | j        |vrx| j                             t	          t          |¦  «        | j        d         ¦  «        }|                     t/          |¦  «        t1          t/          |¦  «        g¦  «        g¦  «         �Œ/|d t2          …         x}rj|d t2          …= |                     t5          |¦  «        › d�¦  «         |                     |¦  «         |                     d¦  «         |d t2          …         x}°jt7          ¦   «         }|                     d|	› d|› d|› d|› d�	d                     |¦  «        z   dz                        d¦  «        ¦  «         ||fS )Nr   rÖ   r$  z	{cid:04X}z	{cid:02X}Ú0000Ú00ÚFFFFÚFFzAdobe-Identity-UCSzCustom-Simple-8BitzI/CIDSystemInfo <<
/Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
Ú ÚNFKC)Úcidr"  ú<z> <ú>rp   z beginbfcharÚ	endbfcharz=/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
z/CMapName /z, def
/CMapType 2 def
1 begincodespacerange <z> endcodespacerange
ú
z>
endcmap
CMapName currentdict /CMap defineresource pop
end endÚascii)rå   r×   rn   rm   r
   r´   r@   r4   rj   r³   ÚunicodedataÚ	normalizer…   r_  Úformatr^  ÚhexÚupperÚappendr5   rf   r‰   Úextendr   r   ÚCMAP_MAX_ENTRIES_PER_GROUPr‡   r   r4  Újoin)rY   r×   Úwidths_listÚunicode_mapÚ
bfchar_mapÚsrc_hex_formatÚcodespace_minÚcodespace_maxÚ	cmap_nameÚcid_system_infoÚmapping_sourceÚsrc_idÚactual_charÚnormalized_charsrr  Úcid_hexÚuni_hexrŽ   Úpartial_listÚto_unicode_streams                       rP   Ú&_create_widths_list_and_unicode_streamz+Font._create_widths_list_and_unicode_stream  s2  € ØEÐEÐEÐEÐEÐEàˆØˆØ "ˆ
ð )-¬¸Ò(@Ð(@˜˜ÀkˆØ"&¤-°7Ò":Ð":˜˜ÀˆØ"&¤-°7Ò":Ð":˜˜ÀˆØ,0¬M¸WÒ,DÐ,DÐ(Ð(ÐJ^ˆ	ð Œ} Ò'Ð'ð ]Ð\Ø-/ð 	ð Ô,ÐSµµT½#½s¸(´^ÀTÄ]Ñ0SÔ0S×ZÒZÑ\Ô\ˆð $2ð 	\ñ 	\ÑˆF�Kõ  +Ô4°V¸[ÑIÔIÐÝ!+¨FµCÑ!8Ô!8ÐD•#�f‘+”+�+¸fˆCØ$×+Ò+°Ð+Ñ4Ô4ˆGØ&×-Ò-¨kÑ:Ô:×>Ò>Ñ@Ô@×FÒFÑHÔHˆGØ×ÒÐ8 'Ð8Ð8¨gÐ8Ð8Ð8Ñ9Ô9Ð9ð ŒyÐ 1Ð1Ð1ð Ô-×1Ò1µ$µs¸FÑ2CÔ2CÀTÔEZÐ[dÔEeÑfÔf�Ø×"Ò"¥L°Ñ$5Ô$5µ{ÅLÐQVÑDWÔDWÐCXÑ7YÔ7YÐ#ZÑ[Ô[Ð[ùà(Ð)DÕ*DÐ)DÔEÐEˆlð 	,ØÐ6Õ6Ð6Ð7Ø×Ò¥# lÑ"3Ô"3ÐAÐAÐAÑBÔBÐBØ×Ò˜|Ñ,Ô,Ð,Ø×Ò˜{Ñ+Ô+Ð+ð	 )Ð)DÕ*DÐ)DÔEÐEˆlð 	,õ )™NœNÐØ×"Ò"ðað #ðað að (ð	að að +8ðað að =Jðað að að —)’)˜KÑ(Ô(ñ)ð,ñ
÷ Šf�W‰oŒoñ	
ô 	
ð 	
ð  Ð-Ð-Ð-rR   c                ó`  — | j         j        �r6| j        dk    �r*|                      ¦   «         \  }}t	          t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d| j        › �¦  «        t          d¦  «        t	          t          d	¦  «        t          d
¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        i¦  «        t          d¦  «        | j          	                    ¦   «         t          d¦  «        t          |¦  «        t          d¦  «        t          | j        d         ¦  «        t          d¦  «        t          d¦  «        i¦  «        }t	          t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d| j        › �¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          |g¦  «        t          d¦  «        |i¦  «        S t          d¦  «        }g }d„ t          j        ¦   «         D ¦   «         }t          t           t"          t$          f         | j        ¦  «        }|                     ¦   «         D ]Y\  }}	|                     |¦  «        }
|
r=|
|	k    r7|                     t          |¦  «        t          ||
         ¦  «        g¦  «         ŒZ|rHt	          t          d¦  «        t          d¦  «        t          d¦  «        t          |¦  «        i¦  «        }nt          d¦  «        }t	          t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d ¦  «        t          d| j        › �¦  «        t          d¦  «        t          d| j        › �¦  «        t          d¦  «        |i¦  «        }|r)|                      ¦   «         \  }}||t          d¦  «        <   |S )!Nr$  rF   z/FontrÙ   z/CIDFontType2rØ   rI   z/CIDSystemInfoz	/RegistryÚAdobez	/OrderingÚIdentityz/Supplementr   rG   r›   rã   rp   z/CIDToGIDMapz	/Identityz/Type0z	/Encodingz/Identity-Hrá   rÜ   rL  c                ó   — i | ]\  }}||“Œ	S rM   rM   )rN   ÚkeyrÇ   s      rP   r¡   z)Font.as_font_resource.<locals>.<dictcomp>  s   € ÐRÐRÐR©z¨s°E  sÐRÐRÐRrR   z/BaseEncodingz/WinAnsiEncodingz/DifferencesrÚ   z/Name)rd   rC   rn   r‘  r   r   r5   r   r   r[   r   rf   r   r   r³   r
   r´   r@   r4   rj   r‰   r~  )rY   r�  r�  Úcid_fontrR  Údifferences_listÚreverse_adobe_glyphsÚown_encodingr¬   r�   Úencoding_charrj   Úsimple_fontÚ_s                 rP   Úas_font_resourcezFont.as_font_resourceZ  sÒ  € ð ÔÔ)ñ 	¨d¬m¸wÒ.FÑ.Fð .2×-XÒ-XÑ-ZÔ-ZÑ*ˆKÐ*õ (Ý˜7Ñ#Ô#¥Z°Ñ%8Ô%8Ý˜:Ñ&Ô&­
°?Ñ(CÔ(CÝ˜;Ñ'Ô'­°O¸¼	°O°OÑ)DÔ)DÝÐ+Ñ,Ô,Õ.>Ý˜{Ñ+Ô+Õ-=¸gÑ-FÔ-FÝ˜{Ñ+Ô+Õ-=¸jÑ-IÔ-IÝ˜}Ñ-Ô-­|¸A©¬ð@ñ /ô /õ
 Ð,Ñ-Ô-¨tÔ/C×/_Ò/_Ñ/aÔ/aÝ˜4Ñ Ô ¥+¨kÑ":Ô":Ý˜5Ñ!Ô!¥<°Ô0EÀiÔ0PÑ#QÔ#QÝ˜>Ñ*Ô*­J°{Ñ,CÔ,Cð)ñ ô ˆHõ  $Ý˜7Ñ#Ô#¥Z°Ñ%8Ô%8Ý˜:Ñ&Ô&­
°8Ñ(<Ô(<Ý˜;Ñ'Ô'­°O¸¼	°O°OÑ)DÔ)DÝ˜;Ñ'Ô'­°MÑ)BÔ)BÝÐ-Ñ.Ô.µ¸X¸JÑ0GÔ0GÝ˜<Ñ(Ô(Ð*;ð%ñ ô ð õ >¸hÑGÔGÐØ<>ÐØRÐR½\Ô=OÑ=QÔ=QÐRÑRÔRÐÝ'+­Dµµc°¬N¸D¼MÑ'JÔ'JˆØ#4×#:Ò#:Ñ#<Ô#<ð 	nð 	nÑˆC�Ø(×,Ò,¨SÑ1Ô1ˆMØð n °.Ò!@Ð!@Ø ×'Ò'­°cÑ):Ô):½JÐG[Ð\iÔGjÑ<kÔ<kÐ(lÑmÔmÐmøàð 	6Ý6FÝ˜?Ñ+Ô+­ZÐ8JÑ-KÔ-KÝ˜>Ñ*Ô*­KÐ8HÑ,IÔ,IðHñ 7ô 7ˆHˆHõ
 "Ð"4Ñ5Ô5ˆHå'Ý�wÑÔ¥¨GÑ!4Ô!4Ý�zÑ"Ô"¥J¨xÑ$8Ô$8Ý�wÑÔ¥¨O°´	¨O¨OÑ!<Ô!<Ý�{Ñ#Ô#¥Z°°D´I°°Ñ%@Ô%@Ý�{Ñ#Ô# Xð)
ñ ô ˆð ð 	FØ#'×#NÒ#NÑ#PÔ#PÑ ˆAÐ Ø4EˆK�
 <Ñ0Ô0Ñ1àÐrR   Úwriterr!   Útarget_resource_dictÚfont_resource_namer   r   c                ó6  — |                       ¦   «         }d|v r+|                     |d         ¦  «        |t          d¦  «        <   d|v r7t          t          |d         ¦  «        }t          t
          |d         ¦  «        }n|}d|v rzt          t
          |d         ¦  «        }dD ]1}||v r+|                     ||         ¦  «        |t          |¦  «        <   Œ2|                     |d         ¦  «        |t          d¦  «        <   |                     |¦  «        }	|	||<   |	S )a  
        Some objects in a font resource need to be indirect objects. This method
        ensures that ToUnicode, FontDescriptor, FontFile, and, ultimately, the font
        resource itself, are registered with the PdfWriter instance as indirect objects.
        rÜ   rá   r   rG   rÎ   )rž  Ú_add_objectr   r
   r   r   )
rY   rŸ  r   r¡  Úfont_resourcerâ   Úfont_resource_dictrË   r–  Úfont_resource_refs
             rP   Ú_add_to_writerzFont._add_to_writerœ  sF  € ð ×-Ò-Ñ/Ô/ˆØ˜=Ð(Ð(Ø6<×6HÒ6HÈÐWcÔIdÑ6eÔ6eˆM�* \Ñ2Ô2Ñ3à Ð.Ð.Ý#¥K°Ð?QÔ1RÑSÔSÐÝ!%Õ&6Ð8HÈÔ8KÑ!LÔ!LÐÐà!.ÐàÐ 2Ð2Ð2Ý"&Õ'7Ð9KÐL]Ô9^Ñ"_Ô"_ÐØ@ð hð h�ØÐ-Ð-Ð-Ø;A×;MÒ;MÐNaÐbeÔNfÑ;gÔ;gÐ'­
°3©¬Ñ8øØ@F×@RÒ@RØ"Ð#4Ô5ñAô AÐ�zÐ*;Ñ<Ô<Ñ=ð #×.Ò.¨}Ñ=Ô=ÐØ3DÐÐ/Ñ0Ø Ð rR   rp  Útextc                ó<   ‡ — t          ˆ fd„|D ¦   «         d¦  «        S )zDSum of character widths specified in PDF font for the supplied text.c                ó\   •— g | ](}‰j                              |‰j         d          ¦  «        ‘Œ)S )rp   )rf   r‰   )rN   rO  rY   s     €rP   rQ   z'Font.get_text_width.<locals>.<listcomp>À  s5   ø€ Ð`Ð`Ð`ÐSWˆTÔ"×&Ò& t¨TÔ-BÀ9Ô-MÑNÔNÐ`Ð`Ð`rR   r=   )r¾   )rY   r¨  s   ` rP   Úget_text_widthzFont.get_text_width½  s0   ø€ åØ`Ð`Ð`Ð`Ð[_Ð`Ñ`Ô`Ðbeñ
ô 
ð 	
rR   c                óN  ‡— | j         rAt          | j                              ¦   «         ¦  «        Št          ˆfd„|D ¦   «         ¦  «        S t	          | j        t          ¦  «        rAt          | j                             ¦   «         ¦  «        Št          ˆfd„|D ¦   «         ¦  «        S dS )z7Check whether the font is able to encode a text string.c              3  ó    •K  — | ]}|‰v V — Œ	d S rÞ   rM   ©rN   rO  Úsupported_charss     €rP   rà   z"Font.can_encode.<locals>.<genexpr>Ç  ó(   øè è € Ð@Ð@°4�t˜Ð.Ð@Ð@Ð@Ð@Ð@Ð@rR   c              3  ó    •K  — | ]}|‰v V — Œ	d S rÞ   rM   r®  s     €rP   rà   z"Font.can_encode.<locals>.<genexpr>Ë  r°  rR   F)rm   Úsetr½   rç   r…   rj   r´   )rY   r¨  r¯  s     @rP   Ú
can_encodezFont.can_encodeÃ  s¨   ø€ àÔð 	AÝ! $Ô"4×";Ò";Ñ"=Ô"=Ñ>Ô>ˆOÝÐ@Ð@Ð@Ð@¸4Ð@Ñ@Ô@Ñ@Ô@Ð@å�d”m¥TÑ*Ô*ð 	AÝ! $¤-×"6Ò"6Ñ"8Ô"8Ñ9Ô9ˆOÝÐ@Ð@Ð@Ð@¸4Ð@Ñ@Ô@Ñ@Ô@Ð@ð ˆurR   N)
ry   r   rz   rl   rj   ri   r{   re   rD   r|   )r‚   r@   r�   r@   rD   r|   )r•   r@   rƒ   r@   rD   r|   )r™   r   r{   re   rD   r|   )rj   ri   rm   rl   rD   r4   )r{   re   rA   r@   rv   r4   rD   r|   )rf   re   rA   r@   rv   r4   rD   r8   )rÃ   r   rD   rÄ   )rË   r   rD   rÌ   )ry   r   rD   rh   )rî   r4   rï   rw   rð   r#   rD   rñ   )rö   r   r÷   r   rø   r    rD   r@   )rC   r"   rD   rh   )rI  )rJ  r4   rD   rh   )rD   rU  )rD   rj  r\   )rŸ  r!   r   r   r¡  r   rD   r   )rp  )r¨  r4   rD   r8   )r¨  r4   rD   rw   )&r]   r^   r_   r`   ra   r   r´   rm   rn   r/   rd   rf   rt   rv   rx   Ústaticmethodr�   r¤   ÚMAX_WIDTH_ENTRY_COUNTr†   r±   r¸   rÀ   rÂ   rÊ   rÔ   Úclassmethodrí   rõ   r  rH  rT  ri  r‘  rž  r§  r«  r³  rM   rR   rP   rh   rh   u   sN  € € € € € € ðð ð$ €I€I�IØ"Ð"Ð"Ñ"Ø$) E¸$Ð$?Ñ$?Ô$?€MÐ?Ð?Ð?Ñ?Ø€HÐÐÐÑØ&+ e¸NÐ&KÑ&KÔ&K€OÐKÐKÐKÑKØ).¨Ð?WÐ?WÐ)XÑ)XÔ)XÐÐXÐXÐXÑXØ"€KÐ"Ð"Ð"Ñ"Ø€JÐÐÐÑØ€MÐÐÐÑàð'=ð '=ð '=ñ „\ð'=ðR ðjð jð jñ „\ðjð Ø5Jð Vð Vð Vð Vñ „\ðVð ðIð Ið Iñ „\ðIðV ðð ð ñ „\ðð  ðdð dð dñ „\ðdð$ ð0ð 0ð 0ñ „\ð0ð ð2ð 2ð 2ñ „\ð2ð* ð)&ð )&ð )&ñ „\ð)&ðV ð]
ð ]
ð ]
ñ „[ð]
ð~ ð#ð #ð #ñ „\ð#ðJ ð4ð 4ð 4ñ „\ð4ðl ðz
ð z
ð z
ñ „[ðz
ðx ðð ð ð ñ „[ðð.6+ð 6+ð 6+ð 6+ðp@.ð @.ð @.ð @.ðD@ð @ð @ð @ðD!ð !ð !ð !ðB
ð 
ð 
ð 
ð 
ðð ð ð ð ð rR   rh   )CÚ
__future__r   rx  Úcollections.abcr   Údataclassesr   r   Útypingr   r   r	   r
   Úpypdf.genericr   r   r   r   r   r   r   r   r   Ú_cmapr   Ú_codecsr   Ú_codecs.adobe_glyphsr   Ú_utilsr   Ú	constantsr   Úerrorsr   r   ÚfontTools.ttLib.tables._h_e_a_dr   ÚfontTools.ttLib.tables._p_o_s_tr   Ú#fontTools.ttLib.tables.DefaultTabler   ÚfontTools.ttLib.tables.O_S_2f_2r    Ú_writerr!   Úior"   ÚfontTools.ttLibr#   r%  r&  r”   rµ  rˆ   rÿ   r  r	  r  r  r  r  r  r  r/   rc   rh   rM   rR   rP   ú<module>rÉ     s$  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð !Ð  Ð  Ð  Ð  Ð  Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø /Ð /Ð /Ð /Ð /Ð /Ø #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4àð $Ø>Ð>Ð>Ð>Ð>Ð>Ø>Ð>Ð>Ð>Ð>Ð>Ø@Ð@Ð@Ð@Ð@Ð@Ø>Ð>Ð>Ð>Ð>Ð>à#Ð#Ð#Ð#Ð#Ð#ðØÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&Ø€M€MøØð ð ð Ø€M€M€Mðøøøð
 #Ð ØÐ à!$Ð ð Ð ØÐ Ø !Ð Ø$%Ð !Ø#$Ð  Ø$%Ð !ØÐ ØÐ ð !Ð ð €�$ÐÑÔð)(ð )(ð )(ð )(ð )(ñ )(ô )(ñ Ôð)(ðX €�$ÐÑÔð'ð 'ð 'ð 'ð 'ñ 'ô 'ñ Ôð'ð
 ðYð Yð Yð Yð Yñ Yô Yñ „ðYð Yð Ys   ÂB ÂBÂB