ó
    oñ:iÅŽ  ã                   ó(  • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJr  SSKJr  \R"                  " S5      r/ S	QrS
 rS r " S S\R,                  5      r " S S5      rSS jr\S:X  a  SSKr\R8                  " \" 5       5        gg)u6  MS VOLT ``.vtp`` to AFDKO ``.fea`` OpenType Layout converter.

Usage
-----

To convert a VTP project file:


.. code-block:: sh

    $ fonttools voltLib.voltToFea input.vtp output.fea

It is also possible convert font files with `TSIV` table (as saved from Volt),
in this case the glyph names used in the Volt project will be mapped to the
actual glyph names in the font files when written to the feature file:

.. code-block:: sh

    $ fonttools voltLib.voltToFea input.ttf output.fea

The ``--quiet`` option can be used to suppress warnings.

The ``--traceback`` can be used to get Python traceback in case of exceptions,
instead of suppressing the traceback.


Limitations
-----------

* Not all VOLT features are supported, the script will error if it it
  encounters something it does not understand. Please report an issue if this
  happens.
* AFDKO feature file syntax for mark positioning is awkward and does not allow
  setting the mark coverage. It also defines mark anchors globally, as a result
  some mark positioning lookups might cover many marks than what was in the VOLT
  file. This should not be an issue in practice, but if it is then the only way
  is to modify the VOLT file or the generated feature file manually to use unique
  mark anchors for each lookup.
* VOLT allows subtable breaks in any lookup type, but AFDKO feature file
  implementations vary in their support; currently AFDKOâ€™s makeOTF supports
  subtable breaks in pair positioning lookups only, while FontToolsâ€™ feaLib
  support it for most substitution lookups and only some positioning lookups.
é    N)ÚStringIO)ÚTopologicalSorter)Úast)ÚTTFontÚ
TTLibError)ÚParserzfontTools.voltLib.voltToFea)ÚGDEFÚGSUBÚGPOSc                 ó  • / n[        U [        [        45      (       a%  U  H  nUR                  [	        U5      5        M     U$ [        U S5      (       a&  UR                  [	        U R                  5      5        U$ UR                  U 5        U$ )NÚenum)Ú
isinstanceÚtupleÚlistÚextendÚ_flatten_groupÚhasattrr   Úappend)ÚgroupÚretÚitems      Ú^/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/voltLib/voltToFea.pyr   r   =   sx   € Ø
€CÜ�%œ%¤˜×'Ñ'ÛˆDØ�J‰J”~ dÓ+Ö,ñ ð €Jô	 
�˜×	Ñ	Ø�
‰
”> %§*¡*Ó-Ô.ð €Jð 	�
‰
�5ÔØ€Jó    c                 óÜ  • U  Vs0 s H  oR                   R                  5       U_M     nnU  VVs0 s Hq  nUR                   R                  5       [        U5       Vs/ s H>  n[        U[        R
                  5      (       d  M$  UR                  R                  5       PM@     sn_Ms     nnn[        U5      nUR                  5        Vs/ s H  obU   PM	     sn$ s  snf s  snf s  snnf s  snf ©N)	ÚnameÚlowerr   r   ÚVAstÚ	GroupNamer   r   Ústatic_order)Úgroupsr   Ú	group_mapÚxÚgraphÚsorterr   s          r   Úsort_groupsr&   L   sÛ   € Ù8>Ó?º¨u—‘×!Ñ!Ó# UÒ*¹€IÐ?ñ ôò ˆEð 	�
‰
×ÑÓä# EÔ*ó
â*�Ü˜!œTŸ^™^×,ó ˆA�G‰G�M‰MŽOÙ*ñ
ò 	
ñ
 ð 
ñ ô ˜uÓ%€FØ(.×(;Ñ(;Ô(=Ó>Ò(= �dŒOÑ(=Ñ>Ð>ùò @ùò
ùóùò ?s(   …$C°,C#Á#CÂCÂ!C#ÃC)ÃC#c                   ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚLookupéZ   c                 ó4   >• [         TU ]  XU5        / U l        g r   )ÚsuperÚ__init__Úchained)Úselfr   Úuse_extensionÚlocationÚ	__class__s       €r   r,   ÚLookup.__init__[   s   ø€ Ü‰Ñ˜¨hÔ7Øˆ�r   )r-   )FN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r,   Ú__static_attributes__Ú__classcell__)r1   s   @r   r(   r(   Z   s   ø† ÷õ r   r(   c                   óú   • \ rS rSr\R
                  " S5      r\R
                  " S5      rSS jrS r	S r
SS jrS	 rSS
 jrS rS rS rSS jrS rS rS rS rSS jrS rS rS rS rS rS rS rS rSrg) Ú	VoltToFeaé`   z[^A-Za-z_0-9.]z[^A-Za-z_0-9.\-]Nc                 óR  • [        U[        R                  5      (       a  US sU l        U l        OS UsU l        U l        X l        0 U l        S U l        0 U l        0 U l	        0 U l
        0 U l        [        5       U l        0 U l        0 U l        0 U l        0 U l        0 U l        0 U l        g r   )r   r   ÚVoltFileÚ_docÚ_file_or_pathÚ_fontÚ
_glyph_mapÚ_glyph_orderÚ_gdefÚ_glyphclassesÚ	_featuresÚ_lookupsÚsetÚ_marksÚ
_ligaturesÚ_markclassesÚ_anchorsÚ	_settingsÚ_lookup_namesÚ_class_names)r.   Úfile_or_pathÚfonts      r   r,   ÚVoltToFea.__init__d   sœ   € Ü�l¤D§M¡M×2Ñ2Ø,8¸$Ð)ˆDŒI�tÕ)à,0°,Ð)ˆDŒI�tÔ)ØŒ
àˆŒØ ˆÔàˆŒ
ØˆÔØˆŒØˆŒä“eˆŒØˆŒàˆÔØˆŒàˆŒàˆÔØˆÕr   c                 ó  • XR                   ;  ak  U R                  R                  SU5      nX R                   R                  5       ;   a$  US-  nX R                   R                  5       ;   a  M$  X R                   U'   U R                   U   $ ©NÚ_)rM   Ú_NOT_LOOKUP_NAME_REÚsubÚvalues©r.   r   Úress      r   Ú_lookupNameÚVoltToFea._lookupName~   sz   € Ø×)Ñ)Ó)Ø×*Ñ*×.Ñ.¨s°DÓ9ˆCØ×+Ñ+×2Ñ2Ó4Ó4Ø�s‘
�ð ×+Ñ+×2Ñ2Ó4Õ4à'*×Ñ˜tÑ$Ø×!Ñ! $Ñ'Ð'r   c                 ó  • XR                   ;  ak  U R                  R                  SU5      nX R                   R                  5       ;   a$  US-  nX R                   R                  5       ;   a  M$  X R                   U'   U R                   U   $ rS   )rN   Ú_NOT_CLASS_NAME_RErV   rW   rX   s      r   Ú
_classNameÚVoltToFea._className†   sz   € Ø×(Ñ(Ó(Ø×)Ñ)×-Ñ-¨c°4Ó8ˆCØ×*Ñ*×1Ñ1Ó3Ó3Ø�s‘
�ð ×*Ñ*×1Ñ1Ó3Õ3à&)×Ñ˜dÑ#Ø× Ñ  Ñ&Ð&r   c                 ó^  • UR                    H5  n[        U[        R                  5      (       d  M$  U R	                  U5        M7     UR                    Vs/ s H&  n[        U[        R
                  5      (       d  M$  UPM(     nn[        U5       H  nU R                  U5        M     UR                    Hü  n[        U[        R                  5      (       a  SU;   a  U R                  U5        M;  M=  [        U[        R                  5      (       a  U R                  XC5        Mo  [        U[        R                  [        R
                  45      (       a  M   [        U[        R                  5      (       a  U R                  U5        MÒ  [        U[        R                  5      (       a  Mó  [        U5      e   UR                    Hg  n[        U[        R                  5      (       d  M$  UR                   (       a  SU;  a  M=  UR"                  (       a  SU;  a  MV  U R%                  U5        Mi     g s  snf )Nr   r
   )Ú
statementsr   r   ÚGlyphDefinitionÚ_glyphDefinitionÚGroupDefinitionr&   Ú_groupDefinitionÚAnchorDefinitionÚ_anchorDefinitionÚSettingDefinitionÚ_settingDefinitionÚScriptDefinitionÚ_scriptDefinitionÚLookupDefinitionÚNotImplementedErrorÚposrV   Ú_lookupDefinition)r.   ÚdocÚtablesÚignore_unsupported_settingsÚ	statementÚsr!   r   s           r   Ú_collectStatementsÚVoltToFea._collectStatementsŽ   s�  € àŸœˆIÜ˜)¤T×%9Ñ%9×:Ó:Ø×%Ñ% iÖ0ñ (ð !Ÿ^š^ÓSš^˜¬z¸!¼T×=QÑ=Q×/R—!™^ˆÐSÜ  Ö(ˆEØ×!Ñ! %Ö(ñ )ð ŸœˆIÜ˜)¤T×%:Ñ%:×;Ñ;Ø˜VÓ#Ø×*Ñ*¨9Ö5ñ $ä˜I¤t×'=Ñ'=×>Ñ>Ø×'Ñ'¨	ÖOÜ˜I¬×(<Ñ(<¼d×>RÑ>RÐ'S×TÑTÙÜ˜I¤t×'<Ñ'<×=Ñ=Ø×&Ñ& yÖ1Ü 	¬4×+@Ñ+@×AÓAÜ)¨)Ó4Ð4ñ (ð ŸœˆIÜ˜)¤T×%:Ñ%:×;Ó;Ø—=—= V°6Ó%9ÙØ—=—= V°6Ó%9ÙØ×&Ñ& yÖ1ò (ùò' Ts   Á#H*Á;H*c           
      óÐ
  • [         R                  " 5       nUR                  nU R                  (       aN  UR	                  [         R
                  " S5      5        UR                  U R                  R                  5       5        U R                  (       a^  UR	                  [         R
                  " S5      5        UR                  S [        U R                  R                  5       5       5       5        U R                  (       ar  UR	                  [         R
                  " S5      5        U R                  R                  5        H/  nUR                  UR                  5        UR	                  U5        M1     U R                  R                  5       nU H³  nXV   nU Hv  nXx   n	U	 H9  n
Xš    Vs/ s H$  o»R                  5       U R                  ;   d  M"  UPM&     snXš'   M;     U	R                  5        VVs0 s H  u  pËU(       d  M  XË_M     snnXx'   Mx     UR                  5        VVs0 s H  u  pÍU(       d  M  XÍ_M     snnXV'   Mµ     UR                  5        VVs0 s H  u  pÎU(       d  M  XÎ_M     nnnU(       GaÏ  UR	                  [         R
                  " S5      5        UR                  5        GH•  u  pg[         R                   " U5      n[        US S9nUS:X  a)  [#        U5      S	:”  a  [$        R'                  S
5        US S	 nU GH'  nUS:w  a/  UR                  R	                  [         R(                  " U5      5        [        Xx   S S9nUS:X  a)  [#        U5      S	:”  a  [$        R'                  S5        US S	 nU H¬  n
US:w  aG  U
S:X  a  SOSnUR                  R	                  [         R*                  " U
R-                  S5      US95        Xx   U
    HQ  nU R                  UR                  5          n[         R.                  " U5      nUR                  R	                  U5        MS     M®     GM*     UR	                  U5        GM˜     U R0                  (       aô  SU;   aî  / nS H“  nUU R0                  ;   ao  SUR                  5       -   n[         R2                  " UU R0                  U   5      nUR	                  U5        UR	                  [         R4                  " U5      5        M‚  UR	                  S 5        M•     [         R6                  " S5      nUR                  R	                  [         R8                  " U6 5        UR	                  U5        U$ s  snf s  snnf s  snnf s  snnf )Nz# Glyph classesz
# Mark classesc              3   ó*   #   • U  H	  oS    v •  M     g7f©é   N© )Ú.0Úcs     r   Ú	<genexpr>Ú.VoltToFea._buildFeatureFile.<locals>.<genexpr>¼   s   é € ÐNÒ,M q ždÒ,Mùs   ‚z

# Lookupsz
# Featuresc                 ó   • U S:X  a  S$ S$ )NÚDFLTr   rz   r{   ©Úks    r   Ú<lambda>Ú-VoltToFea._buildFeatureFile.<locals>.<lambda>Ö   s   € ÀÀfÃ¸AÐ<SÐRSÐ<Sr   )ÚkeyÚaaltrz   zvFEA syntax does not allow script statements in 'aalt' feature, so only lookups from the first script will be included.c                 ó   • U S:X  a  S$ S$ )NÚdfltr   rz   r{   r‚   s    r   r„   r…   â   s   € ¨1°«; aÐ&=¸AÐ&=r   zzFEA syntax does not allow language statements in 'aalt' feature, so only lookups from the first language will be included.r‰   TFé   )Úinclude_defaultr	   ©ÚBASEÚMARKÚLIGATUREÚ	COMPONENTÚGDEF_)r   ÚFeatureFilera   rD   r   ÚCommentr   rW   rJ   ÚsortedÚitemsrF   r-   rE   Úcopyr   ÚFeatureBlockÚlenÚlogÚwarningÚScriptStatementÚLanguageStatementÚljustÚLookupReferenceStatementrC   ÚGlyphClassDefinitionÚGlyphClassNameÚ
TableBlockÚGlyphClassDefStatement)r.   rq   rp   ra   ÚlookupÚfeaturesÚfeature_tagÚscriptsÚ
script_tagÚlangsÚlanguage_tagÚlÚtrt   ÚfÚfeatureÚscript_tagsÚlanguage_tagsr‹   r   Ú	lookuprefÚclassesÚ	classnameÚ
glyphclassÚgdefs                            r   Ú_buildFeatureFileÚVoltToFea._buildFeatureFile²   s_  € Ü�oŠoÓˆØ—^‘^ˆ
à××Ø×ÑœcŸkškÐ*;Ó<Ô=Ø×Ñ˜d×0Ñ0×7Ñ7Ó9Ô:à××Ø×ÑœcŸkškÐ*<Ó=Ô>Ø×ÑÑN¬F°4×3DÑ3D×3JÑ3JÓ3LÔ,MÓNÔNà�=�=Ø×ÑœcŸkšk¨-Ó8Ô9ØŸ-™-×.Ñ.Ö0�Ø×!Ñ! &§.¡.Ô1Ø×!Ñ! &Ö)ñ 1ð
 —>‘>×&Ñ&Ó(ˆÛ#ˆKØÑ+ˆGÛ%�
ØÑ+�Û$)�Là#(Ò#6ó+Ú#6˜a¿'¹'»)ÀtÇ}Á}Ñ:TŸÑ#6ñ+�EÓ'ñ %*ð 9>¿¹¼Ô&Kº±°Ì£t q¢t¹Ò&K�Ó#ñ &ð 7>·m±m´oÔ$K²o©d¨aÌ£T Q¢T±oÒ$KˆHÓ!ñ $ð &.§^¡^Ô%5Ô;Ò%5™T˜Q¼“D�A’DÑ%5ˆÑ;çØ×ÑœcŸkšk¨,Ó7Ô8Ø(0¯©×(8Ñ$�Ü×*Ò*¨;Ó7�Ü$ WÑ2SÑT�Ø &Ó(¬S°Ó-=ÀÓ-AÜ—K‘KðRôð #.¨b¨q /�KÜ"-�JØ" fÓ,Ø×*Ñ*×1Ñ1´#×2EÒ2EÀjÓ2QÔRÜ$*ØÑ+Ù=ñ%�Mð # fÓ,´°]Ó1CÀaÓ1GÜŸ™ðXôð )6°b°qÐ(9˜Û(5˜Ø&¨&Ó0Ø6BÀfÓ6L©dÐRW˜OØ#×.Ñ.×5Ñ5Ü #× 5Ò 5Ø$0×$6Ñ$6°qÓ$9Ø4Cñ!"ôð %,Ñ$7¸Ô$E˜DØ%)§]¡]°4·:±:³<Ñ%@˜FÜ(+×(DÒ(DÀVÓ(L˜IØ#×.Ñ.×5Ñ5°iÖ@ó %Fô )6ñ #.ð4 ×!Ñ! '×*ñG )9ðJ �:�:˜& FÓ*ØˆGÛA�Ø˜4Ÿ:™:Ó%Ø '¨$¯*©*«,Ñ 6�IÜ!$×!9Ò!9¸)ÀTÇZÁZÐPTÑEUÓ!V�JØ×%Ñ% jÔ1Ø—N‘N¤3×#5Ò#5°jÓ#AÖBà—N‘N 4Ö(ñ Bô —>’> &Ó)ˆDØ�O‰O×"Ñ"¤3×#=Ò#=¸wÐ#GÔHØ×Ñ˜dÔ#àˆ
ùò{+ùó 'LùÛ$KùÛ;s0   Æ*!U
ÇU
Ç1U
ÈU
È%UÈ6UÉU"É*U"c                 óT  • U R                   c(  [        U R                  5      R                  5       U l         U R                   nUc  [        nU R
                  b  U R
                  R                  5       U l        U R                  X1U5        U R                  U5      nUR                  5       $ r   )r>   Ú
VoltParserr?   ÚparseÚTABLESr@   ÚgetGlyphOrderrB   ru   rµ   ÚasFea)r.   rq   rr   rp   Úfeas        r   ÚconvertÚVoltToFea.convert
  s†   € Ø�9‰9ÑÜ" 4×#5Ñ#5Ó6×<Ñ<Ó>ˆDŒIØ�i‰iˆà‰>ÜˆFØ�:‰:Ñ!Ø $§
¡
× 8Ñ 8Ó :ˆDÔà×Ñ Ð-HÔIØ×$Ñ$ VÓ,ˆØ�y‰y‹{Ðr   c                 óž   •  UR                   n[        R                  " U R                  R                  X"5      5      $ ! [         a    Un N=f = fr   )ÚglyphÚAttributeErrorr   Ú	GlyphNamerA   Úget)r.   rÁ   r   s      r   Ú
_glyphNameÚVoltToFea._glyphName  sF   € ð	Ø—;‘;ˆDô �}Š}˜TŸ_™_×0Ñ0°Ó<Ó=Ð=øô ó 	ØŠDð	ús   ‚= ½AÁAc                 ó¢   •  UR                   n[        R                  " U R                  UR                  5          5      $ ! [         a    Un N?f = fr   )r   rÂ   r   r    rD   r   )r.   r   r   s      r   Ú
_groupNameÚVoltToFea._groupName  sJ   € ð	Ø—;‘;ˆDô ×!Ò! $×"4Ñ"4°T·Z±Z³\Ñ"BÓCÐCøô ó 	ØŠDð	ús   ‚? ¿AÁAc                 óº   • UR                  5        Vs/ s H;  n[        U[        [        R                  45      (       a  U R                  U5      OUPM=     sn$ s  snf r   )ÚglyphSetr   Ústrr   rÃ   rÅ   )r.   r   r#   s      r   Ú	_glyphSetÚVoltToFea._glyphSet&  sR   € ð —]‘]”_ó
â$�ô $.¨a´#´t·~±~Ð1F×#GÑ#GˆT�_‰_˜QÔÈQÒNÙ$ñ
ð 	
ùò 
s   “AAc                 ó  • / nU GH|  n[        U[        R                  5      (       a"  UR                  U R	                  U5      5        ME  [        U[        R
                  5      (       a"  UR                  U R                  U5      5        M†  [        U[        R                  5      (       a\  U R                  UR                  SS9nU(       a  UR                  U5        MÙ  UR                  [        R                  " U5      5        GM  [        U[        R                  5      (       aT  U R                  U5      nU(       a  UR                  U5        GML  UR                  [        R                  " U5      5        GMt  [        U5      e   U$ ©NT©Úflatten)r   r   rÃ   r   rÅ   r   rÈ   ÚEnumÚ	_coverager   r   r   Ú
GlyphClassÚRangerÍ   rm   )r.   ÚcoveragerÒ   r•   r   s        r   rÔ   ÚVoltToFea._coverage,  sý   € ØˆÜˆDÜ˜$¤§¡×/Ñ/Ø—‘˜TŸ_™_¨TÓ2Ö3Ü˜D¤$§.¡.×1Ñ1Ø—‘˜TŸ_™_¨TÓ2Ö3Ü˜D¤$§)¡)×,Ñ,Ø—~‘~ d§i¡i¸�~Ð>�ÞØ—L‘L Ö&à—L‘L¤§¢°Ó!5×6Ü˜D¤$§*¡*×-Ñ-Ø—~‘~ dÓ+�ÞØ—L‘L ×&à—L‘L¤§¢°Ó!5×6ä)¨$Ó/Ð/ñ% ð& ˆr   c                 ó´   • / nU HO  nU R                  USS9n[        U5      S:”  a  [        R                  " U5      nOUS   nUR	                  U5        MQ     U$ )NTrÑ   rz   r   )rÔ   r˜   r   rÕ   r   )r.   ÚcontextÚoutr   r×   s        r   Ú_contextÚVoltToFea._contextC  sY   € ØˆÛˆDØ—~‘~ d°D�~Ð9ˆHÜ�8‹}˜qÓ ÜŸ>š>¨(Ó3‘à# A™;�Ø�J‰J�xÖ ñ ð ˆ
r   c                 ó&  • U R                  UR                  5      nU R                  UR                  R                  SS9n[        R
                  " U5      n[        R                  " X$5      nXPR                  UR                  R                  5       '   g rÐ   )	r^   r   rÔ   r   r   rÕ   rŸ   rD   r   )r.   r   r   Úglyphsr³   Úclassdefs         r   re   ÚVoltToFea._groupDefinitionN  sg   € Ø�‰˜uŸz™zÓ*ˆØ—‘ §
¡
§¡¸�Ð>ˆÜ—^’^ FÓ+ˆ
Ü×+Ò+¨DÓ=ˆØ19×Ñ˜5Ÿ:™:×+Ñ+Ó-Ò.r   c                 óž  •  U R                   UR                     U R                  UR                  '   UR
                  S;   a‘  UR
                  U R                  ;  a,  [        R                  " 5       U R                  UR
                  '   U R                  UR
                     R                  R                  U R                  UR                  5      5        UR
                  S:X  a&  U R                  R                  UR                  5        g UR
                  S:X  a$  UR                  U R                  UR                  '   g g ! [         a     GNf = f)NrŒ   rŽ   r�   )rB   ÚidrA   r   Ú	TypeErrorÚtyperC   r   rÕ   rß   r   rÅ   rH   ÚaddÚ
componentsrI   )r.   rÁ   s     r   rc   ÚVoltToFea._glyphDefinitionU  së   € ð	Ø*.×*;Ñ*;¸E¿H¹HÑ*EˆD�O‰O˜EŸJ™JÑ'ð �:‰:ÐBÓBØ�z‰z §¡Ó+Ü),¯ªÓ)9�—
‘
˜5Ÿ:™:Ñ&Ø�J‰J�u—z‘zÑ"×)Ñ)×0Ñ0°·±ÀÇÁÓ1LÔMà�:‰:˜ÓØ�K‰K�O‰O˜EŸJ™JÕ'Ø�Z‰Z˜:Ó%Ø*/×*:Ñ*:ˆD�O‰O˜EŸJ™JÒ'ð &øô ó 	Úð	ús   ‚0D> Ä>
EÅEc                 óö  • UR                   nUR                   HØ  nUR                   nUR                   H¹  nUR                   Vs0 s H  ofR	                  S5      S   S_M     nnUR                   nX€R
                  ;  a  0 U R
                  U'   X R
                  U   ;  a  0 U R
                  U   U'   X@R
                  U   U   ;  d   eUR                  5       U R
                  U   U   U'   M»     MÚ     g s  snf )NÚ\r   T)Útagr¨   r¤   ÚlookupsÚsplitrE   Úkeys)	r.   ÚscriptÚstagÚlangÚltagr­   rª   rì   Úftags	            r   rk   ÚVoltToFea._scriptDefinitione  sÙ   € Ø�z‰zˆØ—L”LˆDØ—8‘8ˆDØŸ=œ=�Ø;B¿?º?ÓKº?°aŸ7™7 4›=¨Ñ+¨TÒ1¹?�ÐKØ—{‘{�ØŸ~™~Ó-Ø+-�D—N‘N 4Ñ(ØŸ~™~¨dÑ3Ó3Ø13�D—N‘N 4Ñ(¨Ñ.Ø§>¡>°$Ñ#7¸Ñ#=Ó=Ð=Ð=Ø3:·<±<³>�—‘˜tÑ$ TÑ*¨4Ó0ó )ò !ùò Ls   ÁC6c                 óà   • UR                   R                  S5      (       a$  UR                  U R                  UR                   '   g U(       d#  [        R                  SUR                    35        g g )NÚ	COMPILER_zUnsupported setting ignored: )r   Ú
startswithÚvaluerL   r™   rš   )r.   ÚsettingÚignore_unsupporteds      r   ri   ÚVoltToFea._settingDefinitions  sM   € Ø�<‰<×"Ñ" ;×/Ñ/Ø+2¯=©=ˆD�N‰N˜7Ÿ<™<Ò(Þ#Ü�K‰KÐ7¸¿¹°~ÐFÕGð $r   c           	      ó  • Uu  p#pEpgU=(       a    UR                  5       =(       d    S nU=(       a    UR                  5       =(       d    S n	U=(       a    UR                  5       =(       d    S n
[        R                  " UUUU	U
US9$ )N)Ú
xPlacementÚ
yPlacementÚxAdvanceÚ
xPlaDeviceÚ
yPlaDeviceÚ
xAdvDevice)r•   r   ÚValueRecord)r.   Ú
adjustmentÚadvÚdxÚdyÚadv_adjust_byÚdx_adjust_byÚdy_adjust_byÚ
adv_deviceÚ	dx_deviceÚ	dy_devices              r   Ú_adjustmentÚVoltToFea._adjustmenty  sy   € ØAKÑ>ˆ� Là"×< }×':Ñ':Ó'<×DÀˆ
Ø ×9 \×%7Ñ%7Ó%9×A¸Tˆ	Ø ×9 \×%7Ñ%7Ó%9×A¸Tˆ	ä�ŠØØØØ Ø Ø!ñ
ð 	
r   c                 ó  • Uu  p#pEpgU(       a   eU=(       a    UR                  5       =(       d    S nU=(       a    UR                  5       =(       d    S n	[        R                  " U=(       d    SU=(       d    SU=(       d    S U	=(       d    S S9$ )Nr   )ÚxDeviceTableÚyDeviceTable)r•   r   ÚAnchor)
r.   r  r  r  r  r  r	  r
  r  r  s
             r   Ú_anchorÚVoltToFea._anchor‰  sv   € ØAKÑ>ˆ� Læ Ð Ð Ø ×9 \×%7Ñ%7Ó%9×A¸Tˆ	Ø ×9 \×%7Ñ%7Ó%9×A¸Tˆ	ä�zŠzØ�G�!Ø�G�!Ø"×* dØ"×* dñ	
ð 	
r   c                 óª  • UR                   nUR                  nU R                  UR                  5      nX0R                  ;  a  0 U R                  U'   UR                  S5      (       a  US S USS  R                  5       -   nOUR                  5       nX R                  U   ;  a  0 U R                  U   U'   X@R                  U   U   UR                  '   g )NÚMARK_é   )r   Ú
glyph_namer  rn   rK   r÷   r   Ú	component)r.   Ú	anchordefÚ
anchornameÚ	glyphnameÚanchors        r   rg   ÚVoltToFea._anchorDefinition—  s¼   € Ø—^‘^ˆ
Ø×(Ñ(ˆ	Ø—‘˜iŸm™mÓ,ˆàŸM™MÓ)Ø')ˆD�M‰M˜)Ñ$Ø× Ñ  ×)Ñ)Ø# B Q˜¨*°Q°R¨.×*>Ñ*>Ó*@Ñ@‰Jà#×)Ñ)Ó+ˆJØŸ]™]¨9Ñ5Ó5Ø35ˆD�M‰M˜)Ñ$ ZÑ0ØDJ�‰�iÑ  Ñ,¨Y×-@Ñ-@ÒAr   c                 ó:  ^ • UR                   nUR                  n[        U[        R                  5      (       Ga  UR
                  R                  5        Hð  u  u  pVu  pxUR                  US-
     n	UR                  US-
     n
SnXš-    H&  n[        U[        R                  5      (       a  M$  SnM(     T R                  U	5      nT R                  U
5      nT R                  U5      nT R                  U5      n[        U5      S:X  d   e[        U5      S:X  d   eUR                  [        R                  " US   XþS   UUS95        Mò     g [        U[        R                   5      (       ax  UR"                   Hg  u  nnT R                  U5      nT R                  U5      n[        U5      S:X  d   eUR                  [        R$                  " US   U4// / S5      5        Mi     g [        U[        R&                  5      (       Ga÷  0 n[)        5       nUR*                   GHs  u  nnT R-                  U SUR.                   35      n[        R0                  " U5      nUR3                  5       n[)        5       nU H"  nUR5                  UR7                  5       5        M$     UR9                  U5      (       d  UR;                  U5        U(       d  M¯  UR5                  U5        U HU  nT R=                  U5      nT R>                  U   SU 3   S   n[        R@                  " UUU5      n U T RB                  UU4'   MW     URD                   HH  n!U!R7                  5        H1  n"U"U;  a  / UU"'   UU4UU"   ;  d  M  UU"   R                  UU45        M3     MJ     GMv     [G        U 4S jU 5       5      n#[G        U 4S	 jU 5       5      n$U GH5  n"Sn%U#(       a  T RH                  U"   n%[K        U%5       V&s/ s H  n&/ PM     nn&UU"    Hx  u  nn[        R0                  " U5      n[K        SU%S-   5       HI  n'U'T R>                  U"   U   ;   d  M  T R>                  U"   U   U'   nUU'S-
     R                  UU45        MK     Mz     T R=                  U"5      n!U$(       a  [        RL                  " U!US   5      nO9U#(       a  [        RN                  " U!U5      nO[        RP                  " U!US   5      nUR                  U5        GM8     g [        U[        RR                  5      (       Gav  / n(URT                   H4  nU H+  n!U!R7                  5        H  n"U(R                  U"5        M     M-     M6     / n)URV                   H4  nU H+  n!U!R7                  5        H  n"U)R                  U"5        M     M-     M6     U( H�  n"T R=                  U"5      nT R>                  U"   S
   S   n*S n+U"U);   a5  T R>                  U"   S   S   n+U)RY                  U)R[                  U"5      5        UR                  [        R\                  " UU*U+5      5        M�     U) HP  n"T R=                  U"5      nT R>                  U"   S   S   n+UR                  [        R\                  " US U+5      5        MR     g [_        U5      es  sn&f )Nrz   FTr   )Ú
enumeratedÚ.r  c              3   ó@   >#   • U  H  oTR                   ;   v •  M     g 7fr   )rI   ©r|   Únr.   s     €r   r~   Ú(VoltToFea._gposLookup.<locals>.<genexpr>ô  s   øé € ÐDºG°q 4§?¡?Ö2ºGùó   ƒc              3   ó@   >#   • U  H  oTR                   ;   v •  M     g 7fr   )rH   r$  s     €r   r~   r&  õ  s   øé € Ð<²G¨q˜tŸ{™{Ö*²Gùr'  ÚentryÚexit)0ra   rn   r   r   ÚPositionAdjustPairDefinitionÚadjust_pairr•   Úcoverages_1Úcoverages_2r   rÔ   r  r˜   r   r   ÚPairPosStatementÚPositionAdjustSingleDefinitionÚadjust_singleÚSinglePosStatementÚPositionAttachDefinitionrG   Úcoverage_tor^   r   Ú	MarkClassr   ÚupdaterË   Ú
isdisjointÚdifference_updaterÅ   rK   ÚMarkClassDefinitionrJ   r×   ÚallrI   ÚrangeÚMarkMarkPosStatementÚMarkLigPosStatementÚMarkBasePosStatementÚPositionAttachCursiveDefinitionÚcoverages_enterÚcoverages_exitÚpopÚindexÚCursivePosStatementrm   ),r.   r£   Ú	fealookupra   rn   Úidx1Úidx2Úpos1Úpos2Ú
coverage_1Ú
coverage_2r!  r   Úglyphs1Úglyphs2Úrecord1Úrecord2ÚaÚbrß   ÚrecordÚanchorsÚallmarksr×   r  r²   Ú	markclassÚmarksÚmarkr  rÁ   r  ÚmarkdefÚbaser   Úis_ligatureÚis_markrç   rT   r  Úenter_coverageÚexit_coverager)  r*  s,   `                                           r   Ú_gposLookupÚVoltToFea._gposLookup¦  sï  ø€ Ø×)Ñ)ˆ
à�j‰jˆÜ�cœ4×<Ñ<×=Ò=Ø.1¯o©o×.CÑ.CÖ.EÑ*‘�™l˜tØ Ÿ_™_¨T°A©XÑ6�
Ø Ÿ_™_¨T°A©XÑ6�
ð #�
Ø&Ô3�DÜ% d¬D¯N©N×;Ó;Ø%)š
ñ 4ð Ÿ.™.¨Ó4�ØŸ.™.¨Ó4�Ø×*Ñ*¨4Ó0�Ø×*Ñ*¨4Ó0�Ü˜7“| qÓ(Ð(Ð(Ü˜7“| qÓ(Ð(Ð(Ø×!Ñ!Ü×(Ò(Ø ™
 G°Q©Z¸ÈZñöò# /Fô, ˜œT×@Ñ@×AÑAØ×)Ô)‘��1ØŸ™¨Ó*�Ø×)Ñ)¨!Ó,�Ü˜6“{ aÓ'Ð'Ð'Ø×!Ñ!Ü×*Ò*¨V°A©Y¸Ð,?Ð+@À"ÀbÈ%ÓPöò	 *ô ˜œT×:Ñ:×;Ò;ØˆGÜ“uˆHØ(+¯­Ñ$�˜*ð !ŸO™O¨z¨l¸!¸F¿K¹K¸=Ð,IÓJ�	ÜŸMšM¨)Ó4�	ð (×-Ñ-Ó/�
ô ›�Û$�DØ—L‘L §¡£Ö1ñ %à×'Ñ'¨×1Ñ1Ø×+Ñ+¨HÔ5Þ Ù Ø—‘ Ô&ã!&�IØ ŸO™O¨IÓ6�EØ!Ÿ]™]¨9Ñ5¸¸j¸\Ð6JÑKÈAÑN�FÜ!×5Ò5°iÀÈÓO�GØ@G�D×%Ñ% y°)Ð&<Ó=ñ	 "'ð  ŸLœL�DØ $§¡¦˜Ø wÓ.Ø,.˜G D™MØ&¨	Ð2¸'À$¹-ÕGØ# D™M×0Ñ0°*¸iÐ1HÖIó	 !0ô )ñC )8ôP ÔD¹GÓDÓDˆKÜÔ<±GÓ<Ó<ˆGÜ�Ø�
ÞØ!%§¡°Ñ!6�Jä%*¨:Ô%6Ó7Ò%6 ›Ñ%6�Ð7Ø'.¨t¤}‘O�D˜)Ü #§¢¨iÓ 8�IÜ%*¨1¨j¸1©nÖ%=˜	Ø$¨¯©°dÑ(;¸DÑ(AÕAØ%)§]¡]°4Ñ%8¸Ñ%>¸yÑ%I˜FØ! )¨a¡-Ñ0×7Ñ7¸ÀÐ8KÖLó &>ñ (5ð —‘ tÓ,�ÞÜ×3Ò3°D¸%À¹(ÓC‘DÞ Ü×2Ò2°4¸Ó?‘Dä×3Ò3°D¸%À¹(ÓC�DØ×!Ñ! $×'ò)  ô* ˜œT×AÑA×BÒBàˆNØ×/Ô/�Û$�DØ $§¡¦˜Ø&×-Ñ-¨dÖ3ó !0ó %ñ 0ð ˆMØ×.Ô.�Û$�DØ $§¡¦˜Ø%×,Ñ,¨TÖ2ó !0ó %ñ /ó '�ØŸ™¨Ó-�ØŸ™ dÑ+¨GÑ4°QÑ7�Ø�Ø˜=Ó(ØŸ=™=¨Ñ.¨vÑ6°qÑ9�DØ!×%Ñ% m×&9Ñ&9¸$Ó&?Ô@Ø×!Ñ!¤#×"9Ò"9¸%ÀÈÓ"MÖNñ 'ó &�ØŸ™¨Ó-�Ø—}‘} TÑ*¨6Ñ2°1Ñ5�Ø×!Ñ!¤#×"9Ò"9¸%ÀÀtÓ"LÖMò &ô
 & cÓ*Ð*ùò] 8s   Ï%Zc                 ó*  • UR                   nUR                  n[        U[        R                  5      (       aâ  UR
                  R                  5        HÃ  u  u  pšu  p¼U R                  UR                  U	S-
     5      nU R                  UR                  U
S-
     5      n[        U5      S:X  d   e[        U5      S:X  d   eUS   US   4nU(       a  [        R                  " X/U4/5      nO[        R                  " X/X6U/5      nUR                  U5        MÅ     g [        U[        R                  5      (       a™  [        R                   " 5       /nUR"                   H(  u  nnUS   R%                  U R                  USS95        M*     U(       a  [        R                  " X/U4/5      nO[        R                  " X/X6/5      nUR                  U5        g [        U[        R&                  5      (       a™  [        R                   " 5       /nUR(                   H(  u  nnUS   R%                  U R                  USS95        M*     U(       a  [        R                  " X/U4/5      nO[        R                  " X/X6/5      nUR                  U5        g [+        U5      e)Nrz   r   TrÑ   )ra   rn   r   r   r+  r,  r•   rÔ   r-  r.  r˜   r   ÚIgnorePosStatementÚChainContextPosStatementr   r0  rÕ   r1  r   r3  r4  rm   )r.   r£   ÚprefixÚsuffixÚignorerE  r-   ra   rn   rF  rG  rH  rI  rL  rM  rß   rs   rP  rT   r×   s                       r   Ú_gposContextLookupÚVoltToFea._gposContextLookup+  s8  € Ø×)Ñ)ˆ
à�j‰jˆÜ�cœ4×<Ñ<×=Ñ=Ø.1¯o©o×.CÑ.CÖ.EÑ*‘�™l˜tØŸ.™.¨¯©¸À¹Ñ)BÓC�ØŸ.™.¨¯©¸À¹Ñ)BÓC�Ü˜7“| qÓ(Ð(Ð(Ü˜7“| qÓ(Ð(Ð(Ø! !™* g¨a¡jÐ1�æÜ #× 6Ò 6¸ÈÐ8PÐ7QÓ R‘Iä #× <Ò <Ø¨¸'Ð0Bó!�Ið ×!Ñ! )Ö,ò /Fô ˜œT×@Ñ@×AÑAÜ—n’nÓ&Ð'ˆFØ×)Ô)‘��1Ø�q‘	× Ñ  §¡°¸4 Ð!@ÖAñ *ö Ü×2Ò2°VÀVÐ4LÐ3MÓN‘	ä×8Ò8Ø F¨Ió�	ð ×Ñ˜iÕ(Ü˜œT×:Ñ:×;Ñ;Ü—n’nÓ&Ð'ˆFØ"Ÿœ‘�˜!Ø�q‘	× Ñ  §¡°À$ Ð!GÖHñ  /ö Ü×2Ò2°VÀVÐ4LÐ3MÓN‘	ä×8Ò8Ø F¨Ió�	ð ×Ñ˜iÕ(ä% cÓ*Ð*r   c                 óÂ	  ^• UR                   nUR                  n[        U[        R                  5      (       Gau  0 nUR
                  R                  5        Hý  u  pgU(       a  U(       d/  UR                  u  p‰n
[        R                  U SU	 SU
 S35        MB  U R                  U5      nU R                  U5      n[        U5      S:X  d   e[        US   R                  5       US   R                  5       5       HV  u  pÞUR                  [        U R!                  U5      5      / 5      R#                  [        U R!                  U5      5      5        MX     Mÿ     UR                  5        HC  u  pü[$        R&                  " / U/ [$        R(                  " U5      5      nUR#                  U5        ME     g UR
                  R                  5        GH  u  pgU(       a  U(       d/  UR                  u  p‰n
[        R                  U SU	 SU
 S35        MC  U R                  U5      nU R                  U5      n[        U[        R*                  5      (       aL  [        U5      S:X  d   e[        U5      S:X  d   eUR#                  [$        R,                  " X¼/ / S5      5        MÐ  [        U[        R.                  5      (       a  Mñ  [        U[        R0                  5      (       a?  [        U5      S:X  d   eUR#                  [$        R2                  " / US   / U5      5        GMO  [        U[        R4                  5      (       GaŒ  [        U5      S:X  d   e[$        R6                  " / U/ US   S5      n[9        S U 5       5      mTS:”  Ga1  [;        U4S jU 5       5      (       d   eU Vs/ s H  nUR                  5       PM     nnU Vs/ s H  n[        U5      S:X  a	  US   /T-  OUPM     nnUS   R                  5       n[        U5      S:X  a	  US   /T-  n[        U5      T:¼  d   eUR#                  [$        R<                  " SU 35      5        [        / UQUP76  HS  nU Vs/ s H  nU R!                  U5      PM     nnUR#                  [$        R6                  " / US S	 / US	   S5      5        MU     GMç  UR#                  U5        GMû  [?        U5      e   g s  snf s  snf s  snf )
NÚ:ú: Ignoring empty substitutionrz   r   Fc              3   óT   #   • U  H  n[        UR                  5       5      v •  M      g 7fr   ©r˜   rË   )r|   r#   s     r   r~   Ú(VoltToFea._gsubLookup.<locals>.<genexpr>˜  s   é € Ð:²6¨aœ˜AŸJ™J›L×)Ð)²6ùs   ‚&(c              3   ó`   >#   • U  H#  n[        UR                  5       5      TS 4;   v •  M%     g7fry   rl  )r|   r#   r%  s     €r   r~   rm  ›  s%   øé € ÐKÂF¸qœs 1§:¡:£<Ó0°Q¸°FÖ:ÂFùs   ƒ+.ú# éÿÿÿÿ) ra   rV   r   r   ÚSubstitutionAlternateDefinitionÚmappingr•   r0   r™   rš   rÔ   r˜   ÚziprË   Ú
setdefaultrÌ   rÅ   r   r   ÚAlternateSubstStatementrÕ   ÚSubstitutionSingleDefinitionÚSingleSubstStatementÚ+SubstitutionReverseChainingSingleDefinitionÚSubstitutionMultipleDefinitionÚMultipleSubstStatementÚSubstitutionLigatureDefinitionÚLigatureSubstStatementÚmaxr:  r“   rm   )r.   r£   rE  ra   rV   Ú
alternatesr†   ÚvalÚpathÚlineÚcolumnrß   ÚreplacementsÚ	src_glyphÚ
repl_glyphrÁ   rs   r#   ÚreplacementÚzippedr%  s                       @r   Ú_gsubLookupÚVoltToFea._gsubLookupY  sE  ø€ Ø×)Ñ)ˆ
à�j‰jˆô
 �cœ4×?Ñ?×@Ò@ØˆJØŸK™K×-Ñ-Ö/‘�Þ¦#Ø),¯©Ñ&�D Ü—K‘K 4 &¨¨$¨¨q°°Ð8UÐ VÔWÙØŸ™¨Ó,�Ø#Ÿ~™~¨cÓ2�Ü˜6“{ aÓ'Ð'Ð'Ü-0Ø˜1‘I×&Ñ&Ó(¨,°q©/×*BÑ*BÓ*Dö.Ñ)�Ið ×)Ñ)¬#¨d¯o©o¸iÓ.HÓ*IÈ2ÓN×UÑUÜ˜DŸO™O¨JÓ7Ó8öó.ñ 0ð (2×'7Ñ'7Ö'9Ñ#�Ü×7Ò7Ø˜˜r¤3§>¢>°,Ó#?ó�	ð ×!Ñ! )Ö,ñ	 (:ð
 àŸ™×)Ñ)×+‰HˆCÞžcØ%(§\¡\Ñ"�˜FÜ—‘˜t˜f A d V¨1¨V¨HÐ4QÐRÔSÙØ—^‘^ CÓ(ˆFØŸ>™>¨#Ó.ˆLÜ˜#œt×@Ñ@×AÑAÜ˜6“{ aÓ'Ð'Ð'Ü˜<Ó(¨AÓ-Ð-Ð-Ø×!Ñ!Ü×,Ò,¨VÀ2ÀrÈ5ÓQöô ˜C¤×!QÑ!Q×RÑRáÜ˜C¤×!DÑ!D×EÑEÜ˜6“{ aÓ'Ð'Ð'Ø×!Ñ!Ü×.Ò.¨r°6¸!±9¸bÀ,ÓO÷ô ˜C¤×!DÑ!D×EÒEÜ˜<Ó(¨AÓ-Ð-Ð-Ü×6Ò6Ø˜  L°¡O°Uó�	ô Ñ:±6Ó:Ó:�Ø�q”5äÔKÁFÓK×KÑKÐKÐKÙ4:Ó;²F¨q˜aŸj™jžl±F�FÐ;ÙJPÓQÊ&ÀQ¬S°«V°q«[  !¡˜v¨šz¸aÒ?É&�FÐQð #/¨q¡/×":Ñ":Ó"<�KÜ˜;Ó'¨1Ó,Ø'2°1¡~Ð&6¸Ñ&:˜Ü˜{Ó+¨qÓ0Ð0Ð0ð ×%Ñ%¤c§k¢k°B°y°kÐ2BÓ&CÔDä"%Ð"; vÐ";¨{Õ";˜Ù>DÓ!Eºf¸ $§/¡/°!Ö"4¹f˜Ð!EØ"×)Ñ)Ü×6Ò6Ø " F¨3¨B K°°V¸B±ZÀóöô #<ð ×%Ñ% i×0ä)¨#Ó.Ð.ò{ ,ùòF <ùÚQùò  "Fs   ÎSÎ?$SÑSc           	      ó�  • UR                   nUR                  n[        U[        R                  5      (       a°  UR
                  R                  5        HŠ  u  pšU	(       a  U
(       d/  UR                  u  p¼n[        R                  U SU SU S35        MB  U R                  U	5      nU R                  U
5      nUR                  [        R                  " X#Xï5      5        MŒ     / Ul        g [        U[        R                  [        R                   [        R"                  [        R$                  45      (       d  ['        [)        U5      5      e/ nUR
                  R                  5        Ha  u  pšU	(       a  U
(       d/  UR                  u  p¼n[        R                  U SU SU S35        MB  UR+                  U R                  U	SS95        Mc     [-        U5      S:”  a  [        R.                  " U5      /nU(       a)  UR                  [        R0                  " X.U4/5      5        g UR                  [        R2                  " X.X6/5      5        g )Nri  rj  TrÑ   rz   )ra   rV   r   r   rx  rr  r•   r0   r™   rš   rÔ   r   r   Ú ReverseChainSingleSubstStatementr-   rv  ry  r{  rq  rm   rå   r   r˜   rÕ   ÚIgnoreSubstStatementÚChainContextSubstStatement)r.   r£   rc  rd  re  rE  r-   ra   rV   r†   r  r€  r�  r‚  rß   rƒ  s                   r   Ú_gsubContextLookupÚVoltToFea._gsubContextLookup¸  sÛ  € Ø×)Ñ)ˆ
à�j‰jˆä�cœ4×KÑK×LÑLàŸK™K×-Ñ-Ö/‘�Þ¦#Ø),¯©Ñ&�D Ü—K‘K 4 &¨¨$¨¨q°°Ð8UÐ VÔWÙØŸ™¨Ó,�Ø#Ÿ~™~¨cÓ2�Ø×!Ñ!Ü×8Ò8Ø¨óöñ 0ð !#ˆIÔØäØä×1Ñ1Ü×3Ñ3Ü×3Ñ3Ü×4Ñ4ð	÷
ñ 
ô &¤d¨3£iÓ0Ð0àˆØŸ™×)Ñ)Ö+‰HˆCÞžcØ%(§\¡\Ñ"�˜FÜ—‘˜t˜f A d V¨1¨V¨HÐ4QÐRÔSÙØ�M‰M˜$Ÿ.™.¨°d˜.Ð;Ö<ñ ,ô ˆv‹;˜‹?Ü—n’n VÓ,Ð-ˆFÞØ×Ñœc×6Ò6¸ÈÐ8PÐ7QÓRÕSà×ÑÜ×.Ò.¨v¸vÀyÓQõr   c           	      ó 	  • S nS nSnUR                   S:X  a  US-  nUR                  (       d  US-  nUR                  (       d  US-  nOc[        UR                  [        5      (       a  U R                  UR                  5      nO(UR                  b  U R                  UR                  5      nS nU(       d  Uc  Ub  [        R                  " XBU5      nSnU R                  R                  S5      (       a  SnS	UR                  ;   GaT  UR                  R                  S	5      S   nUR                  5       U R                  ;  at  [        U R!                  U5      US
9nUb  UR"                  R%                  U5        UR"                  R%                  [        R&                  " SUR                  -   5      5        O‡U R                  UR                  5          nUR"                  R%                  [        R(                  " 5       5        UR"                  R%                  [        R&                  " SUR                  -   5      5        X€R                  UR                  5       '   Og[        U R!                  UR                  5      US
9nUb  UR"                  R%                  U5        X€R                  UR                  R                  5       '   UR*                  b<  UR"                  R%                  [        R&                  " SUR*                  -   5      5        / n	UR,                   H“  n
U R/                  U
R0                  5      nU R/                  U
R2                  5      nU
R4                  S:H  nU	R%                  X¼U/5        U(       d  Md  [7        UR,                  5      S:X  d  M  U	R%                  / / S/5        M•     U	(       aÚ  [        R8                  " U R!                  UR                  S-   5      US
9nUR:                  R%                  U5        UR<                  b  U R?                  X5        OUR@                  b  U RC                  X5        U	 HJ  u  p¼nUR<                  b  U RE                  XXÍXŽ5        M(  UR@                  c  M7  U RG                  XXÍXŽ5        ML     g UR<                  b  U R?                  X5        g UR@                  b  U RC                  X5        g g )Nr   ÚRTLrz   é   é   FÚCOMPILER_USEEXTENSIONLOOKUPSTrê   )r/   ro  ÚEXCEPT_CONTEXTz chained)$Ú	directionÚprocess_baseÚprocess_marksr   rÌ   rÈ   Úmark_glyph_setr   ÚLookupFlagStatementrL   rÄ   r   rí   r   rF   r(   rZ   ra   r   r“   ÚSubtableStatementÚcommentsrÚ   rÜ   ÚleftÚrightÚex_or_inr˜   ÚLookupBlockr-   rV   rˆ  rn   r^  rŽ  rf  )r.   r£   Úmark_attachementÚmark_filteringÚflagsÚlookupflagsr/   r   rE  ÚcontextsrÚ   rc  rd  re  r-   s                  r   ro   ÚVoltToFea._lookupDefinitionê  sß  € ØÐØˆàˆØ×Ñ˜uÓ$Ø�Q‰JˆEØ×"×"Ø�Q‰JˆEð ×#×#Ø�Q‰J‰EÜ˜×,Ñ,¬c×2Ñ2Ø#Ÿ™¨v×/CÑ/CÓDÑØ×"Ñ"Ñ.Ø!Ÿ_™_¨V×-BÑ-BÓCˆNàˆÞÐ$Ñ0°NÑ4NÜ×1Ò1Ø¨óˆKð ˆØ�>‰>×ÑÐ<×=Ñ=Ø ˆMà�6—;‘;Ôð —;‘;×$Ñ$ TÓ*¨1Ñ-ˆDØ�z‰z‹| 4§=¡=Ó0Ü"Ø×$Ñ$ TÓ*Ø"/ñ�	ð Ñ*Ø×(Ñ(×/Ñ/°Ô<Ø×$Ñ$×+Ñ+¬C¯KªK¸¸v¿{¹{Ñ8JÓ,KÕLà ŸM™M¨$¯*©*«,Ñ7�	Ø×$Ñ$×+Ñ+¬C×,AÒ,AÓ,CÔDØ×$Ñ$×+Ñ+¬C¯KªK¸¸v¿{¹{Ñ8JÓ,KÔLØ*3�M‰M˜$Ÿ*™*›,Ò'äØ× Ñ  §¡Ó-Ø+ñˆIð Ñ&Ø×$Ñ$×+Ñ+¨KÔ8Ø1:�M‰M˜&Ÿ+™+×+Ñ+Ó-Ñ.à�?‰?Ñ&Ø× Ñ ×'Ñ'¬¯ª°D¸6¿?¹?Ñ4JÓ(KÔLàˆØ—~”~ˆGØ—]‘] 7§<¡<Ó0ˆFØ—]‘] 7§=¡=Ó1ˆFØ×%Ñ%Ð)9Ñ9ˆFØ�O‰O˜V¨VÐ4Ô5÷ ˆvœ#˜fŸn™nÓ-°Õ2Ø—‘  R¨ Ö0ñ &ö Ü—o’oØ× Ñ  §¡¨zÑ!9Ó:Ø+ñˆGð ×Ñ×$Ñ$ WÔ-Ø�z‰zÑ%Ø× Ñ  Õ1Ø—‘Ñ'Ø× Ñ  Ô1Û*2Ñ&� Ø—:‘:Ñ)Ø×+Ñ+Ø¨¸	öð —Z‘ZÓ+Ø×+Ñ+Ø¨¸	öò +3ð �z‰zÑ%Ø× Ñ  Õ3Ø—‘Ñ'Ø× Ñ  Õ3ð (r   )rK   rN   r>   rE   r?   r@   rC   rA   rB   rD   rI   rM   rF   rJ   rH   rL   r   )F)NF) r3   r4   r5   r6   ÚreÚcompilerU   r]   r,   rZ   r^   ru   rµ   r¾   rÅ   rÈ   rÍ   rÔ   rÜ   re   rc   rk   ri   r  r  rg   r^  rf  rˆ  rŽ  ro   r7   r{   r   r   r:   r:   `   s£   † ØŸ*š*Ð%6Ó7ÐØŸšÐ$7Ó8Ðôò4(ò'ô"2òHVôpò>òDò
ôò.	ò:ò;ò BôHò
ò 
òKòC+òJ,+ò\]/ò~0õd]4r   r:   c           
      ó4  • SSK nSSKJn  SSKJn  UR                  S[        R                  S9nUR                  SSUS	S
9  UR                  SSUSS
9  UR                  SSS[        SSS9  UR                  SSSSS9  UR                  SSSS9  UR                  U 5      nU" UR                  (       a  SOSS9  UR                  nSn [        U5      nSU;   a(  [        US   R                  R!                  S5      5      nO["        R%                  S 5        g![)        Xg5      n UR+                  UR,                  5      n	[7        UR8                  S'5       nUR;                  U	5        SSS5        g! [&         a     Ndf = f! [.         a~  n
UR0                  (       a  e [3        U
R4                  S   S"S5      nS#U
 S$3nU(       a&  Uu  pÞn["        R%                  U S%U S%U S&U 35        O["        R%                  U5         Sn
A
g!Sn
A
ff = f! , (       d  f       g= f)(z'Convert MS VOLT to AFDKO feature files.r   N)ÚPath)ÚconfigLoggerzfonttools voltLib.voltToFea)ÚdescriptionÚinputÚINPUTzinput font/VTP file to process)Úmetavarrå   ÚhelpÚfeaturefileÚOUTPUTzoutput feature filez-tz--tabler   rq   z:List of tables to write, by default all tables are written)ÚactionÚchoicesÚdestr°  z-qz--quietÚ
store_truezSuppress non-error messages)r³  r°  z--tracebacku   Donâ€™t catch exceptionsÚERRORÚINFO)ÚlevelÚTSIVzutf-8z6"TSIV" table is missing, font was not saved from VOLT?rz   r0   Ú"z" is not supportedri  z: Úw)ÚargparseÚpathlibrª  Ú	fontToolsr«  ÚArgumentParserÚmainÚ__doc__Úadd_argumentrº   Ú
parse_argsÚquietr­  r   r   ÚdataÚdecoder™   Úerrorr   r:   r¾   rq   rm   Ú	tracebackÚgetattrÚargsÚopenr±  Úwrite)rË  r½  rª  r«  ÚparserÚoptionsrO   rP   Ú	converterr½   Úer0   Úmessager€  r�  r‚  Úfeafiles                    r   rÁ  rÁ  J  s,  € ó Ýå&à×$Ñ$Ø%´4·<±<ð %ð €Fð ×ÑØ˜ tÐ2Rð ñ ð ×ÑØ˜x¨dÐ9Nð ñ ð ×ÑØØØÜØØIð ñ ð ×ÑØˆi Ð3Pð ñ ð ×ÑØ˜lÐ1Kð ñ ð ×Ñ Ó%€Gá 7§=§=™°fÒ>à—=‘=€LØ€DðÜ�lÓ#ˆØ�T‹>Ü# D¨¡L×$5Ñ$5×$<Ñ$<¸WÓ$EÓF‰Lä�I‰IÐNÔOØô ˜,Ó-€IðØ×Ñ §¡Ó/ˆô 
ˆg×!Ñ! 3Ô	'¨7Ø�‰�cÔ÷ 
(Ð	'øô# ó Ùðûô ó 
Ø××ØÜ˜1Ÿ6™6 !™9 j°$Ó7ˆØ�a�SÐ*Ð+ˆÞØ!)ÑˆD˜Ü�I‰I˜˜˜a ˜v Q v h¨b°°	Ð:Õ;ä�I‰I�gÔÜûð
ú÷ 
(Õ	'ús=   Ã8E. Ä E. Ä"E> ÅH	Å.
E;Å:E;Å>
HÆA4HÈHÈ	
HÚ__main__r   )rÂ  Úloggingr§  Úior   Úgraphlibr   ÚfontTools.feaLibr   ÚfontTools.ttLibr   r   ÚfontTools.voltLibr   ÚfontTools.voltLib.parserr   r¸   Ú	getLoggerr™   rº   r   r&   r   r(   r:   rÁ  r3   Úsysr*  r{   r   r   Ú<module>rÞ     sˆ   ðñ+óZ Û 	Ý Ý &å  ß .Ý )Ý 9à×ÒÐ5Ó6€â	!€ò	ò?ôˆS�_‰_ô ÷g4ñ g4ôT?ðD ˆzÓÛà‡H‚H‰T‹VÕð r   