Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
ImageFont.cpython-313.pyc890 linesDownload Raw Back to __pycache__
1�

2v�j�����%SSKJr SSKrSSKrSSKrSSKrSSKJr SSKJ	r	 SSK3Jr SSKJ
r
JrJrJrJr SSKJr SS	KJr SS4KJrJr Sr\(aSSKJr SS
KJr SSKJr "SS\5r"SS\5r Sr!S\"S'SSKJr# S#Sjr'"SS5r("SS5r)"SS5r*S$Sjr+S%S&Sjjr,S'S jr-S(S!jr.S)S*S"jjr/g!\$ar%\RL"\%5r#Sr%C%NmSr%C%ff=f)+�)�annotationsN)�IntEnum)�BytesIO)�5ModuleType)�IO�Any�BinaryIO�	TypedDict�cast�)�Image)�StrOrBytesPath)�
DeferredError�is_pathF)�	ImageFile)�ImagingFont)�Fontc�>�\rSrSr%S\S'S\S'S\S'S\S'Srg	)6�Axis�2�7int | None�minimum�default�maximumzbytes | None�name�N)�__name__�8__module__�__qualname__�__firstlineno__�__annotations__�__static_attributes__r��SD:\code\apps\devtools\python\user_packages\Python313\site-packages\PIL/ImageFont.pyrr2s��
��
��
��9�r#rc��\rSrSrSrSrSrg)�Layout�9rrrN)rrrr �BASIC�RAQMr"rr#r$r&r&9s��
�E��Dr#r&i@BzModuleType | DeferredError�core)�10_imagingftc�T�[b![U5[:�a
Sn[U5egg)Nztoo many characters in string)�MAX_STRING_LENGTH�len�11ValueError)�text�msgs  r$�_string_length_checkr2Hs,���$��T��5F�)F�-����o��*G�$r#c��\rSrSr%SrS\S'S
SjrSSjrSSjrSSSjjr	SS	jr12SS13jrSrg)�	ImageFont�^zPIL font wrapperr�fontc���[US5nSn[RRU5SnSHGnU(aUR	5 XE-n[14R"U5nURS;a O,MI U(aUR	5 SUS3n[U5eX`l	URX#5 UR	5 SSS5 g![a M�f=f!,(df   g=f)N�rbr)z.pngz.gifz.pbm��1�Lzcannot find glyph data file z.{gif|pbm|png})�open�os�path�splitext�closer
�mode�	Exception�OSError�file�_load_pilfont_data)�self�filename�fp�image�root�ext�fullnamer1s        r$�
_load_pilfont�ImageFont._load_pilfontcs���
�(�D�
!�R�04�E��7�7�#�#�H�-�a�0�D�/����K�K�M��#�z�H�!�J�J�x�0�E��z�z�Z�/��0�0���K�K�M�4�T�F�:J�K���c�l�"� �I��#�#�B�.��K�K�M�3"�
!��!�����"�
!�s1�AC(�C�)A%C(�15C%�!C(�$C%�%C(�(16C6c��URS;aUR5 Sn[U5eURS5S:waUR5 Sn[	U5eUR5 /UlUR5nU(aUS:XaOURRU5 M;URS5nURX%5 g)Nr9zinvalid font image mode�sPILfont17zNot a PILfont filesDATA18i)	rAr@�	TypeError�read�SyntaxError�readline�info�append�_load)rFrDrIr1�s�datas      r$rE�ImageFont._load_pilfont_datas����:�:�Z�'��K�K�M�+�C��C�.� ��9�9�Q�<�<�'��K�K�M�&�C��c�"�"��
�
����	���
�
��A���Y����I�I���Q��	��y�y��"���19�20�5�r#c��UR5 [RRURU5Ulg�N)�loadr
r*r6�im)rFrIrYs   r$rW�ImageFont._load�s%��
�21�22���J�J�O�O�E�H�H�d�3��	r#c��[U5 [R"URR	U55 URRX5$)aZ23Create a bitmap for the text.24 25If the font uses antialiasing, the bitmap should have mode ``L`` and use a26maximum value of 255. Otherwise, it should have mode ``1``.27 28:param text: Text to render.29:param mode: Used by some graphics drivers to indicate what mode the30             driver prefers; if empty, the renderer may return either31             mode. Note that the mode is always a string, to simplify32             C-level implementations.33 34             .. versionadded:: 1.1.535 36:return: An internal PIL storage memory instance as defined by the37         :py:mod:`PIL.Image.core` interface module.38)r2r
�_decompression_bomb_checkr6�getsize�getmask)rFr0rA�args�kwargss     r$rc�ImageFont.getmask�s>��(	�T�"�
�'�'��	�	�(9�(9�$�(?�@��y�y� � ��,�,r#c�\�[U5 URRU5upESSXE4$)z�39Returns bounding box (in pixels) of given text.40 41.. versionadded:: 9.2.042 43:param text: Text to render.44 45:return: ``(left, top, right, bottom)`` bounding box46r�r2r6rb�rFr0rdre�width�heights      r$�getbbox�ImageFont.getbbox�s/��	�T�"��	�	�)�)�$�/�
���!�U�"�"r#c�V�[U5 URRU5upEU$)z�47Returns length (in pixels) of given text.48This is the amount by which following text should be offset.49 50.. versionadded:: 9.2.051rhris      r$�	getlength�ImageFont.getlength�s'��	�T�"��	�	�)�)�$�/�
���r#)rDr6rUN)rG�str�return�None)rD�	IO[bytes]rI�Image.Imagerrrs)rIrurY�bytesrrrs���52r0�str | bytesrArqrdrrerrr�Image.core.ImagingCore)r0�str | bytes | bytearrayrdrrerrrztuple[int, int, int, int])r0r|rdrrerrr�int)
rrrr �__doc__r!rMrErWrcrlror"rr#r$r4r4^s����53���8 �64�.0�-��-�'*�-�8;�-�GJ�-�	�-�0#�+�#�47�#�CF�#�	"�#� �+��47��CF��	�r#r4c���\rSrSr%SrS\S'S\S'SSSjjrSS	jrSS54jrSSjr	SSjr55SSS
jjrSS SjjrS!S"Sjjr
S!S#SjjrS$S%SjjrS&SjrS'SjrS(SjrS)SjrSrg)*�FreeTypeFont��z3FreeType font wrapper (requires _imagingft service)rr6rv�56font_bytesNc�^^^^^�[[[5(a[ReTS::aST3n[	U5eUTlTTlTTlTTlT[R[R4;a6[Rm[R(a[RmOOT[R:Xa;[R(d&[R"S5 [RmTTlS	UUUUU4Sjjn[!U5(a�["R$"U5n[&R(S:Xa9[U[*5(aUOUR-5nUR/S5 [R4"UTTTTS9TlgU"[9[:[*U55 g![0a2 [3US5n	U"U	5 SSS5 O!,(df   O=fgf=f)57Nrz&font size must be greater than 0, not zSRaqm layout was requested, but Raqm is not available. Falling back to basic layout.c�>�UR5Tl[R"STTTTRT5Tlg)Nrx)rRr�r*�getfontr6)�f�encoding�index�
layout_enginerF�sizes �����r$�load_from_bytes�.FreeTypeFont.__init__.<locals>.load_from_bytess1����f�f�h�D�O�����D�%��4�?�?�M��D�Ir#�win32�asciir8�r�)r�rtrrrs)�58isinstancer*r�exr/r>r�r�r�r&r(r)�	HAVE_RAQM�warnings�warnr�rr=�fspath�sys�platformrv�encode�decode�UnicodeDecodeErrorr<r�r6rr)59rFr6r�r�r�r�r1r��font_bytes_pathr�s60` ````    r$�__init__�FreeTypeFont.__init__�s{����d�M�*�*��'�'�M��1�9�:�4�&�A�C��S�/�!���	���	���61� ��
�����v�{�{� ;�;�"�L�L�M��~�~� &���
��
�f�k�k�
)�$�.�.��M�M�0�
�#�L�L�M�*���	�	��4�=�=��9�9�T�?�D��|�|�w�&�*4�T�5�*A�*A�$�t�{�{�}���#�*�*�7�3�����d�E�8�=��D�I�
�D��E��D�1�2��*���d�D�)�Q�'��*�*�)�)����s*�?G�H�"	G4�+	H�462H	�>H�Hc�t�URURURURUR/$r\)r>r�r�r�r��rFs r$�__getstate__�FreeTypeFont.__getstate__s)���	�	�4�9�9�d�j�j�$�-�-��AS�AS�T�Tr#c�>�Uup#pEn[RXX4XV5 gr\)r�r�)rF�stater>r�r�r�r�s       r$�__setstate__�FreeTypeFont.__setstate__s ��5:�2��E�]����d�$�x�Or#c�Z�URRURR4$)zY63:return: A tuple of the font family (e.g. Helvetica) and the font style64    (e.g. Bold)65)r6�family�styler�s r$�getname�FreeTypeFont.getname"s!��66�y�y��������0�0r#c�Z�URRURR4$)z�67:return: A tuple of the font ascent (the distance from the baseline to68    the highest outline point) and descent (the distance from the69    baseline to the lowest outline point, a negative value)70)r6�ascent�descentr�s r$�71getmetrics�FreeTypeFont.getmetrics)s#���y�y������!2�!2�2�2r#c�X�[U5 URRXX4U5S-$)a�72Returns length (in pixels with 1/64 precision) of given text when rendered73in font with provided direction, features, and language.74 75This is the amount by which following text should be offset.76Text bounding box may extend past the length in some fonts,77e.g. when using italics or accents.78 79The result is returned as a float; it is a whole number if using basic layout.80 81Note that the sum of two lengths may not equal the length of a concatenated82string due to kerning. If you need to adjust for kerning, include the following83character and subtract its length.84 85For example, instead of ::86 87  hello = font.getlength("Hello")88  world = font.getlength("World")89  hello_world = hello + world  # not adjusted for kerning90  assert hello_world == font.getlength("HelloWorld")  # may fail91 92use ::93 94  hello = font.getlength("HelloW") - font.getlength("W")  # adjusted for kerning95  world = font.getlength("World")96  hello_world = hello + world  # adjusted for kerning97  assert hello_world == font.getlength("HelloWorld")  # True98 99or disable kerning with (requires libraqm) ::100 101  hello = draw.textlength("Hello", font, features=["-kern"])102  world = draw.textlength("World", font, features=["-kern"])103  hello_world = hello + world  # kerning is disabled, no need to adjust104  assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"])105 106.. versionadded:: 8.0.0107 108:param text: Text to measure.109:param mode: Used by some graphics drivers to indicate what mode the110             driver prefers; if empty, the renderer may return either111             mode. Note that the mode is always a string, to simplify112             C-level implementations.113 114:param direction: Direction of the text. It can be 'rtl' (right to115                  left), 'ltr' (left to right) or 'ttb' (top to bottom).116                  Requires libraqm.117 118:param features: A list of OpenType font features to be used during text119                 layout. This is usually used to turn on optional120                 font features that are not enabled by default,121                 for example 'dlig' or 'ss01', but can be also122                 used to turn off default font features for123                 example '-liga' to disable ligatures or '-kern'124                 to disable kerning.  To get all supported125                 features, see126                 https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist127                 Requires libraqm.128 129:param language: Language of the text. Different languages may use130                 different glyph shapes or ligatures. This parameter tells131                 the font which language the text is in, and to apply the132                 correct substitutions as appropriate, if available.133                 It should be a `BCP 47 language code134                 <https://www.w3.org/International/articles/language-tags/>`_135                 Requires libraqm.136 137:return: Either width for horizontal text, or height for vertical text.138�@)r2r6ro)rFr0rA�	direction�features�languages      r$ro�FreeTypeFont.getlength1s,��X	�T�"��y�y�"�"�4�y�H�M�PR�R�Rr#c��[U5 URRXX4XW5up�U	SU-139U	SU-140p�USSU--USSU--p�X�X�-X�-4$)a�141Returns bounding box (in pixels) of given text relative to given anchor142when rendered in font with provided direction, features, and language.143 144Use :py:meth:`getlength()` to get the offset of following text with1451/64 pixel precision. The bounding box includes extra margins for146some fonts, e.g. italics or accents.147 148.. versionadded:: 8.0.0149 150:param text: Text to render.151:param mode: Used by some graphics drivers to indicate what mode the152             driver prefers; if empty, the renderer may return either153             mode. Note that the mode is always a string, to simplify154             C-level implementations.155 156:param direction: Direction of the text. It can be 'rtl' (right to157                  left), 'ltr' (left to right) or 'ttb' (top to bottom).158                  Requires libraqm.159 160:param features: A list of OpenType font features to be used during text161                 layout. This is usually used to turn on optional162                 font features that are not enabled by default,163                 for example 'dlig' or 'ss01', but can be also164                 used to turn off default font features for165                 example '-liga' to disable ligatures or '-kern'166                 to disable kerning.  To get all supported167                 features, see168                 https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist169                 Requires libraqm.170 171:param language: Language of the text. Different languages may use172                 different glyph shapes or ligatures. This parameter tells173                 the font which language the text is in, and to apply the174                 correct substitutions as appropriate, if available.175                 It should be a `BCP 47 language code176                 <https://www.w3.org/International/articles/language-tags/>`_177                 Requires libraqm.178 179:param stroke_width: The width of the text stroke.180 181:param anchor:  The text anchor alignment. Determines the relative location of182                the anchor to the text. The default alignment is top left,183                specifically ``la`` for horizontal text and ``lt`` for184                vertical text. See :ref:`text-anchors` for details.185 186:return: ``(left, top, right, bottom)`` bounding box187rr�rh)rFr0rAr�r�r��stroke_width�anchorr��offset�left�toprjrks              r$rl�FreeTypeFont.getbbox�sy��t	�T�"��y�y�(�(��	�X�188����1�I��,�f�Q�i�,�.F�c��Q��!�l�"2�2�D��G�a�,�>N�4N�v��$�,���4�4r#c189�6�URUUUUUUUUU	S9	S$)a�190191Create a bitmap for the text.192 193If the font uses antialiasing, the bitmap should have mode ``L`` and use a194maximum value of 255. If the font has embedded color data, the bitmap195should have mode ``RGBA``. Otherwise, it should have mode ``1``.196 197:param text: Text to render.198:param mode: Used by some graphics drivers to indicate what mode the199             driver prefers; if empty, the renderer may return either200             mode. Note that the mode is always a string, to simplify201             C-level implementations.202 203             .. versionadded:: 1.1.5204 205:param direction: Direction of the text. It can be 'rtl' (right to206                  left), 'ltr' (left to right) or 'ttb' (top to bottom).207                  Requires libraqm.208 209                  .. versionadded:: 4.2.0210 211:param features: A list of OpenType font features to be used during text212                 layout. This is usually used to turn on optional213                 font features that are not enabled by default,214                 for example 'dlig' or 'ss01', but can be also215                 used to turn off default font features for216                 example '-liga' to disable ligatures or '-kern'217                 to disable kerning.  To get all supported218                 features, see219                 https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist220                 Requires libraqm.221 222                 .. versionadded:: 4.2.0223 224:param language: Language of the text. Different languages may use225                 different glyph shapes or ligatures. This parameter tells226                 the font which language the text is in, and to apply the227                 correct substitutions as appropriate, if available.228                 It should be a `BCP 47 language code229                 <https://www.w3.org/International/articles/language-tags/>`_230                 Requires libraqm.231 232                 .. versionadded:: 6.0.0233 234:param stroke_width: The width of the text stroke.235 236                 .. versionadded:: 6.2.0237 238:param anchor:  The text anchor alignment. Determines the relative location of239                the anchor to the text. The default alignment is top left,240                specifically ``la`` for horizontal text and ``lt`` for241                vertical text. See :ref:`text-anchors` for details.242 243                 .. versionadded:: 8.0.0244 245:param ink: Foreground ink for rendering in RGBA mode.246 247                 .. versionadded:: 8.0.0248 249:param start: Tuple of horizontal and vertical offset, as text may render250              differently when starting at fractional coordinates.251 252                 .. versionadded:: 9.4.0253 254:return: An internal PIL storage memory instance as defined by the255         :py:mod:`PIL.Image.core` interface module.256)r�r�r�r�r��ink�startr)�getmask2)257rFr0rAr�r�r�r�r�r�r�s258          r$rc�FreeTypeFont.getmask�s@��^�}�}������%�����259260��261
�262	
r#c263
�^�[U5 U	cSn	SU4SjjnURRUUTUUUUURSS5UUU	5$)a&264Create a bitmap for the text.265 266If the font uses antialiasing, the bitmap should have mode ``L`` and use a267maximum value of 255. If the font has embedded color data, the bitmap268should have mode ``RGBA``. Otherwise, it should have mode ``1``.269 270:param text: Text to render.271:param mode: Used by some graphics drivers to indicate what mode the272             driver prefers; if empty, the renderer may return either273             mode. Note that the mode is always a string, to simplify274             C-level implementations.275 276             .. versionadded:: 1.1.5277 278:param direction: Direction of the text. It can be 'rtl' (right to279                  left), 'ltr' (left to right) or 'ttb' (top to bottom).280                  Requires libraqm.281 282                  .. versionadded:: 4.2.0283 284:param features: A list of OpenType font features to be used during text285                 layout. This is usually used to turn on optional286                 font features that are not enabled by default,287                 for example 'dlig' or 'ss01', but can be also288                 used to turn off default font features for289                 example '-liga' to disable ligatures or '-kern'290                 to disable kerning.  To get all supported291                 features, see292                 https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist293                 Requires libraqm.294 295                 .. versionadded:: 4.2.0296 297:param language: Language of the text. Different languages may use298                 different glyph shapes or ligatures. This parameter tells299                 the font which language the text is in, and to apply the300                 correct substitutions as appropriate, if available.301                 It should be a `BCP 47 language code302                 <https://www.w3.org/International/articles/language-tags/>`_303                 Requires libraqm.304 305                 .. versionadded:: 6.0.0306 307:param stroke_width: The width of the text stroke.308 309                 .. versionadded:: 6.2.0310 311:param anchor:  The text anchor alignment. Determines the relative location of312                the anchor to the text. The default alignment is top left,313                specifically ``la`` for horizontal text and ``lt`` for314                vertical text. See :ref:`text-anchors` for details.315 316                 .. versionadded:: 8.0.0317 318:param ink: Foreground ink for rendering in RGBA mode.319 320                 .. versionadded:: 8.0.0321 322:param start: Tuple of horizontal and vertical offset, as text may render323              differently when starting at fractional coordinates.324 325                 .. versionadded:: 9.4.0326 327:return: A tuple of an internal PIL storage memory instance as defined by the328         :py:mod:`PIL.Image.core` interface module, and the text offset, the329         gap between the starting coordinate and the first marking330)rrc�>�X4n[R"U5 [RRTS:XaSU5$SU5$)N�RGBAr;)r
rar*�fill)rjrkr�rAs   �r$r��#FreeTypeFont.getmask2.<locals>.fillss=����?�D��+�+�D�1��:�:�?�?�T�V�^�6�d�K�K��d�K�Kr#�
stroke_filledF)rjr}rkr}rrr{)r2r6�render�get)
rFr0rAr�r�r�r�r�r�r�rdrer�s
  `          r$r��FreeTypeFont.getmask2sc���d	�T�"��=��E�	L�331�y�y�����������J�J���.����332�	333r#c��Uc[UR5n[	UUcUR334OUUcUROUUcUROUU=(d URS9$![a URnNef=f)z�335Create a copy of this FreeTypeFont object,336using any specified arguments to override the settings.337 338Parameters are identical to the parameters used to initialize this339object.340 341:return: A FreeTypeFont object.342)r6r�r�r�r�)	rr��AttributeErrorr>r�r�r�r�r�)rFr6r�r�r�r�s      r$�font_variant�FreeTypeFont.font_variant�s~��"�<�
!��t���/����"�l����� %�
�$�*�*�5�&.�&6�T�]�]�H�'�=�4�+=�+=�343�	344��"�
!��y�y��
!�s�A'�'B�?Bc��/nURR5H-nURSS5nX!;dMURU5 M/ U$)zt345:returns: A list of the named styles in a variation font.346:exception OSError: If the font is not a variation font.347�r#)r6�getvarnames�replacerV)rF�namesrs   r$�get_variation_names� FreeTypeFont.get_variation_names�sI��348���I�I�)�)�+�D��<�<���-�D�� ����T�"�,��r#c���UR5n[U[5(dUR5nUR	U5S-nU[USS5:XagX0lURRU5 g)z^349:param name: The name of the style.350:exception OSError: If the font is not a variation font.351r�_last_variation_indexN)	r�r�rvr�r��getattrr�r6�352setvarname)rFrr�r�s    r$�set_variation_by_name�"FreeTypeFont.set_variation_by_name�sl��353�(�(�*���$��&�&��;�;�=�D����D�!�A�%���G�D�"9�4�@�@�
�%*�"��	�	���U�#r#c��URR5nUH'nUS(dMUSRSS5US'M) U$)zl354:returns: A list of the axes in a variation font.355:exception OSError: If the font is not a variation font.356rr�r#)r6�357getvaraxesr�)rF�axes�axiss   r$�get_variation_axes�FreeTypeFont.get_variation_axes�sJ��358�y�y�#�#�%���D��F�|�|�#�F�|�3�3�G�S�A��V����r#c�:�URRU5 g)zg359:param axes: A list of values for each axis.360:exception OSError: If the font is not a variation font.361N)r6�362setvaraxes)rFr�s  r$�set_variation_by_axes�"FreeTypeFont.set_variation_by_axes�s��363	
�	�	���T�"r#)r�r�r6r�r�r�r>r���364rrxN)r6�StrOrBytesPath | BinaryIOr��floatr�r}r�rqr��
Layout | Nonerrrs)rr�	list[Any])r�r�rrrs)rrztuple[str | None, str | None])rrztuple[int, int])rxNNN)r0rzrArqr��365str | Noner��list[str] | Noner�r�rrr�)rxNNNrN)r0rzrArqr�r�r�r�r�r�r�r�r�r�rrz!tuple[float, float, float, float])rxNNNrNrN)r0rzrArqr�r�r�r�r�r�r�r�r�r�r�r}r��tuple[float, float] | Nonerrr{)r0rzrArqr�r�r�r�r�r�r�r�r�r�r�r}r�r�rdrrerrrz.tuple[Image.core.ImagingCore, tuple[int, int]])NNNNN)r6z StrOrBytesPath | BinaryIO | Noner��float | Noner�rr�r�r�r�rrr�)rrzlist[bytes])rrzrrrs)rrz366list[Axis])r�zlist[float]rrrs)rrrr r~r!r�r�r�r�r�rorlrcr�r�r�r�r�r�r"rr#r$r�r��s���=�367�J���368���'+�
93�'�93��93��	93�369�93�%�
93�370�93�vU�P�1�3�� $�%)�#�
MS��MS��MS��	MS�371#�MS��
MS�372�MS�d� $�%)�#��!�@5��@5��@5��	@5�373#�@5��
@5��@5��@5�374+�@5�J� $�%)�#��!��,0�Y
��Y
��Y
��	Y
�375#�Y
��
Y
��Y
��Y
��Y
�*�Y
�376 �Y
�|� $�%)�#��!��,0�g377��g378��g379��	g380�381#�g382��
g383��g384��g385��g386�*�g387��g388��g389�3908�g391�V26�!� �#�'+�
392�.�393��394��	395�396�397�%�
398�399�400�<401�$�&	�#r#r�c�t�\rSrSrSrS	S402SjjrSSSjjrS
SjrSSjrSr	g)�TransposedFonti�z,Wrapper for writing rotated or mirrored textNc��XlX lg)aV403Wrapper that creates a transposed font from any existing font404object.405 406:param font: A font object.407:param orientation: An optional orientation.  If given, this should408    be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM,409    Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or410    Image.Transpose.ROTATE_270.411N�r6�orientation)rFr6r�s   r$r��TransposedFont.__init__�s���	�&�r#c��URR"X/UQ70UD6nURbURUR5$U$r\)r6rcr��	transpose)rFr0rArdrer^s      r$rc�TransposedFont.getmask�sH���Y�Y�
�
�t�
;�D�
;�F�
;�����'��<�<�� 0� 0�1�1��	r#c���URR"U/UQ70UD6upEpgXd-412nXu-413n	UR[RR414[RR4;aSSX�4$SSX�4$)Nr)r6rlr�r
�	Transpose�	ROTATE_90�415ROTATE_270)416rFr0rdrer�r��right�bottomrjrks417          r$rl�TransposedFont.getbbox�sv��418$(�9�9�#4�#4�T�#K�D�#K�F�#K� ��5������������� 9� 9�5�?�?�;U�;U�V�V��a��&�&��!�U�"�"r#c���UR[RR[RR4;a
Sn[U5eURR"U/UQ70UD6$)Nz>text length is undefined for text rotated by 90 or 270 degrees)r�r
r�r�r�r/r6ro)rFr0rdrer1s     r$ro�TransposedFont.getlength�sW�������� 9� 9�5�?�?�;U�;U�V�V�R�C��S�/�!��y�y�"�"�4�9�$�9�&�9�9r#r�r\)r6zImageFont | FreeTypeFontr�zImage.Transpose | Nonerwry)r0rzrdrrerrrztuple[int, int, float, float])r0rzrdrrerrrr�)419rrrr r~r�rcrlror"rr#r$r�r��s}��6�UY�'�,�'�;Q�'�".0����'*��8;��GJ��	��420#��421#�(+�422#�7:�423#�	&�424#�:r#r�c�<�[5nURU5 U$)aI425Load a font file. This function loads a font object from the given426bitmap font file, and returns the corresponding font object. For loading TrueType427or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`.428 429:param filename: Name of font file.430:return: A font object.431:exception OSError: If the file could not be read.432)r4rM)rGr�s  r$r]r]s��	��A��O�O�H���Hr#c433�^^^^�SUUUU4SjjnU"U5$![Ga� [U5(de[RR	U5n/n[434RS:XaW[RRS5nU(a/UR[RRUS55 GO435[436RS;a�[RRS5n	U	(d[RRS5n	U	/n437[RRS5nU(dS	nX�RS4385-
n439XzVs/sH#n[RRUS5PM% Os snfsn-
nO9[440RS:Xa%USS
[RRS5/-
n[RRU5Sn
SnUGHn[R"U5H�unnnUH�nU
(a4UU:Xa.U"[RRUU55s s s s$U
(aMG[RRU5SU:XdMo[RRUU5n[RRU5SS:XaU"U5s s s s$U
(aM�UbM�UnM� M� GM U(a441U"U5s$ef=f)ax442Load a TrueType or OpenType font from a file or file-like object,443and create a font object. This function loads a font object from the given444file or file-like object, and creates a font object for a font of the given445size. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load`446and :py:func:`~PIL.ImageFont.load_path`.447 448Pillow uses FreeType to open font files. On Windows, be aware that FreeType449will keep the file open as long as the FreeTypeFont object exists. Windows450limits the number of files that can be open in C at once to 512, so if many451fonts are opened simultaneously and that limit is approached, an452``OSError`` may be thrown, reporting that FreeType "cannot open resource".453A workaround would be to copy the file(s) into memory, and open that instead.454 455This function requires the _imagingft service.456 457:param font: A filename or file-like object containing a TrueType font.458             If the file is not found in this filename, the loader may also459             search in other directories, such as:460 461             * The :file:`fonts/` directory on Windows,462             * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/`463               and :file:`~/Library/Fonts/` on macOS.464             * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`,465               and :file:`/usr/share/fonts` on Linux; or those specified by466               the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables467               for user-installed and system-wide fonts, respectively.468 469:param size: The requested size, in pixels.470:param index: Which font face to load (default is first available face).471:param encoding: Which font encoding to use (default is Unicode). Possible472                 encodings include (see the FreeType documentation for more473                 information):474 475                 * "unic" (Unicode)476                 * "symb" (Microsoft Symbol)477                 * "ADOB" (Adobe Standard)478                 * "ADBE" (Adobe Expert)479                 * "ADBC" (Adobe Custom)480                 * "armn" (Apple Roman)481                 * "sjis" (Shift JIS)482                 * "gb  " (PRC)483                 * "big5"484                 * "wans" (Extended Wansung)485                 * "joha" (Johab)486                 * "lat1" (Latin-1)487 488                 This specifies the character set to use. It does not alter the489                 encoding of any text provided in subsequent operations.490:param layout_engine: Which layout engine to use, if available:491                 :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`.492                 If it is available, Raqm layout will be used by default.493                 Otherwise, basic layout will be used.494 495                 Raqm layout is recommended for all non-English text. If Raqm layout496                 is not required, basic layout will have better performance.497 498                 You can check support for Raqm layout using499                 :py:func:`PIL.features.check_feature` with ``feature="raqm"``.500 501                 .. versionadded:: 4.2.0502:return: A font object.503:exception OSError: If the file could not be read.504:exception ValueError: If the font size is not greater than zero.505c�">�[UTTTT5$r\)r�)r6r�r�r�r�s ����r$�freetype�truetype.<locals>.freetype\s����D�$��x��G�Gr#r��WINDIR�fonts)�linux�linux2�
XDG_DATA_HOMEz~/.local/share�
XDG_DATA_DIRSz/usr/local/share:/usr/share�:�darwinz/Library/Fontsz/System/Library/Fontsz~/Library/FontsrNrz.ttf)r6r�rrr�)rCrr=r>�basenamer�r��environr�rV�join�506expanduser�splitr?�walk)r6r�r�r�r�r�ttf_filename�dirs�windir�	data_home�xdg_dirs�	data_dirs�xdg_dirrK�%first_font_with_a_different_extension�	directory�walkroot�walkdir�
walkfilenames�walkfilename�fontpaths ````                r$�truetyper$sT���RH�H�5���~����3��t�}�}���w�w�'�'��-�����<�<�7�"��Z�Z�^�^�H�-�F�����B�G�G�L�L���9�:��
�\�\�0�
0��507�508����7�I���G�G�.�.�/?�@�	�!�{�H��509�510����7�I��9�	�����,�,�H��8�L�8��R�W�W�\�\�'�7�3�8��L�L�D�
�\�\�X�
%�� �'����"�"�#4�5��
�D��g�g���|�,�Q�/��04�-��I�46�G�G�I�4F�0��'�=�$1�L��|�|�;�'������X�|�(L�M�M�M� �S�R�W�W�%5�%5�l�%C�A�%F�,�%V�#%�7�7�<�<��,�#G���7�7�+�+�H�5�a�8�F�B�#+�H�#5�5�5�"�s�'L�'T�DL�A�%2�5G��1��A�B�B�
�g3�sB��EL	�*F�C511L	�L	�$L	�AL	�L	�"L	�'L	�L	c�l�[U[5(dURS5n[RH,n[[RRX55s $ SUS3n[RRU5(a	USUS3-
n[U5e![a M{f=f)z�512Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a513bitmap font along the Python path.514 515:param filename: Name of font file.516:return: A font object.517:exception OSError: If the file could not be read.518zutf-8zcannot find font file "z
" in sys.pathz, did you mean ImageFont.load("z") instead?)519r�rqr�r�r>r]r=rrC�exists)rGrr1s   r$�	load_pathr'�s����h��$�$��?�?�7�+���X�X�	�	�������Y�9�:�:��520
$�H�:�]�521;�C�	�w�w�~�~�h����0��522�+�F�F��523�#�,���
�	��	�s�'B%�%524B3�2B3c525���[5nUR[[R"S55[526R"[[R"S5555 U$)Ns(527UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA528AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA529AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA530AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA531AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA532AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA533AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA534AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA535AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA536AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA537AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA538AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA539BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL540AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA541AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB542ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A543BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB544//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA545AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH546AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA547ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv548AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/549/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5550AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA551AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG552AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA553BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA554AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA5552AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF556AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA////557+gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA558////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA559BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv560AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA561AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA562AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA563BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP//564//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA565AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF566AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB567mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn568AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA569AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7570AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA571Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA572AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA573AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA574AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA575AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA576AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA577AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA578AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA579AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA580AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA581AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA582AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA583AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB584//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA585AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ586AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC587DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ588AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/589+wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5590AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/591///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG592AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA593BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA594Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC595eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG596AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA////597+gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA598////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA599BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT600AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A601AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA602Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA603Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP//604//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA605AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ606AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA607LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5608AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA609AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5610AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA611AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG612AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA613EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK614AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA615pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG616AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA////617+QAGAAIAzgAKANUAEw==618s�619iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u620Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9621M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g622LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F623IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA624Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791625NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx626in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9627SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY628AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt629y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG630ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY631lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H632/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3633AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47634c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/635/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw636pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv637oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR638evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA639AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v//640Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR641w7IkEbzhVQAAAABJRU5ErkJggg==642)r4rEr�base64�	b64decoder
r<)r�s r$�load_default_imagefontr+�sf����A������ � �\"�\�\	�z	�643�644�7�6�+�+�-���	�x�r
�Hr#c���[[[5(dUb;[[	[645R"S55UcSOU[RS9$[5$)a;If FreeType support is available, load a version of Aileron Regular,646https://dotcolon.net/fonts/aileron, with a more limited character set.647 648Otherwise, load a "better than nothing" font.649 650.. versionadded:: 1.1.4651 652:param size: The font size of Aileron Regular.653 654    .. versionadded:: 10.1.0655 656:return: A font object.657s�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I733vArIACwAAJRUhESEVIRUhFSEVAi/+NQHB/pUBTf6zRkYCskbwRvAAAAABAGQAAAIlArIACQAAExUh734FSERIxEhFboBQ/69VgHBAmzwRv7KArJGAAAAAAEAL//yAo8CwAAfAAABMxEjNQcGIyImNTQ2MzIWH735wEjJyYjIgYVFBYzMjY1IwGP90wfPnWTprSSf48LAVYCIqJofHllVG+hAU3+s3hARsicn8uAagoKpq736N/gaN1XAAAAAEAZAAAAowCsgALAAABESMRIREjETMRIRECjFb+hFZWAXwCsv1OAS7+0gKy/sQBPAA737AAAABAGQAAAC6ArIAAwAAMyMRM7pWVgKyAAABADf/8gHoArIAEwAAAREUBw4BIyImLwEzFxYzMjc2738NREB6AIFcGpgbQIBVgIHfXQKAQKy/lYxIltob2EpKYyEFD0BpwAAAAABAGQAAAJ0ArIACwAACQEjA739wcVIxEzEQEzATsBJ3ntQlZWAVVlAWH+nwEnR+ACsv6RAW8AAQBkAAACLwKyAAUAACUVIREzEQIv/j740VWRkYCsv2UAAABAGQAAAMUArIAFAAAAREjETQ3BgcDIwMmJxYVESMRMxsBAxRWAiMxemx8NxsCVo7741MywKy/U4BY7ZLco7+nAFmoFxLtP6dArL9lwJpAAAAAAEAZAAAAoACsgANAAAhIwEWFREjETMBJjUR742MwKAhP67A1aEAUUDVAJeeov+pwKy/aJ5jAFZAAAAAgAv//ICuwLAAAkAEwAAEiAWFRQGICY1NBIyN743jU0JiIGFRTbATSsrP7MrNrYenrYegLAxaKhxsahov47nIeIm5uIhwACAGQAAAJHArIADgAYAAABHg744EVFAYHBisBESMRMzITNjQnJisBETMyAZRUX2VOHzuAVtY7GlxcGDWIiDUCrgtnVlVpCgT+5gKy/rU745V1BUF/vgAAAACAC//zAK9AsAAEgAcAAAlFhcHJiMiBwYjIiY1NDYgFhUUJRQWMjY1NCYiBgI9PUMx746UDcfKh8omqysATSs/dR62Hp62HpICTg7NgkHxqGixcWitbWHnJyHiJubAAIAZAAAAlgCsgAXACMAA747CUWFyMmJyYnJisBESMRMzIXHgEVFAYHFiUzMjc+ATU0JyYrAQIqDCJfGQwNWhAhglbiOx9QXEY1T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A853AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9AAAAAAAAAAAAAAAAAAAAAAA854AAAAAAAAAAAA/+gAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA855AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAA856AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAD857/4gAA//AAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAP/OAAAAAAAAAAAAAAAA858AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/qAAAAAP/0AAAACAAAAAAAAAAAAAAAAAAAAAAAA859AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/ZAAD/egAA/1kAAAAA/5D/rgAAAAAAAAAAAA860AAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA861AAAAAAAAAAAAAAAAAAAD/8AAA/7b/8P+wAAD/8P/E/98AAAAA/8P/+P/0//oAAAAAAAAAAAAA//gA862AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAA863AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//C/9MAAP/SAAD/9wAAAAAAAA864AAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAA/+kAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA865AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA866AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA867AAAAAAAAP/cAAAAAAAAAAAAAAAA/7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA868AAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAA869AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFAAEAAAAAQACwAAABcA870BgAAAAAAAAAIAA4AAAAAAAsAEgAAAAAAAAATABkAAwANAAAAAQAJAAAAAAAAAAAAAAAAAAAAGAAAA871AAABwAAAAAAAAAAAAAAFQAFAAAAAAAYABgAAAAUAAAACgAAAAwAAgAPABEAFgAAAAAAAAAAAAAAAA872AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAEAEQBdAAYAAAAAAAAAAAAAAAAAAAAAAAA873AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAABwAAAAAACAAAAAAAAAAAAAcAAAAHAAAAEwAJ874ABUADgAPAAAACwAQAAAAAAAAAAAAAAAAAAUAGAACAAIAAgAAAAIAGAAXAAAAGAAAABYAFgACABYAA875gAWAAAAEQADAAoAFAAMAA0ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAGAAEAHgAkAC876YAJwApACoALQAuAC8AMgAzADcAOAA5ADoAPAA9AEUASABOAE8AUgBTAFUAVwBZAFoAWwBcAF0AcwA877AAAAAAQAAAADa3tfFAAAAANAan9kAAAAA4QodoQ==878r�r�)879r�r*rr$rr)r*r&r(r+)r�s r$�load_defaultr-,sb���$�880�#�#�t�'7���F�$�$�]&�]�]
�|�,�B�D� �,�,�Aa881�a	882�D"�#�#r#)r0r|rrrs)rGrqrrr4r�)r6r�r�r�r�r}r�rqr�r�rrr�)rGrzrrr4)rrr4r\)r�r�rrzFreeTypeFont | ImageFont)0�883__future__rr)r=r�r��enumr�ior�typesr�typingrrr	r884rrxr
�_typingr�_utilrr�
TYPE_CHECKINGr�_imagingrr+rrr&r-r!r*�ImportErrorr��newr2r4r�r�r]r$r'r+r-rr#r$�<module>r9s&��8#�
�	�885�����5�5��#�)��
���%� ��9��
�W�
�886��!� �!�$�887�,t�t�xy#�y#�x+:�+:�\
�"���#'�A�888#�A�889�A��A��	A�890!�A��
A�H�.{
�|q$��Q�!����R� �D��!�s�C�C=�!C8�8C=
codekingpro/portable-devtools · Team Ai