Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2øªj”ã@s*ddlmZddlmZddlmZddlmZm Z ddl m Z ddl mZddlmZddlZGd d „d eƒZGd d „d eƒZGd d„deƒZGdd„deƒZejdƒZdd„Zdd„Zdd„Zdd„Zdd„ZGdd„deƒZd‰dd„Z dŠd d!„Z!d"d#„Z"d‹d$d%„Z#dŒd&d'„Z$d�d(d)„Z%dŽd*d+„Z&d�d,d-„Z'd�d.d/„Z(d‘d0d1„Z)ej*fd2d3„Z+d’d4d5„Z,d6d7„Z-d8d9„Z.d:d;„Z/dd?„d?e1ƒZ2Gd@dA„dAe2ƒZ3GdBdC„dCe2ƒZ4GdDdE„dEe2ƒZ5d“dFdG„Z6d”dHdI„Z7d•dJdK„Z8dLdM„Z9dNdO„Z:GdPdQ„dQe1ƒZ;d–dRdS„Zej?fdVdW„Z@ej=fdXdY„ZAej=fdZd[„ZBd\d]„ZCd—d^d_„ZDd˜d`da„ZEd™dbdc„ZFdšddde„ZGd›dfdg„ZHdœdhdi„ZId�djdk„ZJdldm„ZKdndo„ZLdpdq„ZMdrds„ZNdtdu„ZOdvdw„ZPdxdy„ZQdzd{„ZRd|d}„ZSd~d„ZTdžd€d�„ZUGd‚dƒ„dƒe1ƒZVdŸd„d…„ZWd d†d‡„ZXeYdˆk�r&ddlZZZeZj[eXƒƒdS)¡é)ÚttLib)Ú cmap_classes)ÚotTables)Ú ValueRecordÚvalueRecordFormatDict)Úbuilder)Úcontextmanager)ÚsetitemNc@s eZdZdS)Ú MtiLibErrorN)Ú__name__Ú __module__Ú __qualname__©rrú>/tmp/pip-build-_d5lkt3n/fonttools/fontTools/mtiLib/__init__.pyr sr c@s eZdZdS)ÚReferenceNotFoundErrorN)r r r rrrrrsrc@s eZdZdS)ÚFeatureNotFoundErrorN)r r r rrrrrsrc@s eZdZdS)ÚLookupNotFoundErrorN)r r r rrrrrsrzfontTools.mtiLibcCsx|dd…d kr*tjjt|dd…dƒƒS|dd…dkrNdt|dd…ƒS|jdƒdkshtd |ƒ‚|sttd ƒ‚|S) NéúU úu éz# z glyph%.5dú rzSpace found in glyph name: %szGlyph name is empty)rr)rÚTTFontZ_makeGlyphNameÚintÚfindÚAssertionError)ÚsrrrÚ makeGlyphs rcCsdd„|DƒS)NcSsg|] }t|ƒ‘qSr)r)Ú.0Úgrrrú %szmakeGlyphs..r)ÚlrrrÚ makeGlyphs$sr"c Cs@|dk r4y ||}Wq<tk r0t|ƒ‚Yqtk rJy ||}Wntk rDt|ƒ‚YnXYnX|S)N)rÚ ValueErrorr#r)r$r%r&rrrÚ mapFeature3s  r)cs„y|||ƒ}Wndtk rr}zHy*|dk rH|j‡‡‡fdd„||ƒdSWntk r^YnX‚WYdd}~XnXˆˆˆ|ƒdS)Ncs ˆˆˆ|ƒS)Nr)Úref)Ú collectionÚkeyÚsetterrrÚEszsetReference..)rÚaddDeferredMappingÚAttributeError)Zmapperr%r$r-r+r,ÚmappedÚer)r+r,r-rÚ setReference?sr3c@s$eZdZdd„Zdd„Zdd„ZdS)ÚDeferredMappingcCs g|_dS)N)Ú_deferredMappings)ÚselfrrrÚ__init__NszDeferredMapping.__init__cCs*tjd|t|ƒjƒ|jj|||fƒdS)Nz*Adding deferred mapping for symbol '%s' %s)ÚlogÚdebugÚtyper r5Úappend)r6r-r$r2rrrr/Qsz"DeferredMapping.addDeferredMappingc Csnxb|jD]X\}}}tjd|t|ƒjƒy ||}Wntk rJ|‚YnX||ƒtjd|ƒqWg|_dS)Nz,Applying deferred mapping for symbol '%s' %sz Set to %s)r5r8r9r:r r#)r6r-r$r2r1rrrÚapplyDeferredMappingsUs  z%DeferredMapping.applyDeferredMappingsN)r r r r7r/r<rrrrr4Lsr4csÜtjƒ}g}|jdƒ��t�xj|D�]`}xt|ƒdkrB|jdƒq*W|\‰}}}tjdˆ|ƒtjƒ}d|_|r„t t ||t |dƒnd|_ t |ƒ} dgt| ƒ|_} x&t| ƒD]\} } t t || t| | ƒq°Wt|jƒ|_‡fdd „|Dƒ} | rü| d j} n:tjƒ}ˆ|_tjƒ|_|j|ƒ|j} d| _g| _d | _|d k�rH|| _q"tjƒ}|d dt|ƒ|_||_| jj|ƒt| jƒ| _q"WWdQRXx&|D]} t| jjd d„d�| j_�q˜Wt|dd„d�|_t|jƒ|_|S)Nz script tableéÚz#Adding script %s language-system %sÚReqFeatureIndexiÿÿécsg|]}|jˆkr|‘qSr)Ú ScriptTag)rr)Ú scriptTagrrr wsz#parseScriptList..rÚdefaultrcSs|jS)N)Ú LangSysTag)Úrecrrrr.Žsz!parseScriptList..)r,cSs|jS)N)rA)rErrrr.�s)ÚotÚ ScriptListÚbetweenÚlenr;r8r9ZLangSysZ LookupOrderr3r)Úsetattrr?ÚstripSplitCommaZ FeatureIndexÚ enumerater Ú FeatureCountZScriptZ ScriptRecordrAZDefaultLangSysZ LangSysRecordZ LangSysCountrDÚsortedZ ScriptCount)ÚlinesÚ featureMapr6ÚrecordsÚlineZ langSysTagZdefaultFeatureÚfeaturesZlangSysÚsymsÚtheListÚir$ÚscriptZ scriptRecZ langSysRecr)rBrÚparseScriptListasR         rXcCs<tjƒ}g|_|jdƒ�� �x|D]ú}|\}}}|dk r\||ksNtd|ƒ‚t|jƒ||<y,t|ƒt|jƒks†td|t|jƒfƒ‚Wntk rœYnXtjƒ}||_tj ƒ|_ |jj |ƒ|j } d| _ t |ƒ} dgt| ƒ| _ } x&t| ƒD]\} } tt|| t| | ƒqôWt| j ƒ| _q$WWdQRXt|jƒ|_|S)Nz feature tablezDuplicate feature name: %sz%d %d)rFÚ FeatureListZ FeatureRecordrHrrIrr(Z FeatureTagÚFeaturer;Z FeatureParamsrKÚLookupListIndexrLr3r'r Ú LookupCountrM)rOÚ lookupMaprPr6rRÚnameZ featureTagZlookupsZ featureRecÚfeaturerTrUrVr$rrrÚparseFeatureList“s2  ,   r`cCsâd}d}ddddddg}xÀ|jƒdjƒ|krØt|ƒ}dd d d d œj|djƒƒ}|rŒ|djƒdksrt|dƒ‚|djƒd kr||O}q|djƒdkr²|t|dƒd >O}q|djƒdkr|dO}t|dƒ}qW||fS)NrÚ righttoleftÚignorebaseglyphsÚignoreligaturesÚ ignoremarksZmarkattachmenttypeZmarkfiltertypeérr=é)rarbrcrdÚyesÚnor)rgrh)ÚpeeksÚlowerÚnextÚgetrr)rOÚflagsÚ filtersetZallFlagsrRÚflagrrrÚparseLookupFlags°s6rpcCsHi}x8|D]0}t|ƒdks"t|ƒ‚t|ƒ}|d||d<q Wtj|ƒS)Nrrer)rIrr"ÚotlZbuildSingleSubstSubtable)rOÚfontÚ _lookupMapr%rRrrrÚparseSingleSubstÐs  rtcCs8i}x(|D] }t|ƒ}|dd…||d<q Wtj|ƒS)Nrer)r"rqZbuildMultipleSubstSubtable)rOrrrsr%rRrrrÚ parseMultipleØs  rucCs8i}x(|D] }t|ƒ}|dd…||d<q Wtj|ƒS)Nrer)r"rqZbuildAlternateSubstSubtable)rOrrrsr%rRrrrÚparseAlternateßs  rvcCsPi}x@|D]8}t|ƒdks"t|ƒ‚t|ƒ}|d|t|dd…ƒ<q Wtj|ƒS)Nrrre)rIrr"ÚtuplerqZbuildLigatureSubstSubtable)rOrrrsr%rRrrrÚ parseLigatureæs  rxcCs¬i}x–|D]Ž}t|ƒdks"t|ƒ‚|djƒjddƒ}|tksBt‚t|dƒ}t|dƒ}||krltƒ||<t|||ƒ sˆt||fƒ‚t ||||ƒq Wt j ||j ƒƒS)Nr@rrr>rer) rIrÚtitleÚreplacerrrrÚhasattrrJrqZbuildSinglePosSubtableÚgetReverseGlyphMap)rOrrrsÚvaluesrRÚwrÚvrrrÚparseSinglePosîs     r€cCsÔtjƒ}d|_|_|jƒdjƒdjƒ}|dk�r@d|_i}�x.|D�]$}t|ƒdksbt |ƒ‚|djƒdjƒ}|dks†t |ƒ‚|dt|ƒd…j ƒj ddƒ}t |d} t |dd…ƒ\} } t|dƒ} | |krâi|| <| || k�rtƒtƒf|| | <|| | } |dk�r2|j| O_| d}n|j| O_| d}t||ƒ �sbt ||fƒ‚t||| ƒqHWtt|jƒƒ|ƒ|_g|_x¢|jjD]–} || }tjƒ}g}|_x\t|jƒ|jd �D]F} || }tjƒ}| |_|d|_|j�rü|dnd|_|j|ƒ�qÈWt|jƒ|_|jj|ƒ�q–Wt|jƒ|_ �n�|j!d ƒ�rÂd |_ddg}xz|jƒdj!d ƒ�rÔ|j"ƒddtd ƒ …jƒ}dtj#fdtj$fd œ|\}}||dk�s¾t ‚t%|||d�||<�q\W|\|_#|_$dd„|Dƒ\|_&|_'dd„t(|j&ƒDƒ|_)xH|j)D]>}dd„t(|j'ƒDƒ|_*x |j*D]} tƒ| _tƒ| _�q8W�qW�xü|D]ô}t|ƒdk�szt |ƒ‚|djƒdjƒ}|dk�s t |ƒ‚|dt|ƒd…j ƒj ddƒ}t |d} dd„|dd…Dƒ\}}} |j)|j*|} |dk�r|j| O_| j}n|j| O_| j}t||ƒ �sFt ||fƒ‚t||| ƒ�q`WxN|j)D]D}x<|j*D]2} t|j| jƒ| _|j�r–t|j| jƒnd| _�qlW�q`Wtt|j#j+jƒƒ|ƒ|_nd�sÐt |ƒ‚|S)NrÚleftÚrightrer=rr>r@)r,Úclassrzclass definition begin)ÚfirstÚsecond)Úklasscss |]}dt|jjƒƒVqdS)reN)ÚmaxÚ classDefsr})rÚcrrrú 2szparsePair..cSsg|] }tjƒ‘qSr)rFÚ Class1Record)rrVrrrr 3szparsePair..cSsg|] }tjƒ‘qSr)rFÚ Class2Record)rÚjrrrr 5scss|]}t|ƒVqdS)N)r)rÚxrrrrŠ?s)r�r‚)r�r‚)r�r‚),rFZPairPosZ ValueFormat1Z ValueFormat2riÚsplitrjÚFormatrIrryrzrr"rrr{rJÚ makeCoverageÚsetÚkeysÚCoverageZPairSetÚglyphsZPairValueRecordrNÚ getGlyphIDZ SecondGlyphZValue1ZValue2r;ZPairValueCountZ PairSetCountÚendswithÚpeekZ ClassDef1Z ClassDef2Ú parseClassDefZ Class1CountZ Class2CountÚranger‹rŒrˆ)rOrrrsr6Útypr}rRZsideÚwhatÚmaskZglyph1Zglyph2ÚvalueZrec2ZvrZvalues1ZpairsetrQZvalues2Úpairrˆr&r†Zrec1Zclass1Zclass2rrrÚ parsePairüs¤                       (r c CsF|jƒdjƒdjƒ}|dkr<|jdƒ� t||ƒSQRXt||ƒS)Nrr�r‚úfirstclass definition beginúsecondclass definition begin)r�r‚)r¡r¢)rir�rjÚuntilr )rOrrrsr›rrrÚ parseKernsetTs  r¤cCs`t|ƒdkst‚|ƒ}d|_t|dƒ\|_|_t|ƒdkr\|ddkr\d|_t|dƒ|_|S)Nrrerr>)rIrr�Ú intSplitCommaZ XCoordinateZ YCoordinaterZ AnchorPoint)Údatar†ÚanchorrrrÚ makeAnchor[sr¨cCs®i}x˜|D]�}t|ƒdks"t|ƒ‚dtjfdtjfdœ|d\}}t|dƒ}||krdddg||<|||dks€t||fƒ‚t|dd…|ƒ|||<q Wtj||j ƒƒS)Nr@r=rre)ÚentryÚexitr)r@r=) rIrrFZ EntryAnchorZ ExitAnchorrr¨rqZbuildCursivePosSubtabler|)rOrrrsrQrRr&r†ÚglyphrrrÚ parseCursivees    r¬cCsJg}x@|jD]6}||\}}|jƒ}||_t||j|ƒ|j|ƒq W|S)N)r•ZMarkRecordClassÚClassrJZ MarkAnchorr;)r¦Úcoverager‰rQr«r†r§ÚrecordrrrÚmakeMarkRecordsts  r°c Cs¤g}i}xD|jD]:}t|ƒ||<|jƒ}dg|}t||j|ƒ|j|ƒqWxP|jƒD]D\\}} } |||}t||jƒ}|| dks”t|| fƒ‚| || <qXW|S)N) r•rIZBaseRecordClassrJZ BaseAnchorr;ÚitemsÚgetattrr) r¦r®r‰Ú classCountrQr&r«r¯Úanchorsr†r§rrrÚmakeBaseRecords~s      rµcCsðdgt|jƒ}dd„t|jƒDƒ}xÆ|jƒD]º\\}}}} } |||} | dkrœtjƒ} |||<| | _dd„t| ƒDƒ| _x| jD]} dg|| _ qˆW| j| ks¶t || j| fƒ‚| j|dj } | |dksàt |||fƒ‚| | |<q.W|S)NcSsi|]\}}||“qSrr)rrVrrrrú �sz'makeLigatureRecords..cSsg|] }tjƒ‘qSr)rFÚComponentRecord)rrVrrrr —sz'makeLigatureRecords..re) rIr•rLr±rFÚLigatureAttachZComponentCountršr·ZLigatureAnchorr)r¦r®r‰r³rQr&r«r†ZcompIdxZ compCountr§r¯ZcompRecr´rrrÚmakeLigatureRecordsŽs   r¹cCs@|jƒ}d|_i}i}||jf||jf||jfdœ}d}xÚ|D]Ò}|d} | dksVt‚t|dƒ} || \} } | dkrzdnd} tdd „|dd| …Dƒƒ}t|d| ƒ}t|d | d…| ƒ}| dkrÚ| ||f}}n| |f||}}|| k�sþt|ƒ‚|| |<t ||ƒ}q>Wt t |j ƒƒ||j ƒ}|jƒ}t|||ƒ}t||j|ƒt||jt|ƒƒt||j|ƒt||j|ƒ|d|_|�sŽdndt d d „|jƒDƒƒ|_t t d d „|j ƒDƒƒ||jƒ}|jƒ}|jdk�rðt||||jƒ}nt||||jƒ}t||j|ƒt||jt|ƒƒt||j |ƒt||j!|ƒ|S)Nre)ÚmarkÚbaseÚligaturerrºr»r¼rcss|]}t|ƒVqdS)N)r)rrVrrrrвsz'parseMarkToSomething..r@css|]\}}|dVqdS)reNr)rÚkrrrrrŠÈscSsg|] }|d‘qS)rr)rr½rrrr Ész(parseMarkToSomething..ÚLigature)rºr»r¼)"ÚTyper�ZMarkAnchorClassZBaseAnchorClassrrrwrr¨r‡r‘r’r“ZMarkCoverageClassZMarkArrayClassr°rJZ MarkRecordZ MarkCountrIZ MarkCoverageZ MarkArrayZ ClassCountr±r³ZBaseCoverageClassZBaseArrayClassÚBaser¹rµZ BaseRecordZ BaseCountZ BaseCoverageZ BaseArray)rOrrr‰r6ZmarkDataZbaseDataÚDataZmaxKlassrRr›r«r¦Z anchorClassZ extraItemsÚextrasr†r§r,ržZ markCoverageZ markArrayZ markRecordsZ baseCoverageZ baseArrayZ baseRecordsrrrÚparseMarkToSomething¡sT      &  rÃc@seZdZdd„ZdS)Ú MarkHelpercCs†x€d D]x}xrd D]j}||}|dkr2|d kr2|}nt||ƒ|}|dkrLd }t|||ƒ|dkrtt|ƒ}t||d |ƒqWqWdS)NÚMarkrÀr”ÚArrayÚCountÚRecordÚAnchorZLigatureRecordr¸r­)rÅrÀ)r”rÆrÇrÈrÉ)rÇrÈrÉ)r²rJrF)r6ZWhichZWhatr,ržr†rrrr7×s    zMarkHelper.__init__N)r r r r7rrrrrÄÖsrÄc@seZdZdZdZejZdS)ÚMarkToBaseHelperrÅrÀN)r r r rÅrÀrFZ MarkBasePosr¿rrrrrÊæsrÊc@seZdZdZdZejZdS)ÚMarkToMarkHelperZMark1ZMark2N)r r r rÅrÀrFZ MarkMarkPosr¿rrrrrËêsrËc@seZdZdZdZejZdS)ÚMarkToLigatureHelperrÅr¾N)r r r rÅrÀrFZ MarkLigPosr¿rrrrrÌîsrÌcCst||tƒƒS)N)rÃrÊ)rOrrrsrrrÚparseMarkToBaseósrÍcCst||tƒƒS)N)rÃrË)rOrrrsrrrÚparseMarkToMarkõsrÎcCst||tƒƒS)N)rÃrÌ)rOrrrsrrrÚparseMarkToLigature÷srÏcCs|rdd„|jdƒDƒSgS)NcSsg|] }|jƒ‘qSr)Ústrip)rrrrrr ûsz#stripSplitComma..ú,)r�)rRrrrrKúsrKcCs|rdd„|jdƒDƒSgS)NcSsg|] }t|ƒ‘qSr)r)rrVrrrr þsz!intSplitComma..rÑ)r�)rRrrrr¥ýsr¥c@seZdZdd„ZdS)Ú ContextHelpercCst|jdƒrd}d}nd}d}|jdƒr4d}d}d}n d}d}d}||}||_||_||_||_||_||_|d |_|dkrÈd d „} d d „} d d „} dd „} d} d}dd „}dd „}dd„}dd„}nº|dk�r$dd „} dd „} dd „} dd „} dd„} dd„}dd „}dd „}d d„}d!d„}n^|dk�rpd"d „} d#d „} d} d} d} d}d$d „}d%d „}d&d„}d'd„}nd�s‚t d(|ƒ‚|�r¨| |_ | |_ ||_ ||_ ||_n| |_ | |_ | |_ ||_ ||_|dk�r|d)|_|d*|_|d+|_|d,|_d-d „|_nl|dk�rp|d.|_|d/|_|d0|_|d1|_d2d „|_|�rJd3nd4|_|�rZdnd|_|�rjd5nd6|_dS)7NZSubstÚSubZPosÚChainrer@r>rÚ LookupRecordcSs|jS)N)r”)Úrrrrr.sz(ContextHelper.__init__..cSs|jS)N)r”)rÖrrrr.scSsdS)N)Nr)rÖrrrr.scSsdS)N)NNNr)rÖrrrr. scSs|jfS)N)ÚInput)rÖrrrr.#scSs|j|j|jfS)N)Ú Backtrackr×Ú LookAhead)rÖrrrr.$scSs|\|_dd„|Dƒ\|_dS)Ncss|]}t|ƒdVqdS)reN)rI)rrŽrrrrŠ'sz>ContextHelper.__init__..SetRuleData..)r×Ú GlyphCount)rÖÚdrrrÚ SetRuleData%sz+ContextHelper.__init__..SetRuleDatacSsF|\|_|_|_t|dƒt|dƒdt|dƒ|_|_|_dS)Nrrer)rØr×rÙrIÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCount)rÖrÛrrrÚChainSetRuleData(sz0ContextHelper.__init__..ChainSetRuleDatarcSs|jS)N)r”)rÖrrrr.,scSs|jS)N)r”)rÖrrrr.-scSs|jfS)N)ÚClassDef)rÖrrrr..scSs|j|j|jfS)N)ÚBacktrackClassDefÚ InputClassDefÚLookAheadClassDef)rÖrrrr./scSs |\|_dS)N)rá)rÖrÛrrrÚSetContextData2sz.ContextHelper.__init__..SetContextDatacSs|\|_|_|_dS)N)rârãrä)rÖrÛrrrÚSetChainContextData4sz3ContextHelper.__init__..SetChainContextDatacSs|jfS)N)r­)rÖrrrr.8scSs|j|j|jfS)N)rØr×rÙ)rÖrrrr.9scSs|\|_dd„|Dƒ\|_dS)Ncss|]}t|ƒdVqdS)reN)rI)rrŽrrrrŠ<sz>ContextHelper.__init__..SetRuleData..)r­rÚ)rÖrÛrrrrÜ:scSsF|\|_|_|_t|dƒt|dƒdt|dƒ|_|_|_dS)Nrrer)rØr×rÙrIrÝrÞrß)rÖrÛrrrrà=scSs |jdS)Nr)r”)rÖrrrr.AscSs |jdS)Nr)Ú InputCoverage)rÖrrrr.BscSs|jS)N)r”)rÖrrrr.GscSs|j|j|jS)N)ÚBacktrackCoveragerçÚLookAheadCoverage)rÖrrrr.Hs cSs|\|_dd„|Dƒ\|_dS)Ncss|]}t|ƒVqdS)N)rI)rrŽrrrrŠMsz>ContextHelper.__init__..SetRuleData..)r”rÚ)rÖrÛrrrrÜKscSs.|\|_|_|_dd„|Dƒ\|_|_|_dS)Ncss|]}t|ƒVqdS)N)rI)rrŽrrrrŠPszCContextHelper.__init__..ChainSetRuleData..)rèrçrérÝrÞrß)rÖrÛrrrràNszunknown format: %sÚRuleÚ RuleCountÚRuleSetÚ RuleSetCountcSs||kr|gSgS)Nr)r•r‰rÖrrrr.fsZ ClassRuleZClassRuleCountZClassSetZ ClassSetCountcSs&|r|j||ƒS|dkr t|ƒStƒS)Nr)Zintersect_classr’)r•r‰rÖrrrr.lsrãrár×r­)r—Ú startswithÚTypr¿rÔÚChainTypÚInputIdxÚDataLenrÕrr”Ú ContextDataråÚRuleDatarÜrêrërìríZ IntersectráZ ClassDefIndexr×)r6Ú klassNamer�rïr¿rÔrñròrðr”Z ChainCoverageróZChainContextDatarårærôZ ChainRuleDatarÜràrrrr7s                     zContextHelper.__init__N)r r r r7rrrrrÒsrÒcCsˆtt|ƒ}g}xt|D]l}|ƒ}t|ƒ}t|ƒdks:t|ƒ‚t|dƒ}|dksVt|ƒ‚|d|_tt||dt |dƒ|j |ƒqW|S)Nrrrer[) r²rFrKrIrrZ SequenceIndexr3r'rJr;)r±rõr]r†ÚlstÚitemrEr&rrrÚparseLookupRecordsss    røcCs|sdS|ƒ}t|ƒ|_|S)N)Údictrˆ)rˆrrr†r6rrrÚ makeClassDef�s  rúc Cs`i}|jdƒ�@x8|D]0}t|dƒ}||ks6t|ƒ‚t|dƒ||<qWWdQRXt|||ƒS)Nzclass definitionrre)rHrrrrú)rOrrr†rˆrRr«rrrr™‡s   r™cCs8|sdSt|tƒrt|ƒ}|ƒ}tt|ƒ|jd�|_|S)N)r,)Ú isinstancer’rNr–r•)r•rrr†r®rrrr‘�s r‘c CsFg}|jdƒ�&x|D]}|jt|dƒƒqWWdQRXt|||ƒS)Nzcoverage definitionr)rHr;rr‘)rOrrr†r•rRrrrÚ parseCoverage˜s    rüc s0i}xF|D]>\}}|j|ˆjdgƒjt‡fdd„t|ƒDƒƒ|fƒq Wg}xº|D]²}||krn|jdƒqVg} x\||D]P\}}ttˆjƒƒ} ˆj| |ƒt | ˆj dt |ƒƒt | ˆj |ƒ| j| ƒq|Wttˆj ƒƒ} t | ˆj| ƒt | ˆjt | ƒƒ|j| ƒqVWt |ˆj |ƒt |ˆjt |ƒƒdS)Nrc3s,|]$\}}||ˆjkrdndd…VqdS)rerN)rñ)rrVr)r‰rrrŠ¢sz!bucketizeRules..rÇ)Ú setdefaultrñr;rwrLr²rFrêrÜrJr¿rIrÕrìrërí) r6r‰ÚrulesZ bucketKeysZbucketsÚseqÚrecsZrulesetsZ firstGlyphZ thisRulesZruleZrulesetr)r‰rÚbucketizeRulesŸs*:   rcsztt|ƒƒ}|jƒdjƒdjƒ}|dk�r"d|_tjd||jƒt||jƒ‰g}x”|D]Œ}|djƒdkszt |dƒ‚x t |ƒdˆj krš|j dƒq|Wt dd„|ddˆj …Dƒƒ}t|dˆj d…ˆj|ƒ} |j || fƒqZWt‡fdd„|Dƒƒ} t| |ƒ|_t|ˆ||jjƒ�nT|jd ƒ�r d |_tjd||jƒt||jƒ‰dgˆj } xœ|jƒdjd ƒ�rø|jƒddt d ƒ …jƒ}ddtjfidtjfdtjfd tjfd œd œˆj |\} } | | dk�sât | ƒ‚t||| d�| | <�q^Wˆj|| ƒg}xž|D]–}|djƒjd ƒ�s4t |dƒ‚x$t |ƒdˆj k�rX|j dƒ�q6Wt dd„|ddˆj …Dƒƒ}t|dˆj d…ˆj|ƒ} |j || fƒ�qWt‡fdd„|Dƒƒ‰t‡fdd„| ˆjjj ƒDƒƒ} t| |ƒ|_t|ˆ|t!t"ˆƒdƒƒ�nj|jdƒ�rhd|_tjd||jƒt||jƒ‰t dd„t!ˆj ƒDƒƒ}xŒ|jƒdjdƒ�rÞ|jƒddt dƒ …jƒ}ddtjfidtj#fdtj$fd tj%fdœd œˆj |\} } || j t&||| d�ƒ�qTWˆj'||ƒt(|ƒ}t |ƒdk�st ‚|d}|djƒdk�s,t |dƒ‚t|dd…ˆj|ƒ} t)|ˆj*dt | ƒƒt)|ˆj| ƒnd�svt |ƒ‚|S)Nrr«rezParsing %s format %sr>css|]}tt|ƒƒVqdS)N)r"rK)rrVrrrrŠÄszparseContext..c3s |]\}}|ˆjdVqdS)rN)rñ)rrÿr)r‰rrrŠÈsrƒrzclass definition begin)Ú backtrackr>Ú lookahead)rer@)r†css|]}t|ƒVqdS)N)r¥)rrVrrrrŠãsc3s |]\}}|ˆjdVqdS)rN)rñ)rrÿr)r‰rrrŠæsc3s|]\}}|ˆkr|VqdS)Nr)rrr‰)Ú firstClassesrrrŠçsr®r@css|] }gVqdS)Nr)rrVrrrrŠîszcoverage definition begin)rÚinputrrÇ)+r²rFrir�rjr�r8r9rÒrrIròr;rwrørÕr’r‘r”rr•r—r˜rárârãrär™rårîrñrˆr±ršr‡rèrçrérürÜÚlistrJr¿)rOrrr¿r]r6r›rþrRrÿrZ firstGlyphsrˆr&r†Ú coveragesr)r‰rrÚ parseContext¹s†              "     rcCst||d|d�S)NZ ContextSubst)r])r)rOrrr]rrrÚparseContextSubstsr cCst||d|d�S)NZ ContextPos)r])r)rOrrr]rrrÚparseContextPos sr cCst||d|d�S)NZChainContextSubst)r])r)rOrrr]rrrÚparseChainedSubst sr cCst||d|d�S)NZChainContextPos)r])r)rOrrr]rrrÚparseChainedPossr c s(tjƒ}d|_ggf}xj|jƒdjdƒr€|jƒddtdƒ …jƒ}dtjfdtj fdœ|\}}||j t |||d�ƒqW|d|_t|jƒ|_ |d|_ t|j ƒ|_ i‰x8|D]0}t|ƒdksÐt|ƒ‚t|ƒ}|dˆ|d<q¸Wttˆjƒƒ|ƒ|_‡fdd„|jjDƒ|_t|jƒ|_|S) Nrerzcoverage definition begin)rr)r†rcsg|] }ˆ|‘qSrr)rr½)r%rrr &sz,parseReverseChainedSubst..)rFZReverseChainSingleSubstr�rir—r˜rIrjrèrér;rürÝrßrr"r‘r’r“r”r•Z SubstituterÚ) rOrrrsr6rr›r&r†rRr)r%rÚparseReverseChainedSubsts,        r c Cs‚|jdƒ}|\}}}tjd||ƒtjƒ}t|ƒ\|_} | dk rF| |_dtfdt fdt fdt fdt fdt fd tfd œdtfdtfdtfdtfdtfdtfdtfd tfd tfd œ d œ||\|_} |jdƒ�€g} xt|jƒ�rF|jdƒ�>x6|jƒ�r | |||ƒ} |j| jk�st‚| j| ƒqìWWdQRX|jƒddkrÔt|ƒqÔWWdQRX|jdƒ| |_t |jƒ|_!|j!dk�r~dS|S)NÚlookupzParsing lookup type %s %srerr@r=éérf)ÚsingleÚmultipleZ alternater¼ÚcontextÚchainedZreversechainedé) rrŸZkernsetZcursivez mark to basezmark to ligaturez mark to markrr)ÚGSUBÚGPOSz lookup endú % subtableú subtable endr)rr)rr)"Úexpectr8r9rFÚLookuprpZ LookupFlagZMarkFilteringSetrtrurvrxr r r r€r r¤r¬rÍrÏrÎr r Z LookupTyper£r˜rr;rirkZSubTablerIZ SubTableCount) rOÚtableTagrrr]rRÚ_r^r›rrnZparseLookupSubTableZ subtablesZsubtablerrrÚ parseLookup*sP           rc sþtj|ƒƒ}tƒ‰tƒ‰|dks$t‚tjd|ƒtt|ƒƒ}d|_d‡fdd„fd‡‡fd d„fdd œ}x |j ƒD]\}}t ||dƒqrW�x*|j ƒdk �r¶|j ƒd j ƒ}||krÎtjd |j ƒƒt |ƒqŽ||\}}|dk�rŒ|jdk�rtjƒ|_g|j_|j ƒ\} } } t|||ˆƒ} ˆdk �rP| ˆk�s>td| ƒ‚t|jjƒˆ| <n,t| ƒt|jjƒk�s|td| t|jƒfƒ‚|jjj| ƒqŽt||ƒdk�s¤t|ƒ‚t ||||ƒƒqŽW|j�rÐt|jjƒ|j_ˆdk �râˆjƒˆdk �rôˆjƒ||_|S)Nrrz Parsing %sirGcs t|ˆƒS)N)rX)rO)rPrrr.iszparseGSUBGPOS..rYcs t|ˆˆƒS)N)r`)rO)rPr]rrr.lsÚ LookupList)zscript table beginzfeature table beginrrz Skipping %srzDuplicate lookup name: %sz%d %d)rr)rN)rÚ getTableClassr4rr8r9r²rFÚVersionr}rJr˜rjrkrrrrIrr;r\r<Útable) rOrrrÚ containerr6ÚfieldsÚattrÚparserr›rr^rr)rPr]rÚ parseGSUBGPOS^sV          ,  r'cCs t||dƒS)Nr)r')rOrrrrrÚ parseGSUB’sr(cCs t||dƒS)Nr)r')rOrrrrrÚ parseGPOS”sr)c Csni}|jdƒ�JxB|D]:}t|dƒ}||ks6t|ƒ‚dd„|dd…Dƒ||<qWWdQRXtj||jƒƒS)Nzattachment listrcSsg|] }t|ƒ‘qSr)r)rrVrrrr �sz#parseAttachList..re)rHrrrqZbuildAttachListr|)rOrrZpointsrRr«rrrÚparseAttachList—s   (r*c Cs”i}|jdƒ�nxf|D]^}t|dƒ}||ks6t|ƒ‚t|dƒ}dd„|dd…Dƒ}|t|ƒkslt|ƒ‚|||<qWWdQRXtj|i|jƒƒS)NÚcaretsrrecSsg|] }t|ƒ‘qSr)r)rrVrrrr §sz"parseCaretList..r)rHrrrrIrqZbuildLigCaretListr|)rOrrr+rRr«ÚnumZ thisCaretsrrrÚparseCaretList s    r-cCs`tjƒ}d|_dt|jƒƒ|_dg|j|_x,t|jƒƒD]\}}t t |ƒ|ƒ|j|<q.Z AttachListZ LigCaretListÚMarkAttachClassDefcSst||tjd�S)N)r†)r™rFr5)rOrrrrrr.Ðsr.)zclass definition beginzattachment list beginz carets beginz&mark attachment class definition beginzmarkfilter set definition beginrz Skipping %sii)rr r8r9rFr3r*r-r2r}rJr˜rjrkr²rr.r!r")rOrrr#r6r$r%r&r›rrrÚ parseGDEFÂs0     r6c sÐtjdƒƒ}tjdƒg}x¤ˆjƒdk r¾ˆjdt|ƒƒ‡fdd„dDƒ\}}}}t||ƒ}||_||_ ||_ i|_ t ˆƒ} x0| d d kr°| d |j t | d d ƒ<t ˆƒ} q‚W|j|ƒqWd |_||_|S)NÚcmapz Parsing cmapzcmap subtable %dcsg|]}tˆ|ƒ‘qSr)Ú parseCmapId)rÚfield)rOrrr êszparseCmap..Ú platformIDÚ encodingIDÚformatÚlanguagerz end subtablerer)r:r;r<r=)rr r8r9r˜rrIrr:Z platEncIDr=r7rkrr;Z tableVersionÚtables) rOrrr#r>ZplatIdZencIdÚfmtÚlangr"rRr)rOrÚ parseCmapãs(     rAcCs$t|ƒ}||dkst‚t|dƒS)Nrre)rkrr)rOr9rRrrrr8úsr8cCsÎtjdƒ|jƒ}d}|djƒddkr<|djƒd}n.dj|djƒdd…ƒdkrj|djƒd}|dk r¦t|ƒ|jdƒ}|dkr’|}n||ks¦t||fƒ‚|dk s¶td ƒ‚tt t t d œ|||ƒS) Nz Parsing tablerZFontDamererr@zFont Chef Tabler=z7Don't know what table to parse and data doesn't specify)rrr3r7) r8r9rir�ÚjoinrkÚljustrr(r)r6rA)rOrrrrRÚtagrrrÚ parseTableÿs&  rEc@s|eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z e dd„ƒZ e dd„ƒZdd„Zdd„ZdS)Ú Tokenizerc CsNt|ƒ}y |j|_Wnd|_YnXt|ƒ|_d|_d|_g|_d|_dS)Nr>r)Úiterr^ÚfilenamerOrRÚlinenoÚstoppersÚbuffer)r6ÚfrOrrrr7s   zTokenizer.__init__cCs|S)Nr)r6rrrÚ__iter__'szTokenizer.__iter__cCs�|jd7_t|jƒ}|_dd„|jdƒDƒ}t|ƒdkrN|d rN|d=|rŒ|d rŒtjd|j|jfƒx|rŠ|d rŠ|d =qtW|S) NrecSsg|] }|jƒ‘qSr)rÐ)rrrrrr -sz(Tokenizer._next_line..ú rz!trailing tab found on line %d: %séÿÿÿÿrOrO)rIrkrOrRr�rIr8Úwarning)r6rRrrrÚ _next_line*s zTokenizer._next_linecCs>x8|jƒ}|r|dr|dddks2|ddkr|SqWdS)Nrú%z % subtable)rQ)r6rRrrrÚ_next_nonempty6s(zTokenizer._next_nonemptycCs"|jr|j}d|_|S|jƒSdS)N)rKrS)r6ÚretrrrÚ_next_buffered=s zTokenizer._next_bufferedcCs(|jƒ}|djƒ|jkr$||_t‚|S)Nr)rUrjrJrKÚ StopIteration)r6rRrrrÚ__next__Es zTokenizer.__next__cCs|jƒS)N)rW)r6rrrrkLszTokenizer.nextc CsH|js*y|jƒ|_Wntk r(dSX|jdjƒ|jkrBdS|jS)Nr)rKrSrVrjrJ)r6rrrr˜OszTokenizer.peekcCs|jƒ}|dk r|SdS)Nr>)r>)r˜)r6rTrrrriYszTokenizer.peeksccsF|d}|d}|j|ƒ|jj|ƒdV|jd=|j|dƒdS)Nz beginz endrerO)ÚexpectendswithrJr;r)r6rDÚstartÚendrrrrH]s  zTokenizer.betweenccs:t|ƒtk r|f}|jj|ƒdV|jt|ƒ d…=dS)N)r:rwrJÚextendrI)r6Útagsrrrr£gs   zTokenizer.untilcCs0t|ƒ}|djƒ}||ks,td||fƒ‚|S)NrzExpected '%s', got '%s')rkrjr)r6rrRrDrrrros zTokenizer.expectcCs2t|ƒ}|djƒ}|j|ƒs.td||fƒ‚|S)NrzExpected '*%s', got '%s')rkrjr—r)r6rrRrDrrrrXus zTokenizer.expectendswithN)r r r r7rMrQrSrUrWrkr˜rirrHr£rrXrrrrrFs    rFcCst|ƒ}t|||d�S)aòConvert a Monotype font layout file to an OpenType layout object A font object must be passed, but this may be a "dummy" font; it is only used for sorting glyph sets when making coverage tables and to hold the OpenType layout table while it is being built. Args: f: A file object. font (TTFont): A font object. tableTag (string): If provided, asserts that the file contains data for the given OpenType table. Returns: An object representing the table. (e.g. ``table_G_S_U_B_``) )r)rFrE)rLrrrrOrrrÚbuild{sr]c Csrddl}ddlm}ddlm}|dkr6|jdd…}|ƒddl}|jdtj d�}|j dd d d d d �|j dddddd �|j dd t ddd�|j |ƒ}|dkr¼|j r¶tj|j ƒ}n|ƒ}x°|jD]¦}tjd|ƒt|ddd��}t|||jd�}WdQRX|j|ƒ} |jƒ} | j| |ƒddlm} |j} | j|jƒ} | j| ƒ| jƒ| j| |ƒ| j | ƒ| jƒqÄWdS)z—Convert a FontDame OTL file to TTX XML. Writes XML output to stdout. Args: args: Command line arguments (``--font``, ``--table``, input files). rN)Ú configLogger)ÚMockFontrezfonttools mtiLib)Ú descriptionz--fontz-fÚFILErrzDInput TTF files (used for glyph classes and sorting coverage tables))ÚmetavarÚdestÚhelpz--tablez-tZTABLErz7Table to fill (sniffed from input file if not provided)Úinputsú+zInput FontDame .txt files)rbr:Únargsrdz Processing %sÚrtzutf-8)Úencoding)r)Ú xmlWriter)!ÚsysÚ fontToolsr^ZfontTools.misc.testToolsr_ÚargvÚargparseÚArgumentParserÚmainÚ__doc__Ú add_argumentÚstrÚ parse_argsrrrrrer8r9Úopenr]rÚcompileÚ __class__Z decompileZfontTools.miscrjZ XMLWriterÚstdoutZbegintagÚnewlineZtoXMLZendtag)Úargsrrrkr^r_rnr&rLr"ZblobZ decompiledrjrDÚwriterrrrrp�sH                rpÚ__main__)N)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)\rlrZfontTools.ttLib.tables._c_m_a_prZfontTools.ttLib.tablesrrFZfontTools.ttLib.tables.otBaserrZfontTools.otlLibrrqÚ contextlibrÚoperatorr ÚloggingÚ Exceptionr rrrÚ getLoggerr8rr"r'r)r3rùr4rXr`rprtrurvrxr€r r¤rÉr¨r¬r°rµr¹rÃÚobjectrÄrÊrËrÌrÍrÎrÏrKr¥rÒrør”rúrár™r‘rürrr r r r r rr'r(r)r*r-r0r2r6rAr8rErFr]rpr rkrªrrrrÚ s”            2       X   5   r   O      44    ! c  =