Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2jb @sddljjZddlmZddlmZddlmZddddd d d d d d d d d Z Gddde Z Gddde Z Gddde 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_ANCHORZ GRID_PPEMZPRESENTATION_PPEMZPPOSITIONING_PPEMZCOMPILER_USEEXTENSIONLOOKUPSZCOMPILER_USEPAIRPOSFORMAT2Z CMAP_FORMATZDO_NOT_TOUCH_CMAPc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCS)DParsercCs`tj|_t|_t|_i|_t|_t|_ t|_ d\|_ |_ d|_ |j||jdS)N)NN)astZVoltFiledoc_OrderedSymbolTableglyphs_ SymbolTablegroups_anchors_scripts_langs_lookups_next_token_type_ next_token_next_token_location_ make_lexer_advance_lexer_)selfpathr$=/tmp/pip-build-_d5lkt3n/fonttools/fontTools/voltLib/parser.py__init__s   zParser.__init__c CsRt|dr t|dd}|j}n"|}t|d}|j}WdQRXt|||_dS)Nreadnamer)hasattrgetattrr'rrlexer_)r"Z file_or_pathfilenamedatafr$r$r%r $s    zParser.make_lexer_cCs~|jj}xn|jdk rv|j|jtjkrHt|t|j}|j|q |j drVPq t ddj t tj|j q W|jS)NENDz Expected z, )r statementsrr! cur_token_ PARSE_FUNCSkeysr+appendis_cur_keyword_rjoinsortedcur_token_location_)r"r1funcr$r$r%parse.s   z Parser.parsecCs<|jdst|j}|j}|jd|j}|dkrBtd|jd}|jdkr~|jd|jg}|ddkrtd|jn|jdkr|jd|j}d}|jdkr|jd|j }|dkstd}|jd kr|jd |j}|jd|j j |dk rtd||f|t j ||||||d}|j j|||S)Nr ZIDrzInvalid glyph IDUNICODEzInvalid glyph UNICODEZ UNICODEVALUESZTYPEBASELIGATUREMARK COMPONENTZ COMPONENTSZ END_GLYPHz#Glyph "%s" (gid %i) already defined)location)r=r>r?r@)r6AssertionErrorr9expect_string_expect_keyword_expect_number_rrparse_unicode_values_ expect_name_rresolverZGlyphDefinitiondefine)r"rAr(gidZgunicodeZgtype componentsZ def_glyphr$r$r%r=sH                zParser.parse_def_glyph_cCs||jdst|j}|j}d}|jdkr2|j}|jd|jj|dk rZt d||t j |||d}|jj |||S)NrENUMZ END_GROUPzBGlyph group "%s" already defined, group names are case insensitive)rA) r6rBr9rCr parse_enum_rDrrHrrZGroupDefinitionrI)r"rAr(enumZ def_groupr$r$r%rds   zParser.parse_def_group_cCs|jdst|j}d}|jdkr4|jd|j}|jd|j}|jj|dk rdtd|||j j g}xh|jdkr|j |j }|jd|j j|j dk rtd|j |f||j j|j ||j|qtW|jd|j jtj||||d}|jj|||S) NrNAMETAGz=Script "%s" already defined, script tags are case insensitiveZ END_SCRIPT END_LANGSYSzPLanguage "%s" already defined in script "%s", language tags are case insensitive)rA)r6rBr9rrDrCrrHrr enter_scoper!parse_langsys_tagrIr5 exit_scoperZScriptDefinition)r"rAr(rTZlangslangZ def_scriptr$r$r%rws>         zParser.parse_def_script_cCs|jdst|j}d}|jdkr4|jd|j}|jd|j}g}x2|jdkr||j|j}|jd|j|qLWt j ||||d}|S)NZ DEF_LANGSYSrOrPrQ END_FEATURE)rA) r6rBr9rrDrCr!parse_feature_r5rZLangSysDefinition)r"rAr(rTfeaturesfeatureZ def_langsysr$r$r%rSs"      zParser.parse_langsys_cCs~|jdst|j}|jd|j}|jd|j}g}x*|jdkrf|jd|j}|j|q>Wtj||||d}|S)NZ DEF_FEATURErOrPrWZLOOKUP)rA) r6rBr9rDrCrr5rZFeatureDefinition)r"rAr(rTZlookupslookuprZr$r$r%rXs     zParser.parse_feature_c Cs8|jdst|j}|j}|djs6td|||jj|dk rTtd||d}|jdkrl|j n|jdkr|j d}d}d}|jd kr|j |jd kr|j |j}nR|jd kr|j n>|jd kr|j d}n&|j t j kr|j}ntd |j |n|jdkr&|j d}d}|jdkrV|j d|j}|dksVtd}|jdkrt|j dd}d}|jdkr|j d|jjdd}g} x|jdkr|j} qW|j} d} d} | dkr|j|} n"| dkr|j} ntd| |tj|||||||| | | |d } |jj|| | S)Nrrz)Lookup name "%s" must start with a letterz>Lookup "%s" already defined, lookup names are case insensitiveTZ PROCESS_BASEZ SKIP_BASEFZ PROCESS_MARKSZMARK_GLYPH_SETALLNONEz3Expected ALL, NONE, MARK_GLYPH_SET or an ID. Got %sZ SKIP_MARKSZ DIRECTIONLTRRTLZREVERSALZCOMMENTSz\n EXCEPT_CONTEXT IN_CONTEXTAS_SUBSTITUTION AS_POSITIONz/Expected AS_SUBSTITUTION or AS_POSITION. Got %s)rA)r^r_)rarb)r6rBr9rCisalpharrrHrr!rrSTRINGrDrGreplaceparse_context_parse_substitution_parse_position_rZLookupDefinitionrI)r"rAr(Z process_baseZ process_marksZmark_glyph_set directionreversalcommentscontextZ as_pos_or_subsubposZ def_lookupr$r$r%rs                        zParser.parse_def_lookup_c Cs|j}g}x|jdkrd}d}|j}|jdkrg}g}x<|jdkrt|j}|j}|dkrh|j|q:|j|q:W|jdtj||||d}|j|q |jdq W|S) NrarbZ END_CONTEXTLEFTRIGHT)rA)rarb)rqrr)r9rrGparse_coverage_r5rDrZContextDefinition) r"rAZcontextsZsidecoverageZex_or_inleftrightrnr$r$r%rh s*       zParser.parse_context_c Csn|jdst|j}g}g}|jdkr0td|xH|jdkrx|jd|j|j|jd|j|j|jdq2W|jdtdd|D}td d|D}|d kr|d ks|r|d ks|d krtd |t t t |t |}|d ko|d kr$|rt j ||d }nt j||d }nF|d krH|d krHt j||d }n"|d krj|d krjt j||d }|S) NrcZSUBz Expected SUBZWITHZEND_SUBZEND_SUBSTITUTIONcSsg|] }t|qSr$)len).0covr$r$r% 3sz.Parser.parse_substitution_..cSsg|] }t|qSr$)rw)rxryr$r$r%rz4szInvalid substitution type)rA)r6rBr9rrrDr5rsmaxdictziptuplerZ+SubstitutionReverseChainingSingleDefinitionZSubstitutionSingleDefinitionZSubstitutionMultipleDefinitionZSubstitutionLigatureDefinition) r"rlrAsrcdestZmax_srcZmax_destmappingror$r$r%ri%sD         zParser.parse_substitution_cCs|jdst|j}|j}|dkr.td||dkr@|j}n4|dkrR|j}n"|dkrd|j}n|dkrt|j}|j d|S) NrdATTACHATTACH_CURSIVE ADJUST_PAIR ADJUST_SINGLEz;Expected ATTACH, ATTACH_CURSIVE, ADJUST_PAIR, ADJUST_SINGLEZ END_POSITION)rrrr) r6rBr9rGr parse_attach_parse_attach_cursive_parse_adjust_pair_parse_adjust_single_rD)r"rAZpos_typepositionr$r$r%rjKs$    zParser.parse_position_cCs|jdst|j}|j}g}|jdx@|jdkrj|j}|jd|jd|j}|j||fq,W|jdtj |||d}|S)NrTO END_ATTACHATZANCHOR)rA) r6rBr9rsrDrrCr5rZPositionAttachDefinition)r"rArtZ coverage_toryZ anchor_namerr$r$r%r_s      zParser.parse_attach_cCs|jdst|j}g}g}x&|jdkrB|jd|j|jqWx&|jdkrj|jd|j|jqFW|jdtj|||d}|S)NrZENTERZEXITr)rA) r6rBr9rrDr5rsrZPositionAttachCursiveDefinition)r"rAZcoverages_exitZcoverages_enterrr$r$r%rps      zParser.parse_attach_cursive_c Cs|jdst|j}g}g}i}x(|jdkrH|j|j}|j|q"Wx(|jdkrr|j|j}|j|qLWxH|jdkr|j}|j}|jd|j } |j } | | f|||f<qvW|jdt j ||||d} | S)NrZFIRSTZSECOND END_ADJUSTBY)rA) r6rBr9rr!rsr5rErD parse_pos_rZPositionAdjustPairDefinition) r"rAZ coverages_1Z coverages_2Z adjust_pairZ coverage_1Z coverage_2Zid_1Zid_2Zpos_1Zpos_2rr$r$r%rs0     zParser.parse_adjust_pair_cCsl|jdst|j}g}x6|jdkrN|j}|jd|j}|j||fqW|jdtj ||d}|S)Nrrr)rA) r6rBr9rrsrDrr5rZPositionAdjustSingleDefinition)r"rAZ adjust_singleZ coveragesrprr$r$r%rs    zParser.parse_adjust_single_c Cs|jdst|j}|j}|jd|j}|jd|j}|jd|j}||jkr|j|j|}|dk r|j |krt d|||j dkrd}|j nd}|jd |j }|jd tj|||||||d }||jkrt|j|<|j|j|||S) NrONGLYPHr@z>Anchor "%s" already defined, anchor names are case insensitiveLOCKEDTFrZ END_ANCHOR)rA)r6rBr9rCrDrErGrrH componentrrr!rrZAnchorDefinitionrrI) r"rAr(rJZ glyph_nameranchorlockedrpr$r$r%r s<           zParser.parse_def_anchor_cCs8|j|jdst|j}|jd|j}||fS)N ADJUST_BYr)r!r6rBrErD)r" adjustmentsizer$r$r%parse_adjust_by_s  zParser.parse_adjust_by_c Cs|j|j}|jds t|d}d}d}i}i}i}|jdkrv|j|j}x"|jdkrt|j\}} ||| <qTW|jdkr|j|j}x"|jdkr|j\}} ||| <qW|jdkr|j|j}x"|jdkr|j\}} ||| <qW|jdtj ||||||S)NPOSZADVrZDXZDYZEND_POS) r!r9r6rBrrErrDrZPos) r"rAZadvZdxZdyZ adv_adjust_byZ dx_adjust_byZ dy_adjust_byrrr$r$r%rs:             zParser.parse_pos_cCsh|j}y |jjd}dd|D}Wn0tk rV}ztt||WYdd}~XnX|gkrd|SdS)N,cSs&g|]}|dkrt|dddqS)N)int)rxunir$r$r%rzsz0Parser.parse_unicode_values_..)r9rCsplit ValueErrorrstr)r"rAZunicode_valueserrr$r$r%rFs  zParser.parse_unicode_values_cCs0|jd|j}tj|j|d}|jd|S)NrL)rAZEND_ENUM)rDr9rEnumrs)r"rArNr$r$r%rMs   zParser.parse_enum_cCsg}|j}x|jdkr|jdkr4|j}|j|q |jdkrf|jd|j}|jtj||dq |jdkr|jd|j}|jtj|||dq |jdkr |jd|j}|jd|j}|jtj ||||dq Wt |S)NrGROUPRANGErL)rAr)rrrrL) r9rrMr5rDrCrZ GlyphNameZ GroupNameZRanger)r"rtrArNr(startendr$r$r%rss*          zParser.parse_coverage_cCs |jj|S)N)rrH)r"Z group_namer$r$r% resolve_groupszParser.resolve_groupcCs|jj||S)N)rrange)r"rrr$r$r% glyph_rangeszParser.glyph_rangecCs(|j}|j}|j}tj|||d}|S)N)rA)r9r2rErSettingDefinition)r"rAZ ppem_namevaluesettingr$r$r%r "s zParser.parse_ppem_cCs$|j}|j}d}tj|||d}|S)NT)rA)r9r2rr)r"rAr(rrr$r$r%r )s zParser.parse_noarg_option_cCs6|j}|j}|j|j|jf}tj|||d}|S)N)rA)r9r2rErr)r"rAr(rrr$r$r%r 0s   zParser.parse_cmap_formatcCs|jtjko|j|kS)N)cur_token_type_rrOr2)r"kr$r$r%r68szParser.is_cur_keyword_cCs&|j|jtjk r td|j|jS)NzExpected a string)r!rrrfrr9r2)r"r$r$r%rC;s  zParser.expect_string_cCs8|j|jtjkr$|j|kr$|jStd||jdS)Nz Expected "%s")r!rrrOr2rr9)r"keywordr$r$r%rDAs zParser.expect_keyword_cCs*|j|jtjkr|jStd|jdS)NzExpected a name)r!rrrOr2rr9)r"r$r$r%rGHs zParser.expect_name_cCs&|j|jtjk r td|j|jS)NzExpected a number)r!rrNUMBERrr9r2)r"r$r$r%rENs  zParser.expect_number_c Csj|j|j|j|_|_|_y(|jdr,t|jj \|_|_|_Wn tk rdd\|_|_YnXdS)Nr0)NN) rrrrr2r9r6 StopIterationr,next)r"r$r$r%r!Ts zParser.advance_lexer_N)$__name__ __module__ __qualname__r&r r;rrrrSrXrrhrirjrrrrr rrrFrMrsrrr r r r6rCrDrGrEr!r$r$r$r%rsB  '#M&#  rc@s6eZdZddZddZddZddZd d d Zd S)rcCs ig|_dS)N)scopes_)r"r$r$r%r&aszSymbolTable.__init__cCs|jjidS)N)rr5)r"r$r$r%rRdszSymbolTable.enter_scopecCs|jjdS)N)rpop)r"r$r$r%rUgszSymbolTable.exit_scopecCs||jd|<dS)Nr{)r)r"r(itemr$r$r%rIjszSymbolTable.defineTcCsTx$t|jD]}|j|}|r |Sq W|rPx$|D]}|j|jkr0||Sq0WdS)N)reversedrgetlower)r"r(case_insensitivescoperkeyr$r$r%rHms   zSymbolTable.resolveN)T)rrrr&rRrUrIrHr$r$r$r%r`s rc@s.eZdZddZddZd ddZdd Zd S) rcCs ig|_dS)N)r)r"r$r$r%r&zszOrderedSymbolTable.__init__cCs|jjidS)N)rr5)r"r$r$r%rR}szOrderedSymbolTable.enter_scopeFcCstj|||ddS)N)r)rrH)r"r(rr$r$r%rHszOrderedSymbolTable.resolvecCsdx^t|jD]P}||kr ||kr t|jj|}t|jj|}t|j||dSq WdS)Nr{)rrlistr4index)r"rrrZ start_idxZend_idxr$r$r%rs zOrderedSymbolTable.rangeN)F)rrrr&rRrHrr$r$r$r%rys r)ZfontTools.voltLib.astZvoltLibrZfontTools.voltLib.lexerrZfontTools.voltLib.errorriorr3objectrrrr$r$r$r%s,    N