§
    �’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/m0Z0 dZ1n# e2$ r dZ1Y nw xY wdZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ= ed¬ ¦  «         G d!„ d"¦  «        ¦   «         Z> ed¬ ¦  «         G d#„ d$¦  «        ¦   «         Z?e G d%„ d&¦  «        ¦   «         Z@d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)Útable_O_S_2f_2)Ú	PdfWriter)ÚBytesIO)ÚTTFontÚ
TTLibErrorTFi   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Úascentr/   Ú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     ú9C:\Projects\DSCons\.venv\Lib\site-packages\pypdf\_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   r4   r   r@   r   rA   r   r=   r8   r9   r:   r;   rB   )ÚselfÚfont_descriptor_resources     rO   Úas_font_descriptor_resourcez*FontDescriptor.as_font_descriptor_resourceX   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°Ñ%=Ô%=Ñ>à'Ð'rQ   ©rC   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   Ú__annotations__r4   r5   r6   r8   r9   r:   r;   r=   r@   rA   rB   rZ   rL   rQ   rO   r.   r.   ?   s   € € € € € € ðð ð Ba€MÐ`Ð`Ð`Ñ`à€DÐÐÐÑØ€FÐÐÐÑØ€FÐÐÐÑà€FÐÐÐÑØ€GÐÐÐÑØ€JÐÐÐÑØ€HÐÐÐÑØ€LÐÐÐÑØ€E€O€O€O�OØ.;€DÐ;Ð;Ð;Ñ;Ø%)€IÐ)Ð)Ð)Ñ)ð(ð (ð (ð (ð (ð (rQ   r.   c                  ó$   — e Zd ZU ded<   ded<   dS )ÚCoreFontMetricsr.   Úfont_descriptorúdict[str, int]Úcharacter_widthsN)r\   r]   r^   r`   rL   rQ   rO   rb   rb   l   s*   € € € € € € à#Ð#Ð#Ñ#Ø$Ð$Ð$Ñ$Ð$Ð$rQ   rb   c                  ó4  — 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dRd„¦   «         ZedSd"„¦   «         ZedTd$„¦   «         ZedUd&„¦   «         ZedVd'„¦   «         ZedWd)„¦   «         ZedXd*„¦   «         ZedYd.„¦   «         ZedZd1„¦   «         Zed[d2„¦   «         Zed\d9„¦   «         Zed]d<„¦   «         Zed^d_d?„¦   «         Zd`dA„ZdadC„ZdbdD„Z dcdK„Z!dddedO„Z"dfdP„Z#dQS )gÚ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
        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.

    r3   r4   ústr | dict[int, str]Úencoding)Údefault_factoryúdict[Any, Any]Úcharacter_mapr2   Úsub_typer.   rc   c                 ó
   — ddiS )NÚdefaultéô  rL   rL   rQ   rO   ú<lambda>zFont.<lambda>‹   s   € ÀiÐQTÐEU€ rQ   rd   re   éú   zfloat | intÚspace_widthú Ú
space_charTÚboolÚinterpretableÚpdf_font_dictr   Úchar_mapÚcurrent_widthsrC   ÚNonec                óÖ   — t          t          | d         ¦  «        }|                      dd¦  «        }t          |¦  «        D ]'\  }}t	          |¦  «        |t          ||z   ¦  «        <   Œ(dS )zcParses a TrueType or Type1 font's /Widths array from a font dictionary and updates character widthsú/Widthsz
/FirstCharr   N)r
   r   ÚgetÚ	enumerater?   Úchr)rx   ry   ri   rz   Úwidths_arrayÚ
first_charÚidxÚwidths           rO   Ú_collect_tt_t1_character_widthsz$Font._collect_tt_t1_character_widths�   sr   € õ �K¨°yÔ)AÑBÔBˆØ"×&Ò& |°QÑ7Ô7ˆ
Ý# LÑ1Ô1ð 	?ð 	?‰JˆC�Ý47¸±J´JˆN�3˜s ZÑ/Ñ0Ô0Ñ1Ð1ð	?ð 	?rQ   Ústartr?   Ú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      rO   Ú__check_range_lengthzFont.__check_range_length�   su   € à�Š;ˆ;Ý#Ø;¨EÐ;Ð;°SÐ;Ð;Ð;ñô ð ð �e‘ˆØÕ,Ò,Ð,Ý#Ð$hÀ%Ð$hÐ$hÕLeÐ$hÐ$hÐ$hÑiÔiÐið -Ð,rQ   rŒ   c                óR   — | t           k    rt          d| › dt           › d�¦  «        ‚d S )NzToo many character widths: rŠ   r‰   )ÚMAX_WIDTH_ENTRY_COUNTr   )rŒ   s    rO   Ú__check_entry_countzFont.__check_entry_count¨   s9   € àÕ(Ò(Ð(Ý#Ð$dÀ%Ð$dÐ$dÕLaÐ$dÐ$dÐ$dÑeÔeÐeð )Ð(rQ   Ú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.)ÚsourceÚw_entryNc                ó4   — i | ]\  }}t          |¦  «        |“ŒS rL   ©r€   )rM   Ú_cidxÚ_widths      rO   ú
<dictcomp>z6Font._collect_cid_character_widths.<locals>.<dictcomp>Ð   s4   € ð ð ð á)˜E 6õ ˜E™
œ
 Fðð ð rQ   r$   c                ó0   •— i | ]}t          |¦  «        ‰“ŒS rL   r—   )rM   r˜   Úconst_widths     €rO   rš   z6Font._collect_cid_character_widths.<locals>.<dictcomp>è   s1   ø€ ð ð ð à!õ ˜E™
œ
 Kðð ð rQ   z9Invalid font width definition. Last element: %(w_entry)s.)r~   r   Ú
get_objectÚlenr   Ú
isinstancer?   r7   r   r\   r   rg   Ú_Font__check_range_lengthÚ_Font__check_entry_countÚupdateÚzipÚrange)r‘   rz   Ú
skip_countÚentry_countÚ_wÚ	_w_lengthrƒ   r•   Úw_next_entryÚ	start_idxÚ
width_listÚstop_idxrœ   s               @rO   Ú_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>	ð >	rQ   c                óø   — d}t          | t          ¦  «        r1|                      ¦   «         D ]\  }}||k    rt          |¦  «        c S Œ|                     ¦   «         D ]\  }}||k    rt	          |¦  «        c S Œ|S )Nrt   )rŸ   ÚdictÚitemsr€   r3   )ri   rl   ru   Ú	char_codeÚchar_strÚglyph_ids         rO   Ú_get_space_charzFont._get_space_charù   s§   € ð
 ˆ
Ý�h¥Ñ%Ô%ð 	*Ø'/§~¢~Ñ'7Ô'7ð *ð *Ñ#�	˜8Ø˜zÒ)Ð)Ý˜y™>œ>Ð)Ð)Ð)ð *ð #0×"5Ò"5Ñ"7Ô"7ð 	%ð 	%ÑˆH�hØ˜:Ò%Ð%Ý˜8‘}”}Ð$Ð$Ð$ð &ð ÐrQ   r@   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 )Nrp   ro   r   r$   c                ó   — g | ]
}|d k    ¯|‘ŒS )r   rL   )rM   Úws     rO   rP   z+Font._add_default_width.<locals>.<listcomp>  s   € ÐDÐDÐD˜a¸aÀ!ºe¸e˜¸e¸e¸erQ   )r   ÚFIXED_PITCHr?   ÚvaluesÚsumrž   )rz   r@   ru   Úvalid_widthss       rO   Ú_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Ñ!Ð!Ð!rQ   c                óž   — |                       |d¦  «        }|dk    r|S |t          j        z  t          j        k    r| d         S | d         dz  S )Nr   ro   r$   )r~   r   r¸   )re   r@   ru   rs   s       rO   Ú_add_space_widthzFont._add_space_width  s[   € ð '×*Ò*¨:°qÑ9Ô9ˆØ˜!ÒÐØÐà•IÔ)Ñ)­iÔ.CÒCÐCØ# IÔ.Ð.à 	Ô*¨aÑ/Ð/rQ   Ú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 rL   )r7   )rM   Úvalues     rO   rP   z$Font._parse_bbox.<locals>.<listcomp>;  s   € Ð7Ð7Ð7 U•E˜%‘L”LÐ7Ð7Ð7rQ   Nr&   r   r   r$   r%   )Ú	TypeErrorÚ
ValueErrorrž   )r¿   rA   s     rO   Ú_parse_bboxzFont._parse_bbox,  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)
)rG   r4   )z/FontFamilyr5   )z/FontWeightr6   )rS   r8   )rT   r9   )rU   r:   )rV   r;   )rR   r=   )rI   r@   )rJ   rA   rA   ©z	/FontFilerW   z
/FontFile3rB   z!More than one /FontFile found in zBFailed to get %(source_key)r in %(font_descriptor_obj)s: %(error)s)r”   Ú
source_keyrÇ   Úerror)rg   rÆ   r   r�   r   r\   )rÇ   Úfont_descriptor_kwargsrË   Ú
target_keyrA   rB   Úes          rO   Ú_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                óü  — ddl m} |                     dd¦  «                             d¦  «        }|                     dd¦  «                             d¦  «        }t	          |¦  «        \  }}d }i }d}	|                     d¦  «        dv �rÖ|d	k    r2d
|vr.t          d„ |                     d¦  «        pg D ¦   «         ¦  «        }	|	�r™d|v r|                      ||||¦  «         n¹||v rµ||         j        }t          |t          ¦  «        rM| 
                    ¦   «         D ]7\  }
}|||         j        v r#||         j        |         |t          |
¦  «        <   Œ8nFt          d¦  «        D ]6}
t          |
¦  «        }|||         j        v r||         j        |         ||<   Œ7d|v r‰|                     dt          ¦   «         ¦  «                             ¦   «         }d|v r0t!          t"          |d                              ¦   «         ¦  «        |d<   t%          di |                      |¦  «        ¤Ž}�nId|v r2d|i}|                      |d         ¦  «        }|�||d<   t%          di |¤Ž}�nt+          t!          t,          |d         ¦  «        ¦  «        D ]è\  }}t!          t          |                     ¦   «         ¦  «        }|t!          t,          |d         ¦  «        |<   |                      ||¬¦  «         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ú	/BaseFontr2   rH   ú/SubtypeT)ú/Type1z/MMType1z	/TrueTypez/Type3ÚType3ú
/ToUnicodec              3  ó(   K  — | ]}|t           v V — Œd S ©Nr   )rM   Úcnames     rO   ú	<genexpr>z*Font.from_font_resource.<locals>.<genexpr>„  s;   è è € ð $ð $àð �\Ð)ð$ð $ð $ð $ð $ð $rQ   z
/CharProcsr}   é   rF   z/MissingWidthro   rJ   r4   rA   ú/DescendantFonts)r‘   rz   ú/DW)r4   ©	r4   rm   ri   rc   rl   re   rs   ru   rw   rL   )Úpypdf._codecs.core_font_metricsrÓ   r~   Úremoveprefixr   Úallr…   rc   rŸ   r¯   r°   re   r€   r¤   r   r�   r
   r?   r.   rÐ   rÆ   r   r   r­   r´   r¼   r@   r¾   )Úclsrx   rÓ   r4   rm   ri   rl   rc   re   rw   ÚcodeÚ	characterrÇ   rÍ   rA   Ú
d_font_idxr‘   ru   rs   s                      rO   Úfrom_font_resourcezFont.from_font_resourcen  s�  € ð
 	FÐEÐEÐEÐEÐEð × Ò  ¨iÑ8Ô8×EÒEÀcÑJÔJˆØ ×$Ò$ Z°Ñ;Ô;×HÒHÈÑMÔMˆÝ".¨}Ñ"=Ô"=Ñˆ�-ØˆØ+-ÐØˆð ×Ò˜ZÑ(Ô(Ð,YÐYÑYð
 ˜7Ò"Ð" |¸=Ð'HÐ'HÝ #ð $ð $à!.×!2Ò!2°<Ñ!@Ô!@Ð!FÀBð$ñ $ô $ñ !ô !�ð ñ OØ Ð-Ð-Ø×7Ò7Ø% }°hÐ@Pñô ð ð ð Ð.Ð.Ð.Ø&7¸Ô&=Ô&M�OÝ! (­DÑ1Ô1ð 	rØ/7¯~ª~Ñ/?Ô/?ð rð r™O˜D )à(Ð,=¸dÔ,CÔ,TÐTÐTØ>OÐPTÔ>UÔ>fÐgpÔ>qÐ 0µ°T±´Ñ ;øðrõ
 %*¨#¡J¤Jð rð r˜DÝ(+¨D©	¬	˜IØ(Ð,=¸dÔ,CÔ,TÐTÐTØ>OÐPTÔ>UÔ>fÐgpÔ>qÐ 0°Ñ ;øØ$¨Ð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Ý•[ -Ð0BÔ"CÑDÔDñ'ô 'ð 	dð 	dÑ"�
˜Fõ Õ.°×0AÒ0AÑ0CÔ0CÑDÔD�ØSY••[ -Ð0BÔ"CÑDÔDÀZÑPØ×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ØØØØ+Ø'Ø-Ø#Ø!Ø'ð

ñ 

ô 

ð 
	
rQ   Úheaderr   Ú
postscriptr   Úos2r   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_classr@   r=   s          rO   Ú%_font_flags_from_truetype_font_tablesz*Font._font_flags_from_truetype_font_tablesË  sŸ  € ð ð 	1Ø”ZˆFð Ô+¨qÑ0ˆLØˆð Œ?Õ3Ñ3ð 	&¸ð 	&ÀÄÕRhÑ@hð 	&Ø•YÔ%Ñ%ˆEØð 	*Ø%Ô1ˆLØ˜sÒ"Ð"Ø�Ô)Ñ)�ð ð	+ØÔ'Õ+LÒLÐLØð MØ&Ô3°aÒ7Ð7à•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àˆrQ   rB   r!   c                óN  — t           st          d¦  «        ‚t          |¦  «        5 }|d         }|d         }|d         j        }|                     dd ¦  «        }|                     dd ¦  «        }|j        }|st          d¦  «        ‚d|z  }	i }
|                     d	d ¦  «        }|rE|                     ¦   «         |
d	<   |                     ¦   «         |
d
<   | 	                    ¦   «         |
d<   t          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 }|                     ¦   «         }|                     d¦  «        }|rÆ|                     ¦   «         }tA          |¦  «        D ]¡\  }}|                     |¦  «        }|€ŒtC          |¦  «        }| "                    |¦  «        }| #                    dd¦  «        }| $                    dd¦  «        }|||<   t          t          ||         d         |	z  d¦  «        ¦  «        ||<   Œ¢nt          d¦  «        ‚|  %                    ||¦  «        }|  &                    ||
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'ÚheadÚhheaÚhmtxÚpostzOS/2z(Font file has an invalid unitsPerEm of 0r0   r4   r5   r6   r   r8   r9   r:   r;   r@   rA   z/Length1rB   Ú	utf_16_beÚcmapr$   Úbigú	utf-16-beÚsurrogatepassz$Font file does not have a cmap tableÚType0Trà   rL   ))ÚHAS_FONTTOOLSÚImportErrorr"   Úmetricsr~   Ú
unitsPerEmr   ÚgetBestFullNameÚgetBestFamilyNameÚgetBestSubFamilyNamer?   Úroundr8   r9   Ú
sCapHeightÚsxHeightÚAttributeErrorr  ÚxMinÚyMinÚxMaxÚyMaxr   ÚgetvalueÚset_datar¢   r   r   rž   r.   ÚgetGlyphOrderÚbuildReversedMinr   r€   Ú
getGlyphIDÚto_bytesÚdecoder´   r¼   r¾   r4   )rä   rB   Útt_font_objectré   Úhorizontal_headerr  rê   rë   Úunits_per_emÚscale_factorrÍ   ÚnamesÚfont_file_dataÚfont_file_raw_bytesrc   ri   re   rl   Úglyph_orderÚtt_font_cmap_tableÚreverse_cmapÚgidÚglyphr±   ÚcharÚ	gid_bytesÚgid_key_stringru   rs   s                                rO   Úfrom_truetype_font_filezFont.from_truetype_font_file   sõ  € åð 	fÝÐdÑeÔeÐeÝ�IÑÔð P	 .ð
 $ FÔ+ˆFØ .¨vÔ 6ÐØ$ VÔ,Ô4ˆGð (×+Ò+¨F°DÑ9Ô9ˆJØ ×$Ò$ V¨TÑ2Ô2ˆCð "Ô,ˆLØð OÝ"Ð#MÑNÔNÐNØ! LÑ0ˆLð 68Ð"Ø"×&Ò& v¨tÑ4Ô4ˆEØð PØ16×1FÒ1FÑ1HÔ1HÐ& vÑ.Ø38×3JÒ3JÑ3LÔ3LÐ& xÑ0Ø38×3MÒ3MÑ3OÔ3OÐ& xÑ0Ý/2µ5Ð9JÔ9QÐT`Ñ9`ÐbcÑ3dÔ3dÑ/eÔ/eÐ" 8Ñ,Ý03µEÐ:KÔ:SÐVbÑ:bÐdeÑ4fÔ4fÑ0gÔ0gÐ" 9Ñ-Øð ðÝ;>½uÀSÄ^ÐVbÑEbÐdeÑ?fÔ?fÑ;gÔ;gÐ*¨<Ñ8Ý9<½UÀ3Ä<ÐR^ÑC^Ð`aÑ=bÔ=bÑ9cÔ9cÐ*¨:Ñ6Ð6øÝ%ð ð ð Ø�Dðøøøð /2×.WÒ.WÐX^Ð`jÐloÑ.pÔ.pÐ" 7Ñ+õ �f”k LÑ0°!Ñ4Ô4Ý�f”k LÑ0°!Ñ4Ô4Ý�f”k LÑ0°!Ñ4Ô4Ý�f”k LÑ0°!Ñ4Ô4ð	.Ð" 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à/1ÐØ,.ˆMà(×6Ò6Ñ8Ô8ˆKð "0×!3Ò!3°FÑ!;Ô!;ÐØ!ð KØ1×BÒBÑDÔD�Ý"+¨KÑ"8Ô"8ð 
gð 
g‘J�C˜Ø ,× 0Ò 0°Ñ 7Ô 7�IØ Ð(Ø Ý˜y™>œ>�DØ(×3Ò3°EÑ:Ô:�Cà #§¢¨Q°Ñ 6Ô 6�IØ%.×%5Ò%5°kÀ?Ñ%SÔ%S�NØ48�M .Ñ1Ý7:½5ÀÈÄÐPQÔARÐUaÑAaÐcdÑ;eÔ;eÑ7fÔ7fÐ$ ^Ñ4Ð4ð
gõ #Ð#IÑJÔJÐJà×,Ò,¨X°}ÑEÔEˆJØ×"Ò"Ð#3Ð5KÈGÔ5TÐV`ÑaÔaÐaØ×.Ò.Ø Ð"8¸Ô"AÀ:ñô ˆKð]P	ð P	ð P	ñ P	ô P	ð P	ð P	ð P	ð P	ð P	ð P	øøøð P	ð P	ð P	ð P	ðd ˆsØ Ô%ØØØ+Ø'Ø-Ø#Ø!Øð

ñ 

ô 

ð 
	
s8   ¦DPÄ?AFÆPÆ
FÆPÆFÆIPÐPÐ
Pú
/HelveticaÚcore_font_namec           
     ó  ‡‡— ddl m} |                     d¦  «        }||         Št          d¦  «        } | |i |d‰j        ˆˆfd„|                     ¦   «         D ¦   «         ¬¦  «        }‰j        d         |j        d<   |S )	Nr   rÒ   rH   Úcp1252ÚType1c                ób   •— i | ]+\  }}t          |¦  «        xŠ‰j        v ¯‰‰j        |         “Œ,S rL   )r€   re   )rM   rå   ræ   r4  Úcore_font_metricss      €€rO   rš   z,Font.from_core_font_name.<locals>.<dictcomp>p  sL   ø€ ð ð ð á#�D˜)Ý ™IœIÐ%�DÐ*;Ô*LÐLÐLð Ð'Ô8¸ÔCàLÐLÐLrQ   )r4   rl   ri   rm   rc   re   ro   )rá   rÓ   râ   r   rc   r°   re   )rä   r9  rÓ   Ú	font_nameÚwin_ansi_encodingÚfontr4  r>  s         @@rO   Úfrom_core_font_namezFont.from_core_font_nameb  s½   øø€ àEÐEÐEÐEÐEÐEà"×/Ò/°Ñ4Ô4ˆ	Ø-¨iÔ8ÐÝ=¸hÑGÔGÐàˆsØØØ&ØØ-Ô=ðð ð ð ð à'8×'>Ò'>Ñ'@Ô'@ðñ ô ð
ñ 
ô 
ˆð ,=Ô+MÈiÔ+XˆÔ˜iÑ(àˆrQ   ú'tuple[dict[str, str], dict[str, bytes]]c           	     óœ  — i }i }t           �r‘t          | j        dd¦  «        �rzt          | j        t
          ¦  «        �r_	 t          t          | j        j        ¦  «         	                    ¦   «         }t          t          |¦  «        ¦  «        5 }|                     d¦  «        }|                     ¦   «         }|                     ¦   «         D ]w\  }}|                     |¦  «        }	|	                     dd¦  «        }
|
                     dd¦  «        }t%          |¦  «        }|||<   |                     | j        ¦  «        ||<   Œx	 ddd¦  «         n# 1 swxY w Y   ||fS # t(          t*          f$ r+ |                     ¦   «          |                     ¦   «          Y n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          t3          |¦  «        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).
        rB   Nr  r$   r  r  r  c                ó6   — i | ]\  }}|t          |f¦  «        “ŒS rL   )Úbytes)rM   Úcharacter_codeÚunicode_chars      rO   rš   z.Font._get_typographic_maps.<locals>.<dictcomp>¤  s6   € ð  ð  ð  Ù;W¸>È<��e ^Ð$5Ñ6Ô6ð ð  ð  rQ   )r  Úgetattrrc   rŸ   ri   r3   r
   r   rB   Úget_datar"   r!   r~   ÚgetBestCmapr°   r%  r&  r'  r€   Úencoder  r#   Úclearrl   rF  Úord)rX   r1  Úencoding_cmapr-  r(  r0  Ú	best_cmapÚunicode_intÚ
glyph_namer2  r5  r6  rH  r³   Úglyph_id_strrG  Úcharacter_strÚunicode_to_bytesÚcharacter_code_strs                      rO   Ú_get_typographic_mapszFont._get_typographic_mapsz  s]  € ð
 ˆØˆåñ	&å˜Ô,¨k¸4Ñ@Ô@ñ	&õ ˜4œ=­#Ñ.Ô.ñ	&ð
&Ý!%¥l°DÔ4HÔ4RÑ!SÔ!S×!\Ò!\Ñ!^Ô!^�Ý�G NÑ3Ô3Ñ4Ô4ð 	]¸Ø)7×);Ò);¸FÑ)CÔ)CÐ&Ø 2× >Ò >Ñ @Ô @�IØ3<·?²?Ñ3DÔ3Dð ]ð ]Ñ/˜ ZØ,×7Ò7¸
ÑCÔC˜Ø$'§L¢L°°EÑ$:Ô$:˜	Ø)2×)9Ò)9¸+ÀÑ)WÔ)W˜Ý'*¨;Ñ'7Ô'7˜Ø5C˜ \Ñ2Ø8F×8MÒ8MÈdÌmÑ8\Ô8\˜ nÑ5Ð5ð]ð	]ð 	]ð 	]ñ 	]ô 	]ð 	]ð 	]ð 	]ð 	]ð 	]ð 	]øøøð 	]ð 	]ð 	]ð 	]ð $ ]Ð2Ð2øå"¥JÐ/ð &ð &ð &Ø×"Ò"Ñ$Ô$Ð$Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð&øøøõ �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ð
 ˜]Ð*Ð*s8   Á AE ÂB6EÅE ÅEÅE ÅEÅE Å9FÆFú$tuple[list[PdfObject], StreamObject]c                óh  — 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 �]8\  }}t          j        d|¦  «        }d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        røt          |t          ¦  «        rt          |¦  «        n|}|                     |¬¦  «        }d                     d„ |D ¦   «         ¦  «        }|                     d|› d|› d�¦  «         | j        |vrx| j                             t	          t          |¦  «        | j        d         ¦  «        }|                     t-          |¦  «        t/          t-          |¦  «        g¦  «        g¦  «         �Œ:|d t0          …         x}rj|d t0          …= |                     t3          |¦  «        › d�¦  «         |                     |¦  «         |                     d¦  «         |d t0          …         x}°jt5          ¦   «         }|                     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
Ú ÚNFKCc                ó,   — g | ]}t          |¦  «        ‘ŒS rL   )rN  )rM   r4  s     rO   rP   z?Font._create_widths_list_and_unicode_stream.<locals>.<listcomp>Ë  s   € ÐAÐAÐA¨�#˜d™)œ)ÐAÐAÐArQ   c              3  ó"   K  — | ]
}|d k    V — ŒdS )iÿÿ  NrL   ©rM   Ú	uni_points     rO   rÜ   z>Font._create_widths_list_and_unicode_stream.<locals>.<genexpr>Î  s'   è è € ÐCÐC¨9�9 Ò&ÐCÐCÐCÐCÐCÐCrQ   )Úcidc              3  ó   K  — | ]}|d ›V — Œ	dS )Ú04XNrL   rb  s     rO   rÜ   z>Font._create_widths_list_and_unicode_stream.<locals>.<genexpr>Ñ  s(   è è € Ð!QÐ!Q¸ YÐ"4Ð"4Ð!QÐ!QÐ!QÐ!QÐ!QÐ!QrQ   ú<z> <ú>ro   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Ó   rm   rl   r
   r¯   r?   r3   ri   r°   ÚunicodedataÚ	normalizerã   rŸ   rN  ÚformatÚjoinÚappendr4   re   r~   Úextendr   r   ÚCMAP_MAX_ENTRIES_PER_GROUPrž   r   r"  rL  )rX   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_charsÚ
uni_pointsrd  Úcid_hexÚuni_hexr„   Úpartial_listÚto_unicode_streams                        rO   Ú&_create_widths_list_and_unicode_streamz+Font._create_widths_list_and_unicode_stream°  s]  € Ø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ÐØAÐAÐ0@ÐAÑAÔAˆJõ ÐCÐC¸
ÐCÑCÔCÑCÔCð `Ý%/°½Ñ%<Ô%<ÐH•c˜&‘k”k�kÀ&�Ø(×/Ò/°CÐ/Ñ8Ô8�ØŸ'š'Ð!QÐ!QÀjÐ!QÑ!QÔ!QÑQÔQ�Ø×!Ò!Ð"< gÐ"<Ð"<°'Ð"<Ð"<Ð"<Ñ=Ô=Ð=ð ”9Ð$5Ð5Ð5ð !Ô1×5Ò5µd½3ÀÑ6GÔ6GÈÔI^Ð_hÔIiÑjÔj�EØ×&Ò&­°SÑ(9Ô(9½;ÍÐUZÑH[ÔH[ÐG\Ñ;]Ô;]Ð'^Ñ_Ô_Ð_ùà(Ð)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ñ	
ô 	
ð 	
ð  Ð-Ð-Ð-rQ   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  rE   z/FontrÕ   z/CIDFontType2rÔ   rH   z/CIDSystemInfoz	/RegistryÚAdobez	/OrderingÚIdentityz/Supplementr   rF   r“   rß   ro   z/CIDToGIDMapz	/Identityz/Type0z	/Encodingz/Identity-HrÞ   rØ   r;  c                ó   — i | ]\  }}||“Œ	S rL   rL   )rM   ÚkeyrÃ   s      rO   rš   z)Font.as_font_resource.<locals>.<dictcomp>  s   € ÐRÐRÐR©z¨s°E  sÐRÐRÐRrQ   z/BaseEncodingz/WinAnsiEncodingz/DifferencesrÖ   z/Name)rc   rB   rm   r„  r   r   r4   r   r   rZ   r   re   r   r   r°   r
   r¯   r?   r3   ri   r~   rq  )rX   rs  rƒ  Úcid_fontr@  Údifferences_listÚreverse_adobe_glyphsÚown_encodingrƒ   rG  Úencoding_charri   Úsimple_fontÚ_s                 rO   Úas_font_resourcezFont.as_font_resourceö  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àÐrQ   Ú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   rF   rÊ   )r‘  Ú_add_objectr   r
   r   r   )
rX   r’  r“  r”  Úfont_resourceÚdescendant_fontsÚfont_resource_dictrÇ   r‰  Úfont_resource_refs
             rO   Ú_add_to_writerzFont._add_to_writer8  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Ø Ð rQ   r^  Útextr7   c                ó<   ‡ — t          ˆ fd„|D ¦   «         d¦  «        S )zDSum of character widths specified in PDF font for the supplied text.c                ó\   •— g | ](}‰j                              |‰j         d          ¦  «        ‘Œ)S )ro   )re   r~   )rM   r4  rX   s     €rO   rP   z'Font.get_text_width.<locals>.<listcomp>\  s5   ø€ Ð`Ð`Ð`ÐSWˆTÔ"×&Ò& t¨TÔ-BÀ9Ô-MÑNÔNÐ`Ð`Ð`rQ   r<   )rº   )rX   rœ  s   ` rO   Úget_text_widthzFont.get_text_widthY  s0   ø€ åØ`Ð`Ð`Ð`Ð[_Ð`Ñ`Ô`Ðbeñ
ô 
ð 	
rQ   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Ú   rL   ©rM   r4  Úsupported_charss     €rO   rÜ   z"Font.can_encode.<locals>.<genexpr>c  ó(   øè è € Ð@Ð@°4�t˜Ð.Ð@Ð@Ð@Ð@Ð@Ð@rQ   c              3  ó    •K  — | ]}|‰v V — Œ	d S rÚ   rL   r¢  s     €rO   rÜ   z"Font.can_encode.<locals>.<genexpr>g  r¤  rQ   F)rl   Úsetr¹   rã   rŸ   ri   r¯   )rX   rœ  r£  s     @rO   Ú
can_encodezFont.can_encode_  s¨   ø€ àÔð 	AÝ! $Ô"4×";Ò";Ñ"=Ô"=Ñ>Ô>ˆOÝÐ@Ð@Ð@Ð@¸4Ð@Ñ@Ô@Ñ@Ô@Ð@å�d”m¥TÑ*Ô*ð 	AÝ! $¤-×"6Ò"6Ñ"8Ô"8Ñ9Ô9ˆOÝÐ@Ð@Ð@Ð@¸4Ð@Ñ@Ô@Ñ@Ô@Ð@ð ˆurQ   N)
rx   r   ry   rk   ri   rh   rz   rd   rC   r{   )r†   r?   r‡   r?   rC   r{   )rŒ   r?   rC   r{   )r‘   r   rz   rd   rC   r{   )ri   rh   rl   rk   rC   r3   )rz   rd   r@   r?   ru   r3   rC   r{   )re   rd   r@   r?   ru   r3   rC   r?   )r¿   r   rC   rÀ   )rÇ   r   rC   rÈ   )rx   r   rC   rg   )ré   r   rê   r   rë   r   rC   r?   )rB   r!   rC   rg   )r8  )r9  r3   rC   rg   )rC   rC  )rC   rX  r[   )r’  r    r“  r   r”  r   rC   r   )r^  )rœ  r3   rC   r7   )rœ  r3   rC   rv   )$r\   r]   r^   r_   r`   r   r¯   rl   rm   r.   rc   re   rs   ru   rw   Ústaticmethodr…   r    r¡   r­   r´   r¼   r¾   rÆ   rÐ   Úclassmethodrè   r  r7  rB  rW  r„  r‘  r›  rŸ  r§  rL   rQ   rO   rg   rg   r   s#  € € € € € € ðð ð$ €I€I�IØ"Ð"Ð"Ñ"Ø$) E¸$Ð$?Ñ$?Ô$?€MÐ?Ð?Ð?Ñ?Ø€HÐÐÐÑØ&+ e¸NÐ&KÑ&KÔ&K€OÐKÐKÐKÑKØ', uÐ=UÐ=UÐ'VÑ'VÔ'VÐÐVÐVÐVÑVØ"€KÐ"Ð"Ð"Ñ"Ø€JÐÐÐÑØ€MÐÐÐÑàð
?ð 
?ð 
?ñ „\ð
?ð ðjð jð jñ „\ðjð ðfð fð fñ „\ðfð ðIð Ið Iñ „\ðIðV ðð ð ñ „\ðð  ðdð dð dñ „\ðdð$ ð0ð 0ð 0ñ „\ð0ð ð2ð 2ð 2ñ „\ð2ð* ð)&ð )&ð )&ñ „\ð)&ðV ðZ
ð Z
ð Z
ñ „[ðZ
ðx ð2ð 2ð 2ñ „\ð2ðh ð_
ð _
ð _
ñ „[ð_
ðB ðð ð ð ñ „[ðð.4+ð 4+ð 4+ð 4+ðlD.ð D.ð D.ð D.ðL@ð @ð @ð @ðD!ð !ð !ð !ðB
ð 
ð 
ð 
ð 
ðð ð ð ð ð rQ   rg   )AÚ
__future__r   rl  Ú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.O_S_2f_2r   Ú_writerr    Úior!   ÚfontTools.ttLibr"   r#   r  r  r‹   r�   rò   rô   rü   r  r  rø   rú   r   rr  r.   rb   rg   rL   rQ   rO   ú<module>r»     s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð  Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø .Ð .Ð .Ð .Ð .Ð .Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àð #Ø>Ð>Ð>Ð>Ð>Ð>Ø>Ð>Ð>Ð>Ð>Ð>Ø>Ð>Ð>Ð>Ð>Ð>à"Ð"Ð"Ð"Ð"Ð"ðØÐÐÐÐÐà2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø€M€MøØð ð ð Ø€M€M€Mðøøøð
 #Ð ØÐ ð Ð ØÐ Ø !Ð Ø$%Ð !Ø#$Ð  Ø$%Ð !ØÐ ØÐ ð !Ð ð €�$ÐÑÔð)(ð )(ð )(ð )(ð )(ñ )(ô )(ñ Ôð)(ðX €�$ÐÑÔð%ð %ð %ð %ð %ñ %ô %ñ Ôð%ð
 ðxð xð xð xð xñ xô xñ „ðxð xð xs   Á<B ÂBÂB