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øªjM8ã@s¨dZddlmZddlmZddlmZddlZGdd„deƒZdZ d d „Z ed d „ƒZ d d„Z dd„Z dd„Zdd„Zdd„Zd"dd„Zdd„Zdd„Zd$d d!„ZdS)%z-Helpers for instantiating name table records.é)Úcontextmanager)Údeepcopy)ÚIntEnumNc@s0eZdZdZdZdZdZdZdZdZ dZ d Z d S) ÚNameIDéééééééééN) Ú__name__Ú __module__Ú __qualname__Ú FAMILY_NAMEÚSUBFAMILY_NAMEÚUNIQUE_FONT_IDENTIFIERÚFULL_FONT_NAMEÚVERSION_STRINGÚPOSTSCRIPT_NAMEÚTYPOGRAPHIC_FAMILY_NAMEÚTYPOGRAPHIC_SUBFAMILY_NAMEÚ!VARIATIONS_POSTSCRIPT_NAME_PREFIX©rrúE/tmp/pip-build-_d5lkt3n/fonttools/fontTools/varLib/instancer/names.pyr srrcCsÒg}d|krb|d}x|jD]}|j|jƒqWx0|jD]&}|j|jƒ|jdkr8|j|jƒq8Wd|krÄ|dj}x&|jr„|jjnfD]}|j|j ƒqˆWx&|j r¬|j j nfD]}|j|j ƒq°Wdd„|DƒS)NÚfvariÿÿÚSTATcSsh|]}|dkr|’qS)éÿr)Ú.0ÚnameIDrrrú )sz&getVariationNameIDs..) ÚaxesÚappendZ axisNameIDZ instancesZsubfamilyNameIDZpostscriptNameIDÚtableÚDesignAxisRecordÚAxisZ AxisNameIDÚAxisValueArrayZ AxisValueÚ ValueNameID)ÚvarfontÚusedrZaxisÚinstanceÚstatÚvaluerrrÚgetVariationNameIDss      r/c#s€ddlm}t|ƒ}dV|jdƒ|t|ƒ‰‡fdd„|djDƒ|djdd…<d|kr|tdd „|djDƒƒs||d=dS) Nr)ÚlogzPruning name tablecsg|]}|jˆkr|‘qSr)r!)r Úrecord)Úexcluderrú 7sz&pruningUnusedNames..ÚnameÚltagcss&|]}|jdkr|jdkr|VqdS)riÿÿN)Ú platformIDÚlangID)r r1rrrú ?sz%pruningUnusedNames..)Úr0r/ÚinfoÚnamesÚany)r*r0Z origNameIDsr)r2rÚpruningUnusedNames,s   &r=c CsÆddlm}m}d|kr tdƒ‚|dj}|js8tdƒ‚|d}dd„|jDƒ}t|ƒ}x2|jƒD]&\}} ||ks€t |||ƒrb| ||<qbW|||ƒ} t || |ƒd d „| Dƒ} t | ƒ} t || ƒd S) a<Update instatiated variable font's name table using STAT AxisValues. Raises ValueError if the STAT table is missing or an Axis Value table is missing for requested axis locations. First, collect all STAT AxisValues that match the new default axis locations (excluding "elided" ones); concatenate the strings in design axis order, while giving priority to "synthetic" values (Format 4), to form the typographic subfamily name associated with the new default instance. Finally, update all related records in the name table, making sure that legacy family/sub-family names conform to the the R/I/B/BI (Regular, Italic, Bold, Bold Italic) naming model. Example: Updating a partial variable font: | >>> ttFont = TTFont("OpenSans[wdth,wght].ttf") | >>> updateNameTable(ttFont, {"wght": AxisRange(400, 900), "wdth": 75}) The name table records will be updated in the following manner: NameID 1 familyName: "Open Sans" --> "Open Sans Condensed" NameID 2 subFamilyName: "Regular" --> "Regular" NameID 3 Unique font identifier: "3.000;GOOG;OpenSans-Regular" --> "3.000;GOOG;OpenSans-Condensed" NameID 4 Full font name: "Open Sans Regular" --> "Open Sans Condensed" NameID 6 PostScript name: "OpenSans-Regular" --> "OpenSans-Condensed" NameID 16 Typographic Family name: None --> "Open Sans" NameID 17 Typographic Subfamily name: None --> "Condensed" References: https://docs.microsoft.com/en-us/typography/opentype/spec/stat https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids r)Ú AxisRangeÚaxisValuesFromAxisLimitsrz6Cannot update name table since there is no STAT table.zrsz#updateNameTable..cSsg|]}|jt@s|‘qSr)ZFlagsÚELIDABLE_AXIS_VALUE_NAME)r Úvrrrr3sz#updateNameTable..N) r9r>r?Ú ValueErrorr%r(r#rÚitemsÚ isinstanceÚcheckAxisValuesExistÚ_sortAxisValuesÚ_updateNameRecords) r*Z axisLimitsr>r?r-rZ fvarDefaultsZdefaultAxisCoordsrAÚvalZaxisValueTablesrrrÚupdateNameTableFs$       rMc sðtƒ}|jj}x¤|D]œ}|j}|jd krj||jj}|dkrD|j}n|j}|ˆkr°|ˆ|kr°|j|ƒq|jdkrx:|j D]0} || jj}|ˆkr|| jˆ|kr||j|ƒq|WqWtˆƒ|} | rìdj ‡fdd„| Dƒƒ} t d| ›d �ƒ‚dS) Nrrrr z, c3s$|]}d|›dˆ|›d�VqdS)ú'ú=Nr)r Úi)Ú axisCoordsrrr8šsz'checkAxisValuesExist..zCannot find Axis Values [ú])rrr) Úsetr&r'ÚFormatÚ AxisIndexZAxisTagZ NominalValueÚValueÚaddÚAxisValueRecordÚjoinrF) r-Ú axisValuesrQÚseenZ designAxesZaxisValueTableZaxisValueFormatrAÚ axisValueZrecZ missingAxesÚmissingr)rQrrI…s(        rIcCs¾g}tƒ}tdd„|Dƒdd„dd�}xF|D]>}tdd„|jDƒƒ}t|ƒ}||@s,||O}|j||fƒq,Wx<|D]4}||kr‚qt|j}||krt|j|ƒ|j||fƒqtWd d„t|ƒDƒS) NcSsg|]}|jdkr|‘qS)r )rT)r rErrrr3©sz#_sortAxisValues..cSs t|jƒS)N)ÚlenrX)rErrrÚªsz!_sortAxisValues..T)ÚkeyÚreversecss|] }|jVqdS)N)rU)r Úrrrrr8¯sz"_sortAxisValues..cSsg|] \}}|‘qSrr)r Ú_r\rrrr3½s)rSÚsortedrXÚminr$rUrW)rZÚresultsZseenAxesZformat4rLZ axisIndexesZminIndexZ axisIndexrrrrJžs(    rJc sD|d‰|dj}dd„|Dƒ}‡fdd„|Dƒ‰‡fdd„|Dƒ}|j}tˆ|ƒ}ˆj‰tdd„ˆjDƒƒ}xÐ|D]ȉt‡‡fd d„d d |fDƒƒs˜qtd j‡‡fd d„ˆDƒƒ}|rÒd j‡‡fdd„|Dƒƒ} nd} | oà| �r|rüˆ|fˆžŽjƒ}nˆ|fˆžŽjƒ} d j‡‡fdd„|Dƒƒ} t || || fˆžŽqtWdS)Nr4rcSsg|] }|j‘qSr)r))r rBrrrr3Åsz&_updateNameRecords..csg|]}tˆ|ƒr|‘qSr)Ú_isRibbi)r Ún)Ú nametablerrr3Æscsg|]}|ˆkr|‘qSrr)r rh)Ú ribbiNameIDsrrr3Çscss|]}|j|j|jfVqdS)N)r6Ú platEncIDr7)r rbrrrr8Ìsz%_updateNameRecords..c3s|]}ˆ|fˆžŽVqdS)Nr)r rP)ÚgetNameÚplatformrrr8Îsrrú c3s |]}ˆ|fˆžŽjƒVqdS)N)Ú toUnicode)r rh)rlrmrrr8Ôsc3s |]}ˆ|fˆžŽjƒVqdS)N)ro)r rh)rlrmrrr8Øsc3s |]}ˆ|fˆžŽjƒVqdS)N)ro)r rh)rlrmrrr8æs) r%ZElidedFallbackNameIDrgrlrSr;ÚallrYroÚ_updateNameTableStyleRecords) r*rZr-ZaxisValueNameIDsZnonRibbiNameIDsZ elidedNameIDZelidedNameIsRibbiÚ platformsÚ subFamilyNameÚtypoSubFamilyNameÚfamilyNameSuffixr)rlrirmrjrrKÀs<   rKcCs,|j|dddƒ}|dk r(|jƒd kr(dSd S) Nrri ÚRegularÚItalicÚBoldú Bold ItalicTF)rvrwrxry)rlro)rir!Z englishRecordrrrrgòsrgrré cCs²|d}|||f}|jtjf|žŽp4|jtjf|žŽ} |jtjf|žŽpX|jtjf|žŽ} t| | gƒsttd|›�ƒ‚| jƒ} | jƒ} tj| tj|p”di} |rÊ| ›d|›�j ƒ| tj<| | tj<|| tj<n"x tjtjfD]} |j | d�qØW| j tjƒ�p| tj} | j tjƒ�p| tj}| ›d|›�| tj <t || ||ƒ| tj<t|| |ƒ}|�r`|| tj<x6| jƒD]*\} }|�s€t| ƒ‚|j|| f|žŽ�qjWd|k�r®|j tjƒdS)Nr4z.Missing required NameIDs 1 and 2 for platform rvrn)r!r)rlrrrrrrprFroÚstripZ removeNamesÚgetrÚ_updatePSNameRecordrÚ_updateUniqueIdNameRecordrrGÚAssertionErrorÚsetNamer)r*rursrtr6rkr7rirmZcurrentFamilyNameZcurrentStyleNameÚnameIDsr!Z newFamilyNameZ newStyleNameZuniqueIDÚstringrrrrqüsF         rqcCsj|d}|jtjf|žŽ}|r(|jƒ}n|}|›d|›�}tjdd|ƒ}t|ƒdkrf|dd…›d�S|S)Nr4ú-z [^A-Za-z0-9-]r9éé|z...)rlrrroÚreÚsubr^)r*Z familyNameZ styleNamermriZ family_prefixÚpsNamerrrr}As  r}c Cs¼|d}|jtjf|žŽ}|s"dSxTtjtjfD]D}|j|f|žŽ}|sJq0|jƒ|jƒkr0|jƒj|jƒ||jƒSq0Wt||ƒ}|dj }t j dd|ƒj ƒ} |tj} |›d| ›d| ›�S)Nr4zOS/2z [^\x00-\x7F]r9ú;) rlrrrrroÚreplacer!Ú _fontVersionÚ achVendIDr†r‡r{) r*r�rmriZ currentRecordr!Ú nameRecordZ fontVersionrŒÚvendorrˆrrrr~[s    r~cCsL|djtjf|žŽ}|dkr,|djd›S|jƒjdƒd}|jdƒjƒS)Nr4Úheadz.3fr‰rzVersion )rlrrZ fontRevisionroÚsplitÚlstripr{)Úfontrmr�Z versionNumberrrrr‹ts r‹)rrrz©rrrz)r“)Ú__doc__Ú contextlibrÚcopyrÚenumrr†rrDr/r=rMrIrJrKrgrqr}r~r‹rrrrÚs&     ?"2 >