HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/fontTools/__pycache__/tfmLib.cpython-310.pyc
o

 we�7�@s�dZddlmZddlmZmZmZdZee�ZdZ	de	�d�Z
de
�d	�Zde�d
�Zde�d�Z
ee
�Zee�Zee�Zee
�ZdZgd
�Zgd�Zgd�ZdZdZdZdZdZdZdZdZdZdZdZ dZ!Gdd�de"�Z#Gdd�d�Z$e%dkr�ddl&Z&e$e&j'd�Z(e)d�*dd�de(j+��de(j,��de(j-��de(j.��d e(j/��d!e(j0��d"e(j1��d#e(j2��d$e(j3��d%e(j4��d&e(j5��d'e(j6��d(e(j7��d)e(j8��fD���e)e(�dSdS)*u1Module for reading TFM (TeX Font Metrics) files.

The TFM format is described in the TFtoPL WEB source code, whose typeset form
can be found on `CTAN <http://mirrors.ctan.org/info/knuth-pdf/texware/tftopl.pdf>`_.

	>>> from fontTools.tfmLib import TFM
	>>> tfm = TFM("Tests/tfmLib/data/cmr10.tfm")
	>>>
	>>> # Accessing an attribute gets you metadata.
	>>> tfm.checksum
	1274110073
	>>> tfm.designsize
	10.0
	>>> tfm.codingscheme
	'TeX text'
	>>> tfm.family
	'CMR'
	>>> tfm.seven_bit_safe_flag
	False
	>>> tfm.face
	234
	>>> tfm.extraheader
	{}
	>>> tfm.fontdimens
	{'SLANT': 0.0, 'SPACE': 0.33333396911621094, 'STRETCH': 0.16666698455810547, 'SHRINK': 0.11111164093017578, 'XHEIGHT': 0.4305553436279297, 'QUAD': 1.0000028610229492, 'EXTRASPACE': 0.11111164093017578}
	>>> # Accessing a character gets you its metrics.
	>>> # “width” is always available, other metrics are available only when
	>>> # applicable. All values are relative to “designsize”.
	>>> tfm.chars[ord("g")]
	{'width': 0.5000019073486328, 'height': 0.4305553436279297, 'depth': 0.1944446563720703, 'italic': 0.013888359069824219}
	>>> # Kerning and ligature can be accessed as well.
	>>> tfm.kerning[ord("c")]
	{104: -0.02777862548828125, 107: -0.02777862548828125}
	>>> tfm.ligatures[ord("f")]
	{105: ('LIG', 12), 102: ('LIG', 11), 108: ('LIG', 13)}
�)�SimpleNamespace)�calcsize�unpack�unpack2a�
    >
    lf: h    # length of the entire file, in words
    lh: h    # length of the header data, in words
    bc: h    # smallest character code in the font
    ec: h    # largest character code in the font
    nw: h    # number of words in the width table
    nh: h    # number of words in the height table
    nd: h    # number of words in the depth table
    ni: h    # number of words in the italic correction table
    nl: h    # number of words in the ligature/kern table
    nk: h    # number of words in the kern table
    ne: h    # number of words in the extensible character table
    np: h    # number of font parameter words
z12.20Fz;
    >
    checksum:            L
    designsize:          �
z
    z
    codingscheme:        40p
z
    family:              20p
zm
    seven_bit_safe_flag: ?
    ignored:             x
    ignored:             x
    face:                B
zI
    >
    skip_byte: B
    next_char: B
    op_byte: B
    remainder: B
)�SLANT�SPACE�STRETCH�SHRINK�XHEIGHT�QUAD�
EXTRASPACE)�NUM1�NUM2�NUM3�DENOM1�DENOM2�SUP1�SUP2�SUP3�SUB1�SUB2�SUPDROP�SUBDROP�DELIM1�DELIM2�
AXISHEIGHT)�DEFAULTRULETHICKNESS�
BIGOPSPACING1�
BIGOPSPACING2�
BIGOPSPACING3�
BIGOPSPACING4�
BIGOPSPACING5����cseZdZ�fdd�Z�ZS)�TFMExceptioncst��|�dS�N)�super�__init__)�self�message��	__class__��I/home/arjun/projects/env/lib/python3.10/site-packages/fontTools/tfmLib.pyr*��zTFMException.__init__)�__name__�
__module__�__qualname__r*�
__classcell__r/r/r-r0r'�sr'c@s$eZdZdd�Zdd�Zdd�ZdS)�TFMcCs|�|�dSr()�_read)r+�filer/r/r0r*�szTFM.__init__cCs d|j�d|j�d|jd�d�S)Nz	<TFM for z in z at �gzpt>)�family�codingscheme�
designsize)r+r/r/r0�__repr__�s����zTFM.__repr__cslt|d�r
|���nt|d��}|���Wd�n1swY�|_t��tkr0td��t��tt	����j
dkrBtd��t���j
dkrOtd��t����D]\}}|dkratd��qU�j
d	krptd
�j
�d����j�jdks}�jd
kr�td�j�d�j�d����jdks��jdks��jdks��jdkr�td���jdkr�tdt�d����j
d�j
�j�jd�j�j�j�j�j�j�j�jkr�td��d�j
�j���jd���j���j���j���j���j�
�
�j���j��fdd����fdd����fdd�}��fdd����fdd ����fd!d"��	��fd#d$�}��fd%d&���
��fd'd(�}���
fd)d*�}���
fd+d,�}	��	�
fd-d.�}
��fd/d0�}�fd1d2�}�fd3d4�}
�
�
fd5d6�}�fd7d8�}dX�fd9d:�	�
ttdgt|�d;}�j
d}i|_|tk�r�tt�|d�|�d}|jd<k�r�|jd	}|jd	}d=|d>d?|d@|d>|_t�j
td�D]}tdA|d<�dB�||j�d}�q�n/|tk�r�tt�|d�|�n|t k�r
tt!�|d�|�n|t"k�rtt#�|d�|�t$|_%|j&�'�}|�(dC��r.t)|_%n	|�(dD��r7t*|_%i|_+t�j�D]@}dE|d��}|dk�rRt,|}n#|j%t)k�rd|dFk�rdt-|dG}n|j%t*k�ru|dHk�rut.|dG}�
||�||j+��q?i}d|_/d|_0�jdk�r�|
|d��}|j1d
k�r�|j2|_/|
|�jd��}|j1d
k�r�d|_0d|j3|j4}|||j0<i|_5t�j�jd�D]�}�|�dk�rxi|j5|<}||�|dI<�|�dk�r�||�|dJ<�|�dk�r�|	|�|dK<�	|�dk�r|
|�|dL<||�}|t6k�r�q�|t7k�r�|�||<�q�|t8k�r+�|�|dM<�q�|t9k�rxi|dN<}td�D]=}�||�|}|d>k�sN|dk�rvdO}|dk�rXdP}n|dk�r`dQ}n|d	k�rgdR}||��rr|||<�q:|||<�q:�q�i|_:i|_;t<|���D]�\}}|
||��}|j1t=k�r�d|j3|j4}|�jk�r2|
||��}|j1t=k�r�nm|j3t>k�r�d|j3t>|j4}||�|j;�?|i�|j2<nP|j3}|dk�s�|dGk�r�|dSk�r�|}n.dT}|ddk�r�|dU7}|dV7}|d	dk�r�|dU7}|d>k�r|dW7}|d8}|d>k�s||j4f|j:�?|i�|j2<|j1t=k�r%n
||j1d7}|�jk�s��q�dS)YN�read�rbzToo short input filerz0The file claims to have negative or zero length!�z(The file has fewer bytes than it claims!z'The subfile size: '{name}' is negative!r$zThe header length is only �!r#�zThe character code range z..z is illegal!z-Incomplete subfiles for character dimensions!�z
There are z extensible recipes!�u0Subfile sizes don’t add up to the stated totalc�d�|S�Nr@r/��c)�	char_baser/r0�	char_info��zTFM._read.<locals>.char_infocs��|�Sr(r/rG�rJ�datar/r0�width_index�rKzTFM._read.<locals>.width_indexcs |�jkp|�jkp�|�dkS)Nr)�bc�ecrG)�sizesrNr/r0�noneexistent�s zTFM._read.<locals>.noneexistentc���|�ddS�Nr#�r/rGrLr/r0�height_index��zTFM._read.<locals>.height_indexc���|�ddSrTr/rGrLr/r0�depth_indexrWzTFM._read.<locals>.depth_indexcrS�Nr$r@r/rGrLr/r0�italic_indexrWzTFM._read.<locals>.italic_indexcrXrZr/rGrLr/r0�tagrWzTFM._read.<locals>.tagcs��|�dS)Nr%r/rGrLr/r0�	remainder	r1zTFM._read.<locals>.remaindercsd��|�}�|d�dS�Nr@�vr/�rH�r)�
read_fixed�
width_baserNr/r0�width�zTFM._read.<locals>.widthc�d��|�}�|d�dSr^r/r`)�height_baserVrbr/r0�heightrezTFM._read.<locals>.heightcrfr^r/r`)�
depth_baserYrbr/r0�depthrezTFM._read.<locals>.depthcrfr^r/r`)�italic_baser[rbr/r0�italicrezTFM._read.<locals>.italiccsd��|�SrFr/rG)�
exten_baser]r/r0�extenr1zTFM._read.<locals>.extencrErFr/��i)�
lig_kern_baser/r0�lig_steprKzTFM._read.<locals>.lig_stepcst�}tt�|d�|�|Sr()rr�LIG_KERN_COMMAND)rp�command�rMr/r0�lig_kern_command"sz#TFM._read.<locals>.lig_kern_commandcsd�|}�|d�dSr^r/)rpra)�	kern_baserbr/r0�kern'szTFM._read.<locals>.kerncrErFr/ro)�
param_baser/r0�param+rKzTFM._read.<locals>.paramcs(td|�dt���|d�|�}|dS)Nz>;�:r)r�FIXED_FORMAT)�index�key�obj�retrur/r0rb.s zTFM._read.<locals>.read_fixed���MBLr%�RI�RCEz>;HEADERz:lzTEX MATH SYzTEX MATH EX�	PARAMETER���rdrhrjrl�
nextlarger�varchar�rep�top�mid�bot���/�LIG�>r()@�hasattrr>�open�_data�len�
SIZES_SIZEr'rr�SIZES_FORMAT�lf�vars�items�lhrOrP�nw�nh�nd�ni�ne�nl�nk�npr�HEADER_FORMAT4�HEADER_SIZE4�extraheader�face�range�HEADER_SIZE3�HEADER_FORMAT3�HEADER_SIZE2�HEADER_FORMAT2�HEADER_SIZE1�HEADER_FORMAT1�VANILLA�fonttyper;�upper�
startswith�MATHSY�MATHEX�
fontdimens�BASE_PARAMS�
MATHSY_PARAMS�
MATHEX_PARAMS�right_boundary_char�left_boundary_char�	skip_byte�	next_char�op_byter]�chars�NO_TAG�LIG_TAG�LIST_TAG�EXT_TAG�	ligatures�kerning�sorted�	STOP_FLAG�	KERN_FLAG�
setdefault)r+r8�fp�name�lengthrRr\rdrhrjrlrnrrrvrxrz�offset�rest�s�brp�scheme�lig_kern_map�cmdrarH�info�char_tagr��part�ligr/)rIrJrMrirYrmrgrVrkr[rwrqryrbr]rQrcrNr0r7�s�


�
�
�(
��������	�
��











""�














�

�����z	TFM._readN)r2r3r4r*r=r7r/r/r/r0r6�sr6�__main__Nccs�|]}|VqdSr(r/)�.0�xr/r/r0�	<genexpr>�s
��
�r�z
tfm.checksum=ztfm.designsize=ztfm.codingscheme=z
tfm.fonttype=ztfm.family=ztfm.seven_bit_safe_flag=z	tfm.face=ztfm.extraheader=ztfm.fontdimens=ztfm.right_boundary_char=ztfm.left_boundary_char=ztfm.kerning=ztfm.ligatures=z
tfm.chars=)9�__doc__�typesr�fontTools.misc.sstructrrrr�r�r|r�r�r�r�r�r�r�r�rsr�r�r�r�r�r��UNREACHABLE�PASSTHROUGH�
ACCESSABLEr�r�r�r�r�r��	Exceptionr'r6r2�sys�argv�tfm�print�join�checksumr<r;r�r:�seven_bit_safe_flagr�r�r�r�r�r�r�r�r/r/r/r0�<module>s�%����
	














����