Ë
    £eh'K  ã                  ó¨  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	m
Z
mZ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 ddlmZmZ ddlmZmZmZmZm Z m!Z!m"Z"  ejF                  e$«      Z%eeeege&f   Z'	 	 	 	 	 	 	 	 dd„Z(d	d	e(f	 	 	 	 	 	 	 	 	 dd
„Z)dde(f	 	 	 	 	 	 	 	 	 dd„Z*	 	 	 	 dd„Z+	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z,dd„Z-	 	 	 	 	 	 dd„Z.	 	 	 	 	 	 dd„Z/y)zŒAllows building all the variable fonts of a DesignSpace version 5 by
splitting the document into interpolable sub-space, then into each VF.
é    )ÚannotationsN)ÚAnyÚCallableÚDictÚIteratorÚListÚTupleÚcast)	ÚAxisDescriptorÚAxisMappingDescriptorÚDesignSpaceDocumentÚDiscreteAxisDescriptorÚInstanceDescriptorÚRuleDescriptorÚSimpleLocationDictÚSourceDescriptorÚVariableFontDescriptor)Ú	StatNamesÚgetStatNames)ÚConditionSetÚRangeÚRegionÚgetVFUserRegionÚlocationInRegionÚregionInRegionÚuserRegionToDesignRegionc                ó¶   — |j                   xs |j                  j                  d«      }|j                  xs |j                  j                  d«      }|› d|› d�S )zÿDefault callable to synthesize an instance filename
    when makeNames=True, for instances that don't specify an instance name
    in the designspace. This part of the name generation can be overriden
    because it's not specified by the STAT table.
    Úenú-z.ttf)Ú
familyNameÚfamilyNamesÚgetÚ	styleNameÚ
styleNames)ÚdocÚinstanceÚ	statNamesr    r#   s        ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/designspaceLib/split.pyÚdefaultMakeInstanceFilenamer)   )   sY   € ð ×$Ñ$ÒG¨	×(=Ñ(=×(AÑ(AÀ$Ó(G€JØ×"Ñ"ÒD i×&:Ñ&:×&>Ñ&>¸tÓ&D€IØˆ\˜˜9˜+ TÐ*Ð*ó    Tc           	   #  ó"  K  — g }i }| j                   D ]x  }t        |d«      r"t        t        |«      }|j	                  |«       Œ1t        t
        |«      }t        |j                  |j                  |j                  «      ||j                  <   Œz t        j                  |D �cg c]  }|j                  ‘Œ c}Ž }|D ]F  }t        ||«      D �	�
ci c]  \  }	}
|	j                  |
“Œ }}	}
t        | i |¥|¥d|||¬«      }||f–— ŒH yc c}w c c}
}	w ­w)aì  Split the given DS5 into several interpolable sub-designspaces.
    There are as many interpolable sub-spaces as there are combinations of
    discrete axis values.

    E.g. with axes:
        - italic (discrete) Upright or Italic
        - style (discrete) Sans or Serif
        - weight (continuous) 100 to 900

    There are 4 sub-spaces in which the Weight axis should interpolate:
    (Upright, Sans), (Upright, Serif), (Italic, Sans) and (Italic, Serif).

    The sub-designspaces still include the full axis definitions and STAT data,
    but the rules, sources, variable fonts, instances are trimmed down to only
    keep what falls within the interpolable sub-space.

    Args:
      - ``makeNames``: Whether to compute the instance family and style
        names using the STAT data.
      - ``expandLocations``: Whether to turn all locations into "full"
        locations, including implicit default axis values where missing.
      - ``makeInstanceFilename``: Callable to synthesize an instance filename
        when makeNames=True, for instances that don't specify an instance name
        in the designspace. This part of the name generation can be overridden
        because it's not specified by the STAT table.

    .. versionadded:: 5.0
    ÚvaluesT©ÚkeepVFsÚ	makeNamesÚexpandLocationsÚmakeInstanceFilenameN)ÚaxesÚhasattrr
   r   Úappendr   r   ÚminimumÚmaximumÚdefaultÚnameÚ	itertoolsÚproductr,   ÚzipÚ_extractSubSpace)r%   r/   r0   r1   ÚdiscreteAxesÚinterpolableUserRegionÚaxisÚvalueCombinationsr,   ÚdiscreteAxisÚvalueÚdiscreteUserLocationÚsubDocs                r(   ÚsplitInterpolablerE   6   s,  è ø€ ðD €LØ%'ÐØ—‘ò ˆÜ�4˜Ô"ô Ô.°Ó5ˆDØ×Ñ Õ%äœ¨Ó-ˆDÜ05Ø—‘Ø—‘Ø—‘ó1Ð" 4§9¡9Ò-ðô "×)Ñ)ÀLÖ+Q¸D¨D¯K«KÒ+QÐRÐØ#ò +ˆô (+¨<¸Ó'@÷ 
á#�˜eð ×Ñ˜uÑ$ð 
Ðñ  
ô "ØØ>Ð%Ð>Ð)=Ð>ØØØ+Ø!5ô
ˆð # FÐ*Ó*ñ+ùò ,Rùó 
ùs   ‚BDÂ!DÂ4DÃD	Ã#,DFc           	   #  óÎ   K  — | j                  «       D ]N  }t        | |«      }t        | |d|||¬«      }i |j                  ¥|j                  ¥|_        |j                  |f–— ŒP y­w)a$  Convert each variable font listed in this document into a standalone
    designspace. This can be used to compile all the variable fonts from a
    format 5 designspace using tools that can only deal with 1 VF at a time.

    Args:
      - ``makeNames``: Whether to compute the instance family and style
        names using the STAT data.
      - ``expandLocations``: Whether to turn all locations into "full"
        locations, including implicit default axis values where missing.
      - ``makeInstanceFilename``: Callable to synthesize an instance filename
        when makeNames=True, for instances that don't specify an instance name
        in the designspace. This part of the name generation can be overridden
        because it's not specified by the STAT table.

    .. versionadded:: 5.0
    Fr-   N)ÚgetVariableFontsr   r<   Úlibr8   )r%   r/   r0   r1   ÚvfÚvfUserRegionÚvfDocs          r(   ÚsplitVariableFontsrL   y   sq   è ø€ ð. ×"Ñ"Ó$ò ˆÜ& s¨BÓ/ˆÜ ØØØØØ+Ø!5ô
ˆð ,�u—y‘yÐ+ B§F¡FÐ+ˆŒ	Ø�g‰g�uˆnÓñùs   ‚A#A%c                ón   — i }t        | «      D ]$  \  }}t        |«      D ]  \  }}d|_        |||<   Œ Œ& |S )züConvert each variable font listed in this document into a standalone
    format 4 designspace. This can be used to compile all the variable fonts
    from a format 5 designspace using tools that only know about format 4.

    .. versionadded:: 5.0
    z4.1)rE   rL   ÚformatVersion)r%   ÚvfsÚ	_locationrD   ÚvfNamerK   s         r(   Úconvert5to4rR   ž   sR   € ð €CÜ.¨sÓ3ò  Ñˆ	�6Ü/°Ó7ò 	 ‰MˆF�EØ"'ˆEÔØˆC�ŠKñ	 ð ð €Jr*   c               óV  ‡ ‡‡— t        «       }ˆ ˆfd„}‰ j                  D �]!  }||j                     }	t        |	t        «      sŒ$t        |d«      sŒ1t        t        |«      }|j                  t        |j                  |j                  |j                  |j                  t        |	j                  |j                  «      |	j                  xs |j                  t        |	j                   |j                   «      |j"                  D �
�cg c]+  \  }
}|	j                  |
cxk  r|	j                   k  rn n|
|f‘Œ- c}}
d d ¬«
      «       �Œ$ g x|_        }|j                  D �ch c]  }|j                  ’Œ c}Š‰ j$                  D �]»  }t'        ˆfd„|j(                  j+                  «       D «       «      sŒ1t'        ˆfd„|j,                  j+                  «       D «       «      s,t.        j1                  d|j(                  |j,                  «       Œ‰t3        «       }|j5                  |j(                  j+                  «       «       |j5                  |j,                  j+                  «       «       ‰ j                  D ]˜  }|j                  |vrŒ||j                     }	|	j                  |j                  k7  s?|	j                  �|	j                  |j                  k7  s|	j                   |j                   k7  sŒyt.        j1                  d|j                  «       Œš |j7                  t9        |j(                  |j,                  ¬«      «       �Œ¾ t;        ‰ |«      }t=        ‰ j>                  |«      |_        ‰ j@                  |_         ‰ jB                  D ]Á  }tE        ‰ jG                  |jH                  «      |«      sŒ)|jK                  tM        |jN                  |jP                  |jR                  |j                  tU        | ||«      «      |jV                  |jX                  |jZ                  |j\                  |j^                  |j`                  ¬	«      «       ŒÃ |jc                  «       }‰ jc                  «       }|�|�|jd                  |_2        |rŸ‰ jg                  «       D ]Œ  }ti        ‰ |«      }tk        ||«      sŒ|jm                  to        |j                  |jN                  |jp                  D �cg c]!  }t        ||j                     t        «      r|‘Œ# c}|jr                  ¬
«      «       ŒŽ ‰ jt                  D �]Ý  }tE        |jw                  ‰ «      |«      sŒ |�rÉty        ‰ |jw                  ‰ «      «      }|jX                  xs |jz                  j}                  d«      }|jZ                  xs |j~                  j}                  d«      }|j�                  tƒ        di d|jN                  xs
  |‰ ||«      “d|jP                  “d|jR                  “d|j                  xs |› d|› �“d‰ri n|j„                  “dtU        | ||«      «      “d|“d|“d|j†                  xs |j†                  “d|jˆ                  xs |jŠ                  j}                  d«      “d|jŒ                  xs |jŒ                  “d|jd                  xs |jz                  “d|jŽ                  xs |j~                  “d|j�                  xs |jŠ                  “d|j’                  xs i “d|jr                  “Ž«       �Œì|j�                  tƒ        di d|jN                  “d|jP                  “d|jR                  “d|j                  “d‰ri n|j„                  “dtU        | ||«      «      “d|jX                  “d|jZ                  “d|j†                  “d|jˆ                  “d|jŒ                  “d|jd                  “d|jŽ                  “d|j�                  “d|j’                  “d|jr                  “Ž«       �Œà ‰ jr                  |_9        |S c c}}
w c c}w c c}w )Nc                óB   •— ‰r| j                  ‰«      S | j                  S ©N)ÚgetFullDesignLocationÚdesignLocation)Úobjectr%   r0   s    €€r(   ÚmaybeExpandDesignLocationz3_extractSubSpace.<locals>.maybeExpandDesignLocationÂ   s#   ø€ ÙØ×/Ñ/°Ó4Ð4à×(Ñ(Ð(r*   r5   )
Útagr8   Ú
labelNamesÚhiddenr5   r7   r6   ÚmapÚaxisOrderingÚ
axisLabelsc              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­wrU   © ©Ú.0r?   Ú
subDocAxess     €r(   ú	<genexpr>z#_extractSubSpace.<locals>.<genexpr>è   s   øè ø€ ÒO¨$�4˜:Ô%ÑOùó   ƒc              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­wrU   ra   rb   s     €r(   re   z#_extractSubSpace.<locals>.<genexpr>ê   s   øè ø€ ÒP¨$�4˜:Ô%ÑPùrf   zPIn axis mapping from input %s, some output axes are not in the variable-font: %szALimiting axis ranges used in <mapping> elements not supported: %s)ÚinputLocationÚoutputLocation)ÚfilenameÚpathÚfontr8   rW   Ú	layerNamer    r#   ÚmuteKerningÚmuteInfoÚmutedGlyphNames)r8   rj   ÚaxisSubsetsrH   r   rj   rk   rl   r8   ú ÚuserLocationrW   r    r#   ÚpostScriptFontNameÚstyleMapFamilyNameÚstyleMapStyleNameÚlocalisedFamilyNameÚlocalisedStyleNameÚlocalisedStyleMapFamilyNameÚlocalisedStyleMapStyleNamerH   ra   )Jr   r2   r8   Ú
isinstancer   r3   r
   r   ÚaddAxisrZ   r[   r\   Úmaxr5   r7   Úminr6   r]   ÚaxisMappingsÚallrh   Úkeysri   ÚLOGGERÚerrorÚsetÚupdater4   r   r   Ú_subsetRulesBasedOnConditionsÚrulesÚrulesProcessingLastÚsourcesr   Úmap_backwardrW   Ú	addSourcer   rj   rk   rl   Ú_filterLocationrm   r    r#   rn   ro   rp   ÚfindDefaultrw   rG   r   r   ÚaddVariableFontr   rq   rH   Ú	instancesÚgetFullUserLocationr   r!   r"   r$   ÚaddInstancer   rs   rt   ru   ÚstyleMapFamilyNamesrv   rx   ry   rz   )r%   Ú
userRegionr.   r/   r0   r1   rD   rY   r?   ÚrangeÚuserÚdesignÚmappingsÚmappingÚmappingAxesÚdesignRegionÚsourceÚ	vfDefaultÚ
oldDefaultrI   rJ   Ú
axisSubsetr&   r'   r    r#   rd   s   `   `                     @r(   r<   r<   ¯   s’  ú€ ô !Ó"€Fõ)ð —‘ó ˆØ˜4Ÿ9™9Ñ%ˆÜ�eœUÕ#¬°°iÕ(@ô œ¨Ó-ˆDØ�N‰NÜàŸ™ØŸ™Ø#Ÿ™ØŸ;™;ä §¡¨t¯|©|Ó<Ø!ŸM™MÒ9¨T¯\©\Ü §¡¨t¯|©|Ó<ð -1¯H©H÷á(˜D &Ø Ÿ=™=¨DÔA°E·M±MÕAð ˜všóð "&Ø#ô#öðð: &(Ð'€FÔ˜(Ø(.¯©Ö4 �$—)“)Ò4€JØ×#Ñ#ó "
ˆÜÓO°'×2GÑ2G×2LÑ2LÓ2NÔOÔOØÜÓP°'×2HÑ2H×2MÑ2MÓ2OÔPÔPÜ�L‰LØbØ×%Ñ%Ø×&Ñ&ôð
 ä“eˆØ×Ñ˜7×0Ñ0×5Ñ5Ó7Ô8Ø×Ñ˜7×1Ñ1×6Ñ6Ó8Ô9Ø—H‘Hò 	ˆDØ�y‰y Ñ+ØØ˜tŸy™yÑ)ˆEà—‘ §¡Ò-Ø—M‘MÐ-°%·-±-À4Ç<Á<Ò2OØ—=‘= D§L¡LÓ0ä—‘ØWØ—I‘Iôð ð	ð 	�‰Ü!Ø%×3Ñ3Ø&×5Ñ5ôö	
ð;"
ôP ,¨C°Ó<€LÜ0°·±¸LÓI€F„LØ!$×!8Ñ!8€FÔð —+‘+ò 
ˆÜ × 0Ñ 0°×1FÑ1FÓ GÈÔTØà×ÑÜØŸ™Ø—[‘[Ø—[‘[Ø—[‘[Ü.ØÑ 9¸&Ó Aó ð !×*Ñ*Ø!×,Ñ,Ø ×*Ñ*Ø"×.Ñ.ØŸ™Ø &× 6Ñ 6ôõ	
ð	
ð. ×"Ñ"Ó$€IØ—‘Ó"€JØÐ Ð!7Ø(2×(FÑ(Fˆ	Ô%ñ à×&Ñ&Ó(ò 	ˆBÜ*¨3°Ó3ˆLÜ˜l¨JÕ7Ø×&Ñ&Ü*ØŸW™WØ!#§¡ð /1¯n©nö%à *Ü)¨*°Z·_±_Ñ*EÄuÔMò 'ò%ð
 ŸF™Fô	õð	ð" —M‘Mó <ˆÜ × <Ñ <¸SÓ AÀ:ÔNØâÜ$ S¨(×*FÑ*FÀsÓ*KÓLˆIØ!×,Ñ,ÒO°	×0EÑ0E×0IÑ0IÈ$Ó0OˆJØ ×*Ñ*ÒL¨i×.BÑ.B×.FÑ.FÀtÓ.LˆIØ×ÑÜ"ò Ø%×.Ñ.ò FÙ+¨C°¸9ÓEøðð "Ÿšðð "Ÿšð	ð
 "Ÿ™ÒE¨Z¨L¸¸)¸Ð*Eøðñ (7¡¸H×<QÑ<Qøðô $3Ø"Ñ$=¸hÓ$Gô$ðñ  *ðñ (ðð (0×'BÑ'Bò (4Ø ×3Ñ3øðð (0×'BÑ'Bò (?Ø ×4Ñ4×8Ñ8¸Ó>øðð  '/×&@Ñ&@ò '3Ø ×2Ñ2øð#ð$ )1×(DÑ(Dò )-Ø ×,Ñ,øð'ð( (0×'BÑ'Bò (,Ø ×+Ñ+øð+ð, 19×0TÑ0Tò 15Ø ×4Ñ4øð/ð0 08×/RÑ/Rò 0Øøð3ð4 !Ÿšð5öð> ×ÑÜ"ò Ø%×.Ò.ðà!Ÿšðð "Ÿšðð "Ÿšð	ñ
 (7¡¸H×<QÑ<Qøðô $3Ø"Ñ$=¸hÓ$Gô$ðð  (×2Ò2ðð '×0Ò0ðð (0×'BÒ'Bðð (0×'BÒ'Bðð '/×&@Ò&@ðð )1×(DÒ(Dðð (0×'BÒ'Bðð  19×0TÒ0Tð!ð" 08×/RÒ/Rð#ð$ !Ÿšð%öðO<ð| —‘€F„Jà€MùóUùò 5ùòh%s   Ä0`Å`!Ó&`&c                óÊ   — i }| D ][  }|j                  d«      |j                  d«      }}t        |�|nt        j                   |�|nt        j                  «      ||d   <   Œ] |S )Nr5   r6   r8   )r"   r   ÚmathÚinf)ÚconditionSetÚcÚ	conditionr5   r6   s        r(   Ú_conditionSetFromr¥   ‡  sj   € Ø€AØ!ò 
ˆ	Ø$Ÿ=™=¨Ó3°Y·]±]À9Ó5M�ˆÜ$ØÐ*‰G´·±°	ØÐ*‰G´·±ó 
ˆˆ)�FÑ
Òð
ð €Hr*   c           	     ó(  — g }| D �]	  }t        |j                  g |j                  ¬«      }|j                  D ]·  }t	        |«      }g }d}|j                  «       D ]u  \  }	}
|	|vrŒt        |
t        t        f«      r|
||	   v rŒ)d}Œ,|
||	   v rŒ4||	   j                  |
«      }|�*|j                  |	|j                  |j                  dœ«       Œtd}Œw |rŒ�|j                  j                  |«       Œ¹ |j                  sŒù|j                  |«       �Œ |S )N)r8   ÚconditionSetsÚsubsFT)r8   r5   r6   )r   r8   r¨   r§   r¥   Úitemsr{   ÚfloatÚintÚintersectionr4   r5   r6   )r‡   rš   ÚnewRulesÚruleÚnewRuleÚconditionsetÚcsÚnewConditionsetÚdiscardConditionsetÚselectionNameÚselectionValuer¬   s               r(   r†   r†   ’  sC  € ð$ &(€HØó )%ˆÜ"0Ø—‘¨"°4·9±9ô#
ˆð !×.Ñ.ò #	>ˆLÜ" <Ó0ˆBØ46ˆOØ"'ÐØ1=×1CÑ1CÓ1Eò 7Ñ-�˜~à ¨Ñ*àÜ˜n¬u´c¨lÔ;à%¨¨MÑ):Ñ:Øð /3Ñ+ð &¨¨MÑ):Ñ:Øà')¨-Ñ'8×'EÑ'EÀnÓ'U˜à'Ð3Ø+×2Ñ2à,9Ø/;×/CÑ/CØ/;×/CÑ/Cñ!"õð 37Ñ/ð;7ò< 'Ø×%Ñ%×,Ñ,¨_Õ=ðG#	>ðH × Ó Ø�O‰O˜GÖ$ðS)%ðV €Or*   c                ó„   — |j                  «       D ��ci c]  \  }}|| v rt        | |   t        «      r||“Œ! c}}S c c}}w rU   )r©   r{   r   )r“   Úlocationr8   rB   s       r(   rŒ   rŒ   Ó  sI   € ð $Ÿ>™>Ó+÷áˆD�%Ø�:Ñ¤*¨Z¸Ñ-=¼uÔ"Eð 	ˆe‰óð ùó s   ”$<)r%   r   r&   r   r'   r   ÚreturnÚstr)
r%   r   r/   Úboolr0   rº   r1   ÚMakeInstanceFilenameCallabler¸   z8Iterator[Tuple[SimpleLocationDict, DesignSpaceDocument]])
r%   r   r/   rº   r0   rº   r1   r»   r¸   z)Iterator[Tuple[str, DesignSpaceDocument]])r%   r   r¸   zDict[str, DesignSpaceDocument])r%   r   r“   r   r.   rº   r/   rº   r0   rº   r1   r»   r¸   r   )r¢   zList[Dict[str, Any]]r¸   r   )r‡   úList[RuleDescriptor]rš   r   r¸   r¼   )r“   r   r·   úDict[str, float]r¸   r½   )0Ú__doc__Ú
__future__r   r9   Úloggingr    Útypingr   r   r   r   r   r	   r
   ÚfontTools.designspaceLibr   r   r   r   r   r   r   r   r   Ú"fontTools.designspaceLib.statNamesr   r   ÚfontTools.designspaceLib.typesr   r   r   r   r   r   r   Ú	getLoggerÚ__name__r‚   r¹   r»   r)   rE   rL   rR   r<   r¥   r†   rŒ   ra   r*   r(   ú<module>rÇ      sÄ  ðñõ #ã Û Û ß C× CÑ C÷
÷ 
õ 
÷ G÷÷ ñ ð 
ˆ×	Ñ	˜8Ó	$€à'ØÐ,¨iÐ8¸#Ð=ñ Ð ð

+Ø	ð
+Ø(:ð
+ØGPð
+àó
+ð Ø Ø9Tð	@+Ø	ð@+àð@+ð ð@+ð 7ð	@+ð
 >ó@+ðJ Ø!Ø9Tð	"Ø	ð"àð"ð ð"ð 7ð	"ð
 /ó"ðJØ	ðà#óð"UØ	ðUàðUð ð	Uð
 ðUð ðUð 7ðUð óUópð>Øð>Ø/5ð>àó>ðBØðàðð ôr*   