)Eje ddlmcmZddlmZddlmZddlmZddddd d d d d d d d d Z Gdde Z Gdde Z Gdde Z dS)N)Lexer) VoltLibError)openparse_def_glyph_parse_def_group_parse_def_script_parse_def_lookup_parse_def_anchor_ parse_ppem_parse_noarg_option_parse_cmap_format) DEF_GLYPH DEF_GROUP DEF_SCRIPT DEF_LOOKUP DEF_ANCHOR GRID_PPEMPRESENTATION_PPEMPPOSITIONING_PPEMCOMPILER_USEEXTENSIONLOOKUPSCOMPILER_USEPAIRPOSFORMAT2 CMAP_FORMATDO_NOT_TOUCH_CMAPceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"S)#Parserctj|_t|_t |_i|_t |_t |_ t |_ d\|_ |_ d|_ |||dS)NNN)astVoltFiledoc_OrderedSymbolTableglyphs_ SymbolTablegroups_anchors_scripts_langs_lookups_next_token_type_ next_token_next_token_location_ make_lexer_advance_lexer_)selfpaths JC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/voltLib/parser.py__init__zParser.__init__sLNN )++ "}}  #  !mm #  2>/t/$(!  ct|dr&t|dd}|}n>|}t|d5}|}dddn #1swxYwYt |||_dS)Nreadnamer)hasattrgetattrr4rrlexer_)r. file_or_pathfilenamedatafs r0r,zParser.make_lexer_$s < ( ( |VT::H$$&&DD#HlC(( Avvxx               D(++ s A**A.1A.c |jj}|j||jt vr>t|t |j}||ne| drnVtdd tt z|j |j|jS)NENDz Expected z, )r statementsr)r- cur_token_ PARSE_FUNCSkeysr8appendis_cur_keyword_rjoinsortedcur_token_location_)r.r@funcs r0parsez Parser.parse.sY) #/    ! ! !+"2"2"4"444t[%ABB!!$$&&))))%%e,, "$))F;3C3C3E3E,F,F"G"GG,#/yr2c|dsJ|j}|}|d|}|dkrt d|jd}|jdkrL|d|g}|ddkrt d|jn4|jdkr)|d|}d}|jdkr/|d|}|d vsJd}|jd kr)|d |}|d |j |t d ||fz|tj |||||| }|j |||S)NrIDrzInvalid glyph IDUNICODEzInvalid glyph UNICODE UNICODEVALUESTYPE)BASELIGATUREMARK COMPONENT COMPONENTS END_GLYPHz#Glyph "%s" (gid %i) already definedlocation)rErHexpect_string_expect_keyword_expect_number_rr*parse_unicode_values_ expect_name_r"resolverGlyphDefinitiondefine)r.rWr5gidgunicodegtype components def_glyphs r0rzParser.parse_def_glyph_>s##K00000+""$$ T"""!!## 77143KLL L  y ( (   + + +++--.H{Q"#:DLookup "%s" already defined, lookup names are case insensitiveT PROCESS_BASE SKIP_BASEF PROCESS_MARKSMARK_GLYPH_SETALLNONEz3Expected ALL, NONE, MARK_GLYPH_SET or an ID. Got %s SKIP_MARKS DIRECTION)LTRRTLREVERSALCOMMENTSz\n EXCEPT_CONTEXT IN_CONTEXTAS_SUBSTITUTION AS_POSITIONz/Expected AS_SUBSTITUTION or AS_POSITION. Got %srV)rErHrXisalpharr(r]r*r-r)rSTRINGrYr\replaceparse_context_parse_substitution_parse_position_rLookupDefinitionr_)r.rWr5 process_base process_marksmark_glyph_set directionreversalcommentscontext as_pos_or_subsubpos def_lookups r0r zParser.parse_def_lookup_s##L11111+""$$Aw   ;dBH  =  & & 246:;    ~ - -    ! ! ! !   , ,    ! ! ! L    . .    ! ! !#333##%%%!%!4!4!6!6!U**##%%%%!V++##%%% % &%,66 $ 3 3 5 5 " $ 57   - -    ! ! !!M  { * *   - - -))++I....  z ) )   , , ,H  z ) )   , , ,**,,44UDAAH"BBB))++G"BBB))++  - - -**844CC m + +&&((CCD V )               T:...r2c|j}g}|jdvrd}d}|}|jdkrg}g}|jdvrb|}|}|dkr||n|||jdvb|dt j||||}||n|d|jdv|S)Nr END_CONTEXT)LEFTRIGHTrrV)rHr*r\parse_coverage_rDrYrContextDefinition) r.rWcontextssidecoverageex_or_inleftrightrs r0rzParser.parse_context_s<+"BBBDH((**H=00&*;;;,,..D#3355Hv~~ H---- X... &*;;;$$]333/dEH(((($$]333+"BBB,r2c|dsJ|j}g}g}|jdkrtd||jdkr|d|||d|||d|jdk|dtd|D}td|D}|d kr|d krtd |ttt|t|}|d kr|d krd |D}tt|t|krtj|| } nu|rtj|| } n\tj|| } nE|d kr|d krtj|| } n"|d kr|d krtj|| } | S) NrSUBz Expected SUBWITHEND_SUBEND_SUBSTITUTIONc,g|]}t|Slen.0covs r0 z.Parser.parse_substitution_..:s///Cs3xx///r2c,g|]}t|Srrrs r0rz.Parser.parse_substitution_..;s111SC111r2zInvalid substitution typec@g|]}|D]}|Sr)glyphSet)rrxs r0rz.Parser.parse_substitution_..Es-???s3??aajjll????r2rV)rErHr*rrYrDrmaxdictziptuplersetrSubstitutionAlternateDefinition+SubstitutionReverseChainingSingleDefinitionSubstitutionSingleDefinitionSubstitutionMultipleDefinitionSubstitutionLigatureDefinition) r.rrWsrcdestmax_srcmax_destmappingglyphsrs r0rzParser.parse_substitution_,sk##$566666+  u $ $~x88 8%''   ' ' ' JJt++-- . . .   ( ( ( KK,,.. / / /   + + + %'' /000//3///0011D11122 Q;;8a<<:HEE Es5::uT{{3344 a<Anchor "%s" already defined, anchor names are case insensitiveLOCKEDTFr END_ANCHORrV)rErHrXrYrZr\r%r] componentrr*r-rrAnchorDefinitionr#r_) r.rWr5r` glyph_namer anchorlockedrs r0r zParser.parse_def_anchor_s##L11111+""$$ T"""!!## W%%%&&((  [)))''))  & &]:.66t<?  x ' 'F    ! ! ! !F T"""oo \***% #z9fcH    T] * *(3 DM* % j!((v666 r2c||dsJ|}|d|}||fS)N ADJUST_BYr)r-rErZrY)r. adjustmentsizes r0parse_adjust_by_zParser.parse_adjust_by_so ##K00000((**  T"""""$$4r2cH||j}|ds J|d}d}d}i}i}i}|jdkrZ||}|jdkr'|\}} ||| <|jdk'|jdkrZ||}|jdkr'|\}} ||| <|jdk'|jdkrZ||}|jdkr'|\}} ||| <|jdk'|dtj||||||S)NPOSADVrDXDYEND_POS) r-rHrEr*rZrrYrPos) r.rWadvdxdy adv_adjust_by dx_adjust_by dy_adjust_byrrs r0rzParser.parse_pos_s +##E**44H44*      u $ $    ! ! !%%''C"k11#'#8#8#:#: D&0 d#"k11  t # #    ! ! !$$&&B"k11#'#8#8#:#: D%/ T""k11  t # #    ! ! !$$&&B"k11#'#8#8#:#: D%/ T""k11 Y'''wsBM<NNNr2c|j} |d}d|D}n/#t$r"}t t ||d}~wwxYw|gkr|ndS)N,cJg|] }|dkt|ddd!S)N)int)runis r0rz0Parser.parse_unicode_values_..s0VVV3CSUIIc#abb'2..IIIr2)rHrXsplit ValueErrorrstr)r.rWunicode_valueserrs r0r[zParser.parse_unicode_values_s+ 3!002288==NVV.VVVNN 3 3 3s3xx22 2 3!/2!5!5~~4?s3= A)A$$A)c|d|j}tj||}|d|S)NrfrVEND_ENUM)rYrHrEnumr)r.rWrjs r0rhzParser.parse_enum_ sW V$$$+x,,..BBB Z((( r2cPg}|j}|jdvr|jdkr+|}||nE|jdkrS|d|}|t j||n|jdkrT|d|}|t j|||n|jdkr}|d|}|d|}|t j |||||jdvt|S)N)r GROUPRANGErfrfr rVr5r6r) rHr*rhrDrYrXr GlyphName GroupNameRanger)r.rrWrjr5startends r0rzParser.parse_coverage_s+"EEE6))''))%%%%!W,,$$W---**,, dX F F FGGGG!W,,$$W---**,, dD8 L L LMMMM!W,,$$W---++--$$T***))++ %dX N N NOOO#"EEE$Xr2c6|j|SN)r$r])r. group_names r0 resolve_groupzParser.resolve_group's|##J///r2c8|j||Sr=)r"range)r.r:r;s r0 glyph_rangezParser.glyph_range*s|!!%---r2cx|j}|j}|}tj|||}|SNrVrHrArZrSettingDefinition)r.rW ppem_namevaluesettings r0r zParser.parse_ppem_-s>+O ##%%' 58LLLr2cT|j}|j}d}tj|||}|S)NTrV)rHrArrFr.rWr5rHrIs r0r zParser.parse_noarg_option_4s2+'ehGGGr2c|j}|j}|||f}tj|||}|SrDrErKs r0r zParser.parse_cmap_format;s]+$$&&(;(;(=(=t?R?R?T?TU'ehGGGr2c>|jtjuo |j|kSr=)cur_token_type_rrmrA)r.ks r0rEzParser.is_cur_keyword_Bs$ 2NA9MNr2c||jtjurt d|j|jS)NzExpected a string)r-rNrrrrHrAr.s r0rXzParser.expect_string_E@   u| 3 32D4LMM Mr2c||jtjur|j|kr|jSt d|z|j)Nz Expected "%s"r-rNrrmrArrH)r.keywords r0rYzParser.expect_keyword_KsP   5: - -$/W2L2L? "?W4d6NOOOr2c||jtjur|jSt d|j)NzExpected a namerTrQs r0r\zParser.expect_name_Qs@   5: - -? ",d.FGGGr2c||jtjurt d|j|jS)NzExpected a number)r-rNrNUMBERrrHrArQs r0rZzParser.expect_number_WrRr2c"|j|j|jc|_|_|_ |drt|j \|_|_|_dS#t$rd\|_|_YdSwxYw)Nr?r) r)r*r+rNrArHrE StopIterationr9nextrQs r0r-zParser.advance_lexer_]s  !    % Hdot/G C##E** $##    ""  % ))) C C C6B 3D !4#3#3#3#3 CsAA11B BN)$__name__ __module__ __qualname__r1r,rJrrrrrr|r rrrrrrrr rrr[rhrr?rBr r r rErXrYr\rZr-rr2r0rrs    ,,, ###J$!!!F$ UUUn6)))V&$"6   !!!F   OOO@@@@.000...OOO PPP HHH  CCCCCr2rc.eZdZdZdZdZdZddZdS) r#cig|_dSr=scopes_rQs r0r1zSymbolTable.__init__pt r2c:|jidSr=rbrDrQs r0rqzSymbolTable.enter_scopes Br2c8|jdSr=)rbpoprQs r0rtzSymbolTable.exit_scopevs r2c&||jd|<dS)Nra)r.r5items r0r_zSymbolTable.defineys!% Rr2Tct|jD]}||}|r|cS|r9|D]6}||kr ||cS7dSr=)reversedrbgetlower)r.r5case_insensitivescoperkkeys r0r]zSymbolTable.resolve|sdl++  E99T??D     & & &99;;$**,,.. :%%%/tr2N)T)r\r]r^r1rqrtr_r]rr2r0r#r#osd   &&&      r2r#c(eZdZdZdZddZdZdS)r!cig|_dSr=rarQs r0r1zOrderedSymbolTable.__init__rcr2c:|jidSr=rerQs r0rqzOrderedSymbolTable.enter_scoperfr2Fc@t|||dS)N)rp)r#r])r.r5rps r0r]zOrderedSymbolTable.resolves$D$9IJJJJJr2cpt|jD]}||vr||vrt||}t||}t|||dzcSdS)Nr)rmrblistrCindex)r.r:r;rq start_idxend_idxs r0rAzOrderedSymbolTable.rangesdl++ C CE~~#,, ..44U;; uzz||,,22377EJJLL)))gk*ABBBBtr2N)F)r\r]r^r1rqr]rArr2r0r!r!sY   KKKKr2r!)fontTools.voltLib.astvoltLibrfontTools.voltLib.lexerrfontTools.voltLib.errorriorrBobjectrr#r!rr2r0rs!#########))))))000000$#%%%&&$9"7&.   V CV CV CV CV CVV CV CV Cr&2r2