)Ej:"dZddlmZddlmZddlmcmcmZddlmcmcm Z ddl m Z ddl m cmZddlmZddlmZddlmZddlmZdd lmZd d gZGd d eZeejd dfejddfejddfejddfejddfejddfe jdfe jdfe j dfe j!dfe j"dfe j#dff dZ$e%ejdejd fd!d"Z$e%ejd#d$d%Z$e%ejd&d'd(Z$e%ejd)d*d+Z$e%ejd,d-d.Z$e%ejd/d0d1Z$d2Z&e%ejd3ejd4fd5d6Z$e'e j(d7Z$d8Z)e'e j*d9Z$e'e j+d:Z$d;Z,d>d<Z-e.d=krddl/Z/e/j0e-dSdS)?zsChange the units-per-EM of a font. AAT and Graphite tables are not supported. CFF/CFF2 fonts are de-subroutinized.) TTVisitorN) VarStoreData)builder)OnlineMultiVarStoreBuilderVector)otRound)batched scale_upem ScalerVisitorceZdZdZdZdS)r c||_dSN) scaleFactor)selfrs KC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/ttLib/scaleUpem.py__init__zScalerVisitor.__init__s&c0t||jzSr)r r)rvs rscalezScalerVisitor.scalesq4++,,,rN)__name__ __module__ __qualname__rrrrr r s2'''-----rhead) unitsPerEmxMinyMinxMaxyMaxpost)underlinePositionunderlineThicknessVORGdefaultVertOriginYhhea)ascentdescentlineGapadvanceWidthMaxminLeftSideBearingminRightSideBearing xMaxExtent caretOffsetvhea)r(r)r*advanceHeightMaxminTopSideBearingminBottomSideBearing yMaxExtentr/zOS/2) xAvgCharWidthySubscriptXSizeySubscriptYSizeySubscriptXOffsetySubscriptYOffsetySuperscriptXSizeySuperscriptYSizeySuperscriptXOffsetySuperscriptYOffsetyStrikeoutSizeyStrikeoutPosition sTypoAscendersTypoDescender sTypoLineGap usWinAscent usWinDescentsxHeight sCapHeight)XAdvanceYAdvance XPlacement YPlacement) XCoordinate YCoordinate CoordinateValue)rrr r!cNt||||dSr)setattrr)visitorobjattrvalues rvisitrUs)D Cw}}U++,,,,,rhmtxvmtxmetricsc|D]:}||\}}||||f||<;dSrr)rQrRrSrXgadvancelsbs rrUrUcsV@@qz ]]7++W]]3-?-?? @@rVMTXVOriginRecordscL|D] }|||||<!dSrrZ)rQrRrSr_r[s rrUrUls9 ==#MM.*;<<q==rglyfglyphsc |D]}dD]9}t||d}|$t||||:|rI|jD]@}||j|_||j|_At|drL|j }t|D]5\}\} } || || f||<6dS)N)rr rr! coordinates) valuesgetattrrPr isComposite componentsxyhasattrrd enumerate) rQrRrSrbr[r componentrdirirjs rrUrUrs ]]__DD4 3 3D4&&A}4q!1!1222 ==?? \ 9 9 %mmIK88 %mmIK88  1m $ $ D-K&{33 D D 6Aq!(q!1!17==3C3C!C ADDrgvar variationsc|jd}|D]j\}}||}|D]Z}|j} t| D]A\} } | || d|| df| | <B[kdS)Nrar)fontitemsrdrlr) rQrRrSrp glyfTable glyphNamevarlistglyphvarrdrnxys rrUrUs V$I(..00LL 7)$ L LC/K";// L L2:!(r!u!5!5w}}RU7K7K!K A L LLLrVARCtablec|jd}d|jD}|j}t|}|jjD]}|jD]} | j} || j | _ || j | _ || j | _ || j | _ | j tjkr| j } | tjkr| dz } | dz} |j| }|j| }||| |j|r[t)||jz}t-t/||}d|D}||| _ ntj| _ | jtjkr| j} | tjkrn| dz } | dz} |j| dz}| dz } | dz} |j| }|j| }||| |j|rt)||jz}| j}t-t/||}g}|D]}t-|}d}|tjjzr#|||||<|dz }|tjjzr#|||||<|dz }|tjjzr|dz }|tjjzr|dz }|tjj zr|dz }|tjj!zr|dz }|tjj"zr|dz }|tjj#zr#|||||<|dz }|tjj$zr#|||||<|dz }|%tM||}||| _tj| _|'|_dS)Nfvarcg|] }|j Sr)axisTag).0as r zvisit..s---a ---ric,g|]}t|Srr)rrs rrzvisit..s666Qvayy666rrrr)(rsaxes MultiVarStorerVarCompositeGlyphsVarCompositeGlyphrh transformr translateX translateYtCenterXtCenterYaxisValuesVarIndexotTablesNO_VARIATION_INDEX MultiVarDataItem setSupports get_supportslenVarRegionCountlistr storeDeltastransformVarIndexflagsVarComponentFlagsHAVE_TRANSLATE_XHAVE_TRANSLATE_Y HAVE_ROTATION HAVE_SCALE_X HAVE_SCALE_Y HAVE_SKEW_X HAVE_SKEW_YHAVE_TCENTER_XHAVE_TCENTER_Yappendrfinish)rQrRrSvarcr~fvarAxesstore storeBuilderr[rmtvarIdxmajorminorvarDatavecmrnewVecrrns rrUrUsg < D--49---H  E-h77L  $ 6JRJRI RI RI#A"==66AL"==66AL qz22AJ qz22AJ+x/JJJ"5X888"bLE"VOE#07G!,u-C ,,U-?-?ty-Q-QRRRSHH(>>"73??3366#6667C7O7OPS7T7T 447?7R 4*h.III"4X888"bLE"VOE!,v7C"bLE"VOE#07G!,u-C ,,U-?-?ty-Q-QRRR%RHH(>> )"73??33!#!$55A $QA !A$x'A'RR''.}}QqT':':! !Q$x'A'RR''.}}QqT':':! !Q$x'A'OO' !Q$x'A'NN' !Q$x'A'NN' !Q$x'A'MM' !Q$x'A'MM' !Q$x'A'PP''.}}QqT':':! !Q$x'A'PP''.}}QqT':':! !Q"MM&))4444$6B6N6Ns6S6S 336>6Q 3SI RV&,,..Drkern kernTablesc|D]>}|j}|D] }|||||<!?dSr) kernTablekeysr)rQrRrSrr|rks rrUrUs[77O !! 7 7A"==166IaLL 777rct|D]e\}}t|ts.t|ts||||<H|d}t ||||d<fdS)N)rl isinstancerbytesr _cff_scale)rQargsrnarg num_blendss rrrsD//!!3#t$$ !c5)) -!--,,QRJ w $ $ $ CGG!!rzCFF CFF2cffc ||jd}t|dd}||jnd}t }|D]}||} | j} | jD]} | | \} } | | j tj | j |}|D]\}}|dkr t||tj|| j dd<dD]`}t||d}|t!|t"rt||rEs6 0/////............222222222222))))))555555555$$$$$$EEEEEE((((((------,,,,,,  )-----I---  V $ $&TU  V $ $&QR  V $ $';= E  ' '   E  ' '   E  ' '  0  @  89  |-  l,  !G-  ;<{>@@B--C@@B-U  "5%"5f"="=> @@@ 0U088:JKK==LK= 0U088(CCDDDCD&0U088,GG L LHG L0U088'BBU/U/CBU/p0U088,GG77HG7!!!U  "5%"5f"="=>?A?A?AJ())!!*)!    566  76 ''('&$$$$N zJJJ CHTTVVr