o
    h                     @   sV   d dl mZ d dlmZ d dlZedZdd Zdd Z	d	d
 Z
dd Zdd ZdS )    )otTables)deepcopyNzfontTools.varLib.instancerc                 C   sv   g }| j d ur| j jng }|D ]}|jdkr dS ||j|j|jf qt| jj	g| }||v r4dS |
| dS )N   TF)ConditionSetConditionTableFormatappend	AxisIndexFilterRangeMinValueFilterRangeMaxValue	frozensetFeatureTableSubstitutionVersionadd)recseenconditionSetconditionSetscond	recordKey r   z/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fontTools/varLib/instancer/featureVars.py_featureVariationRecordIsUnique	   s   

r   c                    sF   | j }| j}||ks| jks| jk rd S t fdd||fD S )Nc                 3   s    | ]
} j |d dV  qdS )F)extrapolateN)renormalizeValue).0v	axisLimitr   r   	<genexpr>.   s    
z7_limitFeatureVariationConditionRange.<locals>.<genexpr>)r
   r   maximumminimumtuple)	conditionr   minValuemaxValuer   r   r   $_limitFeatureVariationConditionRange"   s   

r&   c                 C   s  d}d}g }ddl m} |ddd}	| jd u r$t | _g | j_d| j_t| jjD ]z\}
}|jdkr|j}|| j	}|j
}|j}|||	}||j  krR|ksUn d}|j|ks_|j|k rcd } nB||v r|| |_t||}|r|\}}||_
||_d}|dks|dkr|| q*d } nq*td|
||j d}|| q*|d ur|r|| j_|sd | _d}nd}|o| }|||fS )NTFr   ) NormalizedAxisTripleAndDistancesr   zWCondition table {0} of FeatureVariationRecord {1} has unsupported format ({2}); ignored)fontTools.varLib.instancerr'   r   otr   ConditionCount	enumerater   r	   axisTagr
   r   getdefaultr!   r    r&   r   logwarningformat)recordrecIdx
axisLimitsfvarAxesaxisIndexMapapplies
shouldKeepnewConditionsr'   default_tripleir#   axisIdxr-   r$   r%   triplenewRanger!   r    	universalr   r   r   "_instantiateFeatureVariationRecord3   sb   








rA   c                    sb  t | fdd|D   fdd D }d}t  }g }d }t| jjD ]U\}}	t|	||||\}
}}|rBt|	|rB||	 |
rx|sx|	jj	dksNJ t
|	j}t|j|	jjD ]\}}t
| jj|j j|_t
|j| jj|j _q[d}|r| nq'|r|r|st }t |_g |j_d|j_||_|| |r|| j_t|| j_d S | `d| _	d S )	Nc                    s   g | ]
}|j  vr|j qS r   )r-   )r   axis)
pinnedAxesr   r   
<listcomp>|   s    z1_instantiateFeatureVariations.<locals>.<listcomp>c                    s   i | ]}|  |qS r   )index)r   r-   )	axisOrderr   r   
<dictcomp>}   s    z1_instantiateFeatureVariations.<locals>.<dictcomp>Fi   Tr   )setpinnedLocationr,   FeatureVariationsFeatureVariationRecordrA   r   r   r   r   r   zipSubstitutionRecordFeatureListFeatureRecordFeatureIndexFeaturer*   r   r   r+   lenFeatureVariationCount)tabler6   r5   r7   featureVariationApplieduniqueRecords
newRecordsdefaultsSubstsr<   r3   r8   r9   r@   r/   r   defaultRecordr   )rF   rC   r   _instantiateFeatureVariationsz   sT   






rZ   c                 C   sZ   dD ](}|| vst | | jdd sqtd| t| | j| d j| | |   qd S )N)GPOSGSUBrJ   z+Instantiating FeatureVariations of %s tablefvar)getattrrT   r0   inforZ   axesprune_lookups)varfontr5   tableTagr   r   r   instantiateFeatureVariations   s   
rd   )fontTools.ttLib.tablesr   r*   copyr   logging	getLoggerr0   r   r&   rA   rZ   rd   r   r   r   r   <module>   s    
G9