403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.60
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/fontTools/mtiLib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/fontTools/mtiLib/__pycache__/__init__.cpython-310.pyc
o

��a��@s.ddlmZddlmZddlmZddlmZm	Z	ddl
mZddl
mZddlmZddlZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�Ze�d�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/d<d=�Z0Gd>d?�d?e1�Z2Gd@dA�dAe2�Z3GdBdC�dCe2�Z4GdDdE�dEe2�Z5d�dFdG�Z6d�dHdI�Z7d�dJdK�Z8dLdM�Z9dNdO�Z:GdPdQ�dQe1�Z;d�dRdS�Z<ej=fdTdU�Z>ej?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�ddlZZZeZ�[eX��dSdS)��)�ttLib)�cmap_classes)�otTables)�ValueRecord�valueRecordFormatDict)�builder)�contextmanager)�setitemNc@�eZdZdS)�MtiLibErrorN��__name__�
__module__�__qualname__�rr�;/usr/lib/python3/dist-packages/fontTools/mtiLib/__init__.pyr�rc@r
)�ReferenceNotFoundErrorNrrrrrrrrc@r
)�FeatureNotFoundErrorNrrrrrrrrc@r
)�LookupNotFoundErrorNrrrrrrrrzfontTools.mtiLibcCsx|dd�dvrtj�t|dd�d��S|dd�dkr'dt|dd��S|�d�dks4Jd|��|s:Jd	��|S)
N�)zU zu �z# z	glyph%.5d� rzSpace found in glyph name: %szGlyph name is empty)r�TTFont�_makeGlyphName�int�find)�srrr�	makeGlyphsrcCsdd�|D�S)NcS�g|]}t|��qSr)r)�.0�grrr�
<listcomp>%�zmakeGlyphs.<locals>.<listcomp>r)�lrrr�
makeGlyphs$�r%cCs:|durz||}W|Styt|��wt|�}|S�N)�KeyErrorrr��sym�mapping�idxrrr�	mapLookup's
��r-cCsFzt|�}W|Sty"z||}WY|Sty!t|��wwr')r�
ValueErrorr(rr)rrr�
mapFeature3s
����r/cs�z|||�}Wn1ty8}z%z|dur)|����fdd�||�WWYd}~dSW�ty3Y�wd}~ww���|�dS)Ncs���|�Sr'r)�ref��
collection�key�setterrr�<lambda>ErzsetReference.<locals>.<lambda>)r�addDeferredMapping�AttributeError)�mapperr+r*r4r2r3�mapped�err1r�setReference?s �����r;c@s$eZdZdd�Zdd�Zdd�ZdS)�DeferredMappingcCs
g|_dSr')�_deferredMappings��selfrrr�__init__Ns
zDeferredMapping.__init__cCs*t�d|t|�j�|j�|||f�dS)Nz*Adding deferred mapping for symbol '%s' %s)�log�debug�typer
r=�append)r?r4r*r:rrrr6Qsz"DeferredMapping.addDeferredMappingc	Csd|jD])\}}}t�d|t|�j�z||}Wn	ty!|�w||�t�d|�qg|_dS)Nz,Applying deferred mapping for symbol '%s' %sz	Set to %s)r=rArBrCr
r()r?r4r*r:r9rrr�applyDeferredMappingsUs�
z%DeferredMapping.applyDeferredMappingsN)r
rrr@r6rErrrrr<Lsr<c
s�t��}g}|�d���|D]�}t|�dkr!|�d�t|�dks|\�}}}t�d�|�t��}d|_|rAt	t
||t|d�nd|_t
|�}	dgt|	�|_}
t|	�D]
\}}t	t
||t|
|�qVt|j�|_�fdd	�|D�}
|
r{|
d
j}
nt��}�|_t��|_|�|�|j}
d|
_g|
_d
|
_|dkr�||
_qt��}|ddt|�|_||_|
j�|�t|
j�|
_qWd�n1s�wY|D]}
t|
jjd
d�d�|
j_q�t|dd�d�|_t|j�|_|S)Nzscript table��z#Adding script %s language-system %s�ReqFeatureIndexi���csg|]	}|j�kr|�qSr��	ScriptTag�r r��	scriptTagrrr"wsz#parseScriptList.<locals>.<listcomp>r�defaultrcS�|jSr')�
LangSysTag��recrrrr5��z!parseScriptList.<locals>.<lambda>�r3cSrPr'rJrRrrrr5�rT)�ot�
ScriptList�between�lenrDrArB�LangSys�LookupOrderr;r/�setattrrH�stripSplitComma�FeatureIndex�	enumerater	�FeatureCount�Script�ScriptRecordrK�DefaultLangSys�
LangSysRecord�LangSysCountrQ�sorted�ScriptCount)�lines�
featureMapr?�records�line�
langSysTag�defaultFeature�features�langSys�syms�theList�ir*�script�	scriptRec�
langSysRecrrMr�parseScriptListasX
�

��)rvc
CsBt��}g|_|�d���|D]z}|\}}}|dur+||vs$Jd|��t|j�||<zt|�t|j�ks@Jd|t|j�f��Wn	tyJYnwt��}||_t��|_|j�	|�|j}	d|	_
t|�}
dgt|
�|	_}t
|
�D]
\}}
tt||
t||�qut|	j�|	_qWd�n1s�wYt|j�|_|S)Nz
feature tablezDuplicate feature name: %s�%d %d)rV�FeatureList�
FeatureRecordrXrYrr.�
FeatureTag�FeaturerD�
FeatureParamsr]�LookupListIndexr_r;r-r	�LookupCountr`)rh�	lookupMaprir?rk�name�
featureTag�lookups�
featureRec�featurerprqrrr*rrr�parseFeatureList�s8
,�
��r�cCs�d}d}gd�}|��d��|vrpt|�}ddddd��|d���}|rA|d��dvs4J|d��|d��d	kr@||O}q|d��d
krT|t|d�d>O}q|d��dkrf|dO}t|d�}|��d��|vs||fS)
Nr)�righttoleft�ignorebaseglyphs�ignoreligatures�ignoremarks�markattachmenttype�markfiltertype�rrF�)r�r�r�r�)�yes�nor�r�r�r)�peeks�lower�next�getr)rh�flags�	filterset�allFlagsrk�flagrrr�parseLookupFlags�s2���r�cCsDi}|D]}t|�dksJ|��t|�}|d||d<qt�|�S)Nrr�r)rYr%�otl�buildSingleSubstSubtable�rh�font�
_lookupMapr+rkrrr�parseSingleSubst�s
r�cC�4i}|D]}t|�}|dd�||d<qt�|�S�Nr�r)r%r��buildMultipleSubstSubtabler�rrr�
parseMultiple��

r�cCr�r�)r%r��buildAlternateSubstSubtabler�rrr�parseAlternate�r�r�cCsLi}|D]}t|�dksJ|��t|�}|d|t|dd��<qt�|�S)Nrrr�)rYr%�tupler��buildLigatureSubstSubtabler�rrr�
parseLigature�s
r�cCs�i}|D]F}t|�dksJ|��|d���dd�}|tvs J�t|d�}t|d�}||vr5t�||<t|||�rBJ||f��t||||�qt	�
||���S)NrIrrrGr�r)rY�title�replacerrrr�hasattrr\r��buildSinglePosSubtable�getReverseGlyphMap)rhr�r��valuesrk�wr!�vrrr�parseSinglePos�s
r�cCs�t��}d|_|_|��d��d��}|dv�rd|_i}|D]�}t|�dks.J|��|d��d��}|dvs@J|��|dt|�d��	��
dd�}t|d}	t|dd��\}
}t
|d�}|
|vrni||
<|||
vr~t�t�f||
|<||
|}
|dkr�|j|	O_|
d}n|j|	O_|
d}t||�r�J||f��t|||�q"tt|���|�|_g|_|jjD]F}
||
}t��}g}|_t|��|jd	�D]!}||}t��}||_|d|_|jr�|dnd|_|�|�q�t|j�|_|j�|�q�t|j�|_|S|� d
��rMd|_ddg}|��d� d��rb|�!�ddtd����}dtj"fdtj#fd
�|\}}||du�sOJ�t$|||d�||<|��d� d��s(|\|_"|_#dd�|D�\|_%|_&dd�t'|j%�D�|_(|j(D]}dd�t'|j&�D�|_)|j)D]}
t�|
_t�|
_�q��q�|D]y}t|�dk�s�J|��|d��d��}|dv�s�J|��|dt|�d��	��
dd�}t|d}	dd�|dd�D�\}}}|j(|j)|}
|dk�r�|j|	O_|
j}n
|j|	O_|
j}t||��rJ||f��t|||��q�|j(D] }|j)D]}
t|j|
j�|
_|j�r8t|j|
j�nd|
_�q#�qtt|j"j*���|�|_|SJ|��)Nr��left�rightr�rFrrGrIr�rU�classr�class definition begin)�first�second��klasscss"�|]}dt|j���VqdS�r�N)�max�	classDefsr�)r �crrr�	<genexpr>2�� zparsePair.<locals>.<genexpr>cS�g|]}t���qSr)rV�Class1Record�r rrrrrr"3r#zparsePair.<locals>.<listcomp>cSr�r)rV�Class2Record)r �jrrrr"5r#cs��|]}t|�VqdSr'�r�r �xrrrr�?��)+rV�PairPos�ValueFormat1�ValueFormat2r��splitr��FormatrYr�r�rr%rrr�r\�makeCoverage�set�keys�Coverage�PairSet�glyphs�PairValueRecordrf�
getGlyphID�SecondGlyph�Value1�Value2rD�PairValueCount�PairSetCount�endswith�peek�	ClassDef1�	ClassDef2�
parseClassDef�Class1Count�Class2Count�ranger�r�r�)rhr�r�r?�typr�rk�side�what�mask�glyph1�glyph2�value�rec2�vr�values1�pairsetrj�values2�pairr�r,r��rec1�class1�class2rrr�	parsePair�s�
  


-����

� 


����r�cCs^|��d��d��}|dvr*|�d��
t||�Wd�S1s%wYt||�S)Nrr�)zfirstclass definition beginzsecondclass definition begin)r�r�r��untilr�)rhr�r�r�rrr�parseKernsetTs �
r�cCs`t|�dksJ�|�}d|_t|d�\|_|_t|�dkr.|ddkr.d|_t|d�|_|S)Nrr�rrG)rYr��
intSplitComma�XCoordinate�YCoordinater�AnchorPoint)�datar��anchorrrr�
makeAnchor[sr�cCs�i}|D]H}t|�dvsJ|��dtjfdtjfd�|d\}}t|d�}||vr1ddg||<|||dus?J||f��t|dd�|�|||<qt�||���S)N)rIrFrr�)�entry�exitr)	rYrV�EntryAnchor�
ExitAnchorrr�r��buildCursivePosSubtabler�)rhr�r�rjrkr,r��glyphrrr�parseCursivees��rcCsFg}|jD]}||\}}|��}||_t||j|�|�|�q|Sr')r��MarkRecordClass�Classr\�
MarkAnchorrD)r��coverager�rjrr�r��recordrrr�makeMarkRecordsts
rcCs�g}i}|jD]}t|�||<|��}dg|}t||j|�|�|�q|��D]"\\}}	}
|||}t||j�}||	dusGJ||	f��|
||	<q)|Sr')r�rY�BaseRecordClassr\�
BaseAnchorrD�items�getattr)r�r	r��
classCountrjr,rr
�anchorsr�r�rrr�makeBaseRecords~s


rcCs�dgt|j�}dd�t|j�D�}|��D][\\}}}}	}
|||}|durKt��}|||<|	|_dd�t|	�D�|_|jD]}dg||_	qB|j|	ksXJ||j|	f��|j|dj	}
|
|dusmJ|||f��|
|
|<q|S)NcSsi|]\}}||�qSrr)r rrr!rrr�
<dictcomp>�sz'makeLigatureRecords.<locals>.<dictcomp>cSr�r)rV�ComponentRecordr�rrrr"�r#z'makeLigatureRecords.<locals>.<listcomp>r�)
rYr�r_rrV�LigatureAttach�ComponentCountr�r�LigatureAnchor)r�r	r�rrjr,rr��compIdx�	compCountr�r
�compRecrrrr�makeLigatureRecords�s

rcCs6|��}d|_i}i}||jf||jf||jfd�}d}|D]h}|d}	|	dvs*J�t|d�}
||	\}}|	dkr<dnd}
tdd�|dd|
�D��}t|d|
�}t|d|
d�|�}|	d	krl|
||f}}n	|
|f||}}||vs}J|��|||<t||�}qt	t
|���||j�}|�
�}t|||�}t||j|�t||jt|��t||j|�t||j|�|d|_|s�dndtd
d�|��D��|_t	t
dd�|��D��||j�}|��}|jd
kr�t||||j�}nt||||j�}t||j|�t||jt|��t||j|�t||j |�|S)Nr�)�mark�base�ligaturerrrcsr�r'r�r�rrrr��r�z'parseMarkToSomething.<locals>.<genexpr>rIrcss�|]	\}}|dVqdSr�r)r �kr�rrrr����cSsg|]}|d�qS)rr�r rrrrr"�r#z(parseMarkToSomething.<locals>.<listcomp>�Ligature)!�Typer��MarkAnchorClass�BaseAnchorClassrr�rr�r�r�r�r��MarkCoverageClass�MarkArrayClassrr\�
MarkRecord�	MarkCountrY�MarkCoverage�	MarkArray�
ClassCountrr�BaseCoverageClass�BaseArrayClass�Baserr�
BaseRecord�	BaseCount�BaseCoverage�	BaseArray)rhr�r�r?�markData�baseData�Data�maxKlassrkr�rr��anchorClass�
extraItems�extrasr�r�r3r��markCoverage�	markArray�markRecords�baseCoverage�	baseArray�baseRecordsrrr�parseMarkToSomething�sV�
$ 
rAc@�eZdZdd�ZdS)�
MarkHelpercCs~dD]:}dD]5}||}|dkr|dvr|}nt||�|}|dkr$d}t|||�|dkr;tt|�}t||d|�qqdS)	N)�Markr/)r��Array�Count�Record�AnchorrD)rFrGrH�LigatureRecordrrFr)rr\rV)r?�Which�Whatr3r�r�rrrr@�s
���zMarkHelper.__init__N�r
rrr@rrrrrC��rCc@�eZdZdZdZejZdS)�MarkToBaseHelperrDr/N)r
rrrDr/rV�MarkBasePosr#rrrrrO��
rOc@rN)�MarkToMarkHelper�Mark1�Mark2N)r
rrrDr/rV�MarkMarkPosr#rrrrrR�rQrRc@rN)�MarkToLigatureHelperrDr"N)r
rrrDr/rV�
MarkLigPosr#rrrrrV�rQrVcC�t||t��Sr')rArO�rhr�r�rrr�parseMarkToBase�r&rZcCrXr')rArRrYrrr�parseMarkToMark�r&r[cCrXr')rArVrYrrr�parseMarkToLigature�r&r\cC�|rdd�|�d�D�SgS)NcS�g|]}|���qSr��striprLrrrr"�r#z#stripSplitComma.<locals>.<listcomp>�,�r��rkrrrr]��r]cCr])NcSrrr�r�rrrr"�r#z!intSplitComma.<locals>.<listcomp>rarbrcrrrr��rdr�c@rB)�
ContextHelpercCsl|�d�r
d}d}nd}d}|�d�rd}d}d}nd}d}d}||}||_||_||_||_||_||_|d	|_|dkrdd
d�}	dd�}
d
d�}dd�}d}
d}dd�}dd�}dd�}dd�}nX|dkr�dd�}	dd�}
dd�}dd�}dd�}
dd�}dd�}dd�}d d�}d!d�}n+|dkr�d"d�}	d#d�}
d}d}d}
d}d$d�}d%d�}d&d�}d'd�}nJd(|��|r�|
|_	||_
||_||_||_
n|	|_	||_
|
|_||_||_
|dkr�|d)|_|d*|_|d+|_|d,|_d-d�|_dS|dk�r4|d.|_|d/|_|d0|_|d1|_d2d�|_|�rd3nd4|_|�r'dnd|_|�r/d5nd6|_dSdS)7N�Subst�Sub�Pos�Chainr�rIrGr�LookupRecordcSrPr'�r���rrrrr5rTz(ContextHelper.__init__.<locals>.<lambda>cSrPr'rkrlrrrr5rTcS�dS)Nr'rrlrrrr5�cSrn)N)NNNrrlrrrr5 rocS�|jfSr')�Inputrlrrrr5#�cS�|j|j|jfSr'��	Backtrackrq�	LookAheadrlrrrr5$�cS�|\|_dd�|D�\|_dS)Ncs��|]	}t|�dVqdSr��rYr�rrrr�'r �>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>)rq�
GlyphCount�rm�drrr�SetRuleData%�z+ContextHelper.__init__.<locals>.SetRuleDatacS�F|\|_|_|_t|d�t|d�dt|d�|_|_|_dS�Nrr�r�rurqrvrY�BacktrackGlyphCount�InputGlyphCount�LookAheadGlyphCountr}rrr�ChainSetRuleData(�6z0ContextHelper.__init__.<locals>.ChainSetRuleDatarcSrPr'rkrlrrrr5,rTcSrPr'rkrlrrrr5-rTcSrpr'��ClassDefrlrrrr5.rrcSrsr'��BacktrackClassDef�
InputClassDef�LookAheadClassDefrlrrrr5/s�cSs|\|_dSr'r�r}rrr�SetContextData2�z.ContextHelper.__init__.<locals>.SetContextDatacSs|\|_|_|_dSr'r�r}rrr�SetChainContextData4s�z3ContextHelper.__init__.<locals>.SetChainContextDatacSrpr')rrlrrrr58rrcSrsr'rtrlrrrr59rwcSrx)Ncsryr�rzr�rrrr�<r r{)rr|r}rrrr:r�cSr�r�r�r}rrrr�=r�cS�
|jdS�Nrrkrlrrrr5A�
cSr�r�)�
InputCoveragerlrrrr5Br�cSrPr'rkrlrrrr5GrTcSs|j|j|jSr')�BacktrackCoverager��LookAheadCoveragerlrrrr5Hs
��cSrx)Ncsr�r'rzr�rrrr�Mr�r{)r�r|r}rrrrKr�cSs.|\|_|_|_dd�|D�\|_|_|_dS)Ncsr�r'rzr�rrrr�Pr�zCContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>)r�r�r�r�r�r�r}rrrr�Nszunknown format: %s�Rule�	RuleCount�RuleSet�RuleSetCountcSs||vr|gSgSr'r�r�r�rmrrrr5fs�	ClassRule�ClassRuleCount�ClassSet�
ClassSetCountcSs&|r|�||�S|dkrt|�St�Sr�)�intersect_classr�r�rrrr5lsr�r�rqr)r��
startswith�Typr#ri�ChainTyp�InputIdx�DataLenrjr��ContextDatar��RuleDatarr�r�r�r��	Intersectr��
ClassDefIndexrq)r?�	klassNamer�r�r#rir�r�r�r��
ChainCoverager��ChainContextDatar�r�r��
ChainRuleDatarr�rrrr@s�















�zContextHelper.__init__NrLrrrrrerMrecCs�tt|�}g}|D]6}|�}t|�}t|�dksJ|��t|d�}|dks*J|��|d|_tt||dt|d�|�	|�q	|S)Nrrr�r})
rrVr]rYr�
SequenceIndexr;r-r\rD)rr�rr��lst�itemrSr,rrr�parseLookupRecordsss

r�cCs|sdS|�}t|�|_|Sr')�dictr�)r�r�r�r?rrr�makeClassDef�s
r�cCspi}|�d��#|D]}t|d�}||vsJ|��t|d�||<q
Wd�n1s-wYt|||�S)Nzclass definitionrr�)rXrrr�)rhr�r�r�rkrrrrr��s��r�cCs8|sdSt|t�r
t|�}|�}tt|�|jd�|_|S)NrU)�
isinstancer�rfr�r�)r�r�r�r	rrrr��s
r�cCsVg}|�d��|D]}|�t|d��q
Wd�n1s wYt|||�S)Nzcoverage definitionr)rXrDrr�)rhr�r�r�rkrrr�
parseCoverage�s��r�cs$i}|D]\}}|�|�jdg��t�fdd�t|�D��|f�qg}|D]W}||vr4|�d�q(g}	||D](\}}tt�j��}
��|
|�t	|
�j
dt|��t	|
�j|�|	�|
�q:tt�j
��}t	|�j|	�t	|�jt|	��|�|�q(t	|�j
|�t	|�jt|��dS)Nrc3s.�|]\}}||�jkrdndd�VqdS)r�rN�r�)r rrr�r�rrr��s�,z!bucketizeRules.<locals>.<genexpr>rF)�
setdefaultr�rDr�r_rrVr�rr\r#rYrjr�r�r�)r?r��rules�
bucketKeys�buckets�seq�recs�rulesets�
firstGlyph�	thisRules�rule�rulesetrr�r�bucketizeRules�s*8
r�cs�tt|��}|��d��d��}|dkr�d|_t�d||j�t||j��g}|D]L}|d��dks;J|d��t	|�d�j
krR|�d�t	|�d�j
ksDtdd�|dd�j
�D��}t
|d�j
d��j|�}	|�||	f�q+t�fdd�|D��}
t|
|�|_t|�||jj�|S|�d	��r�d
|_t�d||j�t||j��dg�j
}|��d�d��r|��ddt	d����}ddtjfidtjfdtjfd
tjfd�d
��j
|\}}
||dus�J|��t|||
d�||<|��d�d�s���||�g}|D]Q}|d���d	��s J|d��t	|�d�j
k�r9|�d�t	|�d�j
k�s*tdd�|dd�j
�D��}t
|d�j
d��j|�}	|�||	f��qt�fdd�|D���t�fdd�|�jj��D��}
t|
|�|_t|�|t t!��d��|S|�d��rFd|_t�d||j�t||j��tdd�t �j
�D��}|��d�d��r|��ddt	d����}ddtjfidtj"fdtj#fd
tj$fd�d
��j
|\}}
||�t%|||
d��|��d�d��s���&||�t'|�}t	|�dk�sJ�|d}|d��dk�s'J|d��t
|dd��j|�}	t(|�j)dt	|	��t(|�j|	�|SJ|��)Nrrr�zParsing %s format %srGcss�|]	}tt|��VqdSr')r%r]r�rrrr��r zparseContext.<locals>.<genexpr>c3�"�|]\}}|�jdVqdS�rNr��r r�r�r�rrr��r�r�rr�)�	backtrackrG�	lookahead)r�rIr�csr�r')r�r�rrrr��r�c3r�r�r�r�r�rrr��r�c3s �|]\}}|�vr|VqdSr'r)r r!r�)�firstClassesrrr��s�r	rIcss�|]}gVqdSr'rr�rrrr��s��coverage definition begin)r��inputr�rF)*rrVr�r�r�r�rArBrerYr�rDr�r�rjr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�listr\r#)rhr�r#rr?r�r�rkr�r��firstGlyphsr�r,r��	coveragesr)r�r�r�parseContext�s�. <�
���	�	�
� 2 "�
���	�	�
�
�r�cC�t||d|d�S)N�ContextSubst�r�r��rhr�rrrr�parseContextSubst�r�cCr�)N�
ContextPosr�r�r�rrr�parseContextPos
r�r�cCr�)N�ChainContextSubstr�r�r�rrr�parseChainedSubstr�r�cCr�)N�ChainContextPosr�r�r�rrr�parseChainedPosr�r�c	s0t��}d|_ggf}|��d�d�rG|��ddtd����}dtjfdtj	fd�|\}}||�
t|||d��|��d�d�s|d|_t|j�|_|d|_	t|j	�|_
i�|D]}t|�dksmJ|��t|�}|d�|d<qatt����|�|_�fdd�|jjD�|_t|j�|_|S)	Nr�rr�)r�r�r�rcsg|]}�|�qSrrr!�r+rrr"&r#z,parseReverseChainedSubst.<locals>.<listcomp>)rV�ReverseChainSingleSubstr�r�r�r�rYr�r�r�rDr�r�r�r%r�r�r�r�r��
Substituter|)	rhr�r�r?r�r�r,r�rkrr�r�parseReverseChainedSubsts2���

r�c
Cs�|�d�}|\}}}t�d||�t��}t|�\|_}	|	dur#|	|_dtfdt	fdt
fdtfdtfdt
fd	tfd
�dtfdtfdtfdtfdtfdtfdtfdtfd	tfd�	d
�||\|_}
|�d��Ng}|��r�|�d��#|��r�|
|||�}|j|jks�J�|�|�|��swWd�n1s�wY|��ddvr�t|�|��smWd�n1s�wY|�d�||_t|j�|_ |j dkr�dS|S)N�lookupzParsing lookup type %s %sr�rrIrF��r�)�single�multiple�	alternater�context�chained�reversechained�)	r�r��kernset�cursivezmark to basezmark to ligaturezmark to markr�r���GSUB�GPOSz
lookup end)�
% subtablezsubtable endr)!�expectrArBrV�Lookupr��
LookupFlag�MarkFilteringSetr�r�r�r�r�r�r�r�r�r�rrZr\r[r�r��
LookupTyper�r�rDr�r��SubTablerY�
SubTableCount)
rh�tableTagr�rrk�_r�r�r�r��parseLookupSubTable�	subtables�subtablerrr�parseLookup*sh

�
���
�
������

r�cs�t�|��}t��t��|dvsJ�t�d|�tt|��}d|_d�fdd�fd��fdd�fd	d
�}|��D]
\}}t	||d�q8|�
�dur�|�
�d��}||vrbt�d|�
��t|�qC||\}}|d
kr�|j
durzt�
�|_
g|j
_|�
�\}	}
}	t|||��}�dur�|
�vs�Jd|
��t|j
j��|
<nt|
�t|j
j�ks�Jd|
t|j�f��|j
j�|�nt||�dus�J|��t	||||��|�
�dusI|j
r�t|j
j�|j
_�dur����dur���||_|S)Nr�z
Parsing %s�rWcs
t|��Sr')rv�rh)rirrr5ir�zparseGSUBGPOS.<locals>.<lambda>rxcst|���Sr')r�r�rirrrr5lr)�
LookupListN)zscript table beginzfeature table beginr�r�Skipping %sr�zDuplicate lookup name: %srw)r�
getTableClassr<rArBrrV�Versionr�r\r�r�r�rr�r�rYrrDr~rE�table)rhr�r��	containerr?�fields�attr�parserr�r�r�r�rrr�
parseGSUBGPOS^s\
���

*�rcC�t||d�S)Nr��r�rhr�rrr�	parseGSUB�r�rcCr)Nr�r
rrrr�	parseGPOS�r�rcCs~i}|�d��(|D]}t|d�}||vsJ|��dd�|dd�D�||<q
Wd�n1s2wYt�||���S)Nzattachment listrcSrrr�r�rrrr"�r#z#parseAttachList.<locals>.<listcomp>r�)rXrr��buildAttachListr�)rhr��pointsrkrrrr�parseAttachList�s��rcCs�i}|�d��:|D]/}t|d�}||vsJ|��t|d�}dd�|dd�D�}|t|�ks5J|��|||<q
Wd�n1sDwYt�|i|���S)N�caretsrr�cSrrr�r�rrrr"�r#z"parseCaretList.<locals>.<listcomp>r)rXrrrYr��buildLigCaretListr�)rhr�rrkr�num�
thisCaretsrrr�parseCaretList�s
��rcCs\t��}d|_dt|���|_dg|j|_t|���D]\}}t	t
|�|�|j|<q|S)Nr�)rV�MarkGlyphSetsDef�MarkSetTableFormatr�r��MarkSetCountr�rfrr�r�)�setsr�r?rr�rrr�makeMarkFilteringSets�srcCs�i}|�d��2|D]'}t|�dksJ|��t|d�}t|d�}||vr*g||<||�|�q
Wd�n1s<wYt||�S)Nzset definitionrrr�)rXrYrrrDr)rhr�rrkr�strrr�parseMarkFilteringSets�s��
	rcCst�d��}t�d�t��}ddd�fdtfdtfdd	d�fd
tfd�}|�	�D]
\}}t
||d�q)|��durq|��d��}||vrQt�d
|�t
|�q4||\}}t||�dusbJ|��t
|||||��|��dus:|jdurxdnd|_||_|S)N�GDEFzParsing GDEF�
GlyphClassDefcS�t||tjd�S�Nr�)r�rVr!rrrrr5�rwzparseGDEF.<locals>.<lambda>�
AttachList�LigCaretList�MarkAttachClassDefcSr"r#)r�rVr&rrrrr5�rwr)r�zattachment list beginzcarets beginz&mark attachment class definition beginzmarkfilter set definition beginrrr�i)rrrArBrVr rrrr�r\r�r�r�rrrr)rhr�rr?rr	r
r�rrr�	parseGDEF�s8
����	r'c
s�t�d��}t�d�g}���durf��dt|���fdd�dD�\}}}}t||�}||_||_	||_
i|_t��}	|	ddkr[|	d	|jt
|	dd
�<t��}	|	ddksE|�|����dusd|_||_|S)N�cmapzParsing cmapzcmap subtable %dcsg|]}t�|��qSr)�parseCmapId)r �fieldrrrr"�s��zparseCmap.<locals>.<listcomp>)�
platformID�
encodingID�format�languagerzend subtabler�r)rrrArBr�r�rYrr+�	platEncIDr.r(r�rrD�tableVersion�tables)
rhr�rr1�platId�encId�fmt�langrrkrrr�	parseCmap�s.

��
�r6cCs$t|�}||dksJ�t|d�S)Nrr�)r�r)rhr*rkrrrr)�sr)cCs�t�d�|��}d}|d��ddkr|d��d}nd�|d��dd��dkr5|d��d}|durSt|�|�d�}|durI|}n
||ksSJ||f��|dus[Jd	��ttt	t
d
�|||�S)Nz
Parsing tabler�FontDamer�rrIzFont Chef TablerFz7Don't know what table to parse and data doesn't specify)r�r�r r()rArBr�r��joinr��ljustrrr'r6)rhr�r�rk�tagrrr�
parseTable�s.

���r;c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zedd��Z
edd��Zdd�Zdd�ZdS)�	TokenizercCsJt|�}z|j|_Wnd|_Yt|�|_d|_d|_g|_d|_dS)NrGr)�iterr��filenamerhrk�lineno�stoppers�buffer)r?�frhrrrr@s

zTokenizer.__init__cCs|Sr'rr>rrr�__iter__'szTokenizer.__iter__cCs�|jd7_t|j�}|_dd�|�d�D�}t|�dkr&|ds&|d=|rF|dsFt�d|j|jf�|rF|dsF|d=|rF|dr=|S)Nr�cSr^rr_rLrrrr"-r#z(Tokenizer._next_line.<locals>.<listcomp>�	r���z!trailing tab found on line %d: %s)r?r�rhrkr�rYrA�warning�r?rkrrr�
_next_line*s�zTokenizer._next_linecCs8	|��}|r|dr|dddks|ddkr|Sq)NTr�%r�)rHrGrrr�_next_nonempty6s
(�zTokenizer._next_nonemptycCs|jr|j}d|_|S|��Sr')rArJ�r?�retrrr�_next_buffered=s
zTokenizer._next_bufferedcCs(|��}|d��|jvr||_t�|Sr�)rMr�r@rA�
StopIterationrGrrr�__next__Es
zTokenizer.__next__cCs|��Sr')rOr>rrrr�LszTokenizer.nextcCsH|jsz|��|_Wn
tyYdSw|jd��|jvr!dS|jSr�)rArJrNr�r@r>rrrr�Os�zTokenizer.peekcCs|��}|dur
|SdS)N)rG)r�rKrrrr�YszTokenizer.peeksccsH�|d}|d}|�|�|j�|�dV|jd=|�|d�dS)Nz beginz endrE)�expectendswithr@rDr�)r?r:�start�endrrrrX]s�
zTokenizer.betweenccs<�t|�tur
|f}|j�|�dV|jt|�d�=dSr')rCr�r@�extendrY)r?�tagsrrrr�gs�zTokenizer.untilcCs0t|�}|d��}||ksJd||f��|S)NrzExpected '%s', got '%s')r�r��r?rrkr:rrrr�oszTokenizer.expectcCs2t|�}|d��}|�|�sJd||f��|S)NrzExpected '*%s', got '%s')r�r�r�rUrrrrPuszTokenizer.expectendswithN)r
rrr@rCrHrJrMrOr�r�r�rrXr�r�rPrrrrr<s 


	
r<cCst|�}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�)r<r;)rBr�r�rhrrr�build{srWc	Cs�ddl}ddlm}ddlm}|dur|jdd�}|�ddl}|jdtj	d�}|j
dd	d
ddd
�|j
dddddd
�|j
dd
tddd�|�|�}|dur^|j
r[t�|j
�}n|�}|jD]]}t�d|�t|ddd��}t|||jd�}Wd�n1s�wY|�|�}	|��}
|
�|	|�ddlm}|j}|�|j�}
|
�|�|
��|
�|
|�|
� |�|
��qadS)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)�MockFontr�zfonttools mtiLib)�descriptionz--fontz-f�FILEr�zDInput TTF files (used for glyph classes and sorting coverage tables))�metavar�dest�helpz--tablez-t�TABLEr�z7Table to fill (sniffed from input file if not provided)�inputs�+zInput FontDame .txt files)r\rC�nargsr^z
Processing %s�rtzutf-8)�encodingrV)�	xmlWriter)!�sys�	fontToolsrX�fontTools.misc.testToolsrY�argv�argparse�ArgumentParser�main�__doc__�add_argument�str�
parse_argsr�rrr`rArB�openrWr��compile�	__class__�	decompile�fontTools.miscre�	XMLWriter�stdout�begintag�newline�toXML�endtag)�argsr�rfrXrYrjr
rBr�blob�
decompiledrer:�writerrrrrl�sT����

�



�rl�__main__r')NN)\rgr�fontTools.ttLib.tables._c_m_a_pr�fontTools.ttLib.tablesrrV�fontTools.ttLib.tables.otBaserr�fontTools.otlLibrr��
contextlibr�operatorr	�logging�	Exceptionrrrr�	getLoggerrArr%r-r/r;r�r<rvr�r�r�r�r�r�r�r�r�rHr�rrrrrA�objectrCrOrRrVrZr[r\r]r�rer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr'r6r)r;r<rWrlr
rfrrrrr�<module>s�
	

2
 





X


5



r	

O




44		
!

c

=�

Youez - 2016 - github.com/yon3zu
LinuXploit