§
    ‚Ûg| ã                   ó¸  — d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;Z;d dl<Z<d dl=m>Z> d dl?Z?d dl@Z@d dlAZA e?jB        eC¦  «        ZDdd„ZE	 dd„ZF G d„ deG¦  «        ZHdS )é    )Ú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)ÚOpenTypeLibError)ÚOnlineVarStoreBuilder)ÚbuildVarDevTable)ÚaddFeatureVariationsRaw)ÚnormalizeValueÚpiecewiseLinearMap)ÚdefaultdictN)ÚStringIOFc                 óT   — t          | |¦  «        }|                     ||¬¦  «         dS )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Úfeaturefiler.   r/   r   s        úN/granary/edev/quantum/lib/python3.11/site-packages/fontTools/feaLib/builder.pyÚaddOpenTypeFeaturesr5   2   s/   € õ �d˜KÑ(Ô(€GØ‡M‚M˜ u€MÑ-Ô-Ð-Ð-Ð-ó    c                 óv   — t          t          |¦  «        ¦  «        }|r||_        t          | |||¬¦  «         dS )ae  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   Únamer5   )r2   ÚfeaturesÚfilenamer.   r/   r3   s         r4   ÚaddOpenTypeFeaturesFromStringr;   D   sD   € õ& �5 ™?œ?Ñ+Ô+€KØð $Ø#ˆÔÝ˜˜k°&ÀÐFÑFÔFÐFÐFÐFr6   c                   ód  — e Zd Z ed„ dD ¦   «         ¦  «        Zd„ Zd\d„Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d$„ Z$d%„ Z%d&„ Z&d'„ Z'd(„ Z(d)„ Z)d*„ Z*d+„ Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2d3„ Z3d4„ Z4d5„ Z5d6„ Z6d7„ Z7d8„ Z8d9„ Z9	 d]d:„Z:d;„ Z;d<„ Z<d=„ Z=d>„ Z>d?„ Z?d@„ Z@dA„ ZAdB„ ZBdC„ ZCdD„ ZDdE„ ZEdF„ ZFdG„ ZGdH„ ZHdI„ ZIdJ„ ZJdK„ ZKdL„ ZLdM„ ZMdN„ ZNdO„ ZOdP„ ZPdQ„ ZQdR„ ZRdS„ ZSdT„ ZTdU„ ZUdV„ ZVdW„ ZWdX„ ZXdY„ ZYdZ„ eZj[        D ¦   «         Z\d[„ Z]dS )^r0   c              #   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)r   )Ú.0Útags     r4   ú	<genexpr>zBuilder.<genexpr>^   s<   è è € ð  ð  àõ 	ˆC‰Œð ð  ð  ð  ð  ð  r6   )
ÚBASEÚGDEFÚGPOSÚGSUBúOS/2ÚheadÚhhear8   ÚvheaÚSTATc                 ó  — || _         t          |t          ¦  «        r|d c| _        | _        nd |c| _        | _        |                     ¦   «         | _        d | _        d|v r5|d         j        | _        t          d„ | j        D ¦   «         ¦  «        | _        t          ¦   «         | _        d | _        d| _        d | _        t          ¦   «         | _        d| _        i | _        d | _        d | _        d | _        g | _        i i dœ| _        i | _        i | _        i | _        g | _        d | _        i | _        t          ¦   «         | _        i | _        t          ¦   «         | _        i | _         i | _!        tE          tF          ¦  «        | _$        d | _%        d | _&        g | _'        d | _(        d | _)        i | _*        i | _+        i | _,        i | _-        i | _.        i | _/        i | _0        i | _1        i | _2        i | _3        i | _4        i | _5        i | _6        d S )NÚfvarc                 ó   — g | ]	}|j         ‘Œ
S © )ÚaxisTag)r?   Úaxs     r4   ú
<listcomp>z$Builder.__init__.<locals>.<listcomp>{   s   € Ð0Ð0Ð0 �”Ð0Ð0Ð0r6   r   F)rE   rD   )7r2   Ú
isinstancer   Ú	parseTreeÚfileÚgetReverseGlyphMapÚglyphMapÚvarstorebuilderÚaxesr%   ÚsetÚdefault_language_systems_Úscript_Úlookupflag_Úlookupflag_markFilterSet_Ú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_Ú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)Úselfr2   r3   s      r4   Ú__init__zBuilder.__init__n   s  € ØˆŒ	õ �k¥;Ñ/Ô/ð 	:Ø(3°TÐ%ˆDŒN˜DœI˜Ià(,¨kÐ%ˆDŒN˜DœIØ×/Ò/Ñ1Ô1ˆŒØ#ˆÔØ�Tˆ>ˆ>Ø˜VœÔ)ˆDŒIÝ#8Ø0Ð0 d¤iÐ0Ñ0Ô0ñ$ô $ˆDÔ õ *-©¬ˆÔ&ØˆŒØˆÔØ)-ˆÔ&Ý #¡¤ˆÔØ%*ˆÔ"Ø ˆÔØˆÔØ $ˆÔØ!%ˆÔØˆŒØ)+°RÐ 8Ð 8ˆÔØˆŒØ"$ˆÔØ#%ˆÔ à ˆÔØ"ˆÔØ "ˆÔå ™UœUˆÔØ!#ˆÔå!™eœeˆÔØ"$ˆÔØ$&ˆÔ!Ý)­$Ñ/Ô/ˆÔà $ˆÔà!ˆÔàˆŒà $ˆÔØ#ˆÔàˆÔØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØ"$ˆÔØ!ˆÔàˆŒ	àˆŒ
àˆŒ
àˆŒ
à ˆÔð ˆÔÐÐr6   NFc                 óÌ  ‡ — ‰ j         €1t          ‰ j        ‰ j        ¦  «                             ¦   «         ‰ _         ‰ j                              ‰ ¦  «         |€‰ j        }nPt          |¦  «        }|‰ j        z
  }|r5d                     t          |¦  «        ¦  «        }t          d|› d�¦  «        ‚d|v r‰                      ¦   «          d|v r‰                      ¦   «          d|v r‰                      ¦   «          d|v r‰                      ¦   «          d|v r‰                      ¦   «          d	|v r‰                      ¦   «          d
|v r‰                      ¦   «          dD ]›}||vrŒ‰                      |¦  «        }‰ j        r‰                      ||¦  «         |j        j        dk    s |j        j        dk    s|j        j        dk    r!t7          |¦  «        x}‰ j        |<   ||_        ŒŠ|‰ j        v r‰ j        |= Œœt=          ˆ fd„dD ¦   «         ¦  «        r-d	‰ j        v r$t?          ‰ j        ¦  «        ‰ j        d	         _         d|v r2‰  !                    ¦   «         }|r|‰ j        d<   nd‰ j        v r‰ j        d= d|v r2‰  "                    ¦   «         }	|	r|	‰ j        d<   nd‰ j        v r‰ j        d= |s$tF          j$         %                    tL          ¦  «        r‰  '                    ¦   «          d S d S )Nz, z9The following tables were requested but are unsupported: ú.rE   rG   rH   rI   r8   rF   rJ   ©rD   rE   r   c              3   ó*   •K  — | ]}|‰j         v V — Œd S r>   )r2   )r?   r@   r…   s     €r4   rA   z Builder.build.<locals>.<genexpr>å   s*   øè è € Ð<Ð< Cˆs�d”iÐÐ<Ð<Ð<Ð<Ð<Ð<r6   rC   rB   )(rS   r   rT   rV   Úparser1   ÚsupportedTablesÚ	frozensetÚjoinÚsortedÚNotImplementedErrorÚbuild_feature_aalt_Ú
build_headÚ
build_hheaÚ
build_vheaÚ
build_nameÚ
build_OS_2Ú
build_STATÚ	makeTablerh   ÚmakeFeatureVariationsÚ
ScriptListÚScriptCountÚFeatureListÚFeatureCountÚ
LookupListÚLookupCountr   r2   ÚtableÚanyr   ÚusMaxContextÚ	buildGDEFÚ	buildBASEÚosÚenvironÚgetr   Ú	buildDebg)
r…   r.   r/   ÚunsupportedÚunsupported_stringr@   r    Ú	fontTableÚgdefÚbases
   `         r4   r1   zBuilder.build¸   sI  ø€ ØŒ>Ð!Ý# D¤I¨t¬}Ñ=Ô=×CÒCÑEÔEˆDŒNØŒ×Ò˜TÑ"Ô"Ð"àˆ>ØÔ)ˆFˆFå˜vÑ&Ô&ˆFØ  4Ô#7Ñ7ˆKØð Ø%)§Y¢Y­v°kÑ/BÔ/BÑ%CÔ%CÐ"Ý)ð-Ø)ð-ð -ð -ñô ð ð �VÐÐØ×$Ò$Ñ&Ô&Ð&Ø�VÐÐØ�OŠOÑÔÐØ�VÐÐØ�OŠOÑÔÐØ�VÐÐØ�OŠOÑÔÐØ�VÐÐØ�OŠOÑÔÐØ�VÐÐØ�OŠOÑÔÐØ�VÐÐØ�OŠOÑÔÐØ#ð 	#ð 	#ˆCØ˜&Ð Ð ØØ—N’N 3Ñ'Ô'ˆEØÔ'ð 7Ø×*Ò*¨5°#Ñ6Ô6Ð6àÔ Ô,¨qÒ0Ð0ØÔ$Ô1°AÒ5Ð5ØÔ#Ô/°!Ò3Ð3å-5°c©]¬]Ð:�	˜DœI c™NØ"'�	”�Ø˜œ	Ð!Ð!Ø”I˜c�NøÝÐ<Ð<Ð<Ð<Ð+;Ð<Ñ<Ô<Ñ<Ô<ð 	CÀÈ4Ì9ÐATÐATÝ-7¸¼	Ñ-BÔ-BˆDŒI�fÔÔ*Ø�VÐÐØ—>’>Ñ#Ô#ˆDØð &Ø$(�”	˜&Ñ!Ð!Ø˜4œ9Ð$Ð$Ø”I˜fÐ%Ø�VÐÐØ—>’>Ñ#Ô#ˆDØð &Ø$(�”	˜&Ñ!Ð!Ø˜4œ9Ð$Ð$Ø”I˜fÐ%Øð 	•B”J—N’NÕ#7Ñ8Ô8ð 	Ø�NŠNÑÔÐÐÐð	ð 	r6   c                 óŒ   —  || j         |¦  «        }| j        |_        | j        |_        | j                             |¦  «         |S r>   )r2   r\   Ú
lookupflagr]   ÚmarkFilterSetrd   Úappend)r…   ÚlocationÚbuilder_classÚresults       r4   Úget_chained_lookup_zBuilder.get_chained_lookup_ö   sF   € Ø�˜tœy¨(Ñ3Ô3ˆØ Ô,ˆÔØ#Ô=ˆÔØŒ×Ò˜VÑ$Ô$Ð$Øˆr6   c                 ó†   — | j         D ]8\  }}|||f}| j                             |g ¦  «                             |¦  «         Œ9d S r>   )r^   rf   Ú
setdefaultr±   )r…   ÚlookupÚfeature_nameÚscriptÚlangÚkeys         r4   Úadd_lookup_to_feature_zBuilder.add_lookup_to_feature_ý   sW   € Ø Ô1ð 	>ð 	>‰LˆF�DØ˜4 Ð.ˆCØŒN×%Ò% c¨2Ñ.Ô.×5Ò5°fÑ=Ô=Ð=Ð=ð	>ð 	>r6   c                 ó  — | j         rIt          | j         ¦  «        |k    r1| j         j        | j        k    r| j         j        | j        k    r| j         S | j        r| j         rt          d|¦  «        ‚ || j        |¦  «        | _         | j        | j         _        | j        | j         _        | j	         
                    | j         ¦  «         | j        r| j         | j        | j        <   | j        r |                      | j         | j        ¦  «         | j         S )NzOWithin a named lookup block, all rules must be of the same lookup type and flag)ra   Útyper¯   r\   r°   r]   rb   r   r2   rd   r±   r`   rc   r½   )r…   r²   r³   s      r4   Úget_lookup_zBuilder.get_lookup_  s"  € àÔð	$å�TÔ%Ñ&Ô&¨-Ò7Ð7ØÔ Ô+¨tÔ/?Ò?Ð?ØÔ Ô.°$Ô2PÒPÐPàÔ#Ð#ØÔ ð 	 TÔ%5ð 	Ý!ð0àñô ð ð
 )˜=¨¬°HÑ=Ô=ˆÔØ&*Ô&6ˆÔÔ#Ø)-Ô)GˆÔÔ&ØŒ×Ò˜TÔ-Ñ.Ô.Ð.ØÔ ð 	Jà9=Ô9IˆDÔ Ô 5Ñ6ØÔ!ð 	Rð ×'Ò'¨Ô(8¸$Ô:PÑQÔQÐQØÔÐr6   c           	      óR  ‡‡— | j         s	| j        sd S d„ | j                             ¦   «         D ¦   «         }| j         dgz   D ]Ü\  }Šˆfd„| j                             ¦   «         D ¦   «         }|s!‰dk    rt	          j        |›d‰›d�¦  «         ŒM|D ]Œ\  }}}}|D ]‚}t          |t          ¦  «        s|g}|D ]e}|                     ¦   «                              ¦   «         D ]<\  }	}
| 	                    |	g ¦  «        Š‰ 
                    ˆfd„|
D ¦   «         ¦  «         Œ=ŒfŒƒŒ�ŒÝd„ |                     ¦   «         D ¦   «         }d	„ |                     ¦   «         D ¦   «         }|s|sd S d
„ | j                             ¦   «         D ¦   «         | _        | j        }g | _        |                      | j        d¦  «         |r"|                      |t          ¦  «        }||_        |r"|                      |t"          ¦  «        }||_        |                      ¦   «          | j         
                    |¦  «         d S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS rN   )rq   )r?   ÚgÚas      r4   ú
<dictcomp>z/Builder.build_feature_aalt_.<locals>.<dictcomp>$  s$   € ÐKÐKÐK¡T Q¨�a�˜a™œÐKÐKÐKr6   )NÚaaltc                 ó6   •— g | ]\  \  }}}}|‰k    ¯||||f‘ŒS rN   rN   )r?   rº   r»   ÚfeatureÚlookupsr8   s        €r4   rQ   z/Builder.build_feature_aalt_.<locals>.<listcomp>&  s>   ø€ ð ð ð á4Ñ+�V˜T 7¨WØ˜d’?�?ð ˜˜w¨Ð0à"�?�?r6   rÆ   z
: Feature z has not been definedc              3   ó$   •K  — | ]
}|‰v¯|V — Œd S r>   rN   )r?   rÃ   Úalts_for_glyphs     €r4   rA   z.Builder.build_feature_aalt_.<locals>.<genexpr>6  s6   øè è € ð 2ð 2Ø&'°1¸NÐ3JÐ3J Ð3JÐ3JÐ3JÐ3Jð2ð 2r6   c                 óL   — i | ]!\  }}t          |¦  «        d k    ¯||d         “Œ"S )é   r   ©Úlen©r?   ÚglyphÚrepls      r4   rÅ   z/Builder.build_feature_aalt_.<locals>.<dictcomp>9  s5   € ð 
ð 
ð 
Ù*˜u dÅCÈÁIÄIÐQRÂNÀNˆE�4˜”7ÀNÀNÀNr6   c                 ó@   — i | ]\  }}t          |¦  «        d k    ¯||“ŒS )rÍ   rÎ   rÐ   s      r4   rÅ   z/Builder.build_feature_aalt_.<locals>.<dictcomp><  s*   € ÐTÐTÐT¡ ¨ÅcÈ$ÁiÄiÐRSÂmÀm�˜ÀmÀmÀmr6   c                 ó4   — i | ]\  \  }}}}|d k    ¯|||f|“ŒS )rÆ   rN   )r?   rº   r»   rÈ   rÉ   s        r4   rÅ   z/Builder.build_feature_aalt_.<locals>.<dictcomp>?  sA   € ð 
ð 
ð 
á0Ñ'�˜˜w¨Ø˜&Ò Ð ð �T˜7Ð# Wà Ð Ð r6   )ri   rk   Úitemsrf   ÚwarningsÚwarnrR   rq   ÚgetAlternateGlyphsr·   Úextendrd   Ústart_featurerj   rÀ   r   Úmappingr   Ú
alternatesÚend_feature)r…   rÜ   r²   rÈ   rº   r»   rÉ   Ú
lookuplistr¸   rÑ   ÚaltsÚsingleÚmultiÚold_lookupsÚsingle_lookupÚmulti_lookuprË   r8   s                   @@r4   r‘   zBuilder.build_feature_aalt_  sã  øø€ ØÔ"ð 	¨4Ô+@ð 	ØˆFð
 LÐK¨TÔ-B×-HÒ-HÑ-JÔ-JÐKÑKÔKˆ
Ø"Ô1°^Ð4DÑDð 	ð 	‰NˆH�dðð ð ð à8<¼×8LÒ8LÑ8NÔ8Nðñ ô ˆGð ð ˜t vš~˜~Ý”ÀxÀxÀxÐQUÐQUÐQUÐVÑWÔWÐWØØ29ð 	ð 	Ñ.�˜˜g wØ")ð ð �JÝ% jµ$Ñ7Ô7ð 2Ø&0 \˜
Ø",ð ð ˜Ø+1×+DÒ+DÑ+FÔ+F×+LÒ+LÑ+NÔ+Nð ð ™K˜E 4Ø-7×-BÒ-BÀ5È"Ñ-MÔ-M˜NØ*×1Ò1ð 2ð 2ð 2ð 2Ø+/ð2ñ 2ô 2ñ ô ð ð ðððð	ð
ð 
Ø.8×.>Ò.>Ñ.@Ô.@ð
ñ 
ô 
ˆð UÐT°
×0@Ò0@Ñ0BÔ0BÐTÑTÔTˆØð 	˜eð 	ØˆFð
ð 
à48´N×4HÒ4HÑ4JÔ4Jð
ñ 
ô 
ˆŒð
 ”mˆØˆŒØ×Ò˜4Ô.°Ñ7Ô7Ð7Øð 	+Ø ×,Ò,¨XÕ7IÑJÔJˆMØ$*ˆMÔ!Øð 	,Ø×+Ò+¨HÕ6KÑLÔLˆLØ&+ˆLÔ#Ø×ÒÑÔÐØŒ×Ò˜[Ñ)Ô)Ð)Ð)Ð)r6   c                 óú   — | j         sd S | j                             d¦  «        }|sIt          d¦  «        x}| j        d<   |                     d| j        ¦  «         d|_        dx|_        |_        | j         |_        d S )NrG   s6                                                         g      ð?l   ùe )	rt   r2   r§   r   Ú	decompileÚtableVersionÚcreatedÚmodifiedÚfontRevision©r…   r    s     r4   r’   zBuilder.build_headP  sƒ   € ØÔ!ð 	ØˆFØ”	—’˜fÑ%Ô%ˆØð 	8Ý(0°Ñ(8Ô(8Ð8ˆE�D”I˜fÑ%Ø�OŠO˜J¨¬	Ñ2Ô2Ð2Ø!$ˆEÔØ-7Ð7ˆEŒM˜EœNØ!Ô/ˆÔÐÐr6   c                 ó¢  — | j         sd S | j                             d¦  «        }|s;t          d¦  «        x}| j        d<   |                     d| j        ¦  «         d|_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d| j         v r| j         d         |_	        d S d S )NrH   ó$                                       é   ÚcaretoffsetÚascenderÚ	descenderÚlinegap)
r€   r2   r§   r   ræ   rç   ÚcaretOffsetÚascentÚdescentÚlineGaprë   s     r4   r“   zBuilder.build_hhea[  sÜ   € ØŒzð 	ØˆFØ”	—’˜fÑ%Ô%ˆØð 	,Ý(0°Ñ(8Ô(8Ð8ˆE�D”I˜fÑ%Ø�OŠO˜J¨¬	Ñ2Ô2Ð2Ø!+ˆEÔØ˜DœJÐ&Ð&Ø $¤
¨=Ô 9ˆEÔØ˜œÐ#Ð#Øœ: jÔ1ˆEŒLØ˜$œ*Ð$Ð$Ø œJ {Ô3ˆEŒMØ˜œ
Ð"Ð"Ø œJ yÔ1ˆEŒMˆMˆMð #Ð"r6   c                 ól  — | j         sd S | j                             d¦  «        }|s;t          d¦  «        x}| j        d<   |                     d| j        ¦  «         d|_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d S d S )NrI   rí   i  ÚverttypoascenderÚverttypodescenderÚverttypolinegap)	r�   r2   r§   r   ræ   rç   rô   rõ   rö   rë   s     r4   r”   zBuilder.build_vheal  sÃ   € ØŒzð 	ØˆFØ”	—’˜fÑ%Ô%ˆØð 	,Ý(0°Ñ(8Ô(8Ð8ˆE�D”I˜fÑ%Ø�OŠO˜J¨¬	Ñ2Ô2Ð2Ø!+ˆEÔØ ¤Ð+Ð+Øœ:Ð&8Ô9ˆEŒLØ $¤*Ð,Ð,Ø œJÐ':Ô;ˆEŒMØ ¤
Ð*Ð*Ø œJÐ'8Ô9ˆEŒMˆMˆMð +Ð*r6   c                 ó^   — d„ |j         D ¦   «         }t          dd¦  «        D ]
}||vr|c S Œd S )Nc                 ó   — g | ]	}|j         ‘Œ
S rN   )ÚnameID)r?   r8   s     r4   rQ   z,Builder.get_user_name_id.<locals>.<listcomp>}  s   € Ð7Ð7Ð7 4�4”;Ð7Ð7Ð7r6   é   iÿ  )ÚnamesÚrange)r…   r    ÚnameIDsÚuser_name_ids       r4   Úget_user_name_idzBuilder.get_user_name_id{  sV   € à7Ð7¨5¬;Ð7Ñ7Ô7ˆÝ! # uÑ-Ô-ð 	$ð 	$ˆLØ 7Ð*Ð*Ø#Ð#Ð#Ð#ð +ð	$ð 	$r6   c                 óT  — d }|dk    rYt          j        ¦   «         }| j        \  |_        |_        |_        |_        || j        v r| j        |         |_        �nOd|_        �nF|| j	        v rA| j        s�n4|| j        v sJ ‚t          j
        ¦   «         }d|_        | j        |         |_        nü|| j        v rót          j        ¦   «         }d|_        | j                             |dfd¦  «        |_        | j                             |dfd¦  «        |_        | j                             |dfd¦  «        |_        | j                             |d¦  «        |_        | j                             |dfd¦  «        |_        t1          | j        |         ¦  «        |_        | j        |         |_        |S )NÚsizer   ÚFeatUILabelNameIDÚFeatUITooltipTextNameIDÚSampleTextNameIDÚParamUILabelNameID_0)r   ÚFeatureParamsSizers   Ú
DesignSizeÚSubfamilyIDÚ
RangeStartÚRangeEndrm   ÚSubfamilyNameIDrl   ÚFeatureParamsStylisticSetÚVersionÚUINameIDrn   ÚFeatureParamsCharacterVariantsÚFormatro   r§   r  r  r  rp   ÚNumNamedParametersÚFirstParamUILabelNameIDrÏ   rr   Ú	CharCountÚ	Character)r…   r@   Úparamss      r4   ÚbuildFeatureParamszBuilder.buildFeatureParams‚  sÏ  € ØˆØ�&Š=ˆ=ÝÔ/Ñ1Ô1ˆFð Ô%ñØÔ!ØÔ"ØÔ!Ø”à�dÔ,Ð,Ð,Ø)-Ô)?ÀÔ)D�Ô&Ñ&à)*�Ô&Ñ&Ø�DÔ&Ð&Ð&ØÔ)ð >áà˜dÔ4Ð4Ð4Ð4Ð4Ý!Ô;Ñ=Ô=�Ø!"�”Ø"&Ô"8¸Ô"=�”�Ø�DÔ'Ð'Ð'ÝÔ<Ñ>Ô>ˆFØˆFŒMØ'+Ô'>×'BÒ'BØÐ)Ð*¨Añ(ô (ˆFÔ$ð .2Ô-D×-HÒ-HØÐ/Ð0°!ñ.ô .ˆFÔ*ð '+Ô&=×&AÒ&AØÐ(Ð)¨1ñ'ô 'ˆFÔ#ð )-Ô(A×(EÒ(EÀcÈ1Ñ(MÔ(MˆFÔ%Ø-1Ô-D×-HÒ-HØÐ,Ð-¨qñ.ô .ˆFÔ*õ  # 4Ô#6°sÔ#;Ñ<Ô<ˆFÔØ#Ô2°3Ô7ˆFÔØˆr6   c                 ó€  — | j         sd S | j                             d¦  «        }|s t          d¦  «        x}| j        d<   g |_        | j         D ]×}|\  }}}}}t          |t          ¦  «        sŸ|}|| j        v rC|| j        vr,|  	                    |¦  «        | j        |<   | j        |         €J ‚| j        |         }nQ|d         | j
        v rB|| j        vr,|  	                    |¦  «        | j        |<   | j        |         €J ‚| j        |         }|                     |||||¦  «         ŒØ|j                             ¦   «          d S )Nr8   r   )ru   r2   r§   r   rÿ   rR   Úintrl   rm   r  rn   ro   ÚsetNameÚsort)	r…   r    r8   rý   Ú
platformIDÚ	platEncIDÚlangIDÚstringr@   s	            r4   r•   zBuilder.build_name­  su  € ØŒ{ð 	ØˆFØ”	—’˜fÑ%Ô%ˆØð 	Ý(0°Ñ(8Ô(8Ð8ˆE�D”I˜fÑ%ØˆEŒKØ”Kð 	Ið 	IˆDØ<@Ñ9ˆF�J 	¨6°6õ ˜f¥cÑ*Ô*ð :Ø�Ø˜$Ô,Ð,Ð,Ø $Ô"8Ð8Ð8Ø6:×6KÒ6KÈEÑ6RÔ6R˜Ô.¨sÑ3Ø#Ô5°cÔ:ÐFÐFÐFØ!Ô3°CÔ8�F�FØ˜”V˜tÔ2Ð2Ð2Ø $Ô"9Ð9Ð9Ø7;×7LÒ7LÈUÑ7SÔ7S˜Ô/°Ñ4Ø#Ô6°sÔ;ÐGÐGÐGØ!Ô4°SÔ9�FØ�MŠM˜& &¨*°iÀÑHÔHÐHÐHØŒ×ÒÑÔÐÐÐr6   c                 óh  — | j         sd S | j                             d¦  «        }|s]t          d¦  «        x}| j        d<   dt	          j        t          d¦  «        j        ¦  «        z  }|                     || j        ¦  «         d}d| j         v r| j         d         |_	        d| j         v rrt          d¦  «         
                    ¦   «         }| j         d         \
  |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        ||_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d	| j         v r| j         d	         |_        d
| j         v r| j         d
         |_        d| j         v r%t7          d| j         d         z   dz   ¦  «        |_        d| j         v r| j         d         |_        d| j         v r| j         d         |_        d| j         v r |                     | j         d         ¦  «         d| j         v r1|                       | j         d         ¦  «        }|\  |_!        |_"        d}d| j         v r| j         d         |_#        d}d| j         v r| j         d         |_$        d}d| j         v r| j         d         |_%        d}d| j         v r| j         d         |_&        d}d„ }tO          ||j(        ¦  «        |_(        |dk    r ||d¦  «         |dk    r ||d¦  «         |dk    r ||d¦  «         d S d S )NrF   ó    r   ÚfstypeÚpanoseÚtypoascenderÚtypodescenderÚtypolinegapÚ	winascentÚ
windescentÚvendorz'''ÚweightclassÚ
widthclassÚunicoderangeÚcodepagerangerÍ   Úxheighté   Ú	capheightÚloweropsizeé   Úupperopsizec                 óR   — |D ]#}t          | |¦  «        st          | |d¦  «         Œ$d S ©Nr   )ÚhasattrÚsetattr)r    ÚattrsÚattrs      r4   Ú	checkattrz%Builder.build_OS_2.<locals>.checkattr  s@   € Øð ,ð ,�Ý˜u dÑ+Ô+ð ,Ý˜E 4¨Ñ+Ô+Ð+øð,ð ,r6   )ÚulCodePageRange1ÚulCodePageRange2)ÚsxHeightÚ
sCapHeightÚusDefaultCharÚusBreakCharr¢   )ÚusLowerOpticalPointSizeÚusUpperOpticalPointSize))r   r2   r§   r   r   Úcalcsizer   ÚOS2_format_0ræ   ÚfsTypeÚPanoseÚbFamilyTypeÚbSerifStyleÚbWeightÚbProportionÚ	bContrastÚbStrokeVariationÚ	bArmStyleÚbLetterFormÚbMidlineÚbXHeightr&  ÚsTypoAscenderÚsTypoDescenderÚsTypoLineGapÚusWinAscentÚusWinDescentr   Ú	achVendIDÚusWeightClassÚusWidthClassÚsetUnicodeRangesÚbuild_codepages_r>  r?  r@  rA  rD  rE  ÚmaxÚversion)r…   r    Údatar_  r&  Úpagesr=  s          r4   r–   zBuilder.build_OS_2Ç  sz  € ØŒyð 	ØˆFØ”	—’˜fÑ%Ô%ˆØð 	-Ý(0°Ñ(8Ô(8Ð8ˆE�D”I˜fÑ%Ø�7Ô+­N¸6Ñ,BÔ,BÔ,OÑPÔPÑPˆDØ�OŠO˜D $¤)Ñ,Ô,Ð,ØˆØ�t”yÐ Ð Øœ9 XÔ.ˆEŒLØ�t”yÐ Ð Ý# FÑ+Ô+×2Ò2Ñ4Ô4ˆFð ”	˜(Ô#ñØÔ"ØÔ"Ø”ØÔ"ØÔ ØÔ'ØÔ ØÔ"Ø”Ø”à!ˆEŒLØ˜TœYÐ&Ð&Ø"&¤)¨NÔ";ˆEÔØ˜dœiÐ'Ð'Ø#'¤9¨_Ô#=ˆEÔ Ø˜DœIÐ%Ð%Ø!%¤¨=Ô!9ˆEÔØ˜$œ)Ð#Ð#Ø $¤	¨+Ô 6ˆEÔØ˜4œ9Ð$Ð$Ø!%¤¨<Ô!8ˆEÔØ�t”yÐ Ð Ý& u¨t¬y¸Ô/BÑ'BÀUÑ'JÑKÔKˆEŒOØ˜DœIÐ%Ð%Ø"&¤)¨MÔ":ˆEÔØ˜4œ9Ð$Ð$Ø!%¤¨<Ô!8ˆEÔØ˜TœYÐ&Ð&Ø×"Ò" 4¤9¨^Ô#<Ñ=Ô=Ð=Ø˜dœiÐ'Ð'Ø×)Ò)¨$¬)°OÔ*DÑEÔEˆEØ=BÑ:ˆEÔ" EÔ$:ØˆGØ˜œ	Ð!Ð!Ø!œY yÔ1ˆEŒNØˆGØ˜$œ)Ð#Ð#Ø#œy¨Ô5ˆEÔØˆGØ˜DœIÐ%Ð%Ø,0¬I°mÔ,DˆEÔ)ØˆGØ˜DœIÐ%Ð%Ø,0¬I°mÔ,DˆEÔ)ØˆGð	,ð 	,ð 	,õ
 ˜G U¤]Ñ3Ô3ˆŒà�aŠ<ˆ<ØˆI�eÐEÑFÔFÐFØ�aŠ<ˆ<ØˆIØðñ	ô 	ð 	ð �aŠ<ˆ<ØˆI�eÐSÑTÔTÐTÐTÐTð ˆ<r6   c                 óæ   — dD ]}|| j         v rt          |› d�|¦  «        ‚Œt          |t          ¦  «        r|| j         d<   d S t          |t          ¦  «        r|| j         d<   d S t          |¦  «        ‚)N)ÚElidedFallbackNameÚElidedFallbackNameIDz is already set.rd  rc  )r‚   r   rR   r  rq   ÚAssertionError)r…   Úvaluer²   Útokens       r4   ÚsetElidedFallbackNamezBuilder.setElidedFallbackName  s¡   € ð Dð 	ð 	ˆEØ˜œ
Ð"Ð"Ý%ØÐ.Ð.Ð.Øñô ð ð #õ
 �e�SÑ!Ô!ð 	(Ø16ˆDŒJÐ-Ñ.Ð.Ð.Ý˜�tÑ$Ô$ð 	(Ø/4ˆDŒJÐ+Ñ,Ð,Ð,å  Ñ'Ô'Ð'r6   c                 óH  — d| j         vr
g | j         d<   |j        d„ | j         d         D ¦   «         v rt          d|j        › d�|¦  «        ‚|j        d„ | j         d         D ¦   «         v rt          d|j        › d�|¦  «        ‚| j         d                              |¦  «         d S )NÚ
DesignAxesc              3   ó$   K  — | ]}|j         V — Œd S r>   )r@   ©r?   Úrs     r4   rA   z(Builder.addDesignAxis.<locals>.<genexpr>.  s$   è è € ÐFÐF¨˜aœeÐFÐFÐFÐFÐFÐFr6   z$DesignAxis already defined for tag "z".c              3   ó$   K  — | ]}|j         V — Œd S r>   )Ú	axisOrderrl  s     r4   rA   z(Builder.addDesignAxis.<locals>.<genexpr>3  s$   è è € Ð#RÐ#R°A A¤KÐ#RÐ#RÐ#RÐ#RÐ#RÐ#Rr6   z+DesignAxis already defined for axis number rˆ   )r‚   r@   r   ro  r±   )r…   Ú
designAxisr²   s      r4   ÚaddDesignAxiszBuilder.addDesignAxis+  sÒ   € Ø˜tœzÐ)Ð)Ø')ˆDŒJ�|Ñ$ØŒ>ÐFÐF¨T¬Z¸Ô-EÐFÑFÔFÐFÐFÝ!ØI°z´~ÐIÐIÐIØñô ð ð ÔÐ#RÐ#R¸¼ÀLÔ9QÐ#RÑ#RÔ#RÐRÐRÝ!ØU¸jÔ>RÐUÐUÐUØñô ð ð 	Œ
�<Ô ×'Ò'¨
Ñ3Ô3Ð3Ð3Ð3r6   c                 ó\  — d| j         vr
g | j         d<   | j         d         D ]j}d„ |j        D ¦   «         d„ |j        D ¦   «         k    rDd„ |j        D ¦   «         d„ |j        D ¦   «         k    r |j        |j        k    rt	          d|¦  «        ‚Œk| j         d                              |¦  «         d S )NÚAxisValueRecordsc                 ó6   — h | ]}|                      ¦   «         ’ŒS rN   ©ÚasFea©r?   Úns     r4   ú	<setcomp>z-Builder.addAxisValueRecord.<locals>.<setcomp>@  s    € Ð2Ð2Ð2˜q�—’‘”Ð2Ð2Ð2r6   c                 ó6   — h | ]}|                      ¦   «         ’ŒS rN   ru  rw  s     r4   ry  z-Builder.addAxisValueRecord.<locals>.<setcomp>A  s    € Ð=Ð=Ð= !�A—G’G‘I”IÐ=Ð=Ð=r6   c                 ó6   — h | ]}|                      ¦   «         ’ŒS rN   ru  rw  s     r4   ry  z-Builder.addAxisValueRecord.<locals>.<setcomp>B  s    € Ð:Ð:Ð: 1�Q—W’W‘Y”YÐ:Ð:Ð:r6   c                 ó6   — h | ]}|                      ¦   «         ’ŒS rN   ru  rw  s     r4   ry  z-Builder.addAxisValueRecord.<locals>.<setcomp>C  s    € ÐAÐAÐA !�A—G’G‘I”IÐAÐAÐAr6   z8An AxisValueRecord with these values is already defined.)r‚   rÿ   Ú	locationsÚflagsr   r±   )r…   ÚaxisValueRecordr²   Úrecord_s       r4   ÚaddAxisValueRecordzBuilder.addAxisValueRecord:  så   € Ø T¤ZÐ/Ð/Ø-/ˆDŒJÐ)Ñ*à”zÐ"4Ô5ð 	ð 	ˆGà2Ð2 G¤MÐ2Ñ2Ô2Ø=Ð= Ô'<Ð=Ñ=Ô=ò>ð >à:Ð:¨Ô(9Ð:Ñ:Ô:ØAÐA Ô'@ÐAÑAÔAòBð Bà”M _Ô%:Ò:Ð:å%ØNØñô ð øð 	Œ
Ð%Ô&×-Ò-¨oÑ>Ô>Ð>Ð>Ð>r6   c                 ó   ‡— | j         sd S | j                              d¦  «        }|st          dd ¦  «        ‚| j                              d¦  «        }i Šg }|D ]}g ‰|j        <   Œ|��X|D �]T}i }|j        dk    r
|j        |d<   t          |j        ¦  «        dk    rá|j        d         }|j        }t          |¦  «        dk    r#|                     |d         |j	        dœ¦  «         t          |¦  «        dk    r*|                     |d         |d         |j	        d	œ¦  «         t          |¦  «        d
k    r%|\  }	}
}|                     |	|
||j	        dœ¦  «         ‰|j                  
                    |¦  «         �Œ|                     d„ |j        D ¦   «         |j	        dœ¦  «         | 
                    |¦  «         �ŒVˆfd„|D ¦   «         }| j                             d¦  «        }|s t          d¦  «        x}| j        d<   g |_	        d| j         v r9| j         d         }|                     |¦  «        }|st          d|› d�d ¦  «        ‚nd| j         v r| j         d         }t          j        | j        |||¬¦  «         d S )Nrj  zDesignAxes not definedrs  r   r~  rÍ   )rf  r8   r2  )rf  ÚlinkedValuer8   é   )ÚnominalValueÚrangeMinValueÚrangeMaxValuer8   c                 ó4   — i | ]}|j         |j        d          “ŒS )r   )r@   Úvalues)r?   Úis     r4   rÅ   z&Builder.build_STAT.<locals>.<dictcomp>x  s"   € Ð(SÐ(SÐ(SÀ¨¬°´¸´Ð(SÐ(SÐ(Sr6   )r²   r8   c                 óR   •— g | ]#}|j         |j        |j        ‰|j                 d œ‘Œ$S ))Úorderingr@   r8   r‰  )ro  r@   rÿ   )r?   rÄ   Ú
axisValuess     €r4   rQ   z&Builder.build_STAT.<locals>.<listcomp>~  sK   ø€ ð 
ð 
ð 
ð ð œKØ”uØœØ$ Q¤UÔ+ð	ð ð
ð 
ð 
r6   r8   rd  zElidedFallbackNameID z; points to a nameID that does not exist in the "name" tablerc  )r}  ÚelidedFallbackName)r‚   r§   r   r@   r~  rÏ   r}  r‰  Úupdaterÿ   r±   r2   r   ÚgetDebugNameÚotlÚbuildStatTable)r…   rX   ÚaxisValueRecordsÚformat4_locationsr@   ÚavrÚ
valuesDictr²   r‰  ÚnominalÚminValÚmaxValÚ
designAxesÚ	nameTablerý   r8   r�  s                   @r4   r—   zBuilder.build_STATL  s-  ø€ ØŒzð 	ØˆFàŒz�~Š~˜lÑ+Ô+ˆØð 	BÝ!Ð":¸DÑAÔAÐAØœ:Ÿ>š>Ð*<Ñ=Ô=ÐØˆ
ØÐØð 	%ð 	%ˆCØ"$ˆJ�s”wÑÐØÑ'Ø'ð #9ñ #9�Ø�
Ø”9˜q’=�=Ø*-¬)�J˜wÑ'Ý�s”}Ñ%Ô%¨Ò*Ð*Ø"œ}¨QÔ/�HØ%œ_�FÝ˜6‘{”{ aÒ'Ð'Ø"×)Ò)°F¸1´IÀsÄyÐ*QÐ*QÑRÔRÐRÝ˜6‘{”{ aÒ'Ð'Ø"×)Ò)à)/°¬Ø/5°a¬yØ(+¬	ðð ñô ð õ ˜6‘{”{ aÒ'Ð'Ø28Ñ/˜ ¨Ø"×)Ò)à07Ø17Ø17Ø(+¬	ð	ð ñô ð ð ˜xœ|Ô,×3Ò3°JÑ?Ô?Ð?Ñ?à×%Ò%à(SÐ(SÀSÄ]Ð(SÑ(SÔ(SØ$'¤Iðð ñô ð ð &×,Ò,¨ZÑ8Ô8Ð8Ñ8ð
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆ
ð ”I—M’M &Ñ)Ô)ˆ	Øð 	!Ý,4°VÑ,<Ô,<Ð<ˆI˜œ	 &Ñ)Ø ˆIŒOà! T¤ZÐ/Ð/Ø”ZÐ 6Ô7ˆFØ×)Ò)¨&Ñ1Ô1ˆDØð Ý%ð#¨Fð #ð #ð #ð ñ	ô ð ðð " T¤ZÐ/Ð/Ø”ZÐ 4Ô5ˆFåÔØŒIØØ'Ø%ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r6   c                 ó˜  ‡— i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1œ¥Šˆfd2„|D ¦   «         }g }t          d¦  «        D ]X}|                     d3¦  «         t          |d4z  |dz   d4z  ¦  «        D ]'}||v r||xx         d5z  cc<   Œ||xx         d6z  cc<   Œ(ŒYd7„ |D ¦   «         S )8Niä  r   iâ  rÍ   iã  r2  iå  r„  iæ  é   iç  r5  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µ  c                 ó(   •— g | ]}|‰v ¯‰|         ‘ŒS rN   rN   )r?   ÚpÚ
pages2bitss     €r4   rQ   z,Builder.build_codepages_.<locals>.<listcomp>Ã  s"   ø€ Ð@Ð@Ð@ !°°Z°°�
˜1”°°°r6   Ú é    Ú1Ú0c                 ó>   — g | ]}t          |d d d…         ¦  «        ‘ŒS )Néÿÿÿÿ)r   )r?   r¸  s     r4   rQ   z,Builder.build_codepages_.<locals>.<listcomp>Ì  s*   € Ð3Ð3Ð3¨•
˜1˜T˜T˜r˜Tœ7Ñ#Ô#Ð3Ð3Ð3r6   )r   r±   )r…   ra  ÚbitsrŠ  Újr¹  s        @r4   r]  zBuilder.build_codepages_¡  sÍ  ø€ ð 
Ø�!ð 
à�!ð 
ð �!ð 
ð �!ð	 
ð
 �!ð 
ð �!ð 
ð �!ð 
ð �!ð 
ð �!ð 
ð �ð 
ð �ð 
ð �ð 
ð �ð 
ð �ð 
ð �"ð 
ð  �ð! 
ð" �ð# 
ð$ ØØØØØØØØØØØØØð? 
ð  
ð  
ˆ
ðB AÐ@Ð@Ð@ uÐ@Ñ@Ô@ˆØˆÝ�q‘”ð 	$ð 	$ˆAØ�LŠL˜ÑÔÐÝ˜1˜r™6 A¨¡E¨R¡<Ñ0Ô0ð $ð $�Ø˜�9�9Ø˜!�H�H”H ‘O�H�H‘H�Hà˜!�H�H”H ‘O�H�H‘H�Hð	$ð
 4Ð3¨UÐ3Ñ3Ô3Ð3r6   c                 ó  — | j         s	| j        sd S t          j        ¦   «         }d|_        |                      | j         ¦  «        |_        |                      | j        ¦  «        |_        t          d¦  «        }||_	        |S )Nrî   rB   )
rv   rw   r   rB   r  ÚbuildBASEAxisÚ	HorizAxisÚVertAxisr   r    )r…   r­   r´   s      r4   r¤   zBuilder.buildBASEÎ  sw   € ØÔ$ð 	¨TÔ-Að 	Ø�4ÝŒ}‰ŒˆØ!ˆŒØ×+Ò+¨DÔ,AÑBÔBˆŒØ×*Ò*¨4Ô+?Ñ@Ô@ˆŒå˜&Ñ!Ô!ˆØˆŒØˆr6   c                 ó¸  — |sd S |\  }}t          j        ¦   «         }t          j        ¦   «         |_        ||j        _        t	          |¦  «        |j        _        t          j        ¦   «         |_        g |j        _        t	          |¦  «        |j        _        t          |¦  «        D �]2}t          j        ¦   «         }|d         |_
        t          j        ¦   «         |_        d|j        _        t          j        ¦   «         |j        _        |                     |d         ¦  «        |j        j        _        g |j        j        _        t	          |d         ¦  «        |j        j        _        |d         D ]G}t          j        ¦   «         }d|_        ||_        |j        j        j                             |¦  «         ŒH|j        j                             |¦  «         �Œ4|S )Nr   rÍ   r2  )r   ÚAxisÚBaseTagListÚBaselineTagrÏ   ÚBaseTagCountÚBaseScriptListÚBaseScriptRecordÚBaseScriptCountr�   ÚBaseScriptTagÚ
BaseScriptÚBaseLangSysCountÚ
BaseValuesÚindexÚDefaultIndexÚ	BaseCoordÚBaseCoordCountr  Ú
Coordinater±   )r…   ÚaxisÚbasesÚscriptsrº   ÚrecordÚcÚcoords           r4   rÃ  zBuilder.buildBASEAxisÚ  s–  € Øð 	ØˆFØ‰ˆˆwÝŒ}‰ŒˆÝ#Ô/Ñ1Ô1ˆÔØ',ˆÔÔ$Ý(+¨E©
¬
ˆÔÔ%Ý&Ô5Ñ7Ô7ˆÔØ/1ˆÔÔ,Ý.1°'©l¬lˆÔÔ+Ý˜W‘o”oð 	@ñ 	@ˆFÝÔ.Ñ0Ô0ˆFØ#)¨!¤9ˆFÔ Ý (Ô 3Ñ 5Ô 5ˆFÔØ12ˆFÔÔ.Ý+3Ô+>Ñ+@Ô+@ˆFÔÔ(Ø8=¿ºÀFÈ1ÄIÑ8NÔ8NˆFÔÔ(Ô5Ø57ˆFÔÔ(Ô2Ý:=¸fÀQ¼i¹.¼.ˆFÔÔ(Ô7Ø˜A”Yð Eð E�Ý Ô*Ñ,Ô,�Ø �”Ø#$�Ô ØÔ!Ô,Ô6×=Ò=¸eÑDÔDÐDÐDØÔÔ0×7Ò7¸Ñ?Ô?Ð?Ñ?Øˆr6   c                 óh  — t          j        ¦   «         }|                      ¦   «         |_        t	          j        | j        | j        ¦  «        |_        t	          j	        | j
        | j        | j        ¦  «        |_        |                      ¦   «         |_        |                      ¦   «         |_        |j        rdnd|_        | j        r™| j                             ¦   «         }|red|_        ||_        |                     ¦   «         }|                     |¦  «         d| j        v r%| j        d         j                             |¦  «         | j                             ¦   «          t7          |j        |j        |j        |j        |j        f¦  «        st9          |d¦  «        rt;          d¦  «        }||_        |S d S )Ni  rî   i  rD   ÚVarStorerC   )r   rC   ÚbuildGDEFGlyphClassDef_ÚGlyphClassDefr‘  ÚbuildAttachListrx   rV   Ú
AttachListÚbuildLigCaretListry   rz   ÚLigCaretListÚbuildGDEFMarkAttachClassDef_ÚMarkAttachClassDefÚbuildGDEFMarkGlyphSetsDef_ÚMarkGlyphSetsDefr  rW   ÚfinishrÞ  ÚoptimizeÚremap_device_varidxesr2   r    r„   Úclearr¡   r9  r   )r…   r¬   ÚstoreÚ
varidx_mapr´   s        r4   r£   zBuilder.buildGDEFö  sœ  € ÝŒ}‰ŒˆØ!×9Ò9Ñ;Ô;ˆÔÝÔ-¨dÔ.@À$Ä-ÑPÔPˆŒÝÔ1ØÔ  $Ô"6¸¼ñ
ô 
ˆÔð #'×"CÒ"CÑ"EÔ"EˆÔØ $× ?Ò ?Ñ AÔ AˆÔØ%)Ô%:ÐJ�z�zÀ
ˆŒØÔð 
	%ØÔ(×/Ò/Ñ1Ô1ˆEØð NØ)�”Ø %�”Ø"Ÿ^š^Ñ-Ô-�
à×*Ò*¨:Ñ6Ô6Ð6Ø˜TœYÐ&Ð&Ø”I˜fÔ%Ô+×AÒAÀ*ÑMÔMÐMØÔ×"Ò"Ñ$Ô$Ð$ÝàÔ"Ø”ØÔ!ØÔ'ØÔ%ðñ
ô 
ð 	õ �T˜:Ñ&Ô&ð	õ ˜fÑ%Ô%ˆFØˆFŒLØˆMà�4r6   c                 óŒ  — | j         r$d„ | j                              ¦   «         D ¦   «         }nzi }| j        D ])}|                     |                     ¦   «         ¦  «         Œ*| j        j                             ¦   «         D ](}|j        D ]}| 	                    ¦   «         D ]}d||<   ŒŒŒ)|rt          j        ¦   «         }||_        |S d S )Nc                 ó    — i | ]\  }\  }}||“ŒS rN   rN   ©r?   rÃ   rÛ  Ú_s       r4   rÅ   z3Builder.buildGDEFGlyphClassDef_.<locals>.<dictcomp>  s"   € ÐLÐLÐL¡ ¡F Q¨�q˜!ÐLÐLÐLr6   r„  )r{   rÕ   rd   r�  ÚinferGlyphClassesrS   ÚmarkClassesr‰  ÚdefinitionsÚglyphSetr   rà  Ú	classDefs)r…   Úclassesr¸   Ú	markClassÚmarkClassDefrÑ   r´   s          r4   rß  zBuilder.buildGDEFGlyphClassDef_  sô   € ØÔð 		+ØLÐL¨tÔ/C×/IÒ/IÑ/KÔ/KÐLÑLÔLˆGˆGàˆGØœ-ð ;ð ;�Ø—’˜v×7Ò7Ñ9Ô9Ñ:Ô:Ð:Ð:Ø!œ^Ô7×>Ò>Ñ@Ô@ð +ð +�	Ø$-Ô$9ð +ð +�LØ!-×!6Ò!6Ñ!8Ô!8ð +ð +˜Ø)*˜ ™˜ð+ð+ð ð 	ÝÔ+Ñ-Ô-ˆFØ&ˆFÔØˆMà�4r6   c                 óˆ   — d„ | j                              ¦   «         D ¦   «         }|sd S t          j        ¦   «         }||_        |S )Nc                 ó    — i | ]\  }\  }}||“ŒS rN   rN   rñ  s       r4   rÅ   z8Builder.buildGDEFMarkAttachClassDef_.<locals>.<dictcomp>-  s"   € ÐDÐDÐD™i˜a¡ ! Q�Q˜ÐDÐDÐDr6   )r|   rÕ   r   ræ  r÷  )r…   r÷  r´   s      r4   rå  z$Builder.buildGDEFMarkAttachClassDef_,  sL   € ØDÐD¨4Ô+;×+AÒ+AÑ+CÔ+CÐDÑDÔDˆ	Øð 	Ø�4ÝÔ,Ñ.Ô.ˆØ$ˆÔØˆr6   c                 óÂ   — g }t          | j                             ¦   «         d„ ¬¦  «        D ]\  }}|                     |¦  «         Œt	          j        || j        ¦  «        S )Nc                 ó   — | d         S )NrÍ   rN   )Úitems    r4   ú<lambda>z4Builder.buildGDEFMarkGlyphSetsDef_.<locals>.<lambda>7  s
   € ¸4À¼7€ r6   ©r¼   )r�   r~   rÕ   r±   r‘  ÚbuildMarkGlyphSetsDefrV   )r…   ÚsetsÚglyphsÚid_s       r4   rç  z"Builder.buildGDEFMarkGlyphSetsDef_4  sm   € ØˆÝ!ØÔ ×&Ò&Ñ(Ô(Ð.BÐ.Bð
ñ 
ô 
ð 	 ð 	 ‰KˆF�Cð �KŠK˜ÑÔÐÐÝÔ(¨¨t¬}Ñ=Ô=Ð=r6   c                 ó¨   — d| j         vr)t          d¦  «        | j         d<   i | j         d         _        | j        | j         d         j        t          <   d S )NÚDebg)r2   r   r`  re   r
   ©r…   s    r4   r¨   zBuilder.buildDebg<  sP   € Ø˜œÐ"Ð"Ý (¨Ñ 0Ô 0ˆDŒI�fÑØ%'ˆDŒI�fÔÔ"Ø8<Ô8MˆŒ	�&ÔÔÕ4Ñ5Ð5Ð5r6   c                 óæ  — |dv s
J |¦   «         ‚| j         D ]	}d |_        Œ
g }| j         D ]Ž}|j        |k    rŒt          |¦  «        |_        t	          t          |j        ¦  «        |                      |¦  «        d ¬¦  «        | j        |         t          |j        ¦  «        <   | 	                    |¦  «         Œ�g }|D ]´}	 | 	                    | 
                    ¦   «         ¦  «         Œ+# t          $ r(}t          t          |¦  «        |j        ¦  «        |‚d }~wt          $ rM}| j        |         t          |j        ¦  «                 j        }t          t          |¦  «        |¦  «        |‚d }~ww xY w|S )Nr‰   )r²   r8   rÈ   )rd   Úlookup_indexr    rÏ   r	   Ústrr²   Úget_lookup_name_re   r±   r1   r$   r   Ú	Exception)r…   r@   r¸   rÉ   Ú	otLookupsÚlÚer²   s           r4   ÚbuildLookups_zBuilder.buildLookups_B  sœ  € ØÐ&Ð&Ð&Ð&¨Ñ&Ô&Ð&Ø”mð 	'ð 	'ˆFØ"&ˆFÔÐØˆØ”mð 		#ð 		#ˆFØŒ|˜sÒ"Ð"ØÝ"% g¡,¤,ˆFÔÝCRÝ˜Vœ_Ñ-Ô-Ø×*Ò*¨6Ñ2Ô2ØðDñ Dô DˆDÔ! #Ô&¥s¨6Ô+>Ñ'?Ô'?Ñ@ð
 �NŠN˜6Ñ"Ô"Ð"Ð"Øˆ	Øð 	?ð 	?ˆAð?Ø× Ò  §¢¡¤Ñ+Ô+Ð+Ð+øÝ#ð Að Að AÝ%¥c¨!¡f¤f¨a¬jÑ9Ô9¸qÐ@øøøøÝð ?ð ?ð ?ØÔ0°Ô5µc¸!¼.Ñ6IÔ6IÔJÔS�Ý%¥c¨!¡f¤f¨hÑ7Ô7¸QÐ>øøøøð?øøøð Ðs%   Â?'C'Ã'
E.Ã1#DÄE.Ä!AE)Å)E.c                 ób
  ‡—  t          t          |d ¦  «        ¦   «         }d|_        t          j        ¦   «         |_        g |j        _        t          j        ¦   «         |_        g |j        _        t          j        ¦   «         |_        |                      |¦  «        |j        _	        i }i }i }d„ }t          | j                             ¦   «         |¬¦  «        D �]/\  }}|\  }	}
}t          t                               d„ |D ¦   «         ¦  «        ¦  «        }|dk    o|dk    }|                      ||¦  «        }t#          |¦  «        dk    r|s|sŒw|D ]v}	 | j        |         t'          |¦  «                                      |¬¦  «        | j        |         t'          |¦  «        <   ŒS# t*          $ r t-          j        d	¦  «         Y Œsw xY w||f}|                     |¦  «        }|€Àt#          |j        j        ¦  «        }t          j        ¦   «         }||_        t          j        ¦   «         |_        |                      |¦  «        |j        _        t;          |¦  «        |j        _        t#          |¦  «        |j        _        |j        j                              |¦  «         |||<   | !                    |	i ¦  «         !                    |
g ¦  «                              |¦  «         | j"                             |	|
f¦  «        |k    r|||	|
f<   �Œ1t          |                     ¦   «         ¦  «        D �]›\  }	}t          j        ¦   «         }|	|_#        t          j$        ¦   «         |_$        d |j$        _%        g |j$        _&        t          |                     ¦   «         ¦  «        D ]ç\  }
}t          j&        ¦   «         }t          j'        ¦   «         |_'        d |j'        _(        |                     |	|
f¦  «        Š‰€d
|j'        _)        n‰|j'        _)        ˆfd„|D ¦   «         |j'        _*        t#          |j'        j*        ¦  «        |j'        _+        |
dk    r|j'        |j$        _%        ŒÁ|
|_,        |j$        j&                              |¦  «         Œèt#          |j$        j&        ¦  «        |j$        _-        |j        j                              |¦  «         �Œ�t#          |j        j        ¦  «        |j        _.        t#          |j        j        ¦  «        |j        _+        t#          |j        j	        ¦  «        |j        _        |S )Nrî   c                 ób   — | d         d         | d         d         | d         d         | d         fS )Nr   r2  rÍ   rN   )Úfs    r4   r   z#Builder.makeTable.<locals>.<lambda>m  s+   €  A a¤D¨¤G¨Q¨q¬T°!¬W°a¸´d¸1´g¸qÀ¼tÐ#D€ r6   r  c              3   ó2   K  — | ]}|j         ®	|j         V — Œd S r>   )r
  )r?   r  s     r4   rA   z$Builder.makeTable.<locals>.<genexpr>w  s4   è è € ð ð Ø'(°q´~Ð7Q�A”NÐ7QÐ7QÐ7QÐ7Qðð r6   rD   r  r   )rÈ   zWfeaLib.Builder subclass needs upgrading to stash debug information. See fonttools#2065.iÿÿ  c                 ó    •— g | ]
}|‰k    ¯|‘ŒS rN   rN   )r?   rŠ  Úreq_feature_indexs     €r4   rQ   z%Builder.makeTable.<locals>.<listcomp>®  s+   ø€ ð 0ð 0ð 0Ø°!Ð7HÒ2HÐ2H�AÐ2HÐ2HÐ2Hr6   Údflt)/Úgetattrr   r  rš   ÚScriptRecordrœ   ÚFeatureRecordrž   r  ÚLookupr�   rf   rÕ   ÚtupleÚdictÚfromkeysÚany_feature_variationsrÏ   re   r  Ú_replaceÚKeyErrorrÖ   r×   r§   Ú
FeatureTagÚFeaturer  ÚFeatureParamsrq   ÚLookupListIndexrŸ   r±   r·   rg   Ú	ScriptTagÚScriptÚDefaultLangSysÚLangSysRecordÚLangSysÚLookupOrderÚReqFeatureIndexÚFeatureIndexr�   Ú
LangSysTagÚLangSysCountr›   )r…   r@   r    Úfeature_indicesÚrequired_feature_indicesrÙ  ÚsortFeatureTagr¼   rÉ   rº   r»   Úfeature_tagÚlookup_indicesÚsize_featureÚforce_featureÚixÚfeature_keyÚfeature_indexÚfrecÚlang_featuresÚsrecÚlangrecr  s                         @r4   r˜   zBuilder.makeTable\  s	  ø€ Ø,•� # tÑ,Ô,Ñ.Ô.ˆØ"ˆŒÝ#Ô.Ñ0Ô0ˆÔØ(*ˆÔÔ%Ý$Ô0Ñ2Ô2ˆÔØ*,ˆÔÔ'Ý#Ô.Ñ0Ô0ˆÔØ"&×"4Ò"4°SÑ"9Ô"9ˆÔÔð ˆØ#%Ð Øˆð EÐDˆÝ" 4¤>×#7Ò#7Ñ#9Ô#9¸~ÐNÑNÔNð ,	Iñ ,	I‰LˆC�Ø(+Ñ%ˆF�D˜+õ #Ý—’ð ð Ø,3ðñ ô ñ ô ñô ˆNð  &š=ÐB¨[¸FÒ-BˆLØ ×7Ò7¸ÀSÑIÔIˆMÝ�>Ñ"Ô" aÒ'Ð'°Ð'À]Ð'Øà$ð 	ð 	�ðØ:>Ô:OÐPSÔ:TÝ˜B™œô;ç’h s�hÑ+Ô+ð Ô)¨#Ô.­s°2©w¬wÑ7Ð7øõ  ð ð ð Ý”MðGñô ð ð ð ðøøøð '¨Ð7ˆKØ+×/Ò/°Ñ<Ô<ˆMØÐ$Ý # EÔ$5Ô$CÑ DÔ D�ÝÔ-Ñ/Ô/�Ø"-�”Ý'Ô/Ñ1Ô1�”Ø-1×-DÒ-DÀ[Ñ-QÔ-Q�”Ô*Ý/3°NÑ/CÔ/C�”Ô,Ý+.¨~Ñ+>Ô+>�”Ô(ØÔ!Ô/×6Ò6°tÑ<Ô<Ð<Ø/<� Ñ,Ø×Ò˜v rÑ*Ô*×5Ò5°d¸BÑ?Ô?×FÒFÀ}ÑUÔUÐUØÔ&×*Ò*¨F°D¨>Ñ:Ô:¸kÒIÐIØ;HÐ(¨&°$¨Ñ8ùõ &,¨G¯MªM©O¬OÑ%<Ô%<ð 	7ñ 	7Ñ!ˆF�MÝÔ(Ñ*Ô*ˆDØ#ˆDŒNÝ"œ/Ñ+Ô+ˆDŒKØ)-ˆDŒKÔ&Ø(*ˆDŒKÔ%Ý)/°×0CÒ0CÑ0EÔ0EÑ)FÔ)Fð >ð >Ñ%��oÝ"Ô0Ñ2Ô2�Ý"*Ô"2Ñ"4Ô"4�”Ø.2�”Ô+à$<×$@Ò$@À&È$ÀÑ$PÔ$PÐ!Ø$Ð,Ø6<�G”OÔ3Ð3à6G�G”OÔ3ð0ð 0ð 0ð 0Ø.ð0ñ 0ô 0�”Ô,õ 03°7´?Ô3OÑ/PÔ/P�”Ô,à˜6’>�>Ø18´�D”KÔ.Ð.à)-�GÔ&Ø”KÔ-×4Ò4°WÑ=Ô=Ð=Ð=Ý'*¨4¬;Ô+DÑ'EÔ'EˆDŒKÔ$ØÔÔ)×0Ò0°Ñ6Ô6Ð6Ñ6å'*¨5Ô+;Ô+HÑ'IÔ'IˆÔÔ$Ý),¨UÔ->Ô-LÑ)MÔ)MˆÔÔ&Ý'*¨5Ô+;Ô+BÑ'CÔ'CˆÔÔ$Øˆs   ÅAF#Æ#GÇGc                 óÀ  — i }d}| j                              ¦   «         D ]Š\  \  }}}}g ||<   |                     ¦   «         D ]g\  }}	| j        |         }
g }|	D ]3}|j        |k    rŒ|j        €J ‚|                     |j        ¦  «         d}Œ4||                              |
|f¦  «         ŒhŒ‹|r1|                     ¦   «         D ]\  }}t          | j        |||¦  «         Œd S d S )NFT)rh   rÕ   rƒ   r    r
  r±   r'   r2   )r…   r    Ú	table_tagÚfeature_varsÚhas_any_variationsrò  r4  Ú
variationsÚconditionsetÚbuildersÚraw_conditionsetÚindicesÚbÚconditions_and_lookupss                 r4   r™   zBuilder.makeFeatureVariationsÀ  sL  € ØˆØ"Ðà/3Ô/G×/MÒ/MÑ/OÔ/Oð 	Nð 	NÑ+ÑˆQ��; Ø(*ˆL˜Ñ%Ø*4×*:Ò*:Ñ*<Ô*<ð 	Nð 	NÑ&�˜hØ#'Ô#6°|Ô#DÐ Ø�Ø!ð .ð .�AØ”w )Ò+Ð+Ø Øœ>Ð5Ð5Ð5Ø—N’N 1¤>Ñ2Ô2Ð2Ø)-Ð&Ð&Ø˜[Ô)×0Ò0Ð2BÀGÐ1LÑMÔMÐMÐMð	Nð ð 	Ø7C×7IÒ7IÑ7KÔ7Kð ð Ñ3�Ð3Ý'Ø”I˜uÐ&<¸kñô ð ð ð	ð 	ðð r6   c                 óÎ   ‡— | j                              ¦   «         D ]I\  \  }}}}||k    rŒ|                     ¦   «         D ]$\  }}t          ˆfd„|D ¦   «         ¦  «        r  dS Œ%ŒJdS )Nc              3   ó.   •K  — | ]}|j         ‰k    V — Œd S r>   )r    )r?   rH  r@  s     €r4   rA   z1Builder.any_feature_variations.<locals>.<genexpr>Ü  s*   øè è € Ð>Ð>°�q”w )Ò+Ð>Ð>Ð>Ð>Ð>Ð>r6   TF)rh   rÕ   r¡   )r…   r4  r@  rò  rÈ   rC  rD  rE  s     `     r4   r   zBuilder.any_feature_variations×  s™   ø€ Ø+/Ô+C×+IÒ+IÑ+KÔ+Kð 	 ð 	 Ñ'‰OˆQ��7˜ZØ˜+Ò%Ð%ØØ*4×*:Ò*:Ñ*<Ô*<ð  ð  Ñ&�˜hÝÐ>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ð  Ø˜4˜4˜4ð ð ð ˆur6   c                 ód   — d„ | j                              ¦   «         D ¦   «         }||v r||         S d S )Nc                 ó   — i | ]\  }}||“Œ	S rN   rN   )r?   ÚkÚvs      r4   rÅ   z,Builder.get_lookup_name_.<locals>.<dictcomp>á  s   € Ð<Ð<Ð<™˜˜1ˆq�!Ð<Ð<Ð<r6   )r`   rÕ   )r…   r¸   Úrevs      r4   r  zBuilder.get_lookup_name_à  s<   € Ø<Ð< Ô 3× 9Ò 9Ñ ;Ô ;Ð<Ñ<Ô<ˆØ�Sˆ=ˆ=Ø�v”;ÐØˆtr6   c                 óZ  — |dk    r|dk    r| j         rt          d|¦  «        ‚|dk    r| j        rt          d|¦  «        ‚nd| _        ||f| j         v r;t          d|                     ¦   «         ›d|                     ¦   «         ›d�|¦  «        ‚| j                              ||f¦  «         d S )	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)rZ   r   r_   ÚstripÚadd)r…   r²   rº   Úlanguages       r4   Úadd_language_systemzBuilder.add_language_systemæ  sî   € à�VÒÐ ¨FÒ 2Ð 2°tÔ7UÐ 2Ý!ð=àñô ð ð
 �VÒÐØÔ)ð Ý%ð8àñô ð ðð *.ˆDÔ&Ø�HÐ Ô!?Ð?Ð?Ý!�/à—<’<‘>”>�>�> 8§>¢>Ñ#3Ô#3Ð#3Ð#3ð5àñô ð ð
 	Ô&×*Ò*¨F°HÐ+=Ñ>Ô>Ð>Ð>Ð>r6   c                 óX   — | j         rt          | j         ¦  «        S t          dh¦  «        S )N)rR  r  )rZ   r�   r  s    r4   Úget_default_language_systems_z%Builder.get_default_language_systems_ÿ  s2   € ð Ô)ð 	1Ý˜TÔ;Ñ<Ô<Ð<åÐ.Ð/Ñ0Ô0Ð0r6   c                 óœ   — |                       ¦   «         | _        d| _        d | _        || _        d| _        d | _        |dk    r	|| _        d S d S )NrR  r   rÆ   )rY  r^   r[   ra   rc   r\   r]   rj   ©r…   r²   r8   s      r4   rÚ   zBuilder.start_feature
  s[   € Ø $× BÒ BÑ DÔ DˆÔØˆŒØˆÔØ!%ˆÔØˆÔØ)-ˆÔ&Ø�6Š>ˆ>Ø"*ˆDÔÐÐð ˆ>r6   c                 ó^   — | j         €J ‚d | _         d | _        d | _        d| _        d | _        d S r8  )rc   r^   ra   r\   r]   r  s    r4   rÝ   zBuilder.end_feature  s?   € ØÔ%Ð1Ð1Ð1Ø!%ˆÔØ $ˆÔØˆÔØˆÔØ)-ˆÔ&Ð&Ð&r6   c                 óÒ   — || j         v rt          d|z  |¦  «        ‚| j        dk    rt          d|¦  «        ‚|| _        d | j         |<   d | _        | j        €d| _        d | _        d S d S )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   )r`   r   rc   rb   ra   r\   r]   r[  s      r4   Ústart_lookup_blockzBuilder.start_lookup_block  s�   € Ø�4Ô&Ð&Ð&Ý!Ø6¸Ñ=¸xñô ð ð Ô! VÒ+Ð+Ý!ðLàñô ð ð
 !%ˆÔØ$(ˆÔ˜DÑ!ØˆÔØÔ!Ð)Ø ˆDÔØ-1ˆDÔ*Ð*Ð*ð *Ð)r6   c                 ób   — | j         €J ‚d | _         d | _        | j        €d| _        d | _        d S d S r8  )rb   ra   rc   r\   r]   r  s    r4   Úend_lookup_blockzBuilder.end_lookup_block.  sH   € ØÔ$Ð0Ð0Ð0Ø $ˆÔØˆÔØÔ!Ð)Ø ˆDÔØ-1ˆDÔ*Ð*Ð*ð *Ð)r6   c                 ó’   — || j         v s
J |¦   «         ‚d | _        | j         |         }|�|                      || j        ¦  «         d S d S r>   )r`   ra   r½   rc   )r…   Úlookup_namer¸   s      r4   Úadd_lookup_callzBuilder.add_lookup_call6  s`   € Ø˜dÔ1Ð1Ð1Ð1°;Ñ1Ô1Ð1ØˆÔØÔ$ [Ô1ˆØÐØ×'Ò'¨°Ô0FÑGÔGÐGÐGÐGð Ðr6   c                 ó   — || _         d S r>   )rt   )r…   r²   Úrevisions      r4   Úset_font_revisionzBuilder.set_font_revision=  s   € Ø%ˆÔÐÐr6   c           	      óþ  ‡— t          |¦  «        dk    sJ ‚| j        dv rt          d| j        z  |¦  «        ‚| j        €t          d|¦  «        ‚d | _        | j        || j        f}| j                             |d         d|d         f¦  «        Š|dk    s|r‰r‰d d …         | j        |<   n1| j                             |g ¦  «        }ˆfd„|D ¦   «         | j        |<   t          | j        |fg¦  «        | _        |rƒ| j        |f}|| j	        v r`t          d	| 
                    ¦   «         ›d
| j         
                    ¦   «         ›d| j	        |          
                    ¦   «         ›d�|¦  «        ‚| j        | j	        |<   d S d S )Nr�  ©rÆ   r  z7Language statements are not allowed within "feature %s"zCLanguage statements are not allowed within standalone lookup blocksr   r  r2  c                 ó   •— g | ]}|‰v¯|‘Œ	S rN   rN   )r?   ÚxrÉ   s     €r4   rQ   z(Builder.set_language.<locals>.<listcomp>[  s#   ø€ Ð"NÐ"NÐ"N¨¸QÀgÐ=MÐ=M 1Ð=MÐ=MÐ=Mr6   z	Language z	 (script z ) has already specified feature z as its required feature)rÏ   rc   r   ra   r[   rf   r§   r�   r^   rg   rT  )r…   r²   rV  Úinclude_defaultÚrequiredr¼   Úcur_lookupsrÉ   s          @r4   Úset_languagezBuilder.set_language@  sß  ø€ Ý�8‰}Œ} Ò!Ð!Ð!Ð!ØÔ!Ð%5Ð5Ð5Ý!ð&Ø(,Ô(>ñ?àñô ð ð
 Ô!Ð)Ý!ð2àñô ð ð
  ˆÔàŒ|˜X tÔ'=Ð>ˆØ”.×$Ò$ c¨!¤f¨f°c¸!´fÐ%=Ñ>Ô>ˆØ˜ÒÐ /Ð°wÐØ")¨!¨!¨!¤*ˆDŒN˜3ÑÐð œ.×,Ò,¨S°"Ñ5Ô5ˆKØ"NÐ"NÐ"NÐ"N¨kÐ"NÑ"NÔ"NˆDŒN˜3ÑÝ )¨D¬L¸(Ð+CÐ*DÑ EÔ EˆÔàð 	BØ”< Ð*ˆCØ�dÔ-Ð-Ð-Ý%�oð !ŸšÑ(Ô(Ð(Ð(Øœ×*Ò*Ñ,Ô,Ð,Ð,ØÔ/°Ô4×:Ò:Ñ<Ô<Ð<Ð<ðð ñ	ô 	ð 	ð ,0Ô+AˆDÔ# CÑ(Ð(Ð(ð	Bð 	Br6   c                 ó"  — t          |¦  «        }| j                             |¦  «        }|�|S t          | j        ¦  «        dz   }|| j        |<   |D ]=}|| j        v r&| j        |         \  }}t          d|›d|›�|¦  «        ‚||f| j        |<   Œ>|S )NrÍ   úGlyph z3 already has been assigned a MarkAttachmentType at )r�   r}   r§   rÏ   r|   r   )r…   r²   r  r  rÑ   rò  Úlocs          r4   ÚgetMarkAttachClass_zBuilder.getMarkAttachClass_m  sÂ   € Ý˜6Ñ"Ô"ˆØÔ%×)Ò)¨&Ñ1Ô1ˆØˆ?ØˆJÝ�$Ô)Ñ*Ô*¨QÑ.ˆØ*-ˆÔ Ñ'Øð 	6ð 	6ˆEØ˜Ô(Ð(Ð(ØÔ)¨%Ô0‘��3Ý%�oà49°E°E¸3¸3ð@àñô ð ð
 (+¨H oˆDÔ˜UÑ#Ð#Øˆ
r6   c                 óœ   — t          |¦  «        }| j                             |¦  «        }|�|S t          | j        ¦  «        }|| j        |<   |S r>   )r�   r~   r§   rÏ   )r…   r²   r  r  s       r4   ÚgetMarkFilterSet_zBuilder.getMarkFilterSet_  sQ   € Ý˜6Ñ"Ô"ˆØÔ"×&Ò& vÑ.Ô.ˆØˆ?ØˆJÝ�$Ô&Ñ'Ô'ˆØ'*ˆÔ˜VÑ$Øˆ
r6   c                 ó¶   — |dz  }|r|                       ||¦  «        }||dz  z  }|r#|                      ||¦  «        }|dz  }|| _        nd | _        || _        d S )Néÿ   r   r¡  )rr  rt  r]   r\   )r…   r²   rf  Ú
markAttachÚ
markFilterÚmarkAttachClassr°   s          r4   Úset_lookup_flagzBuilder.set_lookup_flagˆ  s~   € Ø˜‘ˆØð 	3Ø"×6Ò6°xÀÑLÔLˆOØ˜_°Ñ1Ñ2ˆEØð 	2Ø ×2Ò2°8¸ZÑHÔHˆMØ˜D‘LˆEØ-:ˆDÔ*Ð*à-1ˆDÔ*Ø ˆÔÐÐr6   c                 ó   — | j         dv rt          d| j         z  |¦  «        ‚| j         €t          d|¦  «        ‚| j        |dfhk    rd S d | _        || _        d| _        d | _        |                      |ddd¬¦  «         d S )	Nrh  z5Script statements are not allowed within "feature %s"zAScript statements are not allowed within standalone lookup blocksr  r   TF)rk  rl  )rc   r   r^   ra   r[   r\   r]   rn  )r…   r²   rº   s      r4   Ú
set_scriptzBuilder.set_script•  s¸   € ØÔ!Ð%5Ð5Ð5Ý!ð&Ø(,Ô(>ñ?àñô ð ð
 Ô!Ð)Ý!ØVØñô ð ð Ô  f¨fÐ%5Ð$6Ò6Ð6àˆFØˆÔØˆŒØˆÔØ)-ˆÔ&Ø×Ò˜( F¸DÈ5ÐÑQÔQÐQÐQÐQr6   c                 óˆ   ‡ — g }|D ];}|�"|                      ˆ fd„|D ¦   «         ¦  «         Œ&|                      d¦  «         Œ<|S )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.
        Nc                 óN   •— g | ]!}‰j                              |j        ¦  «        ‘Œ"S rN   )r`   r§   r8   )r?   r  r…   s     €r4   rQ   z1Builder.find_lookup_builders_.<locals>.<listcomp>´  s,   ø€ ÐIÐIÐI¸�TÔ(×,Ò,¨Q¬VÑ4Ô4ÐIÐIÐIr6   )r±   )r…   rÉ   Úlookup_buildersrÞ   s   `   r4   Úfind_lookup_builders_zBuilder.find_lookup_builders_ª  sr   ø€ ð ˆØ!ð 	-ð 	-ˆJØÐ%Ø×&Ò&ØIÐIÐIÐI¸jÐIÑIÔIñô ð ð ð  ×&Ò& tÑ,Ô,Ð,Ð,ØÐr6   c                 ó„   — |D ]<}| j                              |t          ¦   «         ¦  «                             |¦  «         Œ=d S r>   )rx   r·   rY   r�  )r…   r²   r  ÚcontourPointsrÑ   s        r4   Úadd_attach_pointszBuilder.add_attach_pointsº  sM   € Øð 	Nð 	NˆEØÔ×)Ò)¨%µ±´Ñ7Ô7×>Ò>¸}ÑMÔMÐMÐMð	Nð 	Nr6   c                 ót   — | j         dk    rt          d|¦  «        ‚| j                             ||f¦  «         d S )NrÆ   z9Feature references are only allowed inside "feature aalt")rc   r   ri   r±   )r…   r²   ÚfeatureNames      r4   Úadd_feature_referencezBuilder.add_feature_reference¾  sK   € ØÔ! VÒ+Ð+Ý!ØKÈXñô ð ð 	Ô×"Ò" H¨kÐ#:Ñ;Ô;Ð;Ð;Ð;r6   c                 ó:   — | j                              |¦  «         d S r>   )rl   rU  ©r…   r@   s     r4   Úadd_featureNamezBuilder.add_featureNameÅ  s   € ØÔ×Ò˜sÑ#Ô#Ð#Ð#Ð#r6   c                 ó:   — | j                              |¦  «         d S r>   )rn   rU  rˆ  s     r4   Úadd_cv_parameterzBuilder.add_cv_parameterÈ  s   € ØÔ×Ò Ñ$Ô$Ð$Ð$Ð$r6   c                 óZ   — || j         v r| j         |xx         dz  cc<   dS d| j         |<   dS )zbAdds new items to ``self.cv_num_named_params_``
        or increments the count of existing items.rÍ   N)rp   rˆ  s     r4   Úadd_to_cv_num_named_paramsz"Builder.add_to_cv_num_named_paramsË  sJ   € ð �$Ô+Ð+Ð+ØÔ% cÐ*Ð*Ô*¨aÑ/Ð*Ð*Ñ*Ð*Ð*à-.ˆDÔ% cÑ*Ð*Ð*r6   c                 óF   — | j         |                              |¦  «         d S r>   )rr   r±   )r…   Ú	characterr@   s      r4   Úadd_cv_characterzBuilder.add_cv_characterÓ  s$   € ØÔ˜CÔ ×'Ò'¨	Ñ2Ô2Ð2Ð2Ð2r6   c                 ó2   — |r||f| _         d S ||f| _        d S r>   )rw   rv   )r…   rØ  rÙ  Úverticals       r4   Úset_base_axiszBuilder.set_base_axisÖ  s0   € Øð 	5Ø$)¨7Ð#3ˆDÔ Ð Ð à%*¨GÐ$4ˆDÔ!Ð!Ð!r6   c                 óÆ   — | j         dk    rt          d| j         z  |¦  «        ‚||||g| _        | j        D ]*\  }}||| j         f}| j                             |g ¦  «         Œ+d S )Nr  z9Parameters statements are not allowed within "feature %s")rc   r   rs   r^   rf   r·   )	r…   r²   r  r  r  r  rº   r»   r¼   s	            r4   Úset_size_parameterszBuilder.set_size_parametersÜ  s”   € ð Ô! VÒ+Ð+Ý!ð&Ø(,Ô(>ñ?àñô ð ð
 ",¨[¸*ÀhÐ OˆÔØ Ô1ð 	/ð 	/‰LˆF�DØ˜4 Ô!7Ð8ˆCØŒN×%Ò% c¨2Ñ.Ô.Ð.Ð.ð	/ð 	/r6   c                 ó.  — | j         dk    rP|                     ¦   «         D ]9\  }}| j                             |g ¦  «        }||vr|                     |¦  «         Œ:d S |s|s|r|                      ||||¦  «         d S |                      |t          ¦  «        }	|                     ¦   «         D ]i\  }}||	j        v rQ||	j        |         k    rt           
                    d|||¦  «         n"t          d|›d|	j        |         ›d�|¦  «        ‚||	j        |<   Œjd S )NrÆ   zDRemoving duplicate single substitution from glyph "%s" to "%s" at %sz*Already defined rule for replacing glyph "z" by "ú")rc   rÕ   rk   r·   r±   Úadd_single_subst_chained_rÀ   r   rÛ   ÚlogÚinfor   )
r…   r²   ÚprefixÚsuffixrÛ   Ú
forceChainÚ
from_glyphÚto_glyphrß   r¸   s
             r4   Úadd_single_substzBuilder.add_single_substí  sf  € ØÔ! VÒ+Ð+Ø(/¯ª©¬ð *ð *Ñ$�
˜HØÔ,×7Ò7¸
ÀBÑGÔG�Ø 4Ð'Ð'Ø—K’K Ñ)Ô)Ð)øØˆFØð 	�Vð 	˜zð 	Ø×*Ò*¨8°V¸VÀWÑMÔMÐMØˆFØ×!Ò! (Õ,>Ñ?Ô?ˆØ$+§M¢M¡O¤Oð 	2ð 	2Ñ ˆJ˜Ø˜Vœ^Ð+Ð+Ø˜vœ~¨jÔ9Ò9Ð9Ý—H’Hð.à"Ø Ø ñô ð ð õ *˜/à%˜:˜: v¤~°jÔ'AÐ'AÐ'AðCà ñô ð ð
 *2ˆFŒN˜:Ñ&Ð&ð!	2ð 	2r6   c                 ó6  — |s|s|r|                       |||||¦  «         d S |                      |t          ¦  «        }||j        v rI||j        |         k    r%t                               d|||rd|› �nd¦  «         nt          d|z  |¦  «        ‚||j        |<   d S )Nz@Removing duplicate multiple substitution from glyph "%s" to %s%sz at rº  z+Already defined substitution for glyph "%s")Úadd_multi_subst_chained_rÀ   r   rÛ   r™  rš  r   )r…   r²   r›  rÑ   rœ  Úreplacementsr�  r¸   s           r4   Úadd_multiple_substzBuilder.add_multiple_subst  sÞ   € ð ð 	�Vð 	˜zð 	Ø×)Ò)¨(°F¸EÀ6È<ÑXÔXÐXØˆFØ×!Ò! (Õ,@ÑAÔAˆØ�F”NÐ"Ð"Ø˜vœ~¨eÔ4Ò4Ð4Ý—’ð$àØ Ø)1Ð9Ð%˜8Ð%Ð%Ð%°rñô ð ð õ &ØAÀEÑIÈ8ñô ð ð !-ˆŒ�uÑÐÐr6   c                 óì  ‡— | j         dk    r>| j                             |g ¦  «        Š‰                     ˆfd„|D ¦   «         ¦  «         d S |s|rd|                      |t
          ¦  «        }|                      |t          ¦  «        }|j         	                    t          ||hg||g¦  «        ¦  «         n|                      |t          ¦  «        }||j        v rt          d|z  |¦  «        ‚||j        |<   d S )NrÆ   c              3   ó$   •K  — | ]
}|‰v¯|V — Œd S r>   rN   )r?   rÃ   rß   s     €r4   rA   z.Builder.add_alternate_subst.<locals>.<genexpr>%  s'   øè è € Ð@Ð@˜a°!¸4°-°-˜°-°-°-°-Ð@Ð@r6   z)Already defined alternates for glyph "%s")rc   rk   r·   rÙ   rÀ   r   rµ   r   Úrulesr±   r#   rÜ   r   )	r…   r²   r›  rÑ   rœ  ÚreplacementÚchainr¸   rß   s	           @r4   Úadd_alternate_substzBuilder.add_alternate_subst"  s  ø€ ØÔ! VÒ+Ð+ØÔ(×3Ò3°E¸2Ñ>Ô>ˆDØ�KŠKÐ@Ð@Ð@Ð@ ;Ð@Ñ@Ô@Ñ@Ô@Ð@ØˆFØð 	G�Vð 	GØ×$Ò$ XÕ/GÑHÔHˆEØ×-Ò-¨hÕ8MÑNÔNˆFØŒK×ÒÕ2°6¸U¸G¸9ÀfÈvÈhÑWÔWÑXÔXÐXÐXà×%Ò% hÕ0EÑFÔFˆFØ�FÔ%Ð%Ð%Ý!Ø;¸eÑCÀXñô ð ð $/ˆÔ˜%Ñ Ð Ð r6   c                 óò   — |s|s|r|                       |||||¦  «         d S |                      |t          ¦  «        }t          |¦  «        st	          d|¦  «        ‚t          j        |Ž D ]}||j        |<   Œd S ©Nz!Empty glyph class in substitution)Úadd_ligature_subst_chained_rÀ   r   Úallr   Ú	itertoolsÚproductÚ	ligatures)	r…   r²   r›  r  rœ  r¨  r�  r¸   rÃ   s	            r4   Úadd_ligature_substzBuilder.add_ligature_subst5  s°   € ð ð 	F�Vð 	F˜zð 	FØ×,Ò,Ø˜& &¨&°+ñô ð ð ˆFà×%Ò% hÕ0DÑEÔEˆFå�6‰{Œ{ð 	QÝ!Ð"EÀxÑPÔPÐPõ Ô" FÐ+ð 	.ð 	.ˆAØ"-ˆFÔ˜QÑÐð	.ð 	.r6   c           
      ó0  — t          |¦  «        rt          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }|j                             t          ||||                      |¦  «        ¦  «        ¦  «         d S ©Nz,Empty glyph class in contextual substitution)r®  r   rÀ   r   r§  r±   r#   r€  ©r…   r²   r›  r  rœ  rÉ   r¸   s          r4   Úadd_chain_context_substzBuilder.add_chain_context_substL  s¡   € Ý�6‰{Œ{ð 	¥# f¡+¤+ð 	µS¸±[´[ð 	Ý!Ø>Àñô ð ð ×!Ò! (Õ,DÑEÔEˆØŒ×ÒÝØ˜ ¨×(BÒ(BÀ7Ñ(KÔ(Kñô ñ	
ô 	
ð 	
ð 	
ð 	
r6   c           	      óÖ  — |rt          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }|                     |t
          ¦  «        }|€|                      |t
          ¦  «        }|j                             |¦  «         |j	         
                    t          |t          |                     ¦   «         ¦  «        g||g¦  «        ¦  «         d S r´  )r®  r   rÀ   r   Úfind_chainable_substr   rµ   rÛ   r�  r§  r±   r#   rq   Úkeys)r…   r²   r›  rœ  rÛ   r©  Úsubs          r4   r˜  z!Builder.add_single_subst_chained_X  sä   € Øð 	�c &™kœkð 	µ°V±´ð 	Ý!Ø>Àñô ð ð
 × Ò  Õ+CÑDÔDˆØ×(Ò(¨Õ2DÑEÔEˆØˆ;Ø×*Ò*¨8Õ5GÑHÔHˆCØŒ×Ò˜7Ñ#Ô#Ð#ØŒ×ÒÝ ­¨g¯lªl©n¬nÑ)=Ô)=Ð(>ÀÈÈÑNÔNñ	
ô 	
ð 	
ð 	
ð 	
r6   c                 óz  — t          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }|                     ||it
          ¦  «        }|€|                      |t
          ¦  «        }||j        |<   |j         	                    t          ||hg||g¦  «        ¦  «         d S r´  )r®  r   rÀ   r   r¸  r   rµ   rÛ   r§  r±   r#   )r…   r²   r›  rÑ   rœ  r£  r©  rº  s           r4   r¢  z Builder.add_multi_subst_chained_h  s¿   € Ý�6‰{Œ{ð 	¥# f¡+¤+ð 	Ý!Ø>Àñô ð ð × Ò  Õ+CÑDÔDˆØ×(Ò(¨%°Ð)>Õ@TÑUÔUˆØˆ;Ø×*Ò*¨8Õ5IÑJÔJˆCØ)ˆŒ�EÑØŒ×ÒÕ.¨v¸¸°yÀ&È3È%ÑPÔPÑQÔQÐQÐQÐQr6   c                 óŠ  — t          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }|                     ||¦  «        }|€|                      |t          ¦  «        }t          j        |Ž D ]}||j	        |<   Œ|j
                             t          ||||g¦  «        ¦  «         d S r´  )r®  r   rÀ   r   Úfind_chainable_ligature_substrµ   r   r¯  r°  r±  r§  r±   r#   )	r…   r²   r›  r  rœ  r¨  r©  rº  rÃ   s	            r4   r­  z#Builder.add_ligature_subst_chained_u  sÑ   € õ �6‰{Œ{ð 	¥# f¡+¤+ð 	Ý!Ø>Àñô ð ð × Ò  Õ+CÑDÔDˆØ×1Ò1°&¸+ÑFÔFˆØˆ;Ø×*Ò*¨8Õ5IÑJÔJˆCåÔ" FÐ+ð 	+ð 	+ˆAØ*ˆCŒM˜!ÑÐàŒ×ÒÕ.¨v°v¸vÈÀuÑMÔMÑNÔNÐNÐNÐNr6   c                 óš   — |st          d|¦  «        ‚|                      |t          ¦  «        }|j                             |||f¦  «         d S r¬  )r   rÀ   r   r§  r±   )r…   r²   Ú
old_prefixÚ
old_suffixrÛ   r¸   s         r4   Úadd_reverse_chain_single_substz&Builder.add_reverse_chain_single_substˆ  sU   € Øð 	QÝ!Ð"EÀxÑPÔPÐPØ×!Ò! (Õ,JÑKÔKˆØŒ×Ò˜Z¨°WÐ=Ñ>Ô>Ð>Ð>Ð>r6   c                 ó„  — |s|s|r|                       ||||¦  «         d S |                      |t          ¦  «        }|D ]�\  }}|st          d|¦  «        ‚|                      ||d¬¦  «        }	|D ]O}
	 |                     ||
|	¦  «         Œ# t          $ r(}t          t          |¦  «        |j        ¦  «        |‚d }~ww xY wŒ‚d S )Nú%Empty glyph class in positioning ruleF©ÚpairPosContext)	Úadd_single_pos_chained_rÀ   r"   r   ÚmakeOpenTypeValueRecordÚadd_posr$   r  r²   )r…   r²   r›  rœ  Úposr�  r¸   r  rf  ÚotValueRecordrÑ   r  s               r4   Úadd_single_poszBuilder.add_single_pos‘  s)  € Øð 	I�Vð 	I˜zð 	IØ×(Ò(¨°6¸6À3ÑGÔGÐGÐGÐGà×%Ò% hÕ0@ÑAÔAˆFØ!$ð Ið I‘�˜Øð Ý)Ø?Àñô ð ð !%× <Ò <Ø˜e°Eð !=ñ !ô !�ð $ð Ið I�EðIØŸš x°¸ÑFÔFÐFÐFøÝ+ð Ið Ið IÝ-­c°!©f¬f°a´jÑAÔAÀqÐHøøøøðIøøøðIðIð Is   Á2B
Â

B<Â#B7Â7B<c                 óö   — |r|st          d|¦  «        ‚|                      |t          ¦  «        }|                      ||d¬¦  «        }|                      ||d¬¦  «        }|                     |||||¦  «         d S ©NrÃ  TrÄ  )r   rÀ   r!   rÇ  ÚaddClassPair)	r…   r²   Úglyphclass1Úvalue1Úglyphclass2Úvalue2r¸   Úv1Úv2s	            r4   Úadd_class_pair_poszBuilder.add_class_pair_pos¥  s�   € Øð 	U +ð 	UÝ!Ð"IÈ8ÑTÔTÐTØ×!Ò! (­NÑ;Ô;ˆØ×)Ò)¨(°FÈ4Ð)ÑPÔPˆØ×)Ò)¨(°FÈ4Ð)ÑPÔPˆØ×Ò˜H k°2°{ÀBÑGÔGÐGÐGÐGr6   c                 óö   — |r|st          d|¦  «        ‚|                      |t          ¦  «        }|                      ||d¬¦  «        }|                      ||d¬¦  «        }|                     |||||¦  «         d S rÍ  )r   rÀ   r!   rÇ  ÚaddGlyphPair)	r…   r²   Úglyph1rÐ  Úglyph2rÒ  r¸   rÓ  rÔ  s	            r4   Úadd_specific_pair_poszBuilder.add_specific_pair_pos­  s�   € Øð 	U˜Vð 	UÝ!Ð"IÈ8ÑTÔTÐTØ×!Ò! (­NÑ;Ô;ˆØ×)Ò)¨(°FÈ4Ð)ÑPÔPˆØ×)Ò)¨(°FÈ4Ð)ÑPÔPˆØ×Ò˜H f¨b°&¸"Ñ=Ô=Ð=Ð=Ð=r6   c           	      óà   — |st          d|¦  «        ‚|                      |t          ¦  «        }|                     |||                      ||¦  «        |                      ||¦  «        ¦  «         d S ©NrÃ  )r   rÀ   r   Úadd_attachmentÚmakeOpenTypeAnchor)r…   r²   Ú
glyphclassÚentryAnchorÚ
exitAnchorr¸   s         r4   Úadd_cursive_poszBuilder.add_cursive_pos¶  s€   € Øð 	UÝ!Ð"IÈ8ÑTÔTÐTØ×!Ò! (Õ,=Ñ>Ô>ˆØ×ÒØØØ×#Ò# H¨kÑ:Ô:Ø×#Ò# H¨jÑ9Ô9ñ		
ô 	
ð 	
ð 	
ð 	
r6   c                 ó  — |                       |t          ¦  «        }|                      |||¦  «         |st          d|¦  «        ‚|D ]C\  }}|                      ||¦  «        }|D ]%}||j                             |i ¦  «        |j        <   Œ&ŒDd S rÜ  )rÀ   r   Ú
add_marks_r   rÞ  rØ  r·   r8   )	r…   r²   rØ  Úmarksr   Ú
baseAnchorrù  ÚotBaseAnchorr­   s	            r4   Úadd_mark_base_poszBuilder.add_mark_base_posÂ  s·   € Ø×"Ò" 8Õ-?Ñ@Ô@ˆØ�Š˜ '¨5Ñ1Ô1Ð1Øð 	UÝ!Ð"IÈ8ÑTÔTÐTØ%*ð 	Rð 	RÑ!ˆJ˜	Ø×2Ò2°8¸ZÑHÔHˆLØð Rð R�ØEQ�”×(Ò(¨¨rÑ2Ô2°9´>ÑBÐBðRð	Rð 	Rr6   c                 ó4  — |                       |t          ¦  «        }g }|st          d|¦  «        ‚|D ]V}i }|                      |||¦  «         |D ]#\  }}	|                      ||¦  «        ||	j        <   Œ$|                     |¦  «         ŒW|D ]}
||j        |
<   Œd S rÜ  )rÀ   r   r   rä  rÞ  r8   r±   r±  )r…   r²   r±  Ú
componentsr   ÚcomponentAnchorsrå  ÚanchorsÚ	ligAnchorrù  rÑ   s              r4   Úadd_mark_lig_poszBuilder.add_mark_lig_posÍ  s×   € Ø×"Ò" 8Õ->Ñ?Ô?ˆØÐØð 	UÝ!Ð"IÈ8ÑTÔTÐTØð 	-ð 	-ˆEØˆGØ�OŠO˜H g¨uÑ5Ô5Ð5Ø(-ð Wð WÑ$�	˜9Ø*.×*AÒ*AÀ(ÈIÑ*VÔ*V�˜	œÑ'Ð'Ø×#Ò# GÑ,Ô,Ð,Ð,Øð 	8ð 	8ˆEØ'7ˆGÔ˜eÑ$Ð$ð	8ð 	8r6   c                 ó  — |                       |t          ¦  «        }|                      |||¦  «         |st          d|¦  «        ‚|D ]C\  }}|                      ||¦  «        }|D ]%}||j                             |i ¦  «        |j        <   Œ&ŒDd S rÜ  )rÀ   r   rä  r   rÞ  Ú	baseMarksr·   r8   )	r…   r²   rð  rå  r   ræ  rù  rç  ÚbaseMarks	            r4   Úadd_mark_mark_poszBuilder.add_mark_mark_posÜ  s»   € Ø×"Ò" 8Õ-?Ñ@Ô@ˆØ�Š˜ '¨5Ñ1Ô1Ð1Øð 	UÝ!Ð"IÈ8ÑTÔTÐTØ%*ð 	!ð 	!Ñ!ˆJ˜	Ø×2Ò2°8¸ZÑHÔHˆLØ%ð !ð !�ð !ð Ô!×,Ò,¨X°rÑ:Ô:Ø”Nñð ð!ð	!ð 	!r6   c           
      ó0  — t          |¦  «        rt          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }|j                             t          ||||                      |¦  «        ¦  «        ¦  «         d S )Nú0Empty glyph class in contextual positioning rule)r®  r   rÀ   r   r§  r±   r#   r€  rµ  s          r4   Úadd_chain_context_poszBuilder.add_chain_context_posé  s¡   € Ý�6‰{Œ{ð 	¥# f¡+¤+ð 	µS¸±[´[ð 	Ý!ØBÀHñô ð ð ×!Ò! (Õ,BÑCÔCˆØŒ×ÒÝØ˜ ¨×(BÒ(BÀ7Ñ(KÔ(Kñô ñ	
ô 	
ð 	
ð 	
ð 	
r6   c                 ó  — |rt          |¦  «        rt          |¦  «        st          d|¦  «        ‚|                      |t          ¦  «        }g }|j        D ]\  }}}}|                     |¦  «         Œg }	|D ]¯\  }
}|€|	                     d ¦  «         Œ|                      ||d¬¦  «        }|                     ||
|¦  «        }|€0|  	                    |t          ¦  «        }|                     |¦  «         |
D ]}|                     |||¦  «         Œ|	                     |¦  «         Œ°t          |¦  «        t          |	¦  «        k    sJ ||	f¦   «         ‚|j                             t          |d„ |D ¦   «         ||	¦  «        ¦  «         d S )Nrô  FrÄ  c                 ó   — g | ]\  }}|‘ŒS rN   rN   )r?   rÃ   rO  s      r4   rQ   z3Builder.add_single_pos_chained_.<locals>.<listcomp>  s   € Ð(;Ð(;Ð(;©t¨q°!¨Ð(;Ð(;Ð(;r6   )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  rf  ÚotValuerº  rÑ   s                  r4   rÆ  zBuilder.add_single_pos_chained_õ  sÊ  € Øð 	�#˜f™+œ+ð 	­S°©[¬[ð 	Ý!ØBÀHñô ð ð × Ò  Õ+AÑBÔBˆØˆØ %¤ð 	$ð 	$ÑˆAˆq�!�WØ�NŠN˜7Ñ#Ô#Ð#Ð#ØˆØ ð 	ð 	‰MˆF�EØˆ}Ø—’˜DÑ!Ô!Ð!ØØ×2Ò2Ø˜%°ð 3ñ ô ˆGð ×1Ò1°'¸6À7ÑKÔKˆCØˆ{Ø×.Ò.¨xÕ9IÑJÔJ�Ø—’˜sÑ#Ô#Ð#Øð 6ð 6�Ø—’˜H e¨WÑ5Ô5Ð5Ð5Ø�KŠK˜ÑÔÐÐÝ�3‰xŒx�3˜t™9œ9Ò$Ð$Ð$ s¨D kÑ$Ô$Ð$ØŒ×ÒÝ Ð(;Ð(;°sÐ(;Ñ(;Ô(;¸VÀTÑJÔJñ	
ô 	
ð 	
ð 	
ð 	
r6   c                 ój  — |D ]¯\  }}|j         D ]¢}|j                             ¦   «         D ]†}||j        vr?|                      |t          j        |j        ¦  «        ¦  «        }|j        |f|j        |<   ŒJ|j        |         d         }	|j        |	k    rt          d|›d|	›d|j        ›�|¦  «        ‚Œ‡Œ£Œ°dS )z)Helper for add_mark_{base,liga,mark}_pos.r   rp  z cannot be in both @z and @N)
rõ  r  rö  rå  rÞ  ÚcopyÚdeepcopyÚanchorr8   r   )
r…   r²   ÚlookupBuilderrå  rò  rù  rú  ÚmarkÚotMarkAnchorÚexistingMarkClasss
             r4   rä  zBuilder.add_marks_  s   € à!ð 	ð 	‰LˆAˆyØ )Ô 5ð ð �Ø(Ô/×8Ò8Ñ:Ô:ð ð �DØ =Ô#6Ð6Ð6Ø'+×'>Ò'>Ø$¥d¤m°LÔ4GÑ&HÔ&Hñ(ô (˜ð 6?´^À\Ð4R˜Ô+¨DÑ1Ð1à,9Ô,?ÀÔ,EÀaÔ,HÐ)Ø$œ>Ð->Ò>Ð>Ý"1 /à#' 4 4Ð):Ð):Ð):¸I¼N¸Nð!Là (ñ#ô #ð ð ?ððð	ð 	r6   c                 ó:   — | j                              |¦  «         d S r>   )ra   Úadd_subtable_break)r…   r²   s     r4   r  zBuilder.add_subtable_break&  s   € ØÔ×+Ò+¨HÑ5Ô5Ð5Ð5Ð5r6   c                 ó–   — | j                              |d¦  «        \  }}|r||k    rt          d|›d|›�|¦  «        ‚||f| j         |<   d S )N©NNrp  z& was assigned to a different class at )r{   r§   r   )r…   r²   rÑ   Ú
glyphClassÚoldClassÚoldLocations         r4   ÚsetGlyphClass_zBuilder.setGlyphClass_)  sr   € Ø $Ô 4× 8Ò 8¸ÀÑ MÔ MÑˆ�+Øð 	˜ JÒ.Ð.Ý!�/à�5�5˜+˜+ð'àñô ð ð
 (2°8Ð&<ˆÔ˜UÑ#Ð#Ð#r6   c                 óæ   — |D ]}|                       ||d¦  «         Œ|D ]}|                       ||d¦  «         Œ|D ]}|                       ||d¦  «         Œ|D ]}|                       ||d¦  «         Œd S )NrÍ   r2  r„  r�  )r  )r…   r²   Ú
baseGlyphsÚligatureGlyphsÚ
markGlyphsÚcomponentGlyphsrÑ   s          r4   Úadd_glyphClassDefzBuilder.add_glyphClassDef3  s¶   € ð  ð 	4ð 	4ˆEØ×Ò ¨%°Ñ3Ô3Ð3Ð3Ø#ð 	4ð 	4ˆEØ×Ò ¨%°Ñ3Ô3Ð3Ð3Øð 	4ð 	4ˆEØ×Ò ¨%°Ñ3Ô3Ð3Ð3Ø$ð 	4ð 	4ˆEØ×Ò ¨%°Ñ3Ô3Ð3Ð3ð	4ð 	4r6   c                 ó6   — |D ]}|| j         vr
|| j         |<   Œd S r>   )rz   ©r…   r²   r  ÚcaretsrÑ   s        r4   Úadd_ligatureCaretByIndex_z!Builder.add_ligatureCaretByIndex_?  s7   € Øð 	5ð 	5ˆEØ˜DÔ0Ð0Ð0Ø.4�Ô$ UÑ+øð	5ð 	5r6   c                 ór   — t          |t          ¦  «        s|S |                      ||¦  «        \  }}|�||fS |S r>   )rR   r   ÚmakeVariablePos)r…   r²   ÚcaretÚdefaultÚdevices        r4   ÚmakeLigCaretzBuilder.makeLigCaretD  sH   € Ý˜%¥Ñ0Ô0ð 	ØˆLØ×.Ò.¨x¸Ñ?Ô?‰ˆ�ØÐØ˜VÐ$Ð$Øˆr6   c                 óX   ‡ ‡— ˆˆ fd„|D ¦   «         }|D ]}|‰ j         vr
|‰ j         |<   Œd S )Nc                 ó<   •— g | ]}‰                      ‰|¦  «        ‘ŒS rN   )r  )r?   r  r²   r…   s     €€r4   rQ   z3Builder.add_ligatureCaretByPos_.<locals>.<listcomp>M  s)   ø€ ÐIÐIÐI¸�$×#Ò# H¨eÑ4Ô4ÐIÐIÐIr6   )ry   r  s   ``   r4   Úadd_ligatureCaretByPos_zBuilder.add_ligatureCaretByPos_L  sU   øø€ ØIÐIÐIÐIÐIÀ&ÐIÑIÔIˆØð 	5ð 	5ˆEØ˜DÔ0Ð0Ð0Ø.4�Ô$ UÑ+øð	5ð 	5r6   c                 óD   — | j                              |||||g¦  «         d S r>   )ru   r±   )r…   r²   rý   r  r   r!  r"  s          r4   Úadd_name_recordzBuilder.add_name_recordR  s)   € ØŒ×Ò˜F J°	¸6À6ÐJÑKÔKÐKÐKÐKr6   c                 ó   — || j         |<   d S r>   )r   ©r…   r¼   rf  s      r4   Úadd_os2_fieldzBuilder.add_os2_fieldU  s   € ØˆŒ	�#‰ˆˆr6   c                 ó   — || j         |<   d S r>   )r€   r"  s      r4   Úadd_hhea_fieldzBuilder.add_hhea_fieldX  ó   € ØˆŒ
�3‰ˆˆr6   c                 ó   — || j         |<   d S r>   )r�   r"  s      r4   Úadd_vhea_fieldzBuilder.add_vhea_field[  r&  r6   c                 ó(  ‡‡— d| j         vrt          d|¦  «        ‚d„ | j        D ¦   «         Šˆfd„|                     ¦   «         D ¦   «         }d| j         v r2| j         d         j        Šˆfd„|                     ¦   «         D ¦   «         }|| j        |<   d S )NrL   z?Cannot add feature variations to a font without an 'fvar' tablec                 óB   — i | ]}|j         |j        |j        |j        f“ŒS rN   )rO   ÚminValueÚdefaultValueÚmaxValue)r?   r×  s     r4   rÅ   z,Builder.add_conditionset.<locals>.<dictcomp>f  s:   € ð 
ð 
ð 
àð ŒL˜4œ=¨$Ô*;¸T¼]ÐKð
ð 
ð 
r6   c           	      óv   •— i | ]5\  }\  }}|t          |‰|         ¦  «        t          |‰|         ¦  «        f“Œ6S rN   )r(   )r?   r@   ÚbottomÚtopÚaxisMaps       €r4   rÅ   z,Builder.add_conditionset.<locals>.<dictcomp>k  sZ   ø€ ð 
ð 
ð 
ñ
 #�‘]�f˜cð	 Ý˜v w¨s¤|Ñ4Ô4Ý˜s G¨C¤LÑ1Ô1ðð
ð 
ð 
r6   Úavarc                 óR   •‡— i | ]"\  Š}‰t          ˆˆfd „|D ¦   «         ¦  «        “Œ#S )c              3   óP   •K  — | ] }‰‰v rt          |‰‰         ¦  «        n|V — Œ!d S r>   )r)   )r?   rO  r×  rÛ   s     €€r4   rA   z6Builder.add_conditionset.<locals>.<dictcomp>.<genexpr>y  sU   øè è € ð ð àð =AÀG¸O¸OÕ& q¨'°$¬-Ñ8Ô8Ð8ÐQRðð ð ð ð ð r6   )r  )r?   Úcondition_ranger×  rÛ   s     @€r4   rÅ   z,Builder.add_conditionset.<locals>.<dictcomp>x  sg   øø€ ð ð ð ñ
 *�D˜/ð	 •eð ð ð ð ð à,ðñ ô ñ ô ðð ð r6   )r2   r   rX   rÕ   Úsegmentsrƒ   )r…   r²   r¼   rf  r1  rÛ   s       @@r4   Úadd_conditionsetzBuilder.add_conditionset^  sà   øø€ Ø˜œÐ"Ð"Ý!ØQØñô ð ð
ð 
àœ	ð
ñ 
ô 
ˆð

ð 
ð 
ð 
ð
 ',§k¢k¡m¤mð
ñ 
ô 
ˆð �T”YÐÐØ”i Ô'Ô0ˆGðð ð ð ð
 .3¯[ª[©]¬]ðñ ô ˆEð $)ˆÔ˜CÑ Ð Ð r6   c                 ó  — | j         st          d|¦  «        ‚| j        |_        |j        s	|j        d fS |                     | j         | j        | j                             d¦  «        ¦  «        \  }}d }|�|dk    rt          |¦  «        }||fS )Nz5Can't define a variable scalar in a non-variable fontr2  l   ÿÿ )
rW   r   rX   Ú	does_varyr  Úadd_to_variation_storer„   r2   r§   r&   )r…   r²   Ú	varscalarr  rÒ  r  s         r4   r  zBuilder.makeVariablePos‚  sª   € ØÔ#ð 	Ý!ØGÈñô ð ð œˆ	ŒØÔ"ð 	+ØÔ$ dÐ*Ð*à"×9Ò9ØÔ  $Ô"2°D´I·M²MÀ&Ñ4IÔ4Iñ
ô 
‰ˆ�ð ˆØÐ ¨*Ò!4Ð!4Ý% eÑ,Ô,ˆFà˜ˆÐr6   c                 óà   — d }t          |t          ¦  «        s'|�!t          j        t	          |¦  «        ¦  «        }||fS |                      ||¦  «        \  }}|�|�t          d|¦  «        ‚||fS )Nú4Can't define a device coordinate and variable scalar)rR   r   r‘  ÚbuildDevicer  r  r   )r…   r;  ÚdeviceTabler²   r  r  s         r4   ÚmakeAnchorPoszBuilder.makeAnchorPos–  sˆ   € ØˆÝ˜)¥^Ñ4Ô4ð 	%ØÐ&Ýœ­¨kÑ):Ô):Ñ;Ô;�Ø˜fÐ$Ð$Ø×.Ò.¨x¸ÑCÔC‰ˆ�ØÐ +Ð"9Ý!ØFÈñô ð ð ˜ˆÐr6   c                 ó–  — |€dS d\  }}|j         �&t          j        t          |j         ¦  «        ¦  «        }|j        �&t          j        t          |j        ¦  «        ¦  «        }|                      |j        |j         |¦  «        \  }}|                      |j        |j        |¦  «        \  }}t          j        |||j	        ||¦  «        }|S )zast.Anchor --> otTables.AnchorNr  )
ÚxDeviceTabler‘  r>  r  ÚyDeviceTabler@  rj  ÚyÚbuildAnchorÚcontourpoint)r…   r²   rÿ  ÚdeviceXÚdeviceYrj  rD  Ú	otlanchors           r4   rÞ  zBuilder.makeOpenTypeAnchor£  s¼   € àˆ>Ø�4Ø%Ñˆ�ØÔÐ*Ý”o¥d¨6Ô+>Ñ&?Ô&?Ñ@Ô@ˆGØÔÐ*Ý”o¥d¨6Ô+>Ñ&?Ô&?Ñ@Ô@ˆGØ×'Ò'¨¬°&Ô2EÀxÑPÔP‰
ˆˆ7Ø×'Ò'¨¬°&Ô2EÀxÑPÔP‰
ˆˆ7Ý”O A q¨&Ô*=¸wÈÑPÔPˆ	ØÐr6   c                 ó’   — i | ]D\  }}}}|                      d ¦  «        °|d                              ¦   «         |dd…         z   ||f“ŒES )ÚReservedr   rÍ   N)Ú
startswithÚlower)r?   rò  r8   ÚisDevices       r4   rÅ   zBuilder.<dictcomp>±  sb   € ð ð ð á ˆAˆt�X˜qØ�Š˜zÑ*Ô*ðØˆQŒ�Š‰Œ˜$˜q˜r˜rœ(Ñ" T¨8Ð$4ðð ð r6   c                 ó:  — |sdS i }| j                              ¦   «         D ]Ó\  }\  }}t          ||d¦  «        }|sŒ|r%t          j        t          |¦  «        ¦  «        ||<   ŒCt          |t          ¦  «        rv|dd…         dz   }	|	d                              ¦   «         |	dd…         z   }
t          ||
¦  «        rt          d|¦  «        ‚|  
                    ||¦  «        \  ||<   }|�|||	<   ŒÎ|||<   ŒÔ|r|s|j        rddinddi}t          j        |¦  «        }|S )	z&ast.ValueRecord --> otBase.ValueRecordNr   r�  ÚDevicerÍ   r=  ÚYAdvanceÚXAdvance)Ú_VALUEREC_ATTRSrÕ   r  r‘  r>  r  rR   r   rM  r   r  r’  Ú
buildValue)r…   r²   rO  rÅ  ÚvrÚastNameÚotNamerN  ÚvalÚotDeviceNameÚfeaDeviceNamer  ÚvalRecs                r4   rÇ  zBuilder.makeOpenTypeValueRecord·  se  € àð 	Ø�4àˆØ+/Ô+?×+EÒ+EÑ+GÔ+Gð 	!ð 	!Ñ'ˆGÑ'�f˜hÝ˜!˜W dÑ+Ô+ˆCØð ØØð !Ý œ_­T°#©Y¬YÑ7Ô7��6‘
�
Ý˜C¥Ñ0Ô0ð !Ø% a¨ cœ{¨XÑ5�Ø ,¨Q¤× 5Ò 5Ñ 7Ô 7¸,ÀqÀrÀrÔ:JÑ J�Ý˜1˜mÑ,Ô,ð Ý)ØNÐPXñô ð ð &*×%9Ò%9¸(ÀCÑ%HÔ%HÑ"��6‘
˜FØÐ%Ø'-�B�|Ñ$øà ��6‘
�
àð 	D "ð 	DØ$%¤JÐC�*˜a��°ZÀ°OˆBÝ” Ñ#Ô#ˆØˆr6   ©NF)F)^Ú__name__Ú
__module__Ú__qualname__r�   rŒ   r†   r1   rµ   r½   rÀ   r‘   r’   r“   r”   r  r  r•   r–   rh  rq  r�  r—   r]  r¤   rÃ  r£   rß  rå  rç  r¨   r  r˜   r™   r   r  rW  rY  rÚ   rÝ   r^  r`  rc  rf  rn  rr  rt  rz  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  r  r   r#  r%  r(  r7  r  r@  rÞ  r   ÚvalueRecordFormatrS  rÇ  rN   r6   r4   r0   r0   ]   sº  € € € € € Ø�ið  ð  ð
ð ñ  ô  ñ ô €Oð Hð Hð HðT<ð <ð <ð <ð|ð ð ð>ð >ð >ð
 ð  ð  ð61*ð 1*ð 1*ðf	0ð 	0ð 	0ð2ð 2ð 2ð":ð :ð :ð$ð $ð $ð)ð )ð )ðVð ð ð4RUð RUð RUðh(ð (ð (ð 4ð 4ð 4ð?ð ?ð ?ð$S
ð S
ð S
ðj+4ð +4ð +4ðZ
ð 
ð 
ðð ð ð8"ð "ð "ðHð ð ð$ð ð ð>ð >ð >ðNð Nð Nðð ð ð4bð bð bðHð ð ð.ð ð ðð ð ð?ð ?ð ?ð2	1ð 	1ð 	1ð+ð +ð +ð.ð .ð .ð2ð 2ð 2ð$2ð 2ð 2ðHð Hð Hð&ð &ð &ð+Bð +Bð +BðZð ð ð$ð ð ð!ð !ð !ðRð Rð Rð*ð ð ð Nð Nð Nð<ð <ð <ð$ð $ð $ð%ð %ð %ð/ð /ð /ð3ð 3ð 3ð5ð 5ð 5ð/ð /ð /ð"2ð 2ð 2ð> INð-ð -ð -ð -ð./ð /ð /ð&.ð .ð .ð.

ð 

ð 

ð
ð 
ð 
ð Rð Rð RðOð Oð Oð&?ð ?ð ?ðIð Ið Ið(Hð Hð Hð>ð >ð >ð	
ð 	
ð 	
ðRð Rð Rð8ð 8ð 8ð
!ð 
!ð 
!ð

ð 

ð 

ð
ð 
ð 
ð<ð ð ð&6ð 6ð 6ð=ð =ð =ð
4ð 
4ð 
4ð5ð 5ð 5ð
ð ð ð5ð 5ð 5ðLð Lð Lðð ð ð ð  ð  ð ð  ð  ð")ð ")ð ")ðHð ð ð(ð ð ðð ð ðð à$*Ô$<ðñ ô €Oðð ð ð ð r6   r0   r\  )NNF)IÚ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#   ÚfontTools.otlLib.errorr$   ÚfontTools.varLib.varStorer%   ÚfontTools.varLib.builderr&   ÚfontTools.varLib.featureVarsr'   ÚfontTools.varLib.modelsr(   r)   Úcollectionsr*   rý  r¯  Úior+   ÚloggingrÖ   r¥   Ú	getLoggerr]  r™  r5   r;   Úobjectr0   rN   r6   r4   ú<module>rw     sî  ðØ "Ð "Ð "Ð "Ð "Ð "Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð
 +Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø :Ð :Ð :Ð :Ð :Ð :Ø +Ð +Ð +Ð +Ð +Ð +Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø @Ð @Ð @Ð @Ð @Ð @Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ #Ð #Ð #Ð #Ð #Ð #Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	ð €gÔ˜Ñ!Ô!€ð.ð .ð .ð .ð& 7<ðGð Gð Gð Gð2vð vð vð vð vˆfñ vô vð vð vð vr6   