� ��g����ddlmZddlmZddlmZddlmZddlm Z ddl m Z m Z Gd�dej ��Ze ejd ����d ���Zdd �Ze ejd ����d ���Ze ejd ����d���Ze ejd ����d���Ze de���e ejd ����d�����Ze de���e ejd ����d�����Ze de���e ejd ����d�����ZdS)�)� psCharStrings)�ttLib)�NullPen)�otRound)�deprecateFunction)� _add_method� _uniq_sortc��eZdZd�Zd�ZdS)�_ClosureGlyphsT2Decompilerc�V�tj�|||��||_dS�N)r�SimpleT2Decompiler�__init__� components)�selfr� localSubrs� globalSubrss �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fontTools/subset/cff.pyrz#_ClosureGlyphsT2Decompiler.__init__ s(���(�1�1�$� �K�P�P�P�$�����c� �|���}t|��dkr[ddlm}|dd�\}}}}||}||} |j�|��|j�| ��dSdS)N�r)�StandardEncoding�����)�popall�len�$fontTools.encodings.StandardEncodingrr�add) r�index�argsr�adx�ady�bchar�achar� baseGlyph� accentGlyphs r� op_endcharz%_ClosureGlyphsT2Decompiler.op_endchars����{�{�}�}�� �t�9�9��>�>� M� M� M� M� M� M�&*�"�#�#�Y� "�C��e�U�(��/�I�*�5�1�K� �O� � � � *� *� *� �O� � � � ,� ,� ,� ,� ,� �>rN)�__name__� __module__� __qualname__rr&�rrr r s2������%�%�%� -� -� -� -� -rr zCFF c��|j}t|��dksJ�||���d}|j}|j}|r�t ��}|D]P}||vr�||}t |jdg��} t|| |j ��} | � |���Q||jz}|j� |��|}|��dSdS)N�r�Subrs) �cffr�keys� CharStrings�glyphs�set�getattr�privater r�execute�update) r�sr.�font�glyphSet� decomposer�g�gl�subrs� decompilers r�closure_glyphsr?s��� �(�C� �s�8�8�q�=�=�=�=� �s�x�x�z�z�!�}� �D���H���I� � ��U�U� �� #� #�A��� � ���!��B��B�J���4�4�E�3�J��r�~�V�V�J� � � �r� "� "� "� "��a�h�� � ���� �#�#�#�� � � � � � � rFc��|j�|��\}}|s|r|�|rgndg��dSt|d��r|j�|j|j}n|j}|j}|j}t��} |� | ��|j |kr|j |z dg|_ dSdg|_ dS)N�endchar�FDArray) r0�getItemAndSelector� setProgram�hasattrrB�Private� defaultWidthX� nominalWidthXr�draw�width�program) r8� glyphName�isCFF2� ignoreWidth�c� fdSelectIndexr4�dfltWdX�nmnlWdX�pens r�_empty_charstringrT3s����'�:�:�9�E�E��A�}� �$��$� � � �6�2�R�R� �{�3�3�3�3�3� �4�� #� #� #�� �(@��l�=�1�9�G�G��l�G��'���'���i�i�� ���s� � � � �7�g� � ���7�*�I�6�A�I�I�I�"� �A�I�I�Irc��|j}|jdd�|_|jrC|js<|jdk}|���D]}||}t |d|����|���D]}||}d|_�dS)Nr,z.notdef)rMrT)r.� fontNames� notdef_glyph�notdef_outline�majorr/rT�Encoding)rr8�optionsr.rM�fontnames r�prune_pre_subsetr]Gs��� �(�C��M�"�1�"�%�C�M���>�G�$:�>���Q������ � � >� >�H��x�=�D� �d�I�f� =� =� =� =� =��H�H�J�J�+�+���8�}��*�� � � �4rc�t����|j}|���D�]�}||}|j}|j�|j���|jD]}|�vr�|�|��\}}� |jr��fd�t|j��D��} |j ��fd�| D���_ �` �` t|d��r!|j�d�_�fd�| D���_i} t| ��D] \} } |j| }||jvr| | |<�!| |_n*�fd�|j� ��D��|_�fd�|jD��|_t'|j��|_|jjr(|jdk} |jD]}t1||| d� ������dS) Nc�"��g|] \}}|�v� |�� Sr*r*)�.0�ir;r1s �r� <listcomp>z!subset_glyphs.<locals>.<listcomp>ls"���L�L�L�T�Q���V� � �q� � � rc�*��g|]}�j|��Sr*)�items)r`ra�csis �rrbz!subset_glyphs.<locals>.<listcomp>ns���7�7�7�!���1��7�7�7r�FDSelectc�*��g|]}�j|��Sr*)�gidArray)r`ra�sels �rrbz!subset_glyphs.<locals>.<listcomp>ss���A�A�A�A�� �Q��A�A�Arc�$��i|] \}}|�v� ||�� Sr*r*)r`r;�vr1s �r� <dictcomp>z!subset_glyphs.<locals>.<dictcomp>{s$���U�U�U�t�q�!��f���a����rc���g|]}|�v�|�� Sr*r*)r`r;r1s �rrbz!subset_glyphs.<locals>.<listcomp>|s���?�?�?�a�1��;�;��;�;�;rr,T)rMrN)r.r/r0r1�union�glyphs_emptied�charsetrC�charStringsAreIndexed� enumerate�charStringsIndexrd�file�offsetsrErf�formatrh� charStringsr� numGlyphsr[� retain_gidsrYrT)rr7r.r\r8�csr;rO�_�indices�newCharStrings� indicesIdx� charsetIdxrMrer1ris @@@r� subset_glyphsr�\s ����� �(�C��H�H�J�J�#L�#L���8�}�� � ������� 0�1�1���� ,� ,�A�������(�(��+�+�D�A�q�q� � #� V�L�L�L�L�Y�t�|�%<�%<�L�L�L�G��%�C�7�7�7�7�w�7�7�7�C�I���#�+��t�Z�(�(� B��m��!�� �A�A�A�A��A�A�A�� ��N�*3�G�*<�*<� 3� 3�&� �J��L��,�����&�&�(2�N�1�%��+�B�N�N�U�U�U�U�r�~�/C�/C�/E�/E�U�U�U�B�N�?�?�?�?�4�<�?�?�?�� ��T�\�*�*��� �9� � L��Y��]�F��%� L� L��!�$��&�d�K�K�K�K�K�� �4rc���� �|j}|���D]r}||}|j}t|d��rQ|j}t |j��� � fd�|jD��|_|j��fd�� D���_�` �` �s|j r|� ��|j s|� ��n|j s|���dS)Nrfc�:��g|]}��|����Sr*)r)r`�ssr|s �rrbz%prune_post_subset.<locals>.<listcomp>�s%���E�E�E�"�G�M�M�"�-�-�E�E�Erc� ��g|] }�|�� Sr*r*)r`ra�arrs �rrbz%prune_post_subset.<locals>.<listcomp>�s���1�1�1�A��Q��1�1�1rT)r.r/r0rErfr rhrBrdrtru�desubroutinize�hinting� remove_hints�remove_unused_subroutines) r�ttfFontr[r.r\r8rzrir�r|s @@r�prune_post_subsetr��s���� �(�C��H�H�J�J� &� &���8�}�� � �� �4�� $� $� &��-�C� ���.�.�G�E�E�E�E�� �E�E�E�C�L��,�C�1�1�1�1��1�1�1�C�I���#�+����� ������ �?�)� ������� � #�)� �&�&�(�(�(� �4rz)use 'CFFFontSet.desubroutinize()' instead)�categoryc�8�|j���dSr )r.r��rs rr�r��s��  �H�������rz'use 'CFFFontSet.remove_hints()' insteadc�8�|j���dSr )r.r�r�s rr�r��s��  �H�������rz2use 'CFFFontSet.remove_unused_subroutines' insteadc�8�|j���dSr )r.r�r�s rr�r��s��  �H�&�&�(�(�(�(�(rN)F)�fontTools.miscr� fontToolsr�fontTools.pens.basePenr�fontTools.misc.roundToolsr�fontTools.misc.loggingToolsr�fontTools.subset.utilrr rr � getTableClassr?rTr]r�r��DeprecationWarningr�r�r�r*rr�<module>r�s���(�(�(�(�(�(�������*�*�*�*�*�*�-�-�-�-�-�-�9�9�9�9�9�9�9�9�9�9�9�9�9�9�-�-�-�-�-��!A�-�-�-�& �� �U� �� (� (�)�)���*�)��,$�$�$�$�( �� �U� �� (� (�)�)���*�)��( �� �U� �� (� (�)�)�'�'�*�)�'�T �� �U� �� (� (�)�)���*�)��6��/�:L���� �� �U� �� (� (�)�)���*�)������-�8J���� �� �U� �� (� (�)�)���*�)������8�CU���� �� �U� �� (� (�)�)�)�)�*�)���)�)�)r
Memory