
    ]Mh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                     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	j!        dfe	j"        dfe	j#        dff          d             Z$e%                     ej        d           ej        d           fd!          d"             Z$e%                     ej        d#          d$          d%             Z$e%                     ej        d&          d'          d(             Z$e%                     ej        d)          d*          d+             Z$e%                     ej        d,          d-          d.             Z$e%                     ej        d/          d0          d1             Z$d2 Z&e%                     ej        d3           ej        d4          fd5          d6             Z$e'                    e	j(                  d7             Z$d8 Z)e'                    e	j*                  d9             Z$e'                    e	j+                  d:             Z$d; Z,d>d<Z-e.d=k    rddl/Z/ e/j0         e-                       dS dS )?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dS )r   c                     || _         d S N)scaleFactor)selfr   s     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/ttLib/scaleUpem.py__init__zScalerVisitor.__init__   s    &    c                 0    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      s2        ' ' '- - - - -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                 N    t          |||                     |                     d S r   )setattrr   )visitorobjattrvalues       r   visitrU      s)    D Cw}}U++,,,,,r   hmtxvmtxmetricsc                     |D ]:}||         \  }}|                      |          |                      |          f||<   ;d S r   r   )rQ   rR   rS   rX   gadvancelsbs          r   rU   rU   c   sV      @ @qz]]7++W]]3-?-??

@ @r   VMTXVOriginRecordsc                 L    |D ] }|                      ||                   ||<   !d S r   rZ   )rQ   rR   rS   r_   r[   s        r   rU   rU   l   s9     = =#MM.*;<<q= =r   glyfglyphsc           	         |                                 D ]}dD ]9}t          ||d           }|$t          |||                     |                     :|                                rI|j        D ]@}|                     |j                  |_        |                     |j                  |_        At          |d          rL|j	        }t          |          D ]5\  }\  }	}
|                     |	          |                     |
          f||<   6d S )N)r   r    r   r!   coordinates)valuesgetattrrP   r   isComposite
componentsxyhasattrrd   	enumerate)rQ   rR   rS   rb   r[   r   	componentrd   iri   rj   s              r   rU   rU   r   s   ]]__ D D4 	3 	3D4&&A}4q!1!1222==?? 	\ 9 9	%mmIK88	%mmIK88	1m$$ 	D-K&{33 D D	6Aq!(q!1!17==3C3C!CAD Dr   gvar
variationsc                    | j         d         }|                                D ]j\  }}||         }|D ]Z}|j        }	t          |	          D ]A\  }
}||                     |d                   |                     |d                   f|	|
<   B[kd S )Nra   r      )fontitemsrd   rl   r   )rQ   rR   rS   rp   	glyfTable	glyphNamevarlistglyphvarrd   rn   xys               r   rU   rU      s    V$I(..00 L L	7)$ 	L 	LC/K";// L L2:!(r!u!5!5w}}RU7K7K!KAL	LL Lr   VARCtablec                    | j         d         }d |j        D             }|j        }t          |          }|j        j        D ]}|j        D ]}	|	j        }
|                     |
j	                  |
_	        |                     |
j
                  |
_
        |                     |
j                  |
_        |                     |
j                  |
_        |	j        t          j        k    r|	j        }|t          j        k    r|dz	  }|dz  }|j        |         }|j        |         }|                    |                    ||j                             |r[t)          |          |j        z  }t-          t/          ||                    }d |D             }|                    |          |	_        nt          j        |	_        |	j        t          j        k    r|	j        }|t          j        k    rn|dz	  }|dz  }|j        |dz           }|dz	  }|dz  }|j        |         }|j        |         }|                    |                    ||j                             |rt)          |          |j        z  }|	j        }t-          t/          ||                    }g }|D ]}t-          |          }d}|t          j        j        z  r#|                     ||                   ||<   |dz  }|t          j        j        z  r#|                     ||                   ||<   |dz  }|t          j        j        z  r|dz  }|t          j        j        z  r|dz  }|t          j        j         z  r|dz  }|t          j        j!        z  r|dz  }|t          j        j"        z  r|dz  }|t          j        j#        z  r#|                     ||                   ||<   |dz  }|t          j        j$        z  r#|                     ||                   ||<   |dz  }|%                    tM          |                     |}|                    |          |	_        t          j        |	_        |'                                |_        d S )Nfvarc                     g | ]	}|j         
S r   )axisTag).0as     r   
<listcomp>zvisit.<locals>.<listcomp>   s    ---a	---r      i  c                 ,    g | ]}t          |          S r   r   )r   r   s     r   r   zvisit.<locals>.<listcomp>   s    666Qvayy666r   r   rr   )(rs   axesMultiVarStorer   VarCompositeGlyphsVarCompositeGlyphrh   	transformr   
translateX
translateYtCenterXtCenterYaxisValuesVarIndexotTablesNO_VARIATION_INDEXMultiVarDataItemsetSupportsget_supportslenVarRegionCountlistr
   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appendr   finish)rQ   rR   rS   varcr~   fvarAxesstorestoreBuilderr[   rm   tvarIdxmajorminorvarDatavecmr   newVecr   rn   s                        r   rU   rU      sg    <D--49---HE-h77L$6 JR JR I	R I	RI#A"==66AL"==66AL qz22AJ qz22AJ+x/JJJ"5 X888"bLE"VOE#07G!,u-C ,,U-?-?ty-Q-QRRR SHH(>>"73??3366#6667C7O7OPS7T7T	447?7R	4*h.III"4X888"bLE"VOE!,v7C"bLE"VOE#07G!,u-C ,,U-?-?ty-Q-QRRR %RHH(>> )"73??33!#!$ 5 5A $QA !A$x'A'RR ''.}}QqT':':! !Q$x'A'RR ''.}}QqT':':! !Q$x'A'OO ' !Q$x'A'NN ' !Q$x'A'NN ' !Q$x'A'MM ' !Q$x'A'MM ' !Q$x'A'PP ''.}}QqT':':! !Q$x'A'PP ''.}}QqT':':! !Q"MM&))4444$6B6N6Ns6S6S	336>6Q	3SI	RV &,,..Dr   kern
kernTablesc                     |D ]>}|j         }|                                D ] }|                     ||                   ||<   !?d S r   )	kernTablekeysr   )rQ   rR   rS   r   r|   r   ks          r   rU   rU      s[     7 7O	!! 	7 	7A"==166IaLL	77 7r   c                     t          |          D ]e\  }}t          |t                    s.t          |t                    s|                     |          ||<   H|d         }t          | |           ||d<   fd S )N)rl   
isinstancer   bytesr   
_cff_scale)rQ   argsrn   arg
num_blendss        r   r   r      s    D// ! !3#t$$ 	!c5)) -!--,,QRJw$$$ CGG! !r   zCFF CFF2cffc           
         |                                  |j        d         }t          |dd           }||j        nd }t	                      }|                                D ]}||         }	|	j        }
|	j        D ]}|
                    |          \  }}|	                    |j
                   t          j        |j        |          }|D ]\  }}|dk    rt          | |           t          j        |          |j        d d <   dD ]`}t          ||d           }|t!          |t"                    rt          | |           <t%          |||                     |                     at)          d          D ]}|j        |xx         | j        z  cc<   |D ]e}dD ]`}t          ||d           }|t!          |t"                    rt          | |           <t%          |||                     |                     afd S )Nr   VarStore)getNumRegionsvsindex)UnderlinePositionUnderlineThicknessFontBBoxStrokeWidth   )

BlueValues
OtherBluesFamilyBluesFamilyOtherBluesStdHWStdVW	StemSnapH	StemSnapVdefaultWidthXnominalWidthX)desubroutinizetopDictIndexrf   r   setr   CharStringscharsetgetItemAndSelectoraddprivatecffSpecializerprogramToCommandsprogramr   commandsToProgramr   r   rP   r   range
FontMatrixr   )rQ   rR   rS   r   topDictvarStorer   privatesfontnamers   csr[   c_commandsopr   rT   rn   r   s                       r   rU   rU      sp    q!Gw
D11H.6.BH**MuuHHHJJ 9A 9A8} 	F 	FA((++DAqLL###%7	  H % * *D??7D)))));HEEAIaaaLL
 	= 	=D GT400E}%&& =7E****w}}U';';<<<<q 	9 	9Aq!!!W%88!!!! 	A 	AG A A  t44=eT** Aw....GT7==+?+?@@@@+A	AG9A 9Ar   c                     |j         D ]/}t          |          D ]\  }}|                     |          ||<   0|                                 d S r   )r   rl   r   calculateNumShorts)rQ   r   itemrn   r   s        r   rU   rU   H  s`     ' 'dOO 	' 	'DAqmmA&&DGG	'     r   c                 @   d|cxk    rdk    r"n nt           j        j        | _        || _        d S t          j                    }|                                 dx|_        x|_        x|_	        |_
        |x|_        |_        t           j        j        | _        || _        d S )N   r   )r   PaintFormatPaintScaleUniformFormatr   	Affine2x3populateDefaultsrz   yxdxdyxxyyPaintTransform	Transform)paintr   r   s      r   _setup_scale_paintr  S  s    	U####m#####+="$$I   @AAILA9<A),"''IL9<'6ELEOOOr   c                     |j         }t          j                     }t          || j                   ||_         ||_         dS )NT)Paintr   r  r   )rQ   recordoldPaintr   s       r   rU   rU   b  s<    |HNEug1222EKFL4r   c                 &   |j         t          j        j        k    rdS t          j                    }|j         |_         |j        |_        |j        |_        |`|`t          |d| j        z             ||_        |                     |j                   dS )NTrr   F)	r   r   r   
PaintGlyphr  Glyphr  r   rU   )rQ   r   newPaints      r   rU   rU   o  s    |x+666t~HlHO[HN[HNua'"55666EKMM(.!!!5r   c                 n    | d         j         }t          ||z            }|                    |            dS )z1Change the units-per-EM of font to the new value.r   N)r   r   rU   )rs   new_upemupemrQ   s       r   r   r     s7    <"DHtO,,GMM$r   c                 2   | ddl }|j        dd         } ddlm} ddlm} ddl}|                    dd           }|                    ddd	
           |                    ddd
           |                    dddd           |	                    |           } ||j
                  }t          |j                  }|j        |j        n ||j
        dd          }	t          ||           t          d|	z             |                    |	           dS )z Change the units-per-EM of fontsNr   rr   )TTFont)makeOutputFileNamezfonttools ttLib.scaleUpem)descriptionrs   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_argsrs   intr  output_filer   printsave)
r   r  r  r  r  parseroptionsrs   r  r   s
             r   mainr%    s}    |


x|&&&&&&::::::OOO$$#1S %  F \BBB
J-N     N     %%G6',D7#$$H * 	YOO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ClipBoxrU   register_attrr   registerVarDatar  BaseGlyphPaintRecordr  r   r%  r   r  exitr   r   r   <module>rE     s6   
 0 / / / / /       . . . . . . . . . . . . 2 2 2 2 2 2 2 2 2 2 2 2 ) ) ) ) ) ) 5 5 5 5 5 5 5 5 5 $ $ $ $ $ $ E E E E E E ( ( ( ( ( ( - - - - - - , , , , , , 
)- - - - -I - - - 		V	$	$&TU		V	$	$&QR		V	$	$';=E''		
  E''		
  E''	
0  @	
 
89		|-		l,		!G-		;<{>@ @B- -C@ @B- U  "5%"5f"="=>	 @ @ @ 0U088:JKK= = LK=
 0U088(CCD D DCD& 0U088,GG
L 
L HG
L 0U088'BBU/ U/ CBU/p 0U088,GG7 7 HG7! ! ! U  "5%"5f"="=> ?A ?A ?AJ ())! ! *)!      566	 	 76	 ''  ('&  $ $ $ $N zJJJCHTTVV r   