Ë
    ÚÍ:j	   ã                   ó,  — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlZddgZ ej2                  d«      Zd„ Zddœd„Zdd„Zedk(  r*ddlZ ej@                   eejB                  dd «      «       yy)zCFF2 to CFF converter.é    )ÚTTFontÚnewTable)ÚmakeOutputFileName)ÚT2StackUseExtractor)ÚTopDictIndexÚ
buildOrderÚbuildDefaultsÚtopDictOperatorsÚprivateDictOperatorsÚFDSelecté   )ÚdesubroutinizeCharString)ÚspecializeProgram)ÚoptimizeWidths)ÚdefaultdictNÚconvertCFF2ToCFFÚmainzfontTools.cffLibc           	      óZ
  — d| _         t        d«      }| j                  D ]  }d|_        |j	                  |«       Œ || _        |d   }t        |d«      rt        d«      ‚t        t        «      }||_	        |j                  j                  «       D ]-  }||vsŒ|j                  |= t        ||«      sŒ"t        ||«       Œ/ |j                  }|j                  }t        |d«      s/t        «       x}	|_        dgt!        |j"                  «      z  |	_        t'        t(        «      }
t        t(        «      }|D ]�  }|j+                  d«       |j,                  }||_	        |D ](  }||j                  vsŒ||
v sŒ|
|   |j                  |<   Œ* |j                  j                  «       D ]-  }||vsŒ|j                  |= t        ||«      sŒ"t        ||«       Œ/ ŒŸ |j/                  «       D ]-  }|j1                  «        |j2                  j	                  d«       Œ/ | j4                  g|D �cg c]  }t7        |j,                  d	g «      ‘Œ c}z   D ]$  }|D ]  }|j2                  j	                  d
«       Œ Œ& t9        t:        «      }|d   j<                  }|j                  «       D ]7  }|j?                  |«      \  }}|dk(  rd}||   j	                  ||   d   «       Œ9 |jA                  «       D ]0  \  }}tC        |«      \  }}||   j,                  }||_"        ||_#        Œ2 |j                  «       D ]m  }|j?                  |«      \  }}|dk(  rd}||   j,                  }||   d   }||jD                  k7  sŒE|j2                  jI                  d||jF                  z
  «       Œo |j                  «       D ]ˆ  }|j?                  |«      \  }}|€d}||   j,                  }tK        t7        |d	g «      | j4                  |¬«      }|jM                  |«      }|dkD  sŒdtO        |«       tQ        |j2                  «      |_        ŒŠ | jS                  «        tU        |jV                  «      D ��ci c]'  \  }}||rdtY        |«      j[                  d«      z   nd“Œ) }}}t]        t!        |jV                  «      «      D �cg c]#  }|rdtY        |«      j[                  d«      z   nd‘Œ% c}|_+        |j"                  jA                  «       D ��ci c]  \  }}||   |“Œ c}}|_        d|_/        yc c}w c c}}w c c}w c c}}w )am  Converts this object from CFF2 format to CFF format. This conversion
    is done 'in-place'. The conversion cannot be reversed.

    The CFF2 font cannot be variable. (TODO Accept those and convert to the
    default instance?)

    This assumes a decompiled CFF2 table. (i.e. that the object has been
    filled via :meth:`decompile` and e.g. not loaded from XML.)r   Nr   ÚVarStorez5Variable CFF2 font cannot be converted to CFF format.r   FÚendcharÚSubrsÚreturnÚhmtx)Úprivateé0   Úcidé   z.notdef)ÚAdobeÚIdentityr   )0Úmajorr   ÚtopDictIndexÚcff2GetGlyphOrderÚappendÚhasattrÚ
ValueErrorr   r
   ÚorderÚrawDictÚkeysÚdelattrÚCharStringsÚFDArrayr   ÚlenÚcharStringsÚgidArrayr	   r   ÚsetCFF2ÚPrivateÚvaluesÚ	decompileÚprogramÚGlobalSubrsÚgetattrr   ÚlistÚmetricsÚgetItemAndSelectorÚitemsr   ÚdefaultWidthXÚnominalWidthXÚinsertr   Úexecuter   r   Úremove_unused_subroutinesÚ	enumerateÚcharsetÚstrÚzfillÚrangeÚROS)ÚcffÚotFontÚtopDictDataÚitemÚtopDictÚopOrderÚkeyr-   ÚfdArrayÚfdSelectÚdefaultsr&   ÚfdÚprivateDictÚcsÚsubrSetsÚwidthsr7   Ú	glyphNameÚfdIndexÚ	widthListÚbestDefaultÚbestNominalr   ÚwidthÚ	extractorÚstackUseÚnÚnameÚmappingÚvs                                  úo/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/cffLib/CFF2ToCFF.pyÚ_convertCFF2ToCFFra      s"  € ð €C„Iä˜tÓ$€KØ× Ñ ò !ˆà!%ˆÔØ×Ñ˜4Õ ð!ð #€CÔØ˜!‰n€Gäˆw˜
Ô#ÜÐPÓQÐQäÔ)Ó*€GØ€G„MØ�‰×#Ñ#Ó%ò &ˆØ�gÒØ—‘ Ð$Ü�w Õ$Ü˜ Õ%ð	&ð ×%Ñ%€Kà�o‰o€GÜ�7˜JÔ'ä&.£jÐ0ˆ�7Ô#Ø˜C¤# k×&=Ñ&=Ó">Ñ>ˆÔäÔ1Ó2€HÜÔ+Ó,€EØò .ˆØ
�
‰
�5ÔØ—j‘jˆØ!ˆÔØò 	9ˆCØ˜+×-Ñ-Ò-°#¸²/Ø+3°C©=�×#Ñ# CÒ(ð	9ð ×&Ñ&×+Ñ+Ó-ò 	.ˆCØ˜%ÒØ×'Ñ'¨Ð,Ü˜;¨Õ,Ü˜K¨Õ-ñ		.ð.ð × Ñ Ó"ò %ˆØ
�‰ŒØ
�
‰
×Ñ˜)Õ$ð%ð —_‘_Ð%Ø3:ö)Ø-/Œ�—
‘
˜G RÕ(ò)ñ ò (ˆð ò 	(ˆBØ�J‰J×Ñ˜hÕ'ñ	(ð(ô œÓ€FØ�V‰n×$Ñ$€GØ ×%Ñ%Ó'ò 6ˆ	Ø!×4Ñ4°YÓ?‰ˆˆGØ�dŠ?ØˆGØˆw‰×Ñ˜w yÑ1°!Ñ4Õ5ð	6ð
 %Ÿl™l›nò ,Ñˆ�Ü#1°)Ó#<Ñ ˆ�[Ø˜'Ñ"×*Ñ*ˆØ +ˆÔØ +ˆÕð	,ð
 !×%Ñ%Ó'ò @ˆ	Ø!×4Ñ4°YÓ?‰ˆˆGØ�dŠ?ØˆGØ˜'Ñ"×*Ñ*ˆØ˜	Ñ" 1Ñ%ˆØ�G×)Ñ)Ó)Ø�J‰J×Ñ˜a ¨×)>Ñ)>Ñ!>Õ?ð@ð !×%Ñ%Ó'ò 7ˆ	Ø!×4Ñ4°YÓ?‰ˆˆGØˆ?ØˆGØ˜'Ñ"×*Ñ*ˆÜ'Ü�G˜W bÓ)¨3¯?©?ÀGô
ˆ	ð ×$Ñ$ RÓ(ˆØ�b‹=Ü$ RÔ(Ü*¨2¯:©:Ó6ˆB�Jð7ð" ×!Ñ!Ô#ô ! §¡Ó1÷áˆAˆtð 	©!ˆu”s˜1“v—|‘| A“Ò&°Ñ:ð€Gñ ô
 >CÄ3ÀwÇÁÓCWÓ=XöØ89¡1ˆ”�A“—‘˜Q“Ò¨)Ñ3ò€G„Oð )4×(?Ñ(?×(EÑ(EÓ(G÷Ù$˜T 1ˆ�‰�qÑó€KÔð +€G…Kùòw)ùó`ùòùós   È"TÑ,TÒ)(T"Ó6T'T)ÚupdatePostTablec                óÔ   — d| vrt        d«      ‚| d   j                  }t        || «       | d= t        d«      x}| d<   ||_        |r"d| v r| d   }|j                  dk(  rd|_        y y y y )NÚCFF2z)Input font does not contain a CFF2 table.zCFF Úpostg       @g      @)r%   rE   ra   r   Ú
formatType)Úfontrb   rE   Útablere   s        r`   r   r   “   s�   € Ø�TÑÜÐDÓEÐEØ
ˆv‰,×
Ñ
€CÜ�c˜4Ô ØˆVˆÜ# FÓ+Ð+€EˆD�‰LØ€E„Iá˜6 T™>à�F‰|ˆØ�?‰?˜cÒ!Ø!ˆD�Oð "ð *€ó    c                 ó€  — | €ddl }|j                  dd } ddl}|j                  dd¬«      }|j	                  ddd	¬
«       |j	                  ddddd¬«       |j	                  dddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j                  d¬«      }|j	                  dddd¬«       |j	                  d d!dd"¬«       |j                  | «      }dd#lm}  ||j                  rd$n|j                  rd%nd&¬'«       ddl}|j                  }|j                  j                  |«      s |j                  d(j!                  |«      «       |j"                  st%        |d)d*¬+«      n|j"                  }	t'        ||j(                  d¬,«      }
t+        |
«       |j,                  rldd-lm} dd.lm} t6        j9                  d/«        |«       }|
j;                  |«       |j=                  d«       t'        |dd¬,«      }
 ||
|j>                  ¬0«       t6        jA                  d1|	«       |
j;                  |	«       y)2z%Convert CFF2 OTF font to CFF OTF fontNr   r   zfonttools cffLib.CFF2ToCFFz(Convert a non-variable CFF2 font to CFF.)ÚdescriptionÚinputz	INPUT.ttfzInput OTF file with CFF table.)ÚmetavarÚhelpz-oz--outputz
OUTPUT.ttfz3Output instance OTF file (default: INPUT-CFF2.ttf).)rm   Údefaultrn   z--no-recalc-timestampÚrecalc_timestampÚstore_falsez:Don't set the output font's timestamp to the current time.)ÚdestÚactionrn   z--remove-overlapsÚ
store_truez@Merge overlapping contours and components. Requires skia-pathops)rs   rn   z--ignore-overlap-errorszCDon't crash if the remove-overlaps operation fails for some glyphs.F)Úrequiredz-vz	--verbosezRun more verbosely.z-qz--quietzTurn verbosity off.)ÚconfigLoggerÚDEBUGÚERRORÚINFO)ÚlevelzNo such file '{}'Tz-CFF)Ú	overWriteÚsuffix)ÚrecalcTimestampÚrecalcBBoxes)ÚremoveOverlaps)ÚBytesIOzRemoving overlaps)ÚignoreErrorsz	Saving %s)!ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚadd_mutually_exclusive_groupÚ
parse_argsÚ	fontToolsrv   ÚverboseÚquietÚosrl   ÚpathÚisfileÚerrorÚformatÚoutputr   r   rp   r   Úremove_overlapsÚfontTools.ttLib.removeOverlapsr   Úior€   ÚlogÚdebugÚsaveÚseekÚignore_overlap_errorsÚinfo)Úargsr‚   r„   ÚparserÚloggingGroupÚoptionsrv   rŒ   ÚinfileÚoutfilerg   r   r€   Ústreams                 r`   r   r   £   sL  € à€|Ûà�x‰x˜˜ˆ|ˆãà×$Ñ$Ø$Ø>ð %ó €Fð ×ÑØ˜Ð+Kð ô ð ×ÑØØØØØBð ô ð ×ÑØØØØIð	 ô ð ×ÑØØØOð ô ð
 ×ÑØ!ØØRð ô ð
 ×6Ñ6ÀÐ6ÓF€LØ×ÑØˆk ,Ð5Jð ô ð ×ÑØˆi Ð3Hð ô ð ×Ñ Ó%€Gå&áØ!Ÿ/š/‰w¸'¿-º-©wÈVõó à�]‰]€FØ�7‰7�>‰>˜&Ô!Ø�‰Ð(×/Ñ/°Ó7Ô8ð �~Š~ô 	˜6¨T¸&ÕAà�^‰^ð ô �&¨'×*BÑ*BÐQVÔW€Dä�TÔà×ÒÝAÝä�	‰	Ð%Ô&á“ˆØ�	‰	�&ÔØ�‰�AŒÜ�f¨eÀ%ÔHˆÙØØ ×6Ñ6õ	
ô
 ‡H�HØØôð 	‡I�IˆgÕri   Ú__main__)N)"Ú__doc__ÚfontTools.ttLibr   r   ÚfontTools.misc.cliToolsr   ÚfontTools.misc.psCharStringsr   ÚfontTools.cffLibr   r   r	   r
   r   r   Ú
transformsr   Úspecializerr   rY   r   Úcollectionsr   ÚloggingÚ__all__Ú	getLoggerr•   ra   r   r   Ú__name__r‚   Úexitrƒ   © ri   r`   ú<module>r±      s”   ðÙ ç ,Ý 6Ý <÷÷ õ 1Ý *Ý !Ý #Û ð ˜vÐ
&€ð €g×ÑÐ*Ó+€òu+ðp /3ô "ó Yðx ˆzÒÛà€C‡H�H‰T�#—(‘(˜1˜2�,ÓÕ ð ri   