ó
    oñ:ið  ã                   óÈ  • S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
JrJr  S SKJr  S SKJ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Jr  S SKJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  S SK/J0r0  S SK1J2r2  S SK3J4r4  S SK5J6r6  S SK7J8r8  S SK9J:r:J;r;  S SK<J=r=  S SK>r>S SK?r?S SK@JArA  S SKBrBS SKCrCS SKDrD\BRŠ                  " \F5      rGSS jrH SS jrI " S S\J5      rKg)é    )Ússtruct)ÚTagÚtostrÚ
binary2numÚsafeEval)ÚFeatureLibError)ÚLookupDebugInfoÚLOOKUP_DEBUG_INFO_KEYÚLOOKUP_DEBUG_ENV_VAR)ÚParser)ÚFeatureFile)ÚVariableScalar)Úbuilder)Ú
maxCtxFont)ÚnewTableÚgetTableModule)ÚotBaseÚotTables)ÚAlternateSubstBuilderÚChainContextPosBuilderÚChainContextSubstBuilderÚLigatureSubstBuilderÚMultipleSubstBuilderÚCursivePosBuilderÚMarkBasePosBuilderÚMarkLigPosBuilderÚMarkMarkPosBuilderÚReverseChainSingleSubstBuilderÚSingleSubstBuilderÚClassPairPosSubtableBuilderÚPairPosBuilderÚSinglePosBuilderÚChainContextualRuleÚAnySubstBuilder)ÚOpenTypeLibError)ÚVarLibError)ÚOnlineVarStoreBuilder)ÚbuildVarDevTable)ÚaddFeatureVariationsRaw)ÚnormalizeValueÚpiecewiseLinearMap)ÚdefaultdictN)ÚStringIOc                 ó8   • [        X5      nUR                  X#S9  g)aÌ  Add features from a file to a font. Note that this replaces any features
currently present.

Args:
    font (feaLib.ttLib.TTFont): The font object.
    featurefile: Either a path or file object (in which case we
        parse it into an AST), or a pre-parsed AST instance.
    tables: If passed, restrict the set of affected tables to those in the
        list.
    debug: Whether to add source debugging information to the font in the
        ``Debg`` table

©ÚtablesÚdebugN)ÚBuilderÚbuild)ÚfontÚfeaturefiler0   r1   r   s        Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/feaLib/builder.pyÚaddOpenTypeFeaturesr7   4   s   € ô �dÓ(€GØ‡M�M˜€MÒ-ó    c                 óZ   • [        [        U5      5      nU(       a  X%l        [        XX4S9  g)a5  Add features from a string to a font. Note that this replaces any
features currently present.

Args:
    font (feaLib.ttLib.TTFont): The font object.
    features: A string containing feature code.
    filename: The directory containing ``filename`` is used as the root of
        relative ``include()`` paths; if ``None`` is provided, the current
        directory is assumed.
    tables: If passed, restrict the set of affected tables to those in the
        list.
    debug: Whether to add source debugging information to the font in the
        ``Debg`` table

r/   N)r-   r   Únamer7   )r4   ÚfeaturesÚfilenamer0   r1   r5   s         r6   ÚaddOpenTypeFeaturesFromStringr=   F   s%   € ô& œ5 ›?Ó+€KÞØ#ÔÜ˜°&ÓFr8   c            
       ó  • \ rS rSr\" S S 5       5      rS rSaS jrS rS r	SbS	 jr
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&ScS& jr'S' r(ScS( jr)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8/ 4S8 jr9S9 r:S: r;S; r< ScS< jr=S= r>S> r?S? r@S@ rASA rBSB rCSC rDSD rESE rFSF rGSG rHSH rISI rJSJ rKSK rLSL rMSM rNSN rOSO rPSP rQSQ rRSR rSSS rTST rUSU rVSV rWSW rXSX rYSY rZSZ r[S[ r\\]R¼                   V VVVs0 s H9  u  pp1UR¿                  S\5      (       a  M  US]   RÁ                  5       US^S -   X#4_M;     snnnn raS_ rbS`rcgs  snnnn f )dr2   é_   c              #   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)r   )Ú.0Útags     r6   Ú	<genexpr>ÚBuilder.<genexpr>`   s!   é € ð  ò
ˆCô 	ˆC�ˆò
ùó   ‚)
ÚBASEÚGDEFÚGPOSÚGSUBúOS/2ÚheadÚhhear:   ÚvheaÚSTATc                 ó  • Xl         [        U[        5      (       a  US sU l        U l        OS UsU l        U l        UR                  5       U l        S U l        SU;   aH  US   R                  U l        [        U R                   Vs/ s H  o3R                  PM     sn5      U l        [        5       U l        S U l        SU l        S U l        SU l        [        5       U l        SU l        0 U l        S U l        S U l        S U l        / U l        0 0 S.U l        0 U l        0 U l        0 U l        / U l        S U l        0 U l        SU l        [        5       U l         0 U l!        [        5       U l"        0 U l#        0 U l$        [K        [L        5      U l'        S U l(        S U l)        / U l*        S U l+        S U l,        0 U l-        0 U l.        0 U l/        0 U l0        0 U l1        0 U l2        0 U l3        0 U l4        0 U l5        0 U l6        0 U l7        0 U l8        0 U l9        g s  snf )NÚfvarr   F)rJ   rI   ):r4   Ú
isinstancer   Ú	parseTreeÚfileÚgetReverseGlyphMapÚglyphMapÚvarstorebuilderÚaxesr'   ÚaxisTagÚsetÚdefault_language_systems_Úscript_Úlookupflag_Úlookupflag_markFilterSet_Úuse_extension_Úlanguage_systemsÚseen_non_DFLT_script_Únamed_lookups_Úcur_lookup_Úcur_lookup_name_Úcur_feature_name_Úlookups_Úlookup_locationsÚ	features_Úrequired_features_Úfeature_variations_Úaalt_features_Úaalt_location_Úaalt_alternates_Úaalt_use_extension_ÚfeatureNames_ÚfeatureNames_ids_Úcv_parameters_Úcv_parameters_ids_Úcv_num_named_params_r,   ÚlistÚcv_characters_Úsize_parameters_ÚfontRevision_Únames_Úbase_horiz_axis_Úbase_vert_axis_ÚattachPoints_ÚligCaretCoords_ÚligCaretPoints_ÚglyphClassDefs_ÚmarkAttach_ÚmarkAttachClassID_ÚmarkFilterSets_Úos2_Úhhea_Úvhea_Ústat_Úconditionsets_Úmodel_cache)Úselfr4   r5   Úaxs       r6   Ú__init__ÚBuilder.__init__p   sÿ  € ØŒ	ô �k¤;×/Ñ/Ø(3°TÐ%ˆDŒN˜D�Ià(,¨kÐ%ˆDŒN˜DœIØ×/Ñ/Ó1ˆŒØ#ˆÔØ�T‹>Ø˜V™×)Ñ)ˆDŒIÜ#8Ø&*§i¢iÓ0¢i —”¡iÑ0ó$ˆDÔ ô *-«ˆÔ&ØˆŒØˆÔØ)-ˆÔ&Ø#ˆÔÜ #£ˆÔØ%*ˆÔ"Ø ˆÔØˆÔØ $ˆÔØ!%ˆÔØˆŒØ)+°RÑ 8ˆÔØˆŒØ"$ˆÔØ#%ˆÔ à ˆÔØ"ˆÔØ "ˆÔØ#(ˆÔ ä ›UˆÔØ!#ˆÔä!›eˆÔØ"$ˆÔØ$&ˆÔ!Ü)¬$Ó/ˆÔà $ˆÔà!ˆÔàˆŒà $ˆÔØ#ˆÔàˆÔØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØ"$ˆÔØ!ˆÔàˆŒ	àˆŒ
àˆŒ
àˆŒ
à ˆÔð ˆÕùò{ 1s   ÂH
Nc                 ó’  ^ • T R                   c3  [        T R                  T R                  5      R	                  5       T l         T R                   R                  T 5        Uc  T R                  nOJ[        U5      nUT R                  -
  nU(       a)  SR                  [        U5      5      n[        SU S35      eSU;   a  T R                  5         SU;   a  T R                  5         SU;   a  T R                  5         SU;   a  T R                  5         SU;   a  T R                  5         S	U;   a  T R!                  5         S
U;   a  T R#                  5         S HÌ  nXQ;  a  M
  T R%                  U5      nT R&                  (       a  T R)                  Xe5        UR*                  R,                  S:”  d4  UR.                  R0                  S:”  d  UR2                  R4                  S:”  a"  [7        U5      =nT R8                  U'   Xgl        M­  UT R8                  ;   d  M¿  T R8                  U	 MÎ     [=        U 4S jS 5       5      (       a7  S	T R8                  ;   a'  [?        T R8                  5      T R8                  S	   l         SU;   aD  T RC                  5       nU(       a  UT R8                  S'   OST R8                  ;   a  T R8                  S	 SU;   aD  T RE                  5       n	U	(       a  U	T R8                  S'   OST R8                  ;   a  T R8                  S	 U(       d(  [F        RH                  RK                  [L        5      (       a  T RO                  5         g g )Nú, z9The following tables were requested but are unsupported: Ú.rJ   rL   rM   rN   r:   rK   rO   ©rI   rJ   r   c              3   ó@   >#   • U  H  oTR                   ;   v •  M     g 7frA   )r4   )rB   rC   rˆ   s     €r6   rD   Ú Builder.build.<locals>.<genexpr>é   s   øé € Ð<Ò+; C�d—i‘iÖÒ+;ùó   ƒrH   rG   )(rS   r   rT   rV   Úparser3   ÚsupportedTablesÚ	frozensetÚjoinÚsortedÚNotImplementedErrorÚbuild_feature_aalt_Ú
build_headÚ
build_hheaÚ
build_vheaÚ
build_nameÚ
build_OS_2Ú
build_STATÚ	makeTablerj   ÚmakeFeatureVariationsÚ
ScriptListÚScriptCountÚFeatureListÚFeatureCountÚ
LookupListÚLookupCountr   r4   ÚtableÚanyr   ÚusMaxContextÚ	buildGDEFÚ	buildBASEÚosÚenvironÚgetr   Ú	buildDebg)
rˆ   r0   r1   ÚunsupportedÚunsupported_stringrC   r¨   Ú	fontTableÚgdefÚbases
   `         r6   r3   ÚBuilder.build¼   sœ  ø€ Ø�>‰>Ñ!Ü# D§I¡I¨t¯}©}Ó=×CÑCÓEˆDŒNØ�‰×Ñ˜TÔ"à‰>Ø×)Ñ)‰Fä˜vÓ&ˆFØ  4×#7Ñ#7Ñ7ˆKÞØ%)§Y¡Y¬v°kÓ/BÓ%CÐ"Ü)ØOØ)Ð*¨!ð-óð ð �VÓØ×$Ñ$Ô&Ø�VÓØ�O‰OÔØ�VÓØ�O‰OÔØ�VÓØ�O‰OÔØ�VÓØ�O‰OÔØ�VÓØ�O‰OÔØ�VÓØ�O‰OÔÛ#ˆCØÓ ÙØ—N‘N 3Ó'ˆEØ×'×'Ø×*Ñ*¨5Ô6à× Ñ ×,Ñ,¨qÓ0Ø×$Ñ$×1Ñ1°AÓ5Ø×#Ñ#×/Ñ/°!Ó3ä-5°c«]Ð:�	˜DŸI™I c™NØ"'–Ø˜Ÿ	™	Õ!Ø—I‘I˜c’Nñ $ô Ô<Ñ+;Ó<×<Ñ<ÀÈ4Ï9É9ÓATÜ-7¸¿	¹	Ó-BˆD�I‰I�fÑÔ*Ø�VÓØ—>‘>Ó#ˆDÞØ$(�—	‘	˜&Ò!Ø˜4Ÿ9™9Ó$Ø—I‘I˜fÐ%Ø�VÓØ—>‘>Ó#ˆDÞØ$(�—	‘	˜&Ò!Ø˜4Ÿ9™9Ó$Ø—I‘I˜fÐ%Þ”B—J‘J—N‘NÔ#7×8Ñ8Ø�N‰NÕð 9r8   c                 óÈ   • U" U R                   U5      nU R                  Ul        U R                  Ul        U R
                  Ul        U R                  R                  U5        U$ rA   )	r4   r]   Ú
lookupflagr^   ÚmarkFilterSetr_   Ú	extensionrf   Úappend)rˆ   ÚlocationÚbuilder_classÚresults       r6   Úget_chained_lookup_ÚBuilder.get_chained_lookup_ú   sS   € Ù˜tŸy™y¨(Ó3ˆØ ×,Ñ,ˆÔØ#×=Ñ=ˆÔØ×.Ñ.ˆÔØ�‰×Ñ˜VÔ$Øˆr8   c                 óŒ   • U R                    H4  u  p4X4U4nU R                  R                  U/ 5      R                  U5        M6     g rA   )r`   rh   Ú
setdefaultr»   )rˆ   ÚlookupÚfeature_nameÚscriptÚlangÚkeys         r6   Úadd_lookup_to_feature_ÚBuilder.add_lookup_to_feature_  s=   € Ø ×1Ô1‰LˆFØ Ð.ˆCØ�N‰N×%Ñ% c¨2Ó.×5Ñ5°fÖ=ò 2r8   c                 ó¤  • U R                   (       a�  [        U R                   5      U:X  at  U R                   R                  U R                  :X  aP  U R                   R                  U R
                  :X  a,  U R                   R                  U5      (       a  U R                   $ U R                  (       a  U R                   (       a  [        SU5      eU" U R                  U5      U l         U R                  U R                   l        U R
                  U R                   l        U R                  U R                   l        U R                  R                  U R                   5        U R                  (       a#  U R                   U R                  U R                  '   U R                  (       a&  U R!                  U R                   U R                  5        U R                   $ )NúOWithin a named lookup block, all rules must be of the same lookup type and flag)rc   Útyper¸   r]   r¹   r^   Úcan_add_mappingrd   r   r4   r_   rº   rf   r»   rb   re   rÈ   )rˆ   r¼   r½   Úmappings       r6   Úget_lookup_ÚBuilder.get_lookup_  s\  € à××Ü�T×%Ñ%Ó&¨-Ó7Ø× Ñ ×+Ñ+¨t×/?Ñ/?Ó?Ø× Ñ ×.Ñ.°$×2PÑ2PÓPØ× Ñ ×0Ñ0°×9Ñ9à×#Ñ#Ð#Ø× ×  T×%5×%5Ü!ð0àóð ñ
 )¨¯©°HÓ=ˆÔØ&*×&6Ñ&6ˆ×ÑÔ#Ø)-×)GÑ)Gˆ×ÑÔ&Ø%)×%8Ñ%8ˆ×ÑÔ"Ø�‰×Ñ˜T×-Ñ-Ô.Ø× × à9=×9IÑ9IˆD×Ñ × 5Ñ 5Ñ6Ø×!×!ð ×'Ñ'¨×(8Ñ(8¸$×:PÑ:PÔQØ×ÑÐr8   c                 óü  ^• U R                   (       d  U R                  (       d  g U R                  R                  5        VVs0 s H  u  pU[        U5      _M     nnnU R                   S/-    Hû  u  pEU R                  R                  5        VVVV	s/ s H  u  u  pgp‰X…:X  d  M  XgX‰4PM     sn	nnnnU(       d&  US:w  a   [
        R                  " U< SU< S35        Mq  U H„  u  pgp‰U	 Hx  n
[        U
[        5      (       d  U
/n
U
 HW  nUR                  5       R                  5        H2  u  pÍUR                  U/ 5      mTR                  U4S jU 5       5        M4     MY     Mz     M†     Mý     UR                  5        VVs0 s H  u  pÎ[        U5      S:X  d  M  XÎS   _M     nnnUR                  5        VVs0 s H  u  pÎ[        U5      S:”  d  M  XÎ_M     nnnU(       d  U(       d  g U R                  R                  5        VVVV	s0 s H  u  u  pgp‰US:w  d  M  XgU4U	_M     sn	nnnU l        U R                  n/ U l        U R                  U R                  SU R                  5        U(       a  U R!                  W["        5      nUUl        U(       a  U R!                  W[&        5      nUUl        U R+                  5         U R                  R                  U5        g s  snnf s  sn	nnnf s  snnf s  snnf s  sn	nnnf )N©NÚaaltrÓ   z
: Feature z has not been definedc              3   ó6   >#   • U  H  oT;  d  M
  Uv •  M     g 7frA   © )rB   ÚgÚalts_for_glyphs     €r6   rD   Ú.Builder.build_feature_aalt_.<locals>.<genexpr>=  s   øé € ð 2Ú+/ a¸NÑ3J§¡ª4ùó   ƒ	�	é   r   )rk   rm   Úitemsrt   rh   ÚwarningsÚwarnrR   ÚgetAlternateGlyphsrÂ   ÚextendÚlenrf   Ústart_featurerl   rn   rÏ   r   rÎ   r   Ú
alternatesÚend_feature)rˆ   rÖ   Úarâ   r¼   r:   rÅ   rÆ   ÚfeatureÚlookupsÚ
lookuplistrÃ   ÚglyphÚaltsÚreplÚsingleÚmultiÚold_lookupsÚsingle_lookupÚmulti_lookupr×   s                       @r6   r™   ÚBuilder.build_feature_aalt_$  s­  ø€ Ø×"×"¨4×+@×+@Øð
 .2×-BÑ-B×-HÑ-HÔ-JÔKÒ-J¡T Q�aœ˜a›’jÑ-Jˆ
ÑKØ"×1Ñ1°^Ð4DÔD‰NˆHð 9=¿¹×8LÑ8LÔ8Nöâ8NÑ4Ñ+�V 7Ø‘?ó 1�˜wÓ0Ù8NôˆGö ˜t v›~Ü—’ÃxÓQUÐVÔWÙÛ29Ñ.�˜gÛ")�JÜ% j´$×7Ñ7Ø&0 \˜
Û",˜Ø+1×+DÑ+DÓ+F×+LÑ+LÖ+N™K˜EØ-7×-BÑ-BÀ5È"Ó-M˜NØ*×1Ñ1ô 2Ù+/ó2ö ó ,Oó #-ó #*ó 3:ñ Eð* /9×.>Ñ.>Ô.@ô
Ú.@™{˜uÄCÈÃIÐQRÁN‹NˆE˜‘7ŠNÑ.@ð 	ñ 
ð 1;×0@Ñ0@Ô0BÔTÒ0B¡ ÄcÈ$ÃiÐRSÁm“�’Ñ0BˆÑTÞžeØð 59·N±N×4HÑ4HÔ4Jö
â4JÑ0Ñ'�˜wØ˜&Ñ ó -ˆV˜7Ð# WÒ,Ù4Jô
ˆŒð
 —m‘mˆØˆŒØ×Ñ˜4×.Ñ.°¸×8PÑ8PÔQÞØ ×,Ñ,¨XÔ7IÓJˆMØ$*ˆMÔ!ÞØ×+Ñ+¨HÔ6KÓLˆLØ&+ˆLÔ#Ø×ÑÔØ�‰×Ñ˜[Õ)ùóU Lùõùó&
ùó Uùõ
s6   ÁKÂK"Â#K"Å?K*Æ	K*Æ7K0ÇK0ÈK6
È	K6
c                 ó0  • U R                   (       d  g U R                  R                  S5      nU(       dQ  [        S5      =oR                  S'   UR	                  SU R                  5        SUl        SUl        S=Ul        Ul        U R                   Ul	        g )NrL   s6                                                         g      ð?iõ<_l   ùe )
rw   r4   r¯   r   Ú	decompileÚtableVersionÚmagicNumberÚcreatedÚmodifiedÚfontRevision©rˆ   r¨   s     r6   rš   ÚBuilder.build_headW  sw   € Ø×!×!ØØ—	‘	—‘˜fÓ%ˆÞÜ(0°Ó(8Ð8ˆE—I‘I˜fÑ%Ø�O‰O˜J¨¯	©	Ô2Ø!$ˆEÔØ *ˆEÔØ-7Ð7ˆEŒM˜EœNØ!×/Ñ/ˆÕr8   c                 ó  • U R                   (       d  g U R                  R                  S5      nU(       d<  [        S5      =oR                  S'   UR	                  SU R                  5        SUl        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul	        g g )NrM   ó$                                       é   ÚcaretoffsetÚascenderÚ	descenderÚlinegap)
rƒ   r4   r¯   r   rò   ró   ÚcaretOffsetÚascentÚdescentÚlineGaprø   s     r6   r›   ÚBuilder.build_hheac  sÇ   € Ø�z�zØØ—	‘	—‘˜fÓ%ˆÞÜ(0°Ó(8Ð8ˆE—I‘I˜fÑ%Ø�O‰O˜J¨¯	©	Ô2Ø!+ˆEÔØ˜DŸJ™JÓ&Ø $§
¡
¨=Ñ 9ˆEÔØ˜Ÿ™Ó#ØŸ:™: jÑ1ˆEŒLØ˜$Ÿ*™*Ó$Ø ŸJ™J {Ñ3ˆEŒMØ˜Ÿ
™
Ó"Ø ŸJ™J yÑ1ˆE�Mð #r8   c                 ó¾  • U R                   (       d  g U R                  R                  S5      nU(       d<  [        S5      =oR                  S'   UR	                  SU R                  5        SUl        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        g g )NrN   rû   i  ÚverttypoascenderÚverttypodescenderÚverttypolinegap)	r„   r4   r¯   r   rò   ró   r  r  r  rø   s     r6   rœ   ÚBuilder.build_vheat  s­   € Ø�z�zØØ—	‘	—‘˜fÓ%ˆÞÜ(0°Ó(8Ð8ˆE—I‘I˜fÑ%Ø�O‰O˜J¨¯	©	Ô2Ø!+ˆEÔØ §¡Ó+ØŸ:™:Ð&8Ñ9ˆEŒLØ $§*¡*Ó,Ø ŸJ™JÐ':Ñ;ˆEŒMØ §
¡
Ó*Ø ŸJ™JÐ'8Ñ9ˆE�Mð +r8   c                 ó�   • UR                    Vs/ s H  o"R                  PM     nn[        SS5       H  nXC;  d  M
  Us  $    g s  snf )Né   iÿ  )ÚnamesÚnameIDÚrange)rˆ   r¨   r:   ÚnameIDsÚuser_name_ids        r6   Úget_user_name_idÚBuilder.get_user_name_idƒ  s>   € à+0¯;ª;Ó7ª; 4—;”;©;ˆÐ7Ü! # uÖ-ˆLØÕ*Ø#Ò#ò .ùò 8s   �Ac                 óÈ  • S nUS:X  ai  [         R                  " 5       nU R                  u  Ul        Ul        Ul        Ul        XR                  ;   a  U R                  U   Ul        U$ SUl         U$ XR                  ;   aX  U R                  (       d   U$ XR                  ;   d   e[         R                  " 5       nSUl        U R                  U   Ul         U$ XR                  ;   aú  [         R                  " 5       nSUl        U R                   R#                  US4S5      Ul        U R                   R#                  US4S5      Ul        U R                   R#                  US4S5      Ul        U R*                  R#                  US5      Ul        U R                   R#                  US4S5      Ul        [1        U R2                  U   5      Ul        U R2                  U   Ul        U$ )NÚsizer   ÚFeatUILabelNameIDÚFeatUITooltipTextNameIDÚSampleTextNameIDÚParamUILabelNameID_0)r   ÚFeatureParamsSizerv   Ú
DesignSizeÚSubfamilyIDÚ
RangeStartÚRangeEndrp   ÚSubfamilyNameIDro   ÚFeatureParamsStylisticSetÚVersionÚUINameIDrq   ÚFeatureParamsCharacterVariantsÚFormatrr   r¯   r  r  r  rs   ÚNumNamedParametersÚFirstParamUILabelNameIDrà   ru   Ú	CharCountÚ	Character)rˆ   rC   Úparamss      r6   ÚbuildFeatureParamsÚBuilder.buildFeatureParamsŠ  sã  € ØˆØ�&‹=Ü×/Ò/Ó1ˆFð ×%Ñ%ñØÔ!ØÔ"ØÔ!Ø”à×,Ñ,Ó,Ø)-×)?Ñ)?ÀÑ)D�Ô&ð< ˆð9 *+�Õ&ð8 ˆð7 ×&Ñ&Ó&Ø×)×)àð0 ˆð- ×4Ñ4Ó4Ð4Ð4Ü!×;Ò;Ó=�Ø!"�”Ø"&×"8Ñ"8¸Ñ"=�•ð& ˆð% ×'Ñ'Ó'Ü×<Ò<Ó>ˆFØˆFŒMØ'+×'>Ñ'>×'BÑ'BØÐ)Ð*¨Aó(ˆFÔ$ð .2×-DÑ-D×-HÑ-HØÐ/Ð0°!ó.ˆFÔ*ð '+×&=Ñ&=×&AÑ&AØÐ(Ð)¨1ó'ˆFÔ#ð )-×(AÑ(A×(EÑ(EÀcÈ1Ó(MˆFÔ%Ø-1×-DÑ-D×-HÑ-HØÐ,Ð-¨qó.ˆFÔ*ô  # 4×#6Ñ#6°sÑ#;Ó<ˆFÔØ#×2Ñ2°3Ñ7ˆFÔØˆr8   c                 óä  • U R                   (       d  g U R                  R                  S5      nU(       d   [        S5      =oR                  S'   / Ul        U R                    Hò  nUu  p4pVn[        U[        5      (       dÁ  UnX€R                  ;   aO  X€R                  ;  a0  U R                  U5      U R                  U'   U R                  U   c   eU R                  U   nOaUS   U R                  ;   aN  X€R                  ;  a0  U R                  U5      U R                  U'   U R                  U   c   eU R                  U   nUR                  XsXEU5        Mô     UR                  R                  5         g )Nr:   r   )rx   r4   r¯   r   r  rR   Úintro   rp   r  rq   rr   ÚsetNameÚsort)	rˆ   r¨   r:   r  Ú
platformIDÚ	platEncIDÚlangIDÚstringrC   s	            r6   r�   ÚBuilder.build_nameµ  sH  € Ø�{�{ØØ—	‘	—‘˜fÓ%ˆÞÜ(0°Ó(8Ð8ˆE—I‘I˜fÑ%ØˆEŒKØ—K”KˆDØ<@Ñ9ˆF 	°6ô ˜f¤c×*Ñ*Ø�Ø×,Ñ,Ó,Ø×"8Ñ"8Ó8Ø6:×6KÑ6KÈEÓ6R˜×.Ñ.¨sÑ3Ø#×5Ñ5°cÑ:ÑFÐFÐFØ!×3Ñ3°CÑ8‘FØ˜‘V˜t×2Ñ2Ó2Ø×"9Ñ"9Ó9Ø7;×7LÑ7LÈUÓ7S˜×/Ñ/°Ñ4Ø#×6Ñ6°sÑ;ÑGÐGÐGØ!×4Ñ4°SÑ9�FØ�M‰M˜&¨*ÀÖHñ!  ð" 	�‰×ÑÕr8   c                 ól  • U R                   (       d  g U R                  R                  S5      nU(       d`  [        S5      =oR                  S'   S[        R
                  " [        S5      R                  5      -  nUR                  X R                  5        SnSU R                   ;   a  U R                   S   Ul	        SU R                   ;   ak  [        S5      R                  5       nU R                   S   u
  Ul        Ul        Ul        Ul        Ul        Ul        Ul        Ul        Ul        Ul        XAl        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        S	U R                   ;   a  U R                   S	   Ul        S
U R                   ;   a  U R                   S
   Ul        SU R                   ;   a#  [7        SU R                   S   -   S-   5      Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  U R                   S   Ul        SU R                   ;   a  UR?                  U R                   S   5        SU R                   ;   a/  U RA                  U R                   S   5      nUu  Ul!        Ul"        SnSU R                   ;   a  U R                   S   Ul#        SnSU R                   ;   a  U R                   S   Ul$        SnSU R                   ;   a  U R                   S   Ul%        SnSU R                   ;   a  U R                   S   Ul&        SnS n[O        X1RP                  5      Ul(        US:¼  a	  U" US5        US:¼  a	  U" US5        US:¼  a
  U" US5        g g )NrK   ó    r   ÚfstypeÚpanoseÚtypoascenderÚtypodescenderÚtypolinegapÚ	winascentÚ
windescentÚvendorz'''ÚweightclassÚ
widthclassÚunicoderangeÚcodepagerangerÚ   Úxheighté   Ú	capheightÚloweropsizeé   Úupperopsizec                 óR   • U H!  n[        X5      (       a  M  [        XS5        M#     g )Nr   )ÚhasattrÚsetattr)r¨   ÚattrsÚattrs      r6   Ú	checkattrÚ%Builder.build_OS_2.<locals>.checkattr  s!   € Û�Ü˜u×+Ó+Ü˜E¨Ö+ò r8   )ÚulCodePageRange1ÚulCodePageRange2)ÚsxHeightÚ
sCapHeightÚusDefaultCharÚusBreakCharrª   )ÚusLowerOpticalPointSizeÚusUpperOpticalPointSize))r‚   r4   r¯   r   r   Úcalcsizer   ÚOS2_format_0rò   ÚfsTypeÚPanoseÚbFamilyTypeÚbSerifStyleÚbWeightÚbProportionÚ	bContrastÚbStrokeVariationÚ	bArmStyleÚbLetterFormÚbMidlineÚbXHeightr8  ÚsTypoAscenderÚsTypoDescenderÚsTypoLineGapÚusWinAscentÚusWinDescentr   Ú	achVendIDÚusWeightClassÚusWidthClassÚsetUnicodeRangesÚbuild_codepages_rP  rQ  rR  rS  rV  rW  ÚmaxÚversion)rˆ   r¨   Údatarq  r8  ÚpagesrN  s          r6   rž   ÚBuilder.build_OS_2Ï  s+  € Ø�y�yØØ—	‘	—‘˜fÓ%ˆÞÜ(0°Ó(8Ð8ˆE—I‘I˜fÑ%Øœ7×+Ò+¬N¸6Ó,B×,OÑ,OÓPÑPˆDØ�O‰O˜D§)¡)Ô,ØˆØ�t—y‘yÓ ØŸ9™9 XÑ.ˆEŒLØ�t—y‘yÓ Ü# FÓ+×2Ñ2Ó4ˆFð —	‘	˜(Ñ#ñØÔ"ØÔ"Ø”ØÔ"ØÔ ØÔ'ØÔ ØÔ"Ø”Ø”à!ŒLØ˜TŸY™YÓ&Ø"&§)¡)¨NÑ";ˆEÔØ˜dŸi™iÓ'Ø#'§9¡9¨_Ñ#=ˆEÔ Ø˜DŸI™IÓ%Ø!%§¡¨=Ñ!9ˆEÔØ˜$Ÿ)™)Ó#Ø $§	¡	¨+Ñ 6ˆEÔØ˜4Ÿ9™9Ó$Ø!%§¡¨<Ñ!8ˆEÔØ�t—y‘yÓ Ü& u¨t¯y©y¸Ñ/BÑ'BÀUÑ'JÓKˆEŒOØ˜DŸI™IÓ%Ø"&§)¡)¨MÑ":ˆEÔØ˜4Ÿ9™9Ó$Ø!%§¡¨<Ñ!8ˆEÔØ˜TŸY™YÓ&Ø×"Ñ" 4§9¡9¨^Ñ#<Ô=Ø˜dŸi™iÓ'Ø×)Ñ)¨$¯)©)°OÑ*DÓEˆEØ=BÑ:ˆEÔ" EÔ$:ØˆGØ˜Ÿ	™	Ó!Ø!ŸY™Y yÑ1ˆEŒNØˆGØ˜$Ÿ)™)Ó#Ø#Ÿy™y¨Ñ5ˆEÔØˆGØ˜DŸI™IÓ%Ø,0¯I©I°mÑ,DˆEÔ)ØˆGØ˜DŸI™IÓ%Ø,0¯I©I°mÑ,DˆEÔ)ØˆGò	,ô
 ˜G§]¡]Ó3ˆŒà�a‹<Ù�eÐEÔFØ�a‹<ÙØðô	ð �a‹<Ù�eÐSÕTð r8   c                 óö   • S H!  nX0R                   ;   d  M  [        U S3U5      e   [        U[        5      (       a  XR                   S'   g [        U[        5      (       a  XR                   S'   g [        U5      e)N)ÚElidedFallbackNameÚElidedFallbackNameIDz is already set.rw  rv  )r…   r   rR   r-  rt   ÚAssertionError)rˆ   Úvaluer¼   Útokens       r6   ÚsetElidedFallbackNameÚBuilder.setElidedFallbackName#  sv   € ó DˆEØŸ
™
Õ"Ü%Ø�gÐ-Ð.Øóð ñ Dô �eœS×!Ñ!Ø16�J‰JÐ-Ò.Ü˜œt×$Ñ$Ø/4�J‰JÐ+Ò,ä  Ó'Ð'r8   c                 óv  • SU R                   ;  a  / U R                   S'   UR                  S U R                   S    5       ;   a  [        SUR                   S3U5      eUR                  S U R                   S    5       ;   a  [        SUR                   S3U5      eU R                   S   R	                  U5        g )NÚ
DesignAxesc              3   ó8   #   • U  H  oR                   v •  M     g 7frA   )rC   ©rB   Úrs     r6   rD   Ú(Builder.addDesignAxis.<locals>.<genexpr>6  s   é € ÐFÒ-E¨ŸežeÒ-EùrF   z$DesignAxis already defined for tag "z".c              3   ó8   #   • U  H  oR                   v •  M     g 7frA   )Ú	axisOrderr€  s     r6   rD   r‚  ;  s   é € Ð#RÒ9Q°A§K¦KÒ9QùrF   z+DesignAxis already defined for axis number rŽ   )r…   rC   r   r„  r»   )rˆ   Ú
designAxisr¼   s      r6   ÚaddDesignAxisÚBuilder.addDesignAxis3  s´   € Ø˜tŸz™zÓ)Ø')ˆD�J‰J�|Ñ$Ø�>‰>ÑF¨T¯Z©Z¸Ò-EÓFÓFÜ!Ø6°z·~±~Ð6FÀbÐIØóð ð ×ÑÑ#R¸¿¹ÀLÒ9QÓ#RÓRÜ!Ø=¸j×>RÑ>RÐ=SÐSTÐUØóð ð 	�
‰
�<Ñ ×'Ñ'¨
Õ3r8   c                 ó~  • SU R                   ;  a  / U R                   S'   U R                   S    HÙ  nUR                   Vs1 s H  oDR                  5       iM     snUR                   Vs1 s H  oDR                  5       iM     sn:X  d  M[  UR                   Vs1 s H  oDR                  5       iM     snUR                   Vs1 s H  oDR                  5       iM     sn:X  d  M³  UR                  UR                  :X  d  MÏ  [        SU5      e   U R                   S   R                  U5        g s  snf s  snf s  snf s  snf )NÚAxisValueRecordsz8An AxisValueRecord with these values is already defined.)r…   r  ÚasFeaÚ	locationsÚflagsr   r»   )rˆ   ÚaxisValueRecordr¼   Úrecord_Úns        r6   ÚaddAxisValueRecordÚBuilder.addAxisValueRecordB  sý   € Ø T§Z¡ZÓ/Ø-/ˆD�J‰JÐ)Ñ*à—z‘zÐ"4Ô5ˆGà$+§M¢MÓ2¢M˜q—‘–¡MÑ2Ø'6×'<Ò'<Ó=Ò'< !—G‘G–IÑ'<Ñ=õ>à(/×(9Ò(9Ó:Ò(9 1—W‘W–YÑ(9Ñ:Ø'6×'@Ò'@ÓAÒ'@ !—G‘G–IÑ'@ÑAõBà—M‘M _×%:Ñ%:Õ:ä%ØNØóð ñ 6ð 	�
‰
Ð%Ñ&×-Ñ-¨oÕ>ùò 3ùÚ=ùÚ:ùÚAs   Á D+Á)D0ÂD5ÃD:c           	      ó  • U R                   (       d  g U R                   R                  S5      nU(       d  [        SS 5      eU R                   R                  S5      n0 n/ nU H  n/ X5R                  '   M     UGby  U GHr  n0 nUR                  S:”  a  UR                  US'   [        UR                  5      S:X  aÓ  UR                  S   nUR                  n	[        U	5      S:X  a!  UR                  U	S   UR                  S.5        [        U	5      S:X  a%  UR                  U	S   U	S   UR                  S	.5        [        U	5      S
:X  a%  U	u  p«nUR                  U
UUUR                  S.5        X8R                     R                  U5        GM  UR                  UR                   Vs0 s H  oÝR                  UR                  S   _M     snUR                  S.5        UR                  U5        GMu     U Vs/ s H4  nUR                  UR                  UR                  X>R                     S.PM6     nnU R                  R                  S5      nU(       d!  [        S5      =nU R                  S'   / Ul	        SU R                   ;   a8  U R                   S   nUR                  U5      nU(       d  [        SU S3S 5      eOSU R                   ;   a  U R                   S   n[        R                   " U R                  UUWS9  g s  snf s  snf )Nr~  zDesignAxes not definedr‰  r   rŒ  rÚ   )ry  r:   rD  )ry  ÚlinkedValuer:   é   )ÚnominalValueÚrangeMinValueÚrangeMaxValuer:   )r¼   r:   )ÚorderingrC   r:   Úvaluesr:   rw  zElidedFallbackNameID z; points to a nameID that does not exist in the "name" tablerv  )r‹  ÚelidedFallbackName)r…   r¯   r   rC   rŒ  rà   r‹  r™  Úupdater  r»   r„  r4   r   ÚgetDebugNameÚotlÚbuildStatTable)rˆ   rX   ÚaxisValueRecordsÚ
axisValuesÚformat4_locationsrC   ÚavrÚ
valuesDictr¼   r™  ÚnominalÚminValÚmaxValÚirä   Ú
designAxesÚ	nameTabler  r:   s                      r6   rŸ   ÚBuilder.build_STATT  sÒ  € Ø�z�zØà�z‰z�~‰~˜lÓ+ˆÞÜ!Ð":¸DÓAÐAØŸ:™:Ÿ>™>Ð*<Ó=ÐØˆ
ØÐÛˆCØ"$ˆJ—w‘wÓñ àÒ'Ü'�Ø�
Ø—9‘9˜q“=Ø*-¯)©)�J˜wÑ'Ü�s—}‘}Ó%¨Ó*Ø"Ÿ}™}¨QÑ/�HØ%Ÿ_™_�FÜ˜6“{ aÓ'Ø"×)Ñ)°F¸1±IÀsÇyÁyÑ*QÔRÜ˜6“{ aÓ'Ø"×)Ñ)à)/°©Ø/5°a©yØ(+¯	©	ñôô ˜6“{ aÓ'Ø28Ñ/˜¨Ø"×)Ñ)à07Ø17Ø17Ø(+¯	©	ñ	ôð Ÿ|™|Ñ,×3Ñ3°J×?à×%Ñ%àEHÇ]Â]Ó(SÂ]À¯©°·±¸±Ò);Á]Ñ(SØ$'§I¡Iñôð &×,Ñ,¨Z×8ñG (ñX ó
ò �ð ŸK™KØ—u‘uØŸ™Ø$§U¡UÑ+ô	ñ ð 	ð 
ð —I‘I—M‘M &Ó)ˆ	ÞÜ,4°VÓ,<Ð<ˆI˜Ÿ	™	 &Ñ)Ø ˆIŒOà! T§Z¡ZÓ/Ø—Z‘ZÐ 6Ñ7ˆFØ×)Ñ)¨&Ó1ˆDÞÜ%Ø+¨F¨8ð 4#ð #ð ó	ð ð ð " T§Z¡ZÓ/Ø—Z‘ZÐ 4Ñ5ˆFä×ÒØ�I‰IØØ'Ø%ó		
ùòE )Tùò
s   Æ'#L
Ç8;Lc                 óÜ  • 0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1.EnU Vs/ s H  o3U;   d  M
  X#   PM     nn/ n[        S5       HO  nUR                  S25        [        US3-  US-   S3-  5       H"  nXd;   a  X==   S4-  ss'   M  X==   S5-  ss'   M$     MQ     U Vs/ s H  n[        US S S62   5      PM     sn$ s  snf s  snf )7Niä  r   iâ  rÚ   iã  rD  iå  r”  iæ  é   iç  rG  iè  é   ié  é   iê  é   ij  é   i¤  é   i¨  é   iµ  é   i¶  é   iQ  é   ie  é0   ib  é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   )ia  i`  i_  i^  i]  i\  iY  iW  iT  i  iá  iÄ  iR  iµ  Ú é    Ú1Ú0éÿÿÿÿ)r  r»   r   )rˆ   rs  Ú
pages2bitsÚpÚbitsr§  Újs          r6   ro  ÚBuilder.build_codepages_©  s§  € ð 
Ø�!ð 
à�!ð 
ð �!ð 
ð �!ð	 
ð
 �!ð 
ð �!ð 
ð �!ð 
ð �!ð 
ð �!ð 
ð �ð 
ð �ð 
ð �ð 
ð �ð 
ð �ð 
ð �"ð 
ð  �ð! 
ð" �ð# 
ð$ ØØØØØØØØØØØØØò? 
ˆ
ñB (-Ó@¢u !°Z±“�
”¡uˆÐ@ØˆÜ�q–ˆAØ�L‰L˜ÔÜ˜1˜r™6 A¨¡E¨R¡<Ö0�Ø“9Ø“H ‘O•Hà“H ‘O•Hó	 1ñ ñ .3Ó3ªU¨”
˜1™T˜r˜T™7Ö#©UÑ3Ð3ùò Aùò 4s   Á	C$ÁC$ÃC)c                 ó&  • U R                   (       d  U R                  (       d  g [        R                  " 5       nSUl        U R                  U R                   5      Ul        U R                  U R                  5      Ul        [        S5      nXl	        U$ )Nrü   rG   )
ry   rz   r   rG   r!  ÚbuildBASEAxisÚ	HorizAxisÚVertAxisr   r¨   )rˆ   rµ   r¾   s      r6   r¬   ÚBuilder.buildBASEÖ  sl   € Ø×$×$¨T×-A×-AØÜ�}Š}‹ˆØ!ˆŒØ×+Ñ+¨D×,AÑ,AÓBˆŒØ×*Ñ*¨4×+?Ñ+?Ó@ˆŒä˜&Ó!ˆØŒØˆr8   c                 óJ   • [         R                  " 5       nSUl        Xl        U$ ©NrÚ   )r   Ú	BaseCoordr$  Ú
Coordinate)rˆ   ÚcÚcoords      r6   ÚbuildBASECoordÚBuilder.buildBASECoordâ  s"   € Ü×"Ò"Ó$ˆØˆŒØÔØˆr8   c                 ó<  • U(       d  g Uu  p#n[         R                  " 5       n[         R                  " 5       Ul        X!R                  l        [	        U5      UR                  l        [         R                  " 5       Ul        / UR                  l        [	        U5      UR                  l        [        U5       GH[  nU Vs/ s H  ofS   US   :X  d  M  USS  PM     nn[         R                  " 5       nUS   Ul
        [         R                  " 5       Ul        [         R                  " 5       UR                  l        UR                  US   5      UR                  R                  l        / UR                  R                  l        [	        US   5      UR                  R                  l        / UR                  l        US    HA  nUR                  R                  R                  R%                  U R'                  U5      5        MC     [        U5       H¬  u  pšn[         R(                  " 5       nU R'                  U
5      Ul        U R'                  U5      Ul        SUl        U	S:X  a  XÆR                  l        Mf  [         R"                  " 5       nX�l        XÍl        UR                  R"                  R%                  U5        M®     [	        UR                  R"                  5      UR                  l        UR                  R                  R%                  U5        GM^     U$ s  snf )Nr   rÚ   rD  Údflt)r   ÚAxisÚBaseTagListÚBaselineTagrà   ÚBaseTagCountÚBaseScriptListÚBaseScriptRecordÚBaseScriptCountr—   ÚBaseScriptTagÚ
BaseScriptÚ
BaseValuesÚindexÚDefaultIndexr×  ÚBaseCoordCountÚBaseLangSysRecordr»   rÛ  ÚMinMaxÚMinCoordÚMaxCoordÚFeatMinMaxCountÚDefaultMinMaxÚBaseLangSysTagÚBaseLangSysCount)rˆ   ÚaxisÚbasesÚscriptsÚminmaxrÅ   ÚrecordÚminmax_for_scriptrÙ  ÚlanguageÚ	min_coordÚ	max_coordÚminmax_recordÚlang_records                 r6   rÑ  ÚBuilder.buildBASEAxisè  s}  € ÞØØ!%Ñˆ˜Ü�}Š}‹ˆÜ#×/Ò/Ó1ˆÔØ',×ÑÔ$Ü(+¨E«
ˆ×ÑÔ%Ü&×5Ò5Ó7ˆÔØ/1ˆ×ÑÔ,Ü.1°'«lˆ×ÑÔ+Ü˜W—oˆFá)/ó!Ú)/˜v¸!±9ÀÀqÁ	Ñ3I“
��q�r“
©ð ð !ô ×.Ò.Ó0ˆFØ#)¨!¡9ˆFÔ Ü (× 3Ò 3Ó 5ˆFÔÜ+3×+>Ò+>Ó+@ˆF×ÑÔ(Ø8=¿¹ÀFÈ1ÁIÓ8NˆF×Ñ×(Ñ(Ô5Ø57ˆF×Ñ×(Ñ(Ô2Ü:=¸fÀQ¹i».ˆF×Ñ×(Ñ(Ô7Ø24ˆF×ÑÔ/à˜A”Y�Ø×!Ñ!×,Ñ,×6Ñ6×=Ñ=¸d×>QÑ>QÐRSÓ>TÖUñ ä28Ð9JÖ2KÑ.� YÜ (§¢Ó 1�Ø)-×)<Ñ)<¸YÓ)G�Ô&Ø)-×)<Ñ)<¸YÓ)G�Ô&Ø01�Ô-Ø˜vÓ%Ø6C×%Ñ%Ö3ä"*×"<Ò"<Ó">�KØ19Ô.Ø)6Ô&Ø×%Ñ%×7Ñ7×>Ñ>¸{ÖKñ 3Lô 25Ø×!Ñ!×3Ñ3ó2ˆF×ÑÔ.ð ×Ñ×0Ñ0×7Ñ7¸×?ñ= &ð> ˆùò=!s   Â?LÃ	Lc                 óð  • [         R                  " 5       nU R                  5       Ul        [        R
                  " U R                  U R                  5      Ul        [        R                  " U R                  U R                  U R                  5      Ul        U R                  5       Ul        U R                  5       Ul        UR                   (       a  SOSUl        U R$                  (       a¡  U R$                  R'                  5       nU(       af  SUl        X!l        UR+                  5       nUR-                  U5        SU R.                  ;   a(  U R.                  S   R0                  R-                  U5        U R2                  R5                  5         [7        UR                  UR                  UR                  UR                  UR                   45      (       d  [9        US5      (       a  [;        S5      nXl        U$ g )Ni  rü   i  rI   ÚVarStorerH   )r   rH   ÚbuildGDEFGlyphClassDef_ÚGlyphClassDefr�  ÚbuildAttachListr{   rV   Ú
AttachListÚbuildLigCaretListr|   r}   ÚLigCaretListÚbuildGDEFMarkAttachClassDef_ÚMarkAttachClassDefÚbuildGDEFMarkGlyphSetsDef_ÚMarkGlyphSetsDefr!  rW   Úfinishr  ÚoptimizeÚremap_device_varidxesr4   r¨   r‡   Úclearr©   rJ  r   )rˆ   r´   ÚstoreÚ
varidx_mapr¾   s        r6   r«   ÚBuilder.buildGDEF  s  € Ü�}Š}‹ˆØ!×9Ñ9Ó;ˆÔÜ×-Ò-¨d×.@Ñ.@À$Ç-Á-ÓPˆŒÜ×1Ò1Ø× Ñ  $×"6Ñ"6¸¿¹ó
ˆÔð #'×"CÑ"CÓ"EˆÔØ $× ?Ñ ?Ó AˆÔØ%)×%:×%:‘zÀ
ˆŒØ××Ø×(Ñ(×/Ñ/Ó1ˆEÞØ)�”Ø %”Ø"Ÿ^™^Ó-�
à×*Ñ*¨:Ô6Ø˜TŸY™YÓ&Ø—I‘I˜fÑ%×+Ñ+×AÑAÀ*ÔMØ×Ñ×"Ñ"Ô$Üà×"Ñ"Ø—‘Ø×!Ñ!Ø×'Ñ'Ø×%Ñ%ð÷
ñ 
ô �T˜:×&Ñ&Ü˜fÓ%ˆFØŒLØˆMàr8   c                 óþ  • U R                   (       a4  U R                   R                  5        VVVs0 s H
  u  nu  p#X_M     nnnnO�0 nU R                   H"  nUR                  UR	                  5       5        M$     U R
                  R                  R                  5        H1  nUR                   H  nUR                  5        H  nSXH'   M	     M      M3     U(       a  [        R                  " 5       n	XIl        U	$ g s  snnnf )Nr”  )r~   rÛ   rf   r›  ÚinferGlyphClassesrS   ÚmarkClassesr™  ÚdefinitionsÚglyphSetr   r  Ú	classDefs)
rˆ   rÖ   rÙ  Ú_ÚclassesrÃ   Ú	markClassÚmarkClassDefrè   r¾   s
             r6   r  ÚBuilder.buildGDEFGlyphClassDef_8  sÑ   € Ø××Ø/3×/CÑ/C×/IÑ/IÔ/KÕLÒ/K¡ ¡F Q�q’tÑ/KˆGÒLˆGàˆGØŸ-œ-�Ø—‘˜v×7Ñ7Ó9Ö:ñ (à!Ÿ^™^×7Ñ7×>Ñ>Ö@�	Ø$-×$9Ô$9�LØ!-×!6Ñ!6Ö!8˜Ø)*˜›ó "9ó %:ñ Aö Ü×+Ò+Ó-ˆFØ&ÔØˆMàùô Ms   °C8c                 óÀ   • U R                   R                  5        VVVs0 s H
  u  nu  p#X_M     nnnnU(       d  g [        R                  " 5       nXEl        U$ s  snnnf rA   )r   rÛ   r   r	  r  )rˆ   rÖ   rÙ  r  r  r¾   s         r6   r  Ú$Builder.buildGDEFMarkAttachClassDef_J  sT   € Ø+/×+;Ñ+;×+AÑ+AÔ+CÕDÒ+C™i˜a¡ !�Q’TÑ+Cˆ	ÒDÞØÜ×,Ò,Ó.ˆØ$ÔØˆùô Es   ŸAc                 óÀ   • / n[        U R                  R                  5       S S9 H  u  p#UR                  U5        M     [        R
                  " XR                  5      $ )Nc                 ó   • U S   $ rÖ  rÕ   )Úitems    r6   Ú<lambda>Ú4Builder.buildGDEFMarkGlyphSetsDef_.<locals>.<lambda>U  s   € ¸4Àº7r8   ©rÇ   )r—   r�   rÛ   r»   r�  ÚbuildMarkGlyphSetsDefrV   )rˆ   ÚsetsÚglyphsÚid_s       r6   r
  Ú"Builder.buildGDEFMarkGlyphSetsDef_R  sR   € ØˆÜ!Ø× Ñ ×&Ñ&Ó(Ñ.Bô
‰KˆFð �K‰K˜Öñ
ô ×(Ò(¨¯}©}Ó=Ð=r8   c                 óÐ   • SU R                   ;  a,  [        S5      U R                   S'   0 U R                   S   l        U R                  U R                   S   R                  [        '   g )NÚDebg)r4   r   rr  rg   r
   ©rˆ   s    r6   r°   ÚBuilder.buildDebgZ  sR   € Ø˜Ÿ™Ó"Ü (¨Ó 0ˆD�I‰I�fÑØ%'ˆD�I‰I�fÑÔ"Ø8<×8MÑ8Mˆ�	‰	�&Ñ×ÑÔ4Ò5r8   c                 óL  • US;   d   U5       eU R                    H
  nS Ul        M     / nU R                    H»  nUR                  U:w  a  M  U R                  U5      nUR	                  US LS9nUc  [        SUR                  5      eU He  n[        U5      Ul        [        [        UR                  5      US S9U R                  U   [        UR                  5      '   UR                  U5        Mg     M½     / nU H#  n UR                  UR                  5       5        M%     U$ ! [         a%  n[        [        U5      UR                  5      UeS nAf[         aJ  nU R                  U   [        UR                  5         R                  n	[        [        U5      U	5      UeS nAff = f)Nr�   )Úis_named_lookuprË   )r¼   r:   rå   )rf   Úlookup_indexr¨   Úget_lookup_name_Úpromote_lookup_typer   r¼   rà   r	   Ústrrg   r»   r3   r%   Ú	Exception)
rˆ   rC   rÃ   ræ   r:   ÚresolvedÚlÚ	otLookupsÚer¼   s
             r6   ÚbuildLookups_ÚBuilder.buildLookups_`  s�  € ØÐ&Ó&Ð+¨Ó+Ð&Ø—m”mˆFØ"&ˆFÖñ $àˆØ—m”mˆFØ�|‰|˜sÓ"ÙØ×(Ñ(¨Ó0ˆDØ×1Ñ1À$ÈdÐBRÐ1ÐSˆHØÑÜ%ð4à—O‘Oóð ó
 �Ü&)¨'£l�Ô#ÜGVÜ  §¡Ó1ØØ ñH�×%Ñ% cÑ*¬3¨v×/BÑ/BÓ+CÑDð
 —‘˜qÖ!ó ñ $ð& ˆ	ÛˆAð?Ø× Ñ  §¡£Ö+ñ ð Ðøô $ó AÜ%¤c¨!£f¨a¯j©jÓ9¸qÐ@ûÜó ?Ø×0Ñ0°Ñ5´c¸!¿.¹.Ó6IÑJ×SÑS�Ü%¤c¨!£f¨hÓ7¸QÐ>ûð?ús%   Ã=D"Ä"
F#Ä, EÅF#ÅAFÆF#c                 ój  • [        [        US 5      " 5       nSUl        [        R                  " 5       Ul        / UR                  l        [        R
                  " 5       Ul        / UR
                  l        [        R                  " 5       Ul        U R                  U5      UR                  l	        0 n0 n0 nS n[        U R                  R                  5       US9 GH  u  pxUu  pšn[        [        R                  S U 5       5      5      n[!        U5      nUS:H  =(       a    US:H  nU R#                  X±5      n[%        U5      S:X  a  U(       d	  U(       d  M|  U HE  n U R&                  U   [)        U5         R+                  US9U R&                  U   [)        U5      '   MG     X½4nUR3                  U5      nUcÓ  [%        UR
                  R                  5      n[        R                  " 5       nUUl        [        R6                  " 5       Ul        U R9                  U5      UR6                  l        [=        U5      UR6                  l        [%        U5      UR6                  l         UR
                  R                  RC                  U5        UUU'   URE                  U	0 5      RE                  U
/ 5      RC                  U5        U RF                  R3                  Xš45      U:X  d  GM  UXIU
4'   GM     [        UR                  5       5       GHõ  u  n	n[        R                  " 5       nU	Ul$        [        RJ                  " 5       Ul%        S URJ                  l&        / URJ                  l'        [        UR                  5       5       GH%  u  p£[        RN                  " 5       n[        RP                  " 5       Ul(        S URP                  l)        UR3                  Xš45      nUc  S
URP                  l*        OUURP                  l*        U Vs/ s H  nUU:w  d  M  UPM     snURP                  l+        [%        URP                  RV                  5      URP                  l,        U
S:X  a  URP                  URJ                  l&        Mù  U
Ul-        URJ                  RN                  RC                  U5        GM(     [%        URJ                  RN                  5      URJ                  l.        UR                  R                  RC                  U5        GMø     [%        UR                  R                  5      UR                  l/        [%        UR
                  R                  5      UR
                  l,        [%        UR                  R                  5      UR                  l         U$ ! [,         a    [.        R0                  " S	5         GMU  f = fs  snf )Nrü   c                 ó8   • U S   S   U S   S   U S   S   U S   4$ )Nr   rD  rÚ   rÕ   )Úfs    r6   r#  Ú#Builder.makeTable.<locals>.<lambda>”  s)   €  A a¡D¨¡G¨Q¨q©T°!©W°a¸±d¸1±g¸qÀ¹tÑ#Dr8   r%  c              3   óV   #   • U  H  oR                   c  M  UR                   v •  M!     g 7frA   )r1  )rB   r7  s     r6   rD   Ú$Builder.makeTable.<locals>.<genexpr>ž  s   é € ð Ú,3 q·~±~“N�A—N–NªGùs   ‚)–)rI   r  r   )rå   zWfeaLib.Builder subclass needs upgrading to stash debug information. See fonttools#2065.iÿÿ  rÞ  )0Úgetattrr   r!  r¢   ÚScriptRecordr¤   ÚFeatureRecordr¦   r:  ÚLookupr—   rh   rÛ   ÚtupleÚdictÚfromkeysr•   Úany_feature_variationsrà   rg   r4  Ú_replaceÚKeyErrorrÜ   rÝ   r¯   Ú
FeatureTagÚFeaturer*  ÚFeatureParamsrt   ÚLookupListIndexr§   r»   rÂ   ri   Ú	ScriptTagÚScriptÚDefaultLangSysÚLangSysRecordÚLangSysÚLookupOrderÚReqFeatureIndexÚFeatureIndexr¥   Ú
LangSysTagÚLangSysCountr£   )rˆ   rC   r¨   Úfeature_indicesÚrequired_feature_indicesrö  ÚsortFeatureTagrÇ   ræ   rÅ   rÆ   Úfeature_tagÚlookup_indicesÚ
lookup_keyÚsize_featureÚforce_featureÚixÚfeature_keyÚfeature_indexÚfrecÚlang_featuresÚsrecÚlangrecÚreq_feature_indexr§  s                            r6   r    ÚBuilder.makeTableƒ  s�  € Üœ # tÔ,Ó.ˆØ"ˆŒÜ#×.Ò.Ó0ˆÔØ(*ˆ×ÑÔ%Ü$×0Ò0Ó2ˆÔØ*,ˆ×ÑÔ'Ü#×.Ò.Ó0ˆÔØ"&×"4Ñ"4°SÓ"9ˆ×ÑÔð ˆØ#%Ð Øˆñ EˆÜ" 4§>¡>×#7Ñ#7Ó#9¸~ÕN‰LˆCØ(+Ñ%ˆF˜+ô #Ü—‘ñ Ù,3óó óˆNô # >Ó2ˆJà &™=×B¨[¸FÑ-BˆLØ ×7Ñ7¸ÓIˆMÜ�>Ó" aÓ'¶Æ]Ùã$�ðØ:>×:OÑ:OÐPSÑ:TÜ˜B›ñ;ç‘h s�hÐ+ð ×)Ñ)¨#Ñ.¬s°2«wÓ7ñ %ð 'Ð3ˆKØ+×/Ñ/°Ó<ˆMØÑ$Ü # E×$5Ñ$5×$CÑ$CÓ D�Ü×-Ò-Ó/�Ø"-�”Ü'×/Ò/Ó1�”Ø-1×-DÑ-DÀ[Ó-Q�—‘Ô*Ü/3°NÓ/C�—‘Ô,Ü+.¨~Ó+>�—‘Ô(Ø×!Ñ!×/Ñ/×6Ñ6°tÔ<Ø/<� Ñ,Ø×Ñ˜v rÓ*×5Ñ5°d¸BÓ?×FÑFÀ}ÔUØ×&Ñ&×*Ñ*¨F¨>Ó:¸kÖIØ;HÐ(°$¨Ô8ñc Oôh &,¨G¯M©M«O×%<Ñ!ˆF�MÜ×(Ò(Ó*ˆDØ#ˆDŒNÜ"Ÿ/š/Ó+ˆDŒKØ)-ˆD�K‰KÔ&Ø(*ˆD�K‰KÔ%Ü)/°×0CÑ0CÓ0E×)FÑ%�Ü"×0Ò0Ó2�Ü"*×"2Ò"2Ó"4�”Ø.2�—‘Ô+à$<×$@Ñ$@À&ÀÓ$PÐ!Ø$Ñ,Ø6<�G—O‘OÕ3à6G�G—O‘OÔ3ñ  /ó0Ú.˜!°!Ð7HÑ2H—A™ñ0�—‘Ô,ô 03°7·?±?×3OÑ3OÓ/P�—‘Ô,à˜6“>Ø18·±�D—K‘KÖ.à)-�GÔ&Ø—K‘K×-Ñ-×4Ñ4°W×=ñ) *Gô* (+¨4¯;©;×+DÑ+DÓ'EˆD�K‰KÔ$Ø×Ñ×)Ñ)×0Ñ0°×6ñ9 &=ô< (+¨5×+;Ñ+;×+HÑ+HÓ'Iˆ×ÑÔ$Ü),¨U×->Ñ->×-LÑ-LÓ)Mˆ×ÑÔ&Ü'*¨5×+;Ñ+;×+BÑ+BÓ'Cˆ×ÑÔ$Øˆøôq  ó Ü—M’MðG÷ð ðüòP0s   ÅAVÏ<
V0Ð
V0Ö V-Ö,V-c                 óÜ  • 0 nSnU R                   R                  5        H’  u  u    pVn/ X6'   UR                  5        Hq  u  p‰U R                  U   n
/ nU	 HA  nUR                  U:w  a  M  UR                  c   eUR                  UR                  5        SnMC     X6   R                  X«45        Ms     M”     U(       a1  UR                  5        H  u  pm[        U R                  XU5        M     g g )NFT)rj   rÛ   r†   r¨   r1  r»   r)   r4   )rˆ   r¨   Ú	table_tagÚfeature_varsÚhas_any_variationsr  r]  Ú
variationsÚconditionsetÚbuildersÚraw_conditionsetÚindicesÚbÚconditions_and_lookupss                 r6   r¡   ÚBuilder.makeFeatureVariationsì  sï   € ØˆØ"Ðà/3×/GÑ/G×/MÑ/MÖ/OÑ+ÑˆQ� Ø(*ˆLÑ%Ø*4×*:Ñ*:Ö*<Ñ&�Ø#'×#6Ñ#6°|Ñ#DÐ Ø�Û!�AØ—w‘w )Ó+Ù ØŸ>™>Ñ5Ð5Ð5Ø—N‘N 1§>¡>Ô2Ø)-Ò&ñ "ð Ñ)×0Ñ0Ð2BÐ1LÖMó +=ñ 0Pö Ø7C×7IÑ7IÖ7KÑ3�Ü'Ø—I‘I˜u¸köò 8Lð r8   c                 óÎ   ^• U R                   R                  5        HF  u  u    p4nXA:w  a  M  UR                  5        H"  u  pg[        U4S jU 5       5      (       d  M!      g   MH     g)Nc              3   ó@   >#   • U  H  oR                   T:H  v •  M     g 7frA   )r¨   )rB   rt  rl  s     €r6   rD   Ú1Builder.any_feature_variations.<locals>.<genexpr>  s   øé € Ð>²X°—w‘w )Ö+²Xùr’   TF)rj   rÛ   r©   )rˆ   r]  rl  r  rå   ro  rp  rq  s     `     r6   rI  ÚBuilder.any_feature_variations  s^   ø€ Ø+/×+CÑ+C×+IÑ+IÖ+KÑ'‰OˆQ�˜ZØÓ%ÙØ*4×*:Ñ*:Ö*<Ñ&�ÜÔ>±XÓ>×>Ó>Úó +=ñ ,Lð r8   c                 ó~   • U R                   R                  5        VVs0 s H  u  p#X2_M	     nnnX;   a  XA   $ g s  snnf rA   )rb   rÛ   )rˆ   rÃ   ÚkÚvÚrevs        r6   r2  ÚBuilder.get_lookup_name_  s@   € Ø $× 3Ñ 3× 9Ñ 9Ô ;Ô<Ò ;™˜ˆqŠtÑ ;ˆÑ<Ø‹=Ø‘;ÐØùó =s   ž9c                 óh  • US:X  a#  US:X  a  U R                   (       a  [        SU5      eUS:X  a  U R                  (       a  [        SU5      eOSU l        X#4U R                   ;   a1  [        SUR                  5       < SUR                  5       < S3U5      eU R                   R	                  X#45        g )	NÚDFLTrÞ  z_If "languagesystem DFLT dflt" is present, it must be the first of the languagesystem statementszRlanguagesystems using the "DFLT" script tag must precede all other languagesystemsTz"languagesystem Ú z" has already been specified)r[   r   ra   ÚstripÚadd)rˆ   r¼   rÅ   rú  s       r6   Úadd_language_systemÚBuilder.add_language_system  s¶   € à�VÓ ¨FÓ 2°t×7U×7UÜ!ð=àóð ð
 �VÓØ×)×)Ü%ð8àóð ð *ð *.ˆDÔ&ØÐ ×!?Ñ!?Ó?Ý!à—<‘<–> 8§>¡>Ö#3ð5àóð ð
 	×&Ñ&×*Ñ*¨FÐ+=Õ>r8   c                 óf   • U R                   (       a  [        U R                   5      $ [        S15      $ )N)r�  rÞ  )r[   r•   r-  s    r6   Úget_default_language_systems_Ú%Builder.get_default_language_systems_+  s-   € ð ×)×)Ü˜T×;Ñ;Ó<Ð<äÐ.Ð/Ó0Ð0r8   c                 óÖ   • U(       a  US:w  a  [        SU5      eU R                  5       U l        SU l        S U l        X l        SU l        S U l        X0l        US:X  a  Xl	        X0l
        g g )NrÓ   zL'useExtension' keyword for feature blocks is allowed only for 'aalt' featurer�  r   )r   rˆ  r`   r\   rc   re   r]   r^   r_   rl   rn   ©rˆ   r¼   r:   Úuse_extensions       r6   rá   ÚBuilder.start_feature6  st   € Þ˜T V›^Ü!Ø^Øóð ð !%× BÑ BÓ DˆÔØˆŒØˆÔØ!%ÔØˆÔØ)-ˆÔ&Ø+ÔØ�6‹>Ø"*ÔØ'4Õ$ð r8   c                 óv   • U R                   c   eS U l         S U l        S U l        SU l        S U l        SU l        g )Nr   F)re   r`   rc   r]   r^   r_   r-  s    r6   rã   ÚBuilder.end_featureG  sD   € Ø×%Ñ%Ñ1Ð1Ð1Ø!%ˆÔØ $ˆÔØˆÔØˆÔØ)-ˆÔ&Ø#ˆÕr8   c                 óô   • X R                   ;   a  [        SU-  U5      eU R                  S:X  a  [        SU5      eX l        S U R                   U'   S U l        X0l        U R                  c  SU l        S U l        g g )Nz$Lookup "%s" has already been definedrÓ   zpLookup blocks cannot be placed inside 'aalt' features; move it out, and then refer to it with a lookup statementr   )rb   r   re   rd   rc   r_   r]   r^   r‹  s       r6   Ústart_lookup_blockÚBuilder.start_lookup_blockP  s’   € Ø×&Ñ&Ó&Ü!Ø6¸Ñ=¸xóð ð ×!Ñ! VÓ+Ü!ðLàóð ð
 !%ÔØ$(ˆ×Ñ˜DÑ!ØˆÔØ+ÔØ×!Ñ!Ñ)Ø ˆDÔØ-1ˆDÕ*ð *r8   c                 ó„   • U R                   c   eS U l         S U l        SU l        U R                  c  SU l        S U l        g g )NFr   )rd   rc   r_   re   r]   r^   r-  s    r6   Úend_lookup_blockÚBuilder.end_lookup_blockc  sM   € Ø×$Ñ$Ñ0Ð0Ð0Ø $ˆÔØˆÔØ#ˆÔØ×!Ñ!Ñ)Ø ˆDÔØ-1ˆDÕ*ð *r8   c                 óš   • XR                   ;   d   U5       eS U l        U R                   U   nUb  U R                  X R                  5        g g rA   )rb   rc   rÈ   re   )rˆ   Úlookup_namerÃ   s      r6   Úadd_lookup_callÚBuilder.add_lookup_calll  sP   € Ø×1Ñ1Ó1Ð>°;Ó>Ð1ØˆÔØ×$Ñ$ [Ñ1ˆØÑØ×'Ñ'¨×0FÑ0FÕGð r8   c                 ó   • X l         g rA   )rw   )rˆ   r¼   Úrevisions      r6   Úset_font_revisionÚBuilder.set_font_revisions  s   € Ø%Õr8   c           	      óx  • [        U5      S:X  d   eU R                  S;   a  [        SU R                  -  U5      eU R                  c  [        SU5      eS U l        U R                  X R                  4nU R
                  R                  US   SUS   45      nUS:X  d  U(       a  U(       a  US S  U R
                  U'   OCU R
                  R                  U/ 5      nU Vs/ s H  oˆU;  d  M
  UPM     snU R
                  U'   [        U R                  U4/5      U l        U(       a‘  U R                  U4nXPR                  ;   aZ  [        SUR                  5       < S	U R                  R                  5       < S
U R                  U   R                  5       < S3U5      eU R                  U R                  U'   g g s  snf )Nr¬  ©rÓ   r  z7Language statements are not allowed within "feature %s"zCLanguage statements are not allowed within standalone lookup blocksr   rÞ  rD  z	Language z	 (script z ) has already specified feature z as its required feature)rà   re   r   rc   r\   rh   r¯   r•   r`   ri   rƒ  )	rˆ   r¼   rú  Úinclude_defaultÚrequiredrÇ   ræ   Úcur_lookupsÚxs	            r6   Úset_languageÚBuilder.set_languagev  s¥  € Ü�8‹} Ó!Ð!Ð!Ø×!Ñ!Ð%5Ó5Ü!ð&Ø(,×(>Ñ(>ñ?àóð ð
 ×!Ñ!Ñ)Ü!ð2àóð ð
  ˆÔà�|‰|˜X×'=Ñ'=Ð>ˆØ—.‘.×$Ñ$ c¨!¡f¨f°c¸!±fÐ%=Ó>ˆØ˜Ó¦/¶wØ")©! *ˆD�N‰N˜3Òð Ÿ.™.×,Ñ,¨S°"Ó5ˆKÙ.9Ó"Nªk¨ÀgÑ=M§1©kÑ"NˆD�N‰N˜3ÑÜ )¨D¯L©L¸(Ð+CÐ*DÓ EˆÔæØ—<‘< Ð*ˆCØ×-Ñ-Ó-Ý%ð !Ÿ™Ö(ØŸ™×*Ñ*Ö,Ø×/Ñ/°Ñ4×:Ñ:Ö<ðð ó	ð 	ð ,0×+AÑ+AˆD×#Ñ# CÒ(ð ùò #Os   Ã	F7Ã+F7c                 óB  • [        U5      nU R                  R                  U5      nUb  U$ [        U R                  5      S-   nX0R                  U'   U HG  nX@R                  ;   a%  U R                  U   u  pV[        SU< SU< 3U5      eX14U R                  U'   MI     U$ )NrÚ   úGlyph z3 already has been assigned a MarkAttachmentType at )r•   r€   r¯   rà   r   r   )rˆ   r¼   r(  r)  rè   r  Úlocs          r6   ÚgetMarkAttachClass_ÚBuilder.getMarkAttachClass_£  s­   € Ü˜6Ó"ˆØ×%Ñ%×)Ñ)¨&Ó1ˆØ‰?ØˆJÜ�$×)Ñ)Ó*¨QÑ.ˆØ*-×Ñ Ñ'ÛˆEØ×(Ñ(Ó(Ø×)Ñ)¨%Ñ0‘�Ý%ã49º3ð@àóð ð
 (+ oˆD×Ñ˜UÓ#ñ ð ˆ
r8   c                 ó¢   • [        U5      nU R                  R                  U5      nUb  U$ [        U R                  5      nX0R                  U'   U$ rA   )r•   r�   r¯   rà   )rˆ   r¼   r(  r)  s       r6   ÚgetMarkFilterSet_ÚBuilder.getMarkFilterSet_µ  sO   € Ü˜6Ó"ˆØ×"Ñ"×&Ñ& vÓ.ˆØ‰?ØˆJÜ�$×&Ñ&Ó'ˆØ'*×Ñ˜VÑ$Øˆ
r8   c                 óž   • US-  nUb  U R                  X5      nX%S-  -  nUb  U R                  X5      nUS-  nX`l        OS U l        X l        g )Néÿ   r¯  r°  )r©  r¬  r^   r]   )rˆ   r¼   ry  Ú
markAttachÚ
markFilterÚmarkAttachClassr¹   s          r6   Úset_lookup_flagÚBuilder.set_lookup_flag¾  sa   € Ø˜‘ˆØÑ!Ø"×6Ñ6°xÓLˆOØ°Ñ1Ñ2ˆEØÑ!Ø ×2Ñ2°8ÓHˆMØ˜D‘LˆEØ-:Õ*à-1ˆDÔ*Ø Õr8   c                 ó
  • U R                   S;   a  [        SU R                   -  U5      eU R                   c  [        SU5      eU R                  US41:X  a  g S U l        X l        SU l        S U l        U R                  USSSS9  g )	NrŸ  z5Script statements are not allowed within "feature %s"zAScript statements are not allowed within standalone lookup blocksrÞ  r   TF)r   r¡  )re   r   r`   rc   r\   r]   r^   r¤  )rˆ   r¼   rÅ   s      r6   Ú
set_scriptÚBuilder.set_scriptË  s¤   € Ø×!Ñ!Ð%5Ó5Ü!ð&Ø(,×(>Ñ(>ñ?àóð ð
 ×!Ñ!Ñ)Ü!ØVØóð ð × Ñ  f¨fÐ%5Ð$6Ó6àØˆÔØŒØˆÔØ)-ˆÔ&Ø×Ñ˜( F¸DÈ5ÐÒQr8   c           	      óÚ   • / nU H]  nUbF  UR                  U Vs/ s H'  o@R                  R                  UR                  5      PM)     sn5        ML  UR                  S5        M_     U$ s  snf )z»Helper for building chain contextual substitutions

Given a list of lookup names, finds the LookupBuilder for each name.
If an input name is None, it gets mapped to a None LookupBuilder.
N)r»   rb   r¯   r:   )rˆ   ræ   Úlookup_buildersrç   r7  s        r6   Úfind_lookup_builders_ÚBuilder.find_lookup_builders_à  sj   € ð ˆÛ!ˆJØÑ%Ø×&Ñ&Ù>HÓIºj¸×(Ñ(×,Ñ,¨Q¯V©VÖ4¹jÑIöð  ×&Ñ& tÖ,ñ "ð Ðùò	 Js   š.A(
c                 ó|   • U H6  nU R                   R                  U[        5       5      R                  U5        M8     g rA   )r{   rÂ   rZ   r›  )rˆ   r¼   r(  ÚcontourPointsrè   s        r6   Úadd_attach_pointsÚBuilder.add_attach_pointsð  s/   € ÛˆEØ×Ñ×)Ñ)¨%´³Ó7×>Ñ>¸}ÖMò r8   c                 ót   • U R                   S:w  a  [        SU5      eU R                  R                  X45        g )NrÓ   z9Feature references are only allowed inside "feature aalt")re   r   rk   r»   )rˆ   r¼   ÚfeatureNames      r6   Úadd_feature_referenceÚBuilder.add_feature_referenceô  s;   € Ø×!Ñ! VÓ+Ü!ØKÈXóð ð 	×Ñ×"Ñ" HÐ#:Õ;r8   c                 ó:   • U R                   R                  U5        g rA   )ro   r„  ©rˆ   rC   s     r6   Úadd_featureNameÚBuilder.add_featureNameû  s   € Ø×Ñ×Ñ˜sÕ#r8   c                 ó:   • U R                   R                  U5        g rA   )rq   r„  rÅ  s     r6   Úadd_cv_parameterÚBuilder.add_cv_parameterþ  s   € Ø×Ñ×Ñ Õ$r8   c                 óp   • XR                   ;   a  U R                   U==   S-  ss'   gSU R                   U'   g)zZAdds new items to ``self.cv_num_named_params_``
or increments the count of existing items.rÚ   N)rs   rÅ  s     r6   Úadd_to_cv_num_named_paramsÚ"Builder.add_to_cv_num_named_params  s6   € ð ×+Ñ+Ó+Ø×%Ñ% cÓ*¨aÑ/Ô*à-.ˆD×%Ñ% cÒ*r8   c                 ó@   • U R                   U   R                  U5        g rA   )ru   r»   )rˆ   Ú	characterrC   s      r6   Úadd_cv_characterÚBuilder.add_cv_character	  s   € Ø×Ñ˜CÑ ×'Ñ'¨	Õ2r8   c                 ó8   • U(       a
  XU4U l         g XU4U l        g rA   )rz   ry   )rˆ   rõ  rö  Úverticalr÷  s        r6   Úset_base_axisÚBuilder.set_base_axis  s   € ÞØ$)°FÐ#;ˆDÕ à%*°VÐ$<ˆDÕ!r8   c                 óæ   • U R                   S:w  a  [        SU R                   -  U5      eX#XE/U l        U R                   H/  u  pgXgU R                   4nU R                  R                  U/ 5        M1     g )Nr  z9Parameters statements are not allowed within "feature %s")re   r   rv   r`   rh   rÂ   )	rˆ   r¼   r  r  r  r  rÅ   rÆ   rÇ   s	            r6   Úset_size_parametersÚBuilder.set_size_parameters  sz   € ð ×!Ñ! VÓ+Ü!ð&Ø(,×(>Ñ(>ñ?àóð ð
 ",¸*Ð OˆÔØ ×1Ô1‰LˆFØ ×!7Ñ!7Ð8ˆCØ�N‰N×%Ñ% c¨2Ö.ò 2r8   c                 óh  • U R                  U[        US9nUR                  5        H‰  u  pEXCR                  ;   ag  XSR                  U   :X  a7  [        R                  SSR                  U5      SR                  U5      U5        O[        SSR                  U5      -  U5      eXSR                  U'   M‹     g )N)rÎ   z7Removing duplicate substitution from "%s" to "%s" at %sr�   z%Already defined substitution for "%s")rÏ   r$   rÛ   rÎ   ÚlogÚinfor–   r   )rˆ   r¼   rÎ   rÃ   rÇ   ry  s         r6   Úadd_any_subst_ÚBuilder.add_any_subst_"  s�   € Ø×!Ñ! (¬OÀWÐ!ÐMˆØ!Ÿ-™-ž/‰JˆCØ—n‘nÓ$ØŸN™N¨3Ñ/Ó/Ü—H‘HØQØŸ	™	 #›ØŸ	™	 %Ó(Ø õ	ô *Ø?À$Ç)Á)ÈCÃ.ÑPØ óð ð #(�N‰N˜3Óò *r8   c           	      óŒ  • U R                   S:X  aN  UR                  5        H9  u  pgU R                  R                  U/ 5      nXx;  d  M(  UR	                  U5        M;     g U(       d  U(       d  U(       a  U R                  XX45        g U R                  UUR                  5        V	V
s0 s H
  u  pšU	4U
4_M     sn
n	5        g s  sn
n	f rÒ   )re   rÛ   rm   rÂ   r»   Úadd_single_subst_chained_rÜ  )rˆ   r¼   ÚprefixÚsuffixrÎ   Ú
forceChainÚ
from_glyphÚto_glyphré   rÇ   ry  s              r6   Úadd_single_substÚBuilder.add_single_subst5  s£   € Ø×!Ñ! VÓ+Ø(/¯©®Ñ$�
Ø×,Ñ,×7Ñ7¸
ÀBÓG�ØÕ'Ø—K‘K Ö)ñ )8ð Þ–VžzØ×*Ñ*¨8¸VÔMØà×ÑØØ07·±´Ô@²¡* #ˆcˆV�e�XÒ±Ò@õ	
ùã@s   Â&C c                 ó’   • U(       d  U(       d  U(       a  U R                  XX4U5        g U R                  UU4[        U5      05        g rA   )Úadd_multi_subst_chained_rÜ  rF  )rˆ   r¼   rà  rè   rá  Úreplacementsrâ  s          r6   Úadd_multiple_substÚBuilder.add_multiple_substF  s@   € ö –VžzØ×)Ñ)¨(¸EÈ<ÔXØØ×ÑØØˆX”u˜\Ó*Ð+õ	
r8   c                 óà  ^• U R                   S:X  a8  U R                  R                  U/ 5      mTR                  U4S jU 5       5        g U(       d  U(       aU  U R	                  U[
        5      nU R                  U[        5      nUR                  R                  [        X#1/XG/5      5        OU R	                  U[        5      nX7R                  ;   a  [        SU-  U5      eXWR                  U'   g )NrÓ   c              3   ó6   >#   • U  H  oT;  d  M
  Uv •  M     g 7frA   rÕ   )rB   rÖ   ré   s     €r6   rD   Ú.Builder.add_alternate_subst.<locals>.<genexpr>U  s   øé € Ð@¢;˜a¸4±-Ÿ™¢;ùrÙ   z)Already defined alternates for glyph "%s")re   rm   rÂ   rß   rÏ   r   r¿   r   Úrulesr»   r#   râ   r   )	rˆ   r¼   rà  rè   rá  ÚreplacementÚchainrÃ   ré   s	           @r6   Úadd_alternate_substÚBuilder.add_alternate_substR  sÏ   ø€ Ø×!Ñ! VÓ+Ø×(Ñ(×3Ñ3°E¸2Ó>ˆDØ�K‰KÔ@¡;Ó@Ô@ØÞ–VØ×$Ñ$ XÔ/GÓHˆEØ×-Ñ-¨hÔ8MÓNˆFØ�K‰K×ÑÔ2°6¸G¸9ÀfÈhÓWÕXà×%Ñ% hÔ0EÓFˆFØ×%Ñ%Ó%Ü!Ø;¸eÑCÀXóð ð $/×Ñ˜%Ò r8   c                 ó  • U(       d  U(       d  U(       a  U R                  XX4U5        g [        U5      (       d  [        SU5      eU R                  U[        R
                  " U6  Vs0 s H  owU4_M     sn5        g s  snf ©Nz!Empty glyph class in substitution)Úadd_ligature_subst_chained_Úallr   rÜ  Ú	itertoolsÚproduct)rˆ   r¼   rà  r(  rá  rð  râ  rÖ   s           r6   Úadd_ligature_substÚBuilder.add_ligature_subste  sv   € ö –VžzØ×,Ñ,Ø &°+ôð Ü�6�{‰{Ü!Ð"EÀxÓPÐPð 	×ÑØÜ(1×(9Ò(9¸6Ñ(BÓCÒ(B 1��ÒÑ(BÑCõ	
ùâCs   Á'A<
c           
      ó  • [        U5      (       a   [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      nUR                  R                  [        X#X@R                  U5      5      5        g ©Nú,Empty glyph class in contextual substitution)r÷  r   rÏ   r   rï  r»   r#   rº  ©rˆ   r¼   rà  r(  rá  ræ   rÃ   s          r6   Úadd_chain_context_substÚBuilder.add_chain_context_subst{  sl   € Ü�6�{‰{¤# f§+¡+´S¸·[±[Ü!Ø>Àóð ð ×!Ñ! (Ô,DÓEˆØ�‰×ÑÜØ ×(BÑ(BÀ7Ó(Kóõ	
r8   c           	      ó¨  • U(       a   [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      nUR	                  U[
        5      nUc  U R                  U[
        5      nUR                  R                  U5        UR                  R                  [        U[        UR                  5       5      /X6/5      5        g rý  )r÷  r   rÏ   r   Úfind_chainable_substr   r¿   rÎ   r›  rï  r»   r#   rt   Úkeys)rˆ   r¼   rà  rá  rÎ   rñ  Úsubs          r6   rß  Ú!Builder.add_single_subst_chained_‡  s§   € Þœc &Ÿk™k´°V·±Ü!Ø>Àóð ð
 × Ñ  Ô+CÓDˆØ×(Ñ(¨Ô2DÓEˆØ‰;Ø×*Ñ*¨8Ô5GÓHˆCØ�‰×Ñ˜7Ô#Ø�‰×ÑÜ ¬¨g¯l©l«nÓ)=Ð(>ÀÈÓNõ	
r8   c                 óT  • [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      nUR	                  X50[
        5      nUc  U R                  U[
        5      nXWR                  U'   UR                  R                  [        X#1/XG/5      5        g rý  )r÷  r   rÏ   r   r  r   r¿   rÎ   rï  r»   r#   )rˆ   r¼   rà  rè   rá  ré  rñ  r  s           r6   rè  Ú Builder.add_multi_subst_chained_—  s”   € Ü�6�{‰{¤# f§+¡+Ü!Ø>Àóð ð × Ñ  Ô+CÓDˆØ×(Ñ(¨%Ð)>Ô@TÓUˆØ‰;Ø×*Ñ*¨8Ô5IÓJˆCØ)�‰�EÑØ�‰×ÑÔ.¨v¸°yÀ&È%ÓPÕQr8   c           
      óä  • [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      nUR	                  X55      nUc  U R                  U[        5      n[        R                  " U6  HG  nUR                  R                  X…5      n	X•:w  a  [        SU SU	 SU S3U5      eXWR                  U'   MI     UR                  R                  [        X#XG/5      5        g )Nrþ  z!Conflicting ligature sub rules: 'z' maps to 'z' and 'Ú')r÷  r   rÏ   r   Úfind_chainable_ligature_substr¿   r   rø  rù  Ú	ligaturesr¯   rï  r»   r#   )
rˆ   r¼   rà  r(  rá  rð  rñ  r  rÖ   Úexistings
             r6   rö  Ú#Builder.add_ligature_subst_chained_¤  sê   € ô �6�{‰{¤# f§+¡+Ü!Ø>Àóð ð × Ñ  Ô+CÓDˆØ×1Ñ1°&ÓFˆØ‰;Ø×*Ñ*¨8Ô5IÓJˆCä×"Ò" FÓ+ˆAØ—}‘}×(Ñ(¨Ó8ˆHØÓ&Ü%Ø7¸°s¸+ÀhÀZÈwÐWbÐVcÐcdÐeØóð ð
  +�M‰M˜!Óñ ,ð 	�‰×ÑÔ.¨v¸vÀuÓMÕNr8   c                 ó�   • U(       d  [        SU5      eU R                  U[        5      nUR                  R	                  X#U45        g rõ  )r   rÏ   r   rï  r»   )rˆ   r¼   Ú
old_prefixÚ
old_suffixrÎ   rÃ   s         r6   Úadd_reverse_chain_single_substÚ&Builder.add_reverse_chain_single_subst¾  s=   € ÞÜ!Ð"EÀxÓPÐPØ×!Ñ! (Ô,JÓKˆØ�‰×Ñ˜Z°WÐ=Õ>r8   c                 óx  • U(       d  U(       d  U(       a  U R                  XX45        g U R                  U[        5      nU HD  u  pxU(       d  [        SU5      eU R	                  XSS9n	U H  n
 UR                  XU	5        M     MF     g ! [         a%  n[        [        U5      UR                  5      UeS nAff = f)Nú%Empty glyph class in positioning ruleF©ÚpairPosContext)	Úadd_single_pos_chained_rÏ   r"   r   ÚmakeOpenTypeValueRecordÚadd_posr%   r4  r¼   )rˆ   r¼   rà  rá  Úposrâ  rÃ   r(  ry  ÚotValueRecordrè   r9  s               r6   Úadd_single_posÚBuilder.add_single_posÇ  s´   € Þ–VžzØ×(Ñ(¨¸6ÕGà×%Ñ% hÔ0@ÓAˆFÛ!$‘�ÞÜ)Ø?Àóð ð !%× <Ñ <Ø°Eð !=ð !�ó $�EðIØŸ™ x¸ÖFó $ò "%øô ,ó IÜ-¬c°!«f°a·j±jÓAÀqÐHûðIús   Á/B
Â

B9Â B4Â4B9c                 ó>  • U(       a  U(       d  [        SU5      eU R                  U[        5      nU R                  XSS9nU R                  XSS9n[	        [        [        U5      5      5      n	[	        [        [        U5      5      5      n
UR                  XXzU5        g ©Nr  Tr  )r   rÏ   r!   r  rF  r—   rZ   ÚaddClassPair)rˆ   r¼   Úglyphclass1Úvalue1Úglyphclass2Úvalue2rÃ   Úv1Úv2Úcls1Úcls2s              r6   Úadd_class_pair_posÚBuilder.add_class_pair_posÛ  s‹   € Þ¦+Ü!Ð"IÈ8ÓTÐTØ×!Ñ! (¬NÓ;ˆØ×)Ñ)¨(È4Ð)ÐPˆØ×)Ñ)¨(È4Ð)ÐPˆÜ”VœC Ó,Ó-Ó.ˆÜ”VœC Ó,Ó-Ó.ˆØ×Ñ˜H¨B°bÕ9r8   c                 óÊ   • U(       a  U(       d  [        SU5      eU R                  U[        5      nU R                  XSS9nU R                  XSS9nUR	                  XXtU5        g r   )r   rÏ   r!   r  ÚaddGlyphPair)	rˆ   r¼   Úglyph1r#  Úglyph2r%  rÃ   r&  r'  s	            r6   Úadd_specific_pair_posÚBuilder.add_specific_pair_poså  sc   € ÞžVÜ!Ð"IÈ8ÓTÐTØ×!Ñ! (¬NÓ;ˆØ×)Ñ)¨(È4Ð)ÐPˆØ×)Ñ)¨(È4Ð)ÐPˆØ×Ñ˜H¨b¸"Õ=r8   c           	      óº   • U(       d  [        SU5      eU R                  U[        5      nUR                  UUU R	                  X5      U R	                  X5      5        g ©Nr  )r   rÏ   r   Úadd_attachmentÚmakeOpenTypeAnchor)rˆ   r¼   Ú
glyphclassÚentryAnchorÚ
exitAnchorrÃ   s         r6   Úadd_cursive_posÚBuilder.add_cursive_posî  sV   € ÞÜ!Ð"IÈ8ÓTÐTØ×!Ñ! (Ô,=Ó>ˆØ×ÑØØØ×#Ñ# HÓ:Ø×#Ñ# HÓ9õ		
r8   c                 ó  • U R                  U[        5      nU R                  XU5        U(       d  [        SU5      eU HG  u  pVU R	                  X5      nU H+  nXtR
                  R                  U0 5      UR                  '   M-     MI     g r3  )rÏ   r   Ú
add_marks_r   r5  rõ  rÂ   r:   )	rˆ   r¼   rõ  Úmarksr   Ú
baseAnchorr  ÚotBaseAnchorrµ   s	            r6   Úadd_mark_base_posÚBuilder.add_mark_base_posú  sx   € Ø×"Ñ" 8Ô-?Ó@ˆØ�‰˜¨5Ô1ÞÜ!Ð"IÈ8ÓTÐTÛ%*Ñ!ˆJØ×2Ñ2°8ÓHˆLÛ�ØEQ—‘×(Ñ(¨¨rÓ2°9·>±>ÓBó ò &+r8   c                 ó4  • U R                  U[        5      n/ nU(       d  [        SU5      eU HP  n0 nU R                  XU5        U H"  u  p‰U R	                  X5      XyR
                  '   M$     UR                  U5        MR     U H  n
XTR                  U
'   M     g r3  )rÏ   r   r   r<  r5  r:   r»   r  )rˆ   r¼   r  Ú
componentsr   ÚcomponentAnchorsr=  ÚanchorsÚ	ligAnchorr  rè   s              r6   Úadd_mark_lig_posÚBuilder.add_mark_lig_pos  s•   € Ø×"Ñ" 8Ô->Ó?ˆØÐÞÜ!Ð"IÈ8ÓTÐTÛˆEØˆGØ�O‰O˜H¨uÔ5Û(-Ñ$�	Ø*.×*AÑ*AÀ(Ó*V�Ÿ™Ó'ñ ).à×#Ñ# GÖ,ñ  ó ˆEØ'7×Ñ˜eÓ$ò r8   c                 ó  • U R                  U[        5      nU R                  XU5        U(       d  [        SU5      eU HH  u  pVU R	                  X5      nU H,  nUUR
                  R                  U0 5      UR                  '   M.     MJ     g r3  )rÏ   r   r<  r   r5  Ú	baseMarksrÂ   r:   )	rˆ   r¼   rJ  r=  r   r>  r  r?  ÚbaseMarks	            r6   Úadd_mark_mark_posÚBuilder.add_mark_mark_pos  s„   € Ø×"Ñ" 8Ô-?Ó@ˆØ�‰˜¨5Ô1ÞÜ!Ð"IÈ8ÓTÐTÛ%*Ñ!ˆJØ×2Ñ2°8ÓHˆLÛ%�ð !ð ×!Ñ!×,Ñ,¨X°rÓ:Ø—N‘Nóó &ò &+r8   c           
      ó  • [        U5      (       a   [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      nUR                  R                  [        X#X@R                  U5      5      5        g )Nú0Empty glyph class in contextual positioning rule)r÷  r   rÏ   r   rï  r»   r#   rº  rÿ  s          r6   Úadd_chain_context_posÚBuilder.add_chain_context_pos!  sl   € Ü�6�{‰{¤# f§+¡+´S¸·[±[Ü!ØBÀHóð ð ×!Ñ! (Ô,BÓCˆØ�‰×ÑÜØ ×(BÑ(BÀ7Ó(Kóõ	
r8   c                 óâ  • U(       a   [        U5      (       a  [        U5      (       d  [        SU5      eU R                  U[        5      n/ nUR                   H  u      pxUR                  U5        M     / n	U H“  u  p«Uc  U	R                  S 5        M  U R                  XSS9nUR                  XjU5      nUc'  U R                  U[        5      nUR                  U5        U
 H  nUR                  XU5        M     U	R                  U5        M•     [        U5      [        U	5      :X  d   XI45       eUR                  R                  [        X$ VVs/ s H  u  nnUPM
     snnX95      5        g s  snnf )NrO  Fr  )r÷  r   rÏ   r   rï  rß   r»   r  Úfind_chainable_single_posr¿   r"   r  rà   r#   )rˆ   r¼   rà  rá  r  rñ  Útargetsr  ræ   Úsubsr(  ry  ÚotValuer  rè   rÖ   r}  s                    r6   r  ÚBuilder.add_single_pos_chained_-  sP  € Þœ#˜fŸ+™+¬S°¯[©[Ü!ØBÀHóð ð × Ñ  Ô+AÓBˆØˆØ %§¤ÑˆAˆq�!Ø�N‰N˜7Ö#ñ !,àˆÛ ‰MˆFØ‰}Ø—‘˜DÔ!ÙØ×2Ñ2Ø°ð 3ð ˆGð ×1Ñ1°'À7ÓKˆCØ‰{Ø×.Ñ.¨xÔ9IÓJ�Ø—‘˜sÔ#Û�Ø—‘˜H¨WÖ5ñ  à�K‰K˜Öñ !ô �3‹xœ3˜t›9Ó$Ð1 s kÓ1Ð$Ø�‰×ÑÜ °sÔ(;²s©t¨q°!«±sÒ(;¸VÓJõ	
ùÛ(;s   ÅE+c                 óÂ  • U HÙ  u  pEUR                    HÄ  nUR                  R                  5        H£  nXrR                  ;  aM  U R	                  U[
        R                  " UR                  5      5      nUR                  U4UR                  U'   M_  UR                  U   S   n	UR                  U	:w  d  Mƒ  [        SU< SU	< SUR                  < 3U5      e   MÆ     MÛ     g)z)Helper for add_mark_{base,liga,mark}_pos.r   r§  z cannot be in both @z and @N)
r  r(  r  r=  r5  ÚcopyÚdeepcopyÚanchorr:   r   )
rˆ   r¼   ÚlookupBuilderr=  r  r  r  ÚmarkÚotMarkAnchorÚexistingMarkClasss
             r6   r<  ÚBuilder.add_marks_K  sÇ   € ã!‰LˆAØ )× 5Ô 5�Ø(×/Ñ/×8Ñ8Ö:�DØ×#6Ñ#6Ó6Ø'+×'>Ñ'>Ø$¤d§m¢m°L×4GÑ4GÓ&Hó(˜ð 6?·^±^À\Ð4R˜×+Ñ+¨DÓ1à,9×,?Ñ,?ÀÑ,EÀaÑ,HÐ)Ø$Ÿ>™>Ð->Õ>Ý"1ã#'Ó):¸I¿N»Nð!Là (ó#ð ó ;ó !6ò "r8   c                 ó:   • U R                   R                  U5        g rA   )rc   Úadd_subtable_break)rˆ   r¼   s     r6   rb  ÚBuilder.add_subtable_break^  s   € Ø×Ñ×+Ñ+¨HÕ5r8   c                 ó    • U R                   R                  US5      u  pEU(       a  XC:w  a  [        SU< SU< 3U5      eX14U R                   U'   g )N©NNr§  z& was assigned to a different class at )r~   r¯   r   )rˆ   r¼   rè   Ú
glyphClassÚoldClassÚoldLocations         r6   ÚsetGlyphClass_ÚBuilder.setGlyphClass_a  sT   € Ø $× 4Ñ 4× 8Ñ 8¸ÀÓ MÑˆÞ˜Ó.Ý!ãš+ð'àóð ð
 (2Ð&<ˆ×Ñ˜UÒ#r8   c                 óÜ   • U H  nU R                  XS5        M     U H  nU R                  XS5        M     U H  nU R                  XS5        M     U H  nU R                  XS5        M     g )NrÚ   rD  r”  r¬  )ri  )rˆ   r¼   Ú
baseGlyphsÚligatureGlyphsÚ
markGlyphsÚcomponentGlyphsrè   s          r6   Úadd_glyphClassDefÚBuilder.add_glyphClassDefk  sl   € ó  ˆEØ×Ñ °Ö3ñ  ã#ˆEØ×Ñ °Ö3ñ $ãˆEØ×Ñ °Ö3ñ  ã$ˆEØ×Ñ °Ö3ò %r8   c                 óT   • U H"  nX@R                   ;  d  M  X0R                   U'   M$     g rA   )r}   )rˆ   r¼   r(  Úcaretsrè   s        r6   Úadd_ligatureCaretByIndex_Ú!Builder.add_ligatureCaretByIndex_w  s&   € ÛˆEØ×0Ñ0Õ0Ø.4×$Ñ$ UÓ+ò r8   c                 óf   • [        U[        5      (       d  U$ U R                  X5      u  p4Ub  X44$ U$ rA   )rR   r   ÚmakeVariablePos)rˆ   r¼   ÚcaretÚdefaultÚdevices        r6   ÚmakeLigCaretÚBuilder.makeLigCaret|  s:   € Ü˜%¤×0Ñ0ØˆLØ×.Ñ.¨xÓ?‰ˆØÑØÐ$Ð$Øˆr8   c                 óž   • U Vs/ s H  o@R                  X5      PM     nnU H"  nXPR                  ;  d  M  X0R                  U'   M$     g s  snf rA   )r{  r|   )rˆ   r¼   r(  rs  rx  rè   s         r6   Úadd_ligatureCaretByPos_ÚBuilder.add_ligatureCaretByPos_„  sI   € ÙBHÓIÂ&¸×#Ñ# HÖ4Á&ˆÐIÛˆEØ×0Ñ0Õ0Ø.4×$Ñ$ UÓ+ò ùò Js   …A
c                 ó@   • U R                   R                  X#XEU/5        g rA   )rx   r»   )rˆ   r¼   r  r0  r1  r2  r3  s          r6   Úadd_name_recordÚBuilder.add_name_recordŠ  s   € Ø�‰×Ñ˜F°	À6ÐJÕKr8   c                 ó    • X R                   U'   g rA   )r‚   ©rˆ   rÇ   ry  s      r6   Úadd_os2_fieldÚBuilder.add_os2_field�  s   € Ø�	‰	�#Šr8   c                 ó    • X R                   U'   g rA   )rƒ   r„  s      r6   Úadd_hhea_fieldÚBuilder.add_hhea_field�  ó   € Ø�
‰
�3Šr8   c                 ó    • X R                   U'   g rA   )r„   r„  s      r6   Úadd_vhea_fieldÚBuilder.add_vhea_field“  rŠ  r8   c                 óž  ^^
• SU R                   ;  a  [        SU5      eX R                  ;   a  [        SU S3U5      eU R                   Vs0 s H1  nUR                  UR
                  UR                  UR                  4_M3     nnUR                  5        VVVs0 s H%  u  nu  pxU[        XuU   5      [        X…U   5      4_M'     nnnnSU R                   ;   aT  U R                   S   R                  m
UR                  5        V^V	s0 s H  u  mn	T[        UU
4S jU	 5       5      _M     nnn	X0R                  U'   g s  snf s  snnnf s  sn	nf )NrQ   z?Cannot add feature variations to a font without an 'fvar' tablezCondition set 'z/' has the same name as a previous condition setÚavarc              3   óR   >#   • U  H  nTT;   a  [        UTT   5      OUv •  M     g 7frA   )r+   )rB   r}  rô  rÎ   s     €€r6   rD   Ú+Builder.add_conditionset.<locals>.<genexpr>·  s1   øé € ð â,˜ð =AÀG»OÔ& q¨'°$©-Ô8ÐQRÔRÚ,ùs   ƒ$')r4   r   r†   rX   rY   ÚminValueÚdefaultValueÚmaxValuerÛ   r*   ÚsegmentsrF  )rˆ   r¼   rÇ   ry  rô  ÚaxisMaprC   ÚbottomÚtopÚcondition_rangerÎ   s       `     @r6   Úadd_conditionsetÚBuilder.add_conditionset–  sq  ù€ Ø˜Ÿ™Ó"Ü!ØQØóð ð
 ×%Ñ%Ó%Ü!Ø! # Ð&UÐVØóð ð Ÿ	š	ó
â!�ð �L‰L˜4Ÿ=™=¨$×*;Ñ*;¸T¿]¹]ÐKÒKÙ!ð 	ð 
ð ',§k¡k¤mõ
ò
 '4Ñ"�‘]�fð	 Ü˜v¨s¡|Ó4Ü˜s¨C¡LÓ1ðò ñ '4ð 	ò 
ð �T—Y‘YÓØ—i‘i Ñ'×0Ñ0ˆGð .3¯[©[¬]õò
 .;Ñ)�D˜/ð	 ”eõ á,óó ò ñ .;ð ñ ð $)×Ñ˜CÒ ùò5
ùô

ùós   Á8D=Â,EÄ$E	c                 ó’  • U R                   (       d  [        SU5      eU R                  Ul        UR                  (       d  UR                  S 4$  UR                  U R                   U R                  U R                  R                  S5      5      u  p4S nUb  US:w  a  [        U5      nX64$ ! [         a  n[        SU5      UeS nAff = f)Nz5Can't define a variable scalar in a non-variable fontr�  z,Failed to compute deltas for variable scalarl   ÿÿ )rW   r   rX   Ú	does_varyry  Úadd_to_variation_storer‡   r4   r¯   r&   r(   )rˆ   r¼   Ú	varscalarry  ré  r9  rz  s          r6   rw  ÚBuilder.makeVariablePosÀ  sÈ   € Ø×#×#Ü!ØGÈóð ð Ÿ™ˆ	ŒØ×"×"Ø×$Ñ$ dÐ*Ð*ð	Ø&×=Ñ=Ø×$Ñ$ d×&6Ñ&6¸¿	¹	¿¹ÀfÓ8Mó‰NˆGð ˆØÑ ¨*Ó!4Ü% eÓ,ˆFàˆÐøô ó 	Ü!Ø>Àóàðûð	ús   ÁAB* Â*
CÂ4CÃCc                 óÊ   • S n[        U[        5      (       d%  Ub  [        R                  " [	        U5      5      nX4$ U R                  X15      u  pTUb  Ub  [        SU5      eXT4$ )Nú4Can't define a device coordinate and variable scalar)rR   r   r�  ÚbuildDevicerG  rw  r   )rˆ   rŸ  ÚdeviceTabler¼   rz  ry  s         r6   ÚmakeAnchorPosÚBuilder.makeAnchorPosÙ  so   € ØˆÜ˜)¤^×4Ñ4ØÑ&ÜŸš¬¨kÓ):Ó;�ØÐ$Ð$Ø×.Ñ.¨xÓC‰ˆØÑ +Ñ"9Ü!ØFÈóð ð ˆÐr8   c                 óÖ  • Uc  gSu  p4UR                   b)  [        R                  " [        UR                   5      5      nUR                  b)  [        R                  " [        UR                  5      5      nU R                  UR                  UR                   U5      u  pSU R                  UR                  UR                  U5      u  pd[        R                  " XVUR                  X45      nU$ )zast.Anchor --> otTables.AnchorNre  )
ÚxDeviceTabler�  r£  rG  ÚyDeviceTabler¥  r£  ÚyÚbuildAnchorÚcontourpoint)rˆ   r¼   r[  ÚdeviceXÚdeviceYr£  rª  Ú	otlanchors           r6   r5  ÚBuilder.makeOpenTypeAnchoræ  sº   € à‰>ØØ%ÑˆØ×ÑÑ*Ü—o’o¤d¨6×+>Ñ+>Ó&?Ó@ˆGØ×ÑÑ*Ü—o’o¤d¨6×+>Ñ+>Ó&?Ó@ˆGØ×'Ñ'¨¯©°&×2EÑ2EÀxÓP‰
ˆØ×'Ñ'¨¯©°&×2EÑ2EÀxÓP‰
ˆÜ—O’O A¨&×*=Ñ*=¸wÓPˆ	ØÐr8   ÚReservedr   rÚ   c                 óL  • U(       d  g0 nU R                   R                  5        H¾  u  nu  pg[        X%S5      nU(       d  M  U(       a#  [        R                  " [        U5      5      XF'   MG  [        U[        5      (       a^  USS S-   n	U	S   R                  5       U	SS -   n
[        X*5      (       a  [        SU5      eU R                  X5      u  XF'   nUb  X´U	'   M¸  Mº  X„U'   MÀ     U(       a   U(       d  UR                  (       a  SS0OSS0n[        R                  " U5      nU$ )	z&ast.ValueRecord --> otBase.ValueRecordNr   r¬  ÚDevicerÚ   r¢  ÚYAdvanceÚXAdvance)Ú_VALUEREC_ATTRSrÛ   rB  r�  r£  rG  rR   r   Úlowerr   rw  rÓ  Ú
buildValue)rˆ   r¼   r}  r  ÚvrÚastNameÚotNameÚisDeviceÚvalÚotDeviceNameÚfeaDeviceNamerz  ÚvalRecs                r6   r  ÚBuilder.makeOpenTypeValueRecordú  s  € æØàˆØ+/×+?Ñ+?×+EÑ+EÖ+GÑ'ˆGÑ'�fÜ˜! dÓ+ˆCÞÙÞÜ Ÿ_š_¬T°#«YÓ7�“
Ü˜C¤×0Ñ0Ø% a¨˜{¨XÑ5�Ø ,¨Q¡× 5Ñ 5Ó 7¸,ÀqÀrÐ:JÑ J�Ü˜1×,Ñ,Ü)ØNÐPXóð ð &*×%9Ñ%9¸(Ó%HÑ"�‘
˜FØÑ%Ø'-�|Ó$ñ &ð !�6“
ñ# ,Hö& ¦"Ø$%§J§J�*˜a‘°ZÀ°OˆBÜ—’ Ó#ˆØˆr8   )2rm   rk   rl   rn   r{   rX   ry   rz   r†   re   rc   rd   ru   rs   rq   rr   r[   ro   rp   rj   rh   rT   r4   rw   r~   rV   rƒ   r`   r|   r}   rg   r]   r^   rf   r€   r   r�   r‡   rb   rx   r‚   rS   ri   r\   ra   rv   r…   r_   rW   r„   ©NFrA   )F)dÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__r•   r”   rŠ   r3   r¿   rÈ   rÏ   r™   rš   r›   rœ   r  r*  r�   rž   r{  r†  r�  rŸ   ro  r¬   rÛ  rÑ  r«   r  r  r
  r°   r:  r    r¡   rI  r2  r…  rˆ  rá   rã   r‘  r”  r˜  rœ  r¤  r©  r¬  r³  r¶  rº  r¾  rÂ  rÆ  rÉ  rÌ  rÐ  rÔ  r×  rÜ  rå  rê  rò  rú  r   rß  rè  rö  r  r  r*  r0  r9  r@  rG  rL  rP  r  r<  rb  ri  rp  rt  r{  r~  r�  r…  rˆ  rŒ  rš  rw  r¥  r5  r   ÚvalueRecordFormatÚ
startswithr·  r¶  r  Ú__static_attributes__)rB   r  r:   r¼  s   0000r6   r2   r2   _   sV  † Ùñ  ñ
ó ó €Oò JôX<ò|ò>ô
 ò:1*òf
0ò2ò":ò$ò)òVò4RUòh(ò 4ò?ò$S
òj+4òZ
òò*òX"òHò$ò>òNò!òFgòRò.òò?ò2	1ô5ò"$ô2ò&2òHò&ò+BòZò$ò!òRò*ò Nò<ò$ò%ò/ò3ð >@ô =ò/ò (ò&
ð$ INô	
ò/ò&
ò,

ò
ò RòOò4?òIò(:ò>ò	
òRò8ò
!ò

ò
ò<ò&6ò=ò
4ò5ò
ò5òLòò ò ò()òTò2òð  %+×$<Ò$<öâ$<Ñ ˆA�XØ�‰˜z×*ó 	5ˆˆQ‰�‰‹˜$˜q˜r˜(Ñ" TÐ$4Ò4Ù$<ô€Oõùõs   Ä:F
ÅF
r2   rÂ  )NNF)LÚfontTools.miscr   ÚfontTools.misc.textToolsr   r   r   r   ÚfontTools.feaLib.errorr   Ú fontTools.feaLib.lookupDebugInfor	   r
   r   ÚfontTools.feaLib.parserr   ÚfontTools.feaLib.astr   ÚfontTools.feaLib.variableScalarr   ÚfontTools.otlLibr   r�  ÚfontTools.otlLib.maxContextCalcr   ÚfontTools.ttLibr   r   ÚfontTools.ttLib.tablesr   r   ÚfontTools.otlLib.builderr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   ÚfontTools.otlLib.errorr%   ÚfontTools.varLib.errorsr&   ÚfontTools.varLib.varStorer'   ÚfontTools.varLib.builderr(   ÚfontTools.varLib.featureVarsr)   ÚfontTools.varLib.modelsr*   r+   Úcollectionsr,   rY  rø  Úior-   ÚloggingrÜ   r­   Ú	getLoggerrÃ  rÚ  r7   r=   Úobjectr2   rÕ   r8   r6   Ú<module>rá     s¤   ðÝ "ß EÓ EÝ 2÷ñ õ
 +Ý ,Ý :Ý +Ý 6ß 4ß 3÷÷ ÷ ÷ ó õ$ 4Ý /Ý ;Ý 5Ý @ß FÝ #Û Û Ý Û Û Û 	ð ×Ò˜Ó!€ô.ð& 7<ôGô2wˆfõ wr8   