
    Mcg9                        d Z ddlmZ ddlmZ ddlmc mc mZ ddlmc mc m	Z	 ddl
mZ ddlmc 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gZ G d de      Zej9                   ej:                  d      df ej:                  d      df ej:                  d      df ej:                  d      df ej:                  d      df ej:                  d      dfe	j<                  dfe	j>                  dfe	j@                  dfe	jB                  dfe	jD                  dfe	jF                  dff      d        Z$ejK                   ej:                  d       ej:                  d       fd!      d"        Z$ejK                   ej:                  d#      d$      d%        Z$ejK                   ej:                  d&      d'      d(        Z$ejK                   ej:                  d)      d*      d+        Z$ejK                   ej:                  d,      d-      d.        Z$ejK                   ej:                  d/      d0      d1        Z$d2 Z&ejK                   ej:                  d3       ej:                  d4      fd5      d6        Z$ejO                  e	jP                        d7        Z$d8 Z)ejO                  e	jT                        d9        Z$ejO                  e	jV                        d:        Z$d; Z,d>d<Z-e.d=k(  rddl/Z/ e/j`                   e-              yy)?zsChange the units-per-EM of a font.

AAT and Graphite tables are not supported. CFF/CFF2 fonts
are de-subroutinized.    )	TTVisitorN)VarStoreData)builder)OnlineMultiVarStoreBuilder)Vector)otRound)batched
scale_upemScalerVisitorc                       e Zd Zd Zd Zy)r   c                     || _         y N)scaleFactor)selfr   s     T/var/www/html/bid-api/venv/lib/python3.12/site-packages/fontTools/ttLib/scaleUpem.py__init__zScalerVisitor.__init__   s
    &    c                 2    t        || j                  z        S r   )r   r   )r   vs     r   scalezScalerVisitor.scale   s    q4+++,,r   N)__name__
__module____qualname__r   r    r   r   r   r      s    '-r   head)
unitsPerEmxMinyMinxMaxyMaxpost)underlinePositionunderlineThicknessVORGdefaultVertOriginYhhea)ascentdescentlineGapadvanceWidthMaxminLeftSideBearingminRightSideBearing
xMaxExtentcaretOffsetvhea)r'   r(   r)   advanceHeightMaxminTopSideBearingminBottomSideBearing
yMaxExtentr.   zOS/2)xAvgCharWidthySubscriptXSizeySubscriptYSizeySubscriptXOffsetySubscriptYOffsetySuperscriptXSizeySuperscriptYSizeySuperscriptXOffsetySuperscriptYOffsetyStrikeoutSizeyStrikeoutPositionsTypoAscendersTypoDescendersTypoLineGapusWinAscentusWinDescentsxHeight
sCapHeight)XAdvanceYAdvance
XPlacement
YPlacement)XCoordinateYCoordinate
CoordinateValue)r   r   r   r    c                 <    t        ||| j                  |             y r   )setattrr   )visitorobjattrvalues       r   visitrT      s    D Cw}}U+,r   hmtxvmtxmetricsc                 l    |D ]/  }||   \  }}| j                  |      | j                  |      f||<   1 y r   r   )rP   rQ   rR   rW   gadvancelsbs          r   rT   rT   c   s;     qz]]7+W]]3-??
 r   VMTXVOriginRecordsc                 @    |D ]  }| j                  ||         ||<    y r   rY   )rP   rQ   rR   r^   rZ   s        r   rT   rT   l   s$    #MM.*;<q r   glyfglyphsc           	          |j                         D ]  }dD ].  }t        ||d       }|t        ||| j                  |             0 |j	                         rR|j
                  D ]B  }| j                  |j                        |_        | j                  |j                        |_        D t        |d      s|j                  }t        |      D ]-  \  }\  }	}
| j                  |	      | j                  |
      f||<   /  y )N)r   r   r   r    coordinates)valuesgetattrrO   r   isComposite
componentsxyhasattrrc   	enumerate)rP   rQ   rR   ra   rZ   r   	componentrc   irh   ri   s              r   rT   rT   r   s    ]]_4D4&A}4q!12 5
 ==?\\	%mmIKK8	%mmIKK8	 * 1m$--K&{3	6Aq!(q!17==3C!CA 4 r   gvar
variationsc                    | j                   d   }|j                         D ]^  \  }}||   }|D ]O  }|j                  }	t        |	      D ]3  \  }
}|	| j	                  |d         | j	                  |d         f|	|
<   5 Q ` y )Nr`   r      )fontitemsrc   rk   r   )rP   rQ   rR   ro   	glyfTable	glyphNamevarlistglyphvarrc   rm   xys               r   rT   rT      s    V$I(..0	7)$C//K";/2:!(r!u!5w}}RU7K!KA 0  1r   VARCtablec                 
   | j                   d   }|j                  D cg c]  }|j                   }}|j                  }t	        |      }|j
                  j                  D ]~  }	|	j                  D ]k  }
|
j                  }| j                  |j                        |_
        | j                  |j                        |_        | j                  |j                        |_        | j                  |j                        |_        |
j                  t        j                   k7  r|
j                  }|t        j                   k7  r|dz	  }|dz  }|j"                  |   }|j$                  |   }|j'                  |j)                  ||j                               |r\t+        |      |j,                  z  }t/        t1        ||            }|D cg c]  }t3        |       }}|j5                  |      |
_        nt        j                   |
_        |
j6                  t        j                   k7  s|
j6                  }|t        j                   k7  s|dz	  }|dz  }j$                  |dz     }|dz	  }|dz  }|j"                  |   }|j$                  |   }|j'                  |j)                  ||j                               |rt+        |      |j,                  z  }|
j8                  }t/        t1        ||            }g }|D ]  }t/        |      }d}|t        j:                  j<                  z  r| j                  ||         ||<   |dz  }|t        j:                  j>                  z  r| j                  ||         ||<   |dz  }|t        j:                  j@                  z  r|dz  }|t        j:                  jB                  z  r|dz  }|t        j:                  jD                  z  r|dz  }|t        j:                  jF                  z  r|dz  }|t        j:                  jH                  z  r|dz  }|t        j:                  jJ                  z  r| j                  ||         ||<   |dz  }|t        j:                  jL                  z  r| j                  ||         ||<   |dz  }|jO                  t3        |              |}|j5                  |      |
_        Wt        j                   |
_        n  |jQ                         |_        y c c}w c c}w )Nfvar   i  r   rq   ))rr   axesaxisTagMultiVarStorer   VarCompositeGlyphsVarCompositeGlyphrg   	transformr   
translateX
translateYtCenterXtCenterYaxisValuesVarIndexotTablesNO_VARIATION_INDEXMultiVarDataItemsetSupportsget_supportslenVarRegionCountlistr	   r   storeDeltastransformVarIndexflagsVarComponentFlagsHAVE_TRANSLATE_XHAVE_TRANSLATE_YHAVE_ROTATIONHAVE_SCALE_XHAVE_SCALE_YHAVE_SKEW_XHAVE_SKEW_YHAVE_TCENTER_XHAVE_TCENTER_Yappendfinish)rP   rQ   rR   varcr}   afvarAxesstorestoreBuilderrZ   rl   tvarIdxmajorminorvarDatavecmr   r   newVecrm   s                         r   rT   rT      sC    <<D#'99-9a		9H-E-h7L$$66I##A"==6AL"==6AL qzz2AJ qzz2AJ++x/J/JJ"55 X888"bLE"VOE#007G!,,u-C ,,U-?-?tyy-QRH(>(>>"73?3256#Qvay#67C7O7OPS7T	47?7R7R	4**h.I.II"44X888"bLE"VOE!,,v7C"bLE"VOE#007G!,,u-C ,,U-?-?tyy-QRH(>(>> )"73?3!#!$A $QA !A$x'A'A'R'RR'.}}QqT':! !Q$x'A'A'R'RR'.}}QqT':! !Q$x'A'A'O'OO !Q$x'A'A'N'NN !Q$x'A'A'N'NN !Q$x'A'A'M'MM !Q$x'A'A'M'MM !Q$x'A'A'P'PP'.}}QqT':! !Q$x'A'A'P'PP'.}}QqT':! !Q"MM&)47 "%8 %6B6N6Ns6S	36>6Q6Q	3S & 7X &,,.Dc .4 7s   S8S=kern
kernTablesc                     |D ]:  }|j                   }|j                         D ]  }| j                  ||         ||<    < y r   )	kernTablekeysr   )rP   rQ   rR   r   r{   r   ks          r   rT   rT      s<    OO	!A"==16IaL " r   c                     t        |      D ]Q  \  }}t        |t              s&t        |t              r'| j	                  |      ||<   <|d   }t        | |       ||d<   S y )N)rk   
isinstancer   bytesr   
_cff_scale)rP   argsrm   arg
num_blendss        r   r   r      sV    D/3#t$c5)!--,QRJw$ CG "r   zCFF CFF2cffc           
         |j                          |j                  d   }t        |dd       }||j                  nd }t	               }|j                         D ]  }||   }	|	j                  }
|	j                  D ]  }|
j                  |      \  }}|j                  |j                         t        j                  |j                  |      }|D ]  \  }}|dk(  rt        | |        t        j                  |      |j                  d d   dD ]K  }t        ||d       }|t!        |t"              rt        | |       0t%        ||| j'                  |             M t)        d      D ]#  }|j*                  |xx   | j,                  z  cc<   % |D ]R  }dD ]K  }t        ||d       }|t!        |t"              rt        | |       0t%        ||| j'                  |             M T  y )Nr   VarStore)getNumRegionsvsindex)UnderlinePositionUnderlineThicknessFontBBoxStrokeWidth   )

BlueValues
OtherBluesFamilyBluesFamilyOtherBluesStdHWStdVW	StemSnapH	StemSnapVdefaultWidthXnominalWidthX)desubroutinizetopDictIndexre   r   setr   CharStringscharsetgetItemAndSelectoraddprivatecffSpecializerprogramToCommandsprogramr   commandsToProgramr   r   rO   r   range
FontMatrixr   )rP   rQ   rR   r   topDictvarStorer   privatesfontnamerr   csrZ   c_commandsopr   rS   rm   r   s                       r   rT   rT      s    q!Gw
D1H.6.BH**MuHHHJ8}A((+DAqLL#%77		H %D?7D) % *;;HEAIIaL 
D GT40E}%&7E*w}}U';<
 qAq!W%8%88!   G  t4=eT*w.GT7==+?@+  G r   c                     |j                   D ])  }t        |      D ]  \  }}| j                  |      ||<    + |j                          y r   )r   rk   r   calculateNumShorts)rP   r   itemrm   r   s        r   rT   rT   H  sB    dODAqmmA&DG $   r   c                 V   d|cxk  rdk  r*n n't         j                  j                  | _        || _        y t        j
                         }|j                          dx|_        x|_        x|_	        |_
        |x|_        |_        t         j                  j                  | _        || _        y )N   r   )r   PaintFormatPaintScaleUniformFormatr   	Affine2x3populateDefaultsry   yxdxdyxxyyPaintTransform	Transform)paintr   r   s      r   _setup_scale_paintr   S  s    	U#m#++==""$I @AAILA9<A),"''IL9<''66ELEOr   c                     |j                   }t        j                          }t        || j                         ||_         ||_         y)NT)Paintr   r   r   )rP   recordoldPaintr   s       r   rT   rT   b  s8    ||HNNEug112EKFLr   c                 `   |j                   t        j                  j                  k7  ryt        j                         }|j                   |_         |j                  |_        |j
                  |_        |`|`t        |d| j                  z         ||_        | j                  |j                         y)NTrq   F)	r   r   r   
PaintGlyphr   Glyphr   r   rT   )rP   r   newPaints      r   rT   rT   o  s    ||x++666~~HllHO[[HN[[HNua'"5"556EKMM(..!r   c                 `    | d   j                   }t        ||z        }|j                  |        y)z1Change the units-per-EM of font to the new value.r   N)r   r   rT   )rr   new_upemupemrP   s       r   r
   r
     s+    <""DHtO,GMM$r   c                    | ddl }|j                  dd } ddlm} ddlm} ddl}|j                  dd       }|j                  ddd	
       |j                  ddd
       |j                  dddd       |j                  |       } ||j                        }t        |j                        }|j                  |j                  n ||j                  dd      }	t        ||       t        d|	z         |j!                  |	       y)z Change the units-per-EM of fontsNr   rq   )TTFont)makeOutputFileNamezfonttools ttLib.scaleUpem)descriptionrr   z
Font file.)metavarhelpr  znew-upemzNew units-per-EM integer value.z--output-filepathzOutput file.)r  defaultr  Tz-scaled)	overWritesuffixz
Writing %s)sysargvfontTools.ttLibr	  fontTools.misc.cliToolsr
  argparseArgumentParseradd_argument
parse_argsrr   intr  output_filer
   printsave)
r   r  r	  r
  r  parseroptionsrr   r  r  s
             r   mainr     s    |xx|&:$$#1S % F \B
J-N   N   %G',,D7##$H * 	YO  tX	,
$%IIkr   __main__r   )1__doc__fontTools.ttLib.ttVisitorr   r  ttLibfontTools.ttLib.tables.otBasetablesotBasefontTools.ttLib.tables.otTablesr   fontTools.cffLibr   fontTools.cffLib.specializercffLibspecializerr   fontTools.varLibr   fontTools.varLib.multiVarStorer   fontTools.misc.vectorr   fontTools.misc.fixedToolsr   fontTools.misc.iterToolsr	   __all__r   register_attrsgetTableClassValueRecordAnchor
CaretValue	BaseCoordMathValueRecordClipBoxrT   register_attrr   registerVarDatar   BaseGlyphPaintRecordr   r
   r   r   r  exitr   r   r   <module>r@     s  
 0  . . 2 2 ) 5 5 $ E ( - , 
)-I - 			V	$&TU			V	$&QR			V	$';=E'		
  E'		
  E'	
0   @	
 
89			|-			l,		!	!G-			;<{>@B-C@B- U "5%"5"5f"=>	@@ 0U008:JK= L=
 0U008(CD DD& 0U008,G
L H
L 0U008'BU/ CU/p 0U008,G7 H7! U "5%"5"5f"=>?A?AJ (()! *!  556	 7	 ' (&$N zCHHTV r   