; TeX output 2009.08.23:2219soDtGGcmr17The7tGGcmss17fontinstutilitqyoxXQ cmr12AlanJe rey˄ DarvidCarlisle1!SebastianRahrtzUlrikVieth:LarsHellstr omfjAugust23,2009&INff cmbx12Contents"IN cmbx12ThekAH cmssbx10fontinstdo`cumentatione5I"V cmbx101XFiles6v5 XK`y cmr101.1oSourceUU les\...............................V5X1.2oGeneratedUU les.............................V5X1.3oMoGdules 䍍.................................V6I2XAbQoutTpreviouskAH cmssbx10fontinstreleases7X2.1oPre-m#R cmss10doGcUUfontinstreleasesj........................V7X2.2oAbGoutUUfontinstv1.8..........................V8I3XAbQoutTthisfontinstreleaseV%8X3.1oMetricUUpackqagesፍ.............................V12X3.2oW*ordUUbGoundaryligaturesandkerns8..................V13X3.3oChangingUUthenamesofglyphsa.....................V14X3.4oMakingUUmap lefragments?U.......................V16X3.5oOnUUverbatim,typGewriter,andmonowidthfonts0...........V18X3.6oT*uningUUaccentpGositions|anapplicationofloopsp..........V19X3.7oF*ontUUinstallationcommands......................V21X3. !", cmsy101oComingUUattractions"...........................V24I4XNotesTonusing8fontinsty25X4.1oGeneralUUnotesꍍ..............................V25X4.2oNotesUUonsmallcapsandoldstylefonts8................V26X4.3ofontinstUUvqariables[............................V27I5XfontdoN9cTpac9k\rageoverview,35X5.1oSomeUUfontdoGccommandsthatfontinstdoesn'tknow7.........V36"Ia ߆T cmtt12fibasics.dtxVd37I6XTheT rstandthelast37X6.1oV*ersionUUnumbGers............................V37X6.2oSpGecialUUcatcodesandcon guration le㍍................V38X6.3oPlainUUTU>'ExXmacrosfrom!'ExXextensions".......................V47X8.3oW*ritingUUtooutput les.........................V50X8.4oConditionalsF...............................V53X8.5oRealUUnumbGers*?..............................V59X8.6oHexadecimalUUnumbGers.........................V61X8.7oError,UUwarning,andinfomessages..................V62"Ib ficommon.dtxfd67I9XGeneralTcommands>67X9.1oStringUUexpressions썍...........................V67X9.2oIntegerUUexpressions`...........................V76X9.3oSettingUUvqariables֍............................V90X9.4oF*orUUloGops ܍................................V97X9.5oComments................................ V100"Ic fimain.dtx101I10XEncoQdingT les101I11XMetricT les K112X11.1oKerningUUinformationm.......................... V115X11.2oGlyphUUinformation;獍........................... V121X11.3oGlyphUUcommands&............................ V128I12XCon9vertingTanETX letoa(V)PL le~K133X12.1oLowest-levelUUuserinterface͗....................... V133X12.2oGlyphUUtoslotassignments푍....................... V135X12.3oTheUUheader,mapfonts,andfontdimens................ V138X12.4oTheUUligtableԍ............................... V141X12.5oTheUUcharacters Ǎ............................. V144X12.6oSlotUUcommandsthatputthingsinacharacterpropGertylistEԍ.... V146X12.7oSavedUUmapcommandsg......................... V148X12.8oTidyingUUup}............................... V149I13XF on9tTinstallationcommandsand.fd lesv149X13.1oW*ritingUUfontde nition les...................... V156X13.2oNewUUfontsubstitutionmechanismԋ................... V159X13.3oDefaultUUencoGdingsandfontsizesT................... V163I14XDebugging 1642soId fitrig.dtx166I15XT rigonometricalTfunctionsh166 X15.1oTheUUMacrosM֍............................... V166"Ie ficonv.dtxW170I16XBasicT leformatcon9versions 170X16.1oConvertingUUanENC letoanETX le................ V170X16.2oConvertingUUanETX letoanENC le................ V172X16.3oConvertingUUanETX letoCMAP le獍................ V174X16.4oConvertingUUanAFM letoanMTX le............... V176X16.5oConvertingUUaPL letoanMTX leۚ................. V184X16.6oConvertingUUanMTX letoaPL leۚ................. V192I17XF on9tTtransformations193X17.1oT*ransformableUUmetric lesx=....................... V193X17.2oMakingUUfonttransformations퍍..................... V194X17.3oChangingUUglyphnames8I......................... V202"Iffiltfam.dtx211I18XInstallingTLatinfamilies_211X18.1oProGcessingUUalistofweights,UUwidthsandshapes)........... V212X18.2oF*akingUUfontshapGes........................... V213X18.3oF*akingUUfontwidthsM........................... V221X18.4oInstallingUUreencoGdedfonts1....................... V224X18.5oDefaultUUweights,widthsandshapGesڍ.................. V226"Ig fimapgen.dtx6d229I19XGeneratingTmap lefragmen9ts57229X19.1oInterfaceUUtomainfontinst....................... V229X19.2oUserUUinterfacey.............................. V236X19.3oDeducingUUvqaluesforthemap leentries"............... V241X19.4oDriverUUmakersq[.............................. V244IIndex5Ee251IChangeTHistoryv275"IInternalnotes`Z287IAXT9ypQographicTtreatment͜2873?ɠsoIBXPlanningTtopics287 XB.1oReorganisationUUofthesource...................... V287XB.2oFiles................................... V287ICXCon9tributorsN288IDXT oTdo%289 XD.1oThingsUUtodointhe\near"future................... V289XD.2oThingsUUthatprobablywon'tbGedoneinthenearfuturei{....... V289XD.3oThingsUUthathaveUUbGeendone ...................... V290XD.4oOtherUUnotes񍍑............................... V292IEXEciencyw2292XE.1oAlanUUJe rey'stests ........................... V293XE.2oCurrentUUtestsq].............................. V2934W sogI#Nq cmbx12About the$kAHq cmssbx10fontinstpacZk(ageꨍIThisUUdoGcumentimplementsanddescribGesversion1.9ofrfontinst.!čI1aLFilesI1.1gSource lesuTIThesourceforfontinstiscurrentlysplitonthesevensource lesfibasics.dtx I(basicvTU>'ExXvinitialisationandhackery),eficommon.dtx(commandsvforvqariables,fin-Itegerexpressions,andthelike),fimain.dtx(actuallymakingfonts),fitrig.dtxI(trigonometry),a.ficonv.dtx+(conversionsbGetween leformats,a.fonttransforma-Itions), filtfam.dtx(the\latinfamilycommand),andfimapgen.dtx(map leIgeneration).6I1.2gGenerated lesIByErunningDthedoGcstripinstallationscriptfontinst.ins,@thefollowing lesareIgenerated:Ifontinst.styܲThisistheexecutable lethat containsallthecommandsthatsetbupUUthefontinstutilityforuse.Ixfntinst.styܲThis3isavqariantofQfontinst.styinwhichthe\latinfamilybcommandbGehavesdi erentlywithrespGecttofromwhichfontsthedigitsarebpickedUU(seebGelow).Icfntinst.styܲThisyisavqariantof@fontinst.stywhichsuppGortstheoldwayofbselectingbGoundarycharforfonts(i.e.,bysettingtheintegerboundarychar).bItUUrequiresabitmorememorythanfontinst.stydoGes.Ifontinst.iniܲThisF lecontainssomeveryFbasicinitializationcoGde.lItisusedinbcaseUUfontinstisusedunderiniTU>'ExXwithoutapreloadedformat.Ifinstmsc.styܲThisR lecontainstheroutinesforautomaticmap legeneration,bwhich6cannow6generatemap lesforthedvipsanddvipGdfmdrivers.RThebsystem+isextendable,a+sousersinterestedingeneratingmap lesforotherbdriverscanextendthemap lewriter'scapabilitiesbyaddingcoGdetotheirbfinstmsc.rc les.%': cmti10ContributionsQofsuchRc}'odeQiswelc}'ome.This lealsobcontains&someseldom-used'coGde(theENCtoETXconversion)&thathasbbGeenbrokeno fromthemainfontinstutility*,asitalmostalwaysjustsatbthereUUandusedupspacefornogoGodUUreason.Ifontdoc.sty߲This lecontainsthefontdoGcpackqage,whichcanbGeusedtotypGesetbencoGdingUUandmetric les.Icsc2x.tex}?This1 lecontains1thereglyphingcommandsthatsetupthecom-bmoncaps-and-small-capstoexpGertnamesconversion.dSeeSubsections3.3bandUU17.3fordetails.Icsckrn2x.texܲThis leisavqariantofcsc2x.tex,OwhichdoGesn'tcopythecom-bmandsUUthatactuallysetglyphs.5a~soIosf2x.tex}?This* le+isavqariantofQHcsc2x.tex,`whichonly+changesthe+namesof bdigits.#6I1.3gMo`dulesuTITheUUsourceissplituponthefollowingxdoGcstripmodules:IhbGoundaryCompabilityX8i,TfimainԇGuards.coGdethat-isneededforfontinsttobGecom-bpatibleUUwiththeoldinterfaceforbGoundaryligaturesandkerns.Ih!bGoundaryCompability[ i,TfimainN0Guards>coGde=thatisusedwhenfontinstisnottobbGeUUcompatiblewiththeoldinterfaceforboundaryligaturesandkerns.IhdebugVi,TfiltfamyGuardsxycoGdexxinthe\latinfamilysectionthatwritesINFO>bmessages.IhdoGc㐸i,Tfibasics,ficommon,fimain,andfimapgen4zAGuardsΦcoGdethatΧistogobintoUUfontdoc.sty.IhdriverXi,Tall leskGuards/&the/%drivercoGde|theshortpieceofL5ffٓRcmr7A͉TU>'ExXcoGdeinthebbGeginningofeach lethatmakesitpGossibletotypGesetasaL5ffA͉TU>'ExXdocument.bdocstrip.insdoGesn'textractthiscoGde,butitispGossibletowriteascriptbthatmakesdoGcstripextractthiscodeifonewantstowriteamoGdi eddriver.bIt'sUUnotusual,though.Iheveryjob"\wi,Tfibasics*GuardsthecoGdesetting\everyjobforfontinstformats(bybdefaultUUnotused).Ih!glyphsʸi,Tficonv?Guards/reglyphing/setupcoGdethatisrelevqantwhencommandsbthatUUsetglyphsarenottobGecopied.Ihglyphs*i,TficonvxӲGuardsoreglyphingpsetupcoGdethatisrelevqantwhencommandsbthatUUsetglyphsaretobGecopied.Ihini Ǹi,TfibasicsGuardsUUthecoGdeforfontinst.ini.Ihmapꭸi,TfimapgenͲGuardsUUthecoGdefortheautomaticmap legeneration.Ihmiscri,Tfibasics,fimain,andficonv'GuardsScoGdethatisSonlytogointobfinstmsc.sty.Ih!miscci,Tfibasics1GuardsUUcoGdethatisnottogointofinstmsc.sty.Ihobsolete!㐸i,Tficommonandfimain:wGuardsOmiscellaneouspiecesOofcoGdethatarebconsideredUUobsolete.Iholdstyle*i,TfiltfamϲGuards^coGde^inthe\latinfamilysection.ThepurpGoseofbthatUUcoGdeisdescribedinmoredetailinSection4.IholdT*eXi,TfibasicsqGuardscoGdethatcopeswithabuginTU>'ExXversionsbGeforeb3.141.Ih!oldT*eX ji,Tfibasics8βGuardsnormalcoGdethatwouldn'tworksatisfactoryforTU>'ExXbversionsUUbGefore3.141duetoabuginthoseTU>'ExXs.6nYsoIhpkg1ɸi,Tall les3ܲGuardsUUcoGdethatistogointofontinst.sty(anditsvqariants).Ihpkg2=i,Tfibasics]AspGecialvqariantofhpkg1ɸithatisusedforcoGdethatistoend bupUUattheveryendofrfontinst.sty.Ihreglyphletters7̸i,Tficonv?GuardsqcoGdepthatsetsupforchanginglowerpcaselet-bter<names<tocorrespGondingsmallcapsnames. &#Usedforcsc2x.texandbcsckrn2x.tex.Ihreglyph gures9ji,TficonvײGuardsocoGdepthatsetsupforchangingordinary gurebnamesAmtocorrespGondingdoldstylenames.k$Usedforosf2x.tex,Ehcsc2x.tex,bandUUcsckrn2x.tex.Ihreglyph1˸i,TficonvGuards&coGde'thatistogotothereglyphingsetup lesbcsc2x.texUUandcsckrn2x.tex.Ihtextcomp&Yi,Tfiltfamc|GuardscoGdeinthe\latinfamilysectionthatgeneratesbtextUUsymbGol(TS1/\textcompanion")fonts.IhunderconstructionJxi,TfimainꞲGuardsUUsomecoGdethatis\underconstruction".!čI2aLAbs3outffprevious(kAHff cmssbx10fontinstreleasesI2.1gPre-do]cfontinstreleasesuTIThe,followingis-achoiceofsomefontinstversions-andsomecommentsabGoutIthem.,iThecompletelistofversionsintherangev0.01{1.7canbGefoundintheI leUUCHANGES.Iv0.01jn2was]bGegunby]AlanJe reyinF*ebruary1993.;Thiswasthevery rstversionbrecordedUUintheCHANGES le.Iv0.19jn2was|completedinApril1993andpresentedattheTUG'93conferencebin'July(1993. H=ItisdescribGedintheproGceedingsinTUGb}'oat14#3andbrepresentsq#oneq"oftheearliestreleaseversions,inwhichtheq"userinterfacebwasUUstillsub8jecttochange.Iv1.0d4wasbGeguninAugust1993rightaftertheconferenceandrepresentsthebbGeginningUUofacompletere-writefromscratch.Iv1.333p.0was(JpresentedoneyearlaterattheTUG'94conferenceandisdescribGedbinUtheproGceedingsinTUGb}'oat~-15#3..rItUusesadi erentTuserinterface,whichbislargelythesameasinthepresentversion,malthoughtheinternalsofthebimplementationUUhavesubsequentlychangedquiteabit.Iv1.335p.0was!IreleasedinSeptembGer1994and!Hwasthelast\ocial"releasever-bsionKbyKAlanJe rey*.UNUntilthesummerofK1998thiswasstillKtheversionbtoLbGeLfoundinthefonts/utilities/fontinstdirectoryonCT*AN.ItisbconsideredUUobsoleteandshouldnotbGeusedanylonger.Iv1.400p.0waswpreparedxinNovembGer1994xandwasxthe rstversionxwhichusedb8r-encoGdedUUrawfontsasabasisforvirtualfonts.7{soIv1.500p.0appGearedVonVCT*ANVvinfonts/psfonts/toolsinSeptembGer1995together bwithSebastianRahtz'sUnixshellscriptstoautomatetheinstallation.ZThisbversion%Uincludedacompletelyrevisedimplementationof\latinfamilyandbaddedUUthe\installrawfontcommandtoinstallligfulrawfonts.Iv1.504p.0appGeared!onCT*AN!infonts/psfonts/toolsinJanuary1996.`ItaddedbcoGdetoinstall(realorfaked)smallcapsfontsandtofakenarrowfonts,ifbtheyUUdon'texist.Iv1.511p.0wasRQoneofthelastbGetaversionsRRbyAlanJe reywhichdatesbacktobJuneu1996,@|butfortsomereasonwasneverureleased.&ItusestheencoGdingsb9obͲandb9dinsteadof9tand9etoinstallexpGertizedoldstylefonts,f,butthisbchangeUUneverfounditswayintosubsequent\unocial"releasesuntilv1.8.Iv1.6d4appGearedEonCT*ANinfonts/psfonts/toolsinFebruary1997andwastheb rst\unocial"versionofGfontinstmaintainedbySebastianRahtz.Itcon-btainsonlyminorchangescomparedtov1.504,3suchasswitchingtolowercaseb lenames,searchingfor.pl lesbGefore.afm les,andaddingthetextcompbinstallationUUtothedistribution.Iv1.6d4was re-issued onCT*ANinSeptembGer1997,ÀwhentheUnixshellscriptswerebreplacedbyPerlscripts.:CThefontinstDzpackqageitselfdidn'tchangeapartfrombminorUUchangesofthedebuggingmessages.Iv1.7d4isthelatest\unocialversion",uwhichwasreleasedonCT*ANinMay1998.bIt>includessomechangestothe>mappingbGetweenfontnameandL5ffA͉TU>'ExXbweightcoGdesproposedbyUlrikVieth,aswellassomecoGdetosuppGortthebuseUUof8r-encoGded.afm lesgeneratedbyttf2afm.6I2.2gAb`outfontinstv@1.8uTIV*ersion1.8ofthefontinstutilitywasthe rsttohavebGeenconvertedtodoGcstripIformat(thiswasmadebyUlrikVieth)anditwas rstreleasedinJune1998.IIt$isbasedonSebastianRahtz's\unocial"#fontinstreleasesv1.6and1.7asofIF*ebruary51997andMay1998,owhich,ninturn,oarebasedonAlanJe rey'sversionsIv1.5005`and1.504ofSeptembGer1995andJanuary1996.g Inaddition,;versionv1.8IalsoincorpGoratedsomecodefromAlanJe rey'slastbetaversion,kv1.511,whichIdates xbacktoJune1996,7butwasneverreleasedtothegeneralpublicforsomeIreason.XV*ersion.y1.8wasagreedupGonbythefontinsthacker.xcommunity*,6?asrepresentedIon?3the?2fontinstmailinglist,yasthenewociallyendorsedversion,yonwhich?3allIfurtherUUadditionsandenhancementscanbGebased.!čI3aLAbs3outffthisfontinstreleaseIV*ersions 1.9xx offontinstrepresentamore-or-lesscontinuous evolutionfrom 1999Itoxtheypresent.=Severalimprovements,إtheyextentsofwhichyarepGerhapsnotclearlyIrepresentedYintheversionnumbGerincrements,havebGeenmadeinthisseries|Isometimes *as xestooldbugs,RbutmoreoftentointroGducenewfeatures.FTheImostUUimpGortantare:8 +soXbTheIoldmultiple\setkernbug, LwhichresultedinpGointlessKRN1instructions bbGeingJ/writtentoJ0(V)PLJ, leshaveJ/beenJ0 xed.nInaddition,LjitisnowpGossiblebtoresetkerns(using\resetkern)andunsetkerns(using\unsetkerns,b\noleftkerning,UU\norightkerning,or\noleftrightkerning).XbAbugwhichresultedintoGofewkernsbGeingwrittentoafontifthesamebglyphisusedinmorethanoneslot(thisoGccursifyoumakeanall-capsfontbfrom})an}(encoGdingde nition lewhichsets\lc,\lctop,and\lcligtothebsameDtoCtheir\uc...counterparts)DhasbGeen xed.Aconsequenceofthisb xisthatyoucannotaccessthenumbGeroftheslotthatglyphhglyphcihasbbGeenassignedtoas\int{hglyphci}(unlessyouareusing0cfntinst.sty),-butbthereUUreallyisnoneedforyoutodosoeither.XbThereisnowapropGerinterfaceforusingleftandrightbGoundarieswhich,inbcontrastrtotheoldsettingofqtheintegerboundarychar,9canmakeuseofthebfull~generalityofthePL[format.C(TheoldinterfaceisstillavqailableifyoubuseUUcfntinst.sty.)XbfontinstecannowinterpretAFMe leswhichcontainnon-integerdimensions.bThereisalsoauser-levelinterfaceforchangingtheformulaaccordingtobwhichUUtheitaliccorrectionsofglyphsarecomputed.XbThePLtoMTXconvertercannowcopGewiththeVPL-uniquepropGertyblistsxMVTITLE,xNMAP,andMAPFONT,whichmeansthatitcannowconvertxMVPLb lesaswell.V.Inadditiontothis,+thereareacoupleofminorbug xesandbimprovementsUUinthePLtoMTXconversion.XbThereisnowawayofoverridingthePLitoMTXhconverter'sautomaticbchoiceqofqencoGdingde nition lemadebasedontheCODINGSCHEMEpϲprop-berty7of8aPL le.nThecommand\generalpltomtxletsyouselectwhichbencoGdingaYde nition leyouwanttouse,dZasdoGesthenew\fromplgivenetxbtransformedUUfontcommand.XbSeverall;fontinstl:commandsthatwerel:previouslymissinghavel:bGeenaddedbto8thefontdoGc7packqage. pThemostsigni cantare7probably\inputmtxandb\inputetx.XbThereisnowawayofautomaticallychangingthenamesofglyphsinmetricb lesUUgeneratedfromAFM les.XbThe8implementationoffontmetricstransformations,qasdoneby\transformfont,bhasybGeenyrewrittenandfontinstnowhandlesuniformscalinginternally;+thebdriver2onlyneedsto1do b> cmmi10x-scalingandslanting.^This1canresultindi erentbfont-metrics,d butwethinkonlyinthatitcomesoutmorelikeonewouldbexpGect.qTheUUuserinterfaceisthesame.XbThereR|isR}nowanewtransformedfontcommand\fromanywhichsearchesbforcacfontmetric leinanyofthefourformatsMTX,PL,AFM,andVPL;bconvertingTittoMTXformatandpGossiblygeneratingaPLaswellifneces-bsary*.|ThisYcommandYisalsousedby\installfont,Y\installrawfont,Yandb\reglyphfonttosearchforfontmetric les,sothesecannowtakeVPL lesbasUUasourceforfontmetricdata.9 soXbThereisnowamechanismforgeneratingthenecessarymap lesautomat- bically*.kSo7far6itknowshow7togeneratemap lesforthedvipsanddvip-bdfmdrivers,*butthesystemcaneasilybGeextendedbyaddingcoGdeinthebfinstmsc.rcUU le.XbThere"aretwo"new!commands\setscaledrawglyphand\setscaled-bnotglyphwhichgeneralizethe\setrawglyphand\setnotglyphcom-bmands.qTheseUUcommandsaredescribGedinSubsection11.2.XbThe/routines.forconverting/metricsto(V)PLformathavechanged.TAs/abresultofthisthemetricsoffontsarelikelytochange(slightly),butthebconversion@is@nowmoreaccurate@thanitusedtobGe.4A@side-e ectisthatbVPL5K les5Sgenerated5TbyXfontinstcannowbGeuseddirectlyasabaseforotherbfonts+(it+usedtobGenecessarytoconvert+themtobinaryformatandbacktobgetUUthemetricsright).Xbfinstmsc.stycnowbcontainsabnewcommandwhichgeneratesaPostscriptbencoGdingUU(.enc) lefromanETX le.qThesyntaxofthiscommandisx\etxtoenc{hetx le[i}{henc lei}bUsuallykyoukdon'tneedtousethiscommand,qsincetheroutineswhichgen-beratemap leswillcallitwhentheencoGdingusedina\reencodefontisn'tbknown.XbTheUUnewcommandx\installfontas{hfontظi}{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsize[i}badds an entryforhfontظiwiththegivenNFSSparameterstothecorrespGond-bingUUFD le.XbThe\set...,aS\reset...,aRand\unset...0commandsnowbGehavesasonebwould4)expGecteven4(whentheyoGccurbetween4(\installfonts4)and\end-binstallfonts|theassignmentstheymakearenolongersub8jecttothebgroupingaroundthemetricsofindividualfonts.@@AssignmentsmadebythesebcommandswhentheyoGccurinMTXandETX lesar}'e howeverstillsub8jectbtoUUthisgrouping,sothatbGehavesUUasusual.XbThere'aretwo'control owcommands'\forand\foreachwhichrepGeatedlybexecuteagivensequenceofcommands|justlikeanormalprogrammingblanguage8for7loGop.oWith\fortheloGopvqariableisanintegerthatisincre-bmentedHordecrementedIbyanamountthatisspGeci edIinthebeginningofbthe!loGop._With"\foreachtheloop"vqariableisastringwhichassumesallthebvqaluesUUgiveninacomma-separatedlist.XbThe}command}\offcommandturnsacommand`o ', i.e.,makesitgobblebitsKargumentsanddoLnothing.jThecommand\oncommandturnsacom-bmandbackon,i.e.,restorestheoriginalde nitionofacommandthathadbbGeenturnedo .cT*urningacommando oronwhenit isalreadyo oronbrespGectivelyUUhasnoe ect.10 soXbIfyoubGeginaniteminthe le-listargument(#2)of\installfontor b\installrawfontwiththecommand\metrics, thenthatitem(everythingbup4till4thenextcommathatisnotinsideagroup)willbGeinterpretedasex-bplicitkmetriccommandslthatareexecutedafterthepreviousfontwasloadedbandUUbGeforethenextis.qThusyoucandoe.g.x\installfont{...}{a,\metrics\unsetint{xheight},b,...bifWyouXwantfontatoXbGeloadedbeforeXfontb,butwanttouseXthexheight bvqalue9of8fontb,andyou8don'twant8tobGotherwritinganMTX lethatbsimplyUUcontainsthecommand\unsetint{xheight}.XbThereC'ExX3UwasthatofligaturesandkernswithwordIbGoundaries.^1 8fontinsthashadaninterfaceformakingsuchligaturesandkerns,IbutٲithasbGeencompletelyredesignedinٱv1.9andtheoldinterface(settingtheIintegerboundarychar)isnolongerrecognizedbyfontinst.OFileswhichusetheoldIinterfaceUUcanstillbGeprocessedwithcfntinst.sty,though.XBeforeconsideringthenewcommands,itissuitabletode netheconceptsIofpropGerglyphandpseudoglyph.-Aکpr}'operglyph0hasbeensetusingoneoftheIcommandsB\setrawglyph,}\setscaledrawglyph,\setglyph,and\resetglyph.IAPpseudoglyphcisbanynameusedinthecontextofaglyphnamewhichdoGesnotIdenoteapropGerglyph.aIfapseudoglyphg-notwassetusingthe\setnotglyphIcommand,thenG \ifisglyph{g-not}\thenG!willevqaluatetotrue,butsomethingIcanWbGeWapseudoglyphevenifan\ifisglyphtestevqaluatestofalse.TheinterestingIpGointaboutpseudoglyphswhenconsideringwordbGoundarieshowever,*isthataIpseudoglyphUUcanhaveUUligaturesandkerns.XKernsandligaturesattheleftwordbGoundary(beginningofword)arespeci edIusing^5thecommands\setleftboundaryand\endsetleftboundary,lwhichareIsyntacticallyidenticalto\setslotand\endsetslotrespGectively*.BDOneimportantIdi erencevishowevervthattheargumentto\setslotmustbGeaproperglyph,whileIX-ffr J= "5-:Aacmr61L|{Ycmr8FJorpurpprimarily=whenmakingavirtual'ExXsystemanddetermineeverypieceIof information neededtomakethecorrectmap lefragments,P8butyou cantellIitzroughlyhowyourinstallationloGoks,vwrong.-+Should>wtheavqailableoptionsforcon guringtheproGcessturnouttoIbGeinadequateforyourneeds,WthenpleasewritetothefontinstmailinglistabGoutIthis|thereisprobablyawaytoimprovethesystemsothatyourneedscanbGeImet.XNowwhatdoGesonehavetodotousethismap lefragmentwriter,ͮthen?9AFirstIyou&needto'tellfontinsttorecordtheinformationthemap lefragmentwriterIneeds.qY*ouUUdothisbygivingthecommandIX-ffr J= "5-:2LܼNotXingeneralanenÎtiremap le,hencetheword,#fcmti8fragment.16Zsob\recordtransforms{whatever.tex}Iat^the]bGeginningoftherun.Herewhatever.texisthenameofa lethatwill IbGeYccreated,ZgsoyoucanYdusesomeothernameifyoulike.}AfterthatyouYddoalltheIcallsto\transformfont,L\installfont,\installrawfont,\latinfamily,etc.IyouUUneedtomakethefontsyouwant.qWhenyou'redone,yougivethecommandb\endrecordtransformsIand_end_therun(say\bye).The lewhatever.texwillnowcontain_theinform-IationUUabGoutwhichfontswereusedandwhatneedstobGedonewiththem.XThesecondstepis toactuallyrunthemap lefragmentwriter.-ObservethatitIis@LloGcatedin@Mthe lefinstmsc.sty,Dnotfontinst.sty!jThecommandsyouneedIto[=give[>itcanbGesofewthatyoucantypGetheminatTU>'ExX's*prompt,\butifyouIarewritingacommand lethenitshouldtypicallyhavethefollowingstructureI(commentsUUnotnecessary*,ofcourse):2dh\input?finstmsc.sty/i%UUInputcommandde nitionshhgener}'alsettings!i/i%UUSeebGelowh\adddriver{hdrivername[i}{houtput lei}/i%UUOpGenoutput leh\input?whatever.tex/i%UUW*ritetooutput leh\donedrivers/i%UUCloseoutput le(s),tidyuph\bye/i%UUQuitIThe\adddrivercommandgivestheorder\writemap leentriesforthehdriverIname[i8rDVI8kdriver8stothe lehoutputyT le[i."h&TheplanisthatitshouldbGepossibleItoxuseythenameofjustabGoutanyma8jordriver(dvips,Exdvi,pdftex,^3OzTeX,Ietc.)o hereandgetsuitablemap leentriesforthatdriverasoutput,butforItheԒmomentonlythedvipsanddvipdfm^4QdriversaresuppGorted.~Y*oumayalsoIusedebugforhdrivername[i;Itheentriesinthe leforthat\DVIdriver"simplyIcontainalltheavqailableinformationabGouteachfont(henceitshouldcomehandyIfor5debugging6coGdewritingentriesforrealdrivers)inaformatthatshouldbGeeasyItobinterpretbforahuman. ItcouldbGetherightchoicebifyou'rebgoingtowritetheImapUU lemanually*.XThe8 lewhatever.texintheabGove8examplecontainsthecommands(\makemapentryIcommands)*that*actuallycauseentriestobGewrittentotheoutput le.ItalsoIcontains6a6numbGerof\storemapdata6commands|thesedescribehow6somegivenIfontwasmade.ȤIfsomemetric leyouhaveusedcontains\setrawglyphcom-ImandsAthatwerenotautomaticallygeneratedbyfontinst,ythentheremightnotbGeIanL\storemapdataforthenMfonttheyrefertoinwhatever.tex,tsoyouwillhavetoIincludesuchacommandyourselfsomewhere.GMThiscanforexamplebGedoneintheIhgener}'alsettings!iUpartoftheabGoveUexample le.Thesyntaxofthe\storemapdataIcommandUUisdescribGedinSubsection19.1.XAnotherclassofthingsthatwilltypicallyappGearinthehgener}'al4settings!ipartIabGoveiscommandsthatwillinformtheroutinesactuallywritingoutputabGoutIX-ffr J= "5-:3Lܼp "5-:4LܼWhosesupp'ExXsystem,3abGoutthesetoffontsyouareusingonthisrun,3orabGout IsomethingԾelsethatmightbGeuseful.FSomesuchcommandsareofageneralnatureIanda ectwhatassumptionsfontinstwillmakeincertainconditionswhennoIspGeci cUUinformationisavqailable.qF*orthemomenttherecommandsare:I\AssumeMetafontӲAssume{Lall{MfontswithPL{metricsarebitmapsgeneratedbybMetafont,UUandthereforemakenoentriesforthem.I\AssumeAMSBSYYֲAssumeallfontswithPLmetricshavetheirTU>'ExXnamesinallbuppGercaseaspostscriptnames|justliketheComputerMoGdernfontsinthebAMS/BlueUUSky/Y&Ydistribution.I\AssumeBaKoMa?ٲAssumeE4allE5fontswithPLDmetricshaveE5theirTU>'ExXnamesinallblower case aspGostscriptnames|justliketheComputerMoGdernfontsinthebBaKoMaUUdistribution.IOtherwise?pthedefaultaction?qoftheroutinefor ndingoutthepGostscriptnameofIaa fontsimplyistoaobservethatithasn'tgotaclueabGoutawhattherightvqalueisIwhenthemetricsweretakenfromaPLx le,andthereforeitwrites`??????'JfforItheUUpGostscriptname.I\AssumeLWFN߲AssumepGostscriptfontsforwhichnothingelsehasbGeenspeci edbareTstoredTin leswhicharenamedaccordingtotheMacOS$[schemeforLWFNs.IOtherwise Wthedefaultactionis VtousethenameoftheAFM (orPLfrom WwhichItheVemetricswasoriginallytaken,֨andaddthe lesuxstoredinthestringIPSfontsuffix.The+_default+^vqalueofthisstringis.pfa,`butitcanbGechangedIusingUU\resetstr.XIfwneitherwthedefaultnortheLWFNwschemeproGducecorrectresultsthenyouImayusethemorespGeci c\specifypsfontcommand,.whichdescribGesexactly.ߤN cmtt9\specifypsfontIwhich le(or les,ifany)agivenfontisstoredin.F*orsyntaxandexamplesofIusage,QseeSubsubsection19.2.2.A(IconsiderthesemanticsofthiscommandtostillIbGeunderdevelopment,butinordertoknowhowtodevelopitfurtherIneedtoIknowUUinwhichcasesitisinsucient.)XFinally*,thereisthe\declarepsencodingcommandwhichisusedtolinkETXI lesQtopGostscriptencodings.pIfnopostscriptencodinghasbeenlinkedtoagivenIETXM leNencoGding,Z9anduseY?this leforallreencoGdingcommands.}Again,Z9seeSubsub-Isectioni"19.2.2fori!syntaxandexamplesofusage.-The8rencoGdingispredeclared,IandURitUSdoGesn'tmatterifanencoGdingisundeclaredifyouneverURuseittoreencoGdeIfonts,Xbut%thereis$pGotentiallya$problemwithnothavingdeclaredencoGdingsyouIhave9installed8anduseforreencoGding,asyoumay9then ndyourselfhaving9twoI leswithidenticalnamesthatde neencoGdingsthatdonothavethesamenameI(asUUfaraspGostscriptisconcerned).6I3.5gOnverbatim,typ`ewriter,andmonowidthfontsuTITheΌverbatim,typGewriter,andmonowidth΋conceptsarecommonsourcesofcon-Ifusion'forthosewhousefontinstto(installfontswith(L5ffA)@TU>'ExX;^5TinparticularthereIaremanymisconceptionsabGouttherelationbetweenthem.nuTheocialview(ofIfffr J= "5-:5LܼMyselfXnotexcepted. /LH18%Ơso㎍rdOcmtt:xThe?quickbrownfoxjumpsoverthelazydog. Ocmvtt:x/ ՙ cmvtt10ThequicUkbrownfoxjumpsoverthelazydog.qǍqFigureUU1:qTwotypGewriterfontsIwhichjnotjmuchhasactuallybGeenjbroughtforward)isthatjtheseconceptsare IreallyUUabGoutthreequitedi erentthings.XAͣfontisamonowidth%(monospaced, xed-pitch)fontifallglyphsinithaveIexactlyBthesamewidth.LSomefontformatsmakespGecialprovisionsforsuchfonts;Ithe"mostnotableexampleistheAFM"format,,[whereasingleCharWidthkeywordIspGeci esthewidthforallglyphsinthefont.N8fontinstrespondstothisbyincludingItheUUcommandb\setint{monowidth}{1}IintheMTX legeneratedfromanAFM,butthatiseverythingthatishard-wired Iintoętheprogram.AThatafontismonowidthishoweverĘsomethingthatoneshouldItake@noteofwhen@installingitforTU>'ExX,Dasitmeansmanyofthe@glyphsinithaveIsuch astrangeappGearancethattheyare(prettymuch)useless.`ITheendashisforIexample.usuallyonlyhalfaslongas.thehyphenandthelettersinligatureglyphsIareonlyhalfaswideasnormalletters./ManyoftheETXandMTX lesthatcomeIwith fontinst containspGecialcommandstoavoid makinguseofsuchdegenerateIglyphs.XThatafontisatyp}'ewriterfontreallyonlymeansthatithasatypGewriterishIloGoklKaboutit.ThetwolJmostfamiliartypGewriterfontsareprobablyComputerIMoGdernoTypewriter(cmtt)andCourier.Bothofthesefontsaremonowidth,v2butIthere isno absoluteruleabGoutthis.SOneofthestandardTU>'ExXfontsisforexampleIComputerMoGdernV*ariable-widthTypewriter(cmvtt),cwhichisnotamonowidthIfont,UUasFigure1shows.XThe verbatimconcepthas verylittletodowithfonts atall;$VinL5ffA͉TU>'ExXitiscon-IsideredtobGeapropGertyoftheenvironment(verbatim,macrocode,etc.)MsratherIthan"a"propGertyofthefont.Theconnectionthereiswithfontsisthattheen-IcoGding$of#thefontmust$containvisible$ASCIGI (asde nedinAppGendixC ofTheITKß'E-Xb}'ook=[6])ѰasѯasubsetforthetexttobGerenderedcorrectly*.ThecmttfamilyIisR[theonlyoneamongsttheR\originalComputerMoGdernfontswhichmeetsthisIcriteriumandthatistheprimarygroundsfortheideathatthesethreeconceptsIshould<.bGeconnected.&QT*odaythatreasonisatbestaveryweak<-one,uasallT1-IencoGdedUUfontsalsomeetthecriteriumofcontainingvisibleASCIGIasasubset.XA=circumstance=which=hasprobablyaddedtotheconfusionisthatOT1isusuallyIclaimeddtodbGeanencoding.!InrealitythedComputerModernfontsthatdaredeclaredIin:oL5ffA͉TU>'ExX:nasbGeing]OT1displayasmanyas ve:ndi erentencoGdings,sas:nshowninIT*able{j2.Sincemost{kmonowidthfontsare{konlyusedforsettingverbatimtext,Ithere]is]somecoGdeinot1.etxwhichautomaticallychoGosesaTEX?TYPEWRITERITEXTencoGding4forthe5fontwhenthemonowidthintegerisset.0dTheonlyreasonIforUUthisistheguessthatthisiswhattheuserwanted.6I3.6gTuningaccentp`ositions|anapplicationofloopsuTITheaccentplacementsmadebyDlatin.mtxcertainlyaren'tpGerfectforallfonts,IandRtheonlySwayRto ndoutwheretheyshouldbGeputisthroughtryingintext196jso㎍^rd TEX?TEXTcTEX?TEXTWITHOUT ރyF-LIGATURES7cPTEX?TYPEWRITERTEXTfOnon-italicdzcmb10 zcmbx5{G12zcmbxsl10zcmdunh10zcmff10zcmfib8zcmr6{G17zcmsl8{G12zcmss8{G17zcmssbx10zcmssdc10zcmssi8{G17zcmssq8zcmssqi8zcmvtt10dcmcsc8{G10 cmr5dT?cmsltt10 T?cmtcsc10T?cmtt8{G12xOitalicdycmbxti10 ycmfi10ycmti7{G12ycmu10dV?cmitt10qǍIT*able2:\OT1-encoGded"ComputerModernfonts,hcollectedaccordingtotheactual IfontUUencoGdingItheYaccentedYlettersyouYgetforacoupleofvqaluesforthepGositionparameterand IdecidingwhichoneworksbGest.Sincetotryoneparametervqalueyouneedto(i)Iedit@\itintoanMTX@W le,D(ii)runfontinst,(iii)runVPtoVF,@](iv)runTU>'ExXonsomeItesttext, and(v)printthattext,tryingoneparametervqaluecantakeannoyinglyImuchtime.vRepGeatingthesameproceduretentimestotesttenvqaluesisnotIsomethingonedoGeswithoutbeingbored(unlessonescriptsit,yofcourse),butitIisNpGossibletotryNtenparametervqaluesinasinglevirtualfont,OandwithoutdoingIveryUUmuchtyping.XSayyou'renottoGohappywithhowlatin.mtxpGositionstheaccentintheIohungarumlautUUglyph:b\setglyph{ohungarumlaut}q\topaccent{o}{hungarumlaut}{500}b\endsetglyphIThe#500isthehorizontalpGosition(inthousandths#ofthewidthoftheo)thattheIcenterofhungarumlautintheglyphconstructedwillhave,sothatisthepGositionIparameter)vqaluethatyou*want)tochange.;cCreateanMTX lecontainingthecoGdeb\for(pos){250}{750}{50}q\setglyph{ohungarumlaut\strint{pos}}\topaccent{o}{hungarumlaut}{\int{pos}}q\endsetglyphq\setleftrightkerning{ohungarumlaut\strint{pos}}20Gso{ohungarumlaut}{1000} b\endfor(pos)IThis8willsetelevenglyphsohungarumlaut250,qohungarumlaut300,ohungarumlaut350,I...UX,ohungarumlaut750,eachbGeinganHungarianlyumlauted`o'(i.e.,an`}o')butIallohavingnthatumlautinslightlydi erentopGositions.+InordertoputtheminaIfont,MZyouK[alsoneedtomakeanencoGdingKZthatcontainsthem.ntThereforecreateanIETXUU lewhichcontainsthecoGdeb\relax\encodingb\nextslot{"C0}b\for(pos){250}{750}{50}q\setslot{ohungarumlaut\strint{pos}}q\endsetslotb\endfor(pos)b\endencodingITheUUcommandforinstallingthisexpGerimentfontwouldbGesomethinglikeb\installfont{hsomename[i}{hthenormallistofmetrics!i,hthenewqMTXi}{ot1,hthenewETXi}{OT1}...IThe;reasonfor:includingot1inthethirdargumentabGoveis:thatyou'llneedIlettersdotherthan`}o'againstwhichyoucandcomparetheexpGerimentalglyphs.uItIwouldnothavebGeenpossibletouset1insteadofot1(eventhoughthathasmoreIHungarianVletters)VsincethatwouldsetallslotsinthefontandleavenoneVforItheseUUexpGerimentalohungarumlauts.XItUUisevenpGossibletousealoopformakingthetesttext.qTheL5ffA͉TU>'ExXmacrosI\newcount\slotcount I\newcommand\testtext[3]{%Rs,\slotcount=#1\relaxRs,\begin{description}%Rs,\loop\item[\the\slotcount]#3%Rs,\ifnum#2>\slotcount\advance\slotcount1\repeatRs,\end{description}%I}I\DeclareTextCompositeCommand{\H}{OT1}{o}{\char\slotcount}IwillUUletyouwriteb\testtext{h rstظi}{hlasti}{htexti}Itogetthetexthtextظi޲typGesetonceforeachslotfromh rstظitohlastiinclusive,)with I\H{o}Ͽrangingthroughtheglyphsinthisintervqal.ThusϿinthiscase\testtextI{"C0}{"CA}{Erd\H{o}s}UUwouldbGeatrivialtest.6I3.7gFontinstallationcommandsuTIThe \installfont,\installrawfont,and\installfontascommandshave theIrespGectiveUUsyntaxesb\installfont{hfont-name[i}{hmetrics!i}{hetx-listظi}q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}21QNsob\installrawfont{hfont-name[i}{hmetrics!i}{hetx-listظi} q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}b\installfontas{hfont-name[i}q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}IThe*hfont-name[iargumentandthelast veargumentsarecommontoalltheseIcommands.N6TheIz rstargumentisthenameI{ofaTU>'ExXfonttoinstall.N6ThelastI veKargumentsareKtheNFSSKattributesunderwhichthatfontKwillbGedeclaredIto^L5ffA͉TU>'ExX|encoGding,.family*,series,/shape,and^size.ItisworthobservingthatIencoGdingˏnamesːareusuallyinuppGercase,whereasthefamily*,series,andˏshapGeIareIusuallyinlowerIcase.[Thesizeargumentiseitherashorthand(declaredusingI\declaresize)foraparticularfontsize(orrangeoffontsizes),oranexplicitlistL\declaresizeIof2fontsizes2orrangesofsizes,jGwhichiscopieddirectlyto2thefontdeclaration.ITheemostdcommoncaseistoletthesizeargumentbGeempty*,asthatisdeclaredIasUUashorthandfor\anysize".XThe=\installfontascommanddoGesnotitselfcreate'ExXfont.DThefontImetricscanbGeineitherofthefourformatsMTX,PL,AFM,andVPL,whichareIconsidered in thatorder.IfthemetricsarenotoriginallyinMTX formatthenItheywillbGeconvertedtothisformat(anew lewillbecreated)beforetheyareIused.qTheencoGdingde nitionsmustbeinETXformat.pThe lesactuallyreadIwillhaveasux.mtx,K.pl,.afm,K.vpl,or.etxappGendedtothenamegiven,IdepGendingUUonwhichformatisexpected.XWithineachelementofthecomma-separatedlist,˘theactual lenameisfol-Ilowed6tby6szeroormoremo}'di erw~clause[s.g|A6lhmodi erclause[i6tconsistsof6sakeywor}'dIfollowedbysomenumbGer(usuallyone)ofar}'guments,separatedbyspaces.8TheIwhole`DthingloGoksa`Clotlikethehrulesp}'eci cations!i`Dofe.g.the\vrulecommand,IbutUUherethespacesaremandatory*.qThecurrentlyde nedhmo}'di erclause[isareIJffIffMJffMffoptionJffffJffffhstring}iAvqailableformetricandencoGding les.eThisaddshstring}itobthe1listofoptionsforthis le,8whichmaya ectwhatcoGdethe leexecutes.bThe( le(canthentest,]usingthe\ifoptioncommand,]whetheraspGeci cbstringUUisoneoftheoptionsitwasgiven.IJffIffMJffMffscaledJffffJffffhfactoriܲAvqailable for metric les.XCausestherawscaleintegervqariablebto\bGe\settothehfactori(anintegerexpression)whilethe leisbGeingread.bThisgscalesglyphsandkernsthataregaddedtotheglyphbasebythehfactori.IJffIffMJffMffsuffixJffffJffffhsux4Di1SAvqailable!for metric les.*Causeshsux4DitobGeappended!tobeveryglyphnameappGearinginaglyphorkernthat leaddstotheglyphbbase.qThusUU\suffix?/2"e ectivelychangesa22\ sox\setrawglyph{a}...btoUUax\setrawglyph{a/2}...IJffIffMJffMffencodingJffffJffffhetx-name[iAvqailableiformetric les,mandforcesfontinsttoonlycon- bsiderthePLandVPLformatsforthisfont.8Asthese leformatsdonotcon-btainBYglyphBXnames,yXanETXB leisusedtoassignglyphnamestotheslotsinthebfont.PThisETX leisusuallyselectedaccordingtotheCODINGSCHEMEٲprop-berty'cof'dthePL'XorVPL(usingthecorrespGondances'dsetupviathe\declare-bencodingcommand),&rbutthatinformationisnotalwaysasonewouldwantbit~(thereareevenfonts~forwhich~itisquitewrong).CAnencodingclausebbypasses:thisautomaticmechanism,@,sothatthe: lehetx-name[i.etxisusedbinstead.IJffIffMJffMffmtxasetx|fNThisUUisavqailablefor lesinthehetx-listظi.qTheactualfunctionofaxh le-name[iUUmtxasetxbitem!}*IAlsoUUnotetheexplicitL5ffA͉TU>'ExXsizespGeci cationfortherange\10ptandup". XTheXsecondYexamplemakesuseofasuffixclausetocombinethelettersfromIoneUUfontwiththedigitsfromanother.*Rs,\installfont{msbrj8t}{msbr8r,msbrc8rsuffix/2,latin}{digit2,t1} [X{T1}{msbj}{m}{n}{}IInthiscase,theglyphbasecontainstheglyphsofMonotypGeSabon(SabonMT)|IundernamessuchasAԲfor`A',afor`a',dandoneforaliningdigitone|aswellIastheglyphsofMonotypGeSabonSmallCapsandOldstyleFigures(SabGonMT-ISCOSF)|underunamesusuchasA/2for`A',a/2for`a',~andone/2forahangingIdigitUUone.qThedigit2.etx lesimplymakesthede nition*Rs,\setcommand\digit#1{#1/2}Iwhichcausest1.etxtoputzero/2inslot48(digitzero),Cone/2inslot49etc.,IinsteadUofasitnormallywouldzeroinslot48,Loneinslot49andsoon.TheInet e ect isthatthedigitsinthegeneratedmsbrj8tisfrommsbrc8r(SabGonMT-ISCOSF)UUbuteverythingelseisfrommsbr8r(SabGonMT).XThethirdexamplemakesuseofanmtxasetxclausetoinstall(withitsdefaultIencoGding)^a^fontforwhich^creatinganappropriateETX^ leseemsnotworththeItrouble.*Rs,\installrawfont{psyr}{psyr,\metrics `\setint{xheight}{\height{alpha}}Rs,}{txtfdmns,psyrmtxasetx}{U}{psy}{m}{n}{}IThe`e ect_ofthesecondpsyristhatpsyr.mtxisread(incasetherewasno Ipsyr.mtxthenitiscreatedfrom(hopGefully)psyr.afm)andtheinformationinIit~will}formtheglyphbase. ABecauseofthe\metricscontrolsequence,therestIof9wthatitemwillbGeinterpretedasexplicitmetriccommandsmodifyingtheglyphIbase,VandUthusVthe\setintcommandcanprovideavqalueforthexheightvqariableI(there{doGesn'tzseemtobGesuchavqalueintheAFM).OncetheglyphbaseisIcompleted,Jthe\installrawfontstartswritingthe lepsyr.pl(that'sfortheI rstpsyr).\TTheencoGdingofthatfontwill,!becauseofthepsyr?mtxasetx,!betheIsameWasXthatusedinpsyr.mtx.?Finally*,thetxtfdmnsisfortxtfdmns.etx,anIETX lewhichsetsfontdimens1{16asforaT1encoGdedfontbutdoGesnotsetanyIslots.kSincepsyr.mtxreinterpretedasanETX lesetsslotsbutnofontdimens,ItheseUUcomplementeachothernicely*.I3.!", cmsy101mComingattractionsuTIW*e^6 òhaveQsomePnewfeatureswhichwePhaveprettyPmuchsortedPouthowPtheyIshouldwork~andhowthey~shouldbGeimplemented, butdidn'twant~tointroGduceIBffr J= "5-:6LܼWJell,XpwbGox>vhasbeen>vsetforaglyphthentheabGovecommands>wwillinsteadrepGortIthecorrespGondingcoordinateoftheglyph'sTU>'ExXbGox(i.e.\height{hglyphci},I\neg{\depth{hglyphci}},UU0,and\width{hglyphi}respGectively).XTheUUcommandforsettingthebGoundingboxofaglyphwillbeb\setglyphbb{hglyphci}{hleftظi}{hb}'ottomi}{hrighti}{htopi}!čI4aLNotesffonusingfontinstIThecprimarycpurpGoseof*fontinstistosimplifytheinstallationofPostScriptorIT*rueTypGeUUtextfonts.6I4.1gGeneralnotesILeavingasideunusualvqariantswhichrequirespGecialattentionsuchasalternateorIswashfonts, 'almostallstandardfontfamiliescanbGeinstalledautomaticallyusingIthe \latinfamilycommand,;optionallymakinguseofthecorrespGondingexpertIfontsUUaswell.XDepGending9onwhatkindoffontsyouhave9andwanttoinstall,>\latinfamilyIsuppGortsUUthreedi erentmodesofoperation:X\latinfamily{hfamci}{}ݲinstallsanormalfontfamilyusing8a-encoGdedstand-Iardzfonts(reencoGdedtoz8r)andnothingelse.(Itinstalls.fd lesfortheL5ffA͉TU>'ExXfam-Iilies8rhfamci,zOT1/hfami,T1/hfamiandTS1/hfami,yandgeneratesvirtualfontsforIthe!7t,+8t,+and8c!encoGdings.`]Thisis!theonlyoptionavqailableformosttypGefacesIwhichUUdonothaveanexpGertset.25soX\latinfamily{hfamcix}{}PݲinstallsanexpGertizedPfontfamilyusing8a-encoded Istandardwfonts(reencoGdedvto8r)and8x-encodedvexpertfonts.RItvinstalls.fd lesIfortheL5ffA͉TU>'ExXfamilies,OT1/hfamcix,T1/hfamixandTS1/hfamcix,andgeneratesIvirtualUUfontsforthe9t,9eand9cencoGdings.X\latinfamily{hfamcij}{}LinstallsLanexpGertizedfontfamilywitholdstyledigitsIusing8a-encoGdedstandardfonts(reencodedto8r)and8x-encodedexpertfonts.IItinstalls.fd lesfortheL5ffA͉TU>'ExXfamilies,OT1/hfamcij,T1/hfamijandTS1/hfamcij,Iandgeneratesvirtualfontsforthe9o,P9dand9cencoGdings.>SinceTS1hasoldstyleIdigitsbydefault,the9c-encoGdedfontsshouldbGethesameasinthepreviousIcase.?Finally*,#\latinfamily{hfamci9}{}isalsosuppGortedasanalternativetoI\latinfamily{hfamcij}{}UUforbackwardsUUcompatibility*.XThewholeinstallationproGcessreliesoncertainassumptionsaboutthesymbolIcomplementqDofAdobGe'sexpertfonts.ŔInparticular,x@itisassumedthattheexpertIfontsR;includeR:theoldstyledigitsR:andacompletesetofsmallcapsglyphs,RwhichisIanassumptionthat'snotalwayssatis edforexpGertfontsbyothersuppliers.7IfItheseZglyphsarenotincludedinYtheexpGertfonts,theonlywayZtogetthemisfromIrealUUsmallcapsfonts,butthisrequiressomereshuingofglyphnames.XT*o^suppGort^suchunusualcases,+this^source lecontainssome^optionalcoGdeIembGeddedSbetweenSholdstyle$*iS...h=oldstyle$*i,nwhichSextendsSthebGehaviourofI\latinfamilykforkexpGertizedencodingskwitholdstyledigits.InsteadofrelyingIonlyjonthejglyphsofthe8r-reencoGdedrawfontandthej8x-encoGdedexpertfont,IthisaversionalsoaloGoksforcorrespondingOsFaorSC&OsFfontsandausesthedefaultIdigitsUUfromthosefontsasoldstyledigits.6I4.2gNotesonsmallcapsandoldstylefontsuTIThe\latinfamilycommandissuppGosedtodoareasonablygoGodjobofinstallingIaPcompleteQfontfamilybasedonallthe.afm lesitcan nd.IfitdoGesn't ndIaAsuitablefontshapGe,itissometimesBpossibletofakeitbydefaultsubstitutions.IHowever,inHthecaseofsmallcapsIfonts,thereareseveralIoptionswhichmayIrequireUUsomeclari cation.XF*orthema8jorityoftypGefaces,!afontfamilytypicallyconsistsonlyofofromanIanditalicfontsinseveralweights.\jSincerealsmallcapsfontsarenotincluded,ItheyhhavetobGefakedfromtheromanfonts,,whichisimplementedbysettingI\encoding_shape&to`c',"sothatdi erent'encoGding lesOT1c.etxorT1c.etxareIused.oSincepthesep lescallforglyphnamessuchas`Asmall'whicharenotfoundIintheromanfont,*thedefaultsubstitutionsinlatin.mtxareeventuallyusedtoIapproximateXfakesmallcapsXglyphsbyscalingandletterspacing.{TheoutcomeisIjustUUanapproximationforasmallcapsfont,butitisbGetterthannothing.XF*orasmallnumbGeroftypGefaces,PthestandardfontsarecomplementedbyanIexpGertGcollection,JwhichusuallyincludesFtwosetsoffonts.AmFirst,JforeachstandardIfont}thereis}acorrespGondingexpertfont}containing}additionalglyphssuchasextraIligaturesL1andsymbGols,NoldstyleL1digitsandL2smallcapitalletters.nF*orAdobeexpertIfonts>thissetis=sucienttobuildacompletesmallcaps=fontfromthestandardIandexpGertglyphs.F*urthermore,etheexpertcollectionusuallyalsocontainsaInumbGerׂofrealsmallׁcapsfontcorrespondingtotheromanׁfontsandsomeOsFIfontscorrespGondingtotheitalicfonts.1Ifthesefontsareavqailable,thereareseveralIoptionsUUhowtoinstallsmallcapsfonts.XBydefault,}\latinfamily rsttriesto ndarealsmallcapsfont.IfitisIfound,6it/'is/&installedusingthedefaultencoGding lesandmetric les,6justlikeany26soIroman)orslanted)font.cAHowever,2yonce)\latinfamilyhastakenthischoice,2yitwill Ifailto ndacorrespGondingexpertfont,BsinceitisactuallyloGokingforanexpGertIfontGOinGNsmallcapsshapGewhichdoGesn'texist.G(Infact,itwouldbGeanerrortoIsubstitutevanexpGertfontinnormalshape.)s+TheoutcomewillbeavirtualfontIbasedonlyonglyphsfromtherealsmallcapsrawfont,whichimpliesendingupIwitholdstyledigitsasthedefaultsetofdigits,butallowstoinheritthekerningIinformationUUoftherealsmallcapsfont.XAnotherDoptionDforanexpGertizedinstallationwouldbGetomaketherealsmallIcapsfontsunavqailable,F=sothat\latinfamilywillattempttofakeasmallcapsIfontusingglyphsfromthestandardandexpGertfontsinnormalshapGe.6ThismeansIthat[\encoding_shapeZisagainsetto`c',ZsothatOT1c.etxandT1c.etxareused,Ibutpthistimeaglyphnamed`Asmall'doGesexistqintheexpertfontandwillbeusedIinsteadoffakedonegeneratedbyscaling.TheoutcomewillbGeafontbasedonInormalandsmallcapsglyphsfromthestandardandexpGertfonts.TheoldstyleIdigits9willonlybGeused9iftheyarecalledfor,sotherwisethedefaultdigitsfromItheYRromanYSfontareused.}TheonlydrawbackofYRthisapproachYRisthatthekerningIaroundsmallcapitalletterswillbGebasedonthescaledkernamountsofthecapitalIlettersUUratherthanonthekernpairsfromtherealsmallcapsfont.XFinally*,ExX-style leheaderofautomat-xicallygeneratedENCI les. Noaddress eldiswrittenunlessthexaddress>string>isset.-QuotesarenotautomaticallyinsertedaroundxtheUUaddressstring.bSetTb9yETXUU les.bUsedTb9yܲTheUUETX-to-ENCconverter.Iafm-namew(string)bDescriptionܻNameUUofsourcefont.qInternalUUvqariable.bSetTb9y\from...commands.bUsedTb9yܲThe9\transformfont,\installfont,\installrawfont,andx\reglyphfontUUcommands.27soIascenderw(integerUUdenotinglength) bDescriptionܻTheUUascenderheightofthefont.bSetTb9yMTX les.TheIAFM-to-MTXconverterHusuallywrites\setintxcommandsUUforthisinteger.bUsedTb9yܲSomeUUMTXandETX les.Iauthorm(string)bDescriptionܻAuthorname(s)putinBiDb32TU>ExX-style leheaderofautomatic-xallygeneratedENC les.:SSeethemacro\ref_to_sourcefileformorexdetails.bSetTb9yETXUU les.bUsedTb9yܲTheETX-to-ENCconverter.]UWhennotset,$Bthevqalue"See?filexhetxname[i"UUisusedinstead.I\autoinstallfamilyʲ(command)bDescriptionܻCommandUUcalledbythefontinstallationcommands,as3\autoinstallfamily{henc}'oding}i}{hfamilyi}xwhen'ExXUUparameter\baselineskip.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ibigopspacing1?ٲ(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter9|s.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ibigopspacing2?ٲ(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter10x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ibigopspacing3?ٲ(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter11x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ibigopspacing4?ٲ(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter12x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ibigopspacing5?ٲ(integerUUdenotinglength)28!sobDescriptionܻMathUUformulaparameter13x. bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Icapheight}?(integerUUdenotinglength)bDescriptionܻTheUUheightofthefont'sfullcapitals.bSetTb9yMTX les.TheIAFM-to-MTXconverterHusuallywrites\setintxcommandsUUforthisvqariable.bUsedTb9yܲSomeUUMTXandETX les.Icmapnamew(string)bDescriptionܻTheUUnamegiventotheCMapgeneratedfromanETX le.bSetTb9yETXUU les.bUsedTb9yܲTheUETX-to-CMapconverter.WhenUnotset,thevqaluefontinst-xhcmap lename[iUUisusedinstead.Icodingschemeܲ(string)bDescriptionܻTheUUcoGdingschemename.bSetTb9yETXUU les.bUsedTb9yܲThe(V)PL*writer. mWhennotset,hthevqalueUNKNOWN*isusedxinstead.IdefaultrulethicknessIJ(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter8|s.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idelim1m(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter20x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idelim2m(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter21x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idenom1m(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter11x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idenom2m(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter12x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idescender}?(integerUUdenotinglength)bDescriptionܻTheUUdepthoflowerUUcaseletterswithdescenders.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Idescender_neg?ٲ(integerUUdenotinglength)bDescriptionܻThe6verticalpGositionof5thedescenderlineofthefont,'ExX.Idesignunits߲(dimensionUUdenotingarealnumbGer)bDescriptionܻTheWdesignWsizeofafontexpressedinthedesignunitusedinxaUU(V)PL le.bSetTb9yMTX les.iThe(V)PL-to-MTXconverterusuallywrites\setdimxcommandsUUforthisvqariable.bUsedTb9yܲNothing.Ifthisvqariableisset,buttoanyvalueotherthan1pt q,xthenUUsomemetricsaremostlikelywrong.Idigitwidth(integerUUdenotinglength)bDescriptionܻTheUUmedianwidthofthedigitsinthefont.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Iemailh?(string)bDescriptionܻEmail~PaddressputinBiDb32TU>ExX-style~Q leheaderofautomaticallyxgeneratedaENC les.Seethebmacro\ref_to_sourcefileformorexdetails.bSetTb9yETXUU les.bUsedTb9yܲTheETX-to-ENCconverter.]UWhennotset,$Bthevqalue"See?filexhetxname[i"UUisusedinstead.Iencodingnameܲ(string)bDescriptionܻThenamebywhichtheencoGdinginquestionismadeknownxtoUUaPostscriptinterpreter.bSetTb9yETXUU les.bUsedTb9yܲTheETX-to-ENCconverter.]UWhennotset,$Bthevqaluefontinst-xautoenc-hetxname[iUUisusedinstead.Ietx-namew(string)bDescriptionܻNameUUofETX le.qInternalvqariablein\transformfont.bSetTb9yTheUU\reencodefontcommand.bUsedTb9yܲTheUU\mtxtomtxcommand.Iextraspace(integerUUdenotinglength)bDescriptionܻTheSnaturalTwidthofextrainterwordglueSattheendofaxsentence.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Ifontdimen(n)y(integer)30ӠsobDescriptionܻF*amilyofsemi-internalvqariablesthatstorethevaluestouse xfor]font]dimensionn.Itispreferredthatthenewer\setfontdimenxinterfaceUUisusedforsettingthesevqalues.bSetTb9yETXUU les.bUsedTb9yܲTheUU(V)PLwriter.I\iftokeep}?(macro)bDescriptionܻ\iftokeep#1\then, whereˀ#1willbGeahnumb}'eri,bGehavesxlike.|aswitchanddecideswhetheraglyphiskeptornotwhilereglyph-xing.bSetTb9yExplicitUUcommands.qDefaultsto\iftokeep#1\thenP7!\ifnum-1<#1bUsedTb9yܲTheUU\reglyphfontcommand.Iinterword}?(integerUUdenotinglength) bDescriptionܻTheUUnaturalwidthofinterwordUUglue(spaces).bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Iitalicslant߲(integerUUdenotingfactor)bDescriptionܻTheUUitalicslantofafont.bSetTb9yMTX lesgeneratedfromAFMor(V)PL les.t'MTX lesgener-xatedby\transformfont.^LoGcallyintheAFM-to-MTXconverterforxpGossibleUUusein\uprightitalcorror\slanteditalcorr.bUsedTb9yܲMTXT lesf(latin.mtxandthelike).IETX les(fordeterminingxfontdimen(1)).Ikillweight(integer)bDescriptionܻW*eightUUforglyphsthatarekilled.bSetTb9yExplicitUUcommands.qDefaultsto10ifnotset.bUsedTb9yܲThe%\killglyph$command; indirectlythe\reglyphfontcom-xmand.Iletterspacing?ٲ(integerUUdenotinglength)bDescriptionܻExtraUUwidthaddedtoallglyphsofafont.bSetTb9yETXUUorMTX les.bUsedTb9yܲTheUU(V)PLwriter.qDefaultsto0ifnotset.Imaxdepthw(integerUUdenotinglength)bDescriptionܻTheUUmaximaldepthoverUUallslotsinthefont.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Imaxdepth_negܲ(integerUUdenotinglength)bDescriptionܻTheUUnegativeofthemaximaldepthofaglyphinthefont.bSetTb9yMTX les.TheIAFM-to-MTXconverterHusuallywrites\setintxcommandsUUforthisvqariable.bUsedTb9yܲSomeUUETXandMTX les.Imaxheight}?(integerUUdenotinglength)bDescriptionܻTheUUmaximalheightofaglyphinthefont.bSetTb9yMTX les.TheIAFM-to-MTXconverterHusuallywrites\setintxcommandsUUforthisvqariable.31 㞠sobUsedTb9yܲSomeUUETXandMTX les.Iminimumkern߲(integerUUdenotinglength) bDescriptionܻKernsVwhosesizeWinabsolutevqalueislessthanorequaltothisxvqariableUUareignored.bSetTb9yfontinstUUcommand lesorMTX les.bUsedTb9yܲThe#AFM-to-MTXconverter$andthe(V)PL legenerator.9 WhenxnotUUset,thevqalue0isusedinstead.Imonowidth}?( agUUinteger)bDescriptionܻSetUUifthisfontismonowidth,unsetotherwise.bSetTb9yMTX les.0bTheAFM-to-MTXconverterwritesa\setintcom-xmandUUforthisvqariableiftheAFMspGeci esIsFixedPitch?true.bUsedTb9yܲSomeUUMTX les(latin.mtxandthelike),ETX les.Inum1b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter8|s.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Inum2b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter9|s.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Inum3b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter10x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Iquadb(integerUUdenotinglength)bDescriptionܻThe(quad(widthofthefont,1normallyapproximately(equaltoxtheUUfontsizeand/orthewidthofan`M'.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.IPSfontsuffixܲ(string)bDescriptionܻSuxaddedtofontnamestoformnameof letodownloadxtoUUincludefont.bSetTb9yExplicitUUcommandsin nstmsccommand les.qDefaultsto`.pfa'.bUsedTb9yܲTheUUmap lefragmentswriter.Irawscalew(integerUUdenotingfactor)bDescriptionܻScalingUUfactorappliedtorawglyphs.bSetTb9yThec\installfontcommand(scaledclausesinargument#2).xUnsetUUformetric leslistedwithoutascaledclause.bUsedTb9yܲThec\setrawglyph,g,\setnotglyph,g+\setscaledrawglyph,\set-xscalednotglyph,UU\setkern,and\resetkerncommands.Irenameweightܲ(integer)bDescriptionܻW*eightUUforglyphsthatarerenamed.bSetTb9yExplicitUUcommands.qDefaultsto1ifnotset.bUsedTb9yܲThe7\renameglyph7Բcommand;Aindirectlythe\reglyphfontcom-xmand.Irequireglyphs?ٲ( agUUinteger)32!﹠sobDescriptionܻSetifwarningsaretobGegeneratedforglyphslistedinETX x lesUUbutnotpresentintheglyphbase.bSetTb9yExplicitUUcommands.qBydefaultsnotset.bUsedTb9yܲTheUU(V)PL legenerator.Irightboundary?ٲ(string)bDescriptionܻThe8name8ofaglyphwiththepropGertythatkernsontheleftxmayUUbGeintendedasrightwordbGoundarykerns.bSetTb9yMTXv3 les.yThev;(V)PL-to-MTXv2convertercanwrite\setstrcom-xmandsUUforthisvqariable.bUsedTb9yܲSomeUUMTX les.Ishrinkword(integerUUdenotinglength)bDescriptionܻTheUU( nite)shrinkcompGonentofinterwordglue.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Islant-scale߲(integerUUdenotingfactor)bDescriptionܻF*actorUUtoslantby*.qInternalvqariablein\transformfont.bSetTb9yTheUU\slantfont,\xscalefont,and\scalefontcommands.bUsedTb9yܲTheUU\mtxtomtxcommand.I\SlantAmountܲ(macroUUexpandingtoanintegerexpression)bDescriptionܻSlantUUfactorusedforfakingobliqueshapGe.bSetTb9yExplicitUUcommands.qDefaultsto167.bUsedTb9yܲTheUU\latinfamilycommand.I\slanteditalcorrв(macroUUexpandingtoanintegerexpression)bDescriptionܻTheQintegerexpressionusedtoQcalculateaguessfortheitalicxcorrectionUUofglyphsinafontwithpGositiveslant.qIthasthesyntax3\slanteditalcorr{hwidthci}{hleftظi}{hrighti}{hb}'ottomi}{htopi}xwherehwidthciistheglyph'sadvqancewidth,}andtheremainingar- xgumentsarecoGordinatesofsidesoftheglyph'sboundingbox._ThexitalicslantUUintegerprovidestheitalicslantofthefont.bSetTb9yExplicitUUcommandsinfontinstcommand les.qDefaultstomaxpf0;right'g8width>g:bUsedTb9yܲTheUUAFM-to-MTXconverter.Istretchword߲(integerUUdenotinglength) bDescriptionܻTheUU( nite)stretchcompGonentofinterwordglue.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isub1b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter16x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isub2b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter17x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isubdropr(integerUUdenotinglength)33"ؠsobDescriptionܻMathUUformulaparameter19x. bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isup1b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter13x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isup2b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter14x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isup3b(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter15x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.Isupdropr(integerUUdenotinglength)bDescriptionܻMathUUformulaparameter18x.bSetTb9yMTXUU les.bUsedTb9yܲSomeUUETXandMTX les.ITFMfileprefix?ٲ(string)bDescriptionܻPre xUU(typicallyapath)addedtonamesofTFM les.bSetTb9yExplicitcommandsin nstmsccommand les.ɁBydefaultnotset,xwhichUUisequivqalenttobGeingempty*.bUsedTb9yܲTheUUPLtoTF\map lefragmentswriter".Iunderlinethicknessʲ(integerUUdenotinglength)bDescriptionܻTheUUrecommendedthicknessofanunderliningrule.bSetTb9yMTX les.TheIAFM-to-MTXconverterHusuallywrites\setintxcommandsUUforthisvqariable.bUsedTb9yܲSomeUUMTX les(latin.mtxandthelike).I\uprightitalcorrв(macroUUexpandingtoanintegerexpression)bDescriptionܻTheQintegerexpressionusedtoQcalculateaguessfortheitalicxcorrectionofglyphsinafontwithnon-pGositiveslant.SIthasthesyntax3\uprightitalcorr{hwidthci}{hleftظi}{hrighti}{hb}'ottomi}{htopi}xwherehwidthciistheglyph'sadvqancewidth,}andtheremainingar- xgumentsarecoGordinatesofsidesoftheglyph'sboundingbox._ThexitalicslantUUintegerprovidestheitalicslantofthefont.bSetTb9yExplicitUUcommandsinfontinstcommand les.qDefaultsto0.bUsedTb9yܲTheUUAFM-to-MTXconverter.Iversionr(string)bDescriptionܻV*ersion#numbGerputinBiDb32TU>ExX-style leheaderofautomatic-xallygeneratedENC les.:SSeethemacro\ref_to_sourcefileformorexdetails.bSetTb9yETXUU les.bUsedTb9yܲTheETX-to-ENCconverter.]UWhennotset,$Bthevqalue"See?filexhetxname[i"UUisusedinstead.Iverticalstemܲ(integerUUdenotinglength)34#sobDescriptionܻThedominantwidthofverticalstems(usuallythewidthof xstemsUUoflowerUUcaseletters).bSetTb9yMTX les.8TheAFM-to-MTXconverterwrites\setintcommandsxforUUthisvqariableiftheAFM lespGeci esStdVW.bUsedTb9yܲCurrentlyUUnothing.͍IwarningspecialsӲ(switch)bDescriptionܻControlswhether\glyphwarningcommandswillgeneratexVPLUUSPECIALs.qDefaultsto`true'.bSetTb9yExplicit8commands(\warningspecialstrueand\warningspecialsfalse).bUsedTb9yܲTheUU(V)PL legenerator.Ix-scaler(integerUUdenotingfactor)bDescriptionܻHorizontal0scalingfactor.4XInternalvqariablein\transform-xfont.bSetTb9yTheUU\xscalefontand\scalefontcommands.bUsedTb9yܲTheUU\mtxtomtxcommand.Ixheightr(integerUUdenotinglength)bDescriptionܻTheUUx-heightofthefont.bSetTb9yMTX les._TheAFM-to-MTXand(V)PL-to-MTXconvertersusu-xallyUUwrite\setintcommandsforthisvqariable.bUsedTb9yܲMTXUU les,andETX les(fordeterminingxfontdimen(5)).Iy-scaler(integerUUdenotingfactor)bDescriptionܻV*erticalUUscalingfactor.qInternalvqariablein\transformfont.bSetTb9yTheUU\yscalefontand\scalefontcommands.bUsedTb9yܲTheUU\mtxtomtxcommand.Ihglyphci-spacing(integerUUdenotinglength)bDescriptionܻGlyph-spGeci cCoverrideCforletterspacing;extrawidthaddedxtoUUtheglyphhglyphciaspartoftheproGcessofwritingaVPL le.bSetTb9yETXUUorMTX les.bUsedTb9yܲTheUU(V)PLwriter.qDefaultsto0ifnotset.IBesides3;these,: the3:\latinfamilycommandprovidesawholerangeofparametersIthatareoftenusedsomewhatlikevqariables.Thatsub8jectdoGeshoweverdeserveItoUUbGetreatedseparately*. 宍I5aLfontdopcffpackageoverviewIThepurpGoseofthefontdocpackqageistosupporttypesettingof.etxand.mtx lesIintended>forusewith=fontinst.Thetypicalformatof=these lesloGokssomethingIlikeUUthis:34b\relaxb\documentclass[twocolumn]{article}b\usepackage{fontdoc}b\begin{document}bL雍Q2t}\cmti7ATKß'E-Xc}'ommandsb\encodingUUor\metricsb5U cmssi10fontinstc}'ommandsb\endencodingUUor\endmetrics35$<sobL雍QATKß'E-Xc}'ommands b\end{document}IT*osmakeitswork,fontdoGchastosde nealltheuser-levelsfontinstcommandsinItermsdofetypGesettinginstructions.Thisgoaliscurrentlyonlypartiallyachieved,IbutthepGercentageofDZfontinstcommandscoveredby$!fontdoGcisstillfairlylarge,IsoitisourimpressionthatproblemswithcommandsnotcoveredoGccuronlyveryIrarely*.6I5.1gSomefontdo]ccommandsthatfontinstdo`esn'tknowuTISomeofthecommandsde nedbyfontdoGcarenotde nedbyfontinstbGecauseItheyhavenomeaninginthatcontext.M,Mostofthesecommandsarelower-levelIcommands/that0areusedintheimplementationsofcommandscommontofontinstIand jfontdoGc,+buta kfewaresimplyonlymeanttobGeusedinthepartsofETX ]andIMTXUU lesthatfontinstneverexecutes.XWithv1.916themechanismforformattingintegerexpressionschangeddra-Imatically*.TZThe newbasecommandtouseis\TypesetIntegerExpression,whichZ\TypesetIntegerExpressionItakeswaswitsonlyargumentwtheintegerexpressionwtoformatandtypGesetsit.I\TypesetIntegerExpression2expGectsto1beusedinmathmode1only*.^Asim-Iilar{command{is\TypesetStringExpression,rwhichtakes{astringexpressionas̙\TypesetStringExpressionIargument,formats,and5typGesetsit.jh\TypesetStringExpressioncanbeusedinIanyUUmoGde.XThe\macroparametercommandis(inintegerandstringexpressions)un- 6\macroparameterIderstoGod&asa\placeholderforamacro¶meter".ThisisprimarilyusefulinIcommentsUUthatdescribGeauser-de nedmacro;seeltcmds.mtxforexamples.36%!CsoIFileffaI6߆Tq cmtt12fibasics.dtxꨍb\Can'tgTsaygUI'veevergUbGeentoogUfondofbGeginnings,kmyself.MessyIѲlittle bthings.lGive&me&agoGodending&anytime.mY*ouknowwhere&youar}'ebwithUUanending."x|UUfromThekindlyones'vbyxNeilGaimanUUetal.!čI6aLTheff rstandthelastI6.1gVersionnumb`ersuTIW*en7startn8bymakingsomedefaultcatcoGdeassignments,qincasewearen8usinginiTU>'ExX.Ls1S8 cmsy9h9ow cmss9pkgKi Ls2S\catcode`\{=1Ls3S\catcode`\}=2Ls4S\catcode`\#=6Ls5S\catcode`\^=7Ls6Sh75" cmmi9=pkgKif\fontinstversionIIfwearerunningunderiniTU>'ExXwecannotputtheidenti cationstu anyearlier IthanEthis.iNotethat\fontinstversionDisnotjustusedforindenti cationbutIalsoUUin\needsfontinstversion.Ls7Shpkg/j8doAc"i\def\fontinstversion{1.933}XIfwearerunningunderiniTU>'ExXorplain,HwehavetogetaroundtheL5ffA͉TU>'ExX-IspGeci cUU\ProvidesPackagestu .Ls8ShpkgKi Ls9S\ifx\ProvidesPackage\undefinedI10ap\def\NeedsTeXFormat#1{}I11ap\def\ProvidesPackage#1[#2]{}I12S\fiI13Sh=pkgKiXNowUUwecanidentifyourselvesasusual.I14ShdoAc Ni\NeedsTeXFormat{LaTeX2e}[1995/06/01]I15ShdoAc Ni\ProvidesPackage{fontdoc}I16Shpkg Mi\ProvidesPackage{fontinst}I17Shpkg/j8doAc"i[2007/01/23v\fontinstversion\spaceI18ShdoAc Ni s,fontinstdocumentationpackage]I19Shpkg Mi s,fontinstinstallationpackage]XWhilewe'reatversionnumbGersanyway*,"wemightaswellde nethecommand Iformdtestingthem.NotehowevermdthatthemoGdulenameismcnothpkg1ɸiasabove,shbutIhpkg2=i.qCoGdeUUinthelattermoduleendsupattheveryendofrfontinst.sty!Ʋ\needsfontinstversionITheUUmacro:b\needsfontinstversion{hnumb}'eri}IFile:qfibasics.dtx@37&)soIchecksUUtheversionnumbGer.I20Shpkg2,ei I21S\def\needsfontinstversion#1{{I22ap\a_dimen=#1ptI23ap\b_dimen=\fontinstversion~pt\x_relaxI24ap\ifnum\a_dimen>\b_dimenI25p2\immediate\write16{}I26p2\immediate\write16{Warning:~This~file~needs~fontinst~version~#1.}I27p2\immediate\write16{Warning:~You~are~using~version~I28~0\fontinstversion.}I29p2\immediate\write16{Warning:~This~may~cause~errors.}I30p2\immediate\write16{}I31ap\fiI32S}}I33Sh=pkg2,eiXInUUfontdoGc,\needsfontinstversionisprintedoutasacomment. ČI34ShdoAceLiI35S\newcommand*\needsfontinstversion[1]{%I36ap\ifFD@spec@I37p2\comment{AutomaticprocessingofthisdocumentasadatafileI38p2requires\textsf{fontinst}v\,#1orhigher.}%I39ap\elseI40p2\Bheading{Needsfontinstv\thinspace#1}%I41ap\fiI42S}I43Sh=doAceLiI6.2gSp`ecialcatcodesandcon guration leuTIfontinstm]usessomeunusual,_butconvenient,_settingsof\catcode.@and_are Imadeletters,=~ismadeaspace,andspaceandnewlineareignored.DSBeforesettingIthose:Zhowever,swe:Ysavethecurrentvqaluesof:YthecatcoGdes,ssothattheycanbGeIrestoredUUattheendofrfontinst.sty.My\normalcc \fontinstccIThe9\fontinstcccommandchangesthecatcoGdes8ofcertaincharacterstowhatisIusedinthefontinstsourceandthe\normalcccommandchangesthemback;ItheirIuseisanalogoustothatofthe\makeatletterand\makeatothercommandsinIL5ffA͉TU>'ExX.XIf,5forsomereason,4youuseother\normal"catcoGdesthanfontinstdoesbyIdefault,syoummaym~havetorede nem\fontinstccand\normalcc.CTheeasiestwayItoUUdothisisprobablytousethe\add_tomacro.I44ShpkgKi I45S\def\a_macro#1{\catcode\number`#1=\the\catcode`#1}I46S\edef\normalcc{%I47ap\a_macro{\}\a_macro{\^^M}\a_macro{\@}\a_macro{\_}\a_macro{\~}I48S}ITheabGovede nitionmakesthe\normalccmacroendwithaspace.UThisisde- IlibGerate;UUthespaceisusedtoterminatethelastnumberUUinthemacro.I49S\def\fontinstcc{%I50ap\catcode`\=9%I51ap\catcode`\^^M=9%IFile:qfibasics.dtx@38'4tsoI52ap\catcode`\@=11% I53ap\catcode`\_=11%I54ap\catcode`\~=10I55S}I56S\fontinstccI57Sh=pkgKiXW*eUUinputthefontinst.rc le,ifitexists. XUV,U06/1998:Whatisthisfontinst.rcT legoGodUfor?=ItturnsoutthatyouIcanlusekittodo\def\raw_encoding{8y}ifyouprefertoinstallyourfontsltheIotherUUway*.I58Shpkg2,ei I59Sh0o cmr9!misch iI60S<'ExXweinputsomede nitionstakenfromplain.I75ShpkgKiI76S\ifx\@ne\undefined_commandI77ap\inputfontinst.ini\relaxI78S\fiI79Sh=pkgKiI80Shini ѽiI81S\chardef\active=13I82I83S\chardef\@ne=1I84S\chardef\tw@=2I85S\chardef\thr@@=3I86S\chardef\sixt@@n=16I87S\chardef\@cclv=255I88S\mathchardef\@cclvi=256I89S\mathchardef\@m=1000I90S\mathchardef\@M=10000I91S\mathchardef\@MM=20000IFile:qfibasics.dtx@39(?ޠsoI92 I93S\count10=22%allocates\countregisters23,24,...I94S\count11=9%allocates\dimenregisters10,11,...I95S\count15=9%allocates\toksregisters10,11,...I96S\count16=-1%allocatesinputstreams0,1,...I97S\count17=-1%allocatesoutputstreams0,1,...I98S\count20=255%allocatesinsertions254,253,...I99S\countdef\insc@unt=20%theinsertioncounterE100S\countdef\allocationnumber=21%themostrecentallocationE101S\countdef\m@ne=22\m@ne=-1%ahandyconstantE102S\def\wlog{\immediate\write\m@ne}%writeonlogfile(only)E103E104S\countdef\count@=255E105S\dimendef\dimen@=0E106E107S\outer\def\newcount{\alloc@0\count\countdef\insc@unt}E108S\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}E109S\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi}E110S\outer\def\newread{\alloc@6\read\chardef\sixt@@n}E111S\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n}E112E113S\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@neE114]\ch@ck#1#4#2%makesurethere'sstillroomE115]\allocationnumber=\count1#1%E116]\global#3#5=\allocationnumberE117]\wlog{\string#5=\string#2\the\allocationnumber}}E118S\outer\def\newinsert#1{\global\advance\insc@untby\m@neE119]\ch@ck0\insc@unt\countE120]\ch@ck1\insc@unt\dimenE121]\ch@ck2\insc@unt\skipE122]\ch@ck4\insc@unt\boxE123]\allocationnumber=\insc@untE124]\global\chardef#1=\allocationnumberE125]\wlog{\string#1=\string\insert\the\allocationnumber}}E126S\def\ch@ck#1#2#3{\ifnum\count1#1<#2%E127]\else\errmessage{No~room~for~a~new~#3}\fi}E128E129S\outer\def\newif#1{\count@\escapechar\escapechar\m@neE130]\expandafter\expandafter\expandafterE131ap\edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%E132]\expandafter\expandafter\expandafterE133ap\edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%E134]\@if#1{false}\escapechar\count@}%theconditionstartsoutfalseE135S\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}E136S{\uccode`1=`i\uccode`2=`f\uppercase{\gdef\if@12{}}}%`if'isrequiredE137E138S\newdimen\p@\p@=1pt%thissavesmacrospaceandtimeE139S\newdimen\z@\z@=0pt%canbeusedbothfor0ptand0E140E141S\def\space{~}E142S\let\bgroup={E143S\let\egroup=}E144E145S\def\loop#1\repeat{\def\body{#1}\iterate}IFile:qfibasics.dtx@40)HNsoE146S\def\iterate{\body\let\next\iterate\else\let\next\relax\fi\next} E147S\let\repeat=\fi%thismakes\loop...\if...\repeatskippableE148E149S\def\supereject{\par\penalty-\@MM}E150S\outer\def\bye{\par\vfill\supereject\end}E151Sh=ini ѽiIThetwolastcommandsabGovealsoneedtobGede nedifwe'rerunningunder IL5ffA͉TU>'ExX.InthatcaseweneedtobGecarefulwith\byehowever,asno\if...~canIskipovercoGdethatexplicitlycontainsthatcontrolsequence,ifithasbGeende nedIasUUabGove.E152ShpkgKi E153S\ifx\bye\undefined_commandE154ap\def\supereject{\par\penalty-\@MM}E155ap\outer\expandafter\def\csnamebye\endcsnameE156kJ{\par\vfill\supereject\@@end}E157S\fiE158Sh=pkgKiE159Shini8&everyjob8iE160S\everyjob{%E161ap\if_file_exists{fontinst.rc}\thenE162p2\primitiveinput~fontinst.rcE163ap\elseE164p2\immediate\write16{No~file~fontinst.rc.}E165ap\fiE166S}E167Sh=ini8&everyjob8i!čI7aLBasicffde nitionsI7.1gDeclaringv@ariablesandconstantsuTISomeUUtempGoraryvqariables:3P\a_count 3P\b_count 3P\c_count 3P\d_count$ 3P\e_count0 3P\f_count< 3P\g_countE168ShpkgKiE169S\newcount\a_countE170S\newcount\b_countE171S\newcount\c_countE172S\newcount\d_countE173S\newcount\e_countE174S\newcount\f_countE175S\newcount\g_count3P\a_dimen 3P\b_dimen 3P\c_dimen 3P\d_dimenE176S\newdimen\a_dimenE177S\newdimen\b_dimenE178S\newdimen\c_dimenE179S\newdimen\d_dimen\a_toks \b_toks \c_toksE180S\newtoks\a_toksIFile:qfibasics.dtx@41*TsoE181S\newtoks\b_toks E182S\newtoks\c_toksq_a_switc9h ^E183S\newif\if_a_XBesidesthesetempGoraryvqariablesthathavetobGedeclared,thefamilyofݼ\h:j cmti9letteri_macro Icontrolsequenceswithnamesoftheform\hletteri_macro,U suchas\a_macro,I\b_macro,UUetc.,shouldbGeusedas\macrovqalued"temporaryvqariables.qy\out_fileISomeUUglobalvqariables: ]E184S\newwrite\out_fileb\one_thousand b\five_hundred L\one_hundred f\max_mathchardef$ b\two_thousand0 \half_pointISomeUUconstants:E185S\mathchardef\one_thousand=1000 E186S\mathchardef\five_hundred=500E187S\mathchardef\one_hundred=100E188S\mathchardef\max_mathchardef="7FFFE189S\mathchardef\two_thousand=2000E190S\newdimen\half_pointX\half_point=0.5ptE191Sh=pkgKi2I7.2gTrigonometrymacrosuTIBeforeGv1.930,ׄtheH letrig.styusedtobGeinputatthispGoint.Thatisnow IinlinedUUintothefontinstsourcepropGerinstead.I7.3gfontdo]c-sp`eci cdeclarationsIAsofv1.917,>gfontdoGchasoptions,sowebGetterstartwithdeclarationandpro- IcessingUUofthese.q(specificationoptionFD@spec@switc9hIThe/specificationoptiontellsfontdoGcthat.thedocumentisanencodingspe-Ici cation)\rather)[thanaproGduction le|thischangessomeminordetailsintheItypGesetting.qTheUUstateofthisoptionisrecordedintheFD@spec@switch. ^E192ShdoAceLi E193S\newif\ifFD@spec@E194S\FD@spec@falseE195S\DeclareOption{specification}{\FD@spec@true}hypertexoption ;*pdftexoption b\FD@codepointIThe?hypertexandpdftexoptionstell>fontdoGctoincludeHyperTU>'ExX\specials IandNbpGdfTU>'ExXannotations,̤ineverycodepointnumbGersetusing\UnicodeorI\textunicode,forJlinkstoglyphIimagesontheUnicoGdeconsortiumwebsite.ITheUUURLstouseareasfollows:AvbT:o4access5thereferenceglyphforan9yUnicoAdec9haracter,lyou4canusethe bnewTURLsyn9taxlikethis:xhttp://www.unicode.org/cgi-bin/refglyph?hXXkai-hnnnn9ibwherehXXkaiisthepAoin9tsizeandhnnnn9iisthehexadecimalcoAdepoin9t.bPlease+note*ho9weverthat*only24issuppAortedasasizeparameteratthisbtime.h(W:eX;arereservingthepAossibilit9yofprovidingX'ExXisprettystraightforward. ۍE196S\DeclareOption{hypertex}{E197ap\providecommand*\FD@codepoint[1]{%E198p2\uppercase{\edef\@tempa{#1}}%E199p2\special{html:%E202p2}%E203p2\texttt{U+\@tempa}%E204p2\special{html:}%E205ap}%E206S}ۍIThepGdfTU>'ExXimplementationiseasytoGo,Bbutthereisonecomplication: BThekey IprimitiveJisJcalled\pdfannotlinkinv0.13,Jbut\pdfstartlinkinv0.14.RyMyIthanksUUgoGestoHanTh^GeThanh,whohelpGedmesortthatout. ܍E207S\DeclareOption{pdftex}{ E208ap\providecommand*\FD@codepoint[1]{%E209p2\mbox{%E210~0\uppercase{\edef\@tempa{#1}}%E211~0\ifx\pdfstartlink\@undefinedE212]\pdfannotlinkE213~0\elseE214]\pdfstartlinkE215~0\fiattr{/Border[000]}user{%E216]/Subtype/Link/A<<%E217x/S/URI/URI(%E218:http://www.unicode.org/cgi-bin/refglyph?24-\@tempaE219x)%E220]>>}%E221~0\textcolor{blue}{\texttt{U+\@tempa}}%E222~0\pdfendlinkE223p2}%E224ap}%E225ap\AtEndOfPackage{\RequirePackage[pdftex]{color}}%E226S}IItwouldbGequitepossibletomaketheselinksaccordingtosomeotherstandard I(e.g.EL5ffA͉TU>'ExXtoHTML)EinsteadEbyincludingasuitablede nitionof\FD@codepointIinyourfontdoc.cfg le. IٵcouldincludecoGdeforthosestandardsaswellifIsomeoneUUsendsittome.XIdecidedagainstusingcommandsinthehypGerreforhyper,qpackqagesforthisIasq^thesepackqagesdosomuchmorethatIqdon'twant.IfsomedayapackqageIprovidingTabasicTinterfaceformakinghypGerlinksisincludedTinrequiredL5ffA͉TU>'ExXIthenUUthisdecisionshouldcertainlybGereconsidered.$XInputUUaloGcalcon guration le,ifitexists. ۍE227S\InputIfFileExists{fontdoc.cfg}{% E228ap\typeout{*************************************^^J%E229]*Localconfigfilefontdoc.cfgused^^J%IFile:qfibasics.dtx@43,jbsoE230]*************************************}% E231S}{}XFinallyUUproGcesstheoptions.E232S\ProcessOptions\relaxXTheUamstextUpackqageisrequired,Vsincethe\textcommandisusedinformat- ItingUUsomeintegerexpressions.E233S\RequirePackage{amstext}3P\a@count3P\b@count3P\a@dimenIThreeUUprivqatevariables:E234S\newcount\a@count E235S\newcount\b@countE236S\newdimen\a@dimenXSomeUUusefulmacrosandconstrolstructures:E237S\def\x@cs#1#2{\expandafter#1\csname#2\endcsname}E238S\def\FD@swap@two#1#2{#2#1}y\Aheading y\BheadingI\AheadingUUand\BheadingareusedtotypGesetvqariousheadings.E239S\newcommand\Aheading[1]{%E240ap\par\pagebreak[1]\addvspace\medskipamountE241ap\noindent\textbf{#1}\vadjust{\penalty200}\parE242S}E243S\newcommand\Bheading[1]{\par\noindent\textbf{#1}}XSomeoformatingncommandsandamacrothatcomesinhandy*.GItusedtosay I\raggedrightatthispGointaswell,butthatfunctionalityhasbGeenmovedintoI\encodingUUand\metrics.E244S\raggedbottom E245S\ifdim1sp>\lineskiplimit\lineskiplimit=0.5pt\fiE246S\newcommand\plain{\texttt{plain}}y\plainint y\plaindiv y\plainneg y\plainmax$ y\plainminIfontdoGcFsavesawayEL5ffA͉TU>'ExX's\int,XB\div,XA\neg,\max,andE\minas\plainint, I\plaindiv,T\plainneg,T\plainmax,andTe\plainminTfrespGectively*,sincetheseTecon-ItrolUUsequencesaregoingtobGeusedforotherpurposes.E247S\let\plainint=\int E248S\let\plaindiv=\divE249S\let\plainneg=\negE250S\let\plainmax=\maxE251S\let\plainmin=\minL\TypesetList t\list@item@counterITheL\TypesetListcommandtypGesetsthehar}'g}isKinasequenceof\do{harg}i} ImacroswithseparatorsdepGendingonpositioninandlengthofthesequence.]ItIisIloGoselybasedonadescriptionofJasimilarcommandintheamsref;packqage,Ibutithasfewerfeatures,FandIdon'tknowifthereisanysimilaritybGetweentheIimplementations.XTheUUsyntaxisb\TypesetList{hleftظi}{honlysepi}{hnonlastsepi}{hlastsepi}{hrighti}q{hempty}i}{hwr}'api}{hlistظi}IFile:qfibasics.dtx@44-u٠soIhlistظi[is\theactuallistof\do{har}'g}i}s.Ifthatisemptythenhempty}iistypGeset. IOtherwiseJtheJtypGesettextbGeginswithhleftظi,L[endswithhrightظi,LZandcontainstheIformatted<formsofeveryhar}'g}iinthelist<of\do{harg}i}s.& TheformattinghereIconsistslofpassingthelhar}'g}iastheargumenttohwrapi,rwhichlistypicallyaone-Iargument macro.YBetweentwo\formattedhar}'g}is" willhonlysepi,0hnonlastsepi,/orIhlastsepibGeput, dependingonthenumbGerofhar}'g}isinthelistandthepGositioninIthelist.4IfthelisthaslengthtwothenhonlysepiwillbGeusedfortheonlyseparatorIneeded.EIfxthelistxhaslengthgreaterthantwoxthenhnonlastsepiwillbGeusedforIallUUseparatorsbutthelast,andhlastsepiwillbGeusedforthelast.XAll)of*theargumentsof\TypesetListmustsurvive)bGeingpassedthroughaI\def.E252S\newcount\list@item@counter E253S\newcommand\TypesetList[8]{%E254ap\begingroupE255p2\list@item@counter=\z@E256p2\def\do##1{\advance\list@item@counter\@ne}%E257p2#8%E258p2\ifcase\list@item@counter\orE259~0\def\do##1{#1#7{##1}}%E260p2\orE261~0\def\do##1{%E262]\advance\list@item@counter\@neE263]\ifnum\list@item@counter=\@ne#1\else#2\fiE264]#7{##1}%E265~0}%E266p2\elseE267~0\advance\list@item@counter\m@neE268~0\expandafter\def\expandafter\do\expandafter##\expandafter1%E269]\expandafter{\expandafter\ifnum\the\list@item@counterE270x=\list@item@counterE271x#4%E272]\else\ifnum\z@=\list@item@counterE273x#1%E274]\elseE275x#3%E276]\fi\fiE277]\advance\list@item@counter\@neE278]#7{##1}%E279~0}%E280p2\fiE281p2\ifnum\z@=\list@item@counterE282~0#6%E283p2\elseE284~0\list@item@counter=\z@E285~0#8%E286~0#5%E287p2\fiE288ap\endgroupE289S}E290Sh=doAceLiIFile:qfibasics.dtx@45.soI8aLTL32EdXffhackeryI8.1gUtiltiymacrosuT&`\x_cs 3P\x_relax !|\g_letE291ShpkgKi E292S\def\x_cs#1#2{\expandafter#1\csname#2\endcsname}E293S\let\x_relax=\relaxE294S\def\g_let{\global\let}E295Sh=pkgKi3P\x@relaxE296ShdoAc Ni\let\x@relax=\relax\empty_command \gobble_one \gobble_two b\gobble_three$ b\identity_one0 b\first_of_two< \second_of_twoH y\swap_twoT 6\first_of_threeE297ShpkgKiE298S\def\empty_command{}E299S\def\gobble_one#1{}E300S\def\gobble_two#1#2{}E301S\def\gobble_three#1#2#3{}E302S\def\identity_one#1{#1}E303S\def\first_of_two#1#2{#1}E304S\def\second_of_two#1#2{#2}E305S\def\swap_two#1#2{#2#1}E306S\def\first_of_three#1#2#3{#1}$\hash_char b\percent_char f\left_brace_char \right_brace_charE307S\bgroupE308ap\catcode`\[=1E309ap\catcode`\]=2E310ap\catcode`\#=12E311ap\catcode`\%=12E312ap\catcode`\{=12E313ap\catcode`\}=12E314ap\gdef\hash_char[#]E315ap\gdef\percent_char[%]E316ap\gdef\left_brace_char[{]E317ap\gdef\right_brace_char[}]E318S\egroup \first_charIReturnUUthe rstcharacterofastring.E319S\def\first_char#1#2={#1}\add_toIAppGendUUoneormoretokenstothereplacementtextofaparameterlessmacro.E320S\def\add_to#1#2{ E321ap\ifx#1\x_relaxE322p2\def#1{#2}E323ap\elseE324p2\expandafter\def\expandafter#1\expandafter{#1#2}E325ap\fiE326S}IFile:qfibasics.dtx@46/Hso3P\prep_toIPrepGend+one+ormoretokenstothereplacementtextofaparameterlessmacro. INotethatifmorethanonetokenisaddedthenthesecondparametermustcontainIan\expandafterbGetweeneverypairoftokensyouactuallymeantocontribute.IThusUUifyouwanttoprepGendabcto\next,youmustwritegˍb\prep_to\next{a\expandafter?b\expandafterc}gʍIAlsoUUnotethatthesecondargumentmustnotbGeempty*. 󍍑E327S\def\prep_to#1#2{ E328ap\ifx#1\x_relaxE329p2\expandafter\def\expandafter#1\expandafter{\expandafter#2}E330ap\elseE331p2\expandafter\def\expandafter#1\expandafter{\expandafter#2#1}E332ap\fiE333S}؍y\never_doITheUUcommand\do,protectedfromexpansion.卍E334S\def\never_do{\noexpand\do}E335Sh=pkgKirI8.2gTestingforTESXextensionsuTISome/tasks/canbGedonebetter/(andusuallywithsimplercoGde)ifonecanassume IthatXcertainWfeaturesinsomeTU>'ExXextensions,suchas"-TU>'ExX,isavqailable.Unfor-ItunatelyConeCcannotgenerallymakethisassumption,GbutitissometimespGossibleItorPproviderOtwoimplementationsofrOamacroandatruntimechoGosetherOonewhichIbGestutilizestheavqailablefeatures.Thissubsectionde nesmacrosformakingItheseUUtests.XThereʰisalsoacommand\needsTeXextensionʯwhichisusedlike\needs-Ifontinstversion,[but'4whichteststheTU>'ExXratherthantheversionofQfontinst.IThiss-oughttobGeofs.useforETXr lesthatdescribe16bitencodings,^7ܲasthecurrentIimplementationofthe(V)PLwriterinthiscaserequirestheunderlyingTU>'ExXtoIsuppGortUU16bitcharactercodes.XTheHInormalHJopGerationoftheextension-testingmacrosistosetthe_a_switchIto#trueiftherequestedextensionispresent,-andtoleavetheswitchasitwasifitIisn't"present.`Thisisso"thatonecaneasilytestforafeaturethathasbGeenaddedItoseveraldi erentextensionsofTU>'ExXsimplybydoingthetestsinsequence.FWThat,Ihowever,Hiswhatthetesting macrosdoiftheswitch_extensions_warning_isIsettofalse.#(WhenitissettotruetheyinsteadexpandtoashortpieceoftextIsuitable(for)inclusioninawarningmessageabGouttheabsenceofaneededfeature.I_extensions_warning_switc9hIThisswitchcontrolswhetherextension-testingmacrosshouldactuallydothetestI(false)UUorproGduceawarning(true). 򍍑E336ShpkgKi E337S\newif\if_extensions_warning_E338S\_extensions_warning_false&`\eTeXITheUU\eTeXcommandhasthesyntaxgˍb\eTeX{hversionnumb}'eri}IKffr J= "5-:7LܼAÎt!thetime ofwriting,,nosuch ETX lesexistthatIknoÎwof,,butfontinstshouldnothaÎve anÎyXproblemusingthem. /LHIFile:qfibasics.dtx@470soIwherethe׸hversionbnumb}'eriisthecompleteversionnumbGer(versionnumbGerplus Irevision)UUofthe"-TU>'ExXonewishestotestfor.XThe-coGde-belowis-gearedtowards-notlettingunnecessarycontrolsequencesIgetlhtokenized,,aslgtheywillthenalwayslhoGccupyalgpGositioninTU>'ExX'shashtable,Ibutbitcseemsonecannotgetaroundtestingwhether\eTeXversionisde ned,soIwestartwiththatandthendoa\catcodetricktopreventTU>'ExXfromseeingI\eTeXrevision.E339S\ifx\eTeXversion\undefined_command E340ap\catcode`\~=14%14=commentE341S\fiE342S\def\eTeX#1{E343ap\if_extensions_warning_E344p2\space/\spacee-TeX\spaceversion\space#1E345S~ s,\elseE346S~\ifdim\number\eTeXversion\eTeXrevision\p@<#1\p@\elseE347S~%̰\_a_trueE348S~\fiE349ap\fiE350S}E351S\catcode`\~=10E352Sh=pkgKiy\eTeXlogoITheUU\eTeXlogocommandprintsthe"-TU>'ExXlogo.E353ShdoAceLiE354S\def\eTeX#1{\do{\eTeXlogo\nolinebreak[3]v\,#1}}E355S\def\eTeXlogo{\ensuremath{\varepsilon}-\kern-.125em\TeX}E356Sh=doAceLi\pdfTeXITheUU\pdfTeXcommandhasthesyntaxb\pdfTeX{hversionnumb}'eri}{hrevisionci}IwhereSatheS`hversionnumb}'eriistheversionnumbGerSaasreturnedby\pdftexversion, Ii.e.,100`timeswhat`itwouldnormallybGeprintedas,andthehr}'evisionciistheIrevision{coGde{asreturnedby\pdftexrevision.)6T*otestforpGdfTU>'ExX0.13cornewer,IoneUUwouldsay\pdfTeX{13}{c}.XTheUUcoGdebelowusesthesame\catcodetrickasthatin\eTeX.E357ShpkgKi E358S\ifx\pdftexversion\undefined_commandE359ap\catcode`\~=14%14=commentE360S\fiE361Sh=pkgKiE362Shpkg/j8doAc' iE363S\def\pdfTeX#1#2{%E364Shpkg Mi,\if_extensions_warning_E365Shpkg MiY\space/\spacepdfTeX\spaceversion\spaceE366ShdoAc Ni,\do{pdf\TeX\nolinebreak[3]v\,%E367p2\ifnum#1<100\spaceE368~00.\ifnum#1<10\space0\fiE369p2\elseE370Shpkg Mi*O\expandafter\swap_two\expandafter.E371ShdoAc Ni*O\expandafter\FD@swap@two\expandafter.%E372p2\fiIFile:qfibasics.dtx@481soE373p2#1#2% E374ShdoAc Ni,}E375ShdoAc Ni}E376Sh=pkg/j8doAc' iE377ShpkgKiITheUUabGoveisnotideal,butitwilldofornow.E378S~ s,\elseE379S~\ifdim#1>\pdftexversion\elseE380S~%̰\ifnum\expandafter\expandafter\expandafter`E381S~Y"\expandafter\first_char\pdftexrevision='ExXis"-TU>'ExXverision1.2(ornewer)or@ݲOmegaversion1.0(or Inewer).qTheUUimpliedconjunctionbGetweenthetestsisalways`or'.E388S\def\needsTeXextension#1#2{ E389ap\_a_falseE390ap#1E391ap\if_a_\elseE392p2\_extensions_warning_trueE393p2\edef\a_macro{#1}E394p2\_extensions_warning_falseE395p2\fontinstwarningnoline{#2}{E396~0This~file~needs:\messagebreakE397~0\expandafter\second_of_two\a_macroE398~0\iffalseE399]\if_falseE400~0\fiE401~0\messagebreakE402~0You~are~not~using~any~of~them.~This~is~likely~to~cause~errorsE403p2}E404ap\fiE405S}E406Sh=pkgKiE407ShdoAceLiIFile:qfibasics.dtx@492soE408S\def\needsTeXextension#1#2{% E409ap\Bheading{NeedsE410p2\TypesetList{}{or}{,}{,or}{}{(unspecified)}{\@firstofone}{#1}}%E411S}E412Sh=doAceLi6I8.3gWritingtooutput lesuTIAsRofv1.901,S(thereRaretwoRdi erentoutputR lemoGdelsinfontinst.pOnehasbeen Ialong\forever"andisforwritingoutputto leswhichareonlyopGenforashortIpGeriod of time|everyfontinst lecommandthatopGensa leinthismoGdelmustIalsocloseit|anditcanonlybGeusedforone leatattime.БTheothermoGdelIo ers=BpGooledallocationof=Aoutput les|aslongasthereisanunusedTU>'ExXoutputIstreamrtoqopGen,youmayropGenaqnew le,anditdoGesnotmatterif lesarenotIclosedUUinthereveseorderofthatinwhichtheywereopGened.y\open_out$\close_outy\out_line$\out_lline$ \out_lllineITheseUUmacrosimplementtheclassicaloutput lecommands.E413ShpkgKi E414S\def\open_out#1{E415ap\immediate\openout\out_file=#1\xdef\out_filename{#1}}E416S\def\close_out#1{E417ap\immediate\write16{#1~written~on~\out_filename.}E418ap\immediate\closeout\out_file}E419S\def\out_line#1{\immediate\write\out_file{#1}}E420S\edef\out_lline#1{\noexpand\out_line{\space\space\space#1}}E421S\edef\out_llline#1{E422ap\noexpand\out_line{\space\space\space\space\space\space#1}E423S}XInaXtheaWnewmoGdel,Xthebasicwritingcommand\pout_linetakestwoaXargu-$\pout_line Iments:Uao leidenti erpcontrolsequenceandthetokensequenceptowrite._%ThusitsIcallUUloGokslikeb\pout_linehidenti eri{htextظi}IThehidenti eriisusuallyachardeftokenwhosenumbGertellswhichinputstream Iisused,butifTU>'ExXrunsoutofoutputstreamsthenitmightbGede nedasaIparameterless|macrowhichexpands}to\m@ne.vforstoring>uthenameoftheoutput leandforhandlingalloGcationofoutputIstreams.b\TeX_terminal\closed_streamf\out_filename-99f\out_filename--1IOutput streams16 andabGove alwayswritetoTU>'ExX's terminal,andanyoutput leIthatKgetsclosedKgetsitsidenti ersetto99sothatanyattemptstowritetoaIcloseds lescanbGeeasilyspGotted.(99isthecharactercoGdeforc.)OutputstreamI{1- isthe-!log le,5+andifanotheroutputstreamcannotbGeallocated- thenattemptsItoUUwritetotheoutput lewillbGeredirectedtothelog le.E424S\def\TeX_terminal{\string\TeX\spaceterminal} E425S\chardef\closed_stream=99E426S\x_cs\let{out_filename-99}=\TeX_terminalE427S\x_cs\def{out_filename--1}{\jobname.log}IFile:qfibasics.dtx@503jsof\allocate_stream !|\ch@ckE428S\def\allocate_stream{ E429ap\a_count=\m@neE430ap\b_count=\m@neE431ap\loop\ifnum\count17>\a_countIWhileUU\a_count'ExXprimitives\ifcsnameand\unlessprovideamuchvbGetterIimplementationX`thanwhatisX_pGossibleinnormalTU>'ExX.zThereforeitisdesirabletoIusethesecommandsasmuchaspGossible,ˋandbyintroGducingthesemacrosonecanIachieveUUthiswithouthavingdoublede nitionsformorethanthesetwomacros.XT*oavoidtroublewithmismatchedifsandtokenizingcontrolsequencesspGecialIfor"-TU>'ExX,~istempGorarilymadeacommentcharacter.I'mnotsure\ifcsnameIand\unlessweren'tavqailablein"-TU>'ExXversionsbGefore2.0,butthat'stheoldestIversionUUIhaveamanualfor.E495S\_a_false\eTeX{2.0} E496S\if_a_\else\catcode`\~=14\x_relax\fiITheλfollowinguseκof\ifisatrickκIΜlearntfromtheκimplementationofdoGcstrip.I\ifIwillHexpandanyamountHofmaterialuntilHithastwoHunexpandabletokensItocompare,henceonecanuseittoevqaluatearbitrarybGooleanexpressionsinaIsingleATU>'ExXconditional,EbyexpressingtheexpressionAassomethingwhichexpandsIin"^TU>'ExX'smouth"_tothevqalueoftheexpression(either0or1).InthiscasetheIexpressionUUis\thecontrolsequenceisde nedandthatde nitionisnot\relax".E497S~ s,\def\if_defined#1\then{ E498S~\ifE499S~%̰\ifcsname#1\endcsnameE500S~3r\expandafter\ifx\csname#1\endcsname\x_relaxIFile:qfibasics.dtx@536soE501S~B&40 E502S~3r\elseE503S~B&41E504S~3r\fiE505S~%̰\elseE506S~3r0E507S~%̰\fiE508S~%̰1E509S~ s,}E510S~ s,\def\if_undefined{\expandafter\unless\if_defined}E511S\catcode`\~=\if_a_14\else10\fi\x_relaxE512S~ s,\def\if_defined#1\then{ E513S~\expandafter\ifx\csname#1\endcsname\x_relaxE514S~%̰\expandafter\if_falseE515S~\elseE516S~%̰\expandafter\if_trueE517S~\fiE518S~ s,}E519S~ s,\def\if_undefined#1\then{E520S~\expandafter\ifx\csname#1\endcsname\x_relaxE521S~ s,}E522S\catcode`\~=10\x_relax$\gobble_ifIIt*is*sometimesbGesttoskipbGoththethen-partandtheelse-partofaconditional. I\gobble_if@doGesthis@byusingthefactthatexpanding\elseskipseverythingIuntilUUthenextmatching\fiwithoutloGokingforother\elses.E523S\def\gobble_if{\iftrue\else}!|\if_or3P\or_elseI\if_orUU...\or_else...\thengivesthedisjunctionoftwobGooleans.E524S\def\if_or#1\or_else#2\then{ E525ap#1\thenE526p2\expandafter\if_trueE527ap\elseE528p2#2\thenE529~0\expandafter\expandafter\expandafter\if_trueE530p2\elseE531~0\expandafter\expandafter\expandafter\if_falseE532p2\fiE533ap\fiE534S}y\if_equalIThe\if_equalmacroisa...\then-stylewrappGeraroundthe\ifxprimitive.SFIts IcallingUUsyntaxisb\if_equalhtoken1[ihtoken2i\thenE535S\def\if_equal#1\then{\ifx#1} 6\if_file_existsI\if_file_existsUUcheckstoseeifa leexits,using\openin.E536S\def\if_file_exists#1\then{E537ap\immediate\openin1=#1\x_relaxE538ap\ifeof1\x_relaxIFile:qfibasics.dtx@547뉠soE539p2\immediate\closein1 E540p2\expandafter\if_falseE541ap\elseE542p2\immediate\closein1E543p2\expandafter\if_trueE544ap\fiE545S}E546Sh=pkgKiI8.4.2l#ConditionalsTinfontdoN9cuTIInUorderTtogetareasonabledoGcumentationofbranchesTinanETXDorMTX le, IthecoGdeinbothbranchesmustbGetypGesetandthepositionsoftheif,>theelse,andIthe mustbGeclearlymarked.'ThereseemstobGenoreasonablewaytoachieveIthisifthestandardnamesfortheelseand areused.?ThereforethealternativeInamesZ\ElseYand\Fifor\elseand\fihavebGeenZintroduced,toYbeZusedasinIforUUexampleRb\ifisint{monowidth}\thenlhthen-p}'artظib\Elselhelse-p}'artظib\Fi &`\Else/>\FiIByUUdefault,theseareidenticaltotheirlowercasecounterparts. E547Shpkg/j8doAc' i E548S\let\Else=\elseE549S\let\Fi=\fiE550Sh=pkg/j8doAc' i XTheinterestingpartbGeginsiftheETXIorMTX legivesthecommand I\showbranches,p,sincejthisjmeans(i)thatitwantsjthebranchesjtobGeshownandI(ii)4gthatitcompliestoasimpleruleabGoutwheretouse\Elseand\Fi.fTheruleIisдasеfollows:/wIfanifstatementisoffontinstform(ituses\then),'ExXversionoftheTU>'ExX\inputprim-Iitive.ICneedpthissothatIBcansay\expandafter\foo\primitiveinput,2whichIdoGesn'tUUworkwiththeL5ffA͉TU>'ExXversionof\input.SE632ShpkgKiE633S\x_cs\ifx{@@input}\x_relaxE634ap\let\primitiveinput=\inputE635S\elseE636ap\let\primitiveinput=\@@inputE637S\fiv~XTheUUmacrot\process_csep_listHb\process_csep_list{hpr}'etextظi}hcomma-sep8listi,\process_csep_list,IexecutesUUhpr}'etextظi{hitemci}foreveryiteminthehcomma-seplistظi.v}t\process_csep_list *E638S\def\process_csep_list#1#2,{E639ap\ifx\process_csep_list#2E640p2\expandafter\gobble_oneE641ap\elseE642p2\expandafter\identity_oneE643ap\fi{E644p2#1{#2}E645p2\process_csep_list{#1}E646ap}E647S}E648Sh=pkgKiv~f\print@csep@listIUse.of.thismacr}'oisnowdepr}'ecated;Puse.4'ExX'syhnumb}'erisaremerelyintegers,rbutfontinstxneedstostoreandcalculatewith Inumerical7entities7(mostofwhich7arelengths)thatareintrinsicallyrealnumbGers.IMost:ofthetime,sfontinstdoGesthisbyusing9arepresentationofrealnumbGersbyIintegers&inwhich'arealnumbGerx'isrepresentedbytheinteger'that1000xgetsIroundedto.\ThisrepresentationhasprovedsucientlypreciseformostpurpGoses.XThereŮareůhoweverafewcasesůinwhichrealnumbGersůmustbGedeltwithůinaImoreUUgeneralfashion.qGenericroutinesforthisappGearinthissubsection.L\make_factorITheUU\make_factormacroismeanttobGeusedinthecontextb\make_factor{hnumb}'eri}Iwheredhnumb}'ericancbGeanylegalTU>'ExXnumbGer.ItexpandstocthesamenumbGerIdividedFbyG1000,withdecimals,sothatwhatitexpandstomatchestheregularIexpressionb-?[0-9]+\.[0-9][0-9][0-9]XMore%spGeci cally*,!\make_factorhas&two%taskstopGerform:QittakescareoftheIsign,v=soothatoitssubsidarymacrosneedonlyworkwithunsignednumbGers,v=andoitIconvertsthehnumb}'eri(whichcouldwellbGeacountdeformathchardeftoken)toIaUUsequenceofdigits.E666ShpkgKi E667S\def\make_factor#1{E668ap\ifnum#1<\z@IFile:qfibasics.dtx@59<! soE669p2-\expandafter\make_factor_i\expandafter{\number-#1} E670ap\elseE671p2\expandafter\make_factor_i\expandafter{\number#1}E672ap\fiE673S}l\make_factor_iI\make_factor_i distinguishes bGetweenthe twomaincases ofnumbGers thatin Iabsolute~Xvqalue~Yarelessthan1000andnumbGers~XthatinabsolutevqaluearegreaterIthan6or6equalto1000.gIntheformercase,'ExX'sdefaultdecimalform.ThisisIsomewhatawkward,!asitwouldbGeveryhardtoimplementwithoutusingexplicitIarithmetic.L \format_hexITheH\format_hexIcommandformatsanumbGerHashexadecimaldigits.VThesyntaxIis b\format_hex{hc}'ommandi}{hvalue[i}{hdigits!i}Iwhere hc}'ommandiwillbGe \definedtobetheformattednumber.}hvalue[i isthe InumbGer?to?format;)itmustnotbGenegative.1phdigits!iisthenumbGer?ofdigitstoIgenerate.FKIfFtheF׸hvalue[iisgreaterthanorequalto16^digitslthen\a_countwillIbGesettohvalue[idividedbythisnumbGerandtheformattedvqaluewillbGefortheIcorrespGondingUUremainder.XTheUUmacrooverwritesUU\a_count,\b_count,and\c_count.b\format_hex_iIThe\format_hex_imacroistheiteratorfor\format_hex.ItisusedintheIcontext b\format_hex_i{hc}'ommandi}{hcontroltokenci}IIf^the]hc}'ontroltokenciis^ithennothingisdone. Otherwisethequotientandre- ImainderѪofѩ\a_countwithrespGectto16iscomputed,wheretheformerisassignedIto.\a_count/andthelatterisconverted.tohexadecimalandprepGendedtotheIhc}'ommandi,UUafterwhichthemacroexpandsto\format_hex_ihcommandi. čE704ShpkgKi E705S\def\format_hex_i#1#2{E706ap\if#2i\elseE707p2\b_count=\a_countE708p2\divide\a_count\sixt@@nE709p2\c_count=\a_countE710p2\multiply\c_count\sixt@@nE711p2\advance\b_count-\c_countE712p2\edef#1{E713~0\ifcase\b_count0\or1\or2\or3\or4\or5\or6\or7\or8\orE714]9\ora\orb\orc\ord\ore\orf\fiE715~0#1E716p2}E717p2\expandafter\format_hex_i\expandafter#1E718ap\fiE719S}XT*ogettheloGoptorunthewantednumbGeroftimes,Doneusesthetrickthat I\romannumeral[cangenerateanarbitrarynumbGer[ofms.1The\identity_onestu Iisҹtopreventҹ\numberҸfromproGcessesingthesubsequent001~,whichwillbGetheIlastUUthat\romannumeralreads. čE720S\def\format_hex#1#2#3{ E721ap\a_count=#2E722ap\let#1\empty_commandE723ap\expandafter\format_hex_i\expandafter#1\romannumeralE724p2\expandafter\identity_one\expandafter{\number#3}001~E725S}E726Sh=pkgKiIFile:qfibasics.dtx@61>7soI8.7gError,warning,andinfomessagesuTIThecoGdeinthissubsectionisanadaptationofcodefromtheL5ffA͉TU>'ExXkernel|more IpreciselyXfromXthesource lelterror.dtx|andthesameistrueforsomeoftheIcomments.AsjauthorsofthatcoGdekarelistedJohannesBraams,/DavidCarlisle,IAlan:Je rey*,sLeslieLampGort,F*rank9Mittelbach,ChrisRowley*,andRainerSchopf.ITheoriginalsourcecanbGefoundinthe lelterror.dtxinthemacros/latex/IbaseUUdirectoryinanyoftheComprehensiveTU>'ExXArchiveNetworkFTPsites.^8XThatUUshouldhaveUUful lledtheconditionsintheLPPL.$I8.7.1l#GeneralTcommandsb\messagebreakIThisDcommandEprintsanew-lineinsideamessage,6followedDbyaDcontinuationIwhoseexactappGearencemaydependonthecontext.{NormallythiscommandisIde nedtobGe\relax,sbutinsidemessagesitgetsrede nedtoalinebreak(^^J)IfollowedUUbytheappropriatecontinuation. 퍍E727Shpkg Mi\let\messagebreak\x_relax E728ShdoAc Ni\let\messagebreak\spaceōb\generic_infoIThisPtakestwoarguments:ouacontinuationandamessage,QandsendstheresulttoItheUUlog le. 썍E729ShpkgKiE730S\def\generic_info#1#2{E731ap\begingroupE732p2\def\messagebreak{^^J#1}E733p2\immediate\write\m@ne{#2\on_line.}E734ap\endgroupE735S}ōf\generic_warningIThisPtakestwoarguments:ouacontinuationandamessage,QandsendstheresulttoItheUUscreen. 썍E736S\def\generic_warning#1#2{E737ap\begingroupE738p2\def\messagebreak{^^J#1}E739p2\immediate\write\closed_stream{^^J#2\on_line.^^J}E740ap\endgroupE741S}ō\generic_errorI\This0macrotakes0fourarguments:_acontinuation,8anerrormessage,wheretogoIforfurtherinformation,andthehelpinformation.iItdisplaystheerrormessage,Iandsetstheerrorhelp(theresultoftypinghtotheprompt),(anddoGesahorribleIhackxtoxturnthelastcontextline(whichbyxdefaultistheonlycontextline)intoIjustUUthreedots.qThiscouldbGemademoreecient."XThusfartheL5ffA͉TU>'ExXcomments,obutthehorriblehackitmensionshasbGeenIremovedsinceitjustmakesthingsloGokstrangewhen\errorcontextlinesisIlarger6than5one.|iThe\wheretogoforfurtherinformation"messageiscurrentlyInothusedh(itiscommentedoutin\fontinsterrorbGelow),lsincethereisnogoGodIplaceٗtoreferٖtoanyway*.IftheٗdoGcumentationiseverimprovedٖinthisrespGect,IitdowoulddpofcoursebGebestdotoreinsertthismessage.NotehoweverdothatunlikedotheIcaseUUinL5ffA͉TU>'ExX,thismessageshouldendwitha^^J.I[ffr J= "5-:8LܼAsXifanÎyoneXwhohasmanagedtogetthisfardidn'talreadyknoÎwthat!IFile:qfibasics.dtx@62?CsoXA"complication#is#thatTU>'ExXversionsolderthan3.141have#abugwhichcauses I^^JLztoLnotforceLalinebreakin\messageand\errmessagecommands.WSoforIthese:oldTU>'ExX'sweusea\writetoproGducethemessage,andthenhaveanemptyI\errmessageUUcommand.qThiscausesanextralineoftheformI!.ItoNappGearontheterminal,O}butifyouNdonotlikeit,O}youcanalwaysupgradeyourITU>'ExX!XSince'ExXs,vI/removedL5ffA͉TU>'ExX'sItesta(forTU>'ExXa'versionatthispGoint.?ThecoGdea'foroldTU>'ExXsisstillthere,dbutitliesIinUUadoGcstripmoduleofitsown.XFirstUUthe`standardcase'. E742Sh!oldT:eX"Ci E743S\def\generic_error#1#2#3#4{E744as\begingroupE745p8\immediate\write\closed_stream{}E746p8\def\messagebreak{^^J}E747p8\edef\a_macro{{#4}}E748p8\errhelp\a_macroE749p8\def\messagebreak{^^J#1}E750p8\errmessage{#2.^^J^^J#3E751~0Type~\spaceH~~\spacefor~immediate~helpE752p8}E753as\endgroupE754S}E755Sh=!oldT:eX"CiXSecondlyUUtheversionforoldTU>'ExX's.E756SholdT:eX }iE757S\def\generic_error#1#2#3#4{%E758as\begingroupE759p8\immediate\write\closed_stream{}E760p8\def\messagebreak{^^J}E761p8\edef\a_macro{{#4}}E762p8\errhelp\a_macroE763p8\def\messagebreak{^^J#1}E764p8\immediate\write\closed_stream{!~#2.^^J^^J#3^^JE765~0Type~\spaceH~~\spacefor~immediate~help.E766p8}E767p8\errmessage{}E768as\endgroupE769S}E770Sh=oldT:eX }i\fontinsterror f\fontinstwarning \fontinstwarningnoline b\fontinstinfoIThese{commands|areintendedforgivingauniformed,andfortheprogrammers IhopGefullyUUsimpli ed,formoferror,warning,andinfomessages.qThesyntaxis:b\fontinsterror{hsubsystemci}{herr}'ori}{hhelpi}b\fontinstwarning{hsubsystemci}{hwarning}i}b\fontinstwarningnoline{hsubsystemci}{hwarning}i}b\fontinstinfo{hsubsystemci}{hinfoi}IA hsubsystemciinthiscontextisintendedtobGesomepieceoftextwhichidenti esIsomefunctionallyclearlyde nedpartoffontinst.PExamplesofhsubsystemciscouldIbGeUUPL?toMTXconverter,Ligful(V)PLwriter,andLatinfamily.IFile:qfibasics.dtx@63@RQsoXThef\fontinsterrorcommandprintstheeherr}'orimessage,تandpresentsthe Iinteractive?prompt;5iftheusertypGesh,:thenthehhelpi@informationisdisplayed.IThe\fontinstwarningcommandproGducesawarningbutdoesnotpresenttheIinteractive)}prompt.c*The)~\fontinstwarningnolinecommanddoGesthesame,2BbutIdoGesn'tEprintEtheinputlinenumbGer.CTheE\fontinstinfocommandwritestheImessage~ to~!thelog le.)Withinthemessages,Sthecommand\messagebreakcanIbGeUUusedtobreakalineand\spaceisaspace,forexample:[X\def\foo{FOO} [X\fontinstwarning{Hungarian}{jYour~hovercraft~is~full~of~eels,\messagebreakjand~\string\foo\spaceis~\foo}IproGduces:[XHungarianwarning:Yourhovercraftisfullofeels,and\fooisFOOoninputline54.E771S\def\fontinsterror#1#2#3{E772ap\generic_error{E773p2\four_spaces\four_spacesE774ap}{E775p2#1~error:\messagebreak#2E776ap}{E777S%!See~the~#1~package~documentation~for~explanation.^^JE778ap}{#3}E779S}E780S\def\fontinstwarning#1#2{E781ap\generic_warning{E782p2\four_spaces\four_spacesE783ap}{E784p2#1~warning:\messagebreak#2E785ap}E786S}E787S\def\fontinstwarningnoline#1#2{E788ap\fontinstwarning{#1}{#2\gobble_one}E789S}E790S\def\fontinstinfo#1#2{E791ap\generic_info{E792p2\four_spaces\four_spacesE793ap}{E794p2#1~info:\messagebreak#2E795ap}E796S}E797Sh=pkgKiE798ShdoAceLiE799S\def\fontinsterror#1#2#3{%E800ap\Bheading{Error}observedby#1:%E801ap\begin{quote}#2.\end{quote}%E802S}IFile:qfibasics.dtx@64A^soE803S\def\fontinstwarning#1#2{ E804ap\Bheading{Warning}from#1:%E805ap\begin{quote}#2.\end{quote}%E806S} E807S\let\fontinstwarningnoline=\fontinstwarning E808S\def\fontinstinfo#1#2{E809ap\Bheading{Info}from#1:%E810ap\begin{quote}#2.\end{quote}%E811S}E812Sh=doAceLi3P\on_lineIThemessage`oninputlinen'.3L5ffA͉TU>'ExXhasspGecialcodeforTU>'ExX2,butsincefontinst Ihasassumedtheexistenceofthe\errorcontextlinesparametersincev1.500,ItheremovqalofthatcoGdeshouldn'tcauseproblemsforanyonewhowasn'talreadyIhavingUUrelatedproblems.E813ShpkgKi E814S\def\on_line{~on~input~line~\the\inputlineno}L\four_spacesIF*our\spaces.Using\edef(ratherthan\\defasinL5ffA͉TU>'ExX)tosave\somemacroIexpansions. E815S\edef\four_spaces{\space\space\space\space}I8.7.2l#SpQeci cTerrorsuTb\error_help_ab\error_help_cb\error_help_db\error_help_eIThemorecommonerrorhelpmessages.;The rstthreearecalled\@eha,\@ehc,Iand \@ehd inL5ffA͉TU>'ExX.\@ehbisofnouseforfontinst,/soithasbGeenomitted.I\error_help_eUUisanewoneforfontinst.E816S\gdef\error_help_a{ E817]Your~command~was~ignored.\messagebreakE818]Type~\spaceI~~~\spaceto~replace~it~E819]with~another~command,\messagebreakE820]or~\space~\spaceto~continue~without~it.}E821S\gdef\error_help_c{E822]Try~typing~\space~E823]\spaceto~proceed.\messagebreakE824]If~that~doesn't~work,~type~\spaceX~~\spaceto~quit.}E825S\gdef\error_help_d{E826]You're~in~trouble~here.~\space\error_help_c}E827S\def\error_help_e#1{You~can~continue,~but~the~#1~wrong.}I8.7.3l#T<8E3sXTparametersuTL\newlinecharISetUU\newlinecharfor\errhelpmessages. E828S\newlinechar=`\^^Jt\errorcontextlinesIBydefault,Fshowasmucherrorinfoasyoucan.e(W*eassumefontinstusersare ITU>'ExXpGerts.)E829S\errorcontextlines=999 \tracinglostcharsIMake\tracinglostcharspGositive|thiswillsimplifycatchingbugs,basmanyIfontinstbugsshowupinthatoutputisbGeinggenerated,!butthatusedtodisappearIsilentlyUUwhenfontinstwasrununderIniTU>'ExX.IFile:qfibasics.dtx@65BggsoE830S\tracinglostchars=1 E831Sh=pkgKiIFile:qfibasics.dtx@66CssoIFileffbIficommon.dtxꨍI9aLGeneralffcommandsIThereareroughly vetypGesofargumentsthatfontinstcommandscantake.7These IareDXbintegerUUexpressions,XbstringUUexpressions,Xbdimensions,XbcommandsUU(i.e.,TU>'ExXcontrolsequences),andXbotherUU(prettymuch\noneoftheabGove").IThe@mostcommonformofaninteger?expressionissimplyaTU>'ExXhnumb}'eriandthe Imostcommonformofastringexpressionissimplyasequenceofcharactertokens,IbutEtherearemorecomplicatedforms.DimensionsaresimplyTU>'ExXhdimencis;ItheircAusec@isratherlimited.Commontointegerexpressions,stringexpressions,Iand4dimensions5isthattheseargumenttypGes5getexpandedduringevqaluation(inIthe3caseofstringexpressions,:Gthis3expansionistheevqaluation),whichmeansoneIcanUUusemacrosinargumentsofthesetypGes.XCommandargumentsdonotgetexpanded|theyaremainlyusedwithcom-ImandsuthatmoGdifyuthede nitionsofothercommands.CAsforthe\other"ar-Igumentszonecannotgiveanyrules:theymightgetexpanded,1butitcouldalsoIhappGenUUthattheywon't.տI9.1gStringexpressionsuTIThe*& rstproblemwithstringexpressionsisto*%typGesetthevqalues.:Thecharac-IterVtstringsthatappGearinVuETXV1andMTX lesusuallyVtconsistonlyofimmedi-Iately\printable]characters,^butthere]areafewcharacters(such]asunderscore)IwhichmaybGeusedeventhoughtheyaren'tdirectlyprintable. ThissubsectionIde nesqcommandsqwhichdealwiththisproblembyreplacingnon-printablechar-Iacterskbycommands.TheimplementationkisbasedontheimplementationoftheI\MakeHarmlessUUcommandinthexdoGcpackqage.վI9.1.1l#T9ypQesettingTproblematiccharacters$\PrintChar߀H\InvisibleCharPrefix߀H\InvisibleCharSuffixITheUU\PrintCharcommandhasthesyntaxDb\PrintChar{h8-bitnumb}'eri}Iwhereh8-bitnumb}'eriisaTU>'ExXnumbGerintherange0{255.)IF*orargumentsin Ithe@range@0{31,{\PrintCharprints`^^@r'{`^^_'.4F*or@anargumentintherangeI32{126,\PrintCharcalls\PrintVisibleCharwhichtypGesetsthecorrespond-IingFASCIGIFcharacter(similartoF\char,SbutittakesthepathviaFtheL5ffA͉TU>'ExXin-Iternallrepresentationsothatlitworkswithnon-typGewriterOT1fonts);xinparticu-Ilar,k\PrintChar{32}gfprintsgea\visiblespace"character.\PrintChar{127}printsIFile:qficommon.dtx@67DtZsoI`^^?r'.+F*orevargumentsewintherange128{255,~\PrintCharprints`^^80r'{`^^ff'. ITheUU\PrintCharcommandisrobust.XThebpmacros\InvisibleCharPrefixbqand\InvisibleCharSuffixbGeginandIend=a<^^-sequence.\InvisibleCharPrefixshouldprinttheactual^^,vbutitImayalsoforexampleselectanewfontforthe^^-sequence(suchfontchangesareIrestoredUUattheendof\PrintChar).Ls1ShdoAceLi Ls2S\DeclareRobustCommand\PrintChar[1]{%Ls3ap\leavevmodeLs4ap\begingroupLs5p2\count@=#1\relaxLs6p2\ifnum\@xxxii>\count@Ls7~0\advance\count@64%Ls8~0\InvisibleCharPrefixLs9~0\PrintVisibleChar\count@I10~0\InvisibleCharSuffixI11p2\else\ifnum127>\count@I12~0\PrintVisibleChar\count@I13p2\elseI14~0\InvisibleCharPrefixI15~0\ifnum127=\count@\PrintVisibleChar{63}\elseI16]\@tempcnta=\count@I17]\divide\count@\sixt@@nI18]\@tempcntb=\count@I19]\multiply\count@\sixt@@nI20]\advance\@tempcnta-\count@I21]\advance\@tempcntb\ifnum9<\@tempcntb87\else48\fiI22]\advance\@tempcnta\ifnum9<\@tempcnta87\else48\fiI23]\char\@tempcntb\char\@tempcntaI24~0\fiI25~0\InvisibleCharSuffixI26p2\fi\fiI27ap\endgroupI28S}I29S\newcommand\InvisibleCharPrefix{%I30ap\/\emI31ap\PrintVisibleChar{`\^}\PrintVisibleChar{`\^}%I32S}I33S\newcommand\InvisibleCharSuffix{\/} \PrintVisibleCharITheO \PrintVisibleCharO commandshouldprintthevisibleASCIGINcharacterwhose IcharacterӮcoGdeisgivenӯintheargument.Theӯde nitiongivenheretranslatesIeveryFcharacterFcoGdetothecorrespGondingL5ffA͉TU>'ExXinternalrepresentation,)whichIisnecessaryifthecurrentfontise.g.anOT1-encoGdednon-typGewriterfont.IfIthe}¤t}%fontisknownto}%bGeT1-encodedthenone}%candojustaswellwithI\char#1RasUUthereplacementtext.I34S\newcommand\PrintVisibleChar[1]{% I35ap\ifcase#1%I36ap\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\orI37ap\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\orI38ap%"20I39p2\textvisiblespace\or!\or\textquotedbl\or\#\or\textdollarIFile:qficommon.dtx@68EIsoI40p2\or\%\or\&\or\textquoteright\or(\or)\or*\or+\or,\or-\or.\or/% I41ap\or%"30I42p20\or1\or2\or3\or4\or5\or6\or7\or8\or9\or:\or;\orI43p2\textless\or=\or\textgreater\or?%I44ap\or%"40I45p2@\orA\orB\orC\orD\orE\orF\orG\orI46p2H\orI\orJ\orK\orL\orM\orN\orO%I47ap\or%"50I48p2P\orQ\orR\orS\orT\orU\orV\orW\orX\orY\orZ\or[\orI49p2\textbackslash\or]\or\textasciicircum\or\textunderscoreI50ap\or%"60I51p2\textquoteleft\ora\orb\orc\ord\ore\orf\org\orh\orI52p2i\orj\ork\orl\orm\orn\oro%I53ap\or%"70I54p2p\orq\orr\ors\ort\oru\orv\orw\orx\ory\orz\orI55p2\textbraceleft\or\textbar\or\textbraceright\or\textasciitildeI56ap\fiI57S} \textvisiblespaceITheڋ\textvisiblespacecommand,;whichisheavilyusedinڌnamesofcoGding Ischemes,*unfortunatelyhasadefaultde nitionwhichlacksleadingontherightIside.qThisUUrede nitionattemptstoimproveUUthings.I58S\DeclareTextCommandDefault{\textvisiblespace}{% I59ap\makebox[\fontdimen\tw@\font]{%I60p2\hfilI61p2\vrule\@height.3ex%I62p2\vbox{\hrule\@width.66\fontdimen\tw@\font}%I63p2\vrule\@height.3ex%I64p2\hfilI65ap}%I66S}߀H\FD@quoted@PrintCharIOne4sometimeswants3to4useaprintablecharacter4stringaspartofacontrol Isequencename.Ifthenormalde nitionof\PrintCharisinforceatsuchtimesIthen/each/\PrintCharinthestringwouldproGducelotsoferrors,f`whichiswhyI\FD@quoted@PrintChar4has4bGeende ned.fThismacroisanalternativede nitionIof\PrintCharwhichexpandsto"hnumb}'eri",hwhichcanbGepartofamacroname.I67S\def\FD@quoted@PrintChar#1{"\number#1"}6I9.1.2l#Con9vertingTcharacterstringsuTIReplacing5allproblematic6characterswith\PrintCharcallscertainlymakestheIstringseasiertomanage,tbutactuallymakingthosereplacementsisarathercom-Iplicatedtask.ThissubsubsectioncontainsthemacrosnecessaryfordoingtheseIreplacements.XTheK] rstproblemishowK^toecientlyrecognisetheproblematiccharacters.IOneVmightthinkUthatitissucienttoUloGokattheir\catcode,VbutthatwillfailIforHcharactersHlikewhere\FD@printable@hcode iIFile:qficommon.dtx@69FsoItheÔhc}'ode[iÓisintherange32{126.Theprintableformofcharactersoutsidethis IrangeUUisalwaysUUthe\PrintCharform. ǍI68S\count@=32 I69S\begingroupI70ap\catcode\z@=12\relaxI71ap\@firstofone{%I72S\endgroupI73ap\loopI74p2\if\ifnum11=\catcode\count@1\else\ifnum12=\catcode\count@I75]1\else0\fi\fi1%I76~0\uccode\z@=\count@I77~0\uppercase{\def\@tempa{^^@}}%I78p2\elseI79~0\edef\@tempa{\noexpand\PrintChar{\the\count@}}%I80p2\fiI81p2\x@cs\let{FD@printable@\the\count@}=\@tempaI82p2\advance\count@\@neI83ap\ifnum127>\count@\repeatI84S}ǍIThis%loGophasn'tcaught&allnon-printablecharacters,soafew&entrieshavetobGeIsetUUexplicitly*. ǍI85S\@namedef{FD@printable@34}{\PrintChar{34}}%"I86S\@namedef{FD@printable@60}{\PrintChar{60}}%V\MakePrintableIT*oUUrenderacharacterstringharmless,youdob\MakePrintable{hmacr}'oi}{h ag}i}{hstringi}IThis+loGcallyassignstohmacr}'oi,theprintablecharacterstringwhichcorrespGondsItoMhstring}i..F*urthermoreLthecontrolsequence\ifh agiLisloGcallyletto\iftrueIorT\iffalsedepGendingonwhethertheprintablestringissimple(onlyconsistsofIcharacterUUtokensand\PrintCharcommands)ornot.XDuring the conversiontheconverted partofthestringisstoredin\toks@andIthes@tempswasβswitchkeepstrackofswhetherthestringsofarissimple(yeswhenIfalse),UUbutthosearebGothlocalto\MakePrintable. ǍI88S\def\MakePrintable#1#2#3{%I89ap\begingroupI90p2\toks@={}%I91p2\escapechar=`\\%I92p2\@tempswafalseI93p2\FD@printable@#3\protect\FD@printable@I94p2\toks@=\expandafter{%I95~0\expandafter\let\csnameif#2\expandafter\endcsnameI96~0\csnameif\if@tempswafalse\elsetrue\fi\expandafter\endcsnameI97~0\expandafter\def\expandafter#1\expandafter{\the\toks@}%I98p2}%I99ap\expandafter\endgroup\the\toks@E100S}U \FD@printable@iiif\FD@printable@iv 6\FD@printable@vf\FD@printable@viIWhatJaonehastobGemostcarefulJbaboutwhenmakingstringsprintablearetheIspacetokens, usince manyofTU>'ExX's primitivesgladly snatchesanextra space(orImore)whereyoudon'twantthemtointhiscase.TMacroparameterscanbGeIFile:qficommon.dtx@70GsoIparticularlydangerous,asTU>'ExXwillskipanynumbGerofspaceswhilelookingfor Ithereplacementtextforanundelimitedmacroargument.5ThereforethealgorithmIforurenderingtacharactertokenuharmlessconsistsbGegins(\FD@printable@iii)Iwith\stringingthenexttokeninthestring|thispreservesthecharactercoGdeIandgJsetsthecategoryto12forallcharactersexcepttheASCIGIgFspace,kwhichgetsIcategory 10(space)|andthen\futureletisusedtopGeekatthenexttoken.='IfIitk8isak9spacetoken(\FD@printable@iv)thenthecharactercoGdeis32andtheIactualispacejcanbGegobbled(\FD@printable@v),.andifitisn'tthenthenextItoken@canbGegrabbedin@aundelimitedmacroargument(\FD@printable@vi).jInIeither|case,theharmlessformisgivenbythe\FD@printable@hc}'ode[i|tableentryI(inUU\FD@printable@vor\FD@printable@vi).E101S\def\FD@printable@iii{% E102ap\expandafter\futurelet\expandafter\@let@tokenE103ap\expandafter\FD@printable@iv\stringE104S}E105S\def\FD@printable@iv{%E106ap\ifx\@let@token\@sptokenE107p2\expandafter\FD@printable@vE108ap\elseE109p2\expandafter\FD@printable@viE110ap\fiE111S}E112S\begingroupE113ap\catcode`3=\catcode`aE114ap\catcode`2=\catcode`aE115ap\@firstofone{\gdef\FD@printable@v}{%E116p2\toks@=\expandafter{\the\expandafter\toks@\FD@printable@32}%E117p2\FD@printable@E118ap}E119S\endgroupE120S\def\FD@printable@vi#1{%E121ap\if\ifnum`#1<\@xxxii1\else\ifnum`#1>1261\else0\fi\fi1%E122p2\toks@=\expandafter{\the\expandafter\toks@E123~0\expandafter\PrintChar\expandafter{\number`#1}%E124p2}%E125ap\elseE126p2\toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@E127~0\csnameFD@printable@\number`#1\endcsname}%E128ap\fiE129ap\FD@printable@E130S}\FD@printable@ 6\FD@printable@i f\FD@printable@ii \FD@printable@viiIButthatisnotall\MakePrintablecando.JAOnemustalsodealwiththingsinthe IstringIEthatarenotsimplyIFcharacters,Kbutmorecomplexitems(forexample\strIandQ\strintRconstructions).RWhencontrolsequencesthatstartsuchcomplexIitems arefedto\MakePrintabletheymustbGepreceededbya\protect(theyIwillbGeiftheoriginalcommandisde nedusingL5ffA͉TU>'ExX's\DeclareRobustCommandIcommandandthestringhasbGeenfedthrougha\protected@edef,2whichhappensItoJpbGeJothecase);Nthis\protectistakenasasignalthatthenexttokenshouldgetIspGecialprocessing.~Controlsequencesthatarenotpreceededbya\protectareIsimplyUU\stringed.IFile:qficommon.dtx@71HMsoXT*o|accommoGdateforthis,"\FD@printable@(whichis{the rststepincon- Ivertingratoken)alwaysbGeginsbychecking(in\FD@printable@i)whetherIthenexttokenisacontrolsequence. lIfitisandthatcontrolsequenceisI\protect`thenitischecked`(ina\FD@printable@ii)whetherthecontrolsequenceI\FD@printable\hcs-name[i,TwhereShcs-nameiTisthenamewithout\(andwithany\FD@printable\hcs-name iIspacesremoved)ofthecontrolsequenceencountered,isde ned.LSIfitisde nedIthenBcontrolishandedoverAto\FD@printable\hcs-name[iwhichshouldproGcessIthearguments(ifany)of\hcs-name[iandaddasuitablerepresentationto\toks@,Ibutif\FD@printable\hcs-name[iisn'tde nedthenthisisconsideredtobGeaner-Iror.XIfMthenexttokenisn'tacontrolsequencethencontrolishandedovertoI\FD@printable@ii.Ifthenexttokenisacontrolsequencebutnot\protectIthen߱thattokenis\stringed(in߲\FD@printable@vii)andcontrolishandedoverItoUU\FD@printable@vi.E131S\def\FD@printable@{\futurelet\@let@token\FD@printable@i}E132S\def\FD@printable@i{% E133ap\csnameFD@printable@%E134p2\ifcat\noexpand\@let@token\noexpand\FD@printable@E135~0\ifx\@let@token\protectii\elsevii\fiE136p2\elseiii\fiE137ap\endcsnameE138S}E139S\def\FD@printable@ii\protect#1{%E140ap\@ifundefined{FD@printable\expandafter\zap@space\string#1\@empty}{%E141p2\PackageError{fontdoc}{Command\protect#1notallowedinstring}%E142~0\@ehaE143ap}{\csnameFD@printable\expandafter\zap@space\string#1\@emptyE144kJ\endcsname}%E145S}E146S\def\FD@printable@vii{\expandafter\FD@printable@vi\string}m.\FD@printable\FD@printable@IAcontrolsequence\FD@printable\hcs-name[iisrespGonsibleforinterpretingthe IstringC1itemC2thatbGeginswiththecontrolsequence\hcs-name[iandappGendingaIprintable@representation@ofitto\toks@.jNormal\FD@printable\hcs-name[icon-Itrola0sequencesmustalsoendbyinserting\FD@printable@infrontofwhatremainsIofthestringafterthecomplexstringitemhasbGeenremoved.ThisseestothatItheuresttofthestringisalsomadeprintable.B|TheonlysuchcontroltsequencewhichIdoGesnotinsert\FD@printable@is\FD@printable\FD@printable@,$DbutthatisIas"itshouldbGesince\MakePrintable!itselfappendsa\FD@printable@toeveryIcharacterUUstringitshouldconverttomarktheendofit.E147S\expandafter\let E148ap\csnameFD@printable\string\FD@printable@\endcsname\@emptyS\FD@printable\PrintCharIIt/ is/ oGccasionallyconvenientto/ usea\PrintCharcommandaspartofastringIthatqisqtobGemadeharmlessinsteadofusingtherawcharacter.Thede nitionqisIveryUUsimilartothatof\FD@printable@vi.E149S\@namedef{FD@printable\string\PrintChar}#1{% E150ap\if\ifnum#1<\@xxxii1\else\ifnum#1>1261\else0\fi\fi1%E151p2\toks@=\expandafter{\the\expandafter\toks@E152~0\expandafter\PrintChar\expandafter{\number#1}%IFile:qficommon.dtx@72IsoE153p2}% E154ap\elseE155p2\toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@E156~0\csnameFD@printable@\number#1\endcsname}%E157ap\fiE158ap\FD@printable@E159S}S\ExpandAndMakePrintableIThe\ExpandAndMakePrintablecommandisanabbreviationforacommonuse Iofӟ\MakePrintable,2namelyto rstfeedtheӠstringthrougha\protected@edefItoUUgetridofallthesimplemacros.E160S\newcommand*\ExpandAndMakePrintable[3]{% E161ap\protected@edef\@tempa{{#2}{#3}}%E162ap\expandafter\MakePrintable\expandafter#1\@tempaE163S}E164Sh=doAceLi6I9.1.3l#Ev\raluatingTstringexpressionsuTIInstringexpressions,theonlyavqailableopGerationisjuxtapGosition(fancynamefor IputtingUUthingsnexttoeachother)andthusthesyntaxforastringexpressionisbhstringexpr}'essionciUU q!UU;jhstringatomcihstringexpr}'essioniIwhereUU;denotestheemptystring.qAhstringatomciisoneofbhchar}'actertokencib\str{hstringexpr}'essionci}b\strint{hstringexpr}'essionci}IThemeaningofahchar}'acter6tokenciisexplainedin[6].hThe\strand\strintIformsof{hstring-atomci}refertotherespGectivevqaluesofthestringandintegerIvqariables(seeSubsection9.3)whosenamesaregivenintheargumentof\strorI\strintrespGectively*.Sincethenamesofvqariablesarethemselvesstringexpres-Isions,UU\strand\strintmaythemselvesbGeusedinnamesofvqariables.XIt]shouldbGenotedthatmostofzfontinst'sstringexpressionssoonerorlaterendIupbGetweena\csnameandthecorrespGonding\endcsname.PThisplacessigni cantIrestrictionsUUonwhatmayoGccurinstringexpressions.+\str\strintIIn,pfontinst,otheonlymacrosneededfordealingwithstringexpressionsare\strIandUU\strint.E165ShpkgKi E166S\def\str#1{\csname~s-#1\endcsname}E167S\def\strint#1{\expandafter\identity_one\expandafter{\number\int{#1}}}E168Sh=pkgKiXfontdoGcNmainlyMusesTU>'ExX'stextmoGdefortypGesettingstringexpressionsbGecauseInotthenameandfunctionalparenthesisofIsuchUUmaterialistypGesetinmathmodetogetamathematicallook. 6\FD@string@funcITheUU\FD@string@funcmacrohasthesyntaxIFile:qficommon.dtx@73J6sob\FD@string@func{hname[i}{har}'gumentظi}IIt xisusedfortypGesettingthe whname[i(har}'gumentظi)ofastring-vqaluedfunction(e.g. Ithevqalue-of-string-variablefunctions).CItshouldonlybGeusedinhorizontalmoGde.X\FD@string@func+۲includesabitofextraspacingaroundthe+typGesettext,4'butInotEatthebGeginningDorendofastringandneitherbGetweenEtwostring-vqaluedIfunctions.YAsoa agforthisisusedthatthevqalueof\spacefactoris1;}whenitIisUUoneshouldproGceedasifthisextraspacingisalreadypresent.E169ShdoAceLi E170S\def\FD@string@func#1#2{%E171ap\relaxE172ap\ifnum\spacefactor=\@ne$\mkern1mu\else$\fiE173ap\mathrm{#1}($%E174ap#2%E175ap\ifnum\spacefactor=\@ne$\mkern-1mu\else$\fi)\mkern1mu$%E176ap\spacefactor=\@neE177S}̙\TypesetStringExpression t\FD@typeset@string y\ifFD@swaIInבfontdoGcthestringexpressionsmustbeגtypeset, andthatisnottrivialdueto Ithatv(i)wnotallcharactertokenshavewcatcoGde11or12and(ii)notallcharactersIareavqailableinallfonts.F*urthermorethenon-characterstringatomsshouldbGeIgivenUUspGecialtreatmentincharacterstrings!XBecauseeofthis,stringexpressionsthatareetobGetypesetarehandedetoaspecialIcommand':\TypesetStringExpression,[whichtakesthestringtotypGesetasitsIonlyUUargument.qThisstringmaycontainuser-de nedmacros.E178S\newcommand\TypesetStringExpression[1]{% E179ap\protected@edef\@tempa{%E180p2\noexpand\MakePrintable\noexpand\@tempa{FD@swa}{#1}%E181ap}%E182ap\@tempaE183ap\FD@typeset@string{\@tempa}%E184S}IActuallyWtypGesettingthestringisWhandledin\FD@typeset@string,:butstrings IhandedytothiszmacromustbGepreprocessedzbyafullprotectedexpansionandaI\MakeHarmless.E185S\def\FD@typeset@string#1{% E186ap\mbox{%E187p2\normalfont\ttfamilyE188p2\spacefactor=\@neE189p2#1%E190p2\ifnum\spacefactor=\@ne$\mkern-1mu\m@th$\fiE191ap}%E192S}IThe\ifFD@swacontrolsequenceisoften\letto\iftrueor\iffalseby\Make- IPrintable, =andthenitisusedasaconditional.RSincethatassignmentsometimesItakes?place?inconditionaltexthowever,wone?mustmake?surethat\ifFD@swaalwaysIisUUsomeconditional.E193S\let\ifFD@swa\iffalse+\str \FD@printable\strIThepproGcessingoofthe\strmacroinfontdoGcisfarfromstraightforward.K%\strphasItokbGerobust,qLbutapartfromthatitsde ntionhasknoe ectonhowitsargumentIFile:qficommon.dtx@74K0soIisproGcessed.+Thatisinsteadcontrolledby\FD@printable\str, pwhichhappGens ItoUUuse\strasanauxiliaryformattingmacro.XMostofthecomplexitybGelowishoweverduetotheproGcessingneededtoIdeterminecwhethercthestringvqariableaccessedhasbGeenassignedavqalue.jSeeI\SetStringVariableUUformoreinformation.E194S\DeclareRobustCommand\str[1]{\FD@string@func{s}{#1}} E195S\@namedef{FD@printable\string\str}#1{%E196ap\MakePrintable\@tempa{FD@swa}{#1}%E197ap\begingroupE198p2\let\PrintChar=\FD@quoted@PrintCharE199ap\if\ifFD@swa\@ifundefined{FD@s-\@tempa}{0}{1}\else0\fi1%E200p2\expandafterE201ap\endgroupE202p2\csnameFD@s-\@tempa\endcsnameE203ap\elseE204ap\endgroupE205p2\toks@=\expandafter{\the\expandafter\toks@E206~0\expandafter\str\expandafter{\@tempa}}%E207p2\@tempswatrueE208ap\fiE209ap\FD@printable@E210S}\strint ߀H\FD@printable\strintI\strintUUishandledsimilarlyto\str.E211S\DeclareRobustCommand\strint[1]{\FD@string@func{int}{#1}}E212S\@namedef{FD@printable\string\strint}#1{%E213ap\MakePrintable\@tempa{FD@swa}{#1}%E214ap\protected@edef\@tempa{%E215p2\ifFD@swa\protect\FD@simple@int\else\strint\fi{\@tempa}%E216ap}E217ap\toks@=\expandafter{\the\expandafter\toks@\@tempa}%E218ap\@tempswatrueE219ap\FD@printable@E220S} 6\macroparameter \FD@printable\macroparameterIThed\macroparameterdcommandcanbGeusedinstringandintegerexpressions Iasasortof\macroparameterplaceholder".Itisnotde nedinfontinst,butinIfontdoGconeoccationallywritescommentswhichsaythingslike\XXXisshortforIASDFSKADN",andinthosecasesonecanuse\macroparameterasaplaceholderIforUUanargument.qThesyntaxisb\macroparameter{hdigitظi}IwhereUUhdigitظishouldbGeadecimaldigitbetweenUU1and9inclusive. XThe)@de nitionin\macroparameterhandlesuses)?ofthecommandinintegerIexpressions,whereas\FD@printable\macroparametertakescareofusesinstringIexpressions.E221S\DeclareRobustCommand\macroparameter[1]{% E222ap\gdef\FD@expression{\text{\normalfont\itshape\##1}}%E223ap\global\chardef\FD@priority=5%E224ap\global\FD@bracket@level=\z@E225ap\FD@evaluate@falseE226S}IFile:qficommon.dtx@75L݃soE227S\@namedef{FD@printable\string\macroparameter}#1{% E228ap\toks@=\expandafter{\the\toks@\textrm{\emph{\##1}}}%E229ap\@tempswatrueE230ap\FD@printable@E231S}E232Sh=doAceLi6I9.2gIntegerexpressionsuTIAnUUhinte}'gerexpressionciisoneofthefollowing:bhnumb}'eri b\int{hstringexpr}'essionci}b\neg{hinte}'gerexpressionci}b\add{hinte}'gerexpressionci}{hintegerexpressionci}b\sub{hinte}'gerexpressionci}{hintegerexpressionci}b\max{hinte}'gerexpressionci}{hintegerexpressionci}b\min{hinte}'gerexpressionci}{hintegerexpressionci}b\mul{hinte}'gerexpressionci}{hintegerexpressionci}b\div{hinte}'gerexpressionci}{hintegerexpressionci}b\half{hinte}'gerexpressionci}b\otherhalf{hinte}'gerexpressionci}b\scale{hinte}'gerexpressionci}{hintegerexpressionci}b\width{hstringexpr}'essionci}b\height{hstringexpr}'essionci}b\depth{hstringexpr}'essionci}b\italic{hstringexpr}'essionci}b\kerning{hstringexpr}'essionci}{hstringexpressionci}Ihnumb}'eri7is7anyTU>'ExXnumbGer,orasde ned7in[6].Thehstringcexpr}'essionciintheIargumentQof\intmustbGethenameofQanintegervqariablewhichiscurrentlyset,Ii.e.,UUtheconditionb\ifisint{hstringexpr}'essionci}\thenImustevqaluatetotrue.5Likewisethehstringexpr}'essionciintheargumentof\width,I\height,,\depth,+andh\italicgmustbGethenameofaglyphwhichiscurrentlyIset,UUi.e.,theconditionb\ifisglyph{hstringexpr}'essionci}\thenImustUUevqaluatetotrue.$\eval_exprb\eval_expr_to 6\g_eval_expr_to\resultIThezonlyythingfontinstdoGeswithintegerexpressionsisevqaluatingthem.5TheImacrob\eval_expr{hinte}'gerexpressionci}Igloballyjassigns\resultktothevqalueofhinte}'gerVexpressionci,andjchangestheIvqalueUUofnoothercounters.XTheUUmacrob\eval_expr_to{hTKß'E-Xinte}'gervariable[i}{hintegerexpressionci}IFile:qficommon.dtx@76MBsoIloGcally0assigns1thevqalueofhinte}'gerexpressionci0tohTKß'E-Xintegervariable[i0(which Iisanintegervqariableasde nedin[6]).]\g_eval_expr_todoGesthesameglobally*.E233ShpkgKi E234S\newcount\resultE235S\def\eval_expr#1{\global\result=#1\x_relax}E236S\def\eval_expr_to#1#2{\eval_expr{#2}#1=\result}E237S\def\g_eval_expr_to#1#2{\eval_expr{#2}\global#1=\result}E238Sh=pkgKiZ\TypesetIntegerExpressionIIn>fontdoGcthe?maintaskisinsteadtotypGesettheexpressionasamathematicalIformula,FbutCinBsomecasesonewantsBtoknowBitsvqalueaswell(ifpGossible).9There-Ifore;_things;`getabitmorecomplexinthatcontext.i Thetop-level;`commandthereIisb\TypesetIntegerExpression{hinte}'gerexpressionci}IwhichWtypGesetstheVhinte}'gerܗexpressionciby rstformingV(inthe\FD@expressionImacro)xcoGdewfortypesettingtheintegerwexpression.J~\TypesetIntegerExpressionIshouldUUbGeonlybeusedinmathmode.XMost}ofthe|workin\TypesetIntegerExpressioniscarriedoutbytheI\FD@eval@exprEmacroandhenceF\TypesetIntegerExpressionsetsacoupleofIotherhvqariablesiasexplainedbGelow. Apartfromthefactthat\FD@eval@exprIdoGesn'tactuallytypesetanything,themaindi erencebetweenitand\Typeset-IIntegerExpressionf˲isfthatthelatteralsoacceptscoGdethatafterexpansionwillIbGecomeintegerexpressions,0whereastheformerrequiresthatallsuchmacroshaveI rstUUbGeenexpanded.E239ShdoAceLi E240S\newcommand\TypesetIntegerExpression[1]{%E241ap\protected@edef\@tempa{#1}%E242ap\expandafter\FD@eval@expr\expandafter{\@tempa}%E243ap\FD@expressionE244S}\FD@expression$\FD@resultL\FD@priority \FD@bracket@level$EFD@evaluate@switc9hIThe'\FD@expressionmacro,d\FD@resultand\FD@bracket@levelcountre-Igisters,the\FD@prioritychardeftoken,andtheFD@evaluate@switchareusedIbyFfontdoGc"rwhen"sformattingandevqaluatinganintegerexpression. TheyareallIassignedUUglobally*.XThes\FD@expressiontmacrocontainscoGdefortypGesettinganexpression.I\FD@priority|is}achardeftoken}whosenumerical}vqaluespGeci esthepriorityofItheUUoutermostopGerationin\FD@expressionaccordingtothefollowingtable:X0bOutermostUUopGerationis+or.X1bOutermostRopGerationisQexplicitmultiplication()ordivision=.IfitisonebofUUthefactorsinaproGductthenthatmultiplicationmustbGeexplicit.X2bOutermostB~opGerationisBexplicitmultiplication.kIfitistobGetherightfactorbinUUaproGduct,thenthemultiplicationmustbGemadeexplicittoo.X3bOutermostopGerationisexplicitmultiplication.[KItdoesnotneedtobeexpli-bcitlyUUmultiplied.IFile:qficommon.dtx@77NwsoX4bOutermost@copGerationis@bimplicitmultiplication(juxtaposition),Dunarypre x b(unary6)or7somethingwhichisbracketedanyway*.|kIfitisto7bGetherightbfactorinaproGduct,thenthatmultiplicationshouldbemadeexplicittoo.U>AbtypicalUUexampleofthiskindofthingisanexplicitnegativenumbGer.X5bOutermost+opGerationisimplicit+multiplication(juxtaposition)orsomethingbwhichUUisbracketedanyway*.qItdoGesnotneedtobeexplicitlymultiplied.X6bTheexpressionisanexplicitnon-negativenumbGer.7pIfitistobetherightbfactorUUinaproGduct,thenthemultiplicationshouldbemadeexplicit.I\FD@bracket@levelkeepstrackofwhatparenthesissizeonemustusetocovertheIexpression)in\FD@expression:\0isthenormalsize,21is\bigsize,22is\Bigsize,Ietc.TheaFD@evaluate@aswitchspGeci eswhether\FD@eval@exprshouldtrytoI(upGonentry)ormanagedto(afteritiscompleted)evqaluatetheintegerexpressionI(truenRisnQevqaluate,tfalseisdon'tbGother).WhenthevqaluehasbGeenevqaluated,titisIreturnedUUin\FD@result.E245S\newcount\FD@result E246S\newcount\FD@bracket@levelE247S\def\FD@evaluate@true{\global\let\ifFD@evaluate@\iftrue}E248S\def\FD@evaluate@false{\global\let\ifFD@evaluate@\iffalse}E249S\FD@evaluate@falseb\FD@eval@exprITheUU\FD@eval@exprmacrohasthesyntaxb\FD@eval@expr{hinte}'gerexpressionci}IIt_QputscoGdefortypesetting_Rthehinte}'gerexpressionci_Qinthe\FD@expressionmacro, Isets\FD@bracket@levelܲtothecorrespGondingvqalue,%andifFD@evaluate@istrueIitUUalsotriestoevqaluatetheexpressionandputtheresultin\FD@result.XMoreprecisely*,T\FD@eval@expronlyhandlesthehTKß'E-X@numb}'ericasesofintegerIexpression.In\othe\pothercasesthe rsttokenintheintegerexpressionisarobustIcommandUUwhichshouldtakecareofbuildingtheexpressionasneeded.E250S\def\FD@eval@expr#1{% E251ap\expandafter\expandafter\expandafter\ifxE252~0\expandafter\@car#1\x@relax\@nil\protectE253p2#1%E254ap\else\ifcat\expandafter\noexpand\@car#1\x@relax\@nil0%E255p2\global\FD@result=#1\x@relaxE256p2\xdef\FD@expression{\the\FD@result}%E257p2\global\chardef\FD@priority=\ifnum\FD@result<\z@4\else6\fiE258p2\global\FD@bracket@level=\z@E259ap\elseE260p2\begingroupE261p2\MakePrintable\@tempa{FD@swa}{#1}%E262p2\global\FD@bracket@level=\ifFD@swa\z@\else\@ne\fiE263p2\protected@xdef\FD@expression{\protect\mbox{\texttt{\@tempa}}}%E264p2\endgroupE265p2\global\chardef\FD@priority=5%E266p2\FD@evaluate@falseE267ap\fi\fiE268S}E269Sh=doAceLiIFile:qficommon.dtx@78OsoINote:NItisimpGortantthatallgroupsthatarestartedorendedduringtheevqal- Iuation)ofanintegerexpressionareof\begingrouptypGe,^since\bgroupgroupsIa ectUUspacinginmathmoGde.+\addITheUU\addcommandhasthesyntaxUUb\add{hinte}'gerexpressionci}{hintegerexpressionci}UVIItUUrepresentsthesumofthetwohinte}'gerexpressioncis. UE270ShpkgKi E271S\def\add#1#2{E272ap#1E273ap\bgroupE274p2\a_count=\resultE275p2\eval_expr{#2}E276p2\global\advance\result\a_countE277ap\egroupE278S}E279Sh=pkgKiE280ShdoAceLiE281S\DeclareRobustCommand\add[2]{%E282ap\begingroupE283ap\FD@eval@expr{#1}%E284ap\let\@tempa=\FD@expressionE285ap\ifFD@evaluate@\a@count=\FD@result\fiE286ap\b@count=\FD@bracket@levelE287ap\FD@eval@expr{#2}%E288ap\protected@xdef\FD@expression{\@tempa+\FD@expression}%E289ap\ifFD@evaluate@\global\advance\FD@result\a@count\fiE290ap\ifnum\FD@bracket@level<\b@countE291p2\global\FD@bracket@level=\b@countE292ap\fiE293ap\global\chardef\FD@priority=\z@E294ap\endgroupE295S}E296Sh=doAceLi+\subITheUU\subcommandhasthesyntaxUUb\sub{hinte}'gerexpressionci}{hintegerexpressionci}UVIItUUrepresentsthedi erencebGetweenthetwohinte}'gerexpressioncis. UE297ShpkgKiE298S\def\sub#1#2{E299ap#1E300ap\bgroupE301p2\a_count=\resultE302p2\eval_expr{#2}E303p2\advance\a_count-\resultE304p2\global\result=\a_countE305ap\egroupE306S}E307Sh=pkgKiE308ShdoAceLiE309S\DeclareRobustCommand\sub[2]{%IFile:qficommon.dtx@79PƠsoE310ap\begingroup E311ap\FD@eval@expr{#1}%E312ap\let\@tempa=\FD@expressionE313ap\ifFD@evaluate@\a@count=\FD@result\fiE314ap\b@count=\FD@bracket@levelE315ap\FD@eval@expr{#2}%E316ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE317ap\protected@xdef\FD@expression{\@tempa-\FD@expression}%E318ap\ifFD@evaluate@E319p2\advance\a@count-\FD@resultE320p2\global\FD@result=\a@countE321ap\fiE322ap\ifnum\FD@bracket@level<\b@countE323p2\global\FD@bracket@level=\b@countE324ap\fiE325ap\global\chardef\FD@priority=\z@E326ap\endgroupE327S}p \FD@subexpression f\FD@commapenaltyITheUU\FD@subexpressionmacrohasthesyntax@b\FD@subexpression{hmathmo}'demateriali}IIt shouldonly bGeusedinmathmoGdeandproducesresults verysimilarto Ihmath5mmo}'demateriali,0butitloGcallyincreasesallthemath-relatedpGenaltiesbyI\FD@commapenalty:forwhenthemathmoGdematerialisconverted:toahorizontalIlist.qThisUUallowslinebreakingtotakenoticeoflogicalnestinginexpressions.X\FD@commapenalty8isusedasacompanionof\relpenaltyand\binoppenalty,Ibut?whichisusedaftercommas(whereTU>'ExXdoGesn'tinsertpenaltiesautomatic-Ially). E328S\def\FD@subexpression#1{${% E329ap\advance\binoppenalty\FD@commapenaltyE330ap\advance\relpenalty\FD@commapenaltyE331ap\advance\FD@commapenalty\FD@commapenaltyE332ap$#1$}$%E333S}E334S\newcount\FD@commapenaltyE335S\FD@commapenalty=\binoppenaltyE336S\advance\FD@commapenalty\relpenalty \FD@bracket@expressionIThe8\FD@bracket@expressionbrackets8theexpressioncurrentlyin\FD@expression Iby8thesuitablesizeofparenthesesandupGdates\FD@bracket@leveland\FD@priorityIaccordingly*. E337S\def\FD@bracket@expression{% E338ap\protected@xdef\FD@expression{%E339p2\ifcase\FD@bracket@level\or\protect\bigl\or\protect\Bigl\orE340~0\protect\biggl\else\protect\Biggl\fi(%E341p2\protect\FD@subexpression{\FD@expression}%E342p2\ifcase\FD@bracket@level\or\protect\bigr\or\protect\Bigr\orE343~0\protect\biggr\else\protect\Biggr\fi)%E344ap}%E345ap\global\chardef\FD@priority=5%E346ap\global\advance\FD@bracket@level\@neE347S}IFile:qficommon.dtx@80QsoE348Sh=doAceLi+\int \FD@simple@intITheUU\intcommandhasthesyntaxb\int{hstringexpr}'essionci}IIt?isusedto?representthevqalueofthefontinstintegerwhose?nameisthevqalueof ItheUUhstringexpr}'essionciinintegerexpressions.XTheć\FD@simple@intĈmacrotaketheprintableĈstringformofthenameofIan xinteger wvqariableasitsargumentandtypGesetstheprintedrepresentation wofthisIinteger,ebutd*itd)shouldonlybGeusedwhentheargumentisasimplestringexpression.IWhenxthexargumentisnotasimplestringexpression,\FD@integer@funcshouldIbGeUUusedinstead.q\FD@simple@intshouldonlybecalledinhorizontalmode.E349Shpkg Mi\def\int#1{\csnamei-#1\endcsname} E350ShdoAceLiE351S\DeclareRobustCommand\int[1]{%E352ap\begingroupE353ap\MakePrintable\@tempa{FD@swa}{#1}%E354ap\protected@xdef\FD@expression{%E355p2\ifFD@swaE356~0\text{\protect\FD@simple@int{\@tempa}}%E357p2\elseE358~0\protect\FD@integer@func{int}{\@tempa}%E359p2\fiE360ap}%E361ap\global\chardef\FD@priority=5%E362ap\global\FD@bracket@level=\ifFD@swa\z@\else\@ne\fiE363ap\FD@evaluate@falseE364ap\endgroupE365S}E366S\def\FD@simple@int#1{{\normalfont\itshape#1\/}}f\FD@integer@funcITheUU\FD@integer@funcmacrohasthesyntaxb\FD@integer@func{hname[i}{har}'gumentظi}IIt6/isused6.fortypGesettingthehname[i(har}'gumentظi)ofaninteger-vqaluedfunction Iwhich'ExXinthatcasecentersIitUUvertically*.E367S\def\FD@integer@func#1#2{% E368ap\mathop{\mathrm{#1}{}}(\text{\FD@typeset@string{#2}})%E369S}E370Sh=doAceLi+\negITheUU\negcommandhasthesyntaxb\neg{hinte}'gerexpressionci}IItUUrepresentsthenegativeofthehinte}'gerexpressionci.E371Shpkg Mi\def\neg#1{#1\global\result=-\result} E372ShdoAceLiIFile:qficommon.dtx@81R%soE373S\DeclareRobustCommand\neg[1]{% E374ap\FD@eval@expr{#1}%E375ap\ifnum5>\FD@priority\FD@bracket@expression\fiE376ap\protected@xdef\FD@expression{-\FD@expression}%E377ap\global\chardef\FD@priority=4%E378ap\ifFD@evaluate@\global\FD@result=-\FD@result\fiE379S}E380Sh=doAceLi+\mulITheUU\mulcommandhasthesyntaxb\mul{hinte}'gerexpressionci}{hintegerexpressionci}IItUUrepresentstheproGductofthetwohinte}'gerexpressioncis.E381ShpkgKi E382S\def\mul#1#2{E383ap#1E384ap\bgroupE385p2\a_count=\resultE386p2\eval_expr{#2}E387p2\global\multiply\result\a_countE388ap\egroupE389S}E390Sh=pkgKiXThe;mainprobleminthefontdoGcde nitionof\mulistodeterminewhetherthe ImultiplicationshouldbGemadeexplicitornot,yandwhatprioritycoGdetheresultingIexpressionݫshouldbGeݬgiven.IItturnsoutthatiftherightfactorhaspriorityݬ1(itisIa`quotient`oraproGductthatendswithaquotient)thenthecombinedexpressionIwill,bGetoo,4whereasif,itisn'tbuttheleftfactorhaspriority1thenthecombinedIexpressionwillgetpriority2.TheremainingcaseswillbGeexplicitorimplicitIdepGendingՖon՗theparityofthepriorityoftherightexpression,andprioritywillIbGeUUoddorevendependingontheparityofthepriorityoftheleftexpression.E391ShdoAceLi E392S\DeclareRobustCommand\mul[2]{%E393ap\begingroupE394ap\FD@eval@expr{#1}%E395ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE396ap\let\@tempa=\FD@expressionE397ap\ifFD@evaluate@\a@count=\FD@result\fiE398ap\b@count=\FD@bracket@levelE399ap\let\FD@left@priority=\FD@priorityE400ap\FD@eval@expr{#2}%E401ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE402ap\protected@xdef\FD@expression{%E403p2\@tempaE404p2\if\ifnum\FD@left@priority=\@nee%E405\else\ifnum\FD@priority<\thr@@e%E406\else\ifodd\FD@priorityi\elsee\fi\fi\fie%E407~0\cdotE408p2\fiE409p2\FD@expressionE410ap}%E411ap\ifFD@evaluate@\global\multiply\FD@result\a@count\fiIFile:qficommon.dtx@82S0soE412ap\ifnum\FD@bracket@level<\b@count E413p2\global\FD@bracket@level=\b@countE414ap\fiE415ap\a@count=%E416p2\ifnum\FD@priority=\@ne1%E417p2\else\ifnum\FD@left@priority=\@ne2%E418p2\else\ifodd\FD@left@priorityE419~0\ifodd\FD@priority5\else3\fiE420p2\elseE421~0\ifodd\FD@priority4\else2\fiE422p2\fi\fi\fiE423ap\global\chardef\FD@priority=\a@countE424ap\endgroupE425S}E426Sh=doAceLi+\divITheUU\divcommandhasthesyntaxUUb\div{hinte}'gerexpressionci}{hintegerexpressionci}UVIIt>frepresentsthequotientofthe>etwohinte}'ger~expressioncis,Bas>fcomputedbyTU>'ExX's I\divideUUcommand:qnon-integerquotientsareroundedtowardszero. UE427ShpkgKiE428S\def\div#1#2{E429ap#1E430ap\bgroupE431p2\a_count=\resultE432p2\eval_expr{#2}E433p2\divide\a_count\resultE434p2\global\result=\a_countE435ap\egroupE436S}E437Sh=pkgKiE438ShdoAceLiE439S\DeclareRobustCommand\div[2]{%E440ap\begingroupE441ap\FD@eval@expr{#1}%E442ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE443ap\let\@tempa=\FD@expressionE444ap\ifFD@evaluate@\a@count=\FD@result\fiE445ap\b@count=\FD@bracket@levelE446ap\FD@eval@expr{#2}%E447ap\ifnum4>\FD@priority\FD@bracket@expression\fiE448ap\ifnum\FD@bracket@level<\b@countE449p2\global\FD@bracket@level=\b@countE450ap\fiE451ap\protected@xdef\FD@expression{%E452p2\@tempaE453p2\ifcase\FD@bracket@level\or\protect\big\or\protect\Big\orE454~0\protect\bigg\else\protect\Bigg\fi/%E455p2\FD@expressionE456ap}%E457ap\ifFD@evaluate@E458p2\divide\a@count\FD@resultE459p2\global\FD@result=\a@countIFile:qficommon.dtx@83T<3soE460ap\fi E461ap\global\chardef\FD@priority=\@neE462ap\endgroupE463S}t\FD@eval@spec@exprITheUU\FD@eval@spec@exprmacrohasthesyntaxb\FD@eval@spec@expr{hinte}'gerexpressionci}{hspec-commandi} q{hr}'ep-commandi}IItdoGesprettymuchthesamethingas\FD@eval@expr,butifthe rsttokeninItheUUhinte}'gerexpressionciisthehspec-commandithenitwilldobhr}'ep-commandihintegerexpressionciIinsteadbofthenormalactivities.]ThisisusefulforopGerationsthatarenormallyIdenotedUUasn-aryopGerationsratherthatbinaryones,i.e.,for\maxand\min. E464S\def\FD@eval@spec@expr#1#2#3{% E465ap\expandafter\ifx\@car#1\x@relax\@nil#2%E466p2#3#1%E467ap\elseE468p2\FD@eval@expr{#1}%E469ap\fiE470S}E471Sh=doAceLi+\maxITheUU\maxcommandhasthesyntaxb\max{hinte}'gerexpressionci}{hintegerexpressionci}IItUUrepresentsthemaximumofthetwohinte}'gerexpressioncis.E472ShpkgKi E473S\def\max#1#2{E474ap#1E475ap\bgroupE476p2\a_count=\resultE477p2\eval_expr{#2}E478p2\ifnum\a_count>\result\global\result=\a_count\fiE479ap\egroupE480S}E481Sh=pkgKiE482ShdoAceLiE483S\DeclareRobustCommand\max[2]{%E484ap\begingroupE485ap\toks@={}%E486ap\a@count=-\maxdimenE487ap\b@count=\z@E488ap\FD@eval@spec@expr{\max{#1}{#2}}{\max}{\FD@maxmin@comma}%E489ap\ifnum\a@count>\FD@bracket@levelE490p2\global\FD@bracket@level=\a@countE491ap\fiE492ap\protected@xdef\FD@expression{%E493p2\protect\plainmaxE494p2\ifcase\FD@bracket@level\protect\@firstofone\or\protect\biglE495~0\or\protect\Bigl\or\protect\biggl\else\protect\BigglIFile:qficommon.dtx@84UEsoE496p2\fi{\{}% E497p2\the\toks@E498p2\protect\FD@subexpression{\FD@expression}%E499p2\ifcase\FD@bracket@level\protect\@firstofone\or\protect\biglE500~0\or\protect\Bigl\or\protect\biggl\else\protect\BigglE501p2\fi{\}}%E502ap}%E503ap\ifFD@evaluate@E504p2\ifnum\a@count>\FD@result\global\FD@result=\a@count\fiE505ap\fiE506ap\global\chardef\FD@priority=5%E507ap\global\advance\FD@bracket@level\@neE508ap\endgroupE509S}E510Sh=doAceLi+\minITheUU\mincommandhasthesyntaxb\min{hinte}'gerexpressionci}{hintegerexpressionci}IItUUrepresentstheminimumofthetwohinte}'gerexpressioncis. E511ShpkgKiE512S\def\min#1#2{E513ap#1E514ap\bgroupE515p2\a_count=\resultE516p2\eval_expr{#2}E517p2\ifnum\a_count<\result\global\result=\a_count\fiE518ap\egroupE519S}E520Sh=pkgKiE521ShdoAceLiE522S\DeclareRobustCommand\min[2]{%E523ap\begingroupE524ap\toks@={}%E525ap\a@count=\maxdimenE526ap\b@count=\z@E527ap\FD@eval@spec@expr{\min{#1}{#2}}{\min}{\FD@maxmin@comma}%E528ap\ifnum\a@count>\FD@bracket@levelE529p2\global\FD@bracket@level=\a@countE530ap\fiE531ap\protected@xdef\FD@expression{%E532p2\protect\plainminE533p2\ifcase\FD@bracket@level\protect\@firstofone\or\protect\biglE534~0\or\protect\Bigl\or\protect\biggl\else\protect\BigglE535p2\fi{\{}%E536p2\the\toks@E537p2\protect\FD@subexpression{\FD@expression}%E538p2\ifcase\FD@bracket@level\protect\@firstofone\or\protect\biglE539~0\or\protect\Bigl\or\protect\biggl\else\protect\BigglE540p2\fi{\}}%E541ap}%E542ap\ifFD@evaluate@E543p2\ifnum\a@count<\FD@result\global\FD@result=\a@count\fiE544ap\fiIFile:qficommon.dtx@85VOsoE545ap\global\chardef\FD@priority=5% E546ap\global\advance\FD@bracket@level\@neE547ap\endgroupE548S}f\FD@maxmin@commaIThe\u\FD@maxmin@commamacrodoGesmostoftheworkfor\maxand\mininfontdoc. IInsomesenseitinsertsthecommasbGetweentheoperands,ʐbutitalsotakescareofIevqaluatingUUthemaximum/minimumUUanddeterminingthepropGerbracketingUUlevel.XThesequenceofarguments(separatedbycommas)iscompiledin\toks@.IThegreatest/leastvqalueofanargumentfoundsofariskeptin\a@count,andtheIgreatestUUbracketinglevelfoundiskeptin\b@count.E549S\def\FD@maxmin@comma#1#2#3{% E550ap\FD@eval@spec@expr{#2}{#1}{\FD@maxmin@comma}%E551ap\toks@=\expandafter{\the\expandafter\toks@E552p2\expandafter\protect\expandafter\FD@subexpressionE553p2\expandafter{\FD@expression}%E554p2,\penalty\FD@commapenalty\,%E555ap}E556ap\ifFD@evaluate@E557p2\ifnum\a@count\ifx\max#1<\else>\fi\FD@resultE558~0\a@count=\FD@resultE559p2\fiE560ap\fiE561ap\ifnum\b@count<\FD@bracket@level\b@count=\FD@bracket@level\fiE562ap\FD@eval@spec@expr{#3}{#1}{\FD@maxmin@comma}%E563S}E564Sh=doAceLi&`\half $\otherhalfITheUU\halfand\otherhalfmacroshaveUUthesyntaxesb\half{hinte}'gerexpressionci} b\otherhalf{hinte}'gerexpressionci}IThey8bGothrepresentonehalf8ofthehinte}'gereexpressionci,qbut8theydon'troundIit(thesameway*.\half(doGesroundingasspeci ed(in[5,]p.237](towards(evenIintegers);whereas\otherhalfdoGes;ittheotherway(towardsoGddintegers).iJThisImeansUUthatb\add{\half{hIE3i}}{\otherhalf{hIEi}}IwillUUalwayssumuptopreciselythesameasthehIE3iintegerexpression.E565ShpkgKi E566S\def\half#1{E567ap#1\x_relaxE568ap\ifodd\resultE569p2\global\advance\result\@neE570p2\global\divide\result\tw@E571p2\ifodd\result\global\advance\result\m@ne\fiE572ap\elseE573p2\global\divide\result\tw@E574ap\fiE575S}E576S\def\otherhalf#1{E577ap#1\x_relaxIFile:qficommon.dtx@86WXsoE578ap\ifodd\result E579p2\global\advance\result\@neE580p2\global\divide\result\tw@E581p2\ifodd\result\else\global\advance\result\m@ne\fiE582ap\elseE583p2\global\divide\result\tw@E584ap\fiE585S}E586Sh=pkgKiE587ShdoAceLiE588S\DeclareRobustCommand\half[1]{%E589ap\begingroupE590ap\FD@eval@expr{#1}%E591ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE592ap\a@count=%E593p2\ifnum\FD@priority=\@ne1%E594p2\else\ifodd\FD@priority5%E595p2\else3\fi\fiE596ap\global\chardef\FD@priority=\a@countE597ap\protected@xdef\FD@expression{%E598p2\protect\frac{1}{2}%E599p2\ifnum\FD@priority>\thr@@\else\cdot\fiE600p2\FD@expressionE601ap}%E602ap\ifFD@evaluate@E603p2\ifodd\FD@resultE604~0\global\advance\FD@result\@neE605~0\global\divide\FD@result\tw@E606~0\ifodd\FD@result\global\advance\FD@result\m@ne\fiE607p2\elseE608~0\global\divide\FD@result\tw@E609p2\fiE610ap\fiE611ap\endgroupE612S}E613S\DeclareRobustCommand\otherhalf[1]{%E614ap\begingroupE615ap\FD@eval@expr{#1}%E616ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE617ap\a@count=%E618p2\ifnum\FD@priority=\@ne1%E619p2\else\ifodd\FD@priority5%E620p2\else3\fi\fiE621ap\global\chardef\FD@priority=\a@countE622ap\protected@xdef\FD@expression{%E623p2\protect\frac{1}{2}%E624p2\ifnum\FD@priority>\thr@@\else\cdot\fiE625p2\FD@expressionE626ap}%E627ap\ifFD@evaluate@E628p2\ifodd\FD@resultE629~0\global\advance\FD@result\@neE630~0\global\divide\FD@result\tw@E631~0\ifodd\FD@result\else\global\advance\FD@result\m@ne\fiIFile:qficommon.dtx@87XcàsoE632p2\else E633~0\global\divide\FD@result\tw@E634p2\fiE635ap\fiE636ap\endgroupE637S}E638Sh=doAceLi!|\scaleITheUU\scalecommandhasthesyntaxub\scale{hinte}'gerexpressionci}{hintegerexpressionci}tIIt&>represents&?theresultofmultiplying&?the rsthinte}'gerTexpressionci&>by&?asmany IthousandsOasisspGeci edbythesecondhinte}'gerexpressionci.InOpractice,I\scale{hie1[i}{hie2i}UUisverysimilartob\div{\mul{hie1[i}{hie2i}}{1000}uIbut\scalealsotriestodopropGerrounding(notehoweverthat\scaleingby500IisUUnotroundedpropGerly;use\halfinstead). ]E639ShpkgKi E640S\def\scale#1#2{E641ap#1E642ap\bgroupE643p2\a_count=\resultE644p2\eval_expr{#2}E645p2\global\multiply\result\a_countE646p2\rounded_thousandthsE647ap\egroupE648S}E649Sh=pkgKi]XTheGlsecondGk(scalingfactor)argumentof\scaleisusuallyverysimple,and IinZthatcasethe\scalewillbGeformattedasafraction(containingthesecondIargument)UUmultipliedbythe rstargument.E650ShdoAceLi E651S\DeclareRobustCommand\scale[2]{%E652ap\begingroupE653ap\FD@eval@expr{#1}%E654ap\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE655ap\let\@tempa=\FD@expressionE656ap\ifFD@evaluate@\a@count=\FD@result\fiE657ap\b@count=\FD@bracket@levelE658ap\let\FD@left@priority=\FD@priorityE659ap\FD@eval@expr{#2}%E660ap\if\ifnum\FD@bracket@level<\@ne\ifnum\FD@priority>\thr@@E661~01\else0\fi\else0\fi1%E662p2\protected@xdef\FD@expression{%E663~0\protect\frac{\FD@expression}{1000}%E664~0\if\ifnum\FD@left@priority<\thr@@e\elseE665L\ifodd\FD@left@priorityi\elsee\fi\fie%E666]\cdotE667~0\fiE668~0\@tempaE669p2}IFile:qficommon.dtx@88YlsoE670p2\global\chardef\FD@priority=% E671~0\ifnum\FD@left@priority=\@ne1\elseE672~0\ifodd\FD@left@priority5\else3\fi\fiE673p2\global\FD@bracket@level=\b@countE674ap\elseE675p2\ifnum\FD@priority<\@ne\FD@bracket@expression\fiE676p2\protected@xdef\FD@expression{%E677~0\@tempaE678~0\if\ifnum\FD@left@priority=\@nee%E679L\else\ifnum\FD@priority<\thr@@e%E680L\else\ifodd\FD@priorityi\elsee\fi\fi\fie%E681]\cdotE682~0\fiE683~0\FD@expressionE684~0\ifcase\FD@bracket@level\or\protect\big\or\protect\BigE685]\or\protect\bigg\else\protect\Bigg\fi/1000%E686p2}%E687p2\ifnum\FD@bracket@level<\b@countE688~0\global\FD@bracket@level=\b@countE689p2\fiE690p2\global\chardef\FD@priority=\@neE691ap\fiE692ap\ifFD@evaluate@E693p2\global\multiply\FD@result\a@countE694p2\global\divide\FD@result500E695p2\ifodd\FD@resultE696~0\global\advance\FD@result\ifnum0>\FD@result-\fi\@neE697p2\fiE698p2\global\divide\FD@result\tw@E699ap\fiE700ap\endgroupE701S}E702Sh=doAceLiI߀H\rounded_thousandths \l_rounded_thousandthsIThep`\rounded_thousandthspamacrodivides\resultby1000androundstheresult ItoUUthenearestinteger.qThisisdi erentfrommb\global\divide?\result\one_thousandIsincethelatteralwaysroundspGositivenumbGersdownwardsandnegativenumbGersIupwards.X\l_rounded_thousandths7doGes6thesamething,buttotheregisterpassedasIparameterUU#1andisassignedloGcally*. nE703ShpkgKi E704S\def\rounded_thousandths{E705ap\global\divide\result\five_hundredE706ap\ifodd\resultE707p2\global\advance\resultby\ifnum0>\result-\fi1E708ap\fiE709ap\global\divide\result\tw@E710S}ۍE711S\def\l_rounded_thousandths#1{E712ap\divide#1\five_hundredE713ap\ifodd#1IFile:qficommon.dtx@89ZvΠsoE714p2\advance#1by\ifnum0>#1-\fi\@ne E715ap\fiE716ap\divide#1\tw@E717S}L\l_inv_scaleITher\l_inv_scaletakestwoarguments:)Vas#1acountregister,landas#2aTU>'ExX InumbGer.\l_inv_scale scales#1bytheinverseof#2,5ifthevqaluein#1isnIandUUthevqaluein#2ismthen\l_inv_scalecomputesq΍~^u cmex10<$Fϲ1000nFϟwfe (֍tmz^ lf,qύIwherewthewbracketsdenotewroundingtothenearestinteger,andassignsthisnumbGerItoUU#1loGcally*.E718S\def\l_inv_scale#1#2{ E719ap\multiply#1\two_thousandE720ap\divide#1#2\x_relaxE721ap\ifodd#1\advance#1\ifnum0>#1-\fi\@ne\fiE722ap\divide#1\tw@E723S}y\ifnumberITheUUcallb\ifnumber{hinte}'gerexpressionci}hreli{hintegerexpressionci}\thenIcanUUbGeusedtocomparethetwoUUintegerexpressions.qǸhr}'elimaybGe<,=,or>.E724S\def\ifnumber#1#2#3\then{ E725ap\eval_expr_to\a_count{#1}E726ap\eval_expr{#3}E727ap\ifnum\a_count#2\resultE728p2\expandafter\if_trueE729ap\elseE730p2\expandafter\if_falseE731ap\fiE732S}E733Sh=pkgKiXLikeUUtheotherconditionals,\ifnumberistreatedasbGeingtruebyxfontdoGc.E734ShdoAceLiE735S\def\ifnumber#1#2#3\then{%E736ap\FD@evaluate@falseE737ap\generic@if{%E738p2$\TypesetIntegerExpression{#1}#2\TypesetIntegerExpression{#3}$%E739ap}%E740S}E741Sh=doAceLi6I9.3gSettingv@ariablesuTIhintظi,۸hstri,anddhdimcidbGelowarestringexpressions.!hc}'ommandicanbGeanycontrol Isequence.XTheUUmacros:\setint\setstr\setdim$ \setcommandIFile:qficommon.dtx@90[sob\setint{hintظi}{hinte}'gerexpressionci} b\setstr{hstri}{hstring}i}b\setdim{hdimci}{hdimensioni}b\setcommandhc}'ommandihde nitionciIde neUUnewmacros\i-hintظi,\s-hstri,\d-hdimci,orhc}'ommandi.\i-hinti9\s-hstri\d-hdim9iXTheUUmacros:y\resetint$y\resetstr0y\resetdim<b\resetcommandb\resetint{hintظi}{hinte}'gerexpressionci}b\resetstr{hstri}{hstring}i}b\resetdim{hdimci}{hdimensioni}b\resetcommandhc}'ommandihde nitionciIrede neUUthemacros\i-hintظi,\s-hstri,\d-hdimciorhc}'ommandi.XTheUUmacros:+\int+\str+\dimb\int{hintظi}b\str{hstri}b\dim{hdimci}bhc}'ommandiIreturnUUthevqaluesof\i-hintظi,\s-hstri,\d-hdimci,orhc}'ommandi.XTheUUmacro\strintb\strint{hintظi}IreturnsUUthevqalueof\i-hintظiasastring.XTheUUmacros:3P\ifisint3P\ifisstr3P\ifisdim$L\ifiscommandb\ifisint{hintظi}\thenb\ifisstr{hstri}\thenb\ifisdim{hdimci}\thenb\ifiscommandhc}'ommandi\thenIreturn\if_trueif\i-hintظi,( \s-hstri,( \d-hdimci,orhc}'ommandirespGectivelyhaveIbGeenUUde ned,and\if_falseotherwise.XTheUUmacros:y\unsetinty\unsetstry\unsetdim$b\unsetcommandb\unsetint{hintظi}b\unsetstr{hstri}b\unsetdim{hdimci}b\unsetcommandhc}'ommandiIunde neUU\i-hintظi,\s-hstri,\d-hdimci,orhc}'ommandi.XThemacros\x_setint,\x_resetint,and\x_setstrare\privqate"versionsy\x_setint \x_resetinty\x_setstrIof d\setint,8\resetint,8and\setstrrespGectively*.TheyhavebGeenincludedtoIreducetheproblemsincaseauserturnso oneofthesecommandsandforgetstoIturnUUitonagain.XIntegersharekeptas\mathchardefsifhpGossible;acomparisionofdoingthisIversusUUnotdoingthisappGearsinSubsectionE.1.߀H\setsomething_globalITheMx\setsomething_globalMwcontrolsequenceshouldbGeeither\relaxor\global.IIt*appGears*beforethecentralassignments*inallthe\set...,\reset...,andIFile:qficommon.dtx@91\usoI\unset... commands.OTheunormaluvqalueis\relax,sothattheseassignments IareUUloGcal.XWhenthereiscounter-intuitivegrouping,9anditcouldseemthatTU>'ExXshouldInot8bGeinsideagroupatall|i.e.,qbetween8\installfontsand\endinstallfonts|IoneOcanmakeOthebasicassignmentcommandsactmoreOlogicalbysettingI\setsomething_globalUUto\global.E742ShpkgKi E743S\let\setsomething_global=\x_relaxy\x_setint\setinty\x_setstr\setstr$\setdim0 \setcommandE744S\def\x_setint#1#2{E745ap\x_cs\ifx{i-#1}\x_relaxE746p2\x_resetint{#1}{#2}E747ap\fiE748S}E749S\let\setint=\x_setintE750S\def\x_setstr#1#2{E751ap\x_cs\ifx{s-#1}\x_relaxE752p2\setsomething_global\x_cs\edef{s-#1}{#2}E753ap\fiE754S}E755S\let\setstr=\x_setstrE756S\def\setdim#1#2{E757ap\x_cs\ifx{d-#1}\x_relaxE758p2\a_dimen=#2\x_relaxE759p2\setsomething_global\x_cs\edef{d-#1}{\the\a_dimen}E760ap\fiE761S}E762S\def\setcommand#1{E763ap\ifx#1\undefined_commandE764p2\setsomething_global\expandafter\def\expandafter#1E765ap\elseE766p2\expandafter\def\expandafter\a_macroE767ap\fiE768S}E769Sh=pkgKiXInufontdoGc,~\setint,~\setstr,and\setdimprintheadings.ӎThereisnoneedIfortheprivqateforms\x_setintand\x_setstr.u@\setcommand,q nally*,rdoGestheIsamethingasinfontinst; theassignmentisglobalbGecauseofgroupingnotpresentIinUUfontinst.E770ShdoAceLiE771S\newcommand\setint[2]{%E772ap\Bheading{Default}\(\TypesetIntegerExpression{\int{#1}}\)=E773ap\(\TypesetIntegerExpression{#2}\)%E774S}E775S\newcommand\setstr[2]{%E776ap\Bheading{Default}\TypesetStringExpression{\str{#1}}=E777ap\TypesetStringExpression{#2}%E778S}E779S\newcommand\setdim[2]{%E780ap\a@dimen=#2\relaxE781ap\Bheading{Default}\TypesetStringExpression{#1}dimen=\the\a@dimenIFile:qficommon.dtx@92]soE782S} E783S\def\setcommand#1{\ifx#1\undefined@commandE784ap\expandafter\gdef\expandafter#1\elseE785ap\expandafter\gdef\expandafter\a@command\fi}E786Sh=doAceLi \x_resetint y\resetint y\resetstr y\resetdim$ b\resetcommandE787ShpkgKiE788S\def\x_resetint#1#2{E789ap\eval_expr{#2}E790ap\setsomething_globalE791ap\ifnum\result<\max_mathchardefE792p2\ifnum0>\resultE793~0\x_cs\edef{i-#1}{\the\result}E794p2\elseE795~0\x_cs\mathchardef{i-#1}=\resultE796p2\fiE797ap\elseE798p2\x_cs\edef{i-#1}{\the\result}E799ap\fiE800S}E801S\let\resetint=\x_resetintE802S\def\resetstr#1#2{\setsomething_global\x_cs\edef{s-#1}{#2}}E803S\def\resetdim#1#2{E804ap\a_dimen=#2E805ap\setsomething_global\x_cs\edef{d-#1}{\the\a_dimen}E806S}E807S\def\resetcommand#1{\setsomething_global\def#1}E808Sh=pkgKiXIn'fontdoGc, \resetint,\resetstr,and\resetdimprintheadings.Z\x_relaxE888ap\b_count=0E889ap\a_toks={}E890ap\loop\ifnum\b_count<\a_countE891p2\advance\b_count1E892p2\a_toks=\expandafter{\the\expandafter\a_toks\expandafter####E893~0\the\b_count}E894ap\repeatE895ap\setsomething_global\expandafter\def\expandafter#1\the\a_toks{}E896S}IFile:qficommon.dtx@95`soE897S\def\count_hashes#1#2{ E898ap\if\hash_char#1E899p2\advance\a_count1E900ap\elseE901p2\if-#1E902~0\if>#2E903]\let\next=\gobble_to_xrelaxE904p2\fi\fiE905ap\fiE906ap\next#2E907S}E908S\def\gobble_to_xrelax#1\x_relax{}E909Sh=pkgKiXControlUUsequencesoftheformb\FD@s-hname[i \FD@s-hname iIareusedbyyfontdoGctostorethevqaluesofstringvariableswhichhavebGeenassigned Ivqalues;"Ǹhname[iisthenameofthestringvariable. Unlikethecaseinfontinst,Ithe.fontdoGc/\setstrcommanddoesnot/assignvqaluestostringvqariables,GbutI\SetStringVariableUUdoGes.XThehcontentsofhthe\FD@s-hname[imacrosaren'treallythestringvqalues,mxbutIcoGdethatwillappendtheprintableformofthecorrespondingstringexpressionIto\toks@andupGdateothervqariablesusedby\MakePrintableaccordingly*.QTyp-IicallyUUitmightloGoksomethinglikeb\toks@=\expandafter{\the\toks@?ab}IwhenUUthevqalueofthestringisab.t\SetStringVariableITheUU\SetStringVariablecommandhasthesyntaxb\SetStringVariable{hvariablename[i}{hnewvaluei}Iwhere~hvariable\c_count>\else<\fiE945p2}E946p2\def\next##1##2##3\endfor(#1){##2\for_i{##1}{##3}}E947p2\next{#1}E948ap\fiE949S}IFile:qficommon.dtx@97bsoXTheUUmacro\for-hname[iwillcontainL\for-hname i(bhstepi\x_relax\ifnumhstopihr}'eli)Ihstepix#isx$thevqalueofthehstepiparameterof\for,computedwhentheloGopwas Ientered!andnowexpressed indigits.+hstopiislikewise forthehstopiparameter.Ihr}'eli#is$>or<,'depGendingonwhetherhstepiispGositiveornegativerespGectively*.IThereasonforthiscuriousde nitionwillbGeappearentinthelightofthede nitionIofUU\for_ii.X\for_iUUisexpandedinthecontextb\for_i{hname[i}{hb}'odycodei})IAlso'remembGer,cwhen&readingthede nitionbGelow,dthat\ifnumkeepsonexpand-IingUUtokensuntilithasfoundabhnumb}'erihrelationcihnumberi)Istructure.qItUUisthereforepGossibletonest\ifnumslikethis!הE950S\def\for_i#1#2{ E951ap\setsomething_global\x_cs\def{body-#1}{#2}E952ap\ifnum\b_count\ifnum0>\c_count>\else<\fi\a_countE953p2\expandafter\gobble_twoE954ap\elseE955p2\csnamebody-#1\expandafter\endcsnameE956ap\fiE957ap\for_ii{#1}E958S}הXTheUUmacro\body-hname[iexpandstothehb}'odycodei. \body-hname i X\for_iiUUexecutesthefollowingcoGde:b\a_count=\int{hname[i}b\advance?\a_counthstepi\x_relaxb\ifnum?hstopihr}'eli\a_countq\expandafter\gobble_twob\elseq\resetint{hname[i}\a_countq\csname?body-hname[i\expandafter\endcsnameb\fib\for_ii{hname[i})Ihstepi,hstopi,and{hr}'elizarein\for-hname[i,andsincethereonlyaretwootherItokenstbGetweenshstepiandhr}'eliintheabGove,ݻonemightasswellincludestheminI\for-hname[ipaswell.3&Doingthatrequiresthatamatchinghole|thatwillbGe lledIinby\for-hname[i|ismadeinthede nitionof\for_iiandthatisthereasonIforUUitssomewhatcuriousde nition.הE959S\def\for_ii#1{ E960ap\a_count=\int{#1}E961ap\advance\a_count\csnamefor-#1\endcsname\a_countE962p2\expandafter\gobble_twoE963ap\elseE964p2\x_resetint{#1}\a_countE965p2\csnamebody-#1\expandafter\endcsnameIFile:qficommon.dtx@98cZsoE966ap\fi E967ap\for_ii{#1}E968S}X\endfor justgobblesitsargument,sothatthehstepi=0 casewillworkright.E969S\def\endfor(#1){}E970Sh=pkgKi65NotTindoc:p\for sNotTindoc:p\endforE971ShdoAceLiE972Sh=doAceLi3P\foreach $\foreach_iITheUUcommandsequenceb\foreach(hname[i){hcsep-listظi} lhb}'odycode[ib\endfor(hname[i)Iwillcausethehb}'odyRcode[itobGerepeatedonetimeforeachiteminthehcsep-listظi.Ihcsep-listظiUUisacomma-separatedlistofstrings.XAszaprecaution,thezhb}'odycode[izisnotallowedztocontainanyzemptylinesI(\par;1tokens).iIfyouwant;0tohavethevisual;0separation(forsakesof;0legibilityorIotherwise),UUputa%somewhereontheline|thatmakesitnonempty*.Xhname[ifisfusedasthenameofastringvqariable.~BeforeeachrepGetitionoftheIhb}'odycode[i,UUthisvqariablewillgetresettothenextiteminthehcsep-listظi.X\foreach...\endforpڲconstructionspcanbGenested. Vhname[iisusedbyI\foreach9toidentify8itsmatching\endfor,2sotheyneedto8bGeidenticalinI\foreachUUand\endfor.E973ShpkgKi E974S\def\foreach(#1)#2{E975ap\def\next##1\endfor(#1){E976p2\setsomething_global\x_cs\def{body-#1}{##1}E977p2\process_csep_list{\foreach_i{#1}}#2,\process_csep_list,E978ap}E979ap\nextE980S}E981S\def\foreach_i#1#2{E982ap\resetstr{#1}{#2}E983ap\csnamebody-#1\endcsnameE984S}E985Sh=pkgKiE986ShdoAceLiE987S\def\foreach(#1)#2{%E988ap\def\next##1\endfor(#1){%E989p2\@for\@tempa:=#2\do{%E990~0\SetStringVariable{#1}{\@tempa}%E991~0##1%E992p2}%E993ap}%E994ap\nextE995S}E996Sh=doAceLiIFile:qficommon.dtx@99d䳠soI9.5gCommentsuT3P\commentIInUUfontinst,\commentsimplygobblesitsargument.E997Shpkg Mi\let\comment=\gobble_oneXInRfontdoGc,Sg\commentstartsanewtextparagraphRandleavesRtheargumentto IbGetypeset.LNotethattheargumentgroupthussurvives;somecommandsmakeIuseUUofthisfact.E998ShdoAceLi E999S\def\comment{\par\noindent}A1000Sh=doAceLib\begincomment \endcommentISince\commentcannotbGeusedforacommentlongerthanoneparagraph,wealso IprovideUUthemeansofintroGducinglongercomments,bywritingb\begincommentUUhanyamountoftextظi\endcommentIThe%namesareadmittedlynotnicefromaL5ffA͉TU>'ExX$pGointofview,YbutitishardlyIworththecosttoimplementsomekindofenvironmentproGcessinginfontinst,!justIforUUthesakeofthiscommand.A1001Shpkg Mi\let\begincomment=\iffalse A1002ShdoAc Ni\let\begincomment=\iftrueA1003Shpkg/j8doAc"i\let\endcomment=\fiIFile:qficommon.dtx@100esoIFileffcIfimain.dtxꨍI10ifdEncos3dingff lesITheUUmacroy\inputetxb\inputetx{h lename[i}Iinputssh lename[i.etx,ignoringanythingsbGetweens\relaxand\encoding,and IanythingUUafter\endencoding.XTheUU lenameistransformedtolowercaseUUbGeforeopening.y\inputetxy\encodingL\endencodingLs1Shpkg/j8misc*i Ls2S\def\inputetx#1{Ls3ap\edef\lowercase_file{\lowercase{Ls4kJ\edef\noexpand\lowercase_file{#1}}}Ls5ap\lowercase_fileLs6ap\slot_number=0Ls7ap\def\relax{\let\relax=\x_relax\iffalse}Ls8ap\let\encoding=\fiLs9ap\primitiveinput\lowercase_file.etx\x_relaxI10ap\let\relax=\x_relaxI11S}I12S\let\encoding=\relaxI13S\outer\def\endencoding{\endinput}I14Sh=pkg/j8misc*iXThingsareabitmorecomplicatedinfontdoGc,sincethe\relax...\encoding I...2\endencodingmarkupmustbGeabletoworkintwodi erentways.-VInthemainI leonly\encodingactuallydoGesanything|itsets\slot@numbertozero.+Ina leIthat[#is["bGeing\inputetxed,\theymustwork["aswithfontinst:}bEverythingbGetweenI\relaxUUand\encoding,andeverythingafter\endencodingmustbGeignored.I15ShdoAceLi I16S\def\inputetx#1{%I17ap\begingroupI18p2\edef\lowercase@file{\lowercase{%I19~0\edef\noexpand\lowercase@file{#1}%I20p2}}%I21p2\lowercase@fileI22p2\global\slot@number=0%I23p2\FD@slot@known@trueI24p2\IfFileExists{\lowercase@file.etx}{%I25~0\FD@relax@encoding@tricksI26~0\@@input\@filef@undI27~0\let\relax=\x@relaxI28p2}{%I29~0\PackageError{fontdoc}{File#1.etxnotfound}%I30]{\@eha\MessageBreakYoucan\protect\inputetx\spaceI31Lsomeotherfilenow,ifyouwant.}%I32p2}IFile:qfimain.dtx101flsoI33ap\endgroup I34S}Z\FD@relax@encoding@tricksITherethe?slotanditcalls\end_do_slotandincrements\slot_numberbyoneattheIend.eBy0default,8"\do_slot0ղand\end_do_slotdonothing,but0thisisover-riddenIlater.čI51Shpkg/j8misc*iI52S\def\setslot#1{\edef\slot_name{#1}\do_slot}I53S\def\endsetslot{\end_do_slot\advance\slot_numberby1\x_relax}I54Sh=pkg/j8misc*i$\slot@nameIIn1fontdoGc,hthesame1codeconverts1hname[i1toaprintablestringandstorestheIresultin\slot@name,printsan\AheadingheadingfortheslotwhichshowtheIname[andnumbGer[oftheZslot,andprintsthecurrentautomaticslotcomment(ifIonehasbGeenset)atthebGeginningoftheslot.Attheendoftheslot,RitsimplyIincrementsUU\slot@numberbyone.čI55ShdoAceLiI56S\newcommand\setslot[1]{%I57ap\protected@edef\slot@name{%I58p2\noexpand\MakePrintable\noexpand\slot@name{FD@swa}{#1}%I59ap}%I60ap\slot@nameI61ap\FD@tight@trueI62ap\Aheading{SlotI63p2\ifFD@slot@known@I64~0\the\slot@number\spaceI65p2\elseI66~0\(\FD@slot@expression+\the\slot@number\)I67p2\fiI68p2`\FD@typeset@string{\slot@name}'%IFile:qfimain.dtx102gsoI69ap}% I70ap\protected@edef\@currentlabel{%I71p2\ifFD@slot@known@I72~0\the\slot@numberI73p2\elseI74~0\protect\(%I75~0\FD@slot@expression+\the\slot@numberI76~0\protect\)%I77p2\fiI78p2\space(\protect\FD@typeset@string{\slot@name})%I79ap}%I80ap\ifFD@slot@known@\ifslot@comment@\comment{\slot@comment}\fi\fiI81S}I82S\def\endsetslot{%I83ap\global\advance\slot@number\@neI84ap\FD@tight@falseI85S}I86Sh=doAceLip3P\do_slot L\end_do_slot I87Shpkg/j8misc*iI88S\let\do_slot\empty_commandI89S\let\end_do_slot\empty_commandy\nextslot $\skipslots L\slot_number L\slot@number$ ݣFD@slot@known@switc9h0 9\FD@slot@expressionI\nextslot{hinte}'gerexpressionci} I\skipslots{hinte}'gerexpressionci}XIn'ExXnumbGer.IAlan's(Gv1.5manualandRowland'sv1.8manualbGothsaytheargumentsmustbGeInumbGers.dAllowing, arbitraryinteger, expressionswithfontinstistrivial,4NtheabGoveIimplementationcopGeswiththat, butfontdocgetsintrouble, sowhatshouldweIdoUUabGoutit?q/LHXAFAIK,allinstancesof\nextslotor\skipslotsappGearinginpresent*.etxI lesUUareexplicitnumbGers,UUnofancyconstructs.q/UVXNo,KpbutHifHa\setslotcommandappGearsina\forloopHthentheslotnumberIinthatcommandwilldepGendonthevqaluesofvariousintegerexpressionsanyway*,IsoUUwemightaswelldealwithit.q/LHXThenmatterwas nallyresolvedwhenfontdoGcwasaugmentedtohandle(andItypGeset)UUarbtraryintegerexpressions.$f\setleftboundary9\endsetleftboundaryL\do_boundaryI\setleftboundary{hglyphci}UUhslotc}'ommands!i\endsetleftboundaryXTheseEmacrosareElike\setslotand\endsetslot,buttheymerelysettheIleftTbGoundaryTligkernprogram,TtheydonotcauseanyCHARACTERpropGertylisttoIbGeiwritten.ThustheionlymetricinformationconnectedtothehglyphciargumentIthatUUiseverusedisthekernswiththisglyphontheleft.X\do_boundaryAandA\endsetleftboundaryareinitally\relax,|butarelaterIrede ned.mE128ShpkgKi E129S\def\setleftboundary#1{\edef\slot_name{#1}\do_boundary}E130S\let\endsetleftboundary\x_relaxE131S\let\do_boundary\x_relaxE132Sh=pkgKiE133ShdoAceLiE134S\newcommand\setleftboundary[1]{%E135ap\protected@edef\slot@name{%E136p2\noexpand\MakePrintable\noexpand\slot@name{FD@swa}{#1}%E137ap}%E138ap\slot@nameE139ap\FD@tight@trueE140ap\Aheading{Leftboundary`\FD@typeset@string{\slot@name}'}%E141ap\protected@edef\@currentlabel{%IFile:qfimain.dtx104isoE142p2leftboundary(\protect\FD@typeset@string{\slot@name})% E143ap}%E144S}E145S\let\endsetleftboundary=\FD@tight@falseE146Sh=doAceLiE147ShmiscZiE148S\let\setleftboundary=\gobble_oneE149S\let\endsetleftboundary=\x_relaxE150Sh=miscZi \setrightboundaryI\setrightboundary{hglyphci} XThet\setrightboundarysmacroshouldbGeusedtosetwhichslotinthefontisIusedvasurightbGoundarymarkeruifthatslotisempty*. )Itadvqances\slot_numberIjust4likea\setslot...F\endsetslot4pair,butsincetheslotwillbGeleftempty*,Ithere isnoneedforanyhslotVc}'ommands!i,andhencethereisnoneedforaclosingI\endset...commandUUeither.XIflKtherightbGoundarymarkerslotislJnottobGeleftempty(oftenunavoidable),IthenUUoneshouldusetheslotcommand\makerightboundaryinstead.WԍE151Shpkg/j8misc*i E152S\def\setrightboundary#1{E153ap\makerightboundary{#1}E154ap\advance\slot_number1\x_relaxE155S}E156Sh=pkg/j8misc*iE157ShdoAceLiE158S\newcommand\setrightboundary[1]{%E159ap\Aheading{RightboundaryslotE160p2\ifFD@slot@known@E161~0\the\slot@number\spaceE162p2\elseE163~0\(\FD@slot@expression+\the\slot@number\)E164p2\fiE165p2`\TypesetStringExpression{#1}'%E166ap}%E167ap\global\advance\slot@number\@neE168S}E169Sh=doAceLiXTheUUhslotc}'ommands!iare:y\ligature y\LigatureL\oddligature$ \nextlarger03P\varchar< \endvarcharH\usedasTt\makerightboundary`3P\Unicodeb\ligature{hlig}i}{hglyphci}{hglyphi} b\Ligature{hlig}i}{hglyphci}{hglyphi}b\oddligature{hnote[i}{hlig}i}{hglyphci}{hglyphi}b\nextlarger{hglyphci}b\varcharUUhvar}'charcommands!i\endvarcharb\usedas{hc}'ommandi}{htype[i}b\makerightboundary{hglyphci}b\Unicode{hc}'odepointظi}{hname[i}IBywdefault,=thesedonothinginfontinst,butmostofthosedefaultsareoverriddenIloGcally`inathosesituationswhereonewantsthem`todosomething.VExceptionsareI\usedas,whichisneverusedatallAFAIK,^9Maand\oddligatureand\Unicode,Iffr J= "5-:9LܼItiwÎasiintendedtob}#1#2{%E207ap\FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%E208ap${}\rightarrow{}$%E209ap\FD@typeset@string{\slot@name}${}*\lfloor$\typeset@glyph{#2}%E210S}E211S\x@cs\def{FD@lig-LIG/>}#1#2{%IFile:qfimain.dtx106k,soE212ap\FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% E213ap${}\rightarrow{}$%E214ap\typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}%E215S}E216S\x@cs\def{FD@lig-/LIG/>}#1#2{%E217ap\FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%E218ap${}\rightarrow{}$%E219ap\FD@typeset@string{\slot@name}${}*\lfloor$%E220ap\typeset@glyph{#2}${}*{}$\typeset@glyph{#1}%E221S}E222S\x@cs\def{FD@lig-/LIG/>>}#1#2{%E223ap\FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%E224ap${}\rightarrow{}$%E225ap\FD@typeset@string{\slot@name}${}*{}$%E226ap\typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}%E227S}E228Sh=doAceLi \nextlarger \usedas t\makerightboundaryE229Shpkg/j8misc*iE230S\let\nextlarger=\gobble_oneE231S\let\usedas=\gobble_twoE232S\let\makerightboundary=\gobble_oneE233Sh=pkg/j8misc*iE234ShdoAceLiE235S\def\nextlarger#1{\Bheading{Nextlarger}\typeset@glyph{#1}}E236S\def\makerightboundary#1{%E237ap\Bheading{Rightboundarymarkerslot}designation\typeset@glyph{#1}%E238S}E239Sh=doAceLi sNotTindoc:p\usedas3P\Unicode L\textunicode b\FD@codepoint L\FD@charnameISinceISO10646/UnicoGdehasbecometheprimaryreferenceforidentifyingcharac- Iters,we{?provide{>aspGecialcommentcommandforspGecifyingwhichUnicoGdechar-IacterUUcorrespGondstoaparticularslotinanencoding.qThesyntaxisb\Unicode{hc}'odepointظi}{hname[i}IwhereMthehc}'ode#pointظiMistheMfourhexadecimaldigitsthatidentifythecoGdepoint IofUUthecharacterandhname[iisthenameofthecharacter.qAnexampleisb\Unicode{0041}{LATIN?CAPITALLETTERA}IwhichUUistypGesetasbUnicoGdeUUcharacterU+0041,laUTtincapitallettera.ITheUUhname[i eldmaybGeleftempty*.XThe\Unicodecommandmakesawhole\comment,butitisalsousefultohaveIasimilarcommandforwritingsuchdataaspartofalongerparagraph.TheI\textunicodecommand,bwhichhasthesameargumentstructureas\Unicode,aisIprovidedUUforthis.qIfyouwritebsee?also\textunicode{0041}{LATINCAPITALLETTERA}forIFile:qfimain.dtx107l8soIthenUUthisistypGesetas0obseeUUalsoU+0041(laUTtincapitallettera)UUfor0nXAscaseisnotsigni cantinthecharacternamesandtheyfurthermoreusually Iseem3to3bGewrittenincapitals,:I3havechosen3totypGeset3themusingsmallcapitalsIonly*..ThisTisdoneby\FD@charname.The\FD@codepointmacrosimilarlyhandlesItypGesettingUUofcodepoints.qSeealsothehypertexoptiontothefontdocpackqage.XThefontinstand nstmscde nitionsof\Unicodearetogobblethearguments. LE240Shpkg/j8misc%i\let\Unicode=\gobble_two E241ShdoAceLiE242S\newcommand*\Unicode[2]{%E243ap\comment{%E244p2\spaceskip=\fontdimen2\fontminus1.1\fontdimen4\fontE245p2Unicodecharacter\FD@codepoint{#1}%E246p2\ifx\par#2\par\else,\FD@charname{#2}\fi.%E247p2\linepenalty=300\parE248ap}%E249S}E250S\newcommand*\textunicode[2]{%E251ap\FD@codepoint{#1}\ifx\par#2\par\else(\FD@charname{#2})\fiE252S}E253S\providecommand*\FD@codepoint[1]{\texttt{U+\uppercase{#1}}}E254S\providecommand*\FD@charname[1]{\textsc{\lowercase{#1}}}E255Sh=doAceLiS3P\charseqIMost%ocommonly%poGccurringglyphscorrespond%ptoone\Unicodecharacter,/butthis Iis2not3atalltrueingeneral|infacttheremayevenbGe3letterswhich3cannotbGeIencoGdedassinglecharacters,aastheydonotexistinprecomposedformbuthaveIto1bGeexpressed1withabaseletterandcombiningdiacriticalmark.ReasonableIcompliancewiththestandardrequiressuppGortingcharactersequencesaswellasIindividualUUcharacters.XInL,fontinst,4the\charseqL+commandisusedtospGecifysuchacharactersequence.ITheUUsyntaxisb\charseq{h\Unicodec}'ommands!i}Iwherethe h\UnicodeNc}'ommands!iisoneorseveral\Unicodecommands.ThisImeansUUthesequenceofthosecharacters.qF*orexample0nb\charseq{q\Unicode{0066}{LATIN?SMALLLETTERF}q\Unicode{0069}{LATIN?SMALLLETTERI}b}IisUUtypGesetasbUnicoGdeUUcharactersequence:lU+0066UU(laUTtinsmallletterf)lU+0069UU(laUTtinsmallletteri)0nIThisindentationismadeusingtheIfBranchenvironment,whichcouldbGecon-IsideredUUabithackish.X\charseqisgobbledinhpkg1ɸiandhmiscri,3ebutinthelattercaseitmightgetIrede ned. LE256Shpkg/j8misc%i\let\charseq=\gobble_oneIFile:qfimain.dtx108mDsoINoteUUhowtheenvironmentgrouprestoresthede nitionof\Unicode. aE257ShdoAceLi E258S\newcommand\charseq[1]{%E259ap\comment{Unicodecharactersequence:}%E260ap\begin{IfBranch}%E261p2\def\Unicode##1##2{%E262~0\noindent\FD@codepoint{##1}E263~0\ifx\par##2\par\else(\FD@charname{##2})\fiE264~0\parE265p2}%E266p2#1%E267ap\end{IfBranch}%E268S}E269Sh=doAceLi$XTheUUhvar}'charcommands!iare:\vartop \varmid\varbot$\varrepb\vartop{hglyphci} b\varmid{hglyphci}b\varbot{hglyphci}b\varrep{hglyphci}IThesetoGodobydefault,%whichisoverriddenlater,%nothinginfontinstbuttypGesetIdescriptiveUUheadingsinfontdoGc.3P\varchar\vartop\varmid\varbot$\varrep0 \endvarchar aE270Shpkg/j8misc*i E271S\let\varchar=\empty_commandE272S\let\vartop=\gobble_oneE273S\let\varmid=\gobble_oneE274S\let\varbot=\gobble_oneE275S\let\varrep=\gobble_oneE276S\let\endvarchar=\empty_commandE277Sh=pkg/j8misc*i E278ShdoAceLiE279S\def\varchar{\Bheading{Extensibleglyph:}}E280S\def\vartop#1{\Bheading{Top}\typeset@glyph{#1}}E281S\def\varmid#1{\Bheading{Middle}\typeset@glyph{#1}}E282S\def\varbot#1{\Bheading{Bottom}\typeset@glyph{#1}}E283S\def\varrep#1{\Bheading{Repeated}\typeset@glyph{#1}}E284S\let\endvarchar\relaxE285Sh=doAceLi 6\useexamplefont L\slotexample 6\setslotcomment \resetslotcomment$ \unsetslotcomment0 b\slot@comment< $\slot@fontIAsnofmv1.8offontinst,5wehaveaddedanminterfaceforautomaticmdoGcumentationof IencoGding6 les,mwhichhasbeen5developedby5MatthiasClasenaspartofhisworkIonmathfonts.QTheimplementationwasslightlymoGdi edandintegratedintothisIversionUUbyUlrikVieth.X\setslotcommentde nesadefaultslotcomment,storedinthevqariableI\slot@comment,"Fwhichissubsequentlyusedtoannotateall\setslotcommands.ITheslotcommentcanbGechangedby\resetslotcommentorturnedo byI\unsetslotcomment.X\useexamplefontwde nesadefaultvfont,\slot@font,whichwmaybGereferencedIbycalling\slotexampleinslotcommentstodisplaythecharacterorsymbGolIalloGcatedUUtothecurrentslot.IFile:qfimain.dtx109nPڠsoXT*akingUUadvqantageofthismechanism,itispGossibletowrite:b\useexamplefont{FONT}b\setslotcomment{The?symbol`\slotexample'.} b\setslot{FOO}\endsetslotb\setslot{BAR}\endsetslotb\resetslotcomment{The?character`\slotexample'.}b\setslot{BAZ}\endsetslotIinsteadUUofhavingtowrite:b\usepackage{PACKAGE-to-use-symbols-from-FONT}b\setslot{FOO}\comment{The?symbol`\foo'.}\endsetslotb\setslot{BAR}\comment{The?symbol`\bar'.}\endsetslotb\setslot{BAZ}\comment{The?character`\baz'.}\endsetslotXTheseBmacrosneverBdoanythinginfontinst,FtheyjustBgobbletheirarguments. `E286Shpkg/j8misc*i E287S\let\useexamplefont=\gobble_oneE288S\let\slotexample=\empty_commandE289S\let\setslotcomment=\gobble_oneE290S\let\resetslotcomment=\gobble_oneE291S\let\unsetslotcomment=\empty_commandE292Sh=pkg/j8misc*iE293ShdoAceLiE294S\newif\ifslot@comment@E295S\slot@comment@falseE296S\def\slot@comment{}E297S\newcommand\setslotcomment[1]{%E298ap\slot@comment@trueE299ap\gdef\slot@comment{#1}%E300S}E301S\newcommand\resetslotcomment[1]{\gdef\slot@comment{#1}}E302S\newcommand\unsetslotcomment{%E303ap\slot@comment@falseE304ap\global\let\slot@comment\@emptyE305S}E306S\let\slot@font=\nullfontE307S\newcommand\useexamplefont[1]{\font\slot@font=#1}E308S\newcommand\slotexample{%E309ap\ifFD@slot@known@{\slot@font\char\slot@number}\fiE310S}E311Sh=doAceLi b\setfontdimenIThe<\setfontdimencommandis;usedinanETX letosetafontdimen.T|The IsyntaxUUisb\setfontdimen{hfontdimenno.i}{hinte}'geri}Iwherenhfontdimenno.iandhinte}'geriarestringPexpressions.hfontdimenno.ispGe-Ici esftheffontdimentoset.Mhinte}'geriisthenameoftheintegervqariabletowhoseIvqalueUUthefontdimenwillbGeset.XWhenusedinfontinstallation,"theabGove\setfontdimencommandisequi-IvqalentUUtoIFile:qfimain.dtx110o]sob\ifisint{hinte}'geri}\then q\setint{fontdimen(hfontdimenno.i)}{\int{hinte}'geri}}b\fiIbut\setfontdimenisalsounderstoGodbythe(V)PL-to-MTXconverterasdeclar-IinganintegerthatthegeneratedMTX leshouldsettothevqalueofthefontdimenIinUUthe(V)PL.E312ShpkgKi E313S\def\setfontdimen#1#2{E314ap\ifisint{#2}\then\setint{fontdimen(#1)}{\int{#2}}\fiE315S}E316Sh=pkgKiE317Shmisc6\i\let\setfontdimen\gobble_twoE318ShdoAceLiE319S\newcommand\setfontdimen[2]{%E320ap\Bheading{Fontdimen}\TypesetStringExpression{#1}isE321ap\(\TypesetIntegerExpression{\int{#2}}\)%E322S}E323Sh=doAceLi!|\labelIfontinstuandu nstmscde nestheL5ffA͉TU>'ExX\labelcommandtogobbleitsargument, IsoUUthatonecanuseittoreferenceslots.E324Shpkg/j8misc%i\let\label=\gobble_oneodirectswitc9hIThekencoGdingaspectjofafontcantoalargeextentbGeunderstoodjasamapping Ifrom1thesetofslotstothe1setofglyphs|suchmappingsareforexamplerealisedIbyo,PostScripto-encoGdingvectorso-(mappingslotstoglyphnames)andvirtualfontsI(mappingslotstoDVIcommandsfordrawingaglyph).Insomecaseshowever,IencoGdingsareratherusedtospecifyaninversemappinggoingtheoppGositeway*.ISince5encoGdings6areingeneralmany-to-one,pthismeansthereneednotbGeapropGerIinverse@macrorede nesalotofthemetriccommands,you'llIprobablyUUonlywantUUtocallitinsideagroup.E327Shpkg/j8misc*i E328S\def\input_mtx_as_etx#1{E329ap\def\setscaledrawglyph##1##2##3##4##5##6##7##8##9{E330p2\nextslot{##5}E331p2\setslot{##1}\endsetslotE332ap}E333ap\offcommand\setscalednotglyphE334ap\let\setglyph=\gobble_glyphE335ap\offcommand\setkernE336ap\inputmtx{#1}E337S}E338Sh=pkg/j8misc*i!čI11ifdMetricff lesITheUUmacroy\inputmtxb\inputmtx{h lename[i}Iinputsw`h lename[i.mtx,ignoringanythingbGetweenw_\relaxand\metrics,andany- IthingUUafter\endmetrics.y\inputmtx3P\metrics \endmetricsf\endmetrics_text$f\endmetrics@hookITher\endmetrics_textmacrorexpandsto\endmetrics(eleven`other'tokens,Inot8one9controlsequencetoken).9iItisusedinstead9of\string\endmetrics, whichIdoGesUUnotworksince\endmetricsisouter.E339Shpkg/j8misc*i E340S\def\inputmtx#1{E341ap\def\relax{\let\relax=\x_relax\iffalse}E342ap\let\metrics=\fiE343ap\primitiveinput#1.mtx\x_relaxE344ap\let\relax=\x_relaxE345S}E346S\let\metrics=\x_relaxE347S\edef\endmetrics_text{\string\endmetrics}E348S\outer\def\endmetrics{\endinput}E349Sh=pkg/j8misc*iI\inputmtxusedtoset\a_count,Tbutwehaven'tbGeenableto ndareasonfor Ithis,UUsoitwasremoved.XIn|fontdoGc, the\metricsand\endmetrics|macrosinitiallyjustde neagroup,IbutB\inputmtxBƲrede nesthemtoworkastheydoinfontinst.k\endmetrics@hookIisLamacroLthatgetsexecutedjustbGeforethe\endgroupin\endmetrics;ȵitisInormally\@empty,Nanditissettothisvqalueateach\metrics,butthemetricIpackqageUUsystemrede nesit.E350ShdoAceLi E351S\def\inputmtx#1{%E352ap\begingroupIFile:qfimain.dtx112qvWsoE353p2\edef\lowercase@file{\lowercase{% E354~0\edef\noexpand\lowercase@file{#1}%E355p2}}%E356p2\lowercase@fileE357p2\let\endmetrics@hook=\@emptyE358p2\IfFileExists{\lowercase@file.mtx}{%E359~0\skip@mtx@preambleE360~0\@@input\@filef@undE361~0\let\relax=\x@relaxE362p2}{%E363~0\PackageError{fontdoc}{File#1.mtxnotfound}%E364]{\@eha\MessageBreakYoucan\protect\inputmtx\spaceE365Lsomeotherfilenow,ifyouwant.}%E366p2}E367p2\endmetrics@hookE368ap\endgroupE369S}E370S\def\skip@mtx@preamble{%E371ap\def\relax{\let\relax=\x@relax\iffalse}%E372ap\let\metrics=\fiE373ap\outer\x@cs\def{endmetrics}{\endinput}%E374S}E375S\def\metrics{%E376ap\begin{flushleft}%E377ap\let\endmetrics@hook=\@emptyE378S}E379S\outer\def\endmetrics{%E380ap\endmetrics@hookE381ap\end{flushleft}%E382S}E383Sh=doAceLi@9\ProvidesMtxPackage +@mtxpackage@headed@switc9h \announce@package 6\finish@packageITheUUcallb\ProvidesMtxPackage{hp}'ackagename[i}Isignalstothepackqagemanagingsystemthatthereisnoneedtoloadthispackqage Iagain. E384Shpkg Mi\def\ProvidesMtxPackage#1{\x_cs\let{pack-#1}P} E385ShdoAceLiE386S\def\ProvidesMtxPackage#1{%E387ap\endmetrics@hookE388S%X\@mtxpackage@headed@falseE389S%X\everypar={E390ap\announce@package{#1}%E391S%X}%E392ap\def\endmetrics@hook{\finish@package{#1}}E393ap\global\x@cs\let{FD@pack-#1}\@emptyE394S}E395S%\newif\if@mtxpackage@headed@E396S\def\announce@package#1{% E397S%X\everypar={}%E398S%X\@mtxpackage@headed@trueE399ap\Aheading{[Startofmetricpackage\textsf{#1}.}%IFile:qfimain.dtx113r~soE400S}E401S\def\finish@package#1{% E402S%X\if@mtxpackage@headed@E403p2\Aheading{Endofmetricpackage\textsf{#1}.]}%E404S%X\elseE405S%!\everypar={}%E406S%!\Aheading{(Metricpackage\textsf{#1}.)}%E407S%X\fiE408ap\par\addvspace\medskipamountE409S}E410Sh=doAceLia\usemtxpackageITheUUcall,#b\usemtxpackage{hp}'ackagelistظi},$IinputsthoseofthepackqagesinthelistthathavenotbGeenloadedyet(i.e.,those Ifor whichno \ProvidesMtxPackagehasbGeenmade).YEachpackqage isassumedtoIresideinthemetric lethat\inputmtxloadswhengiventhenameofthepackqageIasUUargument.XTheUUcallb\usemtxpackage[h lename[i]{hp}'ackagelistظi}Iinputs*thepackqagesinthelistifatleast*oneofthemhasnotbGeenloadedyet.IInLthisMcase,allthepackqagesareassumedtoresideinthesinglemetric lethatI\inputmtxUUloadswhengivenh lename[iasargument.E411ShpkgKi E412S\def\usemtxpackage{\futurelet\next_token\test_UseMtxPkg_arguments}E413S\def\test_UseMtxPkg_arguments{\ifx\next_token[E414p2\expandafter\mtx_package_given_fileE415ap\elseE416p2\expandafter\mtx_package_separate_filesE417ap\fiE418S}E419S\def\mtx_package_given_file[#1]#2{E420ap\_a_falseE421ap\process_csep_list\load_true_unless_loaded#2,\process_csep_list,E422ap\if_a_\inputmtx{#1}\fiE423S}E424S\def\load_true_unless_loaded#1{E425ap\x_cs\ifx{pack-#1}P\else\_a_true\fiE426S}E427S\def\mtx_package_separate_files#1{E428ap\process_csep_list\load_file_unless_loaded#1,\process_csep_list,E429S}E430S\def\load_file_unless_loaded#1{E431ap\x_cs\ifx{pack-#1}P\else\inputmtx{#1}\fiE432S}E433Sh=pkgKiE434ShdoAceLiE435S\newcommand\usemtxpackage[2][\x@relax]{%E436ap\ifx\x@relax#1%IFile:qfimain.dtx114sӠsoE437p2\@for\@tempa:=#2\do{% E438~0\x@cs\ifx{FD@pack-\@tempa}\@empty\elseE439]\inputmtx{\@tempa}%E440~0\fiE441p2}%E442ap\elseE443p2\@tempswafalseE444p2\@for\@tempa:=#1\do{%E445~0\x@cs\ifx{FD@pack-\@tempa}\@empty\else\@tempswatrue\fiE446p2}%E447p2\if@tempswaE448~0\inputmtx{#2}%E449p2\fiE450ap\fiE451S}E452Sh=doAceLi߀H\glyph_name_modifierIThe\glyph_name_modifiermacroisappliedtoallglyphnamessuppliedtocom- Imands#thatareallowed#intransformableMTX#Z les(seeSubsection17.1).uTheIsyntaxUUisVNb\glyph_name_modifier{hglyphname[i}VOIandUUtheabGoveUUmustexpandfullytoavqalidglyphnameinTU>'ExX'smouth.XTheUUnormalde nitionistosimplyexpandtothehglyphname[i,i.e., ՓE453Shpkg Mi\let\glyph_name_modifier=\identity_oneՔIbut5thecommand5mayexpandtoanysequence5ofcharactertokens. Itwasin-ItroGduced[tosupport(simple)automaticrenaming[ofglyphsincaseswheretheI\reglyphfontxcommandxwouldnotbGeappropriate,suchaswhenthewantedxre-InamingUUissimplytoaddashortsuxtotheglyphnames.XThereasonitonlya ectsthecommandsallowedintransformableMTX lesIisUUthatthemacroisn'tmeantasagenericoverrideformetriccommands.ٮI11.1nKerninginformationuTITheckerninginformationiskeptinthemacros\l-hname[iand\r-hnamei,contain-:x\l-hname i:x\r-hname iIingKinformationLabGouthowhname[ikernsLontheleftandontheright,respGectively*.ITheUU\l-hname[imacroshouldexpandouttoaseriesofb\k\r-hname[i\hamountظi4\kVNIcontrol|sequences,andvice|versa.Examplesof|\hamountظicontrol|sequencesare:\hamountiI\0,\1,\1000,\-50,\33;+theseɗcorrespGondsɖtothekernamountsɗ0,1,1000(whichIwouldUUbGeaverylargekern),50,and33respGectively*.3P\setkernI\setkern{hglyph1[i}{hglyph2i}{hinte}'gerexpressionci}XSets akernpairbGetweenhglyph1[i andhglyph2itothespGeci edvqalue,whichisItypicallyavqaluereturnedby\kerning{hglyph3[i}{hglyph4i}.IftherealreadyisIa&;kernsetbGetweenhglyph1[iand&'ExXoftheburdentoremembGerthepreviousIkerningUUpairbGetweenthesetwoglyphs(iftherewasone).E484ShpkgKi E485S\def\resetkern#1#2#3{E486ap\x_cs\ifx{i-rawscale}\x_relaxE487p2\expandafter\reset_kernE488~0\csname~r-#1\expandafter\endcsnameE489~0\csname~l-#2\endcsname{#3}E490ap\elseE491p2\expandafter\reset_kernE492~0\csname~r-#1\expandafter\endcsnameE493~0\csname~l-#2\endcsname{\scale{#3}{\int{rawscale}}}E494ap\fiE495S}E496S\def\reset_kern#1#2#3{E497ap\eval_expr{#3}E498ap\expandafter\reset_kern_cs\csname\the\result\endcsname#1#2E499S}E500S\def\reset_kern_cs#1#2#3{E501ap\prep_to#2{\k\expandafter#3\expandafter#1}E502ap\prep_to#3{\k\expandafter#2\expandafter#1}E503S}E504Sh=pkgKiIFile:qfimain.dtx116usoE505ShdoAceLi E506S\newcommand\resetkern[3]{%E507ap\Bheading{Overridekern}\typeset@glyph{#1}${{}+{}}$\typeset@glyph{#2}%E508ap${}\rightarrow\TypesetIntegerExpression{#3}$%E509S}E510Sh=doAceLi 6\setleftkerning f\setrightkerning ߀H\setleftrightkerningI\setleftkerning{hglyph1[i}{hglyph2i}{hsc}'aledi} I\setrightkerning{hglyph1[i}{hglyph2i}{hsc}'aledi}I\setleftrightkerning{hglyph1[i}{hglyph2i}{hsc}'aledi}XSetsleftorrightkerningofhglyph1[itothatofhglyph2iscaledbyhsc}'alediI(whichUUisanintegerexpression).q\setleftrightkerningdoGesboth.E511ShpkgKi E512S\def\setleftkerning#1#2#3{E513ap\eval_expr_to\b_count{#3}E514ap\expandafter\set_kerningE515p2\csname~l-#1\expandafter\endcsnameE516p2\csname~l-#2\endcsnameE517S}E518S\def\setrightkerning#1#2#3{E519ap\eval_expr_to\b_count{#3}E520ap\expandafter\set_kerningE521p2\csname~r-#1\expandafter\endcsnameE522p2\csname~r-#2\endcsnameE523S}E524S\def\setleftrightkerning#1#2#3{E525ap\eval_expr_to\b_count{#3}E526ap\expandafter\set_kerningE527p2\csname~l-#1\expandafter\endcsnameE528p2\csname~l-#2\endcsnameE529ap\expandafter\set_kerningE530p2\csname~r-#1\expandafter\endcsnameE531p2\csname~r-#2\endcsnameE532S}E533S\def\set_kerning#1#2{E534ap\if\b_count=\one_thousandE535p2\def\k##1##2{E536~0\set_kern_cs##2##1#1E537p2}E538ap\elseE539p2\def\k##1##2{E540~0\set_kern##1#1{E541]\scale\b_count{\expandafter\gobble_one\string##2}E542~0}E543p2}E544ap\fiE545ap#2E546S}E547Sh=pkgKiE548ShdoAceLiE549S\newcommand\setleftkerning[3]{%E550ap\Bheading{Kern}\typeset@glyph{#1}ontheleftlikeE551ap\typeset@glyph{#2}\ConditionallyScaled{#3}}IFile:qfimain.dtx117vsoE552S\newcommand\setrightkerning[3]{% E553ap\Bheading{Kern}\typeset@glyph{#1}ontherightlikeE554ap\typeset@glyph{#2}\ConditionallyScaled{#3}}E555S\newcommand\setleftrightkerning[3]{%E556ap\Bheading{Kern}\typeset@glyph{#1}ontheleftandrightlikeE557ap\typeset@glyph{#2}\ConditionallyScaled{#3}}߀H\ConditionallyScaledISeveralmetriccommandshavetakeascalingfactorargumentwhichisrenderedby IfontdoGc픲as\scaledhar}'gumentظi".O1ThebyfarmostcommonvqalueforthisargumentIislhoweverltheconstantlnumbGer1000l(noscaling),randinthosecasesthe\scaledI..."5feelswzabitlong-winded.Thecureforthiswyisthe\ConditionallyScaledIcommand,whichtakesanintegerexpressionasitsargumentandtypGesetstheI\scaled øhinte}'ger9expressionci"unlessthat expressionevqaluatesto1000,6inwhichIcaseUU\ConditionallyScaledsimplygobblesanyspacesfollowingit.E558S\newcommand\ConditionallyScaled[1]{% E559ap\FD@evaluate@trueE560ap\FD@eval@expr{#1}%E561ap\@tempswatrueE562ap\ifFD@evaluate@\ifnum\FD@result=\@m\@tempswafalse\fi\fiE563ap\FD@evaluate@falseE564ap\if@tempswascaled\(\FD@expression\)\else\ignorespaces\fiE565S}E566Sh=doAceLi3P\kerningI\kerning{hglyph1[i}{hglyph2i} XReturnswthevvqalueofkernpairbGetweenwhglyph1[iandhglyph2[iasaninteger.IReturnsUUavqalueofzeroifsuchakernpairdoGesn'texist.E567ShpkgKi E568S\def\kerning#1#2{0\x_relaxE569ap\def\k##1{\csname~set-\string##1\endcsname\gobble_one}E570ap\bgroupE571ap\x_cs\def{set-\string\l-#2}##1##2{E572p2\global\result=\expandafter\gobble_one\string##2\egroupE573ap}E574ap\csname~r-#1\endcsnameE575ap\csname~set-\string\l-#2\endcsname\gobble_one{00}E576S}E577Sh=pkgKiE578ShdoAceLiE579S\DeclareRobustCommand\kerning[2]{%E580ap\begingroupE581ap\MakePrintable\@tempa{FD@swa}{#1}%E582ap\MakePrintable\@tempb{FD@swa}{#2}%E583ap\protected@xdef\FD@expression{%E584p2\mathop{\protect\mathrm{k{}}}(%E585p2\text{\protect\FD@typeset@string{\@tempa}}%E586p2,\penalty\FD@commapenaltyE587p2\text{\protect\FD@typeset@string{\@tempb}}%E588p2)%E589ap}%E590ap\global\chardef\FD@priority=5%E591ap\global\FD@bracket@level=\@neIFile:qfimain.dtx118wsoE592ap\FD@evaluate@false E593ap\endgroupE594S}E595Sh=doAceLiy\ifiskernI\ifiskern{hglyph1[i}{hglyph2i}\then XThis command testsifthereisakernpairbGetween hglyph1[iandhglyph2i.XIt'sIhardUUtosayifthereisauseforit,butitisincludedforsymmetry*.E596ShpkgKi E597S\def\ifiskern#1#2\then{E598ap\def\k##1##2{\ifxT##1\let\k\gobble_two\fi}E599ap\bgroupE600p2\x_cs\let{l-#2}TE601p2\csnamer-#1\endcsnameE602ap\expandafter\egroup\ifx\k\gobble_twoE603S}E604Sh=pkgKiE605ShdoAceLiE606S\def\ifiskern#1#2\then{%E607ap\generic@if{kern\typeset@glyph{#1}${}+{}$\typeset@glyph{#2}set}%E608S}E609Sh=doAceLi \unsetkernsI\unsetkerns{hleftglyphlistظi}{hrightglyphlisti} XThisVPcommandunsetsallkernswithaVQglyphinthehleftglyphlistظiVPontheleftIandrasglyphinthehright glyphlistظionrtheright.@|TheliststhemselvesareordinaryIcomma-separated^lists.Unlike\setkern^and\resetkern,`\unsetkernsactuallyIremovesUUthekerningpairsfromTU>'ExX'smemory*.XTheimplementationitselfsimplygoGesthrough\r-hleftglyphciforeachelementIhleftglyphcirҲinrѸhleftglyphlistظiandr\l-hrightglyphciforreachelementrҸhrightglyphciIin>hrightRglyphRlistظi,vremoving=each\khtokencihtokeni=tripplethatreferstoaglyphIfrometheeoppGositelistasitgoGesalong.ST*omakethistestreasonablyfast,theIroutineU rst\marks"theglyphsintheUotherlistbysettingthecontrolsequencesI\slots-hglyphciztoyUL(thelettertokenU).ThismarkislaterremovedwhenztheI\r-hglyphcior\l-hglyphirespGectivelycontrolsequenceshavebGeengonethrough;ItheUU\slots-hglyphcicontrolsequencesarethensetto\relax.E610ShpkgKi E611S\def\unsetkerns#1#2{E612ap\let\k\k_unless_to_UE613ap\process_csep_list\make_slots_U#1,\process_csep_list,E614ap\def\do##1{\x_cs\main_remove_Us{l-##1}}E615ap\process_csep_list\do#2,\process_csep_list,E616ap\process_csep_list\make_slots_relax#1,\process_csep_list,E617ap\process_csep_list\make_slots_U#2,\process_csep_list,E618ap\def\do##1{\x_cs\main_remove_Us{r-##1}}E619ap\process_csep_list\do#1,\process_csep_list,E620ap\process_csep_list\make_slots_relax#2,\process_csep_list,E621S}E622S\def\make_slots_U#1{\x_cs\let{slots-#1}U}E623S\def\make_slots_relax#1{\x_cs\let{slots-#1}\x_relax}E624S\def\k_unless_to_U#1#2{E625ap\x_cs\ifx{slots-\expandafter\gobble_three\string#1}U\elseIFile:qfimain.dtx119xsoE626p2\noexpand\k\noexpand#1\noexpand#2 E627ap\fiE628S}E629S\def\main_remove_Us#1{E630ap\ifx#1\x_relax\elseE631p2\edef#1{#1}E632p2\ifx#1\empty_command\let#1\x_relax\fiE633ap\fiE634S}E635Sh=pkgKiE636ShdoAceLiE637S\newcommand\unsetkerns[2]{%E638ap\Bheading{Remove}allkerningpairsinE639ap\FD@typeset@string@set{#1}${}\times{}$\FD@typeset@string@set{#2}%E640S}䒍 \FD@typeset@string@set S\FD@typeset@string@set@IThe@\FD@typeset@string@setAmacrotakesacomma-separatedlistofstringex- IpressionsUUasargumentandtypGesetsthatlistaselementsofaset,e.g.nb\FD@typeset@string@set{a,b,\str{c}}IisUUtypGesetasmbfa;b;s(c)gnE641S\def\FD@typeset@string@set#1{% E642ap\toks@={}%E643ap\@for\@tempa:=#1\do{%E644p2\protected@edef\@tempa{%E645~0\noexpand\MakePrintable\noexpand\@tempa{FD@swa}{\@tempa}%E646p2}%E647p2\@tempaE648p2\toks@=\expandafter{\the\expandafter\toks@E649~0\expandafter\do\expandafter{\@tempa}}%E650ap}%E651ap\expandafter\FD@typeset@string@set@\expandafter{\the\toks@}%E652S}E653S\def\FD@typeset@string@set@#1{%E654ap\TypesetList{$\{$}{$,\penalty\FD@commapenalty{}$}%E655p2{$,\penalty\FD@commapenalty{}$}{$,\penalty\FD@commapenalty{}$}%E656p2{$\}$}{$\emptyset$}{\FD@typeset@string}{#1}%E657S}E658Sh=doAceLi\noleftkerning 6\norightkerning 9\noleftrightkerningITheargumentofthesecommandsisthenameofaglyph.CDThecommandsremoves IallUUkernsontheleft,ontheright,andonbGothsidesrespectively*,ofthisglyph.E659ShpkgKiE660S\def\noleftkerning#1{\no_kerning{l}{#1}}E661S\def\norightkerning#1{\no_kerning{r}{#1}}E662S\def\noleftrightkerning#1{\no_kerning{l}{#1}\no_kerning{r}{#1}}E663Sh=pkgKiE664ShdoAceLiE665S\newcommand\noleftkerning[1]{%E666ap\Bheading{Removekerns}ontheleftofglyphsinIFile:qfimain.dtx120ysoE667ap\FD@typeset@string@set{#1}.} E668S\newcommand\norightkerning[1]{%E669ap\Bheading{Removekerns}ontherightofglyphsinE670ap\FD@typeset@string@set{#1}.}E671S\newcommand\noleftrightkerning[1]{%E672ap\Bheading{Removekerns}onanysideofglyphsinE673ap\FD@typeset@string@set{#1}.}E674Sh=doAceLiÍ \no_kerningIThisUUmacroiscalledasUb\no_kerning{hside[i}{hglyphlistظi}UIwhereihside[iisliorr,nandhglyphlistظiisacomma-separatedlistofglyphnames. ITheUUmacrounsetsallkernsonthehside[isideoftheglyphsinthehglyphlistظi.*E675ShpkgKiE676S\def\no_kerning#1#2{E677ap\let\k\no_kerning_iE678ap\def\do##1{\csname#1-##1\endcsname}E679ap\bgroupE680p2\aftergroup\def\aftergroup\a_macro\aftergroup{E681p2\process_csep_list\do#2,\process_csep_list,E682p2\aftergroup}E683ap\egroupE684ap\def\do##1{\expandafter\let\csname#1-##1\endcsname\x_relax}E685ap\process_csep_list\do#2,\process_csep_list,E686ap\let\k\no_kerning_iiE687ap\def\do##1{\edef##1{##1}}E688ap\a_macroE689S}b\no_kerning_iITheY\no_kerning_imacroZisusedby\no_kerninginconstructingalistofall IglyphsO%thataglyphO&inthehglyph6listظihasahside[ikernto,PbwhileavoidingrepGeti-Itions. AE690S\def\no_kerning_i#1#2{ E691ap\ifx#1\x_relax\elseE692p2\aftergroup\do\aftergroup#1E693p2\let#1\x_relaxE694ap\fiE695S}č\no_kerning_iiITheUU\no_kerning_iimacroissimilartothe\k_unless_to_Umacro.E696S\def\no_kerning_ii#1#2{E697ap\ifx#1\x_relax\else\noexpand\k\noexpand#1\noexpand#2\fiE698S}E699Sh=pkgKiKI11.2nGlyphinformationuTITheUUglyphinformationiskeptinthemacros\g-hname[i,whichexpandsoutto::x\g-hname iUb{hwidthci}{hheightظi}{hdepthi}{hitalici}{hmap}'commands!i}{hmapfontsi}UIwherethehmap}'commands!iwillwriteoutVPLMAPfragmentstoa.vpl le,and ItheUUhmapfonts!iwillproGduceanyMAPFONTinstructionsthatareneeded.IFile:qfimain.dtx121z=so\typeset@glyphITheU\typeset@glyphmacroUtakesastringexpressionandtypGesetsUthatasthe Inameofaglyph.CurrentlynamesofglyphsareformattedpreciselythesameasIanyUUotherstringexpression.E700ShdoAc Ni\let\typeset@glyph=\TypesetStringExpression!|\width\height!|\depth\italicI\width{hglyphci}I\height{hglyphci}I\depth{hglyphci}I\italic{hglyphci}XInv\setglyph{hname[i}command>wde nes\g-hnamei,unless\g-hnameihas IalreadyUUbGeende ned.XThe reason \g-hname[iisde nedbGeforecalling\resetglyphistomakeIit4pGossible4toreferto\theglyphconstructedsofar"using\width{hname[i},I\height{hname[i},UUetc. ؝E763S\def\setglyph#1{E764ap\ifisglyph{\glyph_name_modifier{#1}}\thenE765p2\expandafter\gobble_glyphE766ap\elseE767p2\x_cs\def{g-\glyph_name_modifier{#1}}{E768~0{\the\glyph_width}{\the\glyph_height}E769~0{\the\glyph_depth}{\the\glyph_italic}E770~0{\the\glyph_map_commands}{\the\glyph_map_fonts}E771p2}E772p2\resetglyph{\glyph_name_modifier{#1}}E773ap\fiE774S}E775S\long\def\gobble_glyph#1\endsetglyph{}E776Sh=pkgKi;E777ShdoAceLiE778S\newcommand\setglyph[1]{%E779ap\FD@tight@trueE780ap\Aheading{Setglyph`\typeset@glyph{#1}'}%E781S}E782Sh=doAceLiE783Shmisc6\i\long\def\setglyph#1\endsetglyph{};XLH)2003/01/05:Avery7useful8trick,owhichunfortunately7usedtobGeundocu-Imented,խistoputkerningorvqariableassignmentcommandsbGetween\setglyphIandFthecorrespGonding\endsetglyph.^ThesecommandsFwillthenonlybeexecutedIif,theglyphisbGeingsetbythat\setglyph.d7Typicalapplication:]oIfAacutesmallIisbGeingmadebyskrinking(4Aacute,0zthenitisreasonabletomakeAacutesmallIkernlikeAacute(moGdulosomescalingfactor).PQIfontheotherhandAacutesmallIhas%already%bGeensetthenthereislessreasontobGelieveAacutesmallshouldkernIlikeUUAacute(amoreprobableguessisthatitshouldkernlikeAsmall).ٍ \resetglyphITheL\resetglyph{hname[i}Mcommandrede nes\g-hnamei, NregardlessMofwhetherI\g-hname[iUUhasalreadybGeende ned.;E784ShpkgKiE785S\def\resetglyph#1{E786ap\edef\glyphname{#1}E787ap\glyph_width=0E788ap\global\glyph_height=0E789ap\global\glyph_depth=0E790ap\global\glyph_italic=0E791ap\glyph_voffset=0E792ap\global\glyph_maxhpos=0E793ap\global\glyph_map_commands={}E794ap\global\glyph_map_fonts={}E795S}IFile:qfimain.dtx124}soE796Sh=pkgKi}E797ShdoAceLi E798S\newcommand\resetglyph[1]{%E799ap\FD@tight@trueE800ap\Aheading{Resetglyph`\typeset@glyph{#1}'}}E801Sh=doAceLiL\endsetglyph \endresetglyph >E802ShpkgKiE803S\def\endsetglyph{E804ap\x_cs\edef{g-\glyphname}E805p2{{\the\glyph_width}{\the\glyph_height}E806t{\the\glyph_depth}{\the\glyph_italic}E807t{\the\glyph_map_commands}{\the\glyph_map_fonts}}E808S}E809S\let\endresetglyph=\endsetglyphE810Sh=pkgKi~E811ShdoAceLiE812S\let\endsetglyph=\FD@tight@falseE813S\let\endresetglyph=\FD@tight@falseE814Sh=doAceLit\setscaledrawglyph L\setrawglyphITheUU\setscaledrawglyphhasthesyntaxb\setscaledrawglyph{hglyphci}{hfontظi}{hdesignsize[i}{hsc}'alei}{hsloti} q{hwidthci}{hheightظi}{hdepthi}{hitalici}IIt0is0ageneralizedformoftheold\setrawglyphcommand,7whichhasthesyntaxb\setrawglyph{hglyphci}{hfontظi}{hdesignsize[i}{hsloti}{hwidthi}{hheighti}q{hdepthci}{hitalici}I\setrawglyph8isnow9syntactic8sugarfortheequivqalentcallof\setscaledraw-Iglyph. >E815ShpkgKi E816S\def\setrawglyph#1#2#3{E817ap\setscaledrawglyph{#1}{#2}{#3}\one_thousandE818S}?XTheseXcommandsaregeneratedautomatically*,Xwhenan.mtx leiswrittenoutIbyUU\afmtomtx,\pltomtx,or\mtxtomtx.XT*oillustratethedi erencebGetween\setrawglyphandthenew\setscaled-Irawglyph,UUnotethatb\setscaledrawglyph{fscaled}{xfont}{10pt}{800}{102}%q{300}{600}{300}{40}IproGducesUUthesamefscaledglyphasb\setrawglyph{f}{xfont}{10pt}{102}{375}{750}{375}{50}b\setglyph{fscaled} \glyph{f}{800}\endsetglyphE819S\def\setscaledrawglyph#1#2#3#4#5#6#7#8#9{ E820ap\if_undefined{g-\glyph_name_modifier{#1}}\thenE821p2\eval_expr{#4}IFile:qfimain.dtx125~ soE822p2\ifnum\result=\one_thousand E823~0\let\a_macro\identity_oneE824p2\elseE825~0\edef\a_macro##1{\saved_scale{\the\result}{##1}}E826p2\fiE827p2\eval_expr_to\a_count{#6}E828p2\eval_expr_to\b_count{#7}E829p2\eval_expr_to\c_count{#8}E830p2\eval_expr_to\d_count{#9}E831p2\ifisint{rawscale}\thenE832~0\e_count=\int{rawscale}E833~0\multiply\a_count\e_count s,\l_rounded_thousandths\a_countE834~0\multiply\b_count\e_count s,\l_rounded_thousandths\b_countE835~0\multiply\c_count\e_count s,\l_rounded_thousandths\c_countE836~0\multiply\d_count\e_count s,\l_rounded_thousandths\d_countE837~0\edef\a_macro##1{\saved_scale{\the\e_count}{\a_macro{##1}}}E838p2\fiE839p2\x_cs\edef{g-\glyph_name_modifier{#1}}{E840~0{\the\a_count}E841~0{\the\b_count}E842~0{\the\c_count}E843~0{\the\d_count}E844~0{\a_macro{\saved_raw{#2}{#5}{#1}}}E845~0{\a_macro{\saved_mapfont{#2}{#3}}}E846p2}E847ap\fiE848S}E849Sh=pkgKiE850ShdoAceLiE851S\newcommand\setrawglyph[8]{%E852ap\Aheading{Glyph`\typeset@glyph{#1}'}E853ap\Bheading{Takenfrom}slot$\TypesetIntegerExpression{#4}$inE854apfont\TypesetStringExpression{#2}%E855S}E856S\newcommand\setscaledrawglyph[9]{%E857ap\Aheading{Glyph`\typeset@glyph{#1}'}E858ap\Bheading{Takenfrom}slot$\TypesetIntegerExpression{#5}$inE859apfont\TypesetStringExpression{#2}\ConditionallyScaled{#4}%E860S}E861Sh=doAceLiE862Shmisc6\i\def\setrawglyph#1#2#3#4#5#6#7#8{}E863Shmisc6\i\def\setscaledrawglyph#1#2#3#4#5#6#7#8#9{}t\setscalednotglyph L\setnotglyphIThe\setscalednotglyphcommandhasthesamesyntaxasthe\setscaledraw- IglyphUUcommand,i.e.,b\setscalednotglyph{hglyphci}{hfontظi}{hdesignsize[i}{hsc}'alei}{hsloti}q{hwidthci}{hheightظi}{hdepthi}{hitalici}IIt0is0ageneralizedformoftheold\setnotglyphcommand,7whichhasthesyntaxb\setnotglyph{hglyphci}{hfontظi}{hdesignsize[i}{hsloti}{hwidthi}{hheighti}q{hdepthci}{hitalici}IFile:qfimain.dtx126soI\setnotglyph8isnow9syntactic8sugarfortheequivqalentcallof\setscalednot- Iglyph.E864ShpkgKi E865S\def\setnotglyph#1#2#3{E866ap\setscalednotglyph{#1}{#2}{#3}\one_thousandE867S}XNote]that]onlythehglyphci,_hwidthi,hheightظi,_hdepthi,and]hitalici]parametersIaretused.'Thereasonforuhavingtheotherparametersisthat\setscalednotglyphIcommandscanbGeconvertedto\setscaledrawglyphcommandswhenafontisIreencoGded.9ThereforealltheinformationmustbGepresent,pevenifitisnotusedIbyUUthemainde nition.XT*othinkabGout(LH2000/03/02): &Perhapsthehmap}'commands!i eldofa-not-IglyphUUshouldcontaina\glyphwarning,justincaseanyonetriestouseone?E868S\def\setscalednotglyph#1#2#3#4#5#6#7#8#9{E869ap\if_undefined{g-\glyph_name_modifier{#1}-not}\thenE870p2\eval_expr_to\a_count{#6}E871p2\eval_expr_to\b_count{#7}E872p2\eval_expr_to\c_count{#8}E873p2\eval_expr_to\d_count{#9}E874p2\ifisint{rawscale}\thenE875~0\e_count=\int{rawscale}E876~0\multiply\a_count\e_count s,\l_rounded_thousandths\a_countE877~0\multiply\b_count\e_count s,\l_rounded_thousandths\b_countE878~0\multiply\c_count\e_count s,\l_rounded_thousandths\c_countE879~0\multiply\d_count\e_count s,\l_rounded_thousandths\d_countE880p2\fiE881p2\x_cs\edef{g-\glyph_name_modifier{#1}-not}{E882~0{\the\a_count}E883~0{\the\b_count}E884~0{\the\c_count}E885~0{\the\d_count}E886~0{}{}E887p2}E888ap\fiE889S}E890Sh=pkgKiE891ShdoAceLiE892S\newcommand\setnotglyph[8]{%E893ap\Aheading{Pseudoglyph`\typeset@glyph{#1-not}'}%E894S}E895S\newcommand\setscalednotglyph[9]{%E896]\setnotglyph{#1}{#2}{#3}{#5}{#6}{#7}{#8}{#9}%E897S}E898Sh=doAceLiE899Shmisc6\i\let\setnotglyph=\setrawglyphE900Shmisc6\i\let\setscalednotglyph=\setscaledrawglyph \unsetglyphITheUU\unsetglyph{hname[i}commandmakes\g-hnameiunde ned.E901Shpkg Mi\def\unsetglyph#1{\x_cs\let{g-#1}\x_relax}E902ShdoAc Ni\newcommand\unsetglyph[1]{%E903ShdoAc Ni,\Aheading{Unsetglyph`\typeset@glyph{#1}'}}IFile:qfimain.dtx127soI11.3nGlyphcommandsuTITheUUhglyphc}'ommands!iare:!|\glyphI\glyph{hglyphci}{hsc}'ale[i}E904ShpkgKi E905S\def\glyph#1#2{E906ap\glyph_parameter\glyph_metrics{#1}E907ap\eval_expr_to\e_count{#2}E908ap\ifnum\e_count=\one_thousandE909p2\edef\a_macro{\mapcommands{#1}}E910p2\global\glyph_map_commands\expandafter{E911~0\the\expandafter\glyph_map_commands\a_macroE912p2}E913p2\edef\a_macro{\mapfonts{#1}}E914ap\elseE915p2\multiply\a_count\e_count s,\l_rounded_thousandths\a_countE916p2\multiply\b_count\e_count s,\l_rounded_thousandths\b_countE917p2\multiply\c_count\e_count s,\l_rounded_thousandths\c_countE918p2\multiply\d_count\e_count s,\l_rounded_thousandths\d_countE919p2\edef\a_macro{\saved_scale{\the\e_count}{\mapcommands{#1}}}E920p2\global\glyph_map_commands\expandafter{E921~0\the\expandafter\glyph_map_commands\a_macroE922p2}E923p2\edef\a_macro{\saved_scale{\the\e_count}{\mapfonts{#1}}}E924ap\fiE925ap\advance\glyph_width\a_countE926ap\advance\b_count\glyph_voffsetE927ap\ifnum\glyph_height<\b_count\global\glyph_height=\b_count\fiE928ap\advance\c_count-\glyph_voffsetE929ap\ifnum\glyph_depth<\c_count\global\glyph_depth=\c_count\fiE930ap\global\glyph_italic=\d_countE931ap\global\glyph_map_fonts\expandafter{E932p2\the\expandafter\glyph_map_fonts\a_macroE933ap}E934S}E935Sh=pkgKiE936ShdoAceLiE937S\newcommand\glyph[2]{%E938ap\Bheading{Glyph}`\typeset@glyph{#1}'\ConditionallyScaled{#2}%E939S}E940Sh=doAceLiT]$\glyphruleI\glyphrule{hwidthci}{hheightظi}E941ShpkgKiE942S\def\glyphrule#1#2{E943ap\eval_expr_to\b_count{#1}\eval_expr_to\c_count{#2}E944ap\advance\glyph_widthby\b_countE945ap\g_eval_expr_to\glyph_depth{\max\glyph_depth{-\glyph_voffset}}E946ap\g_eval_expr_to\glyph_height{E947p2\max\glyph_height{\add\glyph_voffset\c_count}E948ap}E949ap\global\glyph_italic=0E950ap\edef\a_macro{\saved_rule{\the\b_count}{\the\c_count}}IFile:qfimain.dtx128)"soE951ap\global\glyph_map_commands\expandafter{ E952p2\the\expandafter\glyph_map_commands\a_macroE953ap}E954S}E955Sh=pkgKiE956ShdoAceLiE957S\newcommand\glyphrule[2]{%E958ap\Bheading{Rule}$\TypesetIntegerExpression{#1}$byE959ap$\TypesetIntegerExpression{#2}$%E960S}E961Sh=doAceLib\glyphspecial b\glyphwarningI\glyphspecial{hstring}i} I\glyphwarning{hstring}i}E962ShpkgKiE963S\def\glyphspecial#1{E964ap\edef\a_macro{\saved_special{#1}}E965ap\global\glyph_map_commands\expandafter{E966p2\the\expandafter\glyph_map_commands\a_macroE967ap}E968S}E969S\def\glyphwarning#1{E970ap\edef\a_macro{\saved_warning{#1}}E971ap\global\glyph_map_commands\expandafter{E972p2\the\expandafter\glyph_map_commands\a_macroE973ap}E974S}E975Sh=pkgKiE976ShdoAceLiE977S\newcommand\glyphspecial[1]{%E978ap\Bheading{Special}`\TypesetStringExpression{#1}'}E979S\newcommand\glyphwarning[1]{%E980ap\Bheading{Warning}`\TypesetStringExpression{#1}'}E981Sh=doAceLi\movert \moveupI\movert{hxo setظi} I\moveup{hyo setظi}E982ShpkgKiE983S\def\movert#1{E984ap\eval_expr{#1}E985ap\ifnum\glyph_maxhpos<\glyph_widthE986p2\global\glyph_maxhpos\glyph_widthE987ap\fiE988ap\ifnum0=\result\elseE989p2\advance\glyph_widthby\resultE990p2\edef\a_macro{\saved_movert{\the\result}}E991p2\global\glyph_map_commands\expandafter{E992~0\the\expandafter\glyph_map_commands\a_macroE993p2}E994ap\fiE995S}E996S\def\moveup#1{IFile:qfimain.dtx1293soE997ap\eval_expr{#1} E998ap\ifnum\result=0\elseE999p2\advance\glyph_voffsetby\resultA1000p2\edef\a_macro{\saved_moveup{\the\result}}A1001p2\global\glyph_map_commands\expandafter{A1002~0\the\expandafter\glyph_map_commands\a_macroA1003p2}A1004ap\fiA1005S}A1006Sh=pkgKičA1007ShdoAceLiA1008S\newcommand\movert[1]{\Bheading{Rt}~$\TypesetIntegerExpression{#1}$}A1009S\newcommand\moveup[1]{\Bheading{Up}~$\TypesetIntegerExpression{#1}$}A1010Sh=doAceLi&`\push +\pop ⍍A1011ShpkgKiA1012S\def\push{A1013ap\bgroupA1014ap\global\glyph_map_commands\expandafter{A1015p2\the\glyph_map_commands\saved_pushA1016ap}A1017S}A1018S\def\pop{A1019ap\ifnum\glyph_maxhpos<\glyph_widthA1020p2\global\glyph_maxhpos\glyph_widthA1021ap\fiA1022ap\egroupA1023ap\global\glyph_map_commands\expandafter{A1024p2\the\glyph_map_commands\saved_popA1025ap}A1026S}A1027Sh=pkgKiA1028ShdoAceLiA1029S\newcommand\push{\Bheading{Push}}A1030S\newcommand\pop{\Bheading{Pop}}A1031Sh=doAceLi \resetwidth L\resetheight \resetdepth L\resetitalicI\resetwidth{hwidthci} I\resetheight{hheightظi}I\resetdepth{hdepthci}I\resetitalic{hitalici}A1032ShpkgKi A1033S\def\resetwidth#1{\movert{\sub{#1}\glyph_width}}A1034S\def\resetheight{\g_eval_expr_to\glyph_height}A1035S\def\resetdepth{\g_eval_expr_to\glyph_depth}A1036S\def\resetitalic{\g_eval_expr_to\glyph_italic}A1037Sh=pkgKiA1038ShdoAceLiA1039S\newcommand\resetwidth[1]{%A1040ap\Bheading{Resetwidthto$\TypesetIntegerExpression{#1}$}%A1041S}IFile:qfimain.dtx130<ƠsoA1042S\newcommand\resetheight[1]{% A1043ap\Bheading{Resetheightto$\TypesetIntegerExpression{#1}$}%A1044S}A1045S\newcommand\resetdepth[1]{%A1046ap\Bheading{Resetdepthto$\TypesetIntegerExpression{#1}$}%A1047S}A1048S\newcommand\resetitalic[1]{%A1049ap\Bheading{Resetitalicto$\TypesetIntegerExpression{#1}$}%A1050S}A1051Sh=doAceLiy\glyphpccISomeUUsyntacticsugar:q\glyphpcccoulddowithoptimization.b\glyphpcc{hglyphci}{hxo setظi}{hyo seti}A1052ShpkgKiA1053S\def\glyphpcc#1#2#3{A1054ap\ifisglyph{\glyph_name_modifier{#1}}\thenA1055p2\pushA1056~0\movert{#2}A1057~0\moveup{#3}A1058~0\glyph{\glyph_name_modifier{#1}}{\one_thousand}A1059p2\popA1060ap\else\ifisglyph{\glyph_name_modifier{#1}-not}\thenA1061p2\fontinstwarning{\string\glyphpcc}{A1062~0Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreakA1063~0because~it~is~so~far~unencoded~in~the~glyph~baseA1064p2}A1065ap\elseA1066p2\fontinsterror{\string\glyphpcc}{A1067~0Base~glyph~not~set.\messagebreakA1068~0This~could~be~a~sign~that~the~AFM~file~is~buggyA1069p2}\error_help_aA1070ap\fi\fiA1071S}A1072Sh=pkgKiA1073ShdoAceLiA1074S\def\glyphpcc#1#2#3{A1075ap\pushA1076p2\movert{#2}A1077p2\moveup{#3}A1078p2\glyph{#1}{1000}A1079ap\popA1080S}A1081Sh=doAceLi 6\glyphbboxrightIThe#\glyphbboxright"commandisavqalidintegerexpression,nbutitsvqalue Iisonlymeaningfulinsidea\setglyph...s\endsetglyphɲor\resetglyph...I\endresetglyph*structure.Thereitsvqalue*isalmostthehorizontalpGositionofIthej%rightedgeofthebGoundingboxj&fortheglyphconstructedsofar|inrealityitIisUUthegreatesthorizontalo setreachedsofar.A1082Shpkg Mi\def\glyphbboxright{\max\glyph_width\glyph_maxhpos} A1083ShdoAceLiIFile:qfimain.dtx131FsoA1084S\DeclareRobustCommand\glyphbboxright{% A1085ap\gdef\FD@expression{\protect\mathrm{glyphbboxright}}A1086ap\global\chardef\FD@priority=\tw@A1087ap\global\FD@bracket@level=\z@A1088ap\FD@evaluate@falseA1089S}A1090Sh=doAceLi׍y\samesizeI\samesize{hglyphci}A1091ShpkgKiA1092S\def\samesize#1{A1093ap\if_undefined{g-\glyph_name_modifier{#1}}\thenA1094p2\resetwidth{\glyphbboxright}A1095ap\elseA1096p2\expandafter\expandafter\expandafterA1097~0\same_size\csnameg-\glyph_name_modifier{#1}\endcsnameA1098ap\fiA1099S}A1100S\def\same_size#1#2#3#4#5#6{A1101ap\movert{\sub{#1}\glyph_width}A1102ap\global\glyph_height=#2A1103ap\global\glyph_depth=#3A1104ap\global\glyph_italic=#4A1105S}A1106Sh=pkgKiA1107ShdoAceLiA1108S\newcommand\samesize[1]{%A1109ap\Bheading{Resetdimensionstothoseof`\typeset@glyph{#1}'.}%A1110S}A1111Sh=doAceLi$\ifisglyphITheUUcontrol owcommand: GA1112Shpkg Mi\def\ifisglyph#1\then{\if_defined{g-#1}\then}HI\ifisglyphײevqaluatestofalseinhmiscri,)7sincethisavoidsusesofvqariousmetric IintegerUUexpressions(suchas\width,\height,etc.)qthatarenotde nedthere. HA1113ShdoAc Ni\def\ifisglyph#1\then{\generic@if{glyph\typeset@glyph{#1}set}}A1114Shmisc6\i\def\ifisglyph#1\then{\iffalse}L\ifareglyphsITheǴ\ifareglyphscommanddztestifallglyphsinacomma-separetedlistofglyphs IareUUset.qThesyntaxisb\ifareglyphs{hglyphlistظi}\thenIThe\implementationreliesonthat\if_true]and\if_falsedonotcountwhenITU>'ExXUUisskippingtextthatisbalancedwithrespGectto\ifsand\fis. HA1115ShpkgKi A1116S\def\ifareglyphs#1\then{A1117ap\process_csep_list{\if_is_glyph}#1,\process_csep_list,A1118ap\if_trueA1119S}A1120S\def\if_is_glyph#1{A1121ap\if_undefined{g-#1}\then\expandafter\if_false\fiA1122S}IFile:qfimain.dtx132P#soA1123Sh=pkgKi A1124Shmisc6\i\let\ifareglyphs=\ifisglyphA1125ShdoAceLiA1126S\def\ifareglyphs#1\then{%A1127ap\generic@if{allglyphsin\FD@typeset@string@set{#1}areset}%A1128S}A1129Sh=doAceLi!čI12ifdConvertingffanETX letoa(V)PL leI12.1nLowest-leveluserinterfaceuTITheUUmacro:y\etxtovplb\etxtovpl{henc}'odinglistظi}{hvpl le[i}Iwritesavirtualfont(asavirtualpropGertylist)withtheencoGdingspeci edbythe IitemsYinYthehenc}'odinglistظi,ZwhichYtypicallyareYnamesofETXY les.X(ThismacroIisUUcalledby\installfont.)XTheUUmacro:3P\etxtoplb\etxtopl{henc}'odinglistظi}{hpl le[i}Iwritesaswitchcontrolthisinstead.If\if_including_map_istrue,IMAPLʲandLMAPFONTL˲propGertiesLarewrittentothe le(whichshouldbGeaVPL),ifitIisUUfalsethentheyarenotwrittentothe le(whichisthenanormalPL). =A1155S\newif\if_including_map_ A1156S\_including_map_truem\make_inputetxITheUU\make_inputetxmacrotakesasingleargumentthatshouldhavetheform\a_countA1371~0\ifisint{fontdimen(\the\a_count)}\thenA1372]\out_lline{(PARAMETER~\vpl_int\a_count\spaceA1373xR~\make_factor{\int{fontdimen(\the\a_count)}})}A1374~0\fiA1375~0\advance\a_count\@neA1376p2\repeatA1377ap\out_lline{)}A1378ap\out_line{}A1379S}6I12.4nTheligtableuT\make_ligtableA1380S\def\make_ligtable#1{A1381ap\begingroupA1382p2\out_line{(LIGTABLE}A1383Sh!bAounda9ryCompabilityT'iY\let\do_slot=\bgroupA1384ShbAounda9ryCompabilityV6iA1385p8\def\do_slot{\bgroupA1386~0\ifisint{boundarychar}\thenA1387]\ifnum\int{boundarychar}=\slot_numberA1388\def\vpl_liglabel{\out_liglabel\boundary_liglabel}A1389]\fiA1390~0\fiA1391p8}A1392Sh=bAounda9ryCompabilityV6iA1393p2\let\end_do_slot=\vpl_kerningA1394p2\def\do_boundary{\bgroup\let\vpl_liglabel=\boundary_liglabel}A1395p2\let\endsetleftboundary=\vpl_kerningA1396p2\let\ligature=\vpl_ligatureA1397p2\let\k=\vpl_kernA1398p2\let\rbserver_do=\vpl_rbserver_doA1399p2\let\rboundary_do=\vpl_rboundary_doA1400p2\pre_third_etx_pass_hookA1401p2#1A1402p2\post_third_etx_pass_hookA1403p2\out_lline{)}A1404ap\endgroupA1405ap\out_line{}IFile:qfimain.dtx141soA1406S}f\vpl_rbserver_do \vpl_rboundary_do \wrn_rboundary_doI\vpl_rbserver_do8and\vpl_rboundary_doarewhat\rbserver_doand\rboundary_do IrespGectivelyarewhenaligkernprogramisbGeingwrittenandnoentryhasyetbGeenIwrittenforthebGoundarycharslot.\wrn_rboundary_doiswhatoneofthemwillIgetmsettoafterwards,ssothatwarningsarem writtenwhencollisionsbGetweenusingItheGslotFasarightbGoundarymarkerFandusingtheslotfortheactualglyphoGccur.A1407S\def\vpl_rbserver_do#1{ A1408ap\do{#1}A1409ap\let\rboundary_do=\wrn_rboundary_doA1410S}A1411S\def\vpl_rboundary_do#1{A1412ap\do{#1}A1413ap\let\rbserver_do=\wrn_rboundary_doA1414S}A1415S\def\wrn_rboundary_do#1{A1416ap\do{#1}A1417ap\immediate\write16{Boundarychar~slot~usage~collision~in~A1418p2`\slot_name'~ligkern~program.}A1419S}b\vpl_ligatureI\vpl_ligature{htyp}'e[i}{hglyphci}{hglyphi}|ܲproGduces|aligtableentryforglyph I\slot_name.XThe"doublespacesin#the\out_llinestatementbGelowmightloGok#strange,butI\numberUUwillalwaysUUgobblethe rstone.A1420S\def\vpl_ligature#1#2#3{ A1421ap\get_slot_num{#3}A1422ap\ifnum-1=\resultA1423p2\immediate\write16{Warning:~\string\ligature\spaceA1424~0for~unknown~slot~`#3'.}A1425ap\elseA1426p2\x_cs\ifx{slots-#2}\x_relaxA1427~0\immediate\write16{Warning:~\string\ligature\spaceA1428]for~unknown~slot~`#2'.}A1429p2\elseA1430~0\def\do##1{A1431]\vpl_liglabelA1432]\out_lline{(#1~D~\number`##1~\space\vpl_int\result)~A1433x(COMMENT~#2~#3)}A1434~0}A1435~0\csnameslots-#2\endcsnameA1436p2\fiA1437ap\fiA1438S}L\vpl_kerningI\vpl_kerningUUwritesoutkerninginstructions.A1439S\def\vpl_kerning{A1440ap\let\do=\vpl_kern_doA1441ap\csname~r-\slot_name\endcsnameA1442ap\vpl_ligstopA1443ap\egroupA1444S}IFile:qfimain.dtx1428soy\vpl_kernI\vpl_kern\l-hname[i\hamountظiUUwritesoutaKRNinstruction. X\vpl_kern㑲hasbGeenmodi edsothatatmostoneKRNlinstructioniswrittenIforeach(ordered)pairofcharacters.S7Theideaisbasicallytomakefontinstforget,Iuntiltheendof\vpl_kerning,ethattheglyphforwhich\vpl_kernisbGeingIcalledhasbGeenassignedaslot,GasthisstopsanymoreKRNinstructionsforthatIparticular/ glyph/frombGeingwritten.e\vpl_kernhasalsobGeenmodi ed/ sothatitIwill¬writeoutanyJ&KRN&instructionsforkernswhoseabsolutevqalueislessthanIoriequaljto\minimum_kern.\minimum_kerngetssettothevqalueoftheintegerIminimumkernin\make_header.Iftheuserhasnotsetminimumkern,DadefaultIvqalueUUof0willbGesuppliedbyxfontinst.A1445S\def\vpl_kern#1#2{ A1446ap\edef\a_macro{\expandafter\gobble_three\string#1}A1447ap\a_count=\expandafter\gobble_one\string#2\x_relaxA1448ap\ifnum\ifnum-\a_count>\a_count-\fi\a_count>\minimum_kernA1449p2\edef\b_macro{~R~\make_factor\a_count}A1450p2\csnameslots-\a_macro\endcsnameA1451ap\fiA1452ap\x_cs\let{slots-\a_macro}=\x_relaxA1453S}IObservqationn;(LHm1999/03/16):Thenslotwon'tT=bGedetectedifoneoftheitemsincontradictionisaIkern%lessthanorequalto\minimum_kern.m7PerhapsthisshouldbGechanged(let-Iting2\do3equalto\gobble_onewouldletthedectectionmechanismwork,but2\doIwouldUUhavetobGerestoredafterwardsanditisdoubtfulifitisworthit).L\vpl_kern_doI\vpl_kern_doUUiswhat\doisde nedtobGewhenkernsarewritten.A1454S\def\vpl_kern_do#1{ A1455ap\vpl_liglabelA1456ap\out_lline{A1457p2(KRN~D~\number`#1~\b_macro)~A1458p2(COMMENT~\a_macro)A1459ap}A1460S}b\out_liglabel t\boundary_liglabel b\vpl_liglabelI\out_liglabel;вwritesoutaLIGLABEL;instruction;foraslot.\boundary_liglabel IwritesoutaLIGLABEL,instructionfortheBOUNDARYCHAR,ligkernprogram.I\vpl_liglabelIJwritesoutthecorrectLIGLABELinstructionforthecurrentligkernIprogram,UUifitisapproriate.A1461S\def\out_liglabel{ A1462ap\out_lline{(LABEL~\vpl_int\slot_number)~(COMMENT~\slot_name)}A1463ap\let\vpl_liglabel=\x_relaxA1464ap\let\vpl_ligstop=\out_ligstopA1465S}A1466S\def\boundary_liglabel{A1467ap\out_lline{(LABEL~BOUNDARYCHAR)~(COMMENT~\slot_name)}A1468ap\let\vpl_liglabel=\x_relaxA1469ap\let\vpl_ligstop=\out_ligstopA1470S}A1471S\let\vpl_liglabel=\out_liglabelIFile:qfimain.dtx143qsoL\out_ligstop L\vpl_ligstopI\vpl_ligstopUUwritesoutaLIGSTOPinstructionifappropriate.A1472S\def\out_ligstop{\out_lline{(STOP)} A1473ap\let\vpl_liglabel=\out_liglabelA1474ap\let\vpl_ligstop=\x_relax}A1475S\let\vpl_ligstop=\x_relax6I12.5nThecharactersuTf\make_charactersA1476S\def\make_characters#1{A1477ap\bgroupA1478p2\let\do_slot=\do_characterA1479p2\let\end_do_slot=\end_do_characterA1480p2\let\nextlarger=\vpl_nextlargerA1481p2\let\varchar=\vpl_varcharA1482p2\let\endvarchar=\end_vpl_varcharA1483p2\let\vartop=\vpl_vartopA1484p2\let\varmid=\vpl_varmidA1485p2\let\varbot=\vpl_varbotA1486p2\let\varrep=\vpl_varrepA1487p2\if_including_map_A1488~0\let\saved_raw\vpl_rawA1489~0\let\saved_rule\vpl_ruleA1490~0\let\saved_special\vpl_specialA1491~0\let\saved_warning\vpl_warningA1492~0\let\saved_movert\vpl_movertA1493~0\let\saved_moveup\vpl_moveupA1494~0\let\saved_push\vpl_pushA1495~0\let\saved_pop\vpl_popA1496p2\elseA1497~0\def\do_character_map{A1498]\ifdim\rawfont_scaling=-\p@A1499x\mapfonts\slot_nameA1500]\elseA1501x\let\do_character_map=\x_relaxA1502]\fiA1503~0}A1504~0\let\saved_mapfont\pl_mapfontA1505~0\let\saved_scale\vpl_scaleA1506p2\fiA1507p2\pre_fourth_etx_pass_hookA1508p2#1A1509p2\post_fourth_etx_pass_hookA1510ap\egroupA1511S}b\do_characterI\do_character8proGducesacharacterentryforglyph\slot_nameinslot\slot_number.A1512S\def\do_character{A1513ap\if_undefined{g-\slot_name}\thenA1514p2\ifisint{requireglyphs}\thenA1515~0\fontinstwarning{ETX~to~(V)PL}{A1516]Undefined~glyph~`\slot_name'~requested\message_breakA1517]for~slot~\the\slot_number\message_number}IFile:qfimain.dtx144soA1518p2\fi A1519p2\expandafter\gobble_setslotA1520ap\elseA1521p2\ifx\slot_name\notdef_name\elseA1522~0\out_line{(CHARACTER~\vpl_int\slot_number\spaceA1523](COMMENT~\slot_name)}A1524~0\glyph_parameter\glyph_metrics\slot_nameA1525~0\a_dimen=\make_factor\a_count\p@A1526~0\do_character_sidebearingsA1527~0\out_lline{(CHARWD~\vpl_real\a_dimen)}A1528~0\ifnum\z@=\b_count\elseA1529]\out_lline{(CHARHT~R~\make_factor\b_count)}A1530~0\fiA1531~0\ifnum\z@=\c_count\elseA1532]\out_lline{(CHARDP~R~\make_factor\c_count)}A1533~0\fiA1534~0\ifnum\z@=\d_count\elseA1535]\out_lline{(CHARIC~R~\make_factor\d_count)}A1536~0\fiA1537~0\do_character_mapA1538p2\fiA1539ap\fiA1540S}.&\do_character_sidebearings .A1541S\def\do_character_sidebearings{A1542ap\ifisint{\slot_name-spacing}\thenA1543p2\curr_bearings=\make_factor{\int{\slot_name-spacing}}\half_pointA1544ap\elseA1545p2\curr_bearings=\side_bearingsA1546ap\fiA1547ap\advance\a_dimenby2\curr_bearingsA1548S} \do_character_map .A1549S\def\do_character_map{A1550ap\global\prev_mapfont=0A1551ap\out_lline{(MAP}A1552ap\ifdim0pt=\curr_bearingsA1553p2\mapcommands\slot_nameA1554ap\elseA1555p2\out_llline{(MOVERIGHT~\vpl_real\curr_bearings)}A1556p2\mapcommands\slot_nameA1557p2\out_llline{(MOVERIGHT~\vpl_real\curr_bearings)}A1558ap\fiA1559ap\out_llline{)}A1560S}@l\do_character_no_letterspacingILH1999/03/27:fThis$isanalternativeversionof\do_character%whichIthink Iisϥnowantiquated.ItusedtohaveanadvqantageoverϦ\do_characterinthatitIdidяnotdoѐanyletterspacing(inv1.5,thatwasgoGodѐsinceя\do_characterusedItoBwritecoGdeforBletterspacingtotheVPLBregardlessofwhetheriswasneededorInot),butthatadvqantageisgonesince\do_character_mapisnowabitlessstupidIthanUUitusedtobGe.IFile:qfimain.dtx145hsoXF*ortherecord, I`don'tthinkthereeverwasauserinterfaceforusingthismacro Iinsteadof\do_character, butIsuspGectthereareplentyofpeoplearoundwhoIhaveUUhackeditintobGeingused.XWithv1.913Icommenteditoutcompletely*,=sinceIdidn'tfeellikeupGdatingItheUUcallsto\afm_convert.A1561Shobsolete#i A1562S%\def\do_character_no_letterspacing{A1563S%\\x_cs\ifx{g-\slot_name}\x_relaxA1564S%!!\expandafter\gobble_setslotA1565S%\\elseA1566S%!!\ifx\slot_name\notdef_name\elseA1567S%/?\out_line{(CHARACTER~\vpl_int\slot_number\spaceA1568S%=l(COMMENT~\slot_name)}A1569S%/?\afm_convert\a_dimen=\width\slot_name;A1570S%/?\out_lline{(CHARWD~\vpl_real\a_dimen)}A1571S%/?\afm_convert\a_dimen=\height\slot_name;A1572S%/?\out_lline{(CHARHT~\vpl_real\a_dimen)}A1573S%/?\afm_convert\a_dimen=\depth\slot_name;A1574S%/?\out_lline{(CHARDP~\vpl_real\a_dimen)}A1575S%/?\afm_convert\a_dimen=\italic\slot_name;A1576S%/?\ifnum\a_dimen>0\out_lline{(CHARIC~\vpl_real\a_dimen)}\fiA1577S%/?\global\prev_mapfont=0\out_lline{(MAP}A1578S%=l\mapcommands\slot_nameA1579S%/?\out_llline{)}A1580S%!!\fiA1581S%\\fiA1582S%}A1583Sh=obsolete#i 6\gobble_setslotA1584S\long\def\gobble_setslot#1\endsetslot{\endsetslot} \end_do_characterA1585S\def\end_do_character{A1586ap\ifisglyph\slot_name\thenA1587p2\out_lline{)}A1588ap\fiA1589S}L\notdef_nameA1590S\def\notdef_name{.notdef}6I12.6nSlotm3commandsm2thatputthingsinacharacterprop`ertynlistuTIHerefollowstheactivede nitionsforthoseslotcommandsthatcausesthingsto IbGeUUputinCHARACTERpropertylists. 6\vpl_nextlargerI\vpl_nextlarger{hname[i}UUproGducesaNEXTLARGERentry*.A1591S\def\vpl_nextlarger#1{ A1592ap\get_slot_num{#1}A1593ap\ifnum-1<\resultIFile:qfimain.dtx146soA1594p2\out_lline{(NEXTLARGER~D~\the\result)~(COMMENT~#1)} A1595ap\elseA1596p2\immediate\write16{Warning:~\string\nextlarger\spaceA1597~0for~unknown~slot~`#1'}A1598ap\fiA1599S}VCL\vpl_varchar f\end_vpl_varcharI\vpl_varcharFӸhvar}'char commands!iF\end_vpl_varcharproGducesaVARCHARFentry*.-A1600S\def\vpl_varchar{\out_lline{(VARCHAR}},A1601S\def\end_vpl_varchar{\out_llline{)}} \vpl_vartop rA1602S\def\vpl_vartop#1{ A1603ap\get_slot_num{#1}A1604ap\ifnum-1<\resultA1605p2\out_llline{(TOP~D~\the\result)~(COMMENT~#1)}A1606ap\elseA1607p2\immediate\write16{Warning:~\string\vartop\spaceA1608~0for~unknown~slot~`#1'}A1609ap\fiA1610S}VC \vpl_varmid rA1611S\def\vpl_varmid#1{A1612ap\get_slot_num{#1}A1613ap\ifnum-1<\resultA1614p2\out_llline{(MID~D~\the\result)~(COMMENT~#1)}A1615ap\elseA1616p2\immediate\write16{Warning:~\string\varmid\spaceA1617~0for~unknown~slot~`#1'}A1618ap\fiA1619S}VB \vpl_varbotA1620S\def\vpl_varbot#1{A1621ap\get_slot_num{#1}A1622ap\ifnum-1<\resultA1623p2\out_llline{(BOT~D~\the\result)~(COMMENT~#1)}A1624ap\elseA1625p2\immediate\write16{Warning:~\string\varbot\spaceA1626~0for~unknown~slot~`#1'}A1627ap\fiA1628S}VC \vpl_varrep rA1629S\def\vpl_varrep#1{A1630ap\get_slot_num{#1}A1631ap\ifnum-1<\resultA1632p2\out_llline{(REP~D~\the\result)~(COMMENT~#1)}A1633ap\elseA1634p2\immediate\write16{Warning:~\string\varrep\spaceA1635~0for~unknown~slot~`#1'}A1636ap\fiA1637S}IFile:qfimain.dtx147ŠsoI12.7nSavedmapcommandsuTITheZfollowing[commands(and\vpl_scale,whichis[de nedabGove)can[bGeused IinUUthehmap}'commands!iUUglyphparameter.3P\vpl_rawIThisƤmacroƣwritestheentriesinaMAPƀthatareneededforthegivenrawƤcharacter.INote thatthe`at'commentbGelowgivesthe scalingrelativetotheatsizeoftheIvirtualUUfont,notthephysicalatsize.A1638S\def\vpl_raw#1#2#3{ A1639ap\global\next_mapfont=\csname\the\mapfont_scaling-#1\endcsnameA1640ap\ifnum\next_mapfont=\prev_mapfont\elseA1641p2\out_llline{(SELECTFONT~\vpl_int\next_mapfont)~A1642~0(COMMENT~#1~at~A1643\expandafter\lose_measure\the\mapfont_scaling)}A1644ap\fiA1645ap\out_llline{(SETCHAR~D~#2)~(COMMENT~#3)}A1646ap\global\prev_mapfont=\next_mapfontA1647S}y\vpl_ruleA1648S\def\vpl_rule#1#2{A1649ap\a_dimen=\make_factor{#2}\mapfont_scalingA1650ap\b_dimen=\make_factor{#1}\mapfont_scalingA1651ap\out_llline{(SETRULE~\vpl_real\a_dimen\space\vpl_real\b_dimen)}A1652S}L\vpl_special L\vpl_warning warningspecialsswitc9hA1653S\def\vpl_special#1{A1654ap\out_llline{(SPECIAL~#1)}}A1655S\def\vpl_warning#1{A1656ap\ifwarningspecialsA1657p2\out_llline{(SPECIAL~Warning:~#1)}A1658ap\fiA1659ap\immediate\write16{Warning:~#1.}A1660S}A1661S\newif\ifwarningspecialsA1662S\warningspecialstrue \vpl_movert \vpl_moveupA1663S\def\vpl_movert#1{A1664ap\a_dimen=\make_factor{#1}\mapfont_scalingA1665ap\out_llline{(MOVERIGHT~\vpl_real\a_dimen)}A1666S}A1667S\def\vpl_moveup#1{A1668ap\a_dimen=\make_factor{#1}\mapfont_scalingA1669ap\out_llline{(MOVEUP~\vpl_real\a_dimen)}A1670S}y\vpl_push 3P\vpl_popA1671S\def\vpl_push{\out_llline{(PUSH)}}A1672S\def\vpl_pop{\out_llline{(POP)}}IFile:qfimain.dtx148IsoI12.8nTidyingupuT$\make_tidyIIfaVPL lewaswritten,thetidyingupconsistsofclearingthelistofmapfont InumbGers,q>since8vthatis8wstoredglobally*.*IfaPL8; lewaswritten,q>thetidyingupIconsistsUUofwritingaDESIGNUNITSpropGertyforthosefontswhichneedone. ՍA1673S\def\make_tidy#1{ A1674ap\tidying_up_hookA1675ap\if_including_map_A1676p2\a_count=0A1677p2\loop\ifnum\a_count<\font_countA1678~0\edef\a_macro{\csname~f-\the\a_count\endcsname}A1679~0\global\x_cs\let\a_macro\x_relaxA1680~0\advance\a_countby1A1681p2\repeatA1682p2\global\font_count=0A1683ap\elseA1684p2\ifdim\rawfont_scaling<\z@A1685~0\fontinstwarning{ETX~to~(V)PL}{The~font~A1686]\out_filename\spacedoesn't~contain~any~characters}A1687~0\global\rawfont_scaling=\p@A1688p2\fiA1689p2\ifdim\rawfont_scaling=\p@\elseA1690~0\out_line{(DESIGNUNITS~\vpl_real\rawfont_scaling)}A1691p2\fiA1692ap\fiA1693S} mI13ifdFfontffinstallationcommandsand=߆Tff cmtt12.fd lesITheUUcallb\installfonts f\endinstallfonts;Tb\installfontsUUhinstallc}'ommands!i\endinstallfontsIis6thetop-levelinterfaceforinstallinganumbGeroffontsandcreating.fd lesfor Ithem.XTheUUhinstallc}'ommands!iare:\installfamilyL\installfont 6\installrawfont;Sb\installfamily{henc}'oding}i}{hfamilyi}{hFD-c}'ommmands!i}b\installfont{hfont-name[i}{h le-listظi}{hetx4Di}q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}b\installrawfont{hfont-name[i}{h le-listظi}{hetx4Di}q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}b\installfontas{hfont-name[i}q{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei};TXEach\installfamilycommandcausesthegenerationofan.fd leforIhenc}'oding}i$and$hfamilyi,Xwhichis$writenoutbythetime\endinstallfontsisIproGcessed.XEach\installfontgeneratesa.vplfontbycalling\etxtovplandaddsanI.fdentry*.1Each\installrawfontgeneratesaligfull.plfontbycalling\etxtoplIandaddsan.fdentry*.?(Raw.plfonts,containingonlytheglyphmetricswithoutIanyQligaturingorRkerninginformation,arealsogeneratedbyR\mtxtoplcalledfromI\transformfontUUstatements.)IFile:qfimain.dtx149sob\installfontsIInitializesɿthe\family_toksɾtokenregister,whichisusedtoɾstoretheinformation IwhichUUiswrittenoutto.fd lesattheendofthejob.齍A1694S\newtoks\family_toks A1695S\def\installfonts{A1696ap\bgroupA1697ap\global\family_toks={}A1698ap\gdef\prev_file_list{}A1699ap\global\let\setsomething_global=\globalA1700S}ޜ\installfamilyI\installfamily{henc}'oding}i}{hfamilyi}{hFD-c}'ommmands!i}XAddsUUthecommandzb\fd_family{henc}'oding}i}{hfamilyi}{hFD-c}'ommmands!i}{ItoUUthetokenlist\family_toksandde nesamacro\henc}'oding}i-hfamilyi.J\hencodingUi-hfamilyi齍A1701S\def\installfamily#1#2#3{A1702ap\global\family_toks=A1703p2\expandafter{\the\family_toks\fd_family{#1}{#2}{#3}}A1704ap\global\x_cs\let{#1-#2}\empty_commandA1705S}ޜL\installfont 6\installrawfontI\installfont{hfont-name[i}{h le-listظi}{hetx4Di}]{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}I\installrawfont{hfont-name[i}{h le-listظi}{hetx4Di}]{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}{hsizei}齍A1706S\def\installfont#1#2#3#4#5#6#7#8{A1707ap\global\let\setsomething_global=\x_relaxA1708ap\input_metrics{}{#2}A1709ap\etxtovpl{#3}{#1}A1710ap\installfontas{#1}{#4}{#5}{#6}{#7}{#8}A1711ap\global\let\setsomething_global=\globalA1712S}A1713S\def\installrawfont#1#2#3#4#5#6#7#8{A1714ap\global\let\setsomething_global=\x_relaxA1715ap\xdef\out_filename{#1}A1716ap\input_metrics{\let\storemapdata=\installraw_storemap}{#2}A1717ap\let\storemapdata=\gobble_threeA1718ap\etxtopl{#3}{#1}A1719ap\record_usage{#1}A1720ap\installfontas{A1721p2\ifdim\rawfont_scaling=\p@\elseA1722~0[\expandafter\lose_measure\the\rawfont_scaling]~A1723p2\fi#1A1724ap}{#4}{#5}{#6}{#7}{#8}A1725ap\global\let\setsomething_global=\globalA1726S}ޜ߀H\installraw_storemapIThe=/\installraw_storemap=0macroisade nitionof\storemapdatathatisusedIwhen+the+metricsforaligfulPL* leisbGeinginputed. ItsjobistowriteaI\storemapdatacommandforthisPLztothetransformsrecord leifthePLIbGeingwrittendoesnothavethesamenameastheMTXJthatthemetricsareItaken(from(theinformationisalreadystoredifbGoth leshavethesamename).IFile:qfimain.dtx150_soI\out_filenameciscprematurelysetby\installrawfont(i.e.,glongbGeforethePL I leUUisactuallyopGened)sothatitcanbeusedincomparingthe lenames.A1727S\def\installraw_storemap#1#2#3{ A1728ap\def\a_macro{#1}A1729ap\ifx\a_macro\out_filename\elseA1730p2\record_transform{\out_filename}{\string\frommtx{#1}}{}\if_falseA1731ap\fiA1732S}\input_metricsIThej\input_metricsmacrojtakesacomma-separatedlistofmetric lesasitsIsecondargumentandseestothatexactlythesemetricsareloaded.kIfthelistisIidentical8to8thatusedinthelastcallto\input_metrics,>thenthisisalreadytheIcaseoandp\input_metricssimplyrefrainsfrom ushingthosepreviousmetricsIfrom/TU>'ExX's0memory*.VOtherwiseitclosesagroup( ushingthemetricsfromaIprevious3ccall),jopGensa3dgroup(sothatthesemetricscanbGe ushedatthenextI\installfontor\installrawfontcommand,ifnecessary),andstartsinputtingItheUUmetrics lesinquestion.XThe? rst>argumentconsistsofcoGdethatwillbGeexecutedafterthegrouphasIbGeenUUclosedandopened,butbeforeanymetricsisinputed.A1733S\def\input_metrics#1#2{A1734ap\let\metrics=\file_list_metricsA1735ap\xdef\curr_file_list{#2,}A1736ap\let\metrics=\x_relaxA1737ap\ifx\prev_file_list\curr_file_list\elseA1738p2\egroup\bgroupA1739p2#1A1740p2\expandafter\process_csep_list\expandafter\input_mtx_fileA1741yw^\curr_file_list\process_csep_list,A1742p2\global\let\prev_file_list=\curr_file_listA1743ap\fiA1744S}t\file_list_metricsIThe\file_list_metricsmacroisade nitionof\metricsthatisusedintheIh le-listظiwargumentvof\installfontand\installrawfontwhenthatis\xdefedIby\input_metrics. ]ThisspGecialde nitionpreventsthesucceedinghmetricIc}'ommands!iUUfromgettingexpanded.A1745S\def\file_list_metrics#1,{A1746ap\iffalse{\fi}A1747ap\a_toks=\expandafter{\curr_file_list\x_relax#1,}A1748ap\xdef\curr_file_list{\the\a_toks\iffalse}\fiA1749S}\installfontasITheUU\installfontascommandhasthesyntaxb\installfontas{hfont-infoi}{henc}'oding}i}{hfamilyi}{hseries!i}{hshap}'e[i}q{hsize[i}IThePpreciseOde nitionofahfont-infoicanbGefoundin[7, Sec.4],hereitsuf-I ces tosaythatafontname(nameof(V)PL le)isavqalidhfont-infoi.TheI\installfontasocommandaddsanentryforothehfont-infoifonttoafontde n-Iition.z le,givingittheNFSS.attributeshenc}'oding}i/hfamilyi/hseries!i/hshap}'e[i/Ihsize[i.̹Thessubstitutionsmechanismwillactonhseries!iandhshap}'e[i,:anditisIFile:qfimain.dtx151'soIthereforepGossiblethathfont-infoiwillappearinmorethanone\DeclareFont- IShapewcommand.M-hsize[ivcanbGeeithersomehsize-infos!i,asde nedin[7,Sec.4],IorUUafontinstshorthandforasuch,declaredusing\declaresize. aA1750S\def\installfontas#1#2#3#4#5#6{ A1751ap\if_undefined{#2-#3-#4-#5}\thenA1752p2\let\do_shape=\x_relaxA1753p2\if_undefined{#2-#3}\thenA1754~0\x_cs\let{#2-#3}\empty_commandA1755~0\autoinstallfamily{#2}{#3}A1756p2\fiA1757p2\x_cs\xdef{#2-#3}{A1758~0\csname#2-#3\endcsnameA1759~0\do_shape{#2}{#3}{#4}{#5}A1760p2}A1761ap\fiA1762ap\let\do_size=\x_relaxA1763ap\x_cs\xdef{#2-#3-#4-#5}{A1764p2\if_defined{#2-#3-#4-#5}\thenA1765~0\csname#2-#3-#4-#5\endcsnameA1766p2\fiA1767p2\do_size{#6}{#1}A1768ap}A1769S}$t\autoinstallfamilyIThisfcommandiscalledfby\installfontaswhenitisaskedtofinstallafontfor IwhichUUno\installfamilyhasbGeengiven.qThesyntaxisb\autoinstallfamily{henc}'oding}i}{hfamilyi}IIt>defaults>tocalling\installfamilyintheobviousway*,Cbut>itcanbGerede nedIifUUtheuserwantsUUsomethingdi erent.A1770S\def\autoinstallfamily#1#2{\installfamily{#1}{#2}{}}$f\endinstallfontsIFinish)theinstallation*byproGcessingthe\family_tokstokenregister,whichcon-ItainsUUtheaccumulatedinformationtobGewrittenoutto.fd les. A1771S\def\endinstallfonts{ A1772ap\global\let\setsomething_global=\x_relaxA1773ap\let\do_shape=\fd_shapeA1774ap\let\do_size=\fd_sizeA1775ap\the\family_toksA1776ap\global\family_toks{}A1777ap\egroupA1778S}$XTheI>\installfontcommandI?hastraditionallyallowedI>thatnamesofbasefonts I(MTX les)aresuxedbya scaled hfactorithatwouldcausetherawscaleIintegerz6tobGesetandz7therebyscaleeverythingthatwasinthatbasez7fontbythesaidIhfactori.ThereЪisnowamoregeneralapproachtothis.IfthecontrolsequenceIIFKW-hkeywor}'di^is_de nedthenhkeywor}'dimaybGeusedasscaledisabGove;cthis\IFKW-hkeywordpiIcontrolsequenceshouldgraballthe\arguments"ofthekeyword,proGcessthemasInecessary*,andendwiththe\get_keywordmacrosothatanotherkeywordmayIbGeZprocessed.7Asarule,.theargumentsandkeywordsareZdelimitedfromeachIother[bysingle[spaces.A[macrograbbinganargumentgrabsalso[thespaceafterIit.qTheUUIFKWisforInstallFontKey#Word.IFile:qfimain.dtx1525so 6\input_mtx_fileIThel\input_mtx_macroltakesoneundelimitedargument.Itinterpretslthisargu- Imentqasifitwasoneitemqintheh le-listظiargumentof\installfontor\install-Irawfont,KandIfdoGesIethecorrespondingIfprocessing.mTheargumentIeshouldbeIfoneofItheUUfollowingthreethings:bhfontظihoptionalmo}'di ers!ib\metricsUUhmetricc}'ommands!ibhnothing}iIIf,inthe rstcase,anMTX leforhfontظidoGesnotexistthenitisgeneratedonItheV yfromacorrespGonding.pl,.afm,orV.vpl leUinthecallto\fromany.InIthesecondcase,thehmetricdc}'ommands!isimplygetexecuted.vInthethirdcase,InothingUUhappGens.XThe8hoptional8mo}'di ers!iiseitheremptyorhastheformhmodi er8clause[ihoptionalImo}'di ers!i.qAUUhmodi erclause[igenerallyhastheformb hkeywor}'di hargument(s)^iIe.g.,b scaled hr}'awscalefactoriA1779S\def\input_mtx_file#1{ A1780ap\reset_modifiers_hookA1781ap\ifx\x_relax#1\x_relaxIThistestsforanemptyargument,!butitalsoletsexplicitmetriccommandsbGe Iexecuted.A1782ap\elseA1783p2\identity_one{\get_file_name#1~}~\parIThe_two^spaceshave^thee ectofputtinganemptykeyword_moGdi erlastintheIhoptionalJmo}'di ers!i.Ifeverythingisallrightthenthiswillgobblethe\par.IHowever,fifcLthecKuserforgotsomeargumentofthelastkeywordthencKtherewillbGeIanUUerrormessagewhen\get_keywordwilltrytograbthenextkeyword.XIfanencoGdinghasbeenspeci edthenthesource lemustbeaPLorVPL leI(sincethesearetheonlyonesforwhichitmakessensetospGecifyanencoGding),IotherwiseUUwerelyon\fromanyto ndafontmetrics le.A1784p2\ifx\pl_encoding\empty_commandA1785~0\fromany\file_nameA1786p2\elseA1787~0\metrics_given_encoding{\file_name}{\pl_encoding}A1788p2\fiA1789p2\ifisstr{afm-name}\thenA1790~0\inputmtx{\str{afm-name}}A1791p2\elseA1792~0\fontinsterror{\string\install...}{A1793]Font/MTX~file~\file_name\spacenot~foundA1794~0}{A1795]You~can~insert~an~\string\inputmtx\spacecommand~hereA1796]\messagebreakto~input~some~other~MTX~file~instead.A1797]\ifisint{rawscale}\then\messagebreakA1798]The~requested~raw~scaling~will~then~be~applied~on~that.A1799]\fiIFile:qfimain.dtx153BsoA1800~0} A1801p2\fiA1802ap\fiA1803S}S\metrics_given_encodingIThismacroisacousinof\fromany,4forthecasethatmetricsaretakenfroma I(V)PLUU lethatfurthermoreisassignednonstandardmetrics.qThesyntaxisb\metrics_given_encoding{hfontظi}{hetx4Di}Iand:the;generatedMTX/ leisnamedhfontظi-hetx4Di.mtxtoavoidthat:itispickedIupUUby\fromanybymistake. A1804S\def\metrics_given_encoding#1#2{ A1805ap\x_cs\edef{s-afm-name}{#1-#2}A1806ap\if_file_exists{#1.pl}\thenA1807p2\generalpltomtx{#1}{#1-#2}{pl}{#2}A1808ap\elseA1809p2\if_file_exists{#1.vpl}\thenA1810~0\generalpltomtx{#1}{#1-#2}{vpl}{#2}A1811p2\elseA1812~0\unsetstr{afm-name}A1813ap\fi\fiA1814S}Ʋ\reset_modifiers_hookITheg!\reset_modifiers_hookg macrocontainscoGdethatinitialisesallparametersIthatGaremoGdi edbysomehmo}'di erclause[itotheirFdefaultvqalues.IfyouneedItoaddsomeinitialisationsduetothatyoude neadditionalkeywordsthenyouIshouldUUappGendtheseinitialisationstothismacro. A1815S\def\reset_modifiers_hook{A1816ap\unsetint{rawscale}A1817ap\let\glyph_name_modifier\identity_oneA1818ap\let\pl_encoding\empty_commandA1819ap\let\list_of_options\empty_commandA1820S}\get_file_nameIThe macro \get_file_namegrabsthebasefont(orotherMTX le)nameandIstartsUUtheproGcessingofthehoptionalmo}'di ers!i. A1821S\def\get_file_name#1~{A1822ap\edef\file_name{#1}A1823ap\get_keywordA1824S}L\get_keywordf\gobble_keywordsITheUU\get_keywordmacroexpGectstobeexpandedinthecontextb\get_keywordhkeywor}'di Iwhere$Tthehkeywor}'diisapGossiblekeyword.If$T\IFKW-hkeywordiisde nedthenIthe§abGoveexpands¨toit,otherwisetheabGoveexpandstoan¨errormessagefollowedIby 5a\gobble_keywords,Rwhichwillgobble 4therestofthelistofkeywords 5andIarguments. A1825S\def\get_keyword#1~{ A1826ap\if_defined{IFKW-#1}\thenA1827p2\csnameIFKW-#1\expandafter\endcsnameA1828ap\elseIFile:qfimain.dtx154NYsoA1829p2\fontinsterror{\string\install...}{ A1830~0`#1'~is~not~a~defined~keywordA1831p2}{A1832~0\error_help_a\messagebreakA1833~0Extra~tokens~will~be~flushed.A1834p2}A1835p2\expandafter\gobble_keywordsA1836ap\fiA1837S}aA1838S\def\gobble_keywords#1\par{}!|\IFKW-ITheUUemptykeywordisusedto agtheendofthehoptionalmo}'di ers!i. ܰA1839S\x_cs\let{IFKW-}=\gobble_keywordsL\IFKW-scaledIThisUUmacrohandlesgrabbingtheargumentofthetraditionalscaledkeyword. ܱA1840S\x_cs\def{IFKW-scaled}#1~{ A1841ap\ifnum#1=\one_thousandA1842p2\unsetint{rawscale}A1843ap\elseA1844p2\x_resetint{rawscale}{#1}A1845ap\fiA1846ap\get_keywordA1847S}L\IFKW-suffixIThis?rmacro?shandlesgrabbingtheargumentofthesuffixkeyword.0The?re ect Iof*`suffixhsux4Di'isthathsuxiwillbGe)appended*tothenameofeveryglyphIde nedUUbythenextMTX letobGereadin.A1848S\x_cs\def{IFKW-suffix}#1~{ A1849ap\def\glyph_name_modifier##1{##1#1}A1850ap\get_keywordA1851S}\IFKW-encoding L\pl_encodingIThispmacrohandlesgrabbingptheargumentoftheencodingkeyword.Thee ect Iof`encodinghetx4Di'isthathetxiwillbGeusedasencodingwhenconvertingaPLIorVPL^ letoMTX.\pl_encodingisusedforstoringtheargumentvqalue.U_ItsIexpansionisnormallyempty*,whichmeans\fromafmhandlesloGcatingthemetricsI leUUandtheencoGdingusedforaPLorVPLisdeterminedbyitscodingscheme.A1852S\x_cs\def{IFKW-encoding}#1~{ A1853ap\def\pl_encoding{#1}A1854ap\get_keywordA1855S}A1856S\let\pl_encoding=\empty_commandL\IFKW-optionIThisRmacrohandlesRgrabbingtheargumentoftheoptionkeyword.pOneRcantest IusingUU\ifoptionwhetheraparticularoptionwasspGeci ed. ܰA1857S\x_cs\def{IFKW-option}#1~{A1858ap\add_to\list_of_options{\do{#1}}A1859S}y\ifoption f\list_of_optionsIThe2\ifoption1commandisusedtotestwhetheraparticularoptionispresenton ItheUUlistofoptions.qThesyntaxisrb\ifoption{hstring}i}\thenIFile:qfimain.dtx155YmsoIand it istestedwhetherthehstring}iwasoneoftheoptionsgiven.LLike strings IinxUgeneral,thehstring}iisexpandedbGeforexTitiscomparedtotheoptionslistedinI\list_of_options.XTheUU\list_of_optionsisasequenceofitemsontheformb\do{hoptionci}IwhereUUeachhoptionciisanalreadyexpandedstringofcharacters.A1860S\def\ifoption#1\then{ A1861ap\_a_falseA1862ap\edef\a_macro{#1}A1863ap\def\do##1{A1864p2\if_a_\elseA1865~0\def\b_macro{##1}A1866~0\ifx\a_macro\b_macro\_a_true\fiA1867p2\fiA1868ap}A1869ap\list_of_optionsA1870ap\if_a_A1871S}A1872Sh=pkgKiA1873ShdoAceLiA1874S\def\ifoption#1\then{%A1875ap\generic@if{option\TypesetStringExpression{#1}}%A1876S}A1877Sh=doAceLiA1878ShpkgKiA1879S\let\list_of_options\empty_command6I13.1nWritingfontde nition lesuT$\fd_familyI\fd_family{ENCODING}{FAMILY}{FD-COMMANDS} XW*rites%out$an.fd leforthespGeci edENCODINGandFAMILYprocessing%theIaccumulatedUUinformationanddefaultsubstitutions.A1880S\def\fd_family#1#2#3{ A1881ap\a_toks{#3}A1882ap\edef\lowercase_file{\lowercase{A1883kJ\edef\noexpand\lowercase_file{#1#2.fd}}}A1884ap\lowercase_fileA1885ap\open_out{\lowercase_file}A1886ap\out_line{\percent_char~Filename:~\lowercase_file}A1887ap\out_line{\percent_char~Created~by:~tex~\jobname}A1888ap\out_line{\percent_char~Created~using~fontinst~v\fontinstversion}A1889ap\out_line{}A1890ap\out_line{\percent_char~THIS~FILE~SHOULD~BE~PUT~IN~A~TEX~INPUTS~A1891p2DIRECTORY}A1892ap\out_line{}A1893ap\out_line{\string\ProvidesFile{\lowercase_file}}A1894ap\out_lline{[A1895p2\the\year/A1896p2\ifnum10>\month0\fi\the\month/A1897p2\ifnum10>\day0\fi\the\day\spaceA1898p2Fontinst~v\fontinstversion\spaceIFile:qfimain.dtx156dsoA1899p2font~definitions~for~#1/#2. A1900ap]}A1901ap\out_line{}A1902ap\out_line{\string\DeclareFontFamily{#1}{#2}{\the\a_toks}}A1903ap{A1904p2\csname#1-#2\endcsnameA1905p2\out_line{}A1906p2\let\do_shape=\substitute_shapeA1907p2\csname#1-#2\endcsnameA1908p2\let\do_shape=\remove_shapeA1909p2\csname#1-#2\endcsnameA1910ap}A1911ap\x_cs\g_let{#1-#2}\x_relaxA1912ap\out_line{}A1913ap\out_line{\string\endinput}A1914ap\close_out{Font~definitions}A1915S}y\fd_shapeI\fd_shape{ENCODING}{FAMILY}{SERIES}{SHAPE}A1916S\def\fd_shape#1#2#3#4{A1917ap\out_line{}A1918ap\out_line{\string\DeclareFontShape{#1}{#2}{#3}{#4}\left_brace_char}A1919ap\csname#1-#2-#3-#4\endcsnameA1920ap\x_cs\g_let{#1-#2-#3-#4}\empty_commandA1921ap\out_line{\right_brace_char{}}A1922S}3P\fd_sizeI\fd_size{SIZE}{FONT-NAME}A1923S\def\fd_size#1#2{A1924ap\x_cs\ifx{siz-#1}\x_relaxA1925p2\out_lline{#1~#2}A1926ap\elseA1927p2\out_lline{\csnamesiz-#1\endcsname\space#2}A1928ap\fiA1929S}b\remove_shapeI\remove_shape{ENCODING}{FAMILY}{SERIES}{SHAPE}A1930S\def\remove_shape#1#2#3#4{A1931ap\x_cs\g_let{#1-#2-#3-#4}\x_relaxA1932S} \substitute_shapeI\substitute_shape{ENCODING}{FAMILY}{SERIES}{SHAPE}A1933S\def\substitute_shape#1#2#3#4{A1934ap\edef\orig_shape{#4}A1935ap\substitute_series{#1}{#2}{#3}{\orig_shape}A1936ap\x_cs\ifx{sub-\orig_shape}\x_relax\elseA1937p2\edef\subst_shape{\csnamesub-\orig_shape\endcsname}A1938p2\x_cs\ifx{#1-#2-#3-\subst_shape}\x_relaxA1939~0\out_line{A1940]\string\DeclareFontShape{#1}{#2}{#3}{\subst_shape}{A1941x<->\csnametyp-\orig_shape\endcsname\spaceA1942x*~#2/#3/\orig_shapeA1943]}{}IFile:qfimain.dtx157nesoA1944~0} A1945~0\x_cs\let{#1-#2-#3-\subst_shape}\empty_commandA1946~0\substitute_shape{#1}{#2}{#3}{\subst_shape}A1947p2\fiA1948ap\fiA1949S}%t\substitute_seriesI\substitute_series{ENCODING}{FAMILY}{SERIES}{SHAPE}mA1950S\def\substitute_series#1#2#3#4{A1951ap\edef\orig_series{#3}A1952ap\x_cs\ifx{sub-\orig_series}\x_relax\elseA1953p2\edef\subst_series{\csnamesub-\orig_series\endcsname}A1954p2\x_cs\ifx{#1-#2-\subst_series-#4}\x_relaxA1955~0\out_line{A1956]\string\DeclareFontShape{#1}{#2}{\subst_series}{#4}{A1957x<->\csnametyp-\orig_series\endcsname\spaceA1958x*~#2/\orig_series/#4A1959]}{}A1960~0}A1961~0\x_cs\let{#1-#2-\subst_series-#4}\empty_commandA1962~0\substitute_series{#1}{#2}{\subst_series}{#4}A1963p2\fiA1964ap\fiA1965S} \substitutesilent f\substitutenoisyIThesecommandsspGecifyadefaultsubstitutionforseriesorshapehtoi,which IpGointsUUtotheseriesorshapehfr}'omci.ۍb\substitutesilent{htoi}{hfr}'omci}b\substitutenoisy{htoi}{hfr}'omci}܍ITherecanbGeatmostonehtoiforeveryhfr}'omci;$latersubstitutionswilloverrideIprevious҂ones.PIfhtoiand҃hfr}'omciareequal,thenanyexistingsubstitutionfromIhfr}'omciUUisdisabled.XTheJkwaythisJlisimplementedisthatifJlafonthasbGeeninstalledJlwithshapeorIseriesTŸhfr}'omci,TbutTnoentryforhtoihasbGeenwritten,TthenwriteanentryalsoforIhtoiвconsistingofasubstitutionbyhfr}'omci.*7(Afterdoingthat,.anentryhasbGeenIwrittenalsoforhtoi,sotheproGcessmayrepGeatitselfwiththeoldhtoiasanewIhfr}'omci.)$9\substitute_genericIThis]is]thecommonpartof\substitutesilentand\substitutenoisy.#TheIsyntaxUUisb\substitute_generic{htyp}'e[i}{htoi}{hfromci}ۍIwhereUUhtyp}'e[iisssuborsubrespGectively*. A1966S\def\substitute_generic#1#2#3{ A1967ap\edef\a_macro{#2}A1968ap\edef\b_macro{#3}A1969ap\ifx\a_macro\b_macroA1970p2\x_cs\let{sub-#3}\undefined_commandA1971ap\elseA1972p2\x_cs\let{sub-#3}\a_macroA1973p2\x_cs\def{typ-#3}{#1}IFile:qfimain.dtx158wsoA1974ap\fi A1975S}A1976S\def\substitutesilent{\substitute_generic{ssub}}A1977S\def\substitutenoisy{\substitute_generic{sub}}A1978S\substitutesilent{bx}{b}A1979S\substitutesilent{b}{bx}A1980S\substitutesilent{b}{sb}A1981S\substitutesilent{b}{db}A1982S\substitutesilent{m}{mb}A1983S\substitutesilent{m}{l}A1984S\substitutenoisy{ui}{it}XIWdon'tXhthinkXiwewantXithesesinceinOT1encoGdingitwillcausetheold IUUvsproblem.q(ASAJ)|Ohyeswedo.q(SPQR)A1985S\substitutesilent{sl}{it} A1986S\substitutesilent{it}{sl}6I13.2nNewfontsubstitutionmechanismuTINote:вThisYsubsectioncontainsZ(partof)anewimplementationofthefontsub-IstitutionUUmechanism,butitisuncertainwhetheritwilleverbGecompleted.A1987ShunderconstructionIi6I13.2.1qTheTsubstitutiongraphIWhichsubstitutionsarepGerformedaredeterminedbythesubstitutiongraph.:TheIverticesofthisgraphareallcombinationsofaseriesandashapGe.ThearcsI(directedQedges)PofthisgrapharethesubstitutionsthatcanbGemade.ֹEacharcIhasawheight|arealnumbGerintherange[0;1]|thatdescribeshowmuchoftheIqualityUUofthefontthatispreservedwiththissubstitution.XAsanexample,considerthecasethatthereisanarcfromm/ittom/slandIthatthewheightofthisarcis0:5.NThismeansthatitisOKtosubstitutetheImediumKitalicK(m/it)fontasamediumslanted(m/sl)fontifthereisnomediumIslantedfont,butthatthemediumitalicfontisonlyconsideredasbGeinghalf(0:5)IasUUgoGodamediumslantedfontasitisamediumitalicfont.XThexmainwproblemthesubstitutionmechanismhastosolveinthiscontextisIto" ndthebGestpossible"way"ofsubstitutingafont,,giventhe"realfontswhichhasIactuallyKbGeeninstalled(using\installfontor\installrawfont).nThesolutionItox:thisx9problemiscomputedbyabruteforceapproach|allpGossiblesubstitutionIpathsarefollowedandduringthisproGcessthebGestsolutionsofar,>foreachvertexIseparately*,UUisstored.XInmpractice,ӲthelsubstitutiongraphGisconstructedasthecartesianproGductIofponeographG1 ofseriessubstitutionsandonegraphG2 ofshapGesubstitutions,Iwith theoptionofaddingsomeadditionalarcstothisproGduct.nThereasonforIthiscisbthatoneusuallywantstocmakethebsameshapGesubstitutionsinallseriesIandIviceIversa,KsobyIonlystoringtheG1ŌandG2graphs,KpluspGerhapsIahandfullIofextraedges,gonegetsawaywithusingfewertokens.#ThewheightsofthearcsIarejOstoredjNasintegersintherange0{1000,owhere0meanstherealnumbGer0jOandI1000UUmeanstherealnumbGerUU1.IFile:qfimain.dtx159soXThe:\do_arcmacroisprobablythemost:commoninthedatastructuresthat\do_arc IconstituteUUthesubstitutiongraph.qItssyntaxisalwaysb\do_arc{hseries!i}{hshap}'e[i}{hwheightظi}Ibut.sit.rismeanttobGerede nedwheneveroneneedstodosomething\forallarcs"I(usuallyallarcsatagivenvertexorso).RTherearethreefamiliesofmacroswhichIconsistUUof\do_arclists,namelyb\sub1-hseries!ib\sub2-hshap}'e[ib\sub-hseries!i-hshap}'e[iITheseVmacrosVstorearcsgoingoutfromavertex.v!The\sub1-hseries!imacrossIstoreǵtheǴarcsincidentwiththevertexhseries!iintheseriessubstitutiongraphG1|s.IThe~I\sub2-hshap}'e[imacrosstore~Hthearcsincidentwiththevertex~Hhshap}'e[iintheIshapGe4$substitutiongraphG2|s.4The\sub-hseries!i-hshap}'e[imacrosstorethearcsIofGthatareincidentwiththevertexhseries!i/hshap}'e[ibutdonotwappGearintheIcartesianUUproGductG1S8G2|s.XThehseries!iandhshap}'e[iargumentsof\do_arctellswhichvertexthearcgoGesIto,hence}forexample\do_arc{b}{it}{600}inthe|macro\sub-db-slcorres-IpGondsRtoanarcRgoingfromthedb/slvertextotheb/itvertexandhavingaIwheightUUof0:6.XTheabGoveomitsoneimpGortantdetail,namelythatthehshap}'e[iargumentforL\curr_series \curr_shapeIa\do_arcina\sub1-...mustbGeabletobeallbshapessincetheshapeisnotIdeterminedƥforarcsƤinG1 CandtheseriesislikewiseforarcsinG2|s.ŶT*omakeIthingsݟworkݠanyway*,thereareݟtwomacrosݟ\curr_seriesand\curr_shapewhichIcontainthismissinginformation.iuF*urthermore,a\do_arcitemforanarcinG1IwillUUalwayshavethestructureb\do_arc{hseries!i}\curr_shape{hwheightظi}IandUUa\do_arcitemforanarcinG2ȲwillhaveUUthestructureb\do_arc\curr_series{hshap}'e[i}{hwheightظi}f\substituteshape \substituteseries \substituteseriesshapeI\substituteshape{htoi}{hfr}'omci}{hwheightظi}I\substituteseries{htoi}{hfr}'omci}{hwheightظi}I\substituteseriesshape{htoseries!i}{htoshap}'e[i}{hfromseriesi}{hfromshape[i}{hwheightظi}A1988S\def\substituteshape#1#2#3{ A1989as\round_wheight{#3}A1990as\edef\temp_command{#1}A1991as\edef\sub_suffix{#2}A1992as\ifx\temp_command\sub_suffix\elseA1993p8\def\sub_suffix##1##2{2-##2}A1994p8\def\do_arc##1##2##3{A1995~0\x_cs\ifx{sub2-##2}R\elseA1996]\noexpand\do_arc\noexpand\curr_series{##2}{##3}A1997~0\fiA1998p8}A1999p8\update_do_arc_list{}{#2}{}{#1}{\noexpand\curr_series{#1}}A2000as\fiA2001S}IFile:qfimain.dtx1609soA2002S\def\substituteseries#1#2#3{ A2003as\round_wheight{#3}A2004as\edef\temp_command{#1}A2005as\edef\sub_suffix{#2}A2006as\ifx\temp_command\sub_suffix\elseA2007p8\def\sub_suffix##1##2{1-##1}A2008p8\def\do_arc##1##2##3{A2009~0\x_cs\ifx{sub1-##1}R\elseA2010]\noexpand\do_arc{##1}\noexpand\curr_shape{##3}A2011~0\fiA2012p8}A2013p8\update_do_arc_list{#2}{}{#1}{}{{#1}\noexpand\curr_shape}A2014as\fiA2015S}A2016S\def\substituteseriesshape#1#2#3#4#5{A2017as\round_wheight{#5}A2018as\edef\temp_command{#1-#2}A2019as\edef\sub_suffix{#3-#4}A2020as\ifx\temp_command\sub_suffix\elseA2021p8\def\sub_suffix##1##2{-##1-##2}A2022p8\def\do_arc##1##2##3{A2023~0\x_cs\ifx{sub-##1-##2}R\elseA2024]\noexpand\do_arc{##1}{##2}{##3}A2025~0\fiA2026p8}A2027p8\update_do_arc_list{#3}{#4}{#1}{#2}{{#1}{#2}}A2028as\fiA2029S}A2030S\def\round_wheight#1{A2031as\eval_expr{#1}A2032as\ifnum\one_thousand<\resultA2033p8\result=\one_thousandA2034as\else\ifnum0>\resultA2035p8\result=\z@A2036as\fi\fiA2037S}X\update_do_arc_list{hup}'date-series!i}{hupdate-shape[i}{htag-seriesi}{htag-shape[i} I{hinserte}'dseries+shape[i}A2038S\def\update_do_arc_list#1#2#3#4#5{A2039as\bgroupA2040p8\edef\temp_command{sub\sub_suffix{#1}{#2}}A2041p8\x_cs\let{sub\sub_suffix{#3}{#4}}=RA2042p8\x_cs\xdef\temp_command{A2043~0\x_cs\ifx\temp_command\relax\elseA2044]\csname\temp_command\endcsnameA2045~0\fiA2046~0\ifnum0<\resultA2047]\noexpand\do_arc#5{\the\result}A2048~0\fiA2049p8}A2050as\egroupA2051S}IFile:qfimain.dtx161pso \substitutesilent f\substitutenoisyI\substitutesilent{TO}{FROM} I\substitutenoisy{TO}{FROM}XSpGeci es#adefaultsubstitutionforfamily#orshapeTO,whichissubstitutedbyIfamilyUUorshapGeFROM.A2052S\def\substitutesilent#1#2{ A2053as\substituteseries{#1}{#2}{900}A2054as\substituteshape{#1}{#2}{900}A2055S}A2056S\def\substitutenoisy#1#2{A2057as\substituteseries{#1}{#2}{500}A2058as\substituteshape{#1}{#2}{500}A2059S}򘍍A2060S\a_count=900%SilentsubstitutionwheightA2061S\b_count=500%NoisysubstitutionwheightA2062S\substituteseries{bx}{b}{\a_count}A2063S\substituteseries{b}{bx}{\a_count}A2064S\substituteseries{b}{sb}{\a_count}A2065S\substituteseries{b}{db}{\a_count}A2066S\substituteseries{m}{mb}{\a_count}A2067S\substituteseries{m}{l}{\a_count}A2068S\substituteshape{ui}{it}{\b_count}XIWdon'tXhthinkXiwewantXithesesinceinOT1encoGdingitwillcausetheold IUUvsproblem.q(ASAJ)|Ohyeswedo.q(SPQR)A2069S\substituteshape{sl}{it}{\a_count}A2070S\substituteshape{it}{sl}{\a_count}]I13.2.2qListingTreac9hableverticesuTIWhile[determiningZtheoptimalsubstitutions,thereisaneedtostoresome|more Ior+VlesstempGorary|informationforeachvertex.cSuchinformationwillbGecalledaIpr}'opertyofthevertexanditisstoredinthe\v-hseries!i-hshap}'e[ifamilyofmacros.XTheUUfollowingarethebasicpropGerties:!I\real_font{hquality}i} This?expresses>thatthisvertexcorrespGondstoafontthatbhasUUactuallybGeeninstalledwithanominalqualityofhquality}i.I\subs_font{hseries!i}{hshap}'e[i}{hquality}i}ͲThisexpressesthatthisvertexcorres-bpGondsR:toaR9fontforwhichthefonthseries!i/hshap}'e[iR9hasbGeensubstituted.bhquality}iUUisthequalitythissubstitutionisconsideredtohave.XThereJ'willJ&alsobGesomelistsofvertices. P;ThesewillconsistofsimpleI\do{hseries!i}{hshap}'e[i}UUtriples.A2071S\def\list_subs_vertices{ A2072as\def\subs_vertex_list{}A2073as\let\do_arc=\subs_do_arcA2074as\let\do=\never_doA2075as\def\real_font##1{\c_count=\@MM}A2076as\def\subs_font##1##2##3{\c_count=##3\relax}A2077as\real_vertex_listIFile:qfimain.dtx162VsoA2078S} A2079S\def\subs_do_arc#1#2#3{A2080as\b_count=#3A2081as\multiply\b_count\a_countA2082as\divide\b_count\one_thousandA2083as\c_count=-\max_mathchardefA2084as\csnamev-#1-#2\endcsnameA2085as\ifnum\c_count<\b_countA2086p8\ifnum\c_count=-\max_mathchardefA2087~0\edef\subs_vertex_list{\subs_vertex_list\do{#1}{#2}}A2088p8\fiA2089p8\x_cs\edef{v-#1-#2}{\noexpand\subs_font{\subs_series}A2090~0{\subs_shape}{\the\b_count}}A2091p8\toks_a=\expandafter{\the\a_toks\do_subs{#1}{#2}}A2092as\fiA2093S}A2094S\def\do_subs#1#2{A2095as\edef\curr_series{#1}A2096as\edef\curr_shape{#2}A2097as\csnamev-#1-#2\endcsnameA2098as\a_count=\c_countA2099as\a_toks={}A2100as\csnamesub-#1-#2\endcsnameA2101as\csnamesub1-#1\endcsnameA2102as\csnamesub2-#2\endcsnameA2103as\the\a_toksA2104S}A2105S\def\start_subs_at#1#2{A2106as\edef\subs_series{#1}\let\curr_series=\subs_seriesA2107as\edef\subs_shape{#2} s.\let\curr_shape=\subs_shapeA2108as\a_count=\x_cs\second_of_two{v-#1-#2}A2109as\a_toks={}A2110as\csnamesub-#1-#2\endcsnameA2111as\csnamesub1-#1\endcsnameA2112as\csnamesub2-#2\endcsnameA2113as\the\a_toksA2114S}A2115Sh=underconstructionIi6I13.3nDefaultenco`dingsandfontsizesuTf\declareencodingI\declareencoding{CODINGSCHEME}{ENCODING} XDeclareamacro\enc-CODINGSCHEMEkwhichexpandstoENCODING.ThisisusedItoUUdeterminetheencoGdingin\pltomtx.A2116S\def\declareencoding#1#2{\x_cs\edef{enc-#1}{#2}}XOldUUTU>'ExXtextfontencoGdings.A2117S\declareencoding{TEX~TEXT}{ot1} A2118S\declareencoding{TEX~TEXT~WITHOUT~F-LIGATURES}{ot1}A2119S\declareencoding{TEX~TYPEWRITER~TEXT}{ot1tt}XOldUUTU>'ExXmathfontencoGdings.A2120S\declareencoding{TEX~MATH~ITALIC}{oml}IFile:qfimain.dtx163soA2121S\declareencoding{TEX~MATH~SYMBOLS}{oms} A2122S\declareencoding{TEX~MATH~EXTENSION}{omx}A2123S\declareencoding{LATEX~SYMBOLS}{lasy}XEulerUUmathfontencoGdings.A2124S\declareencoding{TEX~TEXT~SUBSET}{eufrak}A2125S\declareencoding{TEX~MATH~ITALIC~SUBSET}{eurm}A2126S\declareencoding{TEX~MATH~SYMBOLS~SUBSET}{euscr}A2127S\declareencoding{EULER~SUBSTITUTIONS~ONLY}{euex}XNewUUTU>'ExXtextfontencoGdings.A2128S\declareencoding{EXTENDED~TEX~FONT~ENCODING~-~LATIN}{t1}A2129S\declareencoding{TEX~TEXT~COMPANION~SYMBOLS~1---TS1}{ts1}XRencoGdedUUPostScriptfontencdings.A2130S\declareencoding{TEXBASE1ENCODING}{8r}A2131S\declareencoding{TEX~TYPEWRITER~AND~WINDOWS~ANSI}{8y}L\declaresizeI\declaresize{FONTSIZE}{LATEXSIZE}A2132S\def\declaresize#1#2{\x_cs\edef{siz-#1}{#2}}XDefaultsizes. UQAnemptysizeargumentisequivqalentto<->,^forusewith IscalableUUfonts.A2133S\declaresize{}{<->} A2134S\declaresize{5}{<5>}A2135S\declaresize{6}{<6>}A2136S\declaresize{7}{<7>}A2137S\declaresize{8}{<8>}A2138S\declaresize{9}{<9>}A2139S\declaresize{10}{<10>}A2140S\declaresize{11}{<10.95>}A2141S\declaresize{12}{<12>}A2142S\declaresize{14}{<14.4>}A2143S\declaresize{17}{<17.28>}A2144S\declaresize{20}{<20.74>}A2145S\declaresize{25}{<24.88>}!čI14ifdDebugging3P\NOFILESI\NOFILES||switches|o legeneration,Rand|causesfontinsttoonlygenerateempty I les. TIt]onlya ectstheuserlevelcommands,^soitisprimarilyofusewhenIdebugging6ccommands6bthatbuildonthese,'ExX\graphics"bundle.R7IthasbGeeninlinedintothefontinstsourceImainlyebGecauseearchivemaintainerseneverseemetotireofquestioningtheneedtoIprovideUUtrig.stywithfontinst. 荍I15ifdTfrigonometricalfffunctionsITheseGfmacrosimplementtheGgtrigonometricfunctions,}csin,cosGfandtan.IneachcaseItwolcommandslarede ned.F*orinstancethecommand\CalculateSin{33}mayIbGeisuedatsomepoint,andthenanywherelaterinthedoGcument,thecommandI\UseSin{33}UUwillreturnthedecimalexpansionofsins(33^ O!cmsy7).XTheargumentstothesemacrosdonothavetobGewholenumbers,#althoughinIthexcaseofwholenumbGers,qL5ffA͉TU>'ExXyorxplainTU>'EXcountersmaybGeused.0InTU>'ExXBookIsyntax,UUargumentsmustbGeoftypGe:qǸhoptionalsigns!ihfactoriXSomeUUotherexamplesare:I\CalculateSin{22.5},UU\UseTan{\int{myvar}},\UseCos{\count@}.XNotethatunliketheps gmacros,thesesaveallpreviouslycomputedvqalues.IThisQcouldeasilyQbGechanged,RbutIQthoughtQthatinmanyapplicationsonewouldIwantmanyinstancesofthesamevqalue.(egrotatingalltheheadingsofatableIbyUUthesameamount).XIdon't=reallylikethisneed>topre-calculatethevqalues,IoriginallyimplementedI\UseSinTsoSthatitautomaticallycalculatedthevqalueifitwasnotpre-stored.1ThisIworkedN neintesting,P*untilINremembGeredwhyNoneneedsthesevqalues.oY*ouwantItoibGejabletosay\dimen2=\UseSin{30}\dimen0.MWhichmeansjthat\UseSinImustUUexp}'and]޲toahfactori.ZI15.1nTheMacrosuTLs1ShpkgKiy\nin@ty\@clxxx!|\@lxxiL\@mmmmlxviiiISomeUUusefulconstantsforconvertingbGetweendegreesandradians.r<$ȠJ'ןwfe (֍180"%'<$355Kwfe*8 (֍11381802-z=<$L71Kwfe (֍4068fLs2S\chardef\nin@ty=90 Ls3S\chardef\@clxxx=180Ls4S\chardef\@lxxi=71Ls5S\mathchardef\@mmmmlxviii=40686lXTheSapproximationStosin.q3IexpGerimentedSwithvqariousapproximationsbased IonW^Tchebiche pGolynomials,*andalsosomeapproximationsW_fromaSIAMWhandbGookI`ComputerApproximations'HoweverthestandardT*aylorseriesseemssucientlyIaccurate,@and;usedbyfarthefewest:TU>'ExXtokens,Aasthe:coGecientsareallrational.kVsinx't(x)'l̵x8(1=3!)x3S+(1=5!)x5(1=7!)x7+(1=9!)x9g'<$((((7!=9!x^2S87!=7!)x^2+7!=5!)x^2+7!=3!)x^2+7!=1!)xwfeLy (֍n®7!IFile:qfitrig.dtx166so絍=<$((((1=72x^2S81)x^2+42)x^2+840)x^2+5040)xwfeąV (֍XB5040ЍITheanestedformusedaabGoveareducesthenumberaofoperationsrequired.RInorder ItoKfurtherreducethenumbGerKofoperations,andmoreimportantlyreducetheInumbGerjHoftokensused,owecanprecomputethecoGecients.NotethatwecannotIuseUU9!asthedenominatorasthiswouldcauseover owofTU>'ExX'sarithmetic.3P\@coeffz3P\@coeffa3P\@coeffb3P\@coeffc$3P\@coeffdISaveUUthecoGecientsas\(math)chars.Ls6S\chardef\@coeffz=72 Ls7S%\chardef\@coefa=1Ls8S\chardef\@coefb=42Ls9S\mathchardef\@coefc=840I10S\mathchardef\@coefd=5040$\TG@rem@ptIThey standardtrickofgettingarealnumbGerouty!ofahdimenci.(Thisgivesamax- Iimumaccuracyofapprox.5decimalplaces,whichshouldbGesucient.ItputsaIspaceUUafterthenumbGer,UUperhapsitshouldn't.I11S\def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space}3P\TG@termIComputevonewtermoftheabGovenestedvseries.,Multiplytheprevioussumbyx^2I(storedUUin\@tempb,thenaddthenextcoGecient,#1.I12S\def\TG@term#1{ I13ap\dimen@\@tempb\dimen@I14ap\advance\dimen@#1\p@I15S}$\TG@seriesIComputeqtheqabGoveseries.ThevqalueindegreesqwillbGein\dimen@bGeforethisis Icalled.I16S\def\TG@series{I17ap\dimen@\@lxxi\dimen@I18ap\divide\dimen@\@mmmmlxviiiI\dimen@1now1containsthe1angleinradians,8asahdimenci.eW*eneedtoremovetheIunits,UUsostorethesamevqalueasahfactoriin\@tempa.I19ap\edef\@tempa{\TG@rem@pt\dimen@}INowUUputx^2Ȳin\dimen@and\@tempb.I20ap\dimen@\@tempa\dimen@ I21ap\edef\@tempb{\TG@rem@pt\dimen@}ITheUU rstcoGecientis1=72.I22ap\divide\dimen@\@coeffz I23ap\advance\dimen@\m@ne\p@I24ap\TG@term\@coefbI25ap\TG@term{-\@coefc}%I26ap\TG@term\@coefdINowUUthecubicinx^2Ȳiscompleted,soweneedtomultiplybyxanddivideby7!.I27ap\dimen@\@tempa\dimen@I28ap\divide\dimen@\@coefdI29S}IFile:qfitrig.dtx167٤sob\CalculateSinIIfUthisangleThasalreadybGeencomputed,"donothing,elseUstoretheangle,"andcall I\TG@@sin.=ComputedsinesarestoredincontrolsequenceswithnamesoftheformI\sin(hnumb}'eri).\sin(hnumberi) 퍍I30S\def\CalculateSin#1{{% I31ap\if_undefined{sin(\number#1)}\thenI32p2\dimen@=#1\p@I33p2\TG@@sinI34p2\x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@}I35ap\fiI36S}}ȍb\CalculateCosIAs5abGove,;but5usetherelationcos5(x)=sin6(90x).g8Computedcosines5arestored IinUUcontrolsequenceswithnamesoftheform\cos(hnumb}'eri).\cos(hnumberi) I37S\def\CalculateCos#1{{%I38ap\if_undefined{cos(\number#1)}\thenI39p2\dimen@=\nin@ty\p@I40p2\advance\dimen@-#1\p@I41p2\TG@@sinI42p2\x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@}I43ap\fiI44S}}3P\TG@@sinIRepGeatedlyuseoneofthetherelatationssin(x)U=sin(180qx)U=Usin(180x) ItoUUgetxintherange90x90.qThenUUcall\TG@series. 퍍I45S\def\TG@@sin{%I46ap\ifdim\TG@reduce>+%I47ap\else\ifdim\TG@reduce<-%I48ap\else\TG@series\fi\fiI49S}$\TG@reduceISlightly_ccryptic,but_ditseemstowork... :The_c rstlineistheconditionforan I\ifdim,UUtheremaininglinesconstitutesthe`then'branchofthatconditional. 퍍I50S\def\TG@reduce#1#2{I51ap\dimen@#1#2\nin@ty\p@I52ap\advance\dimen@#2-\@clxxx\p@I53ap\dimen@-\dimen@I54ap\TG@@sinI55S}\UseSin \UseCosIUseUUapre-computedvqalue. I56S\def\UseSin#1{\csnamesin(\number#1)\endcsname}I57S\def\UseCos#1{\csnamecos(\number#1)\endcsname}XAUUfewshortcutstosaveUUspace. 퍍I58S\chardef\z@num\z@I59S\x_cs\let{sin(0)} s,\z@numI60S\x_cs\let{cos(0)} s,\@neI61S\x_cs\let{sin(90)}\@neI62S\x_cs\let{cos(90)}\z@numI63S\x_cs\let{sin(-90)}\m@neI64S\x_cs\let{cos(-90)}\z@numI65S\x_cs\let{sin(180)}\z@numI66S\x_cs\let{cos(180)}\m@neIFile:qfitrig.dtx168 sob\CalculateTanIOriginallyIcoGdedtheT*aylorseriesfortan,butitseemstobGemoreaccurateto Ijust1Ztake1Ytheratioofthesineandcosine.Thisisaccurateto4decimalplacesIforanglesupto50^,ߎafterthattheaccuracytailso ,ߎgiving57:47894insteadofI57:2900UUfor89^.XComputedURtangentsareUQstoredincontrolsequenceswithnamesUQoftheformI\tan(hnumb}'eri).\tan(hnumberi)I67S\def\CalculateTan#1{{% I68ap\if_undefined{tan(\number#1)}\thenI69p2\CalculateSin{#1}%I70p2\CalculateCos{#1}%I71p2\a_dimen\UseCos{#1}\p@I72p2\divide\a_dimen\@ivI73p2\b_dimen\UseSin{#1}\p@I74p2\b_dimen\two@fourteen\b_dimenI75p2\divide\b_dimen\a_dimenI76p2\x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen}I77ap\fiI78S}}\UseTanIJustUUlike\UseSin.I79S\def\UseTan#1{\csnametan(\number#1)\endcsname}b\two@fourteen +\@ivITwoUUconstantsneededtokeepthedivisionwithinTU>'ExX'srange.I80S\mathchardef\two@fourteen=16384 I81S\chardef\@iv=4XPrede neUUtan(90)UUtobGeanerror.I82S\x_cs\def{tan(90)}{\errmessage{Infinitetan!}} I83S\expandafter\letI84]\csnametan(-90)\expandafter\endcsname\csnametan(90)\endcsnameI85Sh=pkgKiIFile:qfitrig.dtx169¢soIFileffeIficonv.dtxꨍI16ifdBasicff leformatconversionsI16.1nConvertinganENC letoanETX leuTITheUUmacroy\enctoetxb\enctoetx{henc le[i}{hetx lei}Ireads`Ǹhenc le[i.enc`Ȳandwritesthesameinformationtohetx le[i.etx,cinaformat ITU>'ExXUUcanreadmoreeasily*.Ls1ShmiscZi Ls2S\newif\ifmissingslotsLs3S\x_cs\def{o-.notdef}#1{\global\missingslotstrue}y\enctoetxIF*orDeveryD/hglyphcicommand,}thecommand\o-hglyphcigetspassedcoGdewhichIwritesthecorrespGonding\setslot{hglyphci}...~l\endslotstatement. NormallyIthatconstrolsequenceisunde ned, henceequivqalentto\relax,!andthustheIcoGdeUgetsexecuted.HoweverU\o-.notdefTwillinsteadgobblethisargumentandIsetUUmissingslotstotrue.Ls4S{Ls5ap\catcode`\/=\activeLs6ap\catcode`\]=\activeLs7ap\gdef\enctoetx#1#2{{Ls8p2\catcode`\/=\activeLs9p2\catcode`\]=\activeI10p2\def/##1[{I11~0\encname_to_etx##1~{#1}{#2}I12~0\a_count=0I13~0\global\missingslotsfalseI14~0\let/=\encslot_to_etxI15p2}I16p2\def]~def{}I17p2\make_etx{#1}{#2}I18ap}}I19S} 6\encname_to_etxIThisfmacrofrecievestheencoGdingvectorname,k theENCf lename,k andtheETXI leUUnamewhenconvertingUUanENC letoanETX le.qThecallsyntaxisb\encname_to_etxhve}'ctorname[iJffffJffff{henci}{hetx4Di}I(makingtthet rstargumentspace-delimitedbutthesecondundelimitedisatrickItogobbleanyspacethatmaybGepresentattheendofthatwhichthecallerthinksIisUUthevectorname).XThe Xcommandoutputsa\declarepsencoding YcommandtothegeneratedIETXUU le.I20S\def\encname_to_etx#1~#2#3{ I21ap\out_line{\percent_char\spaceREMOVE~THE~FOLLOWING~LINE~IF~IFile:qficonv.dtx170soI22p2THIS~FILE~IS~MODIFIED~OR~RENAMED.} I23ap\out_line{\string\declarepsencoding{#3}{#1}{\string\download{#2.enc}}}I24ap\out_line{}I25S} 6\encslot_to_etxIThismacrograbseverythinguptothenextspaceandwritesa\setslotentry IwithKthegrabbGedmaterialKasglyphname.nItisusedasthede nitionof/(activeIcharacter)UUwhenparsingelementsofanencoGdingvector. I26S\def\encslot_to_etx#1~{ I27ap\csnameo-#1\endcsname{I28p2\ifmissingslotsI29~0\out_line{\string\nextslot{\the\a_count}}I30p2\fiI31p2\global\missingslotsfalseI32p2\out_line{\string\setslot{#1}}I33p2\out_line{\string\endsetslot}I34p2\out_line{}I35ap}I36ap\advance\a_countby1I37S}y\make_etxI\make_etxfhdoGesthestu that\enctoetxdoesnot; ithandleswritingthepreamble IandpGostambleoftheETX le,ՓbutalsodoGestheactual\inputoftheENC leItoUUconvert. I38S\def\make_etx#1#2{ I39ap\open_out{\temp_prefix#2.etx}I40ap\out_line{\percent_char~Filename:~#2.etx}I41ap\out_line{\percent_char~Created~by:~tex~\jobname}I42ap\out_line{\percent_char~Created~using:~\string\enctoetx{#1}{#2}}I43ap\out_line{}I44ap\out_line{\percent_char~This~file~contains~the~I45p2information~of~#1.enc~in~a~form}I46ap\out_line{\percent_char~more~easily~read~by~TeX.~I47p2It~is~used~by~the~fontinst~package.}I48ap\out_line{}I49ap\out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.}I50ap\out_line{}I51ap\out_line{\string\relax}I52ap\out_line{}I53ap\out_line{\string\documentclass[twocolumn]{article}}I54ap\out_line{\string\usepackage{fontdoc}[2005/05/13]}I55ap\out_line{}I56ap\out_line{\string\begin{document}}I57ap\out_line{}I58ap\out_line{This~document~describes~the~#1~encoding.}I59ap\out_line{It~was~automatically~generated~by~the}I60ap\out_line{\string\texttt{fontinst}~package.}I61ap\out_line{}I62ap\out_line{\string\encoding}I63ap\out_line{}I64ap\out_line{\string\needsfontinstversion{\fontinstversion}}I65ap\out_line{}I66ap\primitiveinput#1.enc\x_relaxI67ap\out_line{}IFile:qficonv.dtx171msoI68ap\out_line{\string\endencoding} I69ap\out_line{}I70ap\out_line{\string\end{document}}I71ap\close_out{Encoding}I72S}6I16.2nConvertinganETX letoanENC leuTITheUUcommandy\etxtoencb\etxtoenc{hetx le[i}{henc lei}Ireadsʾhetx le[i.etxʿandgeneratesapGostscriptencodingʾ lehenc le[i.encthatspGe- Ici esUUthesameencoGdingvector.L\notdef_nameIThis9macroholdsthenameofthe.notdef9ײglyph,rwhichmustbGeputinallencodingIpGositionsUUwherethereisnootherglyph.I73S\def\notdef_name{.notdef}y\etxtoencITheZconversionhasthreesteps.Firstthe.notdefglyphisassignedtoeveryslotIintheencoGding,3thentheETX leisreadandtheassignmentsarechangedforIthe\a_countI79p2\advance\a_count\@neI80ap\repeatI81ap\def\do_slot{I82p2\x_cs\ifx{name-\the\slot_number}\notdef_nameI83~0\x_cs\edef{name-\the\slot_number}{\slot_name}I84p2\fiI85ap}I86ap\process_csep_list\inputetx#1,\process_csep_list,I87ap\make_enc{#1}{#2}I88S\endgroup}y\make_encITheUUcommandb\make_enc{hetx les!i}{henc le[i}Icreatesthe lehenc le[i.encandwritestothat lethede nitionofthepGost- IscriptWencoGdingVvectorwhichcorrespGondstoVtheencodingcurrentlystoredVintheI\name-hslotظi%family%ofmacros.ThatencoGdingisassumedtobGede nedbytheI lesUUlistedinthehetx les!i.I89S\def\make_enc#1#2{ I90ap\setstr{encodingname}{fontinst-autoenc-#1}I91ap\def\a_macro##1{I92p2\add_to\b_macro{##1.etx}I93p2\def\a_macro####1{IFile:qficonv.dtx172 <soI94~0\add_to\b_macro{,~####1.etx} I95p2}I96ap}I97ap\let\b_macro\empty_commandI98ap\process_csep_list\a_macro#1,\process_csep_list,I99ap\open_out{#2.enc}E100ap\out_line{\percent_char!PS-Adobe-3.0~Resource-Encoding}E101ap\out_line{\percent_char\space@psencodingfile\left_brace_char}E102ap\ref_to_sourcefile{author}\b_macroE103ap\ref_to_sourcefile{version}\b_macroE104ap\out_line{\percent_char\four_spacesdate~=~"generated~E105p2\the\year/E106p2\ifnum10>\month0\fi\the\month/E107p2\ifnum10>\day0\fi\the\day",}E108ap\out_line{\percent_char\four_spacesfilename~=~"\out_filename",}E109ap\ref_to_sourcefile{email}\b_macroE110ap\ifisstr{address}\thenE111p2\out_line{\percent_char\four_spacesaddress~=~\str{address}}E112ap\fiE113ap\out_line{\percent_char\four_spacescodetable~=~"ISO/ASCII",}E114ap\out_line{\percent_char\four_spaceschecksum~=~"",}E115ap\out_line{\percent_char\four_spacesabstract~=~"E116p2This~is~a~postscript~encoding~file,~automatically~E117p2generated~by~fontinst~from~\b_macro."}E118ap\out_line{\percent_char\space\right_brace_char}E119ap\out_line{}E120ap\out_line{\percent_char\spaceCreated~by:~tex~\jobname}E121ap\out_line{\percent_char\spaceCreated~using:~E122p2\string\etxtoenc{#1}{#2}}E123ap\out_line{}E124ap\out_line{\percent_char\spaceThis~file~should~be~installed~E125p2somewhere~that~your~DVI}E126ap\out_line{\percent_char\spaceto~postscript~driver~looks~for~files.~E127p2It~is~needed~for}E128ap\out_line{\percent_char\spacereencoding~some~font~you~have~E129p2transformed.}E130ap\out_line{}E131ap\out_line{\percent_char\spaceAfter~installing~this~file,~you~E132p2should~add~the~following}E133ap\out_line{\percent_char\spaceline~(minus~\percent_char)~E134p2to~your~finstmsc.rc~file:}E135ap\out_line{\percent_char\space\string\declarepsencodingE136p2{#1}{\str{encodingname}}{\string\download{\out_filename}}}E137ap\edef\a_macro{E138p2\noexpand\declarepsencoding{#1}{\str{encodingname}}E139~0{\noexpand\download{\out_filename}}E140ap}E141ap\a_macroE142ap\out_line{}E143ap\out_line{\percent_char\percent_charBeginResource:~E144p2encoding~\str{encodingname}}E145ap\out_line{/\str{encodingname}\space[}E146ap\b_count=8E147ap\a_count=\z@IFile:qficonv.dtx173osoE148ap\loop E149p2\ifnum8=\b_countE150~0\b_count=\z@E151~0\out_line{\percent_char\space\the\a_count}E152p2\fiE153p2\out_line{/\csnamename-\the\a_count\endcsname}E154ap\ifnum\@cclv>\a_countE155p2\advance\a_count\@neE156p2\advance\b_count\@neE157ap\repeatE158ap\out_line{]~def}E159ap\out_line{\percent_char\percent_charEndResource}E160ap\out_line{}E161ap\out_line{\percent_char\spaceEnd~of~file~\out_filename.}E162ap\close_out{Encoding~vector}E163S}׍t\ref_to_sourcefileITheUUcommandʍb\ref_to_sourcefile{h eldi}{hsour}'ce le[i}Iwritesah eldi eldofaBiDb32TU>ExX-styleheadertothecurrentmainoutput le.h`If Ithe/nstring/mnamedh eldiissetthenthevqalueforthis eldwillbGethatstring,7andIif-itisn'tsetthenthevqalue-willbGethestringQO"See?filehsour}'ce le[i".dNote-thatIthe2Pstring2Q#1isnotquoted,isoitmustcontain2Qthequotesifitisn'tsimplyanIinteger. 󍍑E164S\def\ref_to_sourcefile#1#2{ E165ap\ifisstr{#1}\thenE166p2\out_line{\percent_char\four_spaces#1~=~\str{#1},}E167ap\elseE168p2\out_line{\percent_char\four_spaces#1~=~"See~file~#2",}E169ap\fiE170S}ՍI16.3nConvertinganETX letoCMAP leuTITheUUcommand$\etxtocmapʍb\etxtocmap{hetx le[i}{hcmap lei}ɍIreadspøhetx le[i.etxandgeneratesapT*oUnicoGdeCMap lehcmap lei.cmapthat ImapsUUslotstoUnicoGdestringsasspeci edbythehetx le[i.؍f\write_cmap_bodyIThe\write_cmap_body~commandwritestheactualCMapdata^11 etothecurrentIoutputUU le.qThesyntaxisb\write_cmap_body{hetx le[i}XMoregprecisely*,whatthiscommandfwritesisthecoGdespacerangespeci cationIandUUthemappings.qThelatterareallencoGdedusingxbfcharoperators. 򍍑E171S\def\write_cmap_body#1{ E172ap\out_line{1~begincodespacerange~<00>~~endcodespacerange}INKffr J=w-:11LܼAs[opp\a_countE181p2\format_hex\b_macro{\a_count}{4}E182p2\edef\a_macro{\a_macro\b_macro\space}E183ap\elseE184p2\advance\a_count-"10000E185p2\d_count=\a_countE186p2\divide\a_count"400E187p2\b_count=\a_countE188p2\multiply\b_count"400E189p2\advance\d_count-\b_countE190p2\advance\a_count"D800E191p2\advance\d_count"DC00~E192p2\format_hex\b_macro{\a_count}{4}E193p2\format_hex\c_macro{\d_count}{4}E194p2\edef\a_macro{\a_macro\b_macro\c_macro\space}E195ap\fiE196S}b\cmap_charseqIThismacroiswhat\charseqiswhengeneratingaCMap;IzallwritingofCMap IentriesOisProutedthroughit.LOnlythe rstcharacterequivqalentPofeachPslotshouldIgetqNwrittento le,Lsothe_a_switchqOisusedforkeepingtrackofwhetherthisIwouldUUbGethe rst.E197S\def\cmap_charseq#1{% E198ap\if_a_E199p2\bgroupE200~0\let\Unicode=\cmap_codepointE201~0\let\a_macro=\empty_commandE202~0#1E203~0\format_hex\b_macro{\slot_number}{2}E204~0\out_line{1~beginbfchar~<\b_macro>~<~\a_macro>~endbfchar}E205p2\egroupE206p2\_a_falseE207ap\fiE208S}$\etxtocmapIAsusualformacroswiththiskindofname,thisistheuserlevelcommandtocall ItofgeneratefaCMAPffromanETX.Theargumentsare lenames(notincludingIextensions).E209S\def\etxtocmap#1#2{\begingroup E210ap\inputetx{#1}E211ap\open_out{#2.cmap}IFile:qficonv.dtx175,1soE212ap\out_line{\percent_char!PS-Adobe-3.0~Resource-CMap} E213ap\out_line{\percent_char\percent_charE214kJDocumentNeededResources:~procset~CIDInit}E215ap\out_line{\percent_char\percent_charE216kJIncludeResource:~procset~CIDInit}IHerePcomestheO rstproblem: theCMapmusthaveaOname.XIfthePETX le Isetsthestringvqariablecmapnamethenthatisusedasname,:1butotherwiseIfontinst-hcmap le[i]isusedasname.VNotethatthisisdi erentfromthepatternIinUU\etxtoenc,whichinsteadusesthehetxname[i.E217ap\setstr{cmapname}{fontinst-#2} E218ap\out_line{\percent_char\percent_charE219kJBeginResource:~CMap~\str{cmapname}}IThe,nextproblemiswhetheroneshould+bGotherwiththequiteextensiveversion IcontrolbjunkthatAdobGehasspeci ed.I0prefernotto,JebecauseitisverymuchIgearedUUtowardsusingCMapswithCIDF*onts,whichisnotthecasehere.XThusUUitistimefortheactualPScoGde.E220ap\out_line{/CIDInit~/ProcSet~findresource~begin} E221ap\out_line{7~dict~begin}E222ap\out_line{begincmap}E223ap\out_line{/CMapName~/\str{cmapname}~def}E224ap\out_line{/CMapType~2~def}E225ap\write_cmap_body{#1}E226ap\out_line{endcmap}E227ap\out_line{CMapName~currentdict~/CMap~defineresource~pop}E228ap\out_line{end}E229ap\out_line{end}E230ap\out_line{\percent_char\percent_charEndResource}E231ap\out_line{\percent_char\percent_charEOF}E232ap\close_out{ToUnicode~CMap}E233S\endgroup}E234Sh=miscZi6I16.4nConvertinganAFM letoanMTX leuTITheUUmacroy\afmtomtxb\afmtomtx{hafm le[i}{hmtx lei}IreadsUUhafm le[i.afm,andwritesthesameinformationouttohmtx lei.mtx.y\afmtomtxE235ShpkgKi E236S\def\afmtomtx#1#2{{E237ap\let\setsomething_global=\x_relaxE238ap\open_out{\temp_prefix#2.mtx}E239ap\edef\raw_font_name{#2}E240ap\edef\source_font_name{#1}E241ap\x_resetint{italicslant}{0}E242ap\let\italcorr_expression=\uprightitalcorrE243ap\x_setint{minimumkern}{0}E244ap\minimum_kern=\int{minimumkern}E245ap\out_line{\percent_char~Filename:~#2.mtx}IFile:qficonv.dtx1766soE246ap\out_line{\percent_char~Created~by:~tex~\jobname} E247ap\out_line{\percent_char~Created~using:~\string\afmtomtx{#1}{#2}}E248ap\out_line{}E249ap\out_line{\percent_char~This~file~contains~the~E250p2information~of~#1.afm~in~a~form}E251ap\out_line{\percent_char~more~easily~read~by~TeX.~E252p2It~is~used~by~the~fontinst~package.}E253ap\out_line{}E254ap\out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.}E255ap\out_line{}E256ap\out_line{\string\relax}E257ap\out_line{\string\metrics}E258ap\out_line{}E259ap\out_line{\string\needsfontinstversion{\fontinstversion}}E260ap\out_line{}E261ap\catcode`\^^M=12E262ap\catcode`\=10E263ap\expandafter\afm_line\primitiveinput#1.afm\x_relaxE264ap\out_line{}E265ap\out_line{\endmetrics_text}E266ap\close_out{Metrics}E267S}}XKernsUUbGelowthisvqalueareignored.E268S\newcount\minimum_kern \afm_length 6\afm_unit_dimenIThecall\afm_lengthhc}'ountظi{hreali}interpretsthehr}'ealiasarealnumbGer, Iroundsqitptothenearestinteger,wandsetsthehc}'ountظi(a\countregister)tothatIinteger.qInUUthisproGcess,\a_dimenisusedasatemporarystorage.E269S\def\afm_length#1#2{ E270ap\a_dimen=#2\afm_unit_dimenE271ap#1=\a_dimenE272ap\divide#1by\afm_unit_dimenE273ap\advance\a_dimenby-#1\afm_unit_dimenE274ap\ifdim\a_dimen>0.5\afm_unit_dimenE275p2\advance#1by1E276ap\else\ifdim\a_dimen<-0.5\afm_unit_dimenE277p2\advance#1by-1E278ap\fi\fiE279ap\x_relaxE280S}ITheNdimenM\afm_unit_dimenisusedtokeeptrackofMhowlongManAFMunit IismginterpretedasmfbGeinginthisroutine.Loweringitsmfvqaluemakes\afm_lengthIcapable!,ofhandling!+greaterlengthsbutloGosessomeveryslightprecision!+intheIrounding,eincreasing;thevqaluehastheoppGosite\minimum_kernE334~0\afm_write_setkern{#1}{#2}{\the\a_count}E335p2\else\ifnum\a_count<-\minimum_kernE336~0\afm_write_setkern{#1}{#2}{\the\a_count}E337p2\fi\fiE338ap\fi\fiE339S}E340S\afm_let{KPX}{KP}t\afm_write_setkernIThismacroisahoGokfortheauto-aliasingmechanismtorede ne.Q Inthisplain Iform,UUitjustoutputsa\setkerncommandwiththegiventhreearguments.E341S\def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}}XProGcessingUUcharmetrics.E342S\afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char}\afm-CHIThe9CH9Ͳkeywordislike9C,butsignalsthatthefollowingcharacter9coGdeis9giveninIhexadecimal.E343S\afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char}XProGcessingUUcompositechars.E344S\afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char}IFile:qficonv.dtx179ZsoXWhenUUparsingacharacter,wesetthevqaluesofthefollowingvqariables:E345S\newcount\char_slot E346S\newcount\char_x_widthE347S\newcount\x_widthE348S\newcount\bbox_llxE349S\newcount\bbox_llyE350S\newcount\bbox_urxE351S\newcount\bbox_uryE352S\let\char_name=\empty_commandy\init_afmI\init_afmUUinitializesthevqariablestheAFMcharacterlistwritesto. UUE353S\def\init_afm#1{E354ap\char_slot=#1\x_relaxE355ap\x_width=\char_x_widthE356ap\bbox_llx=0E357ap\bbox_lly=0E358ap\bbox_urx=0E359ap\bbox_ury=0E360ap\let\char_name=\empty_commandE361S}y\afm_charIThiscommandisexecutedattheendofproGcessingaCҲ(orCH)line.FItoutputsthe IcorrespGonding\setrawglyphor\setnotglyphcommand,-%basedoninformationIstoredUUintoregisterswhenproGcessingthatline. UUE362S\def\afm_char{ E363ap\eval_expr{E364p2\italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_uryE365ap}E366ap\out_line{E367p2\ifnum-1<\char_slotE368~0\string\setrawglyphE369p2\elseE370~0\string\setnotglyphE371p2\fiE372p2{\char_name}E373p2{\raw_font_name}E374p2{10pt}E375p2{\the\char_slot}E376p2{\the\x_width}E377p2{\the\bbox_ury}E378p2{\number-\bbox_lly}E379p2{\the\result}E380ap}E381S}X\init_ccUUand\cc_charwriteoutacompGositecharacterglyph.E382S\def\init_cc#1{%E383ap\out_line{\string\setglyph{#1}}E384ap\def\char_name{#1}E385S}E386S\def\cc_char{%E387ap\out_lline{\string\samesize{\char_name-not}}E388ap\out_line{\string\endsetglyph}E389S}IFile:qficonv.dtx180esoXThe(waytheitaliccorrectioniscomputedhasbGeenchangedquiteabit,]al-߀H\italcorr_expression Ithoughthecomputedvqaluesarestillthesame..ThepGointisthatitismuchsimplerItomoGdifytheformulaaccordingtowhichthevqalueiscomputedusingthismethoGdIthanUUusingthepreviousmethoGd.XTheUUcallb\italcorr_expression{hwidthci}{hleftظi}{hrighti}{hb}'ottomi}{htopi},IwheretheargumentsareTU>'ExXhnumb}'eris,!shouldexpandtoanintegerexpression. ITheɤvqalueɣofthatexpressionwillbGetakenastheitaliccorrectionofthecurrentIcharacter.Xhwidthcixisthewidthofthecharacter.0hleftظi,hrighti,hb}'ottomi,andxhtopiareIthe respGective coordinatesofthe sidesofthebGoundingboxof thecharacter.nAIquantityWxwhichWwisnotgivenasanargument,butwhichWwnonthelessmightWwbGeofIinterestforacalculationofitaliccorrection,&istheitalicslantofthefont.GThisIquantitycanbGefoundinthefontinstintegeritalicslant.4(TheMTXS lewrittenIwillUUalsosettheintegeritalicslanttothisvqalue.)f\uprightitalcorrf\slanteditalcorrITheseGtwocommandsGarewhat\italcorr_expressionwillgetsetto|theslantedIversion]isusedif]theitalicslantispGositiveandtheupright]versionisusedother-Iwise.R The_defaultde nitions`computethesamevqaluesasinfontinstv1.8, ^buttheIde nitionsUUcaneasilybGemodi edusing\resetcommand. E390S\def\uprightitalcorr#1#2#3#4#5{0} E391S\def\slanteditalcorr#1#2#3#4#5{\max{\sub{#3}{#1}}{0}}9\calculate_it_slantIT*o6setthe5italicangle,weneedtocalculatethetangentoftheanglethatthe.afmI lecontains.XThisisdonewithDavidCarlisle'strig-macros.XNotethatthetrigImacrosUUdon'tlikeaspaceattheendoftheirargument.E392S\def\calculate_it_slant#1{ E393ap\edef\theangle{#1}E394ap\CalculateTan{\theangle}E395ap\a_dimen=-\one_thousandspE396ap\a_dimen=\UseTan{\theangle}\a_dimenE397ap\a_count=\a_dimenE398ap\out_line{\string\setint{italicslant}{\the\a_count}}E399ap\x_resetint{italicslant}{\a_count}E400ap\ifnum0<\a_countE401p2\let\italcorr_expression=\slanteditalcorrE402ap\elseE403p2\let\italcorr_expression=\uprightitalcorrE404ap\fiE405S}E406S%\def\strip_spaces#1~#2\end_strip_spaces{#1}XT*o8proGcessalistofcommandsseparatedbysemi-colons,qwecall\do_list[LIST]. IThisworksina similarwayto\afm_line,butthe controlsequencefamilyusedIforUUdecoGdingis\list-hkeywor}'diratherthan\afm-hkeywordi. \list-hkeyUiE407S\def\do_list[~#1~#2;~#3]{ E408ap\csname~list-#1\endcsname\gobble_one_semi#2;E409ap\ifx\x_relax#3\x_relax\expandafter\gobble_oneE410ap\else\expandafter\identity_one\fiE411ap{\do_list[~#3]}IFile:qficonv.dtx181nĠsoE412S} E413S\def\gobble_one_semi#1;{}XThereisananalagous\list_defforde ningcommandstobGeusedinsidelists.E414S\def\list_def#1(#2)#3{\x_cs\def{list-#1}\gobble_one_semi#2~;{#3}}XF*orexample,thesearethecommandsthatareusedingivingcharactermetrics:E415S\list_def{W}(#1~#2){\afm_length\x_width{#1}} E416S\list_def{WX}(#1){\afm_length\x_width{#1}}E417S\list_def{WY}(#1){}E418S\list_def{N}(#1){\def\char_name{#1}}E419S\list_def{B}(#1~#2~#3~#4){E420ap\afm_length\bbox_llx{#1}E421ap\afm_length\bbox_lly{#2}E422ap\afm_length\bbox_urx{#3}E423ap\afm_length\bbox_ury{#4}E424S}E425S\list_def{PCC}(#1~#2~#3){E426ap\afm_length\a_count{#2}E427ap\afm_length\b_count{#3}E428ap\out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}}E429S}gL\definealiasITher\definealiasqcommandcanbGeusedtode neaglyphnamealias,9forgener- IationUUof\aliasedclausesinglyphnames.qThesyntaxis3b\definealias{haliasname[i}{hfont'snamei}{hintظi}Iwhere(׸hfont'sV~name[iistheglyph(namethatiffoundinanAFM( leshouldbGeIconvertedstotan\aliasedclauseusingthehaliasname[i."ThehintظiisthenameIofanintegerwhichwillbGeincrementedeverytimethisaliasappliestoaglyphIde nition; thisemechanismfismeantftohelphigherlevelcoGdepickanETX? lethatI tsUUthefont'sglyphnames.XDe nedSaliasesRarestoredinthe\GN-hfont'sname[ifamilyofcontrolsequences.[\GN-hfont'sN'ExXcontrolsequences.eW*ecanignoreaIparenthesisнmatchedоstringbymaking(оand)thegroupdelimiters,BthengobblingIthemUUup.ӍE555S\def\ignore_parens{\bgroup\catcode`(=1\catcode`)=2\x_relax E556ap\expandafter\expandafter\expandafter\gobble_parensE557p2\iftrue\expandafter{\else}\fi}E558S\def\gobble_parens#1{\egroup}3P\pl_real $\pl_realerIConvertUUaPLrealtoanAFMunit,assumingitcontainsadecimalpGoint.IFile:qficonv.dtx185ƠsoE559S\def\pl_real#1{\pl_realer(#1000)} E560S\def\pl_realer(#1.#2#3#4#5){#1#2#3#4}I\pl_realƲonlyworksiftheDESIGNUNITSԥsettingisatthedefaultvqalue1.FLuckily*, IthishiswhatgTFtoPL4andVFtoVPuseinall(V)PL lestheygcreate,OlsoyoucanIalways@get@a(V)PL@O lethatwillworkby@converting rstto@TFM@O(+VF)andIthenbackagain.WNAsofv1.913,thatisalsothevqaluefontinstusesforallVPL lesIitUUgenerates,sotheproblemisn'tparticularlyimpGortant.f\pl_rounded_realITheJ\pl_rounded_realKmacroislike\pl_realerinthatitconvertsJaPL unitIcontainingqapdecimalpGointptoanAFMSunit.Thedi erenceis(i)thatitroundsItheHnumbGerratherthantruncatingitand(ii)Hthatitstorestheresultin\resultIratherthanexpandingtoit.2Notethattheactualreal(characterstring)toconvertImustebGeefollowedbyatleastefourzerosfortheconversiontoworkcorrectlyeinallIcases.E561S\def\pl_rounded_real(#1.#2#3#4#5){E562ap\global\result=#1#2#3#4\relaxE563ap\ifnum\first_char#5=>4E564p2\global\advance\resultE565yw^\if-\first_char#1=\m@ne\else\@ne\fiE566ap\fiE567S}\pl_intIConvertUUaPLinttoaTU>'ExXint,assumingit'spre xedbyC,D,O,orH.E568S\def\pl_int#1#2{E569ap\ifx#1C`#2E570ap\else\ifx#1D#2E571ap\else\ifx#1O'#2E572ap\else\ifx#1H"#2E573ap\else-1\errmessage{Unknown~PL~number~prefix~`#1'}E574ap\fi\fi\fi\fiE575S}XManyofthePLcommandsareignored,)landI'massumingtheRsareinthe IplacesUUtftoplputsthem,whichisabitnaughtyofme.1hFAMILYpropAert9yFACEpropAert9y~to~carry~on~with~fingers~crossed,^^JE596~0or~X~~to~exit.}E597p2\errmessage{Undeclared~encoding~`#1'}E598ap\elseE599p2\def\do_slot{\x_cs\let{name-\the\slot_number}\slot_name}E600p2\def\do_boundary{\x_cs\let{name-BOUNDARYCHAR}\slot_name}E601p2\catcode`\(=12\catcode`\)=12E602p2\x_cs\inputetx{enc-#1}\x_relaxE603p2\catcode`\(=0\catcode`\)=9E604ap\fiE605S}KDESIGNSIZEpropAert9yITheDESIGNSIZEcisneededbGecausetheFONTDSIZEspGeci edinaMAPFONTpropGertyIlistUUhastobGethesameastheDESIGNSIZEofthecorrespondingbasefont.E606S\def\DESIGNSIZE~#1~#2~{E607ap\a_dimen=#2ptE608ap\out_line{\string\setdim{designsize}{\the\a_dimen}}E609S}zDESIGNUNITSpropAert9yIThePLtoMTXconverterassumesthatthe(V)PL lestoconvertloGokliketheIones:createdbyTFtoPL/VFtoVP,andtheinterpretation9oftheDESIGNUNITS!prop-Ierty1is1onethingspGeci callya ectedbythis.eTheTFM1 leformatdoGesnotstoreIthe(DESIGNUNITSvqalueused,sothetwo(abGoveprogramsalwaysgenerate(V)PLI leswiththedefaultsettingofdesignunitequaltothedesignsize.yHenceanyIoGccurenceoftheDESIGNUNITSpropertywithanondefaultvqalueisanindicationIofUUanerror.XThefincorrectfmetricscanbGecorrectedbyscalingbyfasuitableamount(1000Idividedabythedesignunitsdimen),dbutitismuchsimplertoconvertthePLatoIaUUTFMandthenconvertUUitback,thatwillalso xtheunits.E610S\def\DESIGNUNITS~#1~#2~{IFile:qficonv.dtx187ɠsoE611ap\b_dimen=#2pt\x_relax E612ap\ifdim1pt=\b_dimen\elseE613p2\fontinsterror{PL-to-MTX}{Nondefault~unit~used~in~PL~file}E614~0{You~may~continue,~but~the~metrics~for~this~font~will~be~wrong.}E615ap\fiE616ap\out_line{\string\setdim{designunits}{\the\b_dimen}}E617S}BOUNDARYCHARpropAert9yE618S\def\BOUNDARYCHAR~#1~#2~{E619ap\x_setint{\percent_charboundarychar}{\pl_int{#1}{#2}}E620S}XDeclaredQfontdimensareQconvertedto\setintcommandsintheQMTXQ le.pA Ifontdimen\declarationforfontdimennis\storedinthecontrolsequence\fdimen-n; \fdimen-hn9iIifthiscontrolsequenceisunde nedthenthefontdimenisnotdeclaredandifitIisyZsetthenity[isamacrowhichexpandstothenameofthecorrespGondingintegerIvqariable.f\pl_setfontdimenIF*ontdimensaredeclaredbythe\pl_setfontdimenmacro,@whichisade nitionIofUU\setfontdimenthatisusedduring(V)PL-to-MTXconversion.E621S\def\pl_setfontdimen#1#2{\x_cs\def{fdimen-#1}{#2}}PARAMETERpropAert9yIThe}PARAMETERbpropGertyis~thegenericspeci eroffontdimensin(V)PLc les.?ItItakesUUtwoarguments:qthefontdimennumbGer(integer)andvqalue(real).E622S\def\PARAMETER~#1~#2~R~#3~{ E623ap\f_count=\pl_int{#1}{#2}\x_relaxE624ap\if_defined{fdimen-\the\f_count}\thenE625p2\pl_rounded_real(#30000)E626p2\out_line{\string\setint{\csnamefdimen-\the\f_count\endcsname}E627~0{\the\result}}E628ap\fiE629S}FONTDIMENpropAert9yINoUUspGecialprocessingisrequiredfortheFONTDIMENproperty*.E630S\let\FONTDIMEN=\x_relaxSLANTpropAert9y SPACEpropAert9y wSTRETCHpropAert9y 1hSHRINKpropAert9y$ wXHEIGHTpropAert9y0 QUADpropAert9y< KEXTRASPACEpropAert9yIThe3propGerties2forthesevenmandatoryfontdimensareconverted3tothecorres- IpGondingPARAMETERpropertiesbuttheirmeaningsarepredeclared.WThee ectofItheseEpredeclarationsisthatevenETXE lesthatdon'tuse\setfontdimentosetItheUUfontdimenshavethesefontdimensconvertedto\setints.XAVscanshowsVthatthecurrentV(2001/03/17)MTXandETX lesaren'tusingItheintegersstretchword,5ushrinkword,5tquad,andextraspace.TheyprobablyIshould.E631S\def\SLANT{\PARAMETERD~1~} E632S\pl_setfontdimen{1}{italicslant}E633S\def\SPACE{\PARAMETERD~2~}E634S\pl_setfontdimen{2}{interword}E635S\def\STRETCH{\PARAMETERD~3~}E636S\pl_setfontdimen{3}{stretchword}E637S\def\SHRINK{\PARAMETERD~4~}E638S\pl_setfontdimen{4}{shrinkword}IFile:qficonv.dtx188ϠsoE639S\def\XHEIGHT{\PARAMETERD~5~} E640S\pl_setfontdimen{5}{xheight}E641S\def\QUAD{\PARAMETERD~6~}E642S\pl_setfontdimen{6}{quad}E643S\def\EXTRASPACE{\PARAMETERD~7~}E644S\pl_setfontdimen{7}{extraspace} NUMpropAerties DENOMpropAertiesITheNUMandDENOMpropGertiesareforfontdimens8{10and11{12.Theyhave ItoUUdowithpGositioningnumeratoranddenominatorinfractions.E645S\def\NUM#1~#2~#3~{E646ap\ifcase#1\orE647p2\PARAMETERD~8~#2~#3~E648ap\orE649p2\PARAMETERD~9~#2~#3~E650ap\orE651p2\PARAMETERD~10~#2~#3~E652ap\fiE653S}E654S\def\DENOM#1~#2~#3~{E655ap\ifcase#1\orE656p2\PARAMETERD~11~#2~#3~E657ap\orE658p2\PARAMETERD~12~#2~#3~E659ap\fiE660S} SUPpropAerties SUBpropAertiesIThe=SUPand=SUBpropGertiesareforfontdimens13{15and16{17.iTheyhave=to IdoUUwithpGositioningsuperscriptsandsubscripts.E661S\def\SUP#1~#2~#3~{E662ap\ifcase#1\orE663p2\PARAMETERD~13~#2~#3~E664ap\orE665p2\PARAMETERD~14~#2~#3~E666ap\orE667p2\PARAMETERD~15~#2~#3~E668ap\fiE669S}E670S\def\SUB#1~#2~#3~{E671ap\ifcase#1\orE672p2\PARAMETERD~16~#2~#3~E673ap\orE674p2\PARAMETERD~17~#2~#3~E675ap\fiE676S}wSUPDROPpropAert9y wSUBDROPpropAert9y KAXISHEIGHTpropAert9yITheseUUarefontdimens18,19,and22.E677S\def\SUPDROP{\PARAMETERD~18~}E678S\def\SUBDROP{\PARAMETERD~19~}E679S\def\AXISHEIGHT{\PARAMETERD~22~}DELIMpropAertiesITheaDELIMafondimenshaveanumbGer20aand21.iTheyhaveatodowiththesizeof IdelimitersUUputaroundageneralisedfraction.E680S\def\DELIM#1~#2~#3~{IFile:qficonv.dtx189`soE681ap\ifcase#1\or E682p2\PARAMETERD~20~#2~#3~E683ap\orE684p2\PARAMETERD~21~#2~#3~E685ap\fiE686S}ff 4DEFAULTRULETHICKNESSpropAert9y ӂBIGOPSPACINGpropAertiesIThefontdimenpropGertiesthatarespecialformathextensionfontsareDEFAULT- IRULETHICKNESSUUandthevqariousBIGOPSPACING. ͍E687S\def\DEFAULTRULETHICKNESS{\PARAMETERD~8~}E688S\def\BIGOPSPACING#1~#2~#3~{E689ap\ifcase#1\orE690p2\PARAMETERD~9~#2~#3~E691ap\orE692p2\PARAMETERD~10~#2~#3~E693ap\orE694p2\PARAMETERD~11~#2~#3~E695ap\orE696p2\PARAMETERD~12~#2~#3~E697ap\orE698p2\PARAMETERD~13~#2~#3~E699ap\fiE700S}͍IThis=is=theoldde nitionof\DEFAULTRULETHICKNESS=forhistoricalreferences(sinceIitsUUbGehaviourhaschanged). ͍E701S%\def\DEFAULTRULETHICKNESS~R~#1~{E702S%X\out_line{\string\setint{underlinethickness}{\pl_real{#1}}}E703S%}ffLABELpropAert9y \LABEL_slot9\LABEL_boundarychar\do_if_definedITheymostxcomplicatedpartoftheproGcessingoftheLIGTABLEdpropGertylististhatIitAhastoAkeeptrackofwhichAglyphsthecurrentligature/kerningAprogramappliesIto.XThis storedasa\do{hglyphci}listin\a_macroandbuildingthislististhejobIofUUtheLABELpropGerty*.XItFisFassumedthat\dois\never_dowheneversomeelementisaddedtoI\a_macro. ͍E704S\def\LABEL~#1{\ifx#1BE705p2\expandafter\LABEL_boundarycharE706ap\elseE707p2\expandafter\LABEL_slot\expandafter#1E708ap\fiE709S}E710S\def\LABEL_slot#1~#2~{E711ap\f_count=\pl_int{#1}{#2}E712ap\edef\a_macro{\a_macroE713p2\x_cs\do_if_defined{name-\the\f_count}E714ap}E715S}E716S\def\LABEL_boundarycharOUNDARYCHAR{E717ap\edef\a_macro{\a_macroE718p2\x_cs\do_if_defined{name-BOUNDARYCHAR}E719ap}E720S}E721S\def\do_if_defined#1{\ifx#1\x_relax\else\do{#1}\fi}IFile:qficonv.dtx190)sofontfromthe\setrawglyphinstructionsinhmtx le[itohpl le[i.9Itignores Ianyfontdimensionsandkerning,sotheresultingfontisonlyusefulforgeneratingIvirtualUUfontsfrom.q(Thismacroiscalledby\transformfont.)3P\mtxtoplE765S\def\mtxtopl#1#2{{E766ap\let\setsomething_global=\x_relaxE767ap\open_out{#2.pl}E768ap\top_of_pl_hookE769ap\out_line{(COMMENT~raw~font~#2~created~by~fontinst~E770p2v\fontinstversion)}E771ap\out_line{}E772ap\out_line{(COMMENT~Filename:~#2.pl)}E773ap\out_line{(COMMENT~Created~by:~tex~\jobname)}E774ap\out_line{(COMMENT~Created~using:~\string\mtxtopl{#1}{#2})}E775ap\out_line{}E776ap\out_line{(COMMENT~This~file~can~be~turned~into~E777p2a~ligless~TeX~font~with)}E778ap\out_line{(COMMENT~pltotf~#2.pl~#2.tfm)}E779ap\out_line{}E780ap\out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)}E781ap\out_line{}E782ap\out_line{(DESIGNSIZE~R~10.0)}E783ap\out_line{}E784ap\let\setglyph=\iffalseE785ap\let\endsetglyph=\fiE786ap\let\setkern=\gobble_threeE787ap\let\setscaledrawglyph=\first_pl_raw_glyphE788ap\def\setscalednotglyph##1##2##3##4##5##6##7##8##9{}E789ap\inputmtx{#1}E790ap\out_line{}E791ap\out_line{(COMMENT~END~OF~FILE~#2.pl)}E792ap\close_out{Raw~font}E793S}}9\first_pl_raw_glyphIThe-\first_pl_raw_glyph,writestheDESIGNUNITSpropGertyforthefontwhen Ithe- rst\setscaledrawglyph-isencountered.ThisistoundothescalingthatIhasalreadybGeenappliedtothemetrics,#qsothatthemetricswillmatchtheactualIfont.E794S\def\first_pl_raw_glyph#1#2#3#4{E795ap\out_line{(DESIGNUNITS~R~\make_factor{#4})}E796ap\let\setscaledrawglyph=\pl_raw_glyphE797ap\pl_raw_glyph{#1}{#2}{#3}{#4}E798S}IFile:qficonv.dtx192sob\pl_raw_glyph ߍE799S\def\pl_raw_glyph#1#2#3#4#5#6#7#8#9{ E800ap\out_line{(CHARACTER~D~\number#5~\space(COMMENT~#1)}E801ap\out_lline{(CHARWD~R~\make_factor{#6})}E802ap\out_lline{(CHARHT~R~\make_factor{#7})}E803ap\out_lline{(CHARDP~R~\make_factor{#8})}E804ap\out_lline{(CHARIC~R~\make_factor{#9})}E805ap\out_lline{)}E806S} LI17ifdFfontfftransformationsI17.1nTransformablemetric lesuTIAtr}'ansformable,metric+ le~is$ametric# lewhichcomplieswithcertainrestrictions IinUUitssyntax.qTheonlymetriccommandsallowedare#|b\setscaledrawglyph{hglyphci}{hfontظi}{hsize[i}{hsc}'alei}{hsloti}{hwidthci}q{hheightظi}{hdepthci}{hitalici}b\setrawglyph{hglyphci}{hfontظi}{hsize[i}{hsloti}{hwidthi}{hheighti}q{hdepthci}{hitalici}b\setscalednotglyph{hglyphci}{hfontظi}{hsize[i}{hsc}'alei}{hsloti}{hwidthci}q{hheightظi}{hdepthci}{hitalici}b\setnotglyph{hglyphci}{hfontظi}{hsize[i}{hsloti}{hwidthi}{hheighti}q{hdepthci}{hitalici}b\setkern{hglyph1[i}{hglyph2i}{hamountظi}b\setglyph{hglyphci}UUhglyphc}'ommands!i\endsetglyphIwhere hglyphci,2xhglyph1[i,hglyph2i,and hfontظiarestringswithoutanyvqariableIreferencesS(no\stror\strintareallowed),Shsc}'ale[i,Rhslotظi,hwidthci,hheighti,Ihdepthci,ݸhitalici,andhamountظiareTU>'ExXnumbGers,andhsize[iisaTU>'ExXdimen.I(MoreNaccurately*,Oalldimensinatransformablemetric leshouldbGeontheformIhoptionalsigns!ihde}'cimalconstantظihphysicalunitظi,butthat'satthe\dangerousIbGend"UUlevel.)qThehglyphcismaybGeoftheform#}b\aliased{hfont'sname[i}{haliasnamei}ISuch{0hglyphcisareinterpretedas{1haliasname[ifor{0allpurpGosesexceptreencoding,Iwhentheyareinterpretedashfont's`name[i._0hglyphcisofthisformarefurthermoreIcopiedUUastheyaretoMTX lescreatedby\transformfont(\mtxtomtx).XTheUUonlyhglyphc}'ommands!iallowedUUareb\samesize{hglyphci}b\glyphpcc{hglyphci}{hxo setظi}{hyo seti}#}IwhereUUhglyphciisasabGove,UUandhxo setظiandhyo setiareTU>'ExXnumbGers.XTheUUonlygeneralcommandsallowedUUareb\needsfontinstversion{hversionci}b\setint{hname[i}{hnumb}'eri}b\setdim{hname[i}{hdimenci}b\setstr{hname[i}{hstring}i}b\storemapdata{hfontظi}{hsour}'ce[i}{htransformations!i}IFile:qficonv.dtx193soIwhererhname[iandhstring}isarestringswithoutvqariablereferences,hnumb}'eriisa ITU>'ExXnumbGer,eandhdimenciȲisaTU>'ExXdimen.iTheargumentsof\needsfontinst-Iversionand\storemapdataareasusual,&butthesecommandsdonotgetcopiedIinUUafonttransformation.XThemetric lesproGducedby\afmtomtxand\generalpltomtxaremeanttoIbGeUUtransformable.qIftheyarenotthenthereisabugsomewhere.XThenameoftheintegerin\setintcommandsisinterpreted.4ThisnameisIusedtodeterminehowthenumbGershouldbetransformed,seetheimplementationIofUU\mtxtomtx_setintbGelow.-I17.2nMakingfonttransformationsuTITheUUmacro:\transformfont%b\transformfont{hfont-name[i}{htr}'ansformedfontظi}%Itransformsthemetricsofarawfont.JAsfarasTU>'ExXisconcerned,~hfont-name[iwillIbGekaknewfont.ActuallydoingthetransformationandprovidingthetransformedIfont(asoppGosedtothemetricsofthetransformedfont)isformosttransformsIup+tosomeotherpieceofsoftware,45in+mostcasestheDVI+driver,but+fontinstwillIhandleUUisotropicscalingitself.XThe%easiest%wayto% ndoutwhichtransformationsneedtobGecarriedoutistoIgeneratepvapumap leforthedebug\driver"(seeSection19).(Ofcourse,w=if7fontinstIcangenerateamap leforthetargetdriverthenyouprobablydon'tneedtoI ndoutwhichtransformationswerenecessary...Inanycase,theargumentsofI\storemapdataqȲintheMTXq legeneratedwillqtellwhichtransformationsofthisI\transformfontUUcommandthatmustbGeperformedbysomeothersoftware.XTheUUhtr}'ansformedfontظicommandsare:3P\fromafm3P\frommtx\frompl$$\scalefont0 \xscalefont< \yscalefontH$\slantfontTb\reencodefontb\fromafm{hAFM le[i}b\frompl{hPL le[i}b\fromplgivenetx{hPL le[i}{hetx4Di}b\frommtx{hMTX le[i}b\fromany{h le[i}b\scalefont{hinte}'gerexpressionci}{htransformedfontظi}b\xscalefont{hinte}'gerexpressionci}{htransformedfontظi}b\yscalefont{hinte}'gerexpressionci}{htransformedfontظi}b\slantfont{hinte}'gerexpressionci}{htransformedfontظi}b\reencodefont{hetx4Di}{htr}'ansformedfontظi}XEach2 \transformfont2 commandgeneratesan.mtx leforhfont-name[iandaIcorrespGondingUUraw.pl le,whichiswrittenoutby\mtxtopl.XEachyW\fromafm,W\frompl,or\fromplgivenetxyVcommandalsogeneratesanI.mtx8 leforthesourcefont,qwhich8iswrittenoutby\afmtomtxor\generalpltomtx.IInfaddition,G\fromafmalsouses\mtxtopletogenerateacorrespGondingraw.plI le.X\fromany@reads@anMTX,PL,AFM,orVPL? ledepGendingonwhatitcanI nd.qItUUtriesthemintheorder rstMTX,thenPL,thenAFM,andlastVPL.\ \transformfont `E807S\def\transformfont#1#2{{ E808ap\let\setsomething_global=\x_relaxIFile:qficonv.dtx194 VsoE809ap\unsetstr{afm-name} E810ap\unsetstr{etx-name}E811ap\x_resetint{x-scale}{\one_thousand}E812ap\x_resetint{y-scale}{\one_thousand}E813ap\x_resetint{slant-scale}{0}E814ap#2E815ap\ifisstr{afm-name}\thenE816p2\mtxtomtx{\str{afm-name}}{#1}E817p2\mtxtopl{#1}{#1}E818ap\elseE819p2\fontinsterror{Transformfont}{E820~0Failed~to~make~transformed~font~#1;\messagebreakE821~0source~font~metrics~file~not~foundE822p2}\error_help_aE823ap\fiE824S}}3P\fromafmE825S\def\fromafm#1{E826ap\if_file_exists{#1.afm}\thenE827p2\x_setstr{afm-name}{#1}E828p2\afmtomtx{#1}{#1}E829p2\mtxtopl{#1}{#1}E830ap\fiE831S}3P\frommtxE832S\def\frommtx#1{E833ap\if_file_exists{#1.mtx}\then\x_setstr{afm-name}{#1}\fiE834S}\frompl 6\fromplgivenetxE835S\def\frompl#1{E836ap\if_file_exists{#1.pl}\thenE837p2\x_setstr{afm-name}{#1}E838p2\generalpltomtx{#1}{#1}{pl}{}E839ap\fiE840S}E841S\def\fromplgivenetx#1#2{E842ap\if_file_exists{#1.pl}\thenE843p2\x_setstr{afm-name}{#1}E844p2\generalpltomtx{#1}{#1}{pl}{#2}E845ap\fiE846S}XRegarding1\fromvpl and \fromvplgivenetx:6I ]realizedthatthereisn'tany IpGointinreadingmetricsforafontthatistobGetransformedfromaVPL le,sinceInoqdriverIPknowpofcantransformvirtualfonts.IfsomeonehaspaproblemwithIthisUUthenIsuppGoseheorsheshouldsendwordaboutit.q/LH3P\fromanyIThe\fromanytransformedfontcommandsearchesforfontmetricsfor#1byIloGokingfor, inturn,the les#1.mtx, #1.pl,#1.afm,and#1.vpl.IfanMTXIFile:qficonv.dtx195 soI le!doGesn'texist,,itisgenerated,andiftheMTX!is!generatedfromanAFMthen Ia˰correspGonding(non-ligful)PL˒ leisgeneratedaswell.\fromanyalsosetstheIfontinststring7afm-nameaccordingtowhatkindoffontitfound.IfnoneoftheIfontsUUexistedthenafm-nameisunset. E847S\def\fromany#1{ E848ap\x_cs\edef{s-afm-name}{#1}E849ap\if_file_exists{#1.mtx}\then\elseX1997/01/15SPQRchangedthebGelowsearchorderto.plbGefore.afmbGecause IofUUthecmr*.afm lesfoundintheTEXMF/fonts/afmhierarchy*.E850p2\if_file_exists{#1.pl}\thenE851~0\generalpltomtx{#1}{#1}{pl}{}E852p2\elseE853~0\if_file_exists{#1.afm}\thenE854]\afmtomtx{#1}{#1}E855]\mtxtopl{#1}{#1}E856~0\elseE857]\if_file_exists{#1.vpl}\thenE858x\generalpltomtx{#1}{#1}{vpl}{}E859]\elseE860x\unsetstr{afm-name}E861ap\fi\fi\fi\fiE862S}ߍITheTmathematicalbasisforthemetricfon9ttransformationsuTIMathematically*,Pallthemetricfonttransformations(\scalefont,\xscalefont, I\yscalefont,andw{\slantfont)wzarelinearmappingsoftherealplaneontoitself.IAllquantitiesinatransformablemetric leareinterpretedasbGeingdeterminedbyIsomeypGointyinthisplaneandhencetheirtransformationdepGendsonhowthatpGointIwould"rbGe"smovedby"sthemetricfonttransformationspGerformed.ThisisusuallyIsimpler thanitsounds,sinceall quantitiesexceptitalicslantareinterpretedasIeitherthex-orthey[ٲ-coGordinateofsomepoint.LEitalicslantisinterpretedastheIquotient  0ercmmi7x&fe/y forUUapGoint.XThebGestwaytodescribGealinearmappingoftherealplanetoitselfisbyaI2̸2"matrix"whosecompGonentsarerealnumbGers.Since"truerealnumbGers"areInot4avqailable4inTU>'ExX,:integersareused4instead,:withthe4conventionthat4theyareIin;units'ExX,_thereisnopGointinconsideringotherlinearItransformations.$\scalefont \xscalefont \yscalefont$\slantfont$b\reencodefont 恍E863S\def\scalefont#1#2{ E864ap\eval_expr_to\d_count{#1}E865ap\x_resetint{x-scale}{\scale{\d_count}{\int{x-scale}}}E866ap\x_resetint{y-scale}{\scale{\d_count}{\int{y-scale}}}E867ap\x_resetint{slant-scale}{\scale{\d_count}{\int{slant-scale}}}E868ap#2E869S}E870S\def\xscalefont#1#2{E871ap\x_resetint{x-scale}{\scale{#1}{\int{x-scale}}}E872ap#2E873S}E874S\def\yscalefont#1#2{E875ap\eval_expr_to\d_count{#1}E876ap\x_resetint{y-scale}{\scale{\d_count}{\int{y-scale}}}E877ap\x_resetint{slant-scale}{\scale{\d_count}{\int{slant-scale}}}E878ap#2E879S}E880S\def\slantfont#1#2{E881ap\x_resetint{slant-scale}{E882p2\add{\scale{#1}{\int{x-scale}}}{\int{slant-scale}}E883ap}E884ap#2E885S}E886S\def\reencodefont#1#2{E887ap#2E888ap\resetstr{etx-name}{#1}E889S}IFile:qficonv.dtx197 .soXThat's97only96halfthestory*,>however.hhItis97truethatthetransformationmatrix, Iasncomputedbyn\scalefont,\slantfont,\xscalefont,andn\yscalefontabGove,IisC.usedforC/transformingthefontmetrics,zbutitisnotdirectlyusedfortransformingItheUUfontitself.qInsteaditisfactorizedas^dxsj0Šy^,$=y^dbx=y(] s=y0-V1'ExXnumbGerisreallyathousandtimestheactual Iquotient)._Theintegersinthe\width_ints_listaretransformedasiftheyareItheUUx-coGordinatesofsomepointsonthebaseline.XTheY\width_ints_listmacroisanordinaryZ\do-typGelistwhereeach\dohasIpreciselyioneargument.wTheseargumentsiarethenamesoftheintegerswhichIshouldK^bGetransformedK]aswidths.SElementscanbGeaddedtothelistusingtheI\add_toUUmacro.XTheAMtestforwhetheraspGeci cANintegerisinthe\width_ints_listexploitsIthat\if_trueand\if_falseonlymatterin\if{\fimatchingaftertheyhaveIbGeenexpanded,whereas\gobble_one\iftrueonlymattersbGeforeitisexpanded.E959ShpkgKi E960S\def\mtxtomtx_setint#1#2{E961ap\def\a_macro{#1}E962ap\ifx\a_macro\italicslant_nameE963p2\eval_expr{#2}E964p2\global\multiply\result\int{x-scale}E965p2\a_count=\int{slant-scale}E966p2\multiply\a_count\one_thousandE967p2\advance\a_count\resultE968p2\divide\a_count\int{y-scale}\x_relaxE969ap\elseE970p2\def\do##1{E971~0\def\b_macro{##1}E972~0\ifx\a_macro\b_macro\expandafter\if_false\fiE973p2}E974p2\gobble_one\iftrue\width_ints_list\if_trueE975~0\eval_expr_to\a_count{\scale{#2}{\int{y-scale}}}E976p2\elseE977~0\eval_expr_to\a_count{\scale{#2}{\int{x-scale}}}E978p2\fiE979ap\fiE980ap\out_line{\string\setint{#1}{\the\a_count}}E981S}E982S\def\italicslant_name{italicslant}E983S\def\width_ints_list{E984ap\do{interword}\do{stretchword}\do{shrinkword}\do{quad}E985ap\do{extraspace}\do{digitwidth}\do{verticalstem}E986S}f\mtxtomtx_setdim f\mtxtomtx_setstrIStringsUUanddimensarenota ectedbythe\mtxtomtxtransforms.E987S\def\mtxtomtx_setdim#1#2{E988ap\out_line{\string\setdim{#1}{#2}}E989S}E990S\def\mtxtomtx_setstr#1#2{E991ap\out_line{\string\setstr{#1}{#2}}E992S}m.\mtxtomtx_setscaledrawglyphI#6ܒ(thewidth)istransformedastheܓx-coGordinateofapointonthebaseline. I#7Qand#8P(theheightanddepthrespGectively)arePtransformedasy[ٲ-coGordinates.IThedepthshouldprobablyreallyhavebGeentransformedasthenegativeofay[ٲ-IcoGordinate,butitcomesoutthesameintheendanyway*.8#9ò(theitaliccorrection)IFile:qficonv.dtx200 RsoIis̈́transformedastheͅx-coGordinateofapointwhosey[ٲ-coordinateͅequalstheheight IofUUthecharacter.q#4(thescaling)istransformedasay[ٲ-coGordinate.XIfFtheitalicslantGofthefontisnegativethentheGitaliccorrectionshouldpGos-IsiblybGetransformedasthex-coGordinateofapGointwhosey[ٲ-coGordinateequalstheInegativeofthedepthinstead(asthatisthepartofthebGoxthatisstickingoutItoUUtheright),butitishardtosayforsurehowthatcaseshouldbGetreated.!ǍE993S\def\mtxtomtx_setscaledrawglyph#1#2#3#4#5#6#7#8#9{ E994ap\eval_expr_to\a_count{\scale{#6}{\int{x-scale}}}E995ap\eval_expr_to\b_count{\scale{#7}{\int{y-scale}}}E996ap\eval_expr_to\c_count{\scale{#8}{\int{y-scale}}}E997ap\eval_expr_to\d_count{#9}\eval_expr{#7}E998ap\multiply\d_count\int{x-scale}E999ap\global\multiply\result\int{slant-scale}A1000ap\global\advance\result\d_countA1001ap\rounded_thousandthsA1002ap\d_count=\resultA1003ap\eval_expr{\scale{#4}{\int{y-scale}}}A1004ap\ifisstr{etx-name}\thenA1005p2\bgroupA1006p2\let\aliased=\first_of_twoA1007p2\if_undefined{slots-#1}\thenA1008~0\egroup\e_count=\m@neA1009p2\elseA1010~0\expandafter\egroup\expandafter\e_countA1011]\csnameslots-#1\endcsnameA1012p2\fiA1013ap\elseA1014p2\e_count=#5A1015ap\fiA1016ap\out_line{A1017p2\ifnum\e_count>\m@neA1018~0\string\setscaledrawglyphA1019p2\elseA1020~0\string\setscalednotglyphA1021p2\fiA1022~0{#1}{\raw_font_name}{#3}{\the\result}{\the\e_count}A1023~0{\the\a_count}{\the\b_count}{\the\c_count}{\the\d_count}A1024ap}A1025S} \mtxtomtx_setkernIKernsUUaretransformedasthex-coGordinateofapointonthebaseline.A1026S\def\mtxtomtx_setkern#1#2#3{A1027ap\eval_expr{\scale{\int{x-scale}}{#3}}A1028ap\out_line{\string\setkern{#1}{#2}{\the\result}}A1029S}t\mtxtomtx_setglyph t\mtxtomtx_samesize Ʋ\mtxtomtx_endsetglyph ㍍A1030S\def\mtxtomtx_setglyph#1{\out_line{\string\setglyph{#1}}}A1031S\def\mtxtomtx_samesize#1{\out_lline{\string\samesize{#1}}}A1032S\def\mtxtomtx_endsetglyph{\out_line{\string\endsetglyph}}t\mtxtomtx_glyphpccI#2istransformedasthex-coGordinateand#3istransformedasthey[ٲ-coordinate IofUUapGoint|thesamepointforbothparameters.IFile:qficonv.dtx201 ^soA1033S\def\mtxtomtx_glyphpcc#1#2#3{ A1034ap\eval_expr_to\b_count{\scale{\int{y-scale}}{#3}}A1035ap\eval_expr_to\a_count{#2}\eval_expr{#3}A1036ap\multiply\a_count\int{x-scale}A1037ap\global\multiply\result\int{slant-scale}A1038ap\global\advance\result\a_countA1039ap\rounded_thousandthsA1040ap\out_lline{\string\glyphpcc{#1}{\the\result}{\the\b_count}}A1041S}6I17.3nChangingglyphnamesuTIfontinstÛusesnamestoidentifyglyphs,,andifforexamplethefontinquestionis IaʗpGostscriptʘfont,thennameswillalsobGeusedtoidentifyglyphsintheprinter.IBetweenIthosetwoIpGointshowever,LandinparticularinsideTU>'ExXitself,glyphsareIrepresentedwithnumbGers(slots)."ThereforethereisnorealneedfortheglyphInamesusedwithinfontinstandtheglyphnamesusedintheprinter(thenamesIgottenfromtheAFM le)tobGeequal,buttheyusuallyare.JTherearesomecasesIthoughowhereotheglyphnamesofafontareunsuitableforusewithfontinst|ImainlyϠbGecausefontinstϡcanmixglyphsfromdi erentprinterϠfonts|andthereforeIfontinst͝also͞o erstheabilitytoautomaticallychangethenamesofglyphsinItransformableUUmetric les.b\reglyphfontsf\endreglyphfontsb\reglyphfontsUUhr}'eglyphingcommands!i\endreglyphfontsA1042S\def\reglyphfonts{ A1043ap\begingroupA1044ap\let\setsomething_global=\x_relaxA1045ap\x_setint{renameweight}{1}A1046ap\x_setint{killweight}{-10}A1047ap\setcommand\iftokeep##1\then{\ifnum-1<##1}A1048S}A1049S\def\endreglyphfonts{\endgroup}XTheUUhr}'eglyphingcommands!iareb\renameglyph{htoi}{hfr}'omci} b\renameglyphweighted{htoi}{hfr}'omci}{hweightظi}b\killglyph{hglyphci}b\killglyphweighted{hglyphci}{hweightظi}b\offmtxcommand{hc}'ommandi}b\onmtxcommand{hc}'ommandi}b\reglyphfont{hdestinationfontظi}{hsour}'cefontظi}ITheonlyreglyphingcommandthatactuallyconvertthenamesofanyglyphsisI\reglyphfont;itX|readsafonthsour}'ceSfontظiX{(whichX|maybGeoftypGeMTX,PL,L\reglyphfontIAFM,YorVPL)LandwritesanotherfonthdestinationfontظiinwhichthenamesofIglyphs4Shave4RbGeenconverted.fAllthe4RothercommandscontrolhowG߲thisconversionIshould7bGe7made,=andthesesettingsgetclearedattheclosing\endreglyphfonts.XTheconversionworksintwoways.QFirstofall,thenamesoftheglyphscanbGeIchanged.LWThisworksasageneralmappingandiscontrolledbythe\renameglyphL\renameglyphIandb\renameglyphweightedcommands.yAnymensioningoftheglyphhfr}'omciin߀H\renameglyphweightedIa6commandwillbGeconverted6to6amensioningoftheglyphhtoi,but IitAissomewhatfastersincelesstext@iswrittentoandsubsequentlyreadfromIthehdestinationfontظi.mtx le.bThee ectofaprevious\offmtxcommandcanbGeIcanceledbyacallto\onmtxcommand,justlikewith\offcommandand\oncommand.b\onmtxcommandXThecsurvivqancecofacommandisalsoa ectedbytheglyphsitrefersto.jEachIglyphBhasaweightassoGciatedwithitandAthesumoftheweightsBforallglyphsImensioned nbyacommandisalsousedtodecidewhetherthatcommandshouldIsurvive.The>test>hereispGerformedbythemacro\iftokeep,vwhoseparametertexty\iftokeepImustLbGe#1\then,where#1Mwillbea\countregister.EoThisMmacromusteventuallyIexpand@toanifofsomesortandthat?ifevqaluatingtotrueisinterpretedasthattheIcommandshouldbGekept.Thedefaultreplacementtextis\ifnum?-1<#1,whichIcauses:6acommandtobGekilled(notkept)i thesumofweightsforitisnegative.XThejweightjofaglyphissetby\renameglyph,\renameglyphweighted,\kill-$\killglyphIglyph,2and%\killglyphweighted.8The\rename...}commands%alsoset&anewt\killglyphweightedInamefortheglyphifitsurvives,whereasthe\kill...bcommandswillkeeptheIoldt%name.6Sincethestandardsettingst$arethata\rename...weightist%smallandIpGositive*and)a\kill...ԩweight*is)largeandnegative,2glyphsforwhicha\kill...IhasUUbGeendonewillusuallynotsurvive.XAnywYoneof\renameglyph,\renameglyphweighted,\killglyph,andwY\kill-Iglyphweighted$for$aglyphwilloverride$allprevioussettingsbyanyof$thesefourIcommandsdforthatglyph.Theequivqalentdoftheneutralstateforaglyph(noIsettingsbyanyofthesecommandshavebGeenmadeforthatglyph)isachievedbyItheUUcommandb\killglyphweighted{hglyphci}{0}\offmtxcommandb\onmtxcommandITheseUUtwoarejustspGecialformsof\offcommandand\oncommand.A1050S\def\offmtxcommand#1{ A1051ap\x_cs\offcommand{reglyph_\expandafter\gobble_one\string#1}A1052S}A1053S\def\onmtxcommand#1{A1054ap\x_cs\oncommand{reglyph_\expandafter\gobble_one\string#1}A1055S}XInside8a\reglyphfonts...\endreglyphfonts8bloGck,qthefamily\slots-hglyphciz-\slots-hglyph9i IofcontrolsequencesisusedtostoretheinformationabGouthowglyphhglyphciIshould{bGeconverted.MThese{controlsequencesareeitherunde nedorparameter-IlessUUmacroswhosereplacementtextsareofoneoftheformsIFile:qficonv.dtx203 y sob\rename_glyph{htoi}{hweightظi} b\rename_glyph{htoi}\i-renameweightb\kill_glyph{hweightظi}b\kill_glyph\i-killweightIhtoi[iswhattheglyphwillbGe[renamedtoandhweightظiistheassociatedIweight.Theseafourbdi erentformsaregeneratedbbythefourbdi erentcommandsI\renameglyphweighted,9\renameglyph,8\killglyphweighted,and>\killglyphIrespGectively*.L\renameglyph߀H\renameglyphweightedIThejdi erencejbGetweenthejcommands\renameglyphweightedand\renameglyphIisYthattheformerletsonespGecifytheYweightYexactlywhilethelatterwillusetheIvqalueK:ofK9theintegerrenameweightatv thetimeofc}'onversion.SuBychangingK:theIvqalueofrenameweightbGetweentwoconversions,onechangestheweightsusedforIallUUglyphrenamingsdeclaredusing\renameglyph.A1056S\begingroup A1057ap\catcode`\-=11A1058ap\gdef\renameglyph#1#2{A1059p2\x_cs\edef{slots-#2}{A1060~0\noexpand\rename_glyph{#1}\noexpand\i-renameweightA1061p2}A1062ap}A1063S\endgroupA1064S\def\renameglyphweighted#1#2#3{A1065ap\eval_expr{#3}A1066ap\x_cs\edef{slots-#2}{\noexpand\rename_glyph{#1}{\the\result}}A1067S}$\killglyph t\killglyphweightedITheAdi erencebGetween@theAcommands\killglyphweightedand\killglyphis IthattheformerletsonespGecifytheweightexactlywhilethelatterwillusetheIvqalue&of&theintegerkillweightaththetimeofc}'onversion.b3By&changingthevqalueIof;killweightbGetween;twoconversions,tonechangestheweightsusedforallglyphIkillingsUUdeclaredusing\killglyph.A1068S\begingroup A1069ap\catcode`\-=11A1070ap\gdef\killglyph#1{A1071p2\x_cs\def{slots-#1}{\kill_glyph\i-killweight}A1072ap}A1073S\endgroupA1074S\def\killglyphweighted#1#2{A1075ap\eval_expr{#2}A1076ap\x_cs\edef{slots-#1}{\noexpand\kill_glyph{\the\result}}A1077S}L\reglyphfontITheUUcommandb\reglyphfont{hdestinationfontظi}{hsour}'cefontظi}Ireads|thefont|metric lehsour}'ce̠fontظi.mtx|(whichmustbGe|transformable), hsour}'ce Ifontظi.pl,orNhsour}'cefonti.afmN(thepGossibilitiesaretriedinMthatorder)andwritesIoutafontmetric lehdestination0fontظi.mtxthatistheconverted(asdescribGedIabGove)UUformofthesourcefont.IFile:qficonv.dtx204 \soXhdestinationfontظiUUandhsour}'cefontظiUUmaynotbGeequal.A1078S\def\reglyphfont#1#2{ A1079ap\fromany{#2}A1080ap\ifisstr{afm-name}\thenA1081p2\reglyph_font{#1}{#2}A1082ap\elseA1083p2\fontinsterror{Reglyph}{Could~not~find~font~metrics~for~#2.}A1084~0\error_help_aA1085ap\fiA1086S}b\reglyph_fontIThisUUmacrodoGestheactualconversion.A1087S\def\reglyph_font#1#2{{A1088ap\open_out{\temp_prefix#1.mtx}A1089ap\out_line{\percent_char~Filename:~#1.mtx}A1090ap\out_line{\percent_char~Created~by:~tex~\jobname}A1091ap\out_line{\percent_char~Created~using:~\string\reglyphfont{#1}{#2}}A1092ap\out_line{}A1093ap\out_line{\percent_char~This~file~is~used~by~the~fontinst~package.}A1094ap\out_line{}A1095ap\out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.}A1096ap\out_line{}A1097ap\out_line{\string\relax}A1098ap\out_line{\string\metrics}A1099ap\out_line{}A1100ap\out_line{\string\needsfontinstversion{\fontinstversion}}A1101ap\out_line{}A1102ap\record_transform{#1}{\string\frommtx{#2}}{\string\reglyphfont}A1103p2\iftrueA1104ap\out_line{}A1105ap\reglyph_redefinitionsA1106ap\inputmtx{#2}A1107ap\out_line{}A1108ap\out_line{\endmetrics_text}A1109ap\close_out{Reglyphed~metrics}A1110S}} \reglyph_redefinitionsIThisrmacrorservesasahoGok.ZOnecanmakeadditionalcommandstransformable IbyUUappGendingsuitableredefenitionsofthemtothismacro.A1111S\def\reglyph_redefinitions{A1112ap\let\setint=\reglyph_setintA1113ap\let\setdim=\reglyph_setdimA1114ap\let\setstr=\reglyph_setstrA1115ap\let\setscaledrawglyph=\reglyph_setscaledrawglyphA1116ap\let\setscalednotglyph=\reglyph_setscaledrawglyphA1117ap\let\setkern=\reglyph_setkernA1118ap\let\setglyph=\reglyph_setglyphA1119ap\let\glyphpcc=\reglyph_glyphpccA1120ap\let\samesize=\reglyph_samesizeA1121ap\let\endsetglyph=\reglyph_endsetglyphA1122S} 6\reglyph_setint 6\reglyph_setdim 6\reglyph_setstrITheseUUarejustcopiedtothe legenerated.IFile:qficonv.dtx205 soA1123S\def\reglyph_setint#1#2{\out_line{\string\setint{#1}{#2}}} A1124S\def\reglyph_setdim#1#2{\out_line{\string\setdim{#1}{#2}}}A1125S\def\reglyph_setstr#1#2{\out_line{\string\setstr{#1}{#2}}}ޜ9\command_survivanceIThis^\count]registerstoresthesumoftheweightsassoGciated^withtheglyphs IconsideredUUsofar.qItisupGdatedby\rename_glyphand\kill_glyph. ލA1126S\newcount\command_survivanceXTheUmacro\glyphnameTholdsthenameoftheglyphcurrentlyunderconsider-$\glyphnameIation.qItUUisalteredby\rename_glyph.b\rename_glyph \kill_glyph ߍA1127S\def\rename_glyph#1{\def\glyphname{#1}\kill_glyph} A1128S\def\kill_glyph#1{\advance\command_survivance#1\x_relax}&\reglyph_setscaledrawglyphIThe\reglyph_setscaledrawglyphmacroisstraightforward.PWhetheritwritesIa\setscaledrawglyphӲora\setscalednotglyphcommanddepGendsonthe fthIparameter,UUjustlikewith\mtxtomtx_setscaledrawglyph. ލA1129S\def\reglyph_setscaledrawglyph#1#2#3#4#5#6#7#8#9{ A1130ap\command_survivance=0A1131ap\def\glyphname{#1}A1132ap\csnameslots-#1\endcsnameA1133ap\iftokeep\command_survivance\thenA1134p2\out_line{A1135~0\ifnum#5<\z@A1136]\string\setscalednotglyphA1137~0\elseA1138]\string\setscaledrawglyphA1139~0\fiA1140~0{\glyphname}{#2}{#3}{\number#4}{#5}{#6}{#7}{#8}{#9}A1141p2}A1142ap\fiA1143S}ޜf\reglyph_setkern ߍA1144S\def\reglyph_setkern#1#2#3{A1145ap\command_survivance=0A1146ap\def\glyphname{#1}A1147ap\csnameslots-#1\endcsnameA1148ap\let\a_macro=\glyphnameA1149ap\def\glyphname{#2}A1150ap\csnameslots-#2\endcsnameA1151ap\iftokeep\command_survivance\thenA1152p2\out_line{\string\setkern{\a_macro}{\glyphname}{#3}}A1153ap\fiA1154S}ޛ \reglyph_setglyph \off-\reglyph_setglyph \reglyph_glyphpcc \reglyph_samesize$߀H\reglyph_endsetglyphIInԏ\setglyph...:\endsetglyphԏconstructions(whichareԐwrittenforcompGositeIcharacters\OinAFM\M les),^thedecisionofwhethertowriteacommandornotdueItoglyphweightsisdoneonlyoncefortheentireconstruction.{ThismeansthatIthecommandsmustbGesaveduntilthe\endsetglyphwheretheresultis nallyIknown.qTheUUtokenlistregister\a_toksisusedforthispurpGose. ߍA1155S\def\reglyph_setglyph#1{IFile:qficonv.dtx206 DsoA1156ap\command_survivance=0 A1157ap\def\glyphname{#1}A1158ap\csnameslots-#1\endcsnameA1159ap\edef\a_macro{\noexpand\out_line{\string\setglyph{\glyphname}}}A1160ap\a_toks=\expandafter{\a_macro}A1161S}A1162S\x_cs\def{off-\string\reglyph_setglyph}#1{\gobble_glyph}i4A1163S\def\reglyph_glyphpcc#1#2#3{A1164ap\def\glyphname{#1}A1165ap\csnameslots-#1\endcsnameA1166ap\edef\a_macro{\noexpand\out_lline{A1167p2\string\glyphpcc{\glyphname}{#2}{#3}A1168ap}}A1169ap\a_toks=\expandafter{\the\expandafter\a_toks\a_macro}A1170S}i3A1171S\def\reglyph_samesize#1{A1172ap\def\glyphname{#1}A1173ap\csnameslots-#1\endcsnameA1174ap\edef\a_macro{\noexpand\out_lline{A1175p2\string\samesize{\glyphname}A1176ap}}A1177ap\a_toks=\expandafter{\the\expandafter\a_toks\a_macro}A1178S}A1179S\def\reglyph_endsetglyph{A1180ap\iftokeep\command_survivance\thenA1181p2\the\a_toksA1182p2\out_line{\string\endsetglyph}A1183ap\fiA1184ap\a_toks={}A1185S}A1186Sh=pkgKiOIThreeTcommonreglyphingsc9hemesuTIAsismensionedelsewhere,HgthemostcommonreglyphingopGerationistotakea Icapspandsmallcapsp fontproGducedbysomema8jorfoundryp andchangetheglyphInamessothattheyagreewiththeglyphnamesusedinexpGertfonts.32ThefollowingIcoGdeNcontainsMthemodifyingMreglyphingcommandstosetupthisreglyphing,2inItwoUUdi erentvqariants.XThe commands arecurrentlybasedonacomparisionofAdobGeGaramondISmall!zCaps!y&OldstyleFigures(padrc8aintheBerryscheme)withAdobGeGara-ImondRegularExpGert(padr8xintheBerryscheme),RsotheyshouldbGecorrectIforYaYfairamountofAdobGefontfamilies,[%butitisalsohighlyprobablethatthereIareClotsofDfontsoutthereforwhichitDdoGesn'tworkquiteright.0IncaseyoudoI ndsuchafont,)pleasewritetotellthefontinstmailinglistabGoutit|itwouldbGeIrathereasytoaddvqariousalternativeset-upschemes,}controlledbyswitches,~toItheseU les.LJustmakeTsure rst(bycheckingTthenewestversionofeqfontinst)thatItheUUalternativesettingyouhavefoundhasn'talreadybGeenincluded.XAsmentioned,therearetwodi erentreglyphingschemesthataresetupbyIthecoGdebelow|onehasdocstripguardhglyphs*i,theotherhasguardh!glyphsʸi|Ibut>theybGoth?changeSCnamestoExpert?names. 9Thedi erence>liesin-Istead&inwhatinformationiscopiedfrom%sourcefonttodestinationfont:yitheIFile:qficonv.dtx207 XsoIhglyphs*iUQvqariantcopieseverything,OwhereastheUPh!glyphsʸivqariantdoGesn'tcopy I\setrawglyphcommands,!w\setnotglyphcommands,\setscaledrawglyphcom-Imands,Y\setscalednotglyphYcommandsorX\setglyphconstructions.TheIh!glyphsʸiq vqariantalsoqsuppresseskernsbGetweentwoglyphsqthatdoGesn'tchangeIname.XTheX_motiveX^forhavingsuchX^acuriousset-upnaturallyliesinhowthe lesareImeanttobGeused.nIfyouhaveSCfonts,QEbutnoExpGertfonts,QFthenyoushouldIde nitelyusethehglyphs*iȲvqariant.IfontheotherhandyouhavebGothSCandIExpGert[fontsforZafamily*,thenitisworthconsideringusingZtheh!glyphsʸivqariantIinstead.TheQ observqationQthisisbasedonisthatwithinatriadofthecorrespGondingIregular, expGert,andSCfonts,almostallglyphspresentintheSCfontcanalsoIbGe,thereareA=theaccentsandacoupleofmiscellaneoussymbGols.kY*oumight IwantUUtocheckUUthesecarefully*,astheremightnotalwaysbGeadistinction.A1227Shreglyphletters8]fiA1228S\renameglyph{Acutesmall}{acute}A1229S\renameglyph{Brevesmall}{breve}A1230S\renameglyph{Caronsmall}{caron}A1231S\renameglyph{Cedillasmall}{cedilla}A1232S\renameglyph{Circumflexsmall}{circumflex}A1233S\renameglyph{Dieresissmall}{dieresis}A1234S\renameglyph{Dotaccentsmall}{dotaccent}A1235S\renameglyph{Gravesmall}{grave}A1236S\renameglyph{Hungarumlautsmall}{hungarumlaut}A1237S\renameglyph{Macronsmall}{macron}A1238S\renameglyph{Ogoneksmall}{ogonek}A1239S\renameglyph{Ringsmall}{ring}A1240S\renameglyph{Tildesmall}{tilde}A1241S\renameglyph{ampersandsmall}{ampersand}A1242S\renameglyph{centoldstyle}{cent}A1243S\renameglyph{dollaroldstyle}{dollar}XThereUUarealsoallthenon-Englishletters:A1244S\renameglyph{AEsmall}{ae}A1245S\renameglyph{Ethsmall}{eth}A1246S\renameglyph{Lslashsmall}{lslash}A1247S\renameglyph{Oslashsmall}{oslash}A1248S\renameglyph{OEsmall}{oe}A1249S\renameglyph{Thornsmall}{thorn}A1250S\renameglyph{Agravesmall}{agrave}A1251S\renameglyph{Egravesmall}{egrave}A1252S\renameglyph{Igravesmall}{igrave}A1253S\renameglyph{Ogravesmall}{ograve}A1254S\renameglyph{Ugravesmall}{ugrave}A1255S\renameglyph{Aacutesmall}{aacute}A1256S\renameglyph{Eacutesmall}{eacute}A1257S\renameglyph{Iacutesmall}{iacute}A1258S\renameglyph{Oacutesmall}{oacute}A1259S\renameglyph{Uacutesmall}{uacute}A1260S\renameglyph{Yacutesmall}{yacute}A1261S\renameglyph{Acircumflexsmall}{acircumflex}IFile:qficonv.dtx209 :soA1262S\renameglyph{Ecircumflexsmall}{ecircumflex} A1263S\renameglyph{Icircumflexsmall}{icircumflex}A1264S\renameglyph{Ocircumflexsmall}{ocircumflex}A1265S\renameglyph{Ucircumflexsmall}{ucircumflex}A1266S\renameglyph{Atildesmall}{atilde}A1267S\renameglyph{Ntildesmall}{ntilde}A1268S\renameglyph{Otildesmall}{otilde}A1269S\renameglyph{Adieresissmall}{adieresis}A1270S\renameglyph{Edieresissmall}{edieresis}A1271S\renameglyph{Idieresissmall}{idieresis}A1272S\renameglyph{Odieresissmall}{odieresis}A1273S\renameglyph{Ydieresissmall}{ydieresis}A1274S\renameglyph{Udieresissmall}{udieresis}A1275S\renameglyph{Aringsmall}{aring}A1276S\renameglyph{Ccedillasmall}{ccedilla}A1277S\renameglyph{Scaronsmall}{scaron}A1278S\renameglyph{Zcaronsmall}{zcaron}XThefollowingfourglyphsaren'treallynecessary*,/sincetheyareusually IidenticalUUtoanotherglyphortotheirfakes.A1279S\killglyph{dotlessi}A1280ShglyphsiA1281S\renameglyph{FIsmall}{fi}A1282S\renameglyph{FLsmall}{fl}A1283S\renameglyph{SSsmall}{germandbls}A1284Sh=glyphsiA1285Sh!glyphsdiA1286S\killglyph{fi}A1287S\killglyph{fl}A1288S\killglyph{germandbls}A1289Sh=!glyphsdiA1290Sh=reglyphletters8]fiXThei1h!glyphsʸisettingshavei1noneedfor\setrawglyph,n(\setscaledrawglyph,Ior\setglyphcommands,andnoneedforthekernsbGetweencapitalseither,sinceItheseRareRalreadyknownfromtheregularvqariant.pNotethatitispGointlesstosayI\offmtxcommand\setrawglyphW(asofv1.913since\setrawglyphisnowsimplyIsyntacticUUsugarfortheequivqalent\setscaledrawglyph.A1291Sh(reglyphletters8jreglyph gures)&!glyphsMiA1292S\offmtxcommand\setscaledrawglyphA1293S\offmtxcommand\setglyphA1294S\resetcommand\iftokeep#1\then{\ifnum0<#1}A1295Sh=(reglyphletters8jreglyph gures)&!glyphsMiIFile:qficonv.dtx210 ^soIFilefffIfiltfam.dtxꨍI18ifdInstallingffLatinfamiliesL\latinfamilyITheUUmacro:̍b\latinfamily{hfamily}i}{hc}'ommands!i}IinstallsUUaLatinfontfamily*.捍Ls1ShpkgKi Ls2S\def\latinfamily#1#2{{Ls3ap\edef\a_macro{#1}Ls4ap\expandafter\parse_family\a_macroLs5p2\empty_command\empty_command\end_parse_familyLs6ap\installfontsLs7p2\if_file_exists{\raw_encoding.mtx}\thenLs8~0\installfamily{\raw_encoding}{\latex_family}{#2}Ls9p2\fiI10p2\installfamily{OT1}{\latex_family}{#2}I11p2\installfamily{T1}{\latex_family}{#2}I12Shtextcomp(iI13p8\installfamily{TS1}{\latex_family}{#2}I14Sh=textcomp(iI15p2\latin_weightsI16ap\endinstallfontsI17S}}ٍb\parse_family L\font_family b\font_variant L\raw_variant$ \latex_variantI\parse_family?FAMILY\end_parse_family XIntializes=_\latex_familytoFAMILY,\font_familyto rstthreecharactersIofFAMILY,\font_variantand\raw_varianttofourthand fthcharacter(ifIpresent).XSPQRn02/95:0Ifn thefourthparameterisxor9,t7thenitsanexpGertindication,InotGaFvqariant. Soinitialyset\raw_variantto#4,CbutunsetitiftheexpGerttestIsucceeds.qWhenUU#4isusedforarealvqariant,itpassesthrough.XSPQR05/95:IfitisVanexpGertfont,thenthevqariantnessisexpressedbytheIencoGding,UUnotavqariantletter,sounset\font_variant.XUVm06/98:hAdded\if_oldstyle_coGdefromAlan'sv1.511bGeta.:IfthefourthIparameterUUis9,treatitasifjwasgiven.XNote thatinsteadofusing\setcommand\digit,wenowuseseparateencoGdingI lesUUforT1j.etx,etc.I18S\def\parse_family#1#2#3#4#5\end_parse_family{ I19ap\gdef\font_family{#1#2#3}I20ap\gdef\font_variant{#4#5}I21ap\gdef\raw_variant{#4#5}I22ap\gdef\latex_family{#1#2#3#4#5}I23ap\_expert_falseI24ap\_oldstyle_falseI25ap\ifx#4xI26p2\_expert_trueI27p2\gdef\raw_variant{#5}IFile:qfiltfam.dtx211 MsoI28p2\gdef\font_variant{#5} I29p2%\setcommand\digit##1{##1}I30ap\else\ifx#4jI31p2\_expert_trueI32p2\_oldstyle_trueI33p2\gdef\raw_variant{#5}I34p2\gdef\font_variant{#5}I35p2%\setcommand\digit##1{##1oldstyle}I36ap\else\ifx#49I37p2\gdef\latex_family{#1#2#3j#5}I38p2\_expert_trueI39p2\_oldstyle_trueI40p2\gdef\raw_variant{#5}I41p2\gdef\font_variant{#5}I42p2%\setcommand\digit##1{##1oldstyle}I43ap\elseI44p2\_expert_falseI45p2\_oldstyle_falseI46p2%\setcommand\digit##1{##1}I47ap\fi\fi\fiI48ShdebugҜiI49as\if_oldstyle_I50as\immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(oldstyle)}I51as\else\if_expert_I52as\immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(expert)}I53as\elseI54as\immediate\write16{INFO>~parse~family~<#1#2#3><#4#5>}I55as\fi\fiI56Sh=debugҜiI57S} \if_expert_ b\if_oldstyle_I58S\newif\if_expert_I59S\newif\if_oldstyle_6I18.1nPro`cessingalistofweights,widthsandshapesuTb\latin_weight L\font_weight b\latex_weightI\latin_weight{FONTWEIGHT}{LATEXWEIGHT}I60S\def\latin_weight#1#2{I61ap\gdef\font_weight{#1}%I62ap\gdef\latex_weight{#2}%I63ap\latin_widthsI64S}L\latin_width \font_width L\latex_widthI\latin_width{FONTWIDTH}{LATEXWIDTH}I65S\def\latin_width#1#2{I66ap\gdef\font_width{#1}I67ap\gdef\latex_width{#2}I68ap\latin_shapesI69S}L\latin_shape \font_shape $\raw_shape 6\encoding_shape$ L\latex_shape0 t\encoding_switchesI\latin_shape{FONTSHAPE}{RAWSHAPE}{ENCODINGSHAPE}{LATEXSHAPE}{SWITCHES}IFile:qfiltfam.dtx212 棠soXCalls8\fake_width_WIDTH8and\fake_shape_SHAPEtogeneratean8r-reencoGded I.mtxUU le.qIfsuccessful,calls\latin_encodings.XUV'~06/98: Added'a fth'argumentSWITCHES,whichmaybGe'usedtosetI\if_textcomp_UUbGeforeitisevqaluatedin\latin_encodings.I70S\def\latin_shape#1#2#3#4#5{ I71ap\gdef\font_shape{#1}I72ap\gdef\raw_shape{#2}I73ap\gdef\encoding_shape{#3}I74ap\if_oldstyle_I75p2\gdef\encoding_shape{#3\oldstyle_shape}I76ap\fiI77ap\gdef\latex_shape{#4}I78ap\gdef\encoding_switches{#5}I79ShdebugҜiI80as\immediate\write16{I81p8INFO>~to~make~LaTeX~font~shape~<\latex_family,I82p8\latex_weight,\latex_shape,\latex_width>~seek~I83p8\font_family\font_weight\raw_shapeI84~0\raw_variant\raw_encoding\font_width.mtx}I85Sh=debugҜiI86ap\csnamefake_width_\font_width\endcsnameI87ap\csnamefake_shape_\raw_shape\endcsnameI88ap\if_file_exists{I89p2\font_family\font_weight\raw_shapeI90~0\raw_variant\raw_encoding\font_width.mtxI91ap}\thenI92p2\latin_encodingsI93ap\fiI94S}6I18.2nFakingfontshap`esuTI(CK)BchangedufontfakingcoGde;basedonSPQR'scode(stillinvthis le).'IBam Inotj|surej}thatknowwhatIj5amdoinghere;let'shopGeIwon'tj}bGecaught.=AlsoIchanged:cOrderof\font_widthand\font_encodinginMANYMplaces.SAlsoIadded|tests|whichpreventmultiple|callstothesamefontfakingroutine.(SeemsItobGenecessaryinsomecasesandcan'thurt.)U|(ASAJ)IthinkCKknowsmoreIabGoutUUwhathe'sdoingthanhe'slettingon.L\fake_shape_ICheckifan8a-encoGded.afm leexistsforcurrentcombinationoffontattributes,Iand,Vifso,call\fake_shape_raw_encoding.WF*orexpGertfonts,alsocheckifan8x-IencoGdedJ.afmJ leexists,andcall\fake_shape_expert_encoding,ifappropGoriate.XUV,e06/98:~Cutdownelengthye\fake_shape_routineintoseveralesubroutinesI\fake_shape_raw_encodingͲandoptionally\fake_shape_expert_encodingandI\fake_shape_oldstyle_encoding.XUV,UU06/98:qAddedexpGerimentalcodetoinstallOsForSC&OsFfonts.I95S\def\fake_shape_{ I96ap\if_file_exists{I97p2\font_family\font_weight\raw_shape\raw_variantI98~0\adobe_encoding\font_width.afmI99ap}\thenE100p2\fake_shape_raw_encodingIFile:qfiltfam.dtx213 soE101ap\fi E102ap\if_expert_E103p2\if_file_exists{E104~0\font_family\font_weight\raw_shape\raw_variantE105]\expert_encoding\font_width.afmE106p2}\thenE107~0\fake_shape_expert_encodingE108p2\fiE109ap\fiE110Sholdst9yle!riE111as\if_oldstyle_E112p8\gdef\oldstyle_variant{\oldstyle_shape}E113p8\if_file_exists{E114~0\font_family\font_weight\raw_shape\oldstyle_variantE115]\adobe_encoding\font_width.afmE116p8}\thenE117~0\fake_shape_oldstyle_encodingE118p8\elseE119~0\gdef\oldstyle_variant{\caps_shape}E120~0\if_file_exists{E121]\font_family\font_weight\raw_shape\oldstyle_variantE122\adobe_encoding\font_width.afmE123~0}\thenE124]\fake_shape_oldstyle_encodingE125~0\fiE126p8\fiE127as\fiE128Sh=oldst9yle!riE129S}I̙\fake_shape_raw_encodingICalledUUfrom\fake_shape_ifan8a-encoGded.afm lewasfound.qInvokesmb\transformfont{8r} l{\reencodefont{8r}{\fromafm{8a}}}ItoUUgeneratean8r-reencoGded.mtx le(andaraw.pl le),followedbyb\installrawfont{8r}{8r,8r}{8r}...ItoUUinstallaligfull.pl le.ۍE130S\def\fake_shape_raw_encoding{ E131ap\if_file_exists{E132p2\font_family\font_weight\raw_shape\raw_variantE133~0\raw_encoding\font_width.mtxE134ap}\then%noactionrequiredE135ap\elseE136ShdebugҜiE137p8\immediate\write16{E138~0INFO>~run~\string\transformfont\space\spaceE139~0<\font_family\font_weight\raw_shape\raw_variantE140]\raw_encoding\font_width>~from~E141~0<\font_family\font_weight\raw_shape\raw_variantE142]\adobe_encoding\font_width>E143p8}E144Sh=debugҜiIFile:qfiltfam.dtx214 soE145p2\transformfont{ E146~0\font_family\font_weight\raw_shape\raw_variantE147]\raw_encoding\font_widthE148p2}{E149~0\reencodefont{\raw_encoding}{E150]\fromafm{E151x\font_family\font_weight\raw_shape\raw_variantE152:\adobe_encoding\font_widthE153]}E154~0}E155p2}E156p2\if_file_exists{\raw_encoding.mtx}\thenE157ShdebugҜiE158~0\immediate\write16{E159]INFO>~run~\string\installrawfont\spaceE160]<\font_family\font_weight\font_shape\raw_variantE161\raw_encoding\font_width>E162]<\font_family\font_weight\raw_shape\raw_variantE163\raw_encoding\font_width,E164Y\raw_encoding>E165]<\raw_encoding>E166]<\raw_encoding>E167]<\latex_family>E168]<\latex_weight\latex_width>E169]<\latex_shape>}E170Sh=debugҜiE171~0\installrawfont{E172]\font_family\font_weight\raw_shape\raw_variantE173x\raw_encoding\font_widthE174~0}{\font_family\font_weight\raw_shape\raw_variantE175x\raw_encoding\font_width,E176]\raw_encodingE177~0}{\raw_encodingE178~0}{\raw_encodingE179~0}{\latex_familyE180~0}{\latex_weight\latex_widthE181~0}{\latex_shapeE182~0}{}E183p2\fiE184ap\fiE185S}m.\fake_shape_expert_encodingICalledUUfrom\fake_shape_ifan8x-encoGded.afm lewasfound.qInvokesb\fromafm{8x}ItoUUgeneratean8x-encoGded.mtx le(andaraw.pl le).E186S\def\fake_shape_expert_encoding{ E187ap\if_file_exists{E188p2\font_family\font_weight\raw_shape\raw_variantE189~0\expert_encoding\font_width.mtxE190ap}\then%noactionrequiredE191ap\elseE192p2\fromafm{IFile:qfiltfam.dtx215 soE193~0\font_family\font_weight\raw_shape\raw_variant E194]\expert_encoding\font_widthE195p2}E196ap\fiE197S}UU\fake_shape_oldstyle_encodingICalledYfrom\fake_shape_ifanXOsFMorSC&OsFLvqariantofan8a-encoGded.afm I leUUwasfound.qInvokesrb\transformfont{j8r}l{\reencodefont{8r}{\fromafm{j8a}}}ItoUUgeneratean8r-reencoGded.mtx le(andaraw.pl le).9E198Sholdst9yle!ri E199S\def\fake_shape_oldstyle_encoding{E200as\if_file_exists{E201p8\font_family\font_weight\raw_shape\oldstyle_variantE202~0\adobe_encoding\font_width.mtxE203as}\then%noactionrequiredE204as\elseE205ShdebugҜiE206p8\immediate\write16{E207~0INFO>~run~\string\transformfont\space\spaceE208~0<\font_family\font_weight\raw_shape\oldstyle_variantE209]\raw_encoding\font_width>~from~E210~0<\font_family\font_weight\raw_shape\oldstyle_variantE211]\adobe_encoding\font_width>E212p8}E213Sh=debugҜiE214p8\transformfont{E215~0\font_family\font_weight\raw_shape\oldstyle_variantE216]\raw_encoding\font_widthE217p8}{E218~0\reencodefont{\raw_encoding}{E219]\fromafm{E220\font_family\font_weight\raw_shape\oldstyle_variantE221L\adobe_encoding\font_widthE222]}E223~0}E224p8}E225as\fiE226S}E227Sh=oldst9yle!riUUb\fake_shape_cICheckifan8a-encoGded.afm leexistsforthesmallcapsshapGe. Ifso,call I\fake_shape_togeneratean8r-reencoGdedMTX leandtoinstallaligfull.plI le.YIf not,reset\raw_shapetothedefaultshapGeand\encoding_shapetosmallIcapsUUbGeforecalling\fake_shape_toinstallafakedsmallcapsfont.E228S\def\fake_shape_c{ E229ap\if_file_exists{E230p2\font_family\font_weight\raw_shape\raw_variantE231~0\adobe_encoding\font_width.afmE232ap}\thenE233p2\fake_shape_IFile:qfiltfam.dtx216 soE234ap\else E235p2%Ifrealsmallcapsfontdoesn'texist,fakeitfromtheroman.E236p2\gdef\raw_shape{}E237p2\if_oldstyle_E238~0\gdef\encoding_shape{cj}E239p2\elseE240~0\gdef\encoding_shape{c}E241p2\fiE242p2\fake_shape_E243ap\fiE244S}b\fake_shape_oICheckifan8a-encoGded.afm leexistsfortheobliqueshapGe. Ifso,ɍcall I\fake_shape_togeneratean8r-reencoGdedMTX leandtoinstallaligfull.plI le.qIfUUnot,callmacrostofakeaobliquefonts.E245S\def\fake_shape_o{ E246ap\if_file_exists{E247p2\font_family\font_weight\raw_shape\raw_variantE248~0\adobe_encoding\font_width.afmE249ap}\thenE250p2\fake_shape_E251ap\elseE252p2\fake_shape_o_raw_encodingE253kJ\if_expert_E254p2\fake_shape_o_expert_encodingE255kJ\fiE256Sholdst9yle!riE257kJ\if_oldstyle_E258p8\fake_shape_o_oldstyle_encodingE259kJ\fiE260Sh=oldst9yle!riE261ap\fiE262S}&\fake_shape_o_raw_encodingICalledUUfrom\fake_shape_oiftheobliqueshapGeneedstobefaked.qInvokesb\transformfont{o8r} l{\slantfont{SLANT}{\frommtx{8r}}}ItoUUgeneratean8r-reencoGded.mtx le(andaraw.pl le),followedbyb\installrawfont{o8r}{o8r,8r}{8r}...ItoUUinstallaligfull.pl le.E263S\def\fake_shape_o_raw_encoding{ E264ap\if_file_exists{E265p2\font_family\font_weight\raw_variantE266~0\raw_encoding\font_width.mtxE267ap}\thenE268p2\if_file_exists{E269~0\font_family\font_weight\font_shape\raw_variantE270]\raw_encoding\font_width.mtxE271p2}\then%noactionrequiredE272p2\elseIFile:qfiltfam.dtx217 zsoE273ShdebugҜi E274~0\immediate\write16{E275]INFO>~run~\string\transformfont\space\spaceE276]<\font_family\font_weight\font_shape\raw_variantE277\raw_encoding\font_width>~from~E278]<\font_family\font_weight\raw_variantE279\raw_encoding\font_width>~(faking~oblique)E280~0}E281Sh=debugҜiE282~0%%%WARNING:famtool.plreliesonthismessageformat!!!E283~0\immediate\write16{E284]Faking~oblique~font~E285]\font_family\font_weight\font_shape\raw_variantE286x\raw_encoding\font_widthE287]\spacefrom~E288]\font_family\font_weight\raw_variantE289x\raw_encoding\font_widthE290~0}E291~0\transformfont{E292]\font_family\font_weight\font_shape\raw_variantE293x\raw_encoding\font_widthE294~0}{E295]\slantfont{\SlantAmount}{E296x\frommtx{E297:\font_family\font_weight\raw_variantE298\raw_encoding\font_widthE299x}E300]}E301~0}E302~0\if_file_exists{\raw_encoding.mtx}\thenE303ShdebugҜiE304]\immediate\write16{E305INFO>~run~\string\installrawfont\spaceE306<\font_family\font_weight\font_shape\raw_variantE307L\raw_encoding\font_width>E308<\font_family\font_weight\font_shape\raw_variantE309L\raw_encoding\font_width,E310D\raw_encoding>E311<\raw_encoding>E312<\raw_encoding>E313<\latex_family>E314<\latex_weight\latex_width>E315<\latex_shape>}E316Sh=debugҜiE317]\installrawfont{E318x\font_family\font_weight\font_shape\raw_variantE319:\raw_encoding\font_widthE320]}{\font_family\font_weight\font_shape\raw_variantE321:\raw_encoding\font_width,E322x\raw_encodingE323]}{\raw_encodingE324]}{\raw_encodingE325]}{\latex_familyE326]}{\latex_weight\latex_widthIFile:qfiltfam.dtx218 NsoE327]}{\latex_shape E328]}{}E329~0\fiE330p2\fiE331ap\fiE332S}bv\fake_shape_o_expert_encodingICalledUUfrom\fake_shape_oiftheobliqueshapGeneedstobefaked.qInvokes؞b\transformfont{o8x} l{\slantfont{SLANT}{\frommtx{8x}}}؝ItoUUgeneratean8x-reencoGded.mtx le(andaraw.pl le).OE333S\def\fake_shape_o_expert_encoding{E334ap\if_file_exists{E335p2\font_family\font_weight\raw_variantE336~0\expert_encoding\font_width.mtxE337ap}\thenE338p2\if_file_exists{E339~0\font_family\font_weight\font_shape\raw_variantE340]\expert_encoding\font_width.mtxE341p2}\then%noactionrequiredE342p2\elseE343ShdebugҜiE344~0\immediate\write16{E345]INFO>~run~\string\transformfont\space\spaceE346]<\font_family\font_weight\font_shape\raw_variantE347\expert_encoding\font_width>~from~E348]<\font_family\font_weight\raw_variantE349\expert_encoding\font_width>~(faking~oblique)E350~0}E351Sh=debugҜiE352~0%%%WARNING:famtool.plreliesonthismessageformat!!!E353~0\immediate\write16{E354]Faking~oblique~font~E355]\font_family\font_weight\font_shape\raw_variantE356x\expert_encoding\font_widthE357]\spacefrom~E358]\font_family\font_weight\raw_variantE359x\expert_encoding\font_widthE360~0}E361~0\transformfont{E362]\font_family\font_weight\font_shape\raw_variantE363x\expert_encoding\font_widthE364~0}{E365]\slantfont{\SlantAmount}{E366x\frommtx{E367:\font_family\font_weight\raw_variantE368\expert_encoding\font_widthE369x}E370]}E371~0}E372p2\fiE373ap\fiE374S}IFile:qfiltfam.dtx219 )so\fake_shape_o_oldstyle_encodingICalledUUfrom\fake_shape_oiftheobliqueshapGeneedstobefaked.qInvokesvb\transformfont{oj8r} l{\slantfont{SLANT}{\frommtx{j8r}}}uItoUUgeneratean8r-reencoGded.mtx le(andaraw.pl le).W;E375Sholdst9yle!ri E376S\def\fake_shape_o_oldstyle_encoding{E377as\if_file_exists{E378p8\font_family\font_weight\oldstyle_variantE379~0\raw_encoding\font_width.mtxE380as}\thenE381p8\if_file_exists{E382~0\font_family\font_weight\font_shape\oldstyle_variantE383]\raw_encoding\font_width.mtxE384p8}\then%noactionrequiredE385p8\elseE386ShdebugҜiE387~0\immediate\write16{E388]INFO>~run~\string\transformfont\space\spaceE389]<\font_family\font_weight\font_shape\oldstyle_variantE390\raw_encoding\font_width>~from~E391]<\font_family\font_weight\oldstyle_variantE392\raw_encoding\font_width>~(faking~oblique)E393~0}E394Sh=debugҜiE395~0%%%WARNING:famtool.plreliesonthismessageformat!!!E396~0\immediate\write16{E397]Faking~oblique~font~E398]\font_family\font_weight\font_shape\oldstyle_variantE399\raw_encoding\font_widthE400]\spacefrom~E401]\font_family\font_weight\oldstyle_variantE402\raw_encoding\font_widthE403~0}E404~0\transformfont{E405]\font_family\font_weight\font_shape\oldstyle_variantE406\raw_encoding\font_widthE407~0}{E408]\slantfont{\SlantAmount}{E409\frommtx{E410L\font_family\font_weight\oldstyle_variantE411\raw_encoding\font_widthE412}E413]}E414~0}E415p8\fiE416as\fiE417S}E418Sh=oldst9yle!ri؍b\fake_shape_iICall_\fake_shape__togeneratean8r-reencoGded.mtx leandaligfull.pl le,bifIaLcorrespGondingK8a-encoded.afmK leexists.BOtherwise,donothing,sinceKanitalicIshapGeUUcan'tbefaked.IFile:qfiltfam.dtx220 2soE419S\let\fake_shape_i\fake_shape_ s,%Wemustdothisagain!6I18.3nFakingfontwidthsuTf\if_fake_narrow_E420S\newif\if_fake_narrow_ E421S\_fake_narrow_false \fakenarrowI\fakenarrow{WIDTH} XSets theexpansionfactorusedtogeneratefakednarrowfonts.Ifitisn'tset,IdoUUnotattempttoinstallfakednarrowfonts.E422S\def\fakenarrow#1{ E423ap\_fake_narrow_trueE424ap\gdef\fake_narrow_width{#1}E425S}L\fake_width_IDoUUnothingforthedefaultwidthorthecondensedwidth.E426S\def\fake_width_{}E427S\def\fake_width_c{}b\fake_width_nIIfwearefakingnarrowfonts,Xcheckifan8a-encoGded.afm leexistsforthe IcurrentҾshapGeҽinnarrowҽwidth,andifnotcall\fake_shape_n_raw_encodingandI\fake_shape_n_expert_encoding.E428S\def\fake_width_n{ E429ap\if_fake_narrow_E430p2\if_file_exists{E431~0\font_family\font_weight\raw_shape\raw_variantE432]\adobe_encoding\font_width.afmE433p2}\then%noactionrequiredE434p2\elseE435~0\fake_width_n_raw_encodingE436yw^\if_expert_E437~0\fake_width_n_expert_encodingE438yw^\fiE439p2\fiE440ap\fiE441S}&\fake_width_n_raw_encodingICalledUUfrom\fake_width_nifthenarrowwidthneedstobGefaked.qInvokesb\transformfont{8rn} l{\xscalefont{WIDTH}{\frommtx{8r}}}ItoUUgeneratean8r-encoGded.mtx leforafakednarrowfont,followedbyb\installrawfont{8rn}{8rn,8r}{8r}...ItoUUinstallaligfull.pl le.E442S\def\fake_width_n_raw_encoding{ E443ap\if_file_exists{E444p2\font_family\font_weight\font_shape\raw_variantE445~0\raw_encoding.mtxE446ap}\thenIFile:qfiltfam.dtx221 <soE447p2\if_file_exists{ E448~0\font_family\font_weight\font_shape\raw_variantE449]\raw_encoding\font_width.mtxE450p2}\then%noactionrequiredE451p2\elseE452ShdebugҜiE453~0\immediate\write16{E454]INFO>~run~\string\transformfont\space\spaceE455]<\font_family\font_weight\font_shape\raw_variantE456\raw_encoding\font_width>~from~E457]<\font_family\font_weight\font_shape\raw_variantE458\raw_encoding>~(faking~narrow)E459~0}E460Sh=debugҜiE461~0%%%WARNING:famtool.plreliesonthismessageformat!!!E462~0\immediate\write16{E463]Faking~narrow~font~E464]\font_family\font_weight\font_shape\raw_variantE465x\raw_encoding\font_widthE466]\spacefrom~E467]\font_family\font_weight\font_shape\raw_variantE468x\raw_encodingE469~0}E470~0\transformfont{E471]\font_family\font_weight\font_shape\raw_variantE472x\raw_encoding\font_widthE473~0}{E474]\xscalefont{\fake_narrow_width}{E475x\frommtx{E476:\font_family\font_weight\font_shape\raw_variantE477\raw_encodingE478x}E479]}E480~0}E481~0\if_file_exists{\raw_encoding.mtx}\thenE482ShdebugҜiE483]\immediate\write16{E484INFO>~run~\string\installrawfont\spaceE485<\font_family\font_weight\font_shape\raw_variantE486L\raw_encoding\font_width>E487<\font_family\font_weight\font_shape\raw_variantE488L\raw_encoding\font_width,E489D\raw_encoding>E490<\raw_encoding>E491<\raw_encoding>E492<\latex_family>E493<\latex_weight\latex_width>E494<\latex_shape>}E495Sh=debugҜiE496]\installrawfont{E497x\font_family\font_weight\font_shape\raw_variantE498:\raw_encoding\font_widthE499]}{\font_family\font_weight\font_shape\raw_variantE500:\raw_encoding\font_width,IFile:qfiltfam.dtx222 EؠsoE501x\raw_encoding E502]}{\raw_encodingE503]}{\raw_encodingE504]}{\latex_familyE505]}{\latex_weight\latex_widthE506]}{\latex_shapeE507]}{}E508~0\fiE509p2\fiE510ap\fiE511S}\fake_width_n_expert_encodingICalledUUfrom\fake_width_nifthenarrowwidthneedstobGefaked.qInvokesb\transformfont{8xn} l{\xscalefont{WIDTH}{\frommtx{8x}}}ItoUUgeneratean8x-encoGded.mtx leforafakednarrowfont.E512S\def\fake_width_n_expert_encoding{ E513ap\if_file_exists{E514p2\font_family\font_weight\font_shape\raw_variantE515~0\expert_encoding.mtxE516ap}\thenE517p2\if_file_exists{E518~0\font_family\font_weight\font_shape\raw_variantE519]\expert_encoding\font_width.mtxE520p2}\then%noactionrequiredE521p2\elseE522ShdebugҜiE523~0\immediate\write16{E524]INFO>~run~\string\transformfont\space\spaceE525]<\font_family\font_weight\font_shape\raw_variantE526\expert_encoding\font_width>~from~E527]<\font_family\font_weight\font_shape\raw_variantE528\expert_encoding>~(faking~narrow)E529~0}E530Sh=debugҜiE531~0%%%WARNING:famtool.plreliesonthismessageformat!!!E532~0\immediate\write16{E533]Faking~narrow~font~E534]\font_family\font_weight\font_shape\raw_variantE535x\expert_encoding\font_widthE536]\spacefrom~E537]\font_family\font_weight\font_shape\raw_variantE538x\expert_encodingE539~0}E540~0\transformfont{E541]\font_family\font_weight\font_shape\raw_variantE542x\expert_encoding\font_widthE543~0}{E544]\xscalefont{\fake_narrow_width}{E545x\frommtx{E546:\font_family\font_weight\font_shape\raw_variantE547\expert_encodingIFile:qfiltfam.dtx223 OsoE548x} E549]}E550~0}E551p2\fiE552ap\fiE553S}6I18.4nInstallingreenco`dedfontsuT 6\latin_encoding \font_encoding 6\latex_encoding $\latex_mtxI\latin_encoding{FONTENC}{EXPERTISED-ENC}{OLDSTYLE-ENC}8{LATEXENC}{LATEXMTX} XIfZthisYisanexpGertisedfamilyEXPERTISED-ENCIisusedinsteadofFONTENC.IfIthisisanexpGertisedfamilywitholdstyledigitsOLDSTYLE-ENCisusedinsteadofIEXPERTISED-ENC.XUV3Y06/98:.Added3coGdeforoldstyle3encodingsfromAlan'sv1.511. FTheI\font_encodingUUischangedwhen\if_oldstyle_istrue.XUVB06/98:M AddedBanontherparameterfortheBdefaultmetrics le(whichisIusuallyUUeitherlatin.mtxortextcomp.mtx).XUVUU06/98:qAddedexpGerimentalcodeforOsForSC&OsFfonts.E554S\def\latin_encoding#1#2#3#4#5{ E555ap\gdef\latex_encoding{#4}E556ap\gdef\latex_mtx{#5}E557ap\if_oldstyle_E558p2\gdef\font_encoding{#3}E559ap\else\if_expert_E560p2\gdef\font_encoding{#2}E561ap\elseE562p2\gdef\font_encoding{#1}E563ap\fi\fiE564ap\gdef\expert_font{}E565ap\gdef\oldstyle_font{}E566ap\if_expert_E567p2\if_file_exists{E568~0\font_family\font_weight\raw_shape\raw_variantE569]\expert_encoding\font_width.mtxE570p2}\thenE571~0\gdef\expert_font{E572]\font_family\font_weight\raw_shape\raw_variantE573x\expert_encoding\font_width,E574~0}E575p2\fiE576ap\fiE577Sholdst9yle!riE578as\if_oldstyle_E579p8\if_file_exists{E580~0\font_family\font_weight\raw_shape\oldstyle_variantE581]\raw_variant\raw_encoding\font_width.mtxE582p8}\thenE583~0\gdef\oldstyle_font{E584]unsetnum,E585]\font_family\font_weight\raw_shape\oldstyle_variantE586\raw_variant\raw_encoding\font_width,E587]resetosf,E588~0}IFile:qfiltfam.dtx224 XߠsoE589p8\fi E590as\fiE591Sh=oldst9yle!riE592ShdebugҜiE593as\immediate\write16{E594p8INFO>~run~\string\installfont\spaceE595p8<\font_family\font_weight\font_shape\font_variantE596~0\font_encoding\font_width>E597p8<\font_family\font_weight\raw_shape\raw_variantE598~0\raw_encoding\font_width,E599p8\if_oldstyle_E600t\ifx\raw_shape\caps_shapeE601~0resetosf,E602t\fiE603p8\fiE604p8\expert_fontE605p8\oldstyle_fontE606p8\latex_mtx>E607p8<\latex_encoding\encoding_shape>E608p8<\latex_encoding>E609p8<\latex_family>E610p8<\latex_weight\latex_width>E611p8<\latex_shape>}E612Sh=debugҜiE613ap\installfont{E614p2\font_family\font_weight\font_shape\font_variantE615~0\font_encoding\font_widthE616ap}{E617p2\font_family\font_weight\raw_shape\raw_variantE618~0\raw_encoding\font_width,E619p2\if_oldstyle_E620t\ifx\raw_shape\caps_shapeE621~0resetosf,E622t\fiE623p2\fiE624p2\expert_fontE625p2\oldstyle_fontE626p2\latex_mtxE627ap}{E628p2\latex_encoding\encoding_shapeE629ap}{E630p2\latex_encodingE631ap}{E632p2\latex_familyE633ap}{E634p2\latex_weight\latex_widthE635ap}{E636p2\latex_shapeE637ap}{}E638S}IFile:qfiltfam.dtx225 bsoI18.5nDefaultweights,widthsandshap`esfAmL͉fffdF*ontname:qweight.mapgNFSS:UUL雍QATKß'E-XComp}'anion,p.190ff󡍍a?ThinUUHairlinegulbUltraUULight j?ExtraLightgelbExtraUULightl?LightglbLightr?RegularUURomangmbMediumk?BoGokgmbMediumm?Mediumgmbb(was:qm)d?Demigdbb(was:qsb)s?SemibGoldgsbbSemibGoldb?BoldgbbBoldh?HeavyUUHeavyfacegebb(wasUUmissing)c?Blackgebb(wasUUmissing)x?ExtraBoldUUExtraBlackgebbExtraUUBoldu?UltraUUUltraBlackgubbUltraUUBoldp?Posterb(stillUUmissing)ff󎎎j\latin_weightsIEachjcallto\latin_weightmapsaF*ontnameweightcoGde(\font_weight)toa IL5ffA͉TU>'ExXSweightRcoGde(\latex_weight).ONon-existingweightsareignoredR(orsubsti-ItutedUUwhenthe.fd lesarewrittenoutby\endinstallfont).XThe'standard(vqaluesaregiveninthetable.>TheymaybGechanged,butyou'dIbGetterUUknowwhatyou'redoing.XUV,M~04/98:mChangedMtheproGcessingorder:mDothemostcommonshapGes rst.IAddednewmappingsforcandh,!changedmappingformtonewlyinventedL5ffA͉TU>'ExXIweightUUmb.E639S\def\latin_weights{ E640ap\latin_weight{r}{m}E641ap\latin_weight{k}{m}E642ap\latin_weight{b}{b}E643ap\latin_weight{s}{sb}E644ap\latin_weight{d}{db}%was{d}{sb},SPQRchangedE645ap\latin_weight{m}{mb}%was{m}{m}, s,UVchangedE646ap\latin_weight{c}{eb}%UVaddedE647ap\latin_weight{h}{eb}%UVaddedE648ap\latin_weight{x}{eb}E649ap\latin_weight{u}{ub}E650ap\latin_weight{l}{l}E651ap%\latin_weight{j}{el}E652ap%\latin_weight{a}{ul}%UVaddedE653S}IFile:qfiltfam.dtx226 iso e5kL͉ff**fdF*ontname:qwidth.map㞲NFSS:UUL雍QATKß'E-XComp}'anion,p.190ff**t?Thin{c{ o?UltraUUCondenseduccUltraUUCondensedu?UltraUUCompresseducc.q.q?ExtraUUCompressedeccExtraUUCondensedc?CondensedccCondensedp?Compressedcc.q.n?Narrowcc.q.{?{sccSemiUUCondensedr?Normal,UUMedium,RegularmcMedium{?{sxcSemiUUExpandede?ExpandedxcExpandedx?Extendedxc.q.v?ExtraUUExpandedexcExtraUUExpanded{?{uxcUltraUUExpandedw?Wide{c{ff**pb\latin_widthsIEachcallto\latin_widthmapsaF*ontnamewidthcoGde(\font_width)toa IL5ffA͉TU>'ExXwidthcoGde(\latex_width).kNon-existingnarrowfontsarefakedonlyifI\fakenarrowUUisspGeci callycalledfor.E654S\def\latin_widths{ E655ap\latin_width{}{}E656ap\latin_width{n}{c}E657ap%latin_width{c}{c}E658ap%latin_width{x}{x}E659S}b\latin_shapesIThe8 fthargumentof\latin_shapeisstoredinthevqariable\encoding_switches.E660S\def\latin_shapes{E661ap\latin_shape{}{}{}{n}{\_textcomp_true}E662ap\latin_shape{c}{c}{}{sc}{\_textcomp_false}E663ap\latin_shape{o}{o}{}{sl}{\_textcomp_true}E664ap\latin_shape{i}{i}{i}{it}{\_textcomp_true}E665S}f\latin_encodingsI\encoding_switcheszisevqaluated{immediatleybGeforethe\if_textcomp_testto IsetUUitasappropriateforthecurentshapGe.E666S\def\latin_encodings{E667ap\latin_encoding{7t}{9t}{9o}{OT1}{newlatin}E668ap\latin_encoding{8t}{9e}{9d}{T1}{newlatin}E669Shtextcomp(iE670as\encoding_switchesE671as\if_textcomp_E672p8\latin_encoding{8c}{9c}{9c}{TS1}{textcomp}E673as\fiE674Sh=textcomp(iE675S}b\if_textcomp_ISwitchStoRcontrolwhetherRornottoinstallatextcompanionencoGding.ͿItisset IorUUunsetforeachshapGeby\latin_shapesandevqaluatedin\latin_encodings.E676S\newif\if_textcomp_IFile:qfiltfam.dtx227 ssob\raw_encoding 6\adobe_encoding f\expert_encodingE677S\def\raw_encoding{8r} E678S\def\adobe_encoding{8a}E679S\def\expert_encoding{8x} \caps_shape 6\oldstyle_shapeE680S\def\caps_shape{c}E681S\def\oldstyle_shape{j}L\SlantAmountE682S\def\SlantAmount{167}E683Sh=pkgKiIFile:qfiltfam.dtx228 soIFileffgIfimapgen.dtxꨍI19ifdGeneratingffmap lefragmentsIA>1map~ leis>7a lewhich>8isusedbysomeDVI>1driverto>8linkvqariouskindsoffont Iinformationntoeachother,Otasisneededforthedriver'sopGeration.ExamplesofIsuchw lesarethe lepsfonts.mapusedbydvipsandthecon g lesofO4zTU>'ExX.IThereUUarehoweverUUmanyothersuch lesaroundintheTU>'ExXworld.XNot allof amap leneedtobGerelatedtolinkingspGeci ckindsoffontinform-Iation|to|eachother.O4zTU>'ExXcon g lescanforexamplebGeusedtosetthevqaluesIofpTU>'ExXoimplementationparameters^12 UVandthereneednotbGeanyfont-relatedpin-Iformation.at/allinthem. 0STheimpGortantthingishowever.thattherecanbGeImapobinformationinthem|thatinformationcouldbGeautomaticallywrittenbyItheUUroutinesdescribGedhere.XSince*theremaybGeotherkindsofinformationinthese les(andoftenenoughIneed3tobGefor4everthingtoworkright),7theroutines4describGedherewillonlyIgeneratekmapk lefr}'agments.mThesefragmentswillthenhavektobGeinsertedinItheUQ nalmap lesUPsomehow,URusuallythroughmanualediting.qThepurpGoseoftheIroutinesdescribGedhereisonlytosavetheuseragooddealof(oftenquiteboring)Ityping,UUnottoactuallyinstalleverythingwhereitneedstobGe.9\mapfrags_subsystemIThisnmacroholdsthenameofmtheautomaticmap lefragmentswritersubsystemIofrfontinst,UUasitappGearsinerrormessages.Ls1S\def\mapfrags_subsystem{Map~fragments~writer}6I19.1nInterfacetomainfontinstuTITheautomaticgenerationofmap lefragmentsisbasedonthetwocommandsI\storemapdataUUand\makemapentry.qTheirrespGectivesyntaxesareb\storemapdata{hTKß'E-Xfontname[i}{hsour}'cei}{htransforms!i}b\makemapentry{hTKß'E-Xfontname[i}X\storemapdataKŲcommandsarewrittenwhenametric lehTKß'E-Xfontname[i.mtxb\storemapdataIisgenerated.TCThepurpGoseofthesecommandsistorecordwherethedataforthatI le[Vcamefrom,Wandwhatwasdone[Wtothesedata.sThesourceofthedataisspGeci edIinUUthehsour}'ce[iUUargument,whichcancontainoneofb\fromafm{hAFMname[i}{hPSnamei}b\frompl{hPLname[i}b\frommtx{hMTXname[i}b\fromvplITheyonlyrealydi erencebGetweeny\fromafmand\fromplatthisstageisthattheIformer-spGeci esthePS-name-ofthefont,cbutthelatterdoesnot.IfyouwriteIak\storemapdatacommandlyourselfandwanttolsupplythePSHnamethenyouIshould<4use\fromafm<5evenifyoutoGokthe<5fontmetricsfromaPL.<5ThereisanIX-ffr J=w-:12LܼTheXkindofthingsthatwÎerePascalconstantsintheoriginal>- cmcsc10WebsourcesforTAEMX.IFile:qfimapgen.dtx@229 soIimpGortant*di erencebetween*\fromvpl*andthe rstthreeinthatvirtualfonts Ineedhnomap leentryh(andhencethereshouldnotbGeanyeither).jBesidessomeIerrorUUchecking,\fromvplcausesa\makemapentrytodoessentiallynothing.XWhat wasdonetothe dataisspGeci edbythehtr}'ansforms!iargument,:whichIisUUapGossiblyemptysequenceofcommands,inwhicheachitemisoneofffb\transformfont{hx-sc}'ale[i}{hslant-scalei}b\reencodefont{hetx4Di}b\reglyphfontfgIThep>orderisp?interpretedsothatthethingdone rstappGear rstinthesequence.IInnormalcasesthereisatmostoneofeach,!andthentheorderisnotimpGortant.Ihx-sc}'ale[i,1Ehslant-scalei,1Dand(@hy-scalei(Aare(@thevqaluesofthesevqariablesusedfortheItransformation,as}TU>'ExX~numbGers.e?hetx4Diis}thenameoftheETXh leusedfortheIfontUreencoGding./\reglyphfontisanerrormarker./ItwillnotVbGeencountered(butIitj.mayj/wellgetj/storedinsometable)unlessametricfonttransformisappliedtoIaUUfontthathasbGeenreglyphed,whichisillegal.XInwadditiontowbGeingwrittentoatransformsrecord le(ifoneisopGen),I\storemapdata|commandsarealso|writtentotheactualmetric le.ThismakesIit.lpGossibleto ndoutwherethedatafor.ma lecomesfromevenifthe lewasImade#on$apreviousfontinstrun,Hbutsinceitrequiresreadinganadditional leIjustdtoe ndonecommand,hitwillbGeslowerdthanifthe\storemapdataappGearedIinUUatransformsrecords le.X\makemapentrycommandsarewrittenwhenaVPLthatusesoraligfullPLb\makemapentryIforafontisgenerated.Q ThesecommandsaretheoneswhichactuallycausetheImap, lefragment,generatortowriteanentry*,4Xbutentriesareonly,writteniftheyIhaven't0bGeen0writtenbefore.eU\makemapentry0usesinformationthatwasstoredbyIaUUpreviouscallto\storemapdata.X\storemapdataVastoresV`itsargumentsinoneofthecontrolsequences\Tf-hfontظi,'ExXIfont".ThelLcontrolsequencesinlKthisfamilyareparamterlessmacroswhosere-IplacementUUtextshavethefollowingform:b{hmade[i}{hsour}'cei}{htransforms!i}fgIHerehsour}'ce[iandhtransforms!iareexactlyasabGove.P͸hmade[iisanumbGerwhichIdescribGesthecurrentstatusofthisfont.]Ifhmade[iiseventhenthefonthasIbGeende nedbutnoentryforithassubsequentlybGeenwrittentothemap le,IwhereaspifoitisoGddthenanentryforithasbGeenwrittentothemap le.IftheIvqalueof뾸hmade[iislessthan\process_generationthenthedataintheothertwoIargumentsdIisfromapreviousrunandshoulddJbGeignored.The\Tf-hfontظicontrolIsequencesUUshouldalwaysUUbGesetglobally*.̍9\process_generation̙\process_generation_succI\process_generationoispacounterwhichpstoresthenumbGeroofthecurrent\entryIgeneration". 'ExXsystemneednotworkforanother(evenifthedriveristheIsame),5and-therefore-itisnecessarytomakethewholeproGcessofwritingmap leIfragmentsNcon gurable.]AN|fewexamplesofthingsyoumayhavetoinformtheImap6fragmentwriterabGoutare5(andthesearefordvipsalone;that'sthedriverIIknowUUbGest):XbIsUUthefontresidentontheprinterormustitbGedownloaded?|LXbIfthefontmustbGedownloaded,whatisthenameofthe leitisin?;HerebonemusttakeintoaccountnotonlythepGossibilitythatthefont lemightbhaveMtobGesharedwithsomeothersoftwareM(suchasaGUI)(andthuscannotbbGenamedaccordingtotheBerryscheme|evenifitisnamedaccordingtobthe[Berry[schemeonestillhasthequestionofitsextension:~.pfa,a.pfb,borCsomethingBelse?4F*orinstancesofMultipleMasterfonts,~you(atCleastbsometimes)UUhavetodownloadmorethanone le.XbAgainifthefontmustbGedownloaded,can/shoulditbGepartiallydown-bloaded?|KXbIn-case.thefonthasbGeenreencoded,what.isthenameofthe lewhichbde nes˾this˽encoGding,XandbywhatnamedoGesthat lemaketheencoGdingbknownUUtothepGostscriptinterpreter?IThe8mechanismsavqailableforsuchcon gurationaredescribGedinSubsection19.2.2.INotethatmap lesforDVIviewersareonaveragemorelikelytoneedvqariousIplatform-spGeci c_information_aboutthefontsthan_map lesforDVI_pprinterdriversIare,kuandghenceg oncecanexpGectthatgenerationofthesewillneedmoreextensiveIcon gurationUUthanthatfortheprinterdrivers.łI19.2.1qIn9terfaceTforbasicusageuTIAnEentrymakerXisagroupofmacroswhichwritetheentryforthefontcurrentlyIunder considerationtoamapfragments leeachtimetheyarecalled.XThemacroItocallmusthaveanameoftheform\make_hdriverifor\adddrivertorecognise\make_hdriveriIit.qEachentrymakerhasaseparateoutput le(opGenedusing\open_pout)andItheUUidenti erconnectedtothat leiscalled\output_hdriveri.0\output_hdriveriXA{listfofeallentrymakerscurrentlyactiveisemaintinedinthemacroI\entry_makers_list.qEachUUiteminthislisthastheformb\maker_do\make_hdriveriIFile:qfimapgen.dtx@236 soI\maker_doUUisusually\relax,butitdoGesoccationallygetsettoothervqalues./h$\adddriverITheҙ\adddriverҘcommandaddsthenameddrivertothelistofdriverstowrite Ientries"sforandopGensanoutput le"rwheretheentriesforthatparticulardriverIwillUUgo.qRepGeatedcallsto\adddriverforthesamedriverhavenoe ect. E167S\def\adddriver#1#2{ E168ap\x_cs\ifx{make_#1}\x_relaxE169p2\fontinsterror\mapfrags_subsystemE170~0{There~is~no~entry~maker~for~#1}\error_help_aE171ap\elseE172p2\x_cs\ifx{output_#1}\x_relax\_a_true\elseE173~0\x_cs\ifx{output_#1}\closed_stream\_a_true\elseE174]\_a_falseE175p2\fi\fiE176p2\if_a_E177~0\x_cs\open_pout{output_#1}{#2}E178~0\expandafter\add_to\expandafter\entry_makers_listE179]\expandafter{\expandafter\maker_doE180]\csnamemake_#1\endcsname}E181p2\fiE182ap\fiE183S}8䍍t\entry_makers_list y\maker_doE184S\let\entry_makers_list\empty_commandE185S\let\maker_do\x_relax8䍍L\donedriversIThe{mainfunctionpGerformedbythe|\donedriverscommandistocloseallthe IopGenUUoutput les.qItmightalsoprintsomewarningmessages.E186S\def\donedrivers{E187ap\def\maker_do##1{E188p2\x_cs\close_pout{output\expandafter\gobble_five\string##1}E189~0{Map~file~fragments}E190ap}E191ap\entry_makers_listE192ap\let\maker_do\x_relaxE193ap\let\entry_makers_list\empty_commandE194ap\errorstopmodeE195ap\reportwarningsE196ap\advance\process_generation\thr@@E197ap\edef\process_generation_succ{\the\process_generation}E198ap\advance\process_generation\m@neE199S}8䍍L\gobble_fiveE200S\def\gobble_five#1#2#3#4#5{}8㍑XItQBisappropriatethatthemap lewriterwritesasummaryofthekindsof IriskyAithingswhichhappGenedwhenitisdonewritingdatato les.6T*osimplifyIimplementing_such_things,bYthereisacommand\includewarningthattakescare 6\includewarningIofUUthebGookkeepingUUinvolved.qAfterthecallb\includewarninghc}'ommandiIFile:qfimapgen.dtx@237 soIthehc}'ommandiwillbGeexecutedexactlyoncethenexttime\reportwarningsis Iexecuted.qTheUUhc}'ommandiusuallyexpandstosomethinglikeb\fontinstwarningnoline\mapfrags_subsystem{ p,Check~the~output~file(s)--some~data~was~considered~uncertain}\warnings_listIThe\warnings_listmacrocontainsalistofallwarningsthatshouldbGemade.IItUUexpandstoasequenceofb\warning_dohc}'ommandiI\warnings_listUUisalwaysUUassignedglobally*. ꫍E201S\g_let\warnings_list=\empty_command 6\includewarning \warning_doIThe8\includewarningcommandaddsanentryforitsargumenttothe\warnings_listIlist,providedƔtherewasn'talreadysuchanentry*.ń\includewarningisbasedonIthe1macro2\warning_do,whichdoGesmostofthebGookkeepingfor1makingsuretheIlist containsatmostoneentry ofeachkind.X\warning_donormallyexpGectstobeIexpandedUUinthecontextb\warning_dohnewc}'ommandiholdcommandihnextظiIThe%7hnewgc}'ommandiisthecommandthatis%8bGeingaddedtothelist,.andtheholdIc}'ommandiWisaXcommandthatisalreadyinthelist.iθhnextظiisthe rsttokeninIthenextiteminthelist|inmostcasesanother\warning_do.X+IfhnewM9c}'ommandiIandUUholdc}'ommandiarenotequal,thisshouldexpandtob\noexpand\warning_do\noexpandhold8c}'ommandihnextظihnewc}'ommandiIIfUUontheotherhandtheyareequal,thisshouldexpandtob\noexpand\warning_do\noexpandholdc}'ommandihnextظi\x_relaxIThe#reasonforthis$isthatthelasthnextظiwillnotbGea\warning_do,butan\ifxIwhichUUtestswhetheranewitemshouldbGeaddedtothelist. ꪍE202S\def\warning_do#1#2#3{ E203ap\noexpand\warning_do\noexpand#2E204ap\ifx#1#2E205p2\expandafter#3\expandafter\x_relaxE206ap\elseE207p2\expandafter#3\expandafter#1E208ap\fiE209S}E210S\def\includewarning#1{E211ap\xdef\warnings_list{E212p2\expandafter\swap_two\expandafter#1\warnings_listE213p2\if_equal\x_relax\then\elseE214~0\noexpand\warning_do\noexpand#1E215p2\fiE216ap}E217S} 6\reportwarningsIThe\reportwarningscommandrepGortsallthewarningsandemptiesthe I\warnings_list. ꫍E218S\def\reportwarnings{IFile:qfimapgen.dtx@238 soE219ap\begingroup E220p2\let\warning_do=\x_relaxE221p2\warnings_listE222ap\endgroupE223ap\g_let\warnings_list=\empty_commandE224S}߀H\warn_unknown_source ߀H\warn_undecided_data ߀H\warn_uncertain_dataIThese&Kmacros&Lareusedtooutputwarningsatthe\reportwarningsattheendof I\donedrivers.E225S\def\warn_unknown_source{E226ap\fontinstwarningnoline\mapfrags_subsystem{E227p2Some~font~is~missing~from~the~output~file(s),\messagebreakE228p2since~its~source~is~unknown}E229S}E230S\def\warn_undecided_data{E231ap\fontinstwarningnoline\mapfrags_subsystem{E232p2Check~the~output~file(s)--some~data~could~not~be~determined}E233S}E234S\def\warn_uncertain_data{E235ap\fontinstwarningnoline\mapfrags_subsystem{E236p2Check~the~output~file(s)--some~data~was~considered~uncertain}E237S}6I19.2.2qCon gurationTin9terfaceuTIT*ocorrectlyformatreencoGdings,Othemap lewritermustknowwhattheETXIencoGdingsHcorrespondto.mInthecaseofdriversHwhichgeneratepGostscriptoutput,IthisPinformationisOstoredinthe\pse-hetx4Difamilyofmacros.hetx4Diisthename\pse-hetx8iI(sux-excluded)of-theETX- lethattheinformationpGertainsto.dTheexpansionIofUUthesemacrosareoftheformb{hp}'ostscriptname[i}{hactionci}Ihp}'ostscriptname[iuisvthenamebywhichutheencoGdingisknowntothepGostscriptIinterpreter,and͸hactioncilistsanyadditionalactionthatmustbGetakenbGeforetheIencoGdingUUcanbeused.t\declarepsencodingIDataisenteredina\pse-hetx4Dimacrousingthe\declarepsencodingcommand.IItsUUsyntaxisb\declarepsencoding{hetx4Di}{hp}'ostscriptname[i}{hactionci}E238S\def\declarepsencoding#1#2#3{\x_cs\gdef{pse-#1}{{#2}{#3}}} E239Sh=map1iIInNmainfontinst,O\declarepsencodingshouldbGeanoopsoNthatitcanappearinIencoGdingUU les.qIt'sprobablyagoodideatoshowitwhentypGesettingaswell.E240Shpkg Mi\let\declarepsencoding=\gobble_threeE241ShdoAceLiE242S\def\declarepsencoding#1#2#3{\comment{%E243apThisfilecorrespondstothe\FD@typeset@string{#2}encodingvector.}}E244Sh=doAceLiIFile:qfimapgen.dtx@239 ~sot\providepsencodingIThiscommandisbasicallythesameas\declarepsencoding,Ubutitchecks Iwhether theencoGdinghasalreadybeensetanddoes nothingifthatisthecase.XItIisUUusedforautogenerateddeclarations,toallowtheusertooverridethesetting.E245Shmap1i E246S\def\providepsencoding#1#2#3{E247ap\if_undefined{pse-#1}\thenE248p2\declarepsencoding{#1}{#2}{#3}E249ap\fiE250S}E251Sh=map1iE252Shpkg Mi\let\providepsencoding=\gobble_threeE253ShdoAc Ni\newcommand\providepsencoding[3]{}y\downloadIByPdefaultQ\downloadgobblesitsargument..ItshouldbGerede nedwhenthatis InotUUthedesirede ect.E254Shmap1iE255S\let\download=\gobble_oneb\fulldownloadIBydefaultthisdefaultstobGeingasynonymof\download,tosimplifymattersfor Idrivers4where4thedistinctionisnotrelevqant.fTheyshouldbGerede nedwhenthatIisUUnotthedesirede ect.E256S\def\fulldownload#1{\download{#1}} \encodingdownloadIBydefaultthisdefaultstobGeingasynonymof\download,tosimplifymattersforIdrivers4where4thedistinctionisnotrelevqant.fTheyshouldbGerede nedwhenthatIisUUnotthedesirede ect.E257S\def\encodingdownload#1{\download{#1}}XSomeUUencoGdingsseemtoalwaysUUbepresent,sotheycanbedeclaredhere.E258S\declarepsencoding{8r}{TeXBase1Encoding}{\encodingdownload{8r.enc}} E259S\declarepsencoding{8a}{StandardEncoding}{}Ifontinst{>mustbGe{?toldaboutotherpostscript{?encodings(ifyouhave{?theminstalled).ITheUUfinstmsc.rc leistherightplaceforthesedeclarations.XNextwehavetheco gurationforfonts,Owhichworksinasimilarfashion.ITheomainproblemherenseemstobGetodeterminewhich les(ifany)shouldbGeIdownloadedgtotheprinter,l>andthisgcanbGespeci edusing\downloadcommandsIasAfortheAencoGdings.6xThefamily\psf-hPSmfontm'ExXgraphicscompanion[4]containsanexamplebwithoanpinstanceoftheMinionMM^multiplemasterfont.DBoththepTU>'ExXandb(whatL:isofL9interesthere)thePSKnameforthisinstanceiszmnl8ac6,thebbaseámultiplemasterfontisstoredinthe leMinionMM.pfb,4andthestubb leUUiscalledzmnl8ac6.pro.qThe\specifypsfontcommandforthisisx\specifypsfont{zmnl8ac6}{%\download{MinionMM.pfb}\download{zmnl8ac6.pro}%x}b(ItshouldprobablybGeremarkedthatthemostcommonmethoGdofde ningabmultiplejmasterfontinstanceisnottoiexplicitlycreateitasinthisexample,bbuttosimplyuseitasanyordinaryPSfontandthenrelyonthePS ndfontbopGerator8toautomagicallycreate8itforyou.hThisrequiresusingaspGecialbnamingUUschemeforinstancesofmultiplemasterfonts.)XbF*ontsUUwhichdonot tanyofthegeneralnamingschemes. \AssumeLWFNIThisscommandmakesMacOS'LWFNHstyletabbreviatedPostscriptfontnamestheIdefaultUUforfontsthathaveno\psf-entry*.E261S\def\AssumeLWFN{\let\get_PS_font_file\LWFN_get_PS_font_file}6I19.3nDeducingv@aluesforthemap leentriesuTI19.3.1qBasicTprinciplesIThe8)automatic8(generationofmap lefragmentsmainlyconsistsofdeterminingIvqarioustextstringsandwritingthesetoa leastheformatofthemap lebGe-Iing_writtenrequires.Thecomplicatedpartisusually_todeterminewhattheseItext"strings"shouldbGe,V/sincetheonlyrestrictionimpGosedbytheoutputformatIoftenpisthatpthestringsshouldbGewrittenintherightorderandwithseparatingIwhitespace.XItZis[furthermorethecasethatsomeofthesetextstringsseemtobGehardtoIdeducefromtheinformationprimarilygiveninthecommandtowritetheentry*,IbutUUsomewhateasiertodeducefromsomeotherdeducedtextstring.XThereforeD"theD#followingmoGdelseemsappropriate.>/F*oreachtextstringthatImayqneedtopbGededuced,thereisonemacrowhichisusedtostorethestring(ifitIhasXbGeendeduced)XandonemacrowhichcanbGecalledtosettheformermacrotoanIappropriateqvqalue.A'Thusthererisonemacro\PS_font_namewhichstoresthepGost-Iscriptnameforthefontcurrentlyinquestionandonemacro\get_PS_font_names\get_hstringNorVF le)oftheQfontforwhichanentry IshouldUUbGemade.qItissetby\makemapentry,sono\get_...macroUUisneeded.E264S\let\TeX_font_name\unknown_strƲ\source_font_TeX_nameIThisristhesname(asAFM]orPL)ofthefontwhosemetricsweresusedby#fontinst.IItUUissetby\fromafmor\frompl,sono\get_...macroUUisneeded.E265S\let\source_font_TeX_name\unknown_strb\PS_font_nameIThishishthename(asF*ontNameentryhinanAFMhorcorrespGondingly)ofthefontIinUUquestion.E266S\let\PS_font_name\unknown_strIFile:qfimapgen.dtx@242 %Ԡso \get_PS_font_nameII5expGectNthisOtobecomeOoneofthecentralmacrosinthemap legeneration(at IleastKRwhenentriesaregeneratedforpGostscriptfonts),MSbutforthemomentitdoGesIthe closest thingtonothinga\get_...Zmacro isallowed todo;"itadmitsithasn'tIgotUUaclueabGoutwhatthepropervqalueis.E267S\def\get_PS_font_name{\let\PS_font_name\clueless_str}\AssumeAMSBSYYb\AssumeBaKoMaIThesecommandsrede ne\get_PS_font_namesothatitreturnsthePSnameIthis+font*wouldhave*ifitwaspartoftheAMS/BlueSky/Y&YandBaKoMaIrespGectivelydistributionoftheComputerModernfonts|theTU>'ExXfontnameinIallUUuppGercaseandalllowerUUcaserespectively*.E268S\def\AssumeAMSBSYY{\def\get_PS_font_name{ E269ap\uppercase\expandafter{\expandafter\defE270p2\expandafter\PS_font_name\expandafter{\source_font_TeX_name}E271ap}E272S}}E273S\def\AssumeBaKoMa{\def\get_PS_font_name{E274ap\lowercase\expandafter{\expandafter\defE275p2\expandafter\PS_font_name\expandafter{\source_font_TeX_name}E276ap}E277S}}b\PS_font_fileIThisisthenameofthe le(suxincluded)inwhichthePSfontisexpGectedto IbGeUUfound.E278S\let\PS_font_file\unknown_str \get_PS_font_file ̙\normal_get_PS_font_file `PSfontsuffixstringIThemacro\normal_get_PS_font_fileis(hardlysurprisingly)thenormal I\get_PS_font_file.`WIt!simply!uses\source_font_TeX_nameplusthesuxspGe-Ici edUUbythePSfontsuffixstring.E279S\resetstr{PSfontsuffix}{.pfa} E280S\def\normal_get_PS_font_file{E281ap\edef\PS_font_file{\source_font_TeX_name\str{PSfontsuffix}}E282S}E283S\let\get_PS_font_file=\normal_get_PS_font_file \LWFN_get_PS_font_file ̙\abbreviate_PS_font_nameIInt"MacOS,Postscriptt#fontst" lenamesareusuallyabbreviatedformsofthePost- Iscriptķfontnames,formedusingthesocalled5+3+3+rule|keepķthe rst veIletters ofthe rstsubword,keepthe rstthreelettersofallfollowingsubwords.IThe,\LWFN_get_PS_font_filemacrousesthis,schemeifthePostscriptnameforItheqfontrisknown,otherwiseitcallsrthe\normal_get_PS_font_file.G|TheLWFNIinUUthemacronameisthetypGecodeforsuch les.XTheTalgorithmisbasedonusingU\aftergrouptoconstructthewantedT\defIstatement,Monly\aftergroupingthelettersthatarenottobGeremovedintheIabbreviation.N\a_countײisusedasacounterofhowmanymorelettersintheIcurrentUUsubwordshouldbGekept.E284S\def\LWFN_get_PS_font_file{ E285ap\ifx\PS_font_name\unknown_str\get_PS_font_name\fiE286ap\ifx\PS_font_name\clueless_strE287p2\normal_get_PS_font_fileE288p2\includewarning\warn_uncertain_dataE289ap\elseE290p2\begingroupIFile:qfimapgen.dtx@243 0xsoE291~0\aftergroup\def\aftergroup\PS_font_file E292~0\aftergroup{E293~0\a_count=4~E294~0\expandafter\expandafter\expandafter\aftergroupE295]\expandafter\swap_two\expandafter\abbreviate_PS_font_nameE296]\PS_font_name\x_relaxE297~0\aftergroup}E298p2\endgroupE299ap\fiE300S}E301S\def\abbreviate_PS_font_name#1{E302ap\ifx\x_relax#1\elseE303p2\ifnum\uccode`#1=`#1E304~0\a_count=2E305~0\aftergroup#1E306p2\else\ifx-#1E307~0\a_count=\z@E308p2\else\ifnum\a_count>\z@E309~0\advance\a_count\m@neE310~0\aftergroup#1E311p2\fi\fi\fiE312p2\expandafter\abbreviate_PS_font_nameE313ap\fiE314S}6I19.4nDrivermakersuTIThisPsubsectioncontainsthede nitionsofPmacrosthatmakesupthedrivermakers.6I19.4.1qTheTdebugdriv9erIThe}debugdrivermakerdoGesn'treallygenerateentriesfor|anyDVISdrivermap I le,*it-just,printsthedatathatwasavqailable._Itismainlyintended-fordebuggingIpurpGoses,UUbutitmightalsoserveasabasicmoGdelforotherdrivermakers. \make_debugE315S\def\make_debug{ E316ap\pout_line\output_debug{Driver~data~for~font~\TeX_font_name:}E317ap\pout_lline\output_debug{Source~font~TeX~name:~\source_font_TeX_name}E318ap\ifx\reencode_etx\empty_command\elseE319p2\pout_lline\output_debug{Font~reencoded~using~\reencode_etx.etx.}E320ap\fiE321ap\ifdim\xscale_factor=\p@\elseE322p2\pout_lline\output_debug{Font~x-scaled~by~E323~0\expandafter\lose_measure\the\xscale_factor.E324p2}E325ap\fiE326ap\ifdim\slant_factor=\z@\elseE327p2\pout_lline\output_debug{Font~slanted~by~E328~0\expandafter\lose_measure\the\slant_factor.E329p2}E330ap\fiE331ap\debug_values_hookIFile:qfimapgen.dtx@244 >soE332S}L\debug_valueIThe\debug_valuemacrocanbGeusedtoprintthenameandcontentsofan Iarbitraryvqaluemacrointhedebugdriver.mItiscalledwiththevaluemacroasIargument,UUe.g.b\debug_value\PS_font_nameE333S\def\debug_value#1{ E334ap\ifx#1\unknown_strE335p2\csnameget_\expandafter\gobble_one\string#1\endcsnameE336ap\fiE337ap\pout_lline\output_debug{\string#1:~#1}E338ap\ifx#1\clueless_str\includewarning\warn_undecided_data\fiE339S} \debugvalue t\debug_values_hookIThe\debugvaluecommandisauserlevelinterfaceforaddingvqaluemacrosto Ithelistofthosethataredisplayedbythedebugdriver.BQTheargumentisthenameIofUUthevqalueinquestion,e.g.b\debugvalue{PS_font_name}INote0thatthename1givento\debugvalueisnotthecontrolsequenceinwhich ItheUUnameisstored.E340S\def\debugvalue#1{ E341ap\expandafter\add_to\expandafter\debug_values_hookE342ap\expandafter{\expandafter\debug_value\csname#1\endcsname}E343S}E344S\let\debug_values_hook\empty_commandE345S\debugvalue{PS_font_name}6I19.4.2qTheTdvipsdriv9eruTIBefore!constructing!anentryforadvipsmap le,,itshouldbGesortedouthowsuchIanUUentryshouldloGok.qThedvipsmanualsaysqTheaparsing`ofthepsfonts.map leshouldbGeexplainedtoelim-binate\all\confusion.!IfalineisemptyorbGeginswithaspace,^asterisk,bsemicolon,orahashmark,itisignored. Eachremainingalineisseparatedbinto'jwords,[wherewordsareseparatedby'ispacesortabs.IfawordbbGeginswithadoublequote,itextendsuntilthenextdoublequoteorbtheTendSoftheline.BIfawordstartswithalessthancharacter,itisbtreated=as=afontheader le(oradownloadedPostScript=font).iTherebcanobGepmorethanonesuchheaderforagivenfont.CIfaowordstartsbwithWadoublequote,itisaspGecialinstructionXforgeneratingthatfont.bOtherwiseitisaname.32The rstsuchnameisalwaysthenameTU>'ExXbusescforthecfontandisalsothenameoftherawtfm le.Iftherebis}anothernameword,'ExXnameandthebPostScriptUUname.XAfontinst-generatedEmapD leentryforthedvipsdriverDhasthefollowingstruc-Iture:IFile:qfimapgen.dtx@245 HHsobhTKß'E-Xfontname[iUUhPSfontnameiUUhdownlo}'ads!ihfonttransformations!iōIhTKß'E-XBfontAname[ijisisimplythevqalueof\TeX_font_nameandhPS(fontAname[iis IsimplyUthevqalueUof\PS_font_name.shdownlo}'ads!iisapGossiblyemptysequenceinIwhichUUeachitemhastheformƍbhpr}'e x4Dih lename[iIThe hpr}'e x4DivqaluesI'vecameacrossareempty*,^13 <, <<,and <[.YCurrently'ExXina\writenormallyjumpspasttheexpansionIofMaN\thehtokenlistr}'egisteriwithoutMexpandingitfurther, butthise ectcanbGeIFile:qfimapgen.dtx@247 aĠsoIpreventedUUbyexpandingthe\thewithan\expandafter.E403ap\def\download##1{~<##1} E404ap\def\fulldownload##1{~<<##1}E405ap\def\encodingdownload##1{~<[##1}E406ap\pout_line\output_dvips{E407p2\TeX_font_name\space\PS_font_nameE408p2\expandafter\empty_command\the\downloads_listE409p2\ifx\postscript_code\empty_command\elseE410~0\space"\postscript_code\space"E411p2\fiE412ap}E413S}6I19.4.3qTheTdvipdfmdriv9eruTIAUUmap leentryforthedvipdfmdriverhasthefollowingstructure:bhTKß'E-Xfontname[iUUhenc}'oding}ihPSfontظihoptions!iIhTKß'E-Xfontname[iQ/issimplyQ0thevqalueof\TeX_font_name.pehenc}'oding}iQ/isthename IoftheencoGding lewhichshouldbGeusedtoreencoGdethefont,ordefaultifthereIis~none.DChPSbfontظiisthevqalueof\PS_font_nameforthestandard35fonts(i.e.,IfontsfwhichfwillnotbGeincludedinthePDFfgenerated),,butforotherfontsitIisthenameofthe lewhichcontainsthefont.^14hoptions!i,N nally*,isapGossiblyIemptyUUsequenceofspace-separatedoptions.qEachoptionisoneofthefollowingb-e?hnumb}'erib-s?hnumb}'erib-rIThez#-ez$and-soptionsextendandslantbyz#thegivenz#amounts.2The-rz$optionisIaUUworkqaroundforsomeAcrobatbugs;itiscurrentlynotgeneratedbyxfontinst.b\make_dvipdfmIThisxmacroygatherstheinformationforadvipdfmdriverentryxandwritesittotheIcorrespGondingoutput~ le.DAsadvipdfmmap leentryisononeline,theentireIentryEisEwrittenatonce.BThehoptions!itextiscollectedasexplicittextintheImacron\options_text.`Thehdownlo}'ads!iisncollectedasasequenceof\downloadIcommandsUUinthe\downloads_listtokenregister.E414S\def\make_dvipdfm{ E415ap\def\font_encoding{default}E416ap\ifx\reencode_etx\empty_command\elseE417p2\if_undefined{pse-\reencode_etx}\thenE418~0\etxtoenc{\reencode_etx}{\reencode_etx}E419p2\fiE420p2\def\download##1{\def\font_encoding{##1}}E421p2\expandafter\expandafter\expandafter\second_of_twoE422~0\csnamepse-\reencode_etx\endcsnameE423ap\fiE424ap\let\options_text\empty_commandE425ap\ifdim\xscale_factor=\p@\elseE426p2\edef\options_text{\options_text\spaceIffffr J=w-:14LܼThe-do}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-772,Tb-773, gb-811, b-812,c-66,c-74,c-163,gc-321,bc-564,ce-537,e-601,e-603 ^I\hamounti}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ115I\hencodingUi-hfamilyi}.΍}.}.}.}.}.}.}.}.}.}. ћ150I\hletteri_macrowd}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42I\)3>}.΍}.}.}.}.}.}.}.}.}. b-772,Tb-773,b-811, gb-812,ac-66,c-76,c-163,c-321,gc-564,*e-537,)e-588,e-601,e-603I\,3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-38,Ta-354,ga-366,>a-651,a-654{a-656,b-554I\-3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ^e-1057,Te-1069I\/3>}.΍}.}.}. --b-30,Tb-33,b-366,e-5,e-8,e-538 ^I\@3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ԗa-47,Ta-52I\@@endP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-156I\@@input}.΍}.}.}.}.}.}.}.}. L"a-636,Tc-26,c-360I\[3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-308I\ 3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-47,Ta-50,e-262I\#3>}.΍}.}.}.}.}. a-4,Ta-310,b-39,b-222,b-228I\%3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. =a-311,Tb-40I\&3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-40I\\3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-91I\^3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ea-5, ga-47,9a-51,a-828,8b-31,e-261,e-283I\_3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ԗa-47,Ta-53I\{3>}.΍}.}.}.}. a-2,Ta-312,b-496,b-535,c-654I\}3>}.΍}.}.}.}. a-3,Ta-313,b-501,b-540,c-656I\~3>}.΍}.}.}.}.}.}. za-47,Ta-54,a-340,a-351, ga-359,a-387,a-496,a-511,a-522I\]3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-309,Te-6,e-9e;dAI\a@command@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-785I\a@count}.΍}.}.}.}.}.}.}.}.}.}.}.}. a-234 feL ,Tb-g285,b-289,b-313,b-319,b-320,gb-397,'(b-411,b-415,b-423,b-g444,b-458,b-459,b-486,b-489,gb-490,'(b-504,b-525,b-528,b-g529,b-543,b-557,b-558,b-592,gb-596,o*b-617,o)b-621,b-656,b-693I\a@dimena-234feL1P,ub-780,b-781,b-819,b-820 ^I_a_Tswitc9h4 }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-183 *feLI\a_count}.΍}.}. a-168 feL#1,Ta-429,a-431{a-g435,fa-707{a-709,a-721,b-274,b-276,'(b-301,b-303,b-304,b- 385,b-387,b-431,b-433,b-434,b-476,'(b-478,b-515,b-517,b-643,b-645,b-725,b-727,b-885,b-890,'(b-899,b-935,b-936,b-952,Zb-960,b-961,b-964,c-740,c-827,Sc-833,c-840,c-870,c-876,c-882,H c-915,H c-925,c-1323,c-1324,!@c-1369{c-1373,c-1375,c-1447{c-1449,*c-1525,c-1676{c-1678,!@c-1680,c-2060,c-2062{c-2067,~c-2069,c-2070,c-2081,c-2098,Gac-2108,Gbe-12,e-29,e-36,e-75,zFe-77{e-79,e-147,e-151,e-153{e-155,(e-179{e-181,e-184{e-187,Re-190,e-192,Re-298,e-299,e-301,Re-302,e-304,Re-305,e-307,e-308,iBe-310,iAe-311,e-313{e-316,e-318,e-319,e-332{e-336,e-397{e-400, e-426, e-428,e-460{e-462,Re-493,e-496,Re-745,e-753,e-755,Re-758,e-898,Re-899,e-903,e-965{e-968,iBe-975,iAe-977,e-980,e-994,Z#e-1023,Z$e-1035,e-1036,e-1038, g-293, g-304,g-307{g-309]\a_dimen}.΍}. la-22,Ta-24,a-176feL,b-758,b-759,b-804,b-805,c-1310,c-1311,~c-1351,c-1357,c-1525,c-1527,!@c-1547,c-1569{c-1576,c-1649,~c-1651,c-1664,c-1665,c-1668,c-1669,d-71,d-72,d-75,e-270,Re-271,e-273,Re-274,e-276,e-395{e-397,De-607,De-608,e-757]\_a_falsel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-183 ?:feL Ԇ,a-389, a-495,c-420,c-1861,e-206,|e-895,g-72,g-174,g-394\a_macro Lba-45,Ta-47,a-393,a-397,a-747,{a-748,{a-761,a-762,b-766,c-680,Sc-688,c-823,c-825,c-837,c-844,Sc-845,c-909,c-911,c-913,c-919,Sc-921,c-923,c-932,c-950,c-952,Sc-964,c-966,c-970,c-972,c-990, c-992,c-1000,c-1002,c-1158,~c-1160,c-1161,c-1164,c-1446,~c-1450,c-1452,c-1458,c-I@2@cmbx8@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx hsog1678,~c-1679,c-1728,c-1729,c- g1862,~c-1866,c-1967,c-1969,c-g1972,2e-91,e-93,1e-98,e-137,e-g141,)e-182,e-194,e-201,e-204,ge-712,Re-717,e-722,Re-723,e-728,ge-891,Re-902,e-933,Re-935,e-961,ge-962,e-972,e-1148,e-1152,e-g1159,e-1160,e-1166,e-1169,e-g1174,e-1177,f-3,f-4,g-24,g-g27,6g-35,g-161{g-163,g-348,gg-353,g-443,g-445,g-446,g-450 #؍I\a_toksƈ}. ?pa-180 ?pfeL Լ,Tb-889,b-892,b-895,gc-1138,Шc-1140,c-1151,c-1153,gc-1161,Шc-1220,c-1229,c-1238,gc-1747,Шc-1748,c-1881,c-1902,gc-2091,Шc-2099,c-2103,c-2109,gc-2113,G)e-924,G(e-925,e-928,e-g1160,e-1169,e-1177,e-1181,e-1184 #ٍI\_a_true}.΍}.}.}.}.}.}.}.}.}. a-183 ڟfeL!X&,Ta-347,ga-383,&c-425,&c-1866,e-173,e-g892,Ug-75,g-172,Vg-173,g-388,g-391I\abbreviate_PS_font_name&֍}.΍}.}.}.}. *g-284 *YfeL I\activeƈ}.΍}.}.}.}.}.}. }@a-81,Te-5,e-6,e-8,e-9I\active@comma- }.΍}.}.}.}.}.}.}.}. 6a-659,Ta-664 #ٍI\addL}.΍}.}.}.}.}.}.}.}.}.}.}. b-270 feڎ#[,Tc-947,e-882I\add_toƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-320 ?:feL Ԇ,gc-473,c-474,c-1227,c-1236,gc-1858,e-92,e-94,g-178,g-341I\adddriver@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-167 *YfeL I\addvspacea-240,a-566,c-42,c-48,c-408 #ٍI\adobe_encodingz}.΍}.}.}.}.}.}.}.}.tf-98,Tf-g115,%_f-122,f-142,f-152,f-202,f-g211,^f-221,f-231,^f-248,f-432,f-677feێI\advance}.΍}.}.}.}. Fza-113,Ta-118,a-256,ga-262,˚a-267,˙a-277,a-432,a-g439,Sa-711,b-7,b-20{b-22,b-82,gb-276,'(b-289,b-303,b-319,b-g329{b-331,qb-336,b-346,b-507,gb-546,'(b-569,b-571,b-579,b-g581,b-604,b-606,b-629,b-631,gb-696,'(b-707,b-714,b-721,b-g891,Lb-899,Lb-961,c-53,c-83,c-g92,Hc-115,Ic-154,c-167,c-925,c-g926, c-928,c-944,c-989,c-999,gc-1360,Шc-1375,c-1547,c-1680,gd-14,9Hd-23,d-40,d-52,e-36,e-g79,e-155,e-156,e-184,e-189{e-g191,)e-273,e-275,e-277,e-461,ge-564,e-967,e-1000,e-1038,e-g1128,g-164,g-196,g-198,g-309I\afm-hkeyUiW}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ178I\afm-CHƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-343 Afe #ٍI\afm-FontName- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-325 AfeI\afm-KPƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-329 Afe\afm-KPX}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-329 Afe Ik\afm_charl}.΍}.}.}.}.}.}.}. - e-342,Te-343,e-362fe\afm_commandYҍ}.΍}.}.}.}.}.}.}.}.}. e-284,Te-285 Ij\afm_convertYҍ}.΍}.}.}.}.}.}.}.}.}.}. c-1294 fe&aT, c-1569, c-1571,c-1573,c-1575\afm_defe-288ٟfez,Te-295{e-297,e-300,e-303,)e-306,e-309,e-312,e-317,e-320,De-325,De-329,e-342{e-344\afm_length}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-269 fe Ԇ,e-295,ne-298,ne-301,e-304,e-307,;e-310,e-313,e-315,e-318,e-332,e-415,e-416,e-420{e-423,e-426,e-427,e-493,e-494\afm_let}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-291 fe"-,Te-340 Ij\afm_linel}.΍}.}. 3Te-263,Te-283,e-284,e-287\afm_unit_dimenz}.΍}.}.}.}.}.}.}.}.}.}.}. Ae-269 Afe\afm_write_setkernT}.΍}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}.}.}. 3Te-334,Te-336,e-341fe',e-483\afmtomtxl}.΍}.}.}. o176,Te-235Tfe',Te-828,e-854 Ij\aftergroup}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.c-680,Tc-682,c-692,g-291,g-292,g-294,g-297,g-305,g-310\Aheadingl}.΍}.}. 3Ja-239 3JfeL"Ȗ,Tc-62,c-140,c-159, c-399,c-403,c-406,c-780,c-800, c-852, c-857,c-893,c-903\alias_char_name}.΍}.}.}.}.}. e-465,Te-482\alias_incr}.΍}.}.}.}.}.}. - e-452,Te-470,e-475 Ij\alias_incr_i- }.΍}.}.}.}.}.}.}.}. e-453,Te-456\aliasedPe-468,u1e-473,e-954,u2e-957u2fe,e-1006\alloc@ƈ}.΍}.}.}.}.}.}.}.}.}.$a-107{a-111,Ta-113\allocate_stream}.΍}.}.}.}.}. 6a-428 6feL"C,Ta-456\allocationnumberyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. ԍ}. a-100,Ta-115{a-117,a-123{a-125 Ij\announce@packageyꍑ}.΍}.}.}.}.}.}.}.}.}. $c-384 $fe\append_download}.΍}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}.}.}. /g-346 /ğYfeL,Tg-358{g-360,g-398 \assign_rboundaryyꍑ}.΍}.}.}. $c-1211,Tc-1234Tfe\assign_slotYҍ}.΍}.}.}.}.}.}.}.}. $c-1205,Tc-1220Tfe Ij\AssumeAMSBSYYB}.΍}.}.}.}.}.}.}.}.}.}.}.}. *g-268 *YfeL\AssumeBaKoMa- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *g-268 *YfeL\AssumeLWFN}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-261 *YfeL\AssumeMetafontz}.΍}.}.}.}.}.}.}.}.}.}.}. *g-136 *YfeL \AtEndOfPackagez}.΍}.}.}.}.}.}.}.}.}.}.}. *a-225\autoaliasafm- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-480\autoinstallfamilyT}.΍}.}.}. $c-1755,Tc-1770Tfe\AXISHEIGHT}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 AfeՍQMB\b@count}.΍}.}.}.}.}.}.}.}.}.}.}.}. a-234 feL ,Tb- 286,b-290,b-291,b-314,b-322,b-323,'(b-398,b-412,b-413,b-445,b-448,b-449,b-487,b-526,b-561,o*b-657,o)b-673,b-687,b-688I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soI\b_count}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-168 ?:feL Ԇ, ga-430, a-434,a-438,a-441{a-g443,!@a-457,a-464{a-466,a-707,ga-711,ha-713,b-888,b-890,b-g891,b-893,b-940,b-944,b-952,gc-513,Sc-519,c-525,c-534,c-541,gc-741,Sc-828,c-834,c-841,c-871,gc-877,Sc-883,c-916,c-926,c-927,gc-943,H c-944,H c-950,c-1528,c-g1529,!@c-2061,c-2068,c-2080{c-g2082, c-2085,c-2090,e-146,e-g149,ye-150,ze-156,e-187{e-189,ge-427,ne-428,ne-494,e-496,e-g739,)e-746,e-759,e-900,e-901,ge-903,>e-995,>e-1023,e-1034,e-1040 [nI\b_dimena-23,Ta-24,a-176feL,c-1650,c-g1651,d-73{d-76,e-611,e-612,e-616 [mI\b_macro}.΍}.}.}.}.}.}.}.}. c-1449,Tc-1457,gc-1865,Шc-1866,c-1968,c-1969,ge-92,1ve-94,1we-97,e-102,e-103,e-g109,)e-117,e-181,e-182,e-192,ge-194,e-203,e-204,e-971,e-972I\b_toksƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-180 *feLI\bad_makerightboundary c-1208,Tc-1234TfeI\bbox_llxl}.΍}.}. 3Te-348,Te-356,e-364,e-420 [mI\bbox_llyxe-349,qAe-357,e-364,qBe-378,e-421I\bbox_urxl}.΍}.}. 3Te-350,Te-358,e-364,e-422I\bbox_uryxe-351,qAe-359,e-364,qBe-377,e-423I\beginP}.΍}.}.}.}. pa-562,Ta-604,a-801,a- g805,3a-810,2c-43,c-260,c-376,e-56I\begincomment- }.΍}.}.}.}.}.}.}.}.}.}.}.}. b-1001 ؟fe؎I\begingroup}.΍}.}.}.}.}.}.}.}.}.}. 0a-254,Ta-g650,~a-731,a-737,a-744,a-758,gb-4,b-69,b-89,b-112,b-197,b-g260,b-282,b-310,b-352,b-393,gb-440,'(b-484,b-523,b-589,b-g614,~b-652,}b-923,c-17,c-352,gc-580, c-713,c-1221,c-1268,c-g1381,*e-74,)e-209,e-481,e-1043,ge-1056,,e-1068,g-51,g-219,g-290I\@beginparpenaltya-613,Ta-618,a-619 [mI\bgroupƈ}. a-142,Ta-307,b-273,b-300,gb-384,'(b-430,b-475,b-514,b-g642, c-570, c-599,c-679,c-1013,gc-1207,Шc-1249,c-1383,c-1385,gc-1394,Шc-1477,c-1696,c-1738,gc-2039,g+e-199,g*e-555,e-588,e-1005I\Bheadinga-40,a-239feL+,a-409,a-800,a-g804,9a-809,9b-772,b-776,b-781,gb-811,'(b-815,b-820,b-880,b-g881, c-175,c-179,c-183,c-235,gc-237,jc-279{c-283,c-320,c-479,gc-507,Sc-550,c-553,c-556,c-638,gc-666,Sc-669,c-672,c-853,c-858,c-938,p c-958,c-978,c-980,c- 1008,~c-1009,c-1029,c-1030,c-1040,c-1043,c-1046,c-1049,c-1109 1\BigL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-453,Tb-684 1\bigL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-453,Tb-684\Bigg }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-454,Tb-685\bigg }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-454,Tb-685\Biggl b-340,Tb-495,b-500,b-534,b-539\biggl b-340,Tb-495,b-500,b-534,b-539\BiggrP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-343\biggrP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-343\Bigl }. Pb-339,Tb-495,b-500,b-534,b-539\bigl }. Pb-339,Tb-494,b-499,b-533,b-538\BIGOPSPACING- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-687 Afe\Bigr }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-342\bigr }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-342\bigskipamountB}.΍}.}.}.}.}.}.}.}.}. ۲c-42,Tc-48\binoppenalty- }.΍}.}.}. *a-664,Tb-329,b-335\body }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-145,Ta-146\body-hname i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 98\boundary_liglabelT}.΍}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}. "c-1388,Tc-1394,c-1461fe\BOUNDARYCHAR- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-618 Afe\boxL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-122\FD@bracket@expression 4}.΍}.}.}.}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}.}.}.}.}. b-316,Tb-337Tfeڎ..,b-375,'(b-395,b-401,b-442,b-447,}bb-591,}ab-616,b-654,b-675\FD@bracket@levelyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.%Pb-224,Tb-245Tfeڎ..,Tb-258,b-262,b-286,b-290,b-291,b-314,b-322,b-323,'(b-339,b-342,b-346,b-362,b-398,b-412,b-413,b-445,b-448,'(b-449,b-453,b-489,b-490,b-494,b-499,b-507,b-528,b-529,'(b-533,b-538,b-546,b-561,b-657,b-660,b-673,b-684,b-687, b-688,c-591,c-719,c-1087 1\branches@elseB}.΍}.}.}.}.}.}.}. 6a-556,Ta-560TfeL\branches@fiYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-557,Ta-560TfeL\branches@ifYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-554,Ta-560TfeL\branches@par- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-560 *feL\branches@typeB}.΍}.}.}.}.}.}.}.}.}.}.}.}. *a-560 *feL\byeL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-150,Ta-153cQ{C\c_count}.΍}.}.}.}.}.}.}.}.}.}.}.}. 0a-168 0feL!#|,Ta- 709{a-711,b-939,b-942,b-944,b-952,.Dc-742,c-829,c-835,c-842, c-872,c-878,c-884,c-917,c-928,Sc-929,c-943,c-947,c-950,c-1531,Шc-1532,c-2075,c-2076,c-2083,Шc-2085,c-2086,c-2098,e-740,e-747,e-760,e-996,e-1023I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx γsoI\c_dimen}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-176 *feL (I\c_macro}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-193,Te-194I\c_toksƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-180 *feLI\calculate_it_slant}.΍}.}.}. e-296,Te-392TfeI\CalculateCos- }.΍}.}.}.}.}.}.}.}.}.}. zd-37 zfex܎FV,Td-70I\CalculateSin- }.΍}.}.}.}.}.}.}.}.}.}. zd-30 zfex܎FV,Td-69I\CalculateTan- }.΍}.}.}.}.}.}.}.}.}. d-67 fex܎9_,Te-394I\caps_shape}.΍}.}. ͞f-119,Tf-600,f-620,f-680feێI\@car }.΍}.}.}.}.}.}.}.}.}.}. ,b-252,Tb-254,b-465I\catcode}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a- g2{a-5,Ja-45,a-50{a-54,a-308{a-g313,~a-340,a-351,a-359,a-387,ga-496,˚a-511,˙a-522,a-651,a-g699,Ha-700,Ib-70,b-74,b-113,b-g114,c-1222,e-5,e-6,e-8,e-9,e-g261,)e-262,e-283,e-537,e-555,ge-588,fe-601,e-603,fe-1057,e-1069 (I\cc_char}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-344,Te-386I\@cclvP}.΍}.}.}.}.}.}.}.}.}.}.}. ]a-87,Te-78,e-154I\@cclviƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. fa-88,Ta-109I\cdot }. Pb-407,Tb-599,b-624,b-666,b-681I\ch@ckP}. da-114,Ta-119{a-122,a-126,a-428feLI\char }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fb-23,Tc-309I\char_name@0}.΍}.}.}.}.}.}.}.}.}.}. e-352,Te- g360,)e-372,e-384,e-387,e-418,ge-467,e-472,e-477,e-489,e-490 (I\char_slot@0}.΍}. 3Te-345,Te-354,e-367,e-375I\char_x_width- }.΍}.}.}.}. - e-295,Te-346,e-355I\CHARACTER@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeI\chardef}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a- g81,a-83{a-87,a-110,a-111,a-g124,{a-425,{a-466,a-480,b-223,gb-257,'(b-265,b-293,b-325,b-g345,b-361,b-377,b-423,b-461,gb-506,'(b-545,b-596,b-621,b-g670,Eb-690,Fc-590,c-718,c-1086,gd-2{d-4,d-6{d-8,d-58,d-81,g-12 (I\CHARDPƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeI\CHARHTƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeI\CHARICƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeI\FD@charnameYҍ}.΍}.}.}.}.}.}.}.}.}. Rc-240 Rfe",Tc-263I\charnamealiase-443,e-485,e-489,e-496I\charnameprefixz}.΍}.}.}.}.}.}.}.}. e-442, ge-444,e-445,e-466,e-468,e-470I\charseq}.΍}.}.}.}.}.}.}.}.}.}.}.}. oc-256 ofe"-,Te-175I\CHARWDƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeI\CHECKSUMl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 AfeI\close_out@0}.΍}.}.}.}.a-413feL#,Tc-1192,c-g1914,bc-2169,e-71,ce-162,e-232,ge-266,e-553,e-792,e-941,e-1109I\close_pout}.΍}.}.}.}.}.}. Ea-455 EfeL!R,Tg-10,g-188I\closed_streamB}.΍}.}.}.}.}.}.}. 0a-424 0feL!#|,Ta-g470,~a-480,a-739,a-745,a-759,ga-764,fe-926,g-12,gg-41,g-94,g-173\closein}.΍}.}.}.}.}.}.}.}.}.}.}.}. 6a-539,Ta-542 ^\closeoutl}.΍}.}.}.}.}.}.}.}.}.}.}. 6a-418,Ta-477\clueless_str- }. Fzg-263 FzYfeL!,Tg-267,g-286, g-338,g-386,g-399,g-436,g-440 ^\@clxxxƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.d-2ટfe ގ,Td-52\cmap_charseq- }.΍}.}.}.}. - e-174,Te-175,e-197fe\cmap_codepointz}.΍}.}. - e-174,Te-178Tfe',Te-200\FD@codepoint- }.΍}.}.}.}.$a-196$feLAp,Tc-240Tfe',Tc-262\CODINGSCHEME- }.΍}.}.}.}.}.}.}.}. e-507,Te-588Tfe\CODINGSCHEME_contT}.΍}.}.}.}.}.}.}.}.}. Ae-588 Afe\@coefaƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hd-7\@coefbƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.d-8,Td-24\@coefcƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.d-9,Td-25\@coefdƈ}.΍}.}.}.}.}.}.}.}.}.}.}.d-10,Td-26,d-28\@coeffa}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hd-6 hfe ގ\@coeffb}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hd-6 hfe ގ\@coeffc}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hd-6 hfe ގ\@coeffd}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hd-6 hfe ގ\@coeffz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.d-6ટfe ގ,Td-22\command_survivance}.΍}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}. پe-1126 پfe%],Te-1128,e-1130,e-1133,e-1145,e-1151,e-1156,e-1180 ^\FD@commapenalty}.΍}.}.}.}.}.}.}.}.}.}.}.}. ԍ}. /b-328 /֟feڎH,Tb-554,c-586,c-654,c-655\COMMENT}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 Afe\comment}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-37,b-997feڎ,c-80,c-243,c-259,g-242 ^\concat_reencodefontfč}.΍}.}.}. fg-74,Tg-166TYfeL (\concat_transformfont9}.΍}.}. fg-73,Tg-160TYfeL\ConditionallyScaledfč}.΍}.}.}.}. c-551, c-554, c-557, c-558 fe,c-859, c-938\cos(hnumberi)M}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ћ168\countP}.΍}. Fa-93{a-98,Ta-107,a-113,a-115,~a-119,a-126,a-431,a-435,a-439{a-441,ja-445,a-450,a-452 ^\count@ƈ}.΍}. a-104,Ta-129,a-134,b-5{b-7,~b-9,b-11,b-12,b-15{b-20,b-68,b-74,b-76,b-79,b-81{b-83\count_hashes- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. b-883 feڎ\countdefl}.΍}.}. a-99{a-101,Ta-104,a-107\curr_bearingsB}.΍}. Lc-1305 Lfe#,Tc-1543,c-1545,c-1547,c-1552,c-1555,c-1557 ^\curr_file_listz}.΍}.}.}.}.}. c-1735,Tc-1737,c-1741,c-1742,c-1747,c-1748\curr_seriesYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 160,c-1996,c-1999,c-2095,c-2106\curr_shape}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 160,c-2010,c-2013,c-2096,c-2107\@currentlabelB}.΍}.}.}.}.}.}.}.}. Ȃc-70,Tc-141\@currenvir}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-588QD\d-hdim9i51}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx ˠsoI\d_counta-168feLWR,zc-743,c-830,c-836,c- g843, c-873,c-879,c-885,c-918,gc-930,c-1534,c-1535,e-185,e-g189,)e-191,e-193,e-741,e-748,ge-761,e-864{e-867,e-875{e-877,ge-997,>e-998,>e-1000,e-1002,e-1023 _I\d_dimen}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-176 *feLI\dayL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. qc-1897,Te-107I\debug_valueYҍ}.΍}.}.}.}.}.}.}.}.}. 6g-333 6YfeL"C,Tg-342 xI\debug_values_hookT}.΍}.}.}.}. 6g-331,Tg-340TYfeLI\debugvalue}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-340 *YfeL _I\declareencoding}.΍}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.c-2116fe'E,Tc-2117{c-2131,e-594I\DeclareFontFamilyT}.΍}.}.}.}.}.}.}.}. c-1902I\DeclareFontShapeOc-1918,c-1940,c-1956I\DeclareOptionB}.΍}.}. 1a-195,Ta-196,a-207I\declarepsencodingT}.΍}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}. e-23,Te-135,e-138,ge-923,4Fg-2384FYfeLɒ,4Fg-248,4Eg-258,g-259 xI\DeclareRobustCommand9}.΍}.}.}.}.}.}. b-g2,hb-194,b-211,b-221,b-281,gb-309,'(b-351,b-373,b-392,b-g439,b-483,b-522,b-588,b-613,gb-651,cc-579,c-708{c-711,c-1084I\declaresizeYҍ}.22,Tc-2132Tfe,Tc-2133{c-2145I\DeclareTextCommandDefaultF}.΍}.}.}. 8b-58I\DEFAULTRULETHICKNESS9}.΍}.}.}.}.}.}. Ae-687 AfeI\definealiasYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-430 Afe `I\DELIMP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-680 AfeI\DENOMP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeI\depthP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Tc-701 Tfe',Tc-1573I\DESIGNSIZE}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-606 AfeI\DESIGNUNITSYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-610 AfeI\digitP}.΍}.}.}.}.}.}.}.}.}. ,f-29,Tf-35,f-42,f-46I\dimL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 91,Tb-824Tfeڎ..,Tc-1310I\dimenP}.΍}.}.}.}.}.}.}.}.}.}. Ea-94,Ta-108,a-120I\dimen@ƈ}.΍}.}.}.}.}.}.}.}.}. a-105,Td-13,d-g14,Zd-17{d-23,d-27,d-28,d-32,gd-34,d-39,d-40,d-42,d-51{d-53I\dimendefl}.΍}.}.}.}.}.}.}.}.}.}.}. 6a-105,Ta-108IdirectTswitc9h 卑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-325 $feI\directfalseYҍ}.΍}.}.}.}.}.}.}.}.}. oc-325 ofe"-,Te-931I\directtrue}.΍}.}.}.}.}.}.}.}.}.}. Rc-325,Tc-325TfeI\divL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-248,Tb-427TfeڎI\divideƈ}.΍}.}.}.}.}.}.}.}.}. a-708,Tb-17,b-g433,b-458,b-570,b-573,b-580,gb-583,'(b-605,b-608,b-630,b-g633,b-694,b-698,b-705,b-709,gb-712,hb-716,b-720,b-722,c-g1298,t~c-1300,tc-2082,d-18,d-22,gd-28,ͼd-72,d-75,ͻe-186,e-272,e-968I\dov}.΍}. a-256,Ta-259,a-261,a-268,a-g334,~a-354,a-366,b-989,c-437,gc-444,Sc-614,c-615,c-618,c-619,c-643,p c-649,c-678,c-681,c- 684, c-685, c-687,c-692,c-1220,c-1250,Шc-1251,c-1269,c-1270,c-1274,Шc-1408,c-1412,c-1416,c-1430,Шc-1440,c-1858,c-1863,c-2074,ec-2087,de-721,e-722,e-727,e-729,e-970,e-984,e-985 4\do_arcT160,2c-1994,3c-1996,c-2008,c-2010,c-2022,c-2024,c-2047,c-2073 4\do_boundaryYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. c-128 ȟfe Ԇ,c-1207,?c-1216,?c-1394,e-505,e-600\do_character- }.΍}.}.}.}.}.}.}. $c-1478,Tc-1512Tfe 4\do_character_mapyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}. c-1497,Tc-1501,c-1537,c-1549fe\do_character_no_letterspacingc-1561fe 4\do_character_sidebearingsF}.΍}.}.}.}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1526,Tc-1541Tfe\do_if_definedB}.΍}.}.}.}.}.}.}.}.}.}.}.}. Ae-704 Afe 4\do_list}.΍}.}.}. :pe-342{e-344,Te-407,e-411\do_mapfont}.΍}.}.}.}.}.}.}.}.}. $c-1335,Tc-1341Tfe\do_pl_glyphYҍ}. 3Te-539,Te-541,e-744,e-750\do_shapel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c- 1752,c-1759,c-1773,c-1906,c-1908\do_size}.΍}.}.}.}.}. "c-1762,Tc-1767,c-1774\do_slot}.΍}.}.}.}.}. Tc-52,Tc-87Tfeq,Tc-1205, c-1335,Шc-1383,c-1385,c-1478,e-81,e-173,e-504,e-599,e-922\do_subs}.΍}.}.}.}.}.}.}.}.}.}.}. $c-2091,Tc-2094 4\documentclassB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. qe-53\donedriversYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-186 *YfeL \downloadl}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-23,Te-136,)e-139,g-254YfeLRu,(g-256,g-257,g-358,g-398,g-403,g-420,g-446\downloads_listz}.΍}. 1g-346 1֟YfeL"",Tg-356,g-408i卒RApE 4\e_count(a-168(֟feL",Tc-832{c-837,c-875{c-879,Шc-907,c-908,c-915{c-919,c-923,o(e-742,e-749,e-762,e-1008,e-1010,e-1014,e-1017,e-1022\edef }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-46,Ea-131,Ea-133,a-198,a-210,a-393,~a-420,a-421,a-484,a-485,a-712,Ea-747,Fa-761,a-815,b-79,b-752,'(b-759,b-793,b-798,b-802,Hb-805,Ib-941,c-3,c-4,c-18,c-19,c-52,c-129,c-347,c-353,c-354,Sc-631,c-687,c-786,c-804,c-825,Sc-837,c-839,c-881,c-909,c-913,Sc-919,c-923,c-950,c-964,c-970, c-990,c-1000,c-1160,c-1446,~c-1449,c-1678,c-1805,c-1822,~c-1862,c-1882,c-1883,c-1934,~c-1937,c-1951,c-1953,c-I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx !ݠsog1967,~c-1968,c-1990,c-1991,c- g2004,~c-2005,c-2018,c-2019,c-g2040,~c-2087,c-2089,c-2095,c-g2096,~c-2106,c-2107,c-2116,c-g2132,t~c-2163,tc-2164,d-19,d-21,ge-83,ze-137,e-182,z~e-194,e-239,ge-240,Re-393,e-467,Re-472,e-477,ge-489,Re-513,e-712,Re-717,e-727,ge-848,Re-902,e-907,Re-922,e-933,ge-1059,ye-1066,ze-1076,e-1159,ge-1166, e-1174, f-3,g-123,g-g161,~g-197,g-263,g-281,g-348,gg-367,g-374,g-380,g-426,g-431 +GI\egroupƈ}.΍}.}.}.}.}. a-143,Ta-318,b-277,gb-305,'(b-388,b-435,b-479,b-g518,Eb-647,c-572,c-602,c-683,gc-1022,Шc-1210,c-1254,c-1443,gc-1510,Шc-1738,c-1777,c-2050,ge-205,fe-558,e-590,fe-1008,e-1010I\@eha }.΍}.}.}.}.}.}. Ȧb-142,Tb-929,c-30,c-364I\Else }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-547 6feL"C,Ta-556 +HI\emv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-30I\emph }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-228I\emptyP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-442I\@emptyƈ}. b-140,Tb-143,b-148,c-304,gc-357, c-377, c-393,c-438,c-445I\empty_commandB}. 8a-297 8feL!r,Ta-722,c-88,gc-89,{c-271,{c-276,c-288,c-291,gc-632, c-1215, c-1704,c-1754,c-g1784,~c-1818,c-1819,c-1856,c-g1879,Ec-1920,Fc-1945,c-1961,e-g97,G)e-201,G(e-352,e-360,e-722,ge-723,e-891,f-5,g-127,g-138,gg-156,˚g-159,˙g-184,g-193,g-g201,~g-223,g-318,g-344,g-357,gg-361,g-408,g-409,g-416,g-424I\emptysetl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-656I\encname_to_etxz}.΍}.}.}.}.}.}.}.}. e-11,Te-20Tfer +HI\encodingl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-1 fe Ž,Te-62I\encoding_shapez}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}. 0f-70 0ߟfe(ݎY,Tf-238,f-240,f-607,f-628I\encoding_switchesT}.΍}.}.}.}.}.}. zf-70 zfe(ݎW,Tf-670I\encodingdownloadyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}. vg-257 vYfeL#J,Tg-258,g-360,g-405 qI\encslot_to_etxz}.΍}.}.}.}.}.}.}.}. e-14,Te-26TferI\enctoetxl}.΍}.}.}.}.}.}.}.}.}.}. N170,Te-4Tfe ҥ,Te-42I\endL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. a-150,Ta-579,ga-588,˚a-592,˙a-801,a-805,a-g810,!c-47,c-267,"c-381,e-68,e-70 +HI\end_assign_slot}.΍}.}.}.}. $c-1206,Tc-1220TfeI\end_do_characteryꍑ}.΍}.}.}. $c-1479,Tc-1585TfeI\end_do_slotYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. c-53,gc-87gfeqwq,@c-1206,c-1215,c-1393,c-1479I\end_of_lineYҍ}.΍}.}.}.}.}. - e-284,Te-286,e-289\end_parse_familyyꍑ}.΍}.}.}.}.}.}.}. f-5,Tf-18 \end_strip_spacesyꍑ}.΍}.}.}.}.}.}.}.}.}. Ae-406\end_vpl_varchar}.΍}.}.}.}. $c-1482,Tc-1600Tfe\endautoaliasafm}.΍}.}.}.}.}.}.}.}.}.}. Ae-499\endcomment}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-1001 ؟fe؎\endencodingYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ԅc-1 Ԅfe Ž\endforƈ}.΍}.}.}.}.}.}.}.}. ,b-933 ,feڎ!,Tb-975,b-988\endgroupl}.΍}.}.}.}.}.}.}.}. a-288,Ta-663, a-734,Ea-740,Fa-753,a-768,b-27,b-72,Zb-99,b-119,b-201,b-204,b-264,'(b-294,b-326,b-364,b-424,b-462,b-508,b-547,b-611,b-636,Eb-700,Fb-926,c-33,c-368,c-593, c-721,c-1240,c-1273,c-1404,*e-88,)e-233,e-499,e-1049,e-1063,,e-1073,g-66,g-222,g-298 \endinputl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-13,c-38,c-348,c-373,c-1913,e-287\endinstallfonts}.΍}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}.}.}. 149,Tc-1771Tfe,Tc-2153,f-16\endlist}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-629\endmetrics}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-339 $fe\endmetrics@hook}.΍}. /c-339 /feAp,Tc-387,c-392\endmetrics_text}.΍}.}.}.}.}.}.}.}.}.}.}.}.'gXc-339'gXfee-953,>e-1032,e-1121,e-1182\endsetleftboundary}.΍}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}. Pc-128 Pfe",Tc-1210,c-1217,c-1395\endsetslot}.΍}.}. I-c-51 I-feq,Tc-331,c-1584,e-33\endvarchar}.΍}.}.}.}.}.}. v105,Tc-270Tfe',Tc-1482\ensuremath}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-355\entry_makers_listT}.΍}.}.}.}.}.}.}.}.}.}.}. ԍ}. LFg-85,Tg-178,g-184YfeL,g-191,g-193en9vironments:IfBranch@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-608 *feLIfBranchDummyt}.΍}.}.}.}.}.}.}.}.}.}. *a-630 *feL\errhelp}.΍}.}. a-748,Ta-762,c-1242,e-592\errmessage}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}. a-127,Ta-451,a-471,a-750,a-767,Tc-1244,Td-82,e-573,e-597\error_help_a- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}. a-816 feL 5,Tc-1069,c-1832,e-822,e-1084,4Fg-82,g-131,4Eg-142,g-170\error_help_c- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-816 *feL\error_help_d- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-816 *feL\error_help_e- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-816 *feL\errorcontextlinesT}.΍}.}.}.}.}.}.}.}.}. *a-829 *feL\errorstopmodeB}.΍}.}.}.}.}.}.}.}.}.}.}.}. *g-194I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx I soI\escapechar}.΍}.}.}.}.}.}. xa-129,Ta-134,b-91 I\eTeX }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-339 6feL"C,Ta-495 I\eTeXlogol}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-353 *feLI\eTeXrevision- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-346I\eTeXversionYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-339,Ta-346I\etx_to_fontYҍ}.΍}.}. "c-1140,Tc-1153,c-1167feI\etxtocmap@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. 174,Te-209TfeI\etxtoenc 172,Te-74Tfer,Te-122,g-363,g-418I\etxtopl}.΍}.}.}.}.}.}.}. c133,Tc-1130Tfe,Tc-1718I\etxtovpll}.΍}.}.}.}.}.}. c133,Tc-1130Tfe,Tc-1709I\FD@eval@expr- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. b- g242,b-250feڎ1,b-283,b-287,b-311,gb-315,'(b-374,b-394,b-400,b-g441,b-446,b-468,b-590,b-615,gb-653,4b-659,4~c-101,c-113,c-560I\FD@eval@spec@exprT}.΍}.}.}.}.}.}.}.}.}.}.}.pgVb-464pgVfeڎ0,Tb-488,b-527,b-550,b-562 I\eval_expr@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. b-233 feڎ Ԇ,gb-275,'(b-302,b-386,b-432,b-g477,b-516,b-644,b-726,b-789,gb-937,9c-92,9c-469,c-497,c-821,gc-984, c-997,c-1267,c-1296,c-g2031,e-363,e-963,e-997,e-g1003,e-1027,e-1035,e-1065,e-1075I\eval_expr_to- }.΍}.}.}.}.}. b-233 feڎ Ԙ,Tb-725,gb-935, b-940, c-91,c-513,c-519,gc-525,c-827{c-830,c-870{c-873,gc-907,Rc-943,Re-864,e-875,e-975,ge-977,/0e-994{e-997,//e-1034,e-1035 IFD@evaluate@Tswitc9hg}.΍}.}.}.}.}.}.}.}.}. b-245 feڎI\FD@evaluate@falseT}.΍}. b-225,Tb-245Tfeڎ..,gb-248,'(b-249,b-266,b-363,b-g736,\~c-563,c-592,c-720,c-1088I\FD@evaluate@trueyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.jLԍ}. /b-245 /֟feڎH,Tb-247,c-100,c-112,c-559 I\everyjobl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-160I\everyparl}.΍}.}.}.}.}.}.}. /c-389,Tc-397,c-405I\ExpandAndMakePrintablel}.΍}.}.}.}. b-160 feڎI\expert_encoding}.΍}.}.}.}.}.}. Df-105,Tf- g189,%_f-194,f-336,f-340,f-347,f-g349,%_f-356,f-359,f-363,f-368,f-g515,%_f-519,f-526,f-528,f-535,f-g538,^f-542,f-547,^f-569,f-573,f-677feێI\_expert_falseB}.΍}.}.}.}.}.}.}.}.}.}.f-23,Tf-44I\expert_fontYҍ}.΍}. ͞f-564,Tf-571,f-604,f-624 I\_expert_true- }.΍}.}.}.}.}.}.}. Cf-26,Tf-31,f-38I\FD@expressionB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}. 8b-222,Tb-243,b-245feڎ..,b-g256,b-263,b-284,b-288,b-312,gb-317,'(b-338,b-341,b-354,b-g376,b-396,b-402,b-409,b-443,gb-451,'(b-455,b-492,b-498,b-g531,b-537,b-553,b-597,b-600,b-622,'(b-625,b-655,b-662,b- 663,~b-676,b-683,c-106,c-118,c-121, c-564,c-583,c-715,c-1085 ލ_extensions_warning_Tswitc9hY}.΍}.}. *a-336 *feL\_extensions_warning_falseF}.΍}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}.}.}. 1a-336 1֟feL"",Ta-338,a-394\_extensions_warning_true:a-336:feLP,a-392\extract_font_generation&֍}.΍}.}.}.}.}.}. g-14 YfeN1,Tg-26,g-53,g-57,g-108,g-112 \EXTRASPACE}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 Afe;RgMF\f_count}.΍}.}.}.}.}.}.}. &a-168 &feL"r,Te-544,e-545,)e-547,e-623,e-624,e-626,e-711,e-713,e-732,e-733,e-735\FACE }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 Afe\_fake_narrow_false}.΍}.}.}.}.}.}.}.}. f-421\_fake_narrow_trueT}.΍}.}.}.}.}.}.}.}.}. f-423\fake_narrow_widthT}. [f-424,Tf-474,f-544\fake_shape_Yҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}. 0f-95 0ߟfe(ݎY,Tf-233,f-242,f-250,f-419\fake_shape_c- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-228 feێ ߍ\fake_shape_expert_encoding~}.΍}.}.}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Jf-107,Tf-186Tfeێ\fake_shape_i- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-419 feێ\fake_shape_o- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-245 feێ\fake_shape_o_expert_encodingF}.΍}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Jf-254,Tf-333Tfeێ\fake_shape_o_oldstyle_encoding`}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Jf-258,Tf-375Tfeێ\fake_shape_o_raw_encodingf-252,Ef-263Efeێ\fake_shape_oldstyle_encodingF}.΍}. ԍ}.΍}.}.}.}.}.}.}.}.}.}. [f-117,Tf-124,f-198feێ\fake_shape_raw_encoding&֍}. Jf-100,Tf-130Tfeێ\fake_width_Yҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. f-426 feێ\fake_width_c- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-427 ߍ\fake_width_n- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-428 feێ\fake_width_n_expert_encodingF}.΍}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Jf-437,Tf-512Tfeێ\fake_width_n_raw_encodingf-435,Ef-442Efeێ\fakenarrow}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. f-422 feێ\FAMILYƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 Afe\family_toksYҍ}.΍}.}.}.}.}.}.}.}. c-1694,Tc-1697,c-1702,c-1703,c-1775,c-1776\fd_family@0}.΍}.}.}.}.}.}.}.}.}. $c-1703,Tc-1880Tfe\fd_shapel}.΍}.}.}.}.}.}.}.}.}.}. $c-1773,Tc-1916Tfe\fd_size}.΍}.}.}.}.}.}.}.}.}.}.}. $c-1774,Tc-1923Tfe\fdimen-hn9i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ188 ߍ\Fiv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-547 6feL"C,Ta-557\fifth_of_six- }.΍}.}.}.}.}.}.}.}. Rc-725,Tc-728Tfe\file_list_metricsT}.΍}.}.}. $c-1734,Tc-1745Tfe\file_name@0}.΍}.}.}.}.}.}.}.}.}. c-1158,Tc-1164,c-1785,c-1787,c-1793,c-1822\@filef@und}.΍}.}.}.}.}.}.}.}.}.}.}. Ȃc-26,Tc-360I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx ssoI\finish@packagez}.΍}.}.}.}.}.}.}.}.}.}.}. $c-384 $fe 8͍Ifinstmsc.rcT leE }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L240 8΍I\first_char}.΍}.}. Fza-319 FzfeL!,Ta-381,a-382, ge-321,e-330,e-331,e-563,e-565I\first_of_six- }.΍}.}.}.}.}.}.}.}. Rc-702,Tc-728TfeI\first_of_threez}.΍}.}.}.}.}.}.}. fa-297 ffeL!V,Tg-17I\first_of_two- }.΍}.}.}. a-297 feL,Te-1006,g-368I\first_pl_raw_glyph}.΍}.}.}. e-787,Te-794TfeI\@firstofoneYҍ}.΍}.}.}.}.}.}.}. R|a-410,Tb-71, gb-115,o*b-494,o)b-499,b-533,b-538I\five_hundred- }.΍}.}.}. *a-185 *feL!,Tb-705,b-712I\font }.΍}.}.}.}.}.}.}. b-59,Tb-62,c-244,c-307I\font_count}.΍}.}.}.}. hc-1308,Tc-1353{c- g1355,c-1360,c-1364fen<,c-1677,c-1682I\font_encodinglf-554lfeێ[G,pg-415,og-420,g-450I\font_familyYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. f-18 ۟fe(ݎG, gf-83,1f-89,f-97,0f-104,f-114,f-g121,%_f-132,f-139,f-141,f-146,f-g151,%_f-160,f-162,f-172,f-174,f-g188,%_f-193,f-201,f-208,f-210,f-g215,%_f-220,f-230,f-247,f-265,f-g269,%_f-276,f-278,f-285,f-288,f-g292,%_f-297,f-306,f-308,f-318,f-g320,%_f-335,f-339,f-346,f-348,f-g355,%_f-358,f-362,f-367,f-378,f-g382,%_f-389,f-391,f-398,f-401,f-g405,%_f-410,f-431,f-444,f-448,f-g455,%_f-457,f-464,f-467,f-471,f-g476,%_f-485,f-487,f-497,f-499,f-g514,%_f-518,f-525,f-527,f-534,f-g537,%_f-541,f-546,f-568,f-572,f-g580,^f-585,f-595,^f-597,f-614,f-617 8͍I\font_shapef-70͟fe(ݎ,f-160,f-269,f-276,f-g285,%_f-292,f-306,f-308,f-318,f-g320,%_f-339,f-346,f-355,f-362,f-g382,%_f-389,f-398,f-405,f-444,f-g448,%_f-455,f-457,f-464,f-467,f-g471,%_f-476,f-485,f-487,f-497,f-g499,%_f-514,f-518,f-525,f-527,f-g534,^f-537,f-541,^f-546,f-595,f-614I\font_transforms}.΍}.}.}.}.}.}.}.}.}.}. g-g70,l"g-76,l!g-123,g-127,g-138,g-156YfeL I\font_variant- }.΍}.}.}.}.}. f-18 fe(ݎFh,Tf-595,f-614I\font_weightYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. f-60 ۟fe(ݎG,gf-83,1f-89,f-97,0f-104,f-114,f-g121,%_f-132,f-139,f-141,f-146,f-g151,%_f-160,f-162,f-172,f-174,f-g188,%_f-193,f-201,f-208,f-210,f-g215,%_f-220,f-230,f-247,f-265,f-g269,%_f-276,f-278,f-285,f-288,f-g292,%_f-297,f-306,f-308,f-318,f-g320,%_f-335,f-339,f-346,f-348,f-g355,%_f-358,f-362,f-367,f-378,f-g382,%_f-389,f-391,f-398,f-401,f-405,%_f-410,f-431,f-444,f-448,f- 455,%_f-457,f-464,f-467,f-471,f-476,%_f-485,f-487,f-497,f-499,f-514,%_f-518,f-525,f-527,f-534,f-537,%_f-541,f-546,f-568,f-572,f-580,^f-585,f-595,^f-597,f-614,f-617 33\font_width}.΍}.}. f-65 Пfe(ݎ,Tf-84,f-86,f-90,f-98,f-105,f-115,f-122,f-133,f-140,%_f-142,f-147,f-152,f-161,f-163,%_f-173,f-175,f-189,f-194,f-202,%_f-209,f-211,f-216,f-221,f-231,%_f-248,f-266,f-270,f-277,f-279,%_f-286,f-289,f-293,f-298,f-307,%_f-309,f-319,f-321,f-336,f-340,%_f-347,f-349,f-356,f-359,f-363,%_f-368,f-379,f-383,f-390,f-392,%_f-399,f-402,f-406,f-411,f-432,%_f-449,f-456,f-465,f-472,f-486,%_f-488,f-498,f-500,f-519,f-526,%_f-535,f-542,f-569,f-573,f-581,^f-586,f-596,^f-598,f-615,f-618\FONTDIMEN@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-630 Afe 34\fontdimen@0}.΍}.}.}.}.}.}.}. Ԩb-59,Tb-62,c-244fontinst.rcT leE }.΍}.}.}.}.}.}.}.}.}.}.}. 39,135\fontinstcc}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. =a-44 =ƟfeN\fontinsterrorB}.΍}.}.}. 38a-771 38feL"Ȅ,Tc-1066,c-1792,ec-1829,de-613,e-819,e-1083,4Fg-78,g-128,4Eg-139,g-169\fontinstinfo- }.΍}.}.}.}.}.}.}.}.}. fa-771 ffeL!V,Tg-28 34\fontinstversion a-7 fe UPQd,Ta-17,a-23,a-28,c-1172,c-1888,c-1898,e-64,e-259,e-529,e-770,e-919,e-1100\fontinstwarning}.΍}.}.}.}.}.}.}. ?:a-771 ?:feL Ԇ,c-1061, dc-1515,c-1685,g-31\fontinstwarningnoline 4}.΍}.}. ?:a-395,a-771feL3L,g-149,g-226,g-231,g-235\footnotel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-183\forL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-933 feڎ 34\@for }.΍}.}.}.}.}.}. /b-989,Tc-437,c-444,c-643\for-hname i&}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 98\for_iP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-946,Tb-950\for_iiƈ}.΍}.}.}.}.}.}.}.}. ,b-957,Tb-959,b-967\foreach}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-973 feڎ\foreach_i@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-973 feڎ\format_hex}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}. a-704 feL L@,Te-181,e-192,e-193,e-203\format_hex_i- }.΍}.}.}.}.}.}.}.}. 6a-704 6feL"C,Ta-723\four_spacesYҍ}.΍}.}.}.}.}.}.}.}.}. 0a-773,Ta-782,a-792,a-815ӟfeLs,e-104,e-108,e-111,De-113{e-115,De-166,e-168\fourth_of_sixB}.΍}.}.}.}.}.}.}. Rc-705,Tc-728Tfe 34\frac }.΍}.}.}.}.}.}.}.}.}.}. ,b-598,Tb-623,b-663\from }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-533\from_mtxl}.΍}.}.}.}.}.}.}.}.}.}.}. 6g-118,Tg-122TYfeLI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soI\from_unknown- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}. _vg-58,Tg-60,g-113,g-115,g-148YfeL I\fromafm}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 194,Te-g327,e-825fe\,f-150,f-192,f-219,g-99YfeN I\fromany}.΍}.}.}.}.}.}. c-1785,Te-847Tfe',Te-1079 CuI\frommtx}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 194,gc-1730,qe-832qfe<,qe-935,qe-1102,f-g296,f-366,f-409,f-475,f-545,g-107YfeLI\fromplƈ}. d194,Te-533,e-835fe',g-104YfeL,g-137 I\fromplgivenetxz}.΍}.}.}.}.}.}.}.}.}.}.}. Ae-835 Afe CuI\fromvpl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-126 *YfeLI\fulldownload- }.΍}.}.}. 1g-256 1֟YfeL"",Tg-359,g-404I\futurelet@0}.΍}.}.}.}.}. Hb-102,Tb-131,c-412鍒GI\g-hname i-}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ121 CtI\g_count}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-168 *feLI\g_eval_expr_toz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. lJb-233lJfeڎc,Tc-945,c-946,c-1034{c-1036I\g_letP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-291 ?:feL Ԇ,gc-1911,Gc-1920,c-1931,g-201,g-223 CtI\gdef }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 0a-136,Ta-g314{a-317,!@a-462,a-570,a-576,ga-581,˚a-589,˙a-593,a-595,a-g598,~a-606,a-652,a-701,a-816,ga-821,ha-825,b-115,b-222,b-g784,~b-785,b-822,c-299,c-301,gc-1085,Шc-1223,c-1234,c-1698,ge-7,Ibe-283,Ice-1058,e-1070,f-19{gf-22,9f-27,f-28,9f-33,f-34,f-37,gf-40,7f-41,8f-61,f-62,f-66,f-67,f-g71{f-73,f-75,f-77,f-78,f-112,f-g119,%_f-236,f-238,f-240,f-424,f-g555,%_f-556,f-558,f-560,f-562,f-g564,f-565,f-571,f-583,g-87,g-238I\generalpltomtxz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}. ~y184,Tc-1807,c-1810,e-500fe',ge-511,e-838,e-844,e-851,e-858I\generate_off_command9}.΍}. b-864,Tb-883Tfeڎ CtI\generic@if}.΍}.}. ?^a-551 ?^feL Ԫ,Tb-737,b-839,gb-842,b-845,b-848,c-326,c-g607,c-1113,c-1127,c-1286,c-1875I\generic_errorB}.΍}.}.}.}.}.}.}. 6a-742 6feL"C,Ta-772I\generic_info- }.΍}.}.}.}.}.}.}.}. 6a-729 6feL"C,Ta-791I\generic_warning}.΍}.}.}.}.}. 6a-736 6feL"C,Ta-781 CtI\get_hstringNe-951,>e-1040,e-1119,e-1167I\glyphrule@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-941 $fe DI\glyphspecial- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-962 $feI\glyphwarning- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-962 $feI\GN-hfont'sN}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ^e-1060,Te-1071\i-hintii}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91\identity_one- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}. Fa-297 FfeL!,Ta-642,a-724,b-167,c-453,gc-823,c-1783,gc-1817,e-410\ifv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 0a-147,Ta-498,aa-706,b-74,b-121,b-150,b-199,'(b-404,b-660,b-664,b-678,Zb-898,b-901,b-902,c-534,e-321,e-330,e-331,e-503,e-565 4\@ifL}.΍}.}.}.}.}.}.}.}.}.}.}.}.$a-131,Ta-133{a-135\if@L}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-135,Ta-136\if@mtxpackage@headed@ 4}.΍}.}.}.}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}.}.}.}. /c-384 /feAp,Tc-395,c-402\if@tempswa}.΍}.}.}.}.}.}. Ȕb-96,Tc-447,c-564\if_a_P}.΍}. a-183,Ta-183TfeL,Ta-391,a-496,a-511,"c-422,c-1864,c-1870,e-198,|e-897,g-77,g-176,g-396 4\if_defined}.΍}.}. Fza-495 FzfeL!,Tb-826{b-828,c-1112,[c-1764,[c-1826,e-444,e-446,Fe-466,Ee-471,e-624,g-16\if_equall}.΍}.}.}.}.}.}. 1a-535 1֟feL"",Tg-213,g-436\if_expert_}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. f-51,f-58fe(ݎ,,3f-102,f-253,2f-436,f-559,f-566\if_extensions_warning_l}.΍}.}.}.}.}.}. ԍ}.΍}.}.}.}. va-336 vfeL#J,Ta-337,a-343,a-364\if_fake_narrow_}.΍}.}.}.}.}.}. Jf-420 Jfeێ%,Tf-429\if_falsel}.΍}.}.}.}.}.}.}.}. a-399,Ta-491TfeL,a-514,a-531,a-540,b-730,b-831, Fc-1121,c-1277, Gc-1730,e-972 4\if_file_existsz}. la-60,Ta-67,a-161,a-536feL3L,c-1806,c-1809,e-826,e-833,)e-836,e-842,e-849,e-850,e-853,&e-857,&f-7,f-88,f-96,f-103,%_f-113,f-120,f-131,f-156,f-187,%_f-200,f-229,f-246,f-264,f-268,%_f-302,f-334,f-338,f-377,f-381,%_f-430,f-443,f-447,f-481,f-513,f-517,f-567,f-579,g-54,g-109\if_including_map_T}.΍}.}.}.}.}.}.}.}.}. c-1155,c-1155fen<,c-1185,c-1487,c-1675\if_is_glyphYҍ}.΍}.}.}.}.}.}.}.}. $c-1117,Tc-1120I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soI\if_oldstyle_f-49,|f-58|fe(ݎ,|f-74,|f-111,f- g237,^f-257,f-557,^f-578,f-599,f-619 33I\if_orP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-524 6feL"C,Tg-436I\if_textcomp_- }.΍}.}.}.}.}.}.}.}.}. Jf-671,Tf-676Tfeێ 34I\if_true}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-491 ?:feL Ԇ,ga-516,a-526,a-529,a-543,b-g728,b-833,c-1118,~c-1275,e-974I\if_undefined- }.΍}.}.}.}.}.}.}.}.}.}. ?:a-495 ?:feL Ԇ,gc-820, c-869,c-1093,c-1121,c-g1352,Zc-1513,c-1751,c-1753,d-g31, d-38, d-68,e-591,e-1007,gg-247,g-362,g-390,g-417,g-437I\ifareglyphsYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1115 feIIfBranchT(en9vironment)=ҍ}.΍}.}.}.}.}.}. *a-608 *feLIIfBranchDummyT(en9vironment)}.΍}.}. *a-630 *feL 34I\ifcaseƈ}.΍}.}.}.}.}.}. a-258,Ta-713,b-35,gb-339,'(b-342,b-453,b-494,b-g499,Z~b-533,Zb-538,b-684,e-646,ge-655,e-662,e-671,e-681,e-689I\ifcatP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-134,Tb-254I\ifcsnamel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-499I\ifdimP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-245,ga-346,Ea-379,c-1498,c-1552,c-g1684,hc-1689,c-1721,d-46,d-g47,&~e-274,e-276,&}e-612,g-321,gg-326,g-373,g-379,g-425,g-430I\ifdirectl}.΍}.}.}.}.}.}.}. /c-325,Tc-325Tfe',Tc-326 34I\ifeofP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-538I\iffalse}.΍}.}.}.}.}.}.}.}.}.}.}.}. 0a-133,Ta-g398,Za-491,a-493,b-193,b-248,gb-1001,c-7,c-36,c-97,c-341,c-g371, Fc-1114,c-1746, Gc-1748,e-784I\ifFD@evaluate@z}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}. 8b-245 8feڎ ,Tb-247,b-248,b-g285,b-289,b-313,b-318,b-378,gb-397,'(b-411,b-444,b-457,b-g503,b-542,b-556,b-602,b-627,gb-656,4b-692,4~c-102,c-114,c-562I\ifFD@slot@known@ c-63,Tc-71,c-80,gc-90gfeqwq,l"c-96,l!c-97,c-117,c-160,c-309I\ifFD@spec@}.΍}.}.}.}.}.}.}.}. a-36,Ta-192TfeL,ga-193,(c-42,c-48,c-175,c-179 34I\ifFD@swal}.΍}.}.}. b-178 Пfeڎ Ԫ,Tb-199,b-215,gb-262,o*b-355,o)b-362,b-917,b-922I\ifFD@tight@ za-566,Ta-608,a-608feL,a-611I\IfFileExists- }.΍}.}.}.}.}.}.}.}.}. Ȃc-24,Tc-358I\ifiscommandYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. 491,Tb-825TfeڎI\ifisdim}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 491,Tb-825Tfeڎ 34I\ifisglyph@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.pc-764,Tc-1054,c-1060,c-1112fe,gc-1124, c-1224,c-1342,c-1586I\ifisinslot}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-1265 feI\ifisint}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. I91,gb-825gfeڎ},.Dc-314,c-831,c-874,c-1257,~c-1315,c-1322,c-1371,c- 1386,Gc-1514,c-1542,Fc-1797,e-543 [n\ifiskernl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-596 $fe [m\ifisstr}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. I91,b-825feڎ3,c-1789,e-110,e-165,e-815,e-921,e-1004,e-1080,g-456\IFKW-P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-1839 fe\IFKW-hkeywordpii}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ћ152\IFKW-encodingB}.΍}.}.}.}.}.}.}.}.}.}.}. c-1852 fe [m\IFKW-mtxasetxB}.΍}.}.}.}.}.}.}.}.}.}.}. c-1163 fe\IFKW-optionYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1857 fe\IFKW-scaledYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1840 fe\IFKW-suffixYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1848 fe\ifmissingslotsz}.΍}.}.}.}.}.}.}.}.}. e-2,Te-28\ifnumP}.΍}.}.}.}.}.}.}.}.}.}. %a-24,Ta-126,a- 263,~a-269,a-272,a-281,a-367,a-368,˚a-380,˙a-431,a-438,a-440,~a-450,a-457,a-470,a-476,a-561,˚a-574,˙a-587,a-601,a-654,~a-668,a-675,a-684,a-686,a-692,b-6,b-11,b-15,b-21,b-22,b-74,b-83,b-121,b-150,b-172,b-175,b-190,b-257,b-290,b-316,'(b-322,b-375,b-395,b-401,b-404,b-405,b-412,b-416,b-417,'(b-442,b-447,b-448,b-478,b-489,b-504,b-517,b-528,b-543,'(b-557,b-561,b-591,b-593,b-599,b-616,b-618,b-624,b-654,'(b-660,b-664,b-671,b-675,b-678,b-679,b-687,b-696,b-707,'(b-714,b-721,b-727,b-791,b-792,b-890,b-938,b-943,b-944,}b-952,c-562,c-822,c-908, c-927,c-929,c-985,c-988,c-998, c-1019, c-1269,c-1370,c-1387,~c-1422,c-1448,c-1528,c-1531,~c-1534,c-1576,c-1593,c-1604,~c-1613,c-1622,c-1631,c-1640,~c-1677,c-1841,c-1896,c-1897,~c-2032,c-2034,c-2046,c-2085,bc-2086,e-78,ce-106,e-107,e-149,Re-154,e-180,Re-333,e-335,e-367,Re-400,e-563,Re-893,e-894,e-926,e-1017,e-1047,e-1135,e-1294,Sg-26,g-41,Tg-53,g-57,g-69,l"g-94,l!g-108,g-112,g-303,g-308\ifnumberl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-724 feڎ [m\ifoddP}.΍}.}.}.}.}.}.}.}.}. &b-406,Tb-418,b-419,b-421,b-568,b-571,b-578,b-581,'(b-594,b-603,b-606,b-619,b-628,b-631,b-665,b-672,b-680,o*b-695,o)b-706,b-713,b-721\ifoptionl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-1860 feI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soI\ifslot@comment@}.΍}.}.}.}.}.}. Ȃc-80,Tc-294 jI\iftokeepl}.΍}.}.}.}.}.}.}.}.}.}.}.}. 203,Te- g1047,e-1133,e-1151,e-1180,e-1294 jI\iftrueƈ}.΍}.}.}. pa-131,Ta-494,a-523,a-g552,Eb-247,Fb-1002,c-96,e-327,ge-534,e-557,e-935,e-974,e-1103I\@ifundefined- }.΍}.}.}.}.}.}.}.}. b-140,Tb-199I\ifwarningspecialsT}.΍}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}. "c-1653 "fe%,Tc-1656,c-1661 jI\ifxL}.΍}.}.}.}.}.}.}.}.}.}.}. a-9,Ta-76,a-153,ga-211,˚a-321,˙a-328,a-339,a-g358,~a-433,a-500,a-513,a-520,ga-535,a-633,a-639,b-106,b-g135,b-251,b-465,b-557,b-745,gb-751,'(b-757,b-763,b-783,b-g830,Zb-861,b-863,b-872,c-246,gc-251,Sc-263,c-413,c-425,c-431,gc-436,Sc-438,c-445,c-456,c-486,gc-598,Sc-602,c-625,c-630,c-632,gc-691, c-697,c-1266,c-1274,c-g1426,~c-1521,c-1563,c-1566,c-g1729,~c-1737,c-1781,c-1784,c-g1866,~c-1924,c-1936,c-1938,c-g1952,~c-1954,c-1969,c-1992,c-g1995,~c-2006,c-2009,c-2020,c-g2023,bc-2043,e-82,ce-409,e-457,ge-533,iBe-545,iAe-569{e-572,e-704,ge-721,Re-733,e-753,Re-962,e-972,gf-25,af-30,f-36,af-600,f-620,g-g27,Eg-127,Eg-138,g-168,g-172,g-g173,~g-204,g-285,g-286,g-302,gg-306,˚g-318,˙g-334,g-338,g-g361,~g-385,g-386,g-397,g-399,gg-409,g-416,g-435,g-439,g-440I\ignore_parensB}.΍}.}.}.}. 0e-507,Te-538,ge-555, _e-576{e-578, _e-581{e-587I\ignorespaces- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-564 jI\immediate@0}.΍}.}.}.}.}. &a-25{a-27,Ta-29,ga-30,a-63,a-70,a-102,a-164,a-g415,!@a-417{a-419,a-458,a-464,ga-474,˚a-477,˙a-483,a-537,a-g539,~a-542,a-733,a-739,a-745,ga-759,Ea-764,c-1317,c-1417,c-g1423,~c-1427,c-1596,c-1607,c-g1616,Ec-1625,Fc-1634,c-1659,e-g724,ؑf-50,ؐf-52,f-54,f-80,f-g137,%_f-158,f-206,f-274,f-283,f-g304,%_f-344,f-353,f-387,f-396,f-g453,^f-462,f-483,^f-523,f-532,f-593I\includewarningj237,Tg-153,g-202YfeL,gg-288,g-338,g-387,g-400,g-441I_including_map_Tswitc9h}.΍}.}.}.}.}. c-1155 fe jI\_including_map_false9}. $c-1149,Tc-1155TfeI\_including_map_truefč}.΍}. $c-1155 $fe#,Tc-1156\init_afml}.΍}.}.}.}.}.}.}. - e-342,Te-343,e-353fe 9΍\init_cc}.΍}.}.}.}.}.}.}.}. - e-344,Te-382,e-488 9ύ\inputP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fa-77,Ta-634\input_metricsB}. "c-1708,Tc-1716,c-1733fe\input_mtx_as_etxyꍑ}.΍}.}.}.}. Tc-327 Tfe',Tc-1164\input_mtx_filez}.΍}.}.}.}.}. $c-1740,Tc-1779Tfe\inputetxl}.΍}.}.}.}. _101,Tc-1Tfe Ž,Tc-1158,e- 86,e-176,e-210,e-506,e-602,e-932\InputIfFileExistsT}.΍}.}.}.}.}.}.}.}.}. *a-227\inputlinenoYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-814\inputmtxl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. !`"112,Tc-336,c-339fe',c-422,c-431,c-439,c-448,c-1790,c-1795,e-789,ue-938,ue-1106,g-55,g-110\insc@unta-99,a-107,a-108,a-118{a-123 9΍\insertƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-125\install}.΍}.}.}.}.}.}.}.}.}.}.}. $c-1792,Tc-1829\installfamilyB}.΍}.}.}.}.}. 0149,Tc-1701Tfe, c-1770,s>c-2160,s=f-8,f-10,f-11,f-13\installfontYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}. v149,Tc-1706Tfe,Tc-2154,f-594,f-613 9ύ\installfontasB}. "c-1710,Tc-1720,c-1750fe\installfonts- }. 149,Tc-1694Tfe,Tc-2152,f-6\installraw_storemapfč}.΍}. $c-1716,Tc-1727Tfe\installrawfontz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}.}.}. 149,Tc-1706Tfe,Tc-2157,f-159,^f-171,f-305,^f-317,f-484,f-496\intL}.΍}.}.}.}.}.}.}.}.}.}. 91,Ta-247,b-167,b-349feڎ3,'(b-772,b-811,b-839,b-960, c-314,c-321,c-465,c-493,c-832, c-875,c-1258,c-1316,c-1323,~c-1327,c-1329,c-1373,c-1387,c-1543,e-244,e-544,e-865{e-867,ye-871,ze-876,e-877,e-882,iBe-893,iAe-894,e-898{e-901,e-964,Re-965,e-968,Re-975,e-977,e-994{e-996,e-998,e-999,e-1003,e-1027,e-1034,e-1036,e-1037 9΍\FD@integer@func}. Hb-358,Tb-367Tfeڎ..,Tc-716\InvisibleCharPrefixfč}.΍}.}.}.}.}.}.}.}.}. hb-1 hfe ގ\InvisibleCharSuffixfč}.΍}.}.}.}.}.}.}.}.}. hb-1 hfe ގ\italcorr_expressionfč}.΍}.}.}.}.}.}.}.}.}.  ԍ}.΍}. 181,Te-242,e-364,e-401,e-403\italicƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Tc-701 Tfe',Tc-1575\italicslant_nameyꍑ}.΍}.}.}.}.}.}.}.}.}. Ae-959 Afe\item }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-628\itemindent}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-626\itemsep}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-623\iterate}.΍}.}.}.}.}.}.}.}.}.}.}.}. 6a-145,Ta-146\itshape}.΍}.}.}.}.}.}.}.}.}.}.}.}. b-222,Tb-366\@ivL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. zd-72,Td-80Tfex܎I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx 0so]J -I\jobname}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a- g427,c-1175,c-1887,e-41,e-120,ge-246,e-516,e-773,e-909,e-1090[捒K -I\k3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 115,gc-473,Sc-474,c-501,c-502,c-535,gc-539,Sc-569,c-598,c-602,c-612,gc-626, c-677,c-686,c-697,c-1397I\k_unless_to_UB}.΍}.}.}.}.}.}.}. Rc-612,Tc-624I\kern }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-355I\kerning}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-567 $feI\kill_glyph}.΍}.}.}. ye-1071,Te-1076,e-1127feI\killglyph@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.j203,Te-1068Tfe,Te-1279,e-1286{e-1288I\killglyphweightedT}.΍}.}.}.}.}. n203,Te-1068TfeI\KRNL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-725 Afe[卒 +LI\l3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Rc-571,Tc-575I\l-hname i-}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ115I\l_inv_scaleYҍ}.΍}.}.}.}. b-718 feڎ#x,Te-899,e-901I\l_rounded_thousandths 4}.΍}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}. b-703 feڎ|,Tc-833{gc-836, ac-876{c-879,c-915{c-918I\LABELP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-704 AfeI\labelP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-324 $fe -I\LABEL_boundarychar}.΍}.}.}.}.}.}.}.}. Ae-704 AfeI\LABEL_slot}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-704 AfeI\latex_encodingz}.΍}.}.}.}.}.}.}.}.}.}.}. f-554 feێI\latex_family- }.΍}. f-8,Tf-10,f-11,f-13,gf-22,1f-37,f-81,0f-167,f-179,f-g313,^f-325,f-492,^f-504,f-609,f-632I\latex_mtx@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. f-554 feێI\latex_shapeYҍ}.΍}. Mf-70 Mfe(ݎvs,Tf-169,f-181,f-g315,^f-327,f-494,^f-506,f-611,f-636I\latex_variantB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 7f-18 7fe(ݎI\latex_weight- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}. $ f-60 $ fe(ݎL,Tf-82,f-168,f-180,f-g314,^f-326,f-493,^f-505,f-610,f-634 -I\latex_widthf-65fe(ݎ,f-82,f-168,f-180,f-g314,^f-326,f-493,^f-505,f-610,f-634I\latin_encoding}f-554}feێX,f-667,f-668,f-672I\latin_encodings}.΍}.}.}.}.}.}.}. zf-92,Tf-666TfeێI\latin_shapeYҍ}.΍}.}.}.}.}.}. $f-70 $fe(ݎM,Tf-661{f-664I\latin_shapes- }.΍}.}.}.}.}.}.}.}.}.}. zf-68,Tf-660TfeێI\latin_weight- }.΍}.}.}.}.}. $f-60 $fe(ݎM,Tf-640{f-652I\latin_weightsB}.΍}.}.}.}.}.}.}.}.}. zf-15,Tf-639TfeێI\latin_widthYҍ}.΍}.}.}.}.}.}. f-65 fe(ݎFh,Tf-655,f-656 -I\latin_widths- }.΍}.}.}.}.}.}.}.}.}.}. zf-63,Tf-654TfeێI\latinfamilyYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. gf-1 gfe ߎI\lccodeƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}. $c-1225,Tc-1235I\lccode50TregisterVG}.΍}.}.}.}.}.}.}.}.}.}.}.}. ћ136\leavevmode}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. hb-3 {\FD@left@priorityyꍑ}.΍}.}.}.}.}.}.}.}.}. b- 399,b-404,b-417,b-418,b-658,b-664,o*b-665,o)b-671,b-672,b-678 |\left_brace_char}. a-307 feL-],Tc-1918,e-101\leftmargin}.΍}.}.}.}.}.}.}.}.}.}. 6a-615,Ta-620\@let@token}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. &Vb-102,Tb-106,b-131,b-134,b-135\lfloorƈ}.΍}.}.}.}. 6c-209,Tc-214,c-219,c-226\LIGL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 Afe\FD@lig-hligUiB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ106\Ligaturel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 105,Tc-170Tfe\ligaturel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. %105,Tc-170Tfe',Tc-1396,c-1423,c-1427\LIGTABLEl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 Afe\linepenaltyYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-247\lineskiplimitB}.΍}.}.}.}.}.}.}.}.}.}.}.}. *a-245\list }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-610\list-hkeyUi*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ181\list@item@counterT}.΍}.}.}.}.}.}.}.}.}. *a-252 *feL\list_def|e-414{e-419,Ce-425,e-482,e-492\list_of_options8c-1819,Tc-1858,c-1860fe\list_subs_vertices}.΍}.}.}.}.}.}.}. c-2071\load_file_unless_loaded OZc-428,Tc-430\load_true_unless_loaded OZc-421,Tc-424\long }.΍}.}.}.}.}.}.}.}.}.}. c-775,Tc-783,c-1584\loop }.΍}.}.}. Ya-145,Ta-147,a-431,b-73, b-890,Mc-1370,Mc-1677,e-76,e-148\lose_measure- }.΍}.}.}.}. 38a-698 38feL"Ȅ,Tc-1303,c-1643,~c-1722,}d-11,g-323,g-328,g-375,g-381,g-427,g-432 |\lowercase@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-3,c-18,c-254,c-353,c-1226,c-1236,cc-1882,c-2163,be-531,g-274\lowercase@filez}.΍}.}.}.}.}. Vc-18,Tc-19,c-21,Uc-24,c-353,Vc-354,c-356,c-358 |\lowercase_filez}.΍}.}. c-3{c-5,Tc-9,c-1882{c-1886,jc-1893,c-2163{c-2166\LWFN_get_PS_font_file 4}. 6g-261,Tg-284TYfeL \@lxxiP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.d-2ટfe ގ,Td-17>PM |\@Mv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. =a-90\@mv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Da-89,Tc-562\m@ne }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 0a-101,Ta-102,~a-118,a-129,a-267,a-429,a-430,˚a-438,˙a-457,a-462,a-476,9a-733,9b-571,b-581,b-606,b-631,Ed-23,d-63,Dd-66,e-565,e-1008,,e-1017,g-20,g-198,g-309 |\m@th }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-190\macroparameterz}.΍}.}.}.}.}.}.}.}. 436,Tb-221Tfeڎ\main_remove_Usz}.΍}.}. /c-614,Tc-618,c-629\make_hdriveri=f}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ236I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx TQsoI\make_assignmentsyꍑ}.΍}.}.}. $c-1168,Tc-1204Tfe 8I\make_characters}.΍}.}.}.}. $c-1188,Tc-1476TfeI\make_debug}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-315 *YfeL ͍I\make_dvipdfm- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *g-414 *YfeLI\make_dvips}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-355 *YfeLI\make_encl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. e-87,Te-89Tfer 8I\make_etxl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. e-17,Te-38TferI\make_factorYҍ}.΍}.}.}.}.}. 38a-666 38feL"Ȅ,Tc-1327, gc-1347,Шc-1373,c-1449,c-1525,gc-1529,Шc-1532,c-1535,c-1543,gc-1649,Шc-1650,c-1664,c-1668,ge-795,ge-801{e-804,g-161,g-164 8I\make_factor_iB}.΍}.}. 1a-669,Ta-671,a-674feLI\make_factor_iiz}.΍}.}.}.}.}.}. 6a-676,Ta-682TfeLI\make_factor_iii}.΍}.}.}.}.}. 6a-678,Ta-689TfeLI\make_fontdimens}.΍}.}.}.}. $c-1186,Tc-1367TfeI\make_headerYҍ}.΍}.}.}.}.}.}.}.}. $c-1184,Tc-1307TfeI\make_inputetxB}. "c-1139,Tc-1152,c-1157feI\make_ligtableB}.΍}.}.}.}.}.}. $c-1187,Tc-1380TfeI\make_map_entryz}.΍}.}.}.}.}.}.}.}. Ԗg-63,Tg-68TYfeN ͍I\make_mapfontsB}.΍}.}.}.}.}.}. $c-1185,Tc-1332Tfe 8I\make_pltotfYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *g-454 *YfeLI\make_slots_relaxyꍑ}. /c-616,Tc-620,c-623 8I\make_slots_U- }.΍}.}.}.}. /c-613,Tc-617,c-622I\make_tidy@0}.΍}.}.}.}.}.}.}.}.}. $c-1189,Tc-1673TfeI\makebox}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-59I\makemapentry- }.΍}.}.}.}.}.}. 5230,Tg-51TYfeN ,Tg-95 ͍I\MakePrintableB}.΍}.}.}.}.}.}.}.}.}.}. b-88 ܟfex܎G, gb-162,'(b-180,b-196,b-213,b-g261,b-353,b-912,b-919,c-58,gc-136, c-581, c-582,c-645,c-714 8I\maker_dol}.΍}.}.}.}.}.}.}.}. g-134,Tg-145,gg-154,g-179,g-184YfeL,g-187,g-192I\makerightboundaryT}.΍}.}.}.}.}.}.}.}.}.}.}.jLԍ}. e105,Tc-153,c-229fe',c-1208,c-g1211,c-1218,c-1244,c-1266,c-1318I\MAPL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeI\mapcommandsYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. c-724 ȟfe Ԇ,gc-909,@c-919,c-1553,c-1556,c-1578I\MAPFONT}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeI\mapfont_scaling}.΍}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}. fc-1290 ffe&",Tc-1347,c-1352{c-g1354,~c-1358,c-1363,c-1639,c-g1643,c-1649,c-1650,c-1664,c-1668I\mapfontsl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.lJc-724lJfe\,Tc-913,c-923,c-1343,c-1499I\mapfrags_subsystem}.΍}.}.}.}.}.}.}. eg-1 eYfe UP,gg-28,'(g-31,g-78,g-128,g-139,gg-149,g-169,g-226,g-231,g-235I\mathchardefYҍ}.΍}.}.}.}.}.}. ?La-88{a-91,Ta-g185{a-189,a-655,b-795,c-1353,gd-5,_d-9,d-10,_d-80,e-458,e-462I\mathcodel}.΍}.}.}.}.}.}.}.}.}.}.}. Ra-654{a-656\mathopƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 6b-368,Tc-584 \mathrmƈ}.΍}.}.}. xb-173,Tb-368,c-584,c-1085\maxL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ?La-250,Tb-472Tfeڎ.., b-557,N c-945,Nc-947,c-1082,e-391\max_mathchardef}.΍}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}. a-185 ֟feL ",Tb-791,c-2083,c-2086\maxdimenl}.΍}.}.}.}.}.}.}.}.}.}.}. b-486,Tb-525\FD@maxmin@comma}. ,b-488,Tb-527,b-549feڎ\mbox }.΍}.}.}.}.}.}.}.}.}.}. *a-209,Tb-186,b-263\meaning}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-887\medskipamounta-240,a-566,a-617,c-408\message_breakB}.΍}.}.}.}.}.}.}.}.}.}.}. c-1516\message_numberz}.΍}.}.}.}.}.}.}.}.}.}. c-1517\MessageBreak- }.΍}.}.}.}. Ȕb-929,Tc-30,c-364\messagebreak- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}. a-396,Ta-401,a-727feL,a-732,a-738,˚a-746,˙a-749,a-760,a-763,~a-775,a-784,a-794,a-817,a-819,Ea-823,c-1062,c-1067,c-1796,ac-1797,bc-1832,e-820,g-81,Ug-131,g-142,Vg-150,g-151,g-227\metrics}.΍}.}.}.}.}.}.}.}. c-339 Ɵfe"Ȅ,Tc-1734,c-1736,g+e-257,g*e-527,e-917,e-1098\metrics_given_encodingc-1787,Tc-1804Tfe\minL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-251,Tb-511Tfeڎ\minimum_kern- }.΍}.}.}.}.}.}.}.}.}. c-1329,c-1448,*e-244,e-268,e-333,e-335\missingslotsfalseT}.΍}.}.}.}.}.}. e-13,Te-31\missingslotstrueyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. ӡe-3\mkernP}.΍}.}.}.}.}.}.}.}.}. ,b-172,Tb-175,b-190\@MML}.΍}.}.}.}.}.}.}.6a-91,Ta-149,a-154,c-2075\@mmmmlxviiiYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.d-2ટfe ގ,Td-18\monthP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. qc-1896,Te-106\movertƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-982 ȟfe Ԇ,c-1033, c-1056,c-1076,c-1101\moveupƈ}.΍}.}.}.}.}.}.}. Rc-982 Rfe ,Tc-1057,c-1077\mtx_package_given_filec-414,Tc-419\mtx_package_separate_files~}.΍}.}.}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Rc-416,Tc-427@mtxpackage@headed@Tswitc9h!}.΍}.}.}. $c-384 $fe\@mtxpackage@headed@falsec-384ğfe,Tc-388\@mtxpackage@headed@true OZc-384 OZfe a,Tc-398\mtxtomtxl}.΍}.}.}.}.}.}.}.}. $198,Te-816,e-890fe\mtxtomtx_endsetglyph9}.΍}. e-953,Te-1030Tfe\mtxtomtx_glyphpccT}.΍}.}.}.}. e-951,Te-1033Tfe\mtxtomtx_redefinitions*e-937,Te-943Tfe\mtxtomtx_samesizeT}.΍}.}.}.}. e-952,Te-1030Tfe\mtxtomtx_setdim}.΍}.}.}.}.}. e-945,Te-987Tfe\mtxtomtx_setglyphT}.΍}.}.}.}. e-950,Te-1030Tfe\mtxtomtx_setint}.΍}.}.}.}.}. e-944,Te-959Tfe\mtxtomtx_setkernyꍑ}.΍}.}.}.}. e-949,Te-1026Tfe\mtxtomtx_setscaledrawglyph~}.΍}.}.}. ԍ}.΍}.}.}.}.}.}.}.}.}.}. - e-947,Te-948,e-993fe\mtxtomtx_setstr}.΍}.}.}.}.}. e-946,Te-987TfeI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx !soI\mtxtopl 192,Te-765Tfe',Te-817,e-829,e-855 6ۍI\mulL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-381 feڎ 6܍I\multiplyl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-710, gb-19,O(b-387,O'b-411,b-645,b-g693,Ɍb-719,c-833{c-836,c-876{gc-879,[Rc-915{c-918,c-1299,c-g1301,c-2081,e-188,e-964,e-g966,3e-998,3e-999,e-1036,e-1037m NI\@namedefl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-g85{b-87,+b-149,*b-195,b-212,b-227 6܍I\@nameusel}.΍}.}.}.}.}.}.}. /c-176,Tc-180,c-184I\@neL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Rja-76,ga-83,)a-113,a-256,a-262,a-263,ga-277,ba-432,a-439,b-82,b-172,gb-175,'(b-176,b-188,b-190,b-g262,b-316,b-346,b-362,b-395,gb-401,'(b-404,b-416,b-417,b-g442,b-461,b-507,b-546,b-569,gb-579,'(b-591,b-593,b-604,b-g616,b-618,b-629,b-654,b-660,gb-671,'(b-675,b-678,b-690,b-g696,` b-714,b-721,c-83,c-167,c-g591,_c-719,_c-1375,d-60,d-61,e-g79,e-155,e-156,e-458,e-461,e-565I\needsfontinstversion9}.΍}.}.}.}. Rja-20 RjfeNG,ge-64,e-259,e-529,e-919,e-1100 6܍I\needsTeXextensionT}.΍}.}.}.}.}.}.}.}.}. *a-388 *feLI\NeedsTeXFormatz}.΍}.}.}.}.}.}.}.}. Ԗa-10,Ta-14I\negL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-249,Tb-371TfeڎI\never_dol}.΍}. \a-334 \feL 3,Tc-2074,e-722,e-729I\newcommand}.΍}.}.}.}.}.}.}.}. a-35,Ta-239, ga-243,Ea-246,Fa-253,a-553,b-29,gb-33,Zb-34,b-160,b-178,b-240,gb-771,'(b-775,b-779,b-810,b-g814,Lb-818,Lb-911,c-56,c-99,c-g111, c-134,c-158,c-174,c-178,gc-182,Sc-242,c-250,c-258,c-297,gc-301,Sc-302,c-307,c-308,c-319,gc-326,Sc-435,c-478,c-506,c-549,gc-552,Sc-555,c-558,c-637,c-665,gc-668,Sc-671,c-778,c-798,c-851,gc-856,Sc-892,c-895,c-902,c-937,gc-957,H c-977,H c-979,c-1008,c-g1009,~c-1029,c-1030,c-1039,c-g1042,Üc-1045,c-1048,c-1108,g-253I\newcountl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-107,ga-169{a-175, a-234,a-235,a-g252,9a-559,9b-234,b-245,b-246,gb-334,(\c-90,c-95,c-755{c-758,gc-761, c-762,c-1364{c-1366,ge-268, e-345{e-351, e-1126,g-3\newdimenl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a- 108,!@a-138,a-139,a-176{a-179,a-190,Ea-236,c-1291,c-1293,c-1294,cc-1305,c-1306,be-281,g-157 \newenvironmentz}.΍}.}.}.}.}.}. 6a-609,Ta-630 \newif a-129,Ta-183,a-193,a-337,a-608, c-294, c-325,c-395,c-1155,c-1661,se-2,f-58,sf-59,f-420,f-676\newinsert@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-118\newlinecharYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-828 *feL \newread}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-110\newtoks}.΍}.}.}.}.}.}.}.}.}. a-109,Ta-180{a-182,NFc-759,c-760,c-1694,g-346\newwritel}.΍}.}.}.}.}.}.}.}.}.}.}. 6a-111,Ta-184 \next }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-146,Tb-886,b-887,b-903,b-906,b-946,b-947,o*b-975,o)b-979,b-988,b-994\next_mapfont- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}. dnc-1364 dnfe#*,Tc-1639{c-1641,c-1646 \next_token}.΍}.}.}.}.}.}.}.}.}.}. Rc-412,Tc-413\NEXTLARGER}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 Afe\nextlarger}. j105,Tc-229Tfe',Tc-1480,c-1596\nextslotl}.΍}.}.}.}.}.}.}.}. c-90 feqS,Tc-330,e-29\@nil }.΍}.}.}.}.}.}.}.}.}.}. ,b-252,Tb-254,b-465\nin@tyƈ}.΍}.}.}.}.}.}.}.}.}.}.}. d-2 fe ގY,Td-39,d-51\no_kerning}.΍}.}.}.}.}.}. 6c-660{c-662,Tc-675Tfe\no_kerning_i- }.΍}.}.}.}.}.}.}.}. Rc-677,Tc-690Tfe\no_kerning_iiB}.΍}.}.}.}.}.}.}. Rc-686,Tc-696Tfe\NOFILES}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-2146 fe\noindentl}.΍}.}.}.}.}.}.}.}. a-241,Ta-243, a-567,a-580,a-602,b-999,c-262\noleftkerningB}.΍}.}.}.}.}.}.}.}.}.}.}.}. $c-659 $fe\noleftrightkerning}.΍}.}.}.}.}.}.}.}. $c-659 $fe\nolinebreakYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-354,Ta-366\norightkerningz}.΍}.}.}.}.}.}.}.}.}.}.}. $c-659 $fe\normal_get_PS_font_file H>g-279 H>YfeL݊,Tg-287 \normalccl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ԗa-44 ԖfeN,Ta-73\normalfont}. >b-187,Tb-222,b-366,b-848NotTindoc:\dimJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 93\endforl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 99\fooJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ287\forJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 99\unsetcommandt}.΍}.}.}.}.}.}.}.}.}.}.}.}. 94\unsetdim}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94\unsetint}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94\unsetstr}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94\usedasl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ107\notdef_nameYҍ}.΍}.}.}.}.}.}.}.}.}.}. c-1521, c-1566,bc-1590bfe!,be-73bferR,ae-77,be-82\nullfontl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-306\NUML}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx GsoI\numberƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Rja-45, ga-346,a-669,a-671,a-724,b-g67,@b-123,@b-127,b-152,b-156,gb-167,c-1432,c-1457,d-31,d-g34,u^d-38,d-42,d-56,d-57,d-g68,d-76,d-79,e-378,e-800,e-1140i@O 4I\oddligatureYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. 105,Tc-170Tfe 4I\off-hncommandpiЍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. 95I\off-\reglyph_setglyph 4}.΍}.}.}.}. e-1155 feI\offcommand}. b-859 feڎ 4,Tc-333,c-335,e-1051I\offmtxcommandB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.}.}.203,Te-1050Tfe,Te-1292,e-1293I\_oldstyle_false}.΍}.}.}.}.}.}.}.}.f-24,Tf-45I\oldstyle_font Af-565,Tf-583,f-605,f-625I\oldstyle_shapez}.΍}.}.}. f-75,Tf-112,f-680feێI\_oldstyle_truez}.΍}.}.}.}.}.}.}.}.}.f-32,Tf-39I\oldstyle_variantyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.}.}.}.}.f-112,Tf-114,f-119,f-g121,%_f-201,f-208,f-210,f-215,f-g220,%_f-378,f-382,f-389,f-391,f-g398,^f-401,f-405,^f-410,f-580,f-585 4I\on_line}.΍}.}.}.}.}.}.}. 1a-733,Ta-739,a-813feLI\oncommand@0}.΍}.}.}.}.}.}.}.}.}. #b-859 #feڎ#,Te-1054I\one_hundredYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-185 6feL"C,Ta-684I\one_thousand- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. r2a-185r2feLu~,Ta-675,a-692,c-534,c-g817, c-822, c-866,c-908,c-1058,gc-1300,Шc-1841,c-2032,c-2033,gc-2082,*e-395,e-811,e-812,e-966 4I\onmtxcommand- }.΍}.}.}.}.}.}.}.}.}. n203,Te-1050TfeI\open_outl}.΍}.}.}.}.}.a-413feL#,Tc-1169,c- g1885,bc-2166,e-39,ae-99,e-211,ge-238,e-514,e-767,e-906,e-1088 4I\open_pout@0}.΍}.}.}.}.}.}.}. X6a-455 X6feL ,Tg-8,g-177I\openinƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-537I\openout}.΍}.}.}.}.}.}.}.}.}.}.}.}. 6a-415,Ta-464Ioptions:Xhypertex@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-196 *feLXpdftex}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-196 *feLXspecificationt}.΍}.}.}.}.}.}.}.}.}.}. *a-192 *feLI\options_textg-424,Tg-426,g-431,g-451I\orv}.΍}.}.}. a-258,Ta-260,a-713,a-714, gb-36,b-37,b-39{b-55,b-339,b-g342,b-453,b-494,b-495,b-499,gb-500,'(b-533,b-534,b-538,b-g539, b-684, b-685,e-646,e-648,ge-650,Re-655,e-657,Re-662,e-664,ge-666,Re-671,e-673,Re-681,e-683,ge-689,e-691,e-693,e-695,e-697 4I\or_else}.΍}.}.}.}.}.}.}.}.}.}.}.}. 6a-524 6feL"C,Tg-436I\orig_seriesYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}. dnc-1951{c-1953,Tc-1957,c-1958\orig_shape}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}. dnc-1934{c-1937,Tc-1941,c-1942 \otherhalf@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-565 feڎ\out_filel}.΍}. va-184 vfeL#J,Ta-415,a-418,a-419\out_filename- }.΍}.}.}.}.}.}.}.}.}.}. ?:a-415,a-417,/xc-1686,c-1715,c-1729,c-1730,*e-108,e-136,e-139,e-161\out_filename-hstream9iv}.΍}.}.}.}.}.}.}.}. 50\out_filename--1}.΍}.}.}.}.}.}.}.}.}.}. *a-424 *feL\out_filename-99}.΍}.}.}.}.}.}.}.}.}.}. *a-424 *feL\out_liglabel- }.΍}. "c-1388,Tc-1461Tfe,Tc-1473\out_ligstopYҍ}.΍}.}. "c-1464,Tc-1469,c-1472fe\out_linel}.΍}.}.}.}.}.}.}.}.}.}.}. a-413 feL! ,Tc-1171,*c-1173{c-1178,c-1180{c-1183,~c-1190,c-1191,c-1311,c-1313,~c-1324,c-1330,c-1339,c-1355,~c-1368,c-1378,c-1382,c-1405,~c-1522,c-1567,c-1690,c-1886{c-1890,!@c-1892,c-1893,c-1901,~c-1902,c-1905,c-1912,c-1913,~c-1917,c-1918,c-1921,c-1939,Ec-1955,Fc-2167,c-2168,e-21,~e-23,e-24,e-29,e-32{e-34,e-40{e-44,he-46,e-48{e-65,e-67{e-70,ze-100,e-101,z~e-104,e-108,e-111,e-113{e-115,e-118{e-121,e-123,Re-124,e-126,Re-128,e-130,e-131,Re-133,e-135,Re-142,e-143,e-145,iBe-151,iAe-153,e-158{e-161,e-166,Re-168,e-172,Re-204,e-212,e-213,iBe-215,iAe-218,e-220{e-224,e-226{e-231,e-245{e-249,e-251,e-253{e-260,iBe-264,iAe-265,e-299,e-302,Re-305,e-308,Re-311,e-314,e-316,Re-319,e-322,Re-341,e-366,e-383,Re-388,e-398,Re-484,e-490,e-515{e-519,e-521,e-523{e-530,e-536,ne-542,ne-546,e-549,e-552,)e-608,e-616,e-626,e-702,e-734,iBe-754,iAe-769,e-771{e-776,e-778{e-783,iBe-790,iAe-791,e-795,e-800,iBe-908{e-920,iAe-925,e-936,e-939,ne-940,ne-980,e-988,e-991,Ûe-1016,Úe-1028,e-1030,e-1032, e-1089{e-1101, e-1104,e-1107, e-1108, e-1123{e-1125,e-1134,e-1152,e-1159,e-1182,g-44\out_lline@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. ?:a-413 ?:feL Ԇ,c-1372,Шc-1377,c-1403,c-1432,c-1456,Шc-1462,c-1467,c-1472,c-1527,Шc-1529,c-1532,c-1535,c-1551,Шc-1570,c-1572,c-1574,c-1576,Шc-1577,c-1587,c-1594,c-1600,Шc-1894,c-1925,c-1927,I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soge-387,e-428,e-495,e-801{e- g805,e-1031,e-1040,e-1166,e-1174 8䍑I\out_llline}.΍}.}.}.}.a-413feL#,Tc-1555,c-g1557,~c-1559,c-1579,c-1601,c-g1605,~c-1614,c-1623,c-1632,c-g1641,~c-1645,c-1651,c-1654,c-g1657,c-1665,c-1669,c-1671,c-1672 8㍑I\outerP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. La-107{a-g111,~a-118,a-129,a-150,a-155,gc-13,l"c-38,l!c-46,c-348,c-373,c-379I\output_hdriveri֍}.΍}.}.}.}.}.}.}.}.}.}.}.}. ћ236 8㍑I\output_debug- }.΍}.}.}.}.}.}.}.}.}.}. ?:g-316,gg-317,g-319,g-322,g-327,g-337I\output_dvipdfmz}.΍}.}.}.}.}.}.}.}.}.}.}. *g-449 8㍑I\output_dvips- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *g-406I\output_pltotfB}.΍}.}.}.}.}.}.}.}.}.}.}.}. *g-455qǍ+PI\p3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-699I\p@v}.΍}.}.}.}.}.}.}.}. Fza-138,Ta-346,a-624, gc-1150,Шc-1498,c-1525,c-1687,gc-1689,Ec-1721,Fd-14,d-23,d-32,gd-39,dd-40,ed-51,d-52,d-71,d-g73,Ug-158,g-164,Vg-321,g-373,g-425I\PackageError hb-141,Tb-928,c-29,c-363 8㍑I\pagebreak@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-240I\parfa-149,:a-150,a-154,a-156,a-240,ga-241,˚a-243,˙a-565,a-571,a-g578,{a-584,{a-596,a-602,b-999,gc-41,{c-246,{c-247,c-251,c-263,gc-264,@c-408,c-1159,c-1783,c-1838 8㍑I\PARAMETER@0}.΍}.}. {e-622 {fe",Te-631,e-633,ge-635,Re-637,e-639,Re-641,e-643,ge-647,Re-649,e-651,Re-656,e-658,ge-663,Re-665,e-667,Re-672,e-674,ge-677{e-679,iBe-682,iAe-684,e-687,ge-690,e-692,e-694,e-696,e-698I\parse_family- }.΍}.}.}.}.}.}.}.}.}.}.}. f-4,Tf-18Tfe(ݎ 8㍑I\parsepƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-624I\partopsep@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-622I\pdfannotlink- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-212I\pdfendlink}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-222I\pdfstartlink- }.΍}.}.}.}.}.}.}.}. 6a-211,Ta-214I\pdfTeXƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-357 *feLIpdftexToptionF}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-196 *feLI\pdftexrevisionz}.΍}.}.}.}.}.}.}.}.}.}.}. *a-381I\pdftexversionB}.΍}.}.}.}.}.}.}. 6a-358,Ta-379I\penalty}.΍}.}.}.}. Fza-149,Ta-154,a-241, ga-664,Ubb-554,c-586,c-654,c-655I\percent_char- }.΍}.}.}.}. 38a-307 38feL"Ȅ,Tc-1237,gc-1316,!@c-1322,c-1323,c-1886{gc-1888,Шc-1890,c-2167,c-2168,ge-21,e-40{e-42,e-44,e-46,e-49,ge-100,Re-101,e-104,Re-108,e-111,e-113{e-115,iBe-118,iAe-120,e-121, e-124,Re-126,e-128,Re-131,e-133,e-135,Re-143,e-151,Re-159,e-161,e-166,Re-168,e-212,Re-213,e-215,e-218,iBe-230,iAe-231,e-245{e-247,e-249,iBe-251,iAe-254,e-515{e-517,e-519,Re-521,e-524,Re-543,e-544,e-619,e-908{e-910,e-912,e-914,e-1089{e-1091,e-1093,e-1095 rPLTpropAerties:AXISHEIGHTY̍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 Afe qBIGOPSPACING1t}.΍}.}.}.}.}.}.}.}.}.}. Ae-687 AfeBIGOPSPACING2t}.΍}.}.}.}.}.}.}.}.}.}. Ae-687 AfeBIGOPSPACING3t}.΍}.}.}.}.}.}.}.}.}.}. Ae-687 AfeBIGOPSPACING4t}.΍}.}.}.}.}.}.}.}.}.}. Ae-687 AfeBIGOPSPACING5t}.΍}.}.}.}.}.}.}.}.}.}. Ae-687 AfeBOUNDARYCHAR<}.΍}.}.}.}.}.}.}.}.}.}.}. Ae-618 AfeCHARACTER}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeCHARDP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeCHARHT}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeCHARIC}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeCHARWD}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-739 AfeCHECKSUM@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 AfeCODINGSCHEME<}.΍}.}.}.}.}.}.}.}.}.}.}. Ae-588 AfeCOMMENTl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 AfeDEFAULTRULETHICKNESS .}.΍}.}.}.}. Ae-687 AfeDELIM1}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-680 AfeDELIM2}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-680 AfeDENOM1}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeDENOM2}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeDESIGNSIZEY̍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-606 AfeDESIGNUNITS-}.΍}.}.}.}.}.}.}.}.}.}.}.}. Ae-610 AfeEXTRASPACEY̍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeFACEJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 AfeFAMILY}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 AfeFONTDIMEN}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-630 AfeHEADER}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-576 AfeKRN }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-725 AfeLABELƂ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-704 AfeLIG }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 AfeLIGTABLE@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 AfeMAP }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeMAPFONTl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeNEXTLARGERY̍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 AfeNUM1J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeNUM2J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfeNUM3J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-645 AfePARAMETER}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-622 AfeQUADJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeSELECTFONTY̍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ148SEVENBITSAFEFLAGN}.΍}.}.}.}.}.}.}.}. Ae-576 AfeSHRINK}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeSKIPJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 AfeSLANTƂ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soXSPACEƂ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 Afe ҍXSTOPJ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 AfeXSTRETCHl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeXSUB1J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeXSUB2J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeXSUBDROPl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 AfeXSUP1J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeXSUP2J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeXSUP3J}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeXSUPDROPl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 Afe ӍXVARCHARl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 AfeXVTITLE}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeXXHEIGHTl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeI\pl_encodingYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}. c-1784,Tc-1787,c-1818,c-1852feI\pl_intƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. e-568 fe Ԇ,ge-619,e-623,e-711,e-727,e-745I\pl_mapfont}.΍}.}.}.}.}.}.}.}.}. $c-1363 $fe#,Tc-1504I\pl_raw_glyph- }.΍}.}.}.}. - e-796,Te-797,e-799feI\pl_real}.΍}.}.}.}.}.}.}.}.}.}.}.}. e-559 fe"-,Te-702I\pl_realer@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-559 AfeI\pl_rounded_real}.΍}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}. @e-561 @fe!S\,Te-625,e-726,e-739{e-742I\pl_setfontdimen}.΍}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}. Ge-502,Te-621Tfe',Te-632,e-634,ge-636,e-638,e-640,e-642,e-644I\pl_to_mtx@0}.΍}.}.}.}.}.}.}.}.}.}. e-509,Te-512TfeI\plainP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-246I\plaindivl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-247 *feLI\plainintl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-247 *feLI\plainmaxl}.΍}.}.}.}.}.}.}.}.}.}.}. *a-247 *feL!,Tb-493I\plainminl}.΍}.}.}.}.}.}.}.}.}.}.}. *a-247 *feL!,Tb-532I\plainnegl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-247 *feLI\pltomtx}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184,Te-511TfeI\popL}.΍}.}.}.}.}.}.}.}.}. "c-1011 "fe%,Tc-1059,c-1079 ӍI\post_first_etx_pass_hook}.΍}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1214I\post_fourth_etx_pass_hookF}.΍}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1509I\post_second_etx_pass_hookF}.΍}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1338I\post_third_etx_pass_hook}.΍}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1402I\postscript_code}.΍}.}.}.}.}.}.}. ?:g-357,gg-367,g-374,g-380,g-409,g-410I\pout_line@0}.΍}.}.!50,Ta-483TfeL,Te-927,g-g42,l"g-95,l!g-316,g-406,g-449,g-455I\pout_lline}.΍}.}.}.}.}.}.}.}.}.}.}.}. ?:a-484 ?:feL Ԇ,gg-317,g-319,g-322,g-327,g-337I\pout_lllineYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-484 *feLI\pre_first_etx_pass_hook&֍}.΍}.}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1212I\pre_fourth_etx_pass_hook}.΍}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1507\pre_second_etx_pass_hook}.΍}.}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1336 I\pre_third_etx_pass_hook&֍}.΍}.}.}.}.}.}. ԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. $c-1194 $fe#,Tc-1400\prep_to}.΍}.}.}.}.}.}.}.}.$a-327$feLAp,Tc-501,c-502\prev_file_list b-9,Tb-12,b-15,b-31,b-34fex܎ J\FD@priorityYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-223,b-245feڎ1,b-257,b-265,b-293,b-316,'(b-325,b-345,b-361,b-375,b-377,b-395,b-399,b-401,b-405,'(b-406,b-416,b-419,b-421,b-423,b-442,b-447,b-461,b-506,'(b-545,b-591,b-593,b-594,b-596,b-599,b-616,b-618,b-619,'(b-621,b-624,b-654,b-658,b-660,b-670,b-675,b-679,b-680, b-690,c-590,c-718,c-1086\private@commaB}.΍}.}.}.}.}.}.}. 6a-655,Ta-664\process_csep_listT}.΍}.}.}.}.}.}.}.}. I58,a-638feL3L, ab-977, `c-421,c-428,c-613,Шc-615{c-617,c-619,c-620,c-681, c-685,c-1117,c-1139,c-1152,\ c-1740,\ c-1741,e-86,e-98\process_generation}.΍}.}.}.}.}.}.}.}.}.}.(ܤg-2(ܤYfe UP51,Tg-25,g-26,g-53,g-57,g-69,g-108,g-112,g-115,g-196{g-198I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx 0soI\process_generation_succ&֍}.΍}.}.}.}.}.}. jLԍ}.΍}.}.}.}.}.}.}.}. 6g-2 6Yfe UPW,Tg-60,g-88,g-197 oI\ProcessOptionsz}.΍}.}.}.}.}.}.}.}.}.}.}. *a-232 FI\protect}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-93,gb-135,'(b-139,b-141,b-215,b-g252,qb-263,b-339{b-343,b-356,gb-358,/xb-453,b-454,b-493{b-g495,#b-498{b-500,b-532{b-534,gb-537{b-539,/xb-552,b-598,b-g623,b-663,b-684,b-685,c-30,gc-74,˚c-76,˙c-78,c-142,c-364,gc-584, c-585,c-587,c-716,c-1085 EI\protected@edefz}.΍}.}.}. b-161,Tb-179,gb-214,'(b-241,b-912,b-915,b-g919,c-57,c-70,c-135,c-141,c-644I\protected@xdefub-263,Tb-288,b-317,gb-338,'(b-354,b-376,b-402,b-g451,b-492,b-531,b-597,b-622,gb-662,4b-676,4~c-120,c-583,c-715 EI\providecommandz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}.}.}.}.}. /a-197,Ta-208,c-253,c-254I\providepsencodingT}.^e-925,Te-928,g-245YfeL oI\ProvidesFile- }.΍}.}.}.}.}.}.}.}.}.}.}.}. c-1893 EI\ProvidesMtxPackage}.΍}.}.}.}.}.}.}.}. $c-384 $feI\ProvidesPackage}. fa-9,Ta-11,a-15,a-16I\PS_font_file- }. Fzg-278 FzYfeL!,Tg-281,g-291, gg-397{g-399,jg-439,g-440,g-443I\PS_font_name- }.΍}.}.}.}.}. g-102,Tg-266TYfeL,gg-270,˚g-275,˙g-285,g-286,g-g296,~g-385,g-386,g-390,g-393,gg-407,jg-435{g-437,g-445,g-447 EI\pse-hetx8iu}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ239I\psf-hPSNe-952,>e-1031,e-1120,e-1175\saved-hncommandpir}.΍}.}.}.}.}.}.}.}.}.}.}. 94\FD@saved@fisa-589,Ta-590,a-593,a-602\saved@slot@number e\a-559 e\feL ,Ta-569,a-583\saved_mapfontB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}.}. c-745 fe!">,Tc-845,c-1334,c-1504\saved_movert- }.΍}.}.}. c-745 fe.@,Tc-990,c-1492\saved_moveup- }.΍}.}. Rc-745 Rfe ,Tc-1000,c-1493\saved_pop@0}.΍}.}.}.}. Rc-745 Rfe ,Tc-1024,c-1495\saved_push}.΍}.}.}.}. Rc-745 Rfe ,Tc-1015,c-1494\saved_raw@0}.΍}.}.}.}.}. c-745 fe.@,Tc-844,c-1488\saved_rule}.΍}.}.}.}.}. c-745 fe.@,Tc-950,c-1489\saved_scaleYҍ}.΍}.}.}.}.}.}. c-745 fe!۴,Tc-825, c-837,hc-919,h c-923,c-1333,c-1505\saved_specialB}.΍}.}. c-745 fe.@,Tc-964,c-1490\saved_warningB}.΍}.}. c-745 fe.@,Tc-970,c-1491\scaleP}.΍}.}.}.}.}.}.}.}.}.}.}. b-639 ڟfeڎ!۴,Tc-465, c-493,ic-541,e-865{e-867,e-871,e-876,Re-877,e-882,Re-975,e-977,e-994{e-996,e-1003,e-1027,e-1034\scaled_design_size}.΍}.}.}.}.}.}.}. c-1294 fe 1\scalefont@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. 194,Te-863Tfe\second_of_sixB}.΍}.}.}.}.}.}.}. Rc-703,Tc-728Tfe\second_of_twoB}.΍}.}.}.}.}.}.}.}.}. ?:a-297 ?:feL Ԇ, a-397,-*c-2108,e-957,-)g-365,g-421I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtxsoI\@secondoftwo- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-958 I\set_kernl}.΍}.}. 6c-457,Tc-462,c-468,c-540 I\set_kern_csYҍ}.΍}.}.}.}.}. /c-470,Tc-472,c-536I\set_kerningYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. jLԍ}. >c-514,Tc-520,c-526,c-529,c-533I\setcommand}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. I90,gb-744gfeڎ},>qe-1047,f-29,f-35,f-42,f-46 I\setdimƈ}.΍}.}. 90,Tb-744Tfeڎ..,Tc-1309,e-608,ge-616,fe-945,e-988,fe-1113,e-1124I\setfontdimen- }.΍}.}.}.}.}.}.}.}. oc-312 ofe"-,Te-502 I\setglyphl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-334,gc-763gfe|,o(e-383,e-490,e-784,e-g950,e-1030,e-1118,e-1159,e-1293I\setintƈ}.΍}.}.}.90,Tb-744Tfeڎ..,Tc-314,e-299,ge-302,Re-305,e-308,Re-311,e-314,ge-316,Re-319,e-322,Re-398,e-626,ge-702,fe-944,e-980,fe-1112,e-1123 I\setkern}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-g335,bc-454bfe1 ,be-341,ae-485,e-734,ge-786,>e-949,>e-1028,e-1117,e-1152I\setleftboundary}.΍}.}.}.}.}. Tc-128 Tfe',Tc-1317 I\setleftkerningz}.΍}.}.}.}.}.}.}.}.}.}.}. $c-511 $feI\setleftrightkerningfč}.΍}.}.}.}.}.}.}. $c-511 $feI\setlength@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. ?:a-612, ga-615,ja-617,a-620,a-622{a-626I\setnotglyphYҍ}.΍}.}.}.}.}.}.}.}.}. oc-864 ofe"-,Te-370I\setrawglyphYҍ}. 5c-815 5feF,Tc-899,e-368,e-754I\setrightboundaryyꍑ}.΍}.}.}.}.}.}.}.}.}. $c-151 $feI\setrightkerning}.΍}.}.}.}.}.}.}.}.}.}. $c-511 $feI\setscalednotglyphT}.΍}. c-333,Tc-864Tfe', ge-788,>e-948,>e-1020,e-1116,e-1136I\setscaledrawglyphT}.΍}.}.}.}.}.}. c-329,gc-815gfe|,oac-900,e-787,o`e-796,e-g947,e-1018,e-1115,e-1138,e-1292 I\setslot}.΍}.}.}.}.}.}.}.}.}. c-51 feqS,Tc-331,e-32I\setslotcommentz}.΍}.}.}.}.}.}.}.}.}.}.}. $c-286 $feI\setsomething_globalfč}.΍}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.}.}.}.}. b-742 Пfeڎ Ԫ,Tb-752,b-759,gb-764,'(b-790,b-802,b-805,b-g807,qb-852{b-855,b-862,b-866,gb-873,'(b-875,b-895,b-941,b-g951,b-976,c-1699,c-1707,c-g1711,6c-1714,c-1725,c-1772,ge-237,e-501,e-766,e-808,e-1044I\setstrƈ}.΍}.}.}. h90,Tb-744Tfeڎ..,Te-90,e-217,ge-546,fe-946,e-991,fe-1114,e-1125 I\SetStringVariableT}.΍}.}.}.}. b-910 feڎ!,Tb-990I\SEVENBITSAFEFLAGyꍑ}.΍}.}.}.}.}.}.}.}.}. Ae-576 AfeI\showbranches- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. *a-551 *feLI\SHRINKƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeI\side_bearingsB}. "c-1305 "fe%,Tc-1327,c-1545I\FD@simple@intB}.΍}.}.}.}.}.}.}. b-215,Tb-349TfeڎI\sin(hnumberi)M}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ћ168\sixt@@n}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. `a-86,Ta- 110,~a-111,a-440,a-445,a-458,a-474,!a-708,a-710,b-17,b-19 \sixth_of_six- }.΍}.}.}.}.}.}.}.}. Rc-726,Tc-728Tfe\SKIP }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 Afe\skip }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-121\skip@mtx@preambleT}.΍}.}.}.}. Rc-359,Tc-370\skipslots@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Tc-90 Tfeq\SLANTP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 Afe\slant_factor- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}. g-157 YfeL"_f,Tg-163,g-164,g-326,g-328,g-379,g-381,g-430,g-432 \SlantAmountYҍ}.΍}. ͞f-295,Tf-365,f-408,f-682feێ\slanteditalcorr}.΍}.}.}.}.}. e-390 fe"-,Te-401\slantfont 194,Te-863Tfe',Tf-295,f-365,f-408\slot@comment- }.΍}.}.}.}.}.}.}.}.}. Ȃc-80,Tc-286Tfe\slot@comment@false}.΍}.}.}. Rc-295,Tc-303\slot@comment@trueT}.΍}.}.}.}.}.}.}.}.}. $c-298 \FD@slot@expression}.΍}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}.}.}.}.}.}.}. >c-66,Tc-75,c-90feq,c-163\slot@font@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-286 $feFD@slot@known@Tswitc9h-׍}.΍}.}.}.}.}.}.}.}. Tc-90 Tfeq\FD@slot@known@falsefč}.΍}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}.}.}.}. c-90 feq[,Tc-97,c-108,c-124\FD@slot@known@true}.΍}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}. c-23,Tc-90Tfeq,Tc-96,c-98,c-104\slot@name c-55 feq,Tc-135,c-136,c-138,c-140,Sc-142,c-187,c-191,c-193,c-196,Sc-201,c-203,c-207,c-209,c-212, c-217, c-219,c-223,c-225\slot@numberYҍ}.΍}.}.}.}.}.}. a-569,Ta-583,c-22,c-44,c-64,c-66,c-72,c-75,c-83,Uc-90Ufeq,Uc-161,Vc-163,c-167,c-309\slot_name@0}.΍}.}.}.}.}.}. c-51 feq!j,Tc-129,c-1224,~c-1228,c-1231,c-1342,c-1343,~c-1418,c-1441,c-1462,c-1467,~c-1499,c-1513,c-1516,c-1521,~c-1523,c-1524,c-1542,c-1543,~c-1553,c-1556,c-1563,c-1566,~c-1568,c-1569,c-1571,c-1573,Ec-1575,Fc-1578,c-1586,e-83,e-504,e-505,e-599,e-600,e-922\slot_numberYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-6,c-53,c-90feq,c-154,c-1225,c-1231,~c-1235,c-1237,c-1387,c-1462,Ec-1517,Fc-1522,c-1567,e-82,e-83,e-203,e-504,e-599,e-922\slotexampleYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-286 $fe\slots-hglyph9iՍ}.΍}.}.}.}.}.}.}.}.}.}.}. 3136,T203\source_font_nameyꍑ}.΍}.}.}.}. e-240,Te-327\source_font_TeX_name:g-101,Tg-105,g-265YfeL3L,g-270,g-275,g-281,g-317 \SPACEP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeI@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtxsoI\spaceP}. ,@a-17,Ta-141,a-344,a-365,a- g367,~a-368,a-420,a-422,a-424,ga-443,˚a-484,˙a-486,a-590,a-g728,~a-751,a-765,a-815,a-818,ga-820,Ea-822{a-824,a-826,c-30,gc-64,{c-78,{c-161,c-364,c-1171,gc-1178,Шc-1317,c-1355,c-1372,gc-1423,Шc-1427,c-1432,c-1522,gc-1567,Шc-1596,c-1607,c-1616,gc-1625,Шc-1634,c-1651,c-1686,gc-1793,Шc-1795,c-1897,c-1898,gc-1927, c-1941, c-1957,d-11,e-g21,ee-101,fe-118,e-120,e-121,e-g124,)e-126,e-128,e-131,e-133,ge-135,Re-145,e-151,Re-161,e-182,ge-194,Ie-800,f-138,If-159,f-207,gf-275,f-287,f-305,f-345,f-357,gf-388,f-400,f-454,f-466,f-484,gf-524,X}f-536,X~f-594,g-79,g-80,gg-130,˚g-141,˙g-151,g-367,g-g370,~g-375,g-376,g-381,g-382,gg-407,g-410,g-426,g-431,g-450 l΍I\spacefactorYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.pgVb-172,Tb-175,b-176,b-188,b-190 lύI\spaceskip@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-244IFD@spec@Tswitc9hU}.΍}.}.}.}.}.}.}.}.}.}.}.}. *a-192 *feLI\FD@spec@falseB}.΍}.}.}.}.}.}.}. 6a-192 6feL"C,Ta-194I\FD@spec@true- }.΍}.}.}.}.}.}.}.}. 6a-192 6feL"C,Ta-195I\special}.΍}.}.}.}.}.}.}.}.}.}.}.}. 6a-199,Ta-204IspecificationToption&}.΍}.}.}.}.}.}.}.}. *a-192 *feLI\specifypsfontB}.΍}.}.}.}.}.}.}.}.}. 18,Tg-260TYfeL I\@sptokenl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-106I\start_subs_atB}.΍}.}.}.}.}.}.}.}.}.}.}. c-2105I\STOP }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-722 AfeI\storemapdata- }.΍}.}.}.}.}.}.}.}.}.}.}. 229, gc-1716,}bc-1717,}ag-23}aYfeNr,g-42,}ag-44 I\strL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. I,91,Tb-165Tfeڎ..,gb-194gfeڎ},b-776,b-815,c-1313,c-g1790,e-111,e-136,e-138,e-g144,)e-145,e-166,e-219,e-223,ge-816,ue-932,ue-933,g-281,g-456 lύI\STRETCH}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 AfeI\FD@string@funcz}.΍}. ,b-169 ,feڎ!,Tb-194,b-211Istrings:XPSfontsuffix<}.΍}.}.}.}.}.}.}.}.}.}.}. *g-279 *YfeL XTFMfileprefixt}.΍}.}.}.}.}.}.}.}.}.}. *g-454 *YfeLI\strintƈ}.΍}.}.}.}.}.}.}.}.}.}. 491,Tb-165Tfeڎ..,Tb-211Tfeڎ lύI\strip_spaces- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-406I\SUBL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 AfeI\subL}.΍}.}.}.}.}. b-297 feڎ!![,Tc-1033,c-1101,e-391I\sub_suffixXc-1991{c-1993,Tc-2005{c- g2007,c-2019{c-2021,c-2040,c-2041I\SUBDROP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 Afe\FD@subexpressionyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. &Vb-328&Vfeڎ=0,Tb-341,b-498,b-537,b-552 (l\subs_do_arcYҍ}.΍}.}.}.}.}.}.}.}. $c-2073,Tc-2079\subs_font@0}.΍}.}.}.}.}.}.}.}.}. $c-2076,Tc-2089 (k\subs_seriesYҍ}.΍}.}.}.}.}.}.}.}. $c-2089,Tc-2106\subs_shape}.΍}.}.}.}.}.}.}.}.}. $c-2090,Tc-2107\subs_vertex_listyꍑ}.΍}.}.}. $c-2072,Tc-2087\subst_series- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1953,c-1954,c-1956,c-1961,c-1962\subst_shapeYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-1937,c-1938,c-1940,c-1945,c-1946 (k\substitute_generic}.΍}.}.}.}.}.}.}.}.}.}. ԍ}.΍}.}.}.}.}.}.}. "c-1966 "fe%,Tc-1976,c-1977\substitute_seriesT}.΍}.}.}. $c-1935,Tc-1950Tfe\substitute_shapeyꍑ}.΍}.}.}. $c-1906,Tc-1933Tfe\substitutenoisy8c-19668fe"4,Tc-1984,c-2052fe (k\substituteseriesyꍑ}.΍}.}.}.}.}. c-1988 fe&aT,c-2053,c-2057,c-2062{c-2067\substituteseriesshape 4}.΍}.}.}.}. c-1988 fe\substituteshape}.΍}.}.}.}.}.}. c-1988 fe&aT,c-2054,c-2058,c-2068{c-2070\substitutesilentyꍑ}.΍}.}.}. c-1966 fe'3,Tc-1978{c-1983,c-1985,c-1986,c-2052fe\SUPL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-661 Afe (k\SUPDROP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-677 Afe\supereject}. va-149,Ta-150,a-154,a-156\FD@swap@twoYҍ}.΍}.}.}.}.}.}.}.}.}. 6a-238,Ta-371\swap_twol}.΍}. va-297 vfeL#J,Ta-370,g-212,g-295switc9hes:_a_ }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-183 *feLdirect}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-325 $feFD@evaluate@<}.΍}.}.}.}.}.}.}.}.}.}.}. b-245 feڎ_extensions_warning_ .}.΍}.}.}.}. *a-336 *feL_including_map_y䍑}.΍}.}.}.}.}.}.}. c-1155 fe@mtxpackage@headed@9}.΍}.}.}.}.}. $c-384 $feFD@slot@known@}.΍}.}.}.}.}.}.}.}.}.}. Tc-90 TfeqFD@spec@@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-192 *feLFD@tight@}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-608 *feLwarningspecialsy䍑}.΍}.}.}.}.}.}.}. c-1653 feP؍R T\t3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-700\tan(hnumberi)M}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ћ169\temp_command- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c- 1990,~c-1992,c-2004,c-2006,c-2018,c-2020,c-2040,c-2042{c-2044 (l\temp_prefixYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. ?:a-488 ?:feL Ԇ,e-39,e-238,e-514,e-906,e-1088\@tempaƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:a-198,a-200,˚a-203,˙a-210,a-218,a-221,b-77,b-79,b-81,b-161,b-162,b-179,b-180,b-182,b-183,b-196,'(b-199,b-202,b-206,b-213{b-215,qb-217,b-241,b-242,I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtxsogb-261,'(b-263,b-284,b-288,b- g312,b-317,b-353,b-356,b-358,gb-396,'(b-403,b-443,b-452,b-g655,bb-668,b-677,b-912,b-914{gb-916,hb-925,b-989,b-990,c-g437{c-439,Шc-444,c-445,c-581,gc-585,c-643{c-645,c-647,c-g649,>c-714,>c-716,d-19,d-20,d-27 I\@tempbƈ}.΍}.}.}.}.}.}.}.}.}.}. b-919,Tb-921,gb-925,Bc-582,Bc-587,d-13,d-21 I\@tempcnta@0}.΍}.}.}. b-16,Tb-20,b-22,b-23I\@tempcntb@0}.΍}.}.}.}.}.}.}.}.b-18,Tb-21,b-23I\tempfileprefixz}.΍}.}.}.}.}.}.}.}.}.}.}. *a-488 *feLI\@tempswafalseB}.΍}.}.}. Ȕb-92,Tc-443,c-562I\@tempswatrue- }.΍}.}.}.}.}.}.}.}.}.}. b-207, gb-218,b-229,b-917,c-445,c-561I\test_UseMtxPkg_argumentsc-412,Tc-413I\TeXL}.΍}.}.}.}.}.}.}.}.}.}.}. 1a-355,Ta-366,a-424I\TeX_font_nameB}.΍}.}.}.}. 80g-52,Tg-80,g- g87,~g-130,}g-141,g-151,g-264YfeLY,gg-316,g-407,g-450,g-455,g-457I\TeX_terminala-424feL^0,Ta-433,a-442,a-478 I\text }. b-222,Tb-356,b-368,c-585,c-587I\textasciicircum}.΍}.}.}.}.}.}.}.}.}.}.}. 8b-49I\textasciitildez}.΍}.}.}.}.}.}.}.}.}.}.}.}. 8b-55I\textbackslashB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-49I\textbar}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-55I\textbfƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-241,Ta-243I\textbraceleftB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-55I\textbracerightz}.΍}.}.}.}.}.}.}.}.}.}.}.}. 8b-55I\textcolor@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-221I\_textcomp_false}.΍}.}.}.}.}.}.}.}.}.}. f-662I\_textcomp_truez}.΍}.}. [f-661,Tf-663,f-664I\textdollar}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-39I\textgreaterYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-43I\textita-563,Ta-567,a-575,a-580,a-602I\textlessl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-43I\textquotedbl- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-39I\textquoteleftB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-51I\textquoterightz}.΍}.}.}.}.}.}.}.}.}.}.}.}. 8b-40I\textrmƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. b-228I\textscƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-254I\textsfƈ}.΍}.}.}.}.}.Ƃa-38,Tc-399,c-403,c-406I\textttƈ}.΍}.}.}.}.}. Fza-203,Ta-221,a-246, gb-263,~b-880,b-881,c-253,e-60I\textunderscorez}.΍}.}.}.}.}.}.}.}.}.}.}.}. 8b-49I\textunicodeYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-240 $feI\textvisiblespaceyꍑ}.΍}.}.}.}.}.}. zb-39,Tb-58Tfex܎I\Tf-hfonti/}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ћ230ITFMfileprefixT(string)S}.΍}.}.}.}.}.}.}. *g-454 *YfeL ㍑I\TG@@sin}.΍}.}.}.}.}. d-33,Td-41,d-45fex܎0,d-54I\TG@reduce@0}.΍}.}.}.}.}.}.}.}.d-46,Td-47,d-50fex܎I\TG@rem@pt@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. pgVd-11pgVfex܎2,Td-19,d-21,d-34,d-42,d-76\TG@series@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. zd-16 zfex܎FV,Td-48 \TG@term}.΍}.}.}.}.}.}.}.}.}.}. d-12 ؟fex܎`,Td-24{d-26\theanglel}.΍}.}.}.}.}.}.}. - e-393,Te-394,e-396\then }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-491 *feL\thinspace@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. =a-40\third_of_six- }.΍}.}.}.}.}.}.}.}. Rc-704,Tc-728Tfe\thr@@P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a- 85,a-587,a-601,b-405,b-599,b-624, b-660,b-664,b-679,g-196 \tidying_up_hook}.΍}.}.}.}. $c-1194 $fe#,Tc-1674FD@tight@Tswitc9h}.΍}.}.}.}.}.}.}.}.}.}.}. *a-608 *feL\FD@tight@falsez}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.  ԍ}.΍}. Ͱa-608 ͰfeLb,Tc-84,c-145,c-812,c-813\FD@tight@trueB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}. Ͱa-608 ͰfeLb,Tc-61,c-139,c-779,c-799\timesP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-639\toks }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fa-95,Ta-109\toks@P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.b-90,Tb-94,b-97,Zb-99,b-116,b-122,b-126,b-151,'(b-155,b-205,b-217,b-228,b-485,b-497,b-524,b-536,b-551,4b-916,4~c-642,c-648,c-651 \toks_aƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. c-2091\toksdef}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-109\top_of_pl_hookz}. oc-1170,Tc-1194Tfe,Te-768\topsepƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-612,Ta-617\touch_file}.΍}.}.}.}. Lc-2148,Tc-2149,c-2151,c-2155,c-2158,c-2160,c-2162fe\tracinglostcharsyꍑ}.΍}.}.}.}.}.}.}.}.}. *a-830 *feL\transform_record_file 4}.΍}.}. e-926,e-927,g-7˟Yfe UP,g-41,g-42,g-94,g-95\transformfontB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}. -194,Tc-2147,e-807fe',e-903,f-138,%_f-145,f-207,f-214,f-275,f-291,%_f-345,f-361,f-388,f-404,f-454,ef-470,ff-524,f-540,g-47YfeNu,g-73 \ttfamilyl}.΍}.}.}.}.}.}.}.}.}.}.}. b-187,Tb-848\tw@L}.΍}.}.}.}.}.}.}.}.}.}.}.}. ra-84,Ta-561,b-59,b-62,b-570,b-573,b-580,b-583,b-605,b-608,b-630,b-633,b-698,b-709,b-716,b-722,c-1086\two@fourteen- }.΍}.}.}.}.}.}.}.}.}.}. zd-74,Td-80Tfex܎\two_thousand- }.΍}.}.}.}.}.}.}.}. *a-185 *feL!,Tb-719\typeout}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-228\typeset@glyphB}.΍}.}.}.}.}.}.}.}.}.}.}.}. c-187, c-188,c-191,c-193,c-196,c-198,Sc-201,c-204,c-207,c-209,c-212,Sc-214,c-217,c-220,c-223,c-226,jc-235,c-237,c-280{c-283,c-479,Sc-507,c-550,c-551,c-553,c-554,Sc-556,c-557,c-607,c-700feeY,c-780,Sc-800,c-852,c-857,c-893,c-903,@c-938,c-1109,c-1113,c-1286I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx soI\FD@typeset@stringT}.΍}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.}.}.}.}.}. b-178 feڎ ,Tb-368,c-68,gc-78,{c-140,{c-142,c-187,c-191,gc-193,Sc-196,c-201,c-203,c-207,gc-209,Sc-212,c-217,c-219,c-223,gc-225,)c-585,c-587,c-656,g-243 1I\FD@typeset@string@set 4}.΍}.}. c-639,gc-641gfe|, c-667,c-670,c-673,c-1127 1I\FD@typeset@string@set@l}.΍}.}.}.}. $c-641 $feI\TypesetIntegerExpression}.΍}.}.}.}.}.jLԍ}.΍}.}.}.}.}.}. 36,Tb-239Tfeڎ..,Tb-738,b-g772,b-773,b-811,b-812,b-839,gc-321,Sc-480,c-508,c-853,c-858,gc-958, c-959,c-1008,c-1009,c-g1040,c-1043,c-1046,c-1049,c-1287 1I\TypesetListYҍ}.΍}.}.}.}. da-252 dfeL#J,Ta-410,c-654I\TypesetStringExpression&֍}.΍}.}.}.}.}.}.jLԍ}.΍}.}.}. IP36,Tb-178Tfeڎ..,Tb-776,b-777,gb-781,'(b-815,b-816,b-820,b-g842,Eb-845,c-165,c-320,c-700,gc-854, c-859,c-978,c-980,c-1875c)AUI\uccodeƈ}.΍}.}.}.}.}.}.}.}.}. xa-136,Tb-76,g-303I\undefined@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Pa-9 1I\@undefined}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-211I\undefined@commandT}.΍}.}.}.}.}.}.}.}.}. b-783I\undefined_commandT}.΍}.}.}.}.}.}.}.}.}.}.}. jLԍ}.΍}.}.}.}.}.}.}. Ya-76,Ta-153,a-339,ga-358,b-763,b-830,b-855,c-1970I\Unicode r105,Tc-240Tfe',Tc-261,e-174,e-200I\unknown_strYҍ}.΍}.}.}.}.}.}.}. 241,Tg-262TYfeL,gg-263{g-266, g-278,g-285,g-g334,g-385,g-397,g-435,g-439 1I\unlessƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-510I\unsetcommand- }.΍}.}.}.}.}.}.}.}.}.}. 491,Tb-851TfeڎI\unsetdiml}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 491,Tb-851TfeڎI\unsetglyph}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-901 $feI\unsetintl}.΍}.}. 91,Tb-851Tfeڎ..,Tc-1816,c-1842I\unsetkerns}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. $c-610 $feI\unsetslotcommentyꍑ}.΍}.}.}.}.}.}.}.}.}. $c-286 $feI\unsetstrl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. I91, gb-851gfeڎ},Mc-1812,e-809,Me-810,e-860I\update_do_arc_list}.΍}.}.}.}.}.}.}.}.}.}.jLԍ}.΍}. c-1999,Tc-2013,c-2027,c-2038I\uppercase@0}.΍}.}.}.}.}. a-136,Ta-198,a-g210,b-77,c-253,e-179,e-343,g-269 1I\uprightitalcorr}.΍}. - e-242,Te-390Tfe',Te-403I\UseCosƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. zd-56 zfex܎FV,Td-71I\usedasƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 105,Tc-229TfeI\useexamplefontz}.΍}.}.}.}.}.}.}.}.}.}.}. $c-286 $feI\usemtxpackageB}.΍}.}.}.}.}.}.}.}.}.}.}.}. $c-411 $feI\usepackage}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. qe-54I\UseSinƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. zd-56 zfex܎FV,Td-73\UseTanƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. d-79 fex܎9_,Te-396DDQuV ""\vadjust}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-241 "#\varbotƈ}.΍}.}.}. j109,Tc-270Tfe',Tc-1485,c-1625\VARCHAR}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-581 Afe\varchar}.΍}.}.}.}.}.}.}.}. v105,Tc-270Tfe',Tc-1481\varepsilon}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-355\varmidƈ}.΍}.}.}. j109,Tc-270Tfe',Tc-1484,c-1616\varrepƈ}.΍}.}.}. j109,Tc-270Tfe',Tc-1486,c-1634\vartopƈ}.΍}.}.}. j109,Tc-270Tfe',Tc-1483,c-1607\vbox }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-62\vfillP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6a-150,Ta-156\vpl_calll}.΍}.}.}.}. "c-1136,Tc-1147,c-1176\vpl_extensionB}.΍}.}.}.}.}.}.}.}.}.}.}.}. c- 1132,c-1143,c-1169,c-1174,c-1191\vpl_Fontl}.΍}.}.}.}. "c-1135,Tc-1146,c-1192\vpl_font =|c-1134,Tc-1145,c-1171,c-1178\vpl_int}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. c-1303 fe&aT,c-1324,Шc-1355,c-1372,c-1432,c-1462, c-1522,c-1567,c-1641\vpl_kernl}.΍}.}.}.}.}.}.}.}.}.}. $c-1397,Tc-1445Tfe "#\vpl_kern_doYҍ}.΍}.}.}.}.}.}.}.}. $c-1440,Tc-1454Tfe\vpl_kerningYҍ}.΍}.}. "c-1393,Tc-1395,c-1439fe\vpl_ligature- }.΍}.}.}.}.}.}.}. $c-1396,Tc-1420Tfe\vpl_liglabel- }.΍}.}.}.}.}.}.}. c-1388,Tc-1394,c-1431,c-1455,c-1461fen<,c-1473\vpl_ligstopYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ԍ}.΍}. c-1442,Tc-1464,c-1469,c-1472fe\vpl_mapfontYҍ}.΍}.}.}.}.}.}.}.}. $c-1334,Tc-1350Tfe\vpl_movert}.΍}.}.}.}.}.}.}.}.}. $c-1492,Tc-1663Tfe\vpl_moveup}.΍}.}.}.}.}.}.}.}.}. $c-1493,Tc-1663Tfe "#\vpl_nextlargerz}.΍}.}.}.}.}. $c-1480,Tc-1591Tfe\vpl_pop}.΍}.}.}.}.}.}.}.}.}.}.}. $c-1495,Tc-1671Tfe\vpl_pushl}.΍}.}.}.}.}.}.}.}.}.}. $c-1494,Tc-1671Tfe\vpl_raw}.΍}.}.}.}.}.}.}.}.}.}.}. $c-1488,Tc-1638Tfe\vpl_rboundary_doyꍑ}.΍}.}.}. $c-1399,Tc-1407Tfe\vpl_rbserver_do}.΍}.}.}.}. $c-1398,Tc-1407Tfe\vpl_reall}.΍}.}.}.}.}. Lc-1303 Lfe#,Tc-1311,c-1357,~c-1358,c-1527,c-1555,c-1557,~c-1570,c-1572,c-1574,c-1576,c-1651,c-1665,c-1669,c-1690 "#\vpl_rulel}.΍}.}.}.}.}.}.}.}.}.}. $c-1489,Tc-1648Tfe\vpl_scale@0}.΍}.}.}. "c-1333,Tc-1346Tfe,Tc-1505\vpl_specialYҍ}.΍}.}.}.}.}.}.}.}. $c-1490,Tc-1653Tfe\vpl_title@0}.΍}.}.}. "c-1133,Tc-1144,c-1171\vpl_to_vf@0}.΍}.}.}. "c-1137,Tc-1148,c-1180\vpl_varbot}.΍}.}.}.}.}.}.}.}.}. $c-1485,Tc-1620Tfe\vpl_varcharYҍ}.΍}.}.}.}.}.}.}.}. $c-1481,Tc-1600Tfe\vpl_varmid}.΍}.}.}.}.}.}.}.}.}. $c-1484,Tc-1611Tfe\vpl_varrep}.΍}.}.}.}.}.}.}.}.}. $c-1486,Tc-1629Tfe\vpl_vartop}.΍}.}.}.}.}.}.}.}.}. $c-1483,Tc-1602Tfe\vpl_warningYҍ}.΍}.}.}.}.}.}.}.}. $c-1491,Tc-1653Tfe\vruleP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. zb-61,Tb-63I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtx38solHI\VTITLEƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-585 AfeAW I\warn_uncertain_datafč}.΍}.}. 6g-225 6YfeL"C,Tg-288I\warn_undecided_datafč}.΍}.}.}.}.}.}.}.}.}.jLԍ}.Hg-225HYfeLA,Tg-338,g-387,g-400,g-441 s*I\warn_unknown_sourcefč}.΍}.}. 6g-153,Tg-225TYfeLI\warning_do}.΍}.}.}.}.}.}.}.}.}.}. 6g-202 6YfeL"C,Tg-220 I\warnings_listB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.jLԍ}.Hg-201HYfeLA,Tg-211,g-212,g-221,g-223 s*IwarningspecialsTswitc9h}.΍}.}.}.}.}. c-1653 feI\warningspecialsfalse9}.΍}.}.}.}.}. c-1653 feI\warningspecialstruefč}.΍}. $c-1653 $fe#,Tc-1662I\widthP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. Tc-701 Tfe',Tc-1569I\@widthƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 8b-62I\width_ints_list}.΍}.}.}.}.}.}.}.}.}.}. Ae-959 AfeI\wlog }.΍}.}.}.}.}. va-102,Ta-117,a-125,a-443I\writeP}.΍}.}.}.}.}. a-25{a-27,Ta-29,a-30,ga-63,)a-70,(a-102,a-111,a-164,ga-417,˚a-419,˙a-443,a-458,a-g474,~a-483,a-733,a-739,a-745,ga-759,Ea-764,c-1317,c-1417,c-g1423,~c-1427,c-1596,c-1607,c-g1616,Ec-1625,Fc-1634,c-1659,e-g724,ؑf-50,ؐf-52,f-54,f-80,f-g137,%_f-158,f-206,f-274,f-283,f-g304,%_f-344,f-353,f-387,f-396,f-g453,^f-462,f-483,^f-523,f-532,f-593I\write_cmap_body}.΍}.}.}.}.}. e-171 fe"-,Te-225I\write_pl_glyphz}.΍}.}.}.}.}.}. e-750,Te-752TfeI\write_pl_krn- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-725 AfeI\wrn_rboundary_doyꍑ}.΍}.}.}.}.}.}.}.}. c-1407 fe;dXI\x@cs }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. a-g237,vb-81,uc-38,c-186,c-190,c-g195, c-200,c-206,c-211,c-216,gc-222, c-373, c-393,c-438,c-445I\x@relax}.΍}.}.}.}.}.}.}. a-296 ПfeL!,Ta-555,a-g656,b-252,b-254,b-255,b-465,gc-27,Uc-36,c-361,Vc-371,c-435,c-436H\x_cs }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-291 *feL \x_relax}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. *a-291 *feL \x_resetint}.΍}.}.}.}. I>91,Tb-746,b-787feڎ.., b-936,Eb-964,Fc-1231,c-1844,e-241, e-399, e-811{e-813,e-865{e-867,e-871,e-876,e-877,e-881\x_setintl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. I91,b-744feڎ3,Ec-1237,Fc-1316,c-1326,c-1328, e-243,e-619,e-1045,e-1046 \x_setstrl}.΍}.}.}.}.}.}.}.}.}.}. I,91,Tb-744Tfeڎ..,c-1312,*e-827,e-833,e-837,e-843\x_width}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. e-347,e-355,e-364,e-376,e-415,e-416\xdef }.΍}.}.}.}.}.}.}.}.}.}.}.}. a-415,Ta-465,b-256,Ec-1354,Fc-1715,c-1735,c-1748,Zc-1757,c-1763,c-2042,d-34,d-42,d-76,g-59,g-114,g-211 \XHEIGHT}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. Ae-631 Afe\xscale_factor g-157 YfeL"O:,Tg-162,g-321,g-323,g-373,g-375,g-425,g-427 \xscalefont}.΍}.}.!194,Te-863Tfe',Tf-474,f-544\@xxxiiƈ}.΍}.}.}.}.}.}.}.}.}.}. ͌b-6,Tb-121,b-15033QPY\year }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. qc-1895,Te-105\yscalefont}.΍}.}.}.}.}.}.}.}.}.}.}.}. 194,Te-863Tfe34R~Z\z@v}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. a-139,Ta-255, a-272,˚a-281,˙a-284,a-574,a-613,!@a-614,a-620,a-624{a-626,a-668,{b-70,{b-76,b-224,b-257,b-258,'(b-262,b-293,b-325,b-362,~b-487,}b-526,c-44,c-107,c-1087,Шc-1528,c-1531,c-1534,c-1684,-c-2035,-d-58,e-75,e-147,e-150,~e-894,e-1135,g-158,g-307,g-308,g-326,g-379,g-430\z@numP}.΍}.}.}. d-58,Td-59,d-62,d-64,d-65 \z@skipƈ}.΍}.}.}.}.}.}.}.}. 1a-612,Ta-622,a-623\zap@space@0}.΍}.}.}.}.}.}.}.}.}.}. b-140,Tb-143!čIChangeffHistory Iv1.6 XGeneral:bfontinst.rcTsearc9horderchanged(ThierryBouche).@֍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 39bAFMƲcommands xed,Ctogetfon9tdimenscomparabletoECfon9ts.1(ThierrygBouc9he)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 178X\fromany:,Searc9horderchangedtoPLκbAeforeAFM.(SPQR)ThecoAdew9asn'ting\fromanyTbac9kthen,though.u}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 196I@FileDFKey:@a=fibasics.dtx,Xb=ficommon.dtx,c=fimain.dtx,d=fitrig.dtx,e=ficonv.dtx, If=filtfam.dtx,Xg=fimapgen.dtxcsoIv1.800 XGeneral:b\textcompfamilyTin9tegratedinto\latinfamily.p(UV) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 211bfontinst.styTandfontdoc.styno9wgeneratedfromfontinst.dtx.p(UV)mI}. 36Iv1.900X_including_map_switc9h:kNewswitchthatcaninhibitwritingofVPL-spAeci cgpropAerties.p(LH)k=}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 134XGeneral:b\boundary_char\coun9tregisterremoved.RightbAoundaryslotnumbAerisnowgstoredTinthe%boundarycharin9tegerinstead.p(LH)x}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 139bNewTmethoAdofstoringslotassignmen9ts.p(LH)6b}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 135bAddedcompabilit9ycoAdefortheoldin9terfaceforbAoundaryligaturesandk9erns.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 136bMethoAdofcomputingitaliccorrectionsc9hangedtousinganin9tegerexpression.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 181bfontinst.dtxTsplitin9toseveralsource les.p(LH)'a}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 36bReplacedT\relaxb9y68\x_relax.p(LH)ۍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 46bReplacedCin9ternalB\setint, }\resetint, |and\setstrb9y'\x_setint,g\x_resetint,and^\x_setstr]respAectiv9ely:,tomak9ethepublic]versionspAos-gsibleTtoturno .p(LH)E}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91X\afm_length:pMacroTadded,othermacrosmoAdi edtouseit.(LH)-}.΍}.}.}.}.}.}.}. 177X\begincomment:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 100X\encoding:pChangedTgroupinfon9tdoActo\begingrouptypAe.p(LH)i}.΍}.}.}.}.}.}.}. 101X\endcomment:pCommandTadded.(LH)}w}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 100X\endencoding:pMadeTitouter.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 101X\endmetrics:pMadeTitouter.(LH)֍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 112X\for,T\endfor:pCommandsadded.(LH)!}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 97X\glyph:pAv9oidsTscalingby1000.p(LH)ɍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 128X\gobble_if:pMacroTadded.(LH).Ս}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 54X\IFKW-scaled:pChangedT\setintto\resetint.(LH)%}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 155X\ifnumber:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 90X\input_metrics:pUseT\process_csep_listfor le-list.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}. 151X\make_header:bMadeTin9tegerexpression\divadimen\divide.p(LH)ߍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 139bRemo9vedTtestfornoletterspacing.p(LH)0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 139X\MAP:AVPL-spAeci cpropertiesaddedtoAthosewhic9hareignoredbyb\pltomtx.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 186X\nextslot,T\skipslots:pMadec9hangesof\slot@numberglobal.(LH)}.΍}.}.}.}. 104X\offcommand,T\oncommand:pCommandsadded.(LH)p}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94X\pre_first_etx_pass_hook,T\pre_second_etx_pass_hook,g\pre_third_etx_pass_hook,T\pre_fourth_etx_pass_hook,g\post_first_etx_pass_hook,T\post_second_etx_pass_hook,g\post_third_etx_pass_hook,T\post_fourth_etx_pass_hook,g\tidying_up_hook:pETX-to-VPLThoAoksadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 135X\vpl_kern:bMacroTmoAdi edtoa9voidTduplicatek9erns.p(LH)& }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 143bMuc9hTofthecoAdefrom\vpl_kernhasbeenmo9vedTto\vpl_kern_do.p(LH) 0'143Iv1.901X_a_Tswitc9h:pT:empAoraryswitchadded.p(LH)yc}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42XGeneral:bDe nitionToftransformablemetric leadded.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 193bP9oAoledToutput leallocationadded.p(LH)Q}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 50X\afm_font_name:pMacroTadded.(LH)獑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 179X\foreach:pCommandTadded.(LH)ύ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 99276soX\gobble_setslot:pMadeT\gobble_setslota\longmacro.(LH)g}}.΍}.}.}.}.}.}.}.}. 146 X\open_out:p\xdefTinsteadof\defon\out_filename.(LH)Í}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 50X\rounded_thousandths:pMacroTadded.\scalec9hangedtouseit.(LH) j}.΍}.}.}.}. 89Iv1.902XGeneral:bFixedTsomesillymarkup.p(LH)^}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 36bCollectedTthematerialinSection16andmo9vedTittoficonv.dtx.p(LH)}.΍}. 170bMo9vedTSection17toficonv.dtx.p(LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 193bMo9vedTSection8tofibasics.dtx.p(LH)ª}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 46X\fromplgivenetx:pCommandTadded.(LH)=}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\fromvpl,T\fromvplgivenetx:pCommandsadded.(LH)]]}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\generalpltomtx:pCommandTadded,remo9vedT\pltomtxgivenetx.(LH)ı}.΍}.}.}. 184Iv1.903XGeneral:In9troAducedxthe\hletteri_macroxtemporaryv|rariables, Sreplacedg\temp_command.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42X\fromany:bCommandTadded.p(LH)Basedonasuggestionb9yVladimirV:olovich.S}.΍}.}.}. 195bAddedTbAeha9viourforAFMnotfoundcase.p(LH)䥍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\glyph_maxhpos:pV:ariableTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 123X\glyphbboxright:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 131X\make_factor:pMacroTadded.(LH)Hw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 59X\movert:pAddedTupAdateof\glyph_maxhpos.(LH)+⍑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 129X\pop:pAddedTupAdateof\glyph_maxhpos.(LH):}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 130X\reglyphfont:pUsing68\fromanyTforloAcatingfon9t.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 205X\samesize:CWAdded(bAeha9viourfornonexistent(glyph(basedonasuggestionfromgHilmarTSc9hlegel)and xedtypAoinfontdoc.p(LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 132X\transformfont:pAddedTbAeha9viourforthecasesource lenotfound.(LH)Q}. 195Iv1.904XGeneral:bF:on9tEtransformationrecordingsmovedtofimapgen.dtx,QsothattheinterfacegwillTbAespeci edinasingleplace.p(LH)xs}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 210bCompleted7rudimen9tarymap le6fragmentgenerator,.madeitpartofgfinstmsc.sty.p(LH)Bt}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 229X\fromafm:pAddedTcallof\record_transform.(LH)h.}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\fromany:pAddedTsearc9hforVPL leandcallsto\record_transform.(LH) 195X\frompl:pAddedTcallof\record_transform.(LH)!č}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\fromplgivenetx:pAddedTcallof\record_transform.(LH)荑}.΍}.}.}.}.}.}.}.}.}.}.}.}. 195X\fromvpl,T\fromvplgivenetx:pCommandsremo9ved.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\input_mtx_file:`No9wusing\fromanytomakeanMTX lewhennecessary:.gF:urthermoreTtestingforempt9yargumentusing68\ifxratherthan\if.p(LH)z153X\installrawfont:pAddedT\record_usage.(LH)Tn}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 150X\pout_lline:pCommandTadded.(LH)}w}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 52X\pout_llline:pCommandTadded.(LH)ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 52X\reglyphfont:pAddedT\record_transform.(LH)'}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 205X\vpl_mapfont:pAddedT\record_usage.(LH)ƍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 140Iv1.905XGeneral:pDi eren9tTcon g leforfinstmsc.sty.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 39X\DESIGNUNITS:TErrormessageadded.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 187Iv1.906XGeneral:bAdaptationTofL5A TuAEX'smessagesystemcompleted.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 62bReglyphingTsettings lesadded.p(LH)!ڍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 208X\no_kerning:bMacroTadded.p(LH)w}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 121277sobMacroTthoroughlyrewritten.p(LH)P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 121 X\noleftkerning:pMacroTadded.(LH)獑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 120X\noleftrightkerning:pMacroTadded.(LH)1}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 120X\norightkerning:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 120Iv1.907X\end_assign_slot:pSlotsTarenotassignedtoglyphsthatdonotexist.(LH)|}. 136X\pop:pRemo9vedTthe\edef.(LH)(Ǎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 130X\push:pRemo9vedTthe\edef.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 130Iv1.908XGeneral:oGlyphScommandsRa9void\edefingSoldcontentsSofU\glyph_map_commandsgandT\glyph_map_fonts.p(LH)9T}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 128X\out_lline:p\edef,Ttosa9veTmacroexpansionslater.(LH)s}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 50X\out_llline:v\edefBandBdon'tuse\out_lline,Mtosa9veBmacroexpansionslater.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 50X\pout_lline:p\edef,Ttosa9veTmacroexpansionslater.(LH)F?}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 52X\pout_llline:\edefGanddon'tuse\pout_lline,qtoGsa9veGmacroexpansionslater.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 52Iv1.909XGeneral:(System~fordoAcumen9tingboth}branc9hesofOifstatements}inETX[andgMTXT lesadded.p(LH)+}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 55X\Aheading:bUseT\addvspacetomak9espaceabAove.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44bInsertTa\penaltyforpagebreakingafteran\Aheading.p(LH)}.΍}.}.}.}.}.}.}.}.}.}. 44X\fontinsterror:pNewTnamefor\fontinst_error.(LH)с}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 63X\fontinstinfo:pNewTnamefor\fontinst_info.(LH)+}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 63X\fontinstwarning:pNewTnamefor\fontinst_warning.(LH)a}.΍}.}.}.}.}.}.}.}.}.}.}. 63X\fontinstwarningnoline:pNewTnamefor\fontinst_warning_no_line.(LH)63X\ifiscommand:4ChangedT6onefon9tdoAcde nitionof\ifisglyphtoade nitionofg\ifiscommand,Twhic9hwasmissingfromfontdoAc.x}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94X\int:pfontdoAcTimplemen9tationchangedtousing68\typeset@integer.p(LH)V}.΍}.}.}. 81X\kerning:pATuseof#1whereitshouldha9veTbAeen#2w9ascorrected.(LH)⍑}.΍}. 118X\messagebreak:pNewTnamefor\message_break.(LH)+}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 62X\priority:tChangedU]conditionU\for\ifnum,{sothatexpressionswithequalpriorit9ygwillTnotgetbrac9ketedTwhennested.p(LH)ʍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 90X\resetcommand:SinceX^fontdoAcX]addssomegrouping,i\resetcommandm9ustsetitsgargumen9tTgloballythere.p(LH)Q}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 93X\setcommand:Since fontdoAcaddssome grouping,M\setcommandm9ustsetitsargu-gmen9tTgloballythere.p(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 92X\setleftboundary,T\endsetleftboundary:pfontdoAcde nitionadded.(LH)׍}.΍}. 104X\setrightboundary:pdoAcTde nitionadded.(LH)^}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 105X\strint:ɫChangeotoostopitfromgobblingafollo9wingspaceifthein9tegerisstoredginTamacro.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 73X\typeset@glyph:Macroadded,)andmostcommandsthatprin9taglyphnamegc9hangedTtousethismacro.p(LH),ҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 122Iv1.910XGeneral:bCatcoAdesTrestoredafter Treading.rc le.p(LH&UV)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 39bMak9eT\everyjobcoAdeoptional,andsimplifyitalittle.p(LH&UV)y}.΍}.}.}.}.}.}. 41bChanged thew9ay slotn9umbAers are storedin\slots-hglyph9icon9trolsequences.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 136X\do_new_slot:pMacroTremo9ved.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 103X\generalpltomtx:+Madethiscommandthestandardone,whic9h\pltomtxcalls.g(UV&LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184278soX\get_slot_num:&Remo9vedrede nitionof\doto\gobble_onefromtempAorary gde nitionofc:\do,%sincea\slots-listusuallycon9tainsonlyoneort9woele-gmen9tsTanyway:.p(LH)4}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 137Iv1.911XGeneral:b\storemapdataJUcommandsJTarealsowrittentometric leswhentheyaregen-gerated.p(LH)-}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 230bDe nitionsTofmetric lecommandsaddedtohmisc6\i.p(LH)#}.΍}.}.}.}.}.}.}.}.}.}.}. 112bFlag for thatsourcefon9twasn't foundchanged toafm-name.gtransform-sourceTstringcompletelyremo9ved.p(LH)荑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 194bRecording5oftransformationsmo9ved5to6themacrosthatactuallywritethegMTXT les.p(LH)5}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 194bDe nitionsTofencoAding lecommandsaddedtohmisc6\i.p(LH)= }.΍}.}.}.}.}.}.}.}.}. 101bETXTtoENCcon9verterTadded.p(LH)+}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 172bCommen9tTcommandsincludedinfinstmsc.sty.p(LH)z}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 100X\afm_font_name:pMacroTremo9ved,sincenolongerneeded.p(LH)'}.΍}.}.}.}.}.}.}.}.}. 179X\afmtomtx:ChangedsettingofF \raw_font_nameto\edefandaddedsettingofg\source_font_name.p(LH)b}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 176X\calculate_it_slant:pStrippingTo thespacein\afm-ItalicAngle.(LH)X}.΍}. 181X\fromafm:pAddedTtestfor leexistence.(LH)V}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\frommtx:bWhenSmapdataTarenotkno9wn,[trytogetthemfromtheMTX lebAeforegdeclaringTthesourceunkno9wn.p(LH)4ݍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 234bAddedTtestfor leexistence.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\frompl:pAddedTtestfor leexistence.(LH)b}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\fromplgivenetx:pAddedTtestfor leexistence.(LH)T}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\ifisglyph:phmisc6\iTde nitionadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 132X\make_enc:?0Storing&encoAding&nameinstringGencodingname,k th9usallowingthegETXT letoo9verrideTthedefault.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 172X\makemapentry:"Whenmapdataarenotkno9wn,qtrytogetthemfromtheMTXg leTbAeforedeclaringthesourceunkno9wn.p(LH)E}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 232X\mtxtomtx:p\edefing68\raw_font_name.(LH)h}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 198X\mtxtopl:ݔAdded`ligless'tooneofthecommen9tlines.(LH)}Clari cationreques-gtedTb9yW:alterSchmidt.\}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 192X\pl_to_mtx:p\edefing68\raw_font_name.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184X\record_transform:{\storemapdataiilinesareijoptionallywrittentothemainout-gputT leasw9ell.p(LH)Y}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 231X\reglyph_glyphpcc:pT9ypAoTcorrected.(LH)SpAottedb9yRolfLindgren.V}.΍}.}.}.}. 206X\reglyph_glyphpcc,b<\reglyph_samesize,\reglyph_setglyph:A\stringwhic9hgshouldTbAe\noexpandcorrected.p(LH)Reportedb9yRolfLindgren.|,}.΍}.}.}.}.}. 206[TReglyphing:peightoldstyleTt9ypAocorrected.(LH)SpAottedb9yRolfLindgren. 209Iv1.912XGeneral:b\install...XcommandsupAdatedtoset\setsomething_globalto\globalgaroundothemselv9es.Thisreducesproblemswithpassignments\notworking"gduetotheunin9tuitivegrouping. (LH)ProblempAointedoutbyHilmarSchle-ggel,T,andothers.ύ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 149bdvipsTmap lefragmen9tswriteradded.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 245bAFMjcommandZStdVWno9winterpreted: ^}generates\setintforintegergverticalstem.p(LH)Bt}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 178bdvipdfmTmap lefragmen9tswriteradded.p(LH)1}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 248X\DESIGNUNITS:51Storedesign9unitsv|ralue52in\b_dimenratherthan\a_dimen.g\a_dimenTholdsthedesignsizethroughoutPL-to-MTX.(LH)}.΍}.}.}.}.}.}.}.}. 187X\error_help_e:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 65279rsoX\if_equal:pMacroTadded.(LH)[}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 54 X\if_defined,T\if_undefined:pMacroadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 53X\ifisint,T\ifisstr,\ifisdim:pReimplemen9tedusing68\if_defined.(LH)}.΍}.}. 94X\input_mtx_file:pAddedTerrormessage.(LH)Suggestedb9yAlexeiKostin.č}. 153X\installfontas:pCommandTadded.(LH)jQ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 152X\make_enc:dpAlso9TcallingZ8\declarepsencodingonce9StheencoAding lehasbeengwritten.p(LH)qn}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 172X\reglyphfonts:2Added loAcal resettingof\setsomething_globalto\relax.gItshouldn'tbAeneeded,)Xsince\reglyphfontsshouldnotoAccurbet9weeng\installfontsTand\endinstallfonts,butIbAetsomeonewilltry:.p(LH)\F202X\setcommand:Settings of acommandalreadyde nedisdiv9ertedto\a_macro;PitgusedTtobAe\a_command.pSa9vesTonehashtableposition.p(LH)}.΍}.}.}.}.}.}.}.}.}.}. 92X\setsomething_global: Con9trolsequenceintroAducedandaddedtoallg\set...,'\reset...,and\unset...)tcommands,asw9ellas\offcommandandg\oncommand.p(LH)(ҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 92X\swap_two:pMacroTadded.(LH)[}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 46X\top_of_pl_hook:pPropAert9yTlisthookadded.p(LH)2ȍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 135X\transformfont:AddedaloAcalbresettingof=\setsomething_globalto\relax,gsinceT\transformfontassumessuc9hassignmentsareloAcal.p(LH)ڍ}.΍}.}.}.}.}.}. 194Iv1.913XGeneral:bUsings\make_factoriforimakingPLfreals,ratherthang\afm_convert+\vpl_real.|Y\scaled_design_size replaced b9ynewgdimenT\mapfont_scalingfordeterminingmapfon9tatsize.p(LH)g3}.΍}.}.}.}.}.}. 138bDe nition vof vtransformablemetric lec9hangedtoincludetheg\setscaledrawglyphTand\setscalednotglyphcommands.p(LH)'}.΍}.}.}.}.}. 193bNewOimplemen9tationofT\scalefontand\yscalefont,^usingthenewg\setscaledrawglyphTand\setscalednotglyphcommands.p(LH)'}.΍}.}.}.}.}. 194bUsingN\slots-hglyph9i-con9trol-sequencesforstoringencoAdingpositions-ofglyphsginTreencoAdedfon9ts.p(LH)Uu}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 194X\do_character:iNegativ9e;italic;correctionsarewrittentothe(V)PL;bAeinggen-gerated.p(LH)-}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 144X\gobble_if:pMacroTrede ned;itno9wworksentirelyinthemouth.p(LH)g}.΍}.}.}.}. 54X\half_point:pConstan9tTadded.(LH)F}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42X\installfont,\installrawfont:>Mo9vedsomecoAdefrom\install_fonttothesegcommands.p(LH)'}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 150X\installfontas:SpAeci cationPc9hangedPtoallowParbitraryhfont-info'isas rstgargumen9t.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 152X\installraw_storemap:pMacroTadded.(LH)Ui}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 151X\l_inv_scale:pMacroTadded.(LH)Hw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 90X\l_rounded_thousandths:pMacroTadded.(LH)ٍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 89X\pl_mapfont:pMacroTadded.(LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 140X\rawfont_scaling:pDimenTadded.(LH)q}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 138X\transformfont:"JThird@argumen9tAremoved,XsinceitAisn'tusedan9ymore.%6Thisgc9hangeptispsharmless,g\minimum_kernl.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 143X\vpl_mapfont: aMapfon9tnumbAercontrolsequencesarenamed\hscalinggfactoript-hfontidinsteadofz\hfonti-hscalingfactoript./Theyearealsomadeg\mathchardefs.p(LH))8}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 140XwarningspecialsuUswitc9h:pSwitchcontrollingwhetheruT\glyphwarningsshouldputgSPECIALSTintheVPLw9asadded.p(LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 148280$gsoIv1.914 XGeneral:bAddedTcommandsfortestingforTuAEXextensions.p(LH)0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 47bGenerating68trig.styTfromsource.p(LH)֍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 6bCon9tents of4|\Tf-hfonticon9trol sequenceschangedto allowproAcessing thesameg leTofrecordedtransformationssev9eraltimesonthesamerun.p(LH)}.΍}.}.}. 230bTheptotalptransformappliedforafon9tisdeterminedbAeforetheen9trymakersgareTcalled.p(LH)]}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 232X\concat_transformfont,T\concat_reencodefont:pMacrosadded.(LH)}.΍}.}.}. 235X\endmetrics_hook:pMacroTadded.(LH)W}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 112X\extract_font_generation:pMacroTadded.(LH)I}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 231X\file_list_metrics:pMacroTadded.(LH);Ǎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 151X\first_of_three:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 46X\for,R\for_i,R\foreach:\setsomething_globaladdedtoassignmen9tsoftheg\for-hname iTand\body-hnameicon9trolsequences.p(LH)wh}.΍}.}.}.}.}.}.}.}.}.}.}.}. 97X\if_defined,\if_undefined:AutomaticallyselectingbAet9weenTuAEXand"-TuAEXgde nitions.p(LH)-獑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 53X\input_metrics:oZRede nedtosuite\file_list_metrics.Inparticular,&theregwillno9wbAeacommaattheendof\curr_file_listand\prev_file_list.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 151X\input_mtx_file:FCan)no9w(acceptarbitrarymetriccommandsinargumen9t.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 153X\inputetx,T\inputmtx:NewuxfontdoAcTde nition,{!using\IfFileExists.0(LH)(101,{"112X\make_enc:pNotTwritinganaddressen9tryifthatstringisn'tset.(LH)a}.΍}.}.}.}. 172X\metrics:pFixedTt9ypAo:\x@relaxinsteadof\x_relax.(LH)"}.΍}.}.}.}.}.}.}.}.}.}.}. 112X\newlinechar,T\errorcontextlines:pMo9vedtoerrormessagesubsection.p(LH)65X\NOFILES:TAdded\reglyphfont.p(LH)N}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 164X\offcommand,T\oncommand:pfontdoAcde nitionsadded.(LH)\'}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 95X\process_generation,\process_generation_succ:Con9trolsequencesadded.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 230X\ProvidesMtxPackage,g\usemtxpackage:jNewfontdoAcimplemen9tation|thepack|ragesareactuallygloadedw(theyha9vewto,%sincetheywcande necommands).C3Multipleloadingisgprev9entedTasinfontinst.p(LH)ۍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 113X\TypesetList:pMacroTadded.(LH)Hw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44X\xscale_factor,\slant_factor,\reencode_etx: PCon9trolsequencesadded.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 235Iv1.915XGeneral:bpltotfT\driv9er"suppAortadded.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 249bAddeddescriptionofA\aliasedmacrotothede nitionoftransformablemetricg les.p(LH)+}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 193X\aliased:pMacroTadded.(LH)e}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 199X\fontinstcc,Y\normalcc:zIn9troAducedcommandsforchangingbAetweenfontinstgin9ternal/catcoAdes0andnormalcatcoAdes,assuggestedb9yKarstenTinnefeld.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 38X\mtxtomtx:pLoAcallyTrede ning68\aliased.(LH)N}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 198X\mtxtomtx_setscaledrawglyph:pAddedTloAcalrede nitionof\aliased.(LH)200X\reglyph_setscaledrawglyph:WCorrectedGbuginHthe\ifnum:itshouldHtestar-ggumen9tT#5,not#4.p(LH)EncounteredbyThierryBouche.W}.΍}.}.}.}.}.}.}.}.}. 206X\spacecatcode,ph\nlcatcode,pi\atcatcode,\underscorecatcode,\tildecatcode:gRemo9vedTsincethecon9tentsTcanjustasw9ellbAestoredin\normalcc.p(LH)38X\tracinglostchars:pAddedTsettingthisparameter.(LH)[}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 65281MsoIv1.916 XGeneral:bMo9vedTSection9toficommon.dtx.p(LH)ª}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 67bMajor o9verhaul of}fontdoAcmec9hanismsforintegerandstringexpressionscom-gpleted.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 67bRequiringTtheamstextpac9k|rageinfontdoAc.p(LH)ݍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44X\b@count:pV:ariableTadded.(LH)7}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44X\branches@fi:Commen9ted[out[testwhichconcatenatesconsecutive\Fis,msincegthatTdoAesn'tw9orktogetherwiththeIfBranchenvironment.p(LH)q}.΍}.}.}.}.}.}. 56X\ConditionallyScaled:pCommandTadded.(LH)Ӎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 118X\expression,T\priority,\identity,\bracket:pMacrosremo9ved.(LH)8}.΍}.}.}.}. 90XFD@tight@Tswitc9h:pSwitchadded.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 57X\FD@typeset@string@set,g\FD@typeset@string@set@:Macros~Uadded.\FD@typeset@string@set~VshouldgbAeTusedinsteadof\print@csep@listinmostoccations.p(LH)#}.΍}.}.}.}.}.}.}. 120X\foreach:pfontdoAcTde nitionadded.(LH)s}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 99X\half,T\otherhalf:pMacrosadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 86XIfBranch:pEn9vironmentTadded.(LH)m}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 57XIfBranchDummy:pEn9vironmentTadded.(LH)鍑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 58X\macroparameter:pCommandTadded.(LH)=}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 75X\setglyph:pAddedT`set'tofontdoActext.(LH)d}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 124X\SetStringVariable:pCommandTadded.(LH)*c}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 96X\typeset@glyph: 3Macro!rede ned!(madesynon9ymousto\TypesetString-gExpression).p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 122X\typeset@integer,T\typeset@string,\typeset@dimen:pMacrosremo9ved.(LH)93Iv1.917XGeneral:bRewrotethefon9tdimenpartofthe(V)PL-to-MTXcon9vertersothattheETXgcanTspAecifythefon9tdimens.p(LH)ڍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 188bOptionTproAcessingadded.p(LH)P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42X\afmtomtx:+aAddedresettingof>\setsomething_global|assignmen9tsmadeheregm9ustTbAelocal.p(LH)l}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 176X\FD@lig-/LIG>,I\FD@lig-LIG/>,I\FD@lig-/LIG/>,\FD@lig-/LIG/>>:Changedgho9wfontdoAcmarksthecurrentpAositionafteraligatureinstruction,from+gtoTb.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 106X\generalpltomtx: Addedfresettingfof`\setsomething_global|assignmen9tsgmadeTherem9ustbAelocal.p(LH)Y}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184X\ifareglyphs:pMacroTadded.(LH)Hw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 132X\label:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 111X\Ligature:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 106X\mtxtomtx_setint:5Rede ned7toallo9w6anextensiblelist\width_ints_listofgin9tegersTthatshouldbAetransformedaswidths.p(LH)t}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 199X\mtxtopl:Addedəresettingof~ \setsomething_global|assignmen9tsmadeheregm9ustTbAelocal.p(LH)l}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 192X\setfontdimen:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 110X\setleftboundary:pMadeTtheleftbAoundaryreferencableusing68\label.(LH),104X\setscalednotglyph:Thismacroshouldset\g-hglyph9i-not,Cnot\g-hglyphi.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 126X\setslot:pMadeTslotsreferencableusing68\label.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 102X\slot@name:\XNo9wHstoringtheprintableformoftheGname,EratherthantherawgcoAde.p(LH)i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 102X\Unicode:bCommandTadded.p(LH)1ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 107bAddedTsettingof\linepenaltyand\spaceskip.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 107282tsoX\width_ints_list:pMacroTadded.\verticalstem_nameremo9ved.p(LH)Ӎ}.΍}.}.}. 199 Iv1.918X\encoding,\endencoding:[Added\parand\addvspacetofontdoAcde nitions.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 101X\FD@charname:pMacroTadded.(LH)Hw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 107X\FD@codepoint:pMacroTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 107XhypertexToption:pOptionadded.(LH)?}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42X\needsfontinstversion:0Di eren9tformattinginencoAdingspeci cation les.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 38X\oddligature:pCommandTadded.(LH)ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 106X\textunicode:pCommandTadded.(LH)ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 107Iv1.919X\endencoding:ٵAddedsettingofDO\parindentto1emtofontdoAcde nition.(LH)101X\make_enc:pAddedTDSCcommen9ts.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 172Iv1.920XGeneral:GThe?bAody(bet9ween@\metricsand\endmetrics,Rand\encodingandg\endencodingrespAectiv9ely)ofafontdocdocumen9tisnowtypAesetinagflushleft*en9vironment.ZItusedtobAethatthe*entiredoAcumentwastypAesetgthisTw9ay:.p(LH)ќ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. `44,{101Q(\encoding),a101Q(\endencoding),112(\endmetrics),112(\metrics)X\Aheading:pEncouragedTpagebreaksbAeforean\Aheading.(LH)B}.΍}.}.}.}.}.}.}.}.}. 44XIfBranch:4Remo9vedassignmentto\listparindent.Idon'tknowwhyitwasgthereTinthe rstplace.p(LH)8}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 57XpdftexToption:pOptionadded.(LH)%}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 42Iv1.921X\installfontas:Automatically|doing|an\installfamilyifthathasnotbAeengdone.p(LH)TSuggestedb9yRowlandMcDonnell.Í}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 152X\pl_rounded_real:pMacroTaddedandisusedinsteadof\pl_real.(LH)U}.΍}.}. 186X\pl_to_mtx:U\fromvplin\storemapdatadoAesnotha9veanargument.FixedagbugTthatproAducedsuc9hanargumentanyway:.p(LH)ҵ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184X\textvisiblespace:pRede nitionTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 69X\transformfont:Correctedanerrormessagethattriedtouseav|rariablethatgw9asn'tTset(LH)u}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195Iv1.922X\setscalednotglyph:Corrected=t9ypAo:shouldtest>whethertherawscaleintegergexists,Tnotwhetherthei-rawscalein9tegerexists.p(LH)⤍}.΍}.}.}.}.}.}.}.}.}.}.}.}. 126X\setscaledrawglyph:Corrected=t9ypAo:shouldtest>whethertherawscaleintegergexists,Tnotwhetherthei-rawscalein9tegerexists.p(LH)⤍}.΍}.}.}.}.}.}.}.}.}.}.}.}. 125Iv1.923XGeneral:bAddedapsuppAortaofork9eywordsapotherthanscaledinthesecondargumen9tofg\installfontTandsuc9h.p(LH)B}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 152bMakingTsure\lineskiplimitispAositiv9e.p(LH)ڍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44X\eTeXlogo:pAddedTk9ern,tomatchltugbAoatde nition.p(LH)]}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 48X\etx_to_font: MadeUtheU rstargumen9talistofcommands. Renamedg\vpl_callerto\vpl_call; itisno9wassumedtocon9taintheargumen9tsasgw9ell.p(LH)n}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 134X\etxtovpl:pTheTprogramiscalledvptovf,notvpltovf.(LH)}.΍}.}.}.}.}.}.}.}.}.}. 133X\etxtovpl,\etxtopl:IvThe rstargumen9tofthesemacrosisnowacomma-gseparatedlistofETX les,M)andtheitemsma9ybAesubjectedtomoAdi erclauses.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 133X\fromany:pAddedT\pl_encoding.(LH)G|}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\generalpltomtx:fUChanged:Ftestof:Gfourthargumen9ttoinsteadof\ifxuse\if.gThisTismorev9ersatile.p(LH)4Ǎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 184283soX\glyph_name_modifier:pMacroTadded.(LH)Ui}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 115 X\ifisglyph:pUsing68\if_defined.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 132X\IFKW-mtxasetx:pMacroTadded.(LH)獑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 134X\input_mtx_as_etx:pMacroTadded.(LH)h}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 112X\make_inputetx:pMacroTadded.(LH)獑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 134X\ProvidesMtxPackage:RedesignedMtheMheadingsformetricpac9k|rages,[sincetheygin9teractTpAoorlywith\sectionheadings.p(LH)4z}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 113X\resetglyph:\edefing\glyphname,forconsistencywith\setslot.RInprinciple,gthisTcouldbreakMTX les,butIdoubtthatitwill.p(LH)}.΍}.}.}.}.}.}.}.}.}.}. 124X\setfontdimen:&Lea9ve+the,fontdimenunset,whenthein9tegerv|rariablehasnotgbAeenTset.p(LH),}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 110Iv1.924XGeneral:pAddedTmec9hanismforpassingoptionstoMTXandETX les.(LH)(ٍ}.jLԍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.154T(\reset_modifiers_hook),}155&(\IFKW-option),k=155(\ifoption),k>155(\list_of_options)X\autoinstallfamily:pMacroTadded.(LH);Ǎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 152XdirectTswitc9h:pCommandadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 111X\mtxtomtx:pAddedT\directfalse.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 198Iv1.925XGeneral:7JAdded"\renameglyphforHungarumlautsmall.DW:alterSc9hmidtnoticedgitTw9asmissing.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 209X\glyphpcc:hAddeddPc9heckdQthattheglyphusedisde ned;wegetdQanuglyerrorifgitTisn't.p(LH)ov}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 131X\latin_encodings:pChangedTfromusing68latin.mtxtonewlatin.mtx.(LH):}. 227Iv1.926XGeneral:pAddedTsomemissing~'satendsoflines.(LH)L}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 170X\fromany:bHasS toresetStheafm-namestring,bvsince\input_mtx_fileno9wusesthev|ralue.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195bRemo9ved#\pl_encoding;itis$bAettertopro9videthatfunctionality$inaseparategmacro.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 195X\input_mtx_file:OnlyNloAokingforNPLNandVPL leswhenNanencoAdingisspe-gci ed.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 153Iv1.927X\declareencoding:pLo9wercasedTencoAding lenames.(LH)u䍑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 163X\do_character:8Added# ag#foremittingw9arningmessagewhenaglyphismiss-ging.p(LH)TRequestedb9yW:ernerLembAerg.Å}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 144X\etxtoenc:AMadethehetx le iargumen9tacomma-separatedlistofETX~ les.gChanged\do_slotde nitiontogetsetratherthanresetseman9tics.(LH)gF:eatureTrequestedb9yWernerLem9bAerg.M͍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 172X\FD@lig-/LIG:TFixedat9ypAo.p(LH)Reportedb9yW:ernerLembAerg.]}.΍}.}.}.}.}.}.}. 106X\FD@lig-/LIG/>>:pFixedTat9ypAo.(LH)RepAortedb9yW:ernerLembAerg.Ϡ}.΍}.}.}.}. 106X\if_undefined:pFixedTproblemwith\unless.(LH)pV}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 53X\if_defined,HO\if_undefined:fMoAdi ed"-TuAEXde nitionstomak9ethemworkgwiththecruft9yold\unsetis\letto\relax"traditionofZHfontinstimplemen9t-gation.N(LH)]This]w9asfoundto]bAeashow-stoppAerforusing]v1.926with"-TuAEX;gHeik9oTObAerdiekfoundthecauseofit.c}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 53X\make_enc:pMoAdi edTtohandleacomma-separatedlistofETX les.(LH)}.΍}. 172X\make_ligtable:$9Changed9thesurrounding8groupto\begingroupt9ypAe.(Thisghelps&con9tainerrorsthatarisewhenthe\setslotsand\endsetslotsaren'tgpropAerlyTbalanced.p(LH)@}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 141X\mtxtomtx_redefinitions:Macro՜added.]KThecoAde՝usedtobe՜in\mtxtomtx.g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 199284soX\reglyph_redefinitions:Macroladded.6ThecoAdeusedtolbein\reglyph_font. g(LH)؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 205[TReglyphing:oPlacedScommandsTforlettersand guresinseparatemoAdules,SsogthatTtheycanbAeseparatedingeneration.p(LH)b}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 209X\storemapdata:3Impro9vedwordingofwarningmessageanddowngradedittoanginfoTinthecasewhenthet9woTde nitionsarethesame.p(LH)č}.΍}.}.}.}.}.}.}.}. 231Iv1.928XGeneral:pETXTtoCMAPcon9verterTadded.(LH)lw}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 174X\charseq:bCommandTadded.p(LH)1ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 108bT9ypAesetTformchanged,fromparagraphtoaone-item-pAer-linelist.p(LH)1}.΍}. 108X\cmap_codepoint:pAddedT\uppercasetoensurecaseindepAendence.(LH)Y!}.΍}.}. 175X\FD@relax@encoding@tricks:#Macroadded,DDto xbugrepAortedb9yPeterDy-gballa.p(LH)!}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 102X\format_hex:pMacroTadded.(LH) }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 61X\fulldownload:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 240X\plainneg:Added\plainneg.ThattheL5A TuAEX\negistak9enoverbypfontdoAcbutgisneededinoms.etxhadgoneunnoticedforo9verteny9ears!{(LH)aProblemgrepAortedTb9yPeterDyballa.퍑}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44Iv1.929X\input_mtx_file:MissingIspaceHinmessageinserted.l(LH)-P9ointedoutIbyPetergDyballa.%}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 153X\metrics_given_encoding:yTheeafm-namestringfusuallyhasav|ralueatthispAoin9t,gsoqitpisnecessarytoresetit.z(LH,sighingbAecausehekno9wsthisisn'tthe rstgtimethisproblemoAccurred)FirsttobAehitb9ythisbugw9asMichaelZedler.154X\mtxtopl:pCorrectedT`pltotf'incommen9t.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 192Iv1.930X\@clxxx:]RenamedKthisJconstan9t.PTThereshouldbAethreexsin\romannumeralg180,Tbuttrig68onlyhadt9wo.p(LH)4w}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 166X\@tempdima,\@tempdimb:eThesealiasesfor\a_dimenand\b_dimenw9erere-gmo9ved,Tsincew9emaynowhackthemoutof\CalculateTan.p(LH)}.΍}.}.}.}.}. 42XGeneral:bInlinedTthetrig68pac9k|rageintofontinst.styandfriends.p(LH)S}.΍}.}.}.}.}.}.}.}.}. 166bUseT\x_csand\if_undefinedwhereappropriate.p(LH)*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 167X\TG@rem@pt:pUsing68\lose_measure.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 167Iv1.931X\append_download: XNewvsyn9tax(twowarguments)Thesecondisexpanded,gwhereasTthe rstisprotectedb9ya\noexpand.p(LH) ֍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 246X\declarepsencoding:pAddedTmainfontinstandfontdoAcde nitions.(LH)}.΍}.}. 239X\encname_to_etx:&Macrojadded,tojsuppAortcac9hingoriginalENCjnamesinauto-ggenerated0ETX0 les.n(LH)0Thanks0toAlexejKryuk9ovfor0theinspirationforgthis.}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 170X\encodingdownload:pCommandTadded.(LH)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 240X\encslot_to_etx:pMacroTadded(separatedfrom\enctoetx).(LH)}.΍}.}.}.}.}.}. 171X\make_dvips:pSuppAorting68\fulldownloadTand\encodingdownload.(LH)䍑}.΍}.}. 246X\make_etx:pNo9wTrequiringaparticularfontdoAcversion.p(LH)}.΍}.}.}.}.}.}.}.}.}.}.}. 171X\mtxtomtx:bCop9ying \declarepsencoding 'data &togeneratedMTX 9 leasag\setpsencodingTcommand.p(LH)+؍}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 198bPlacedS@ETXRproAcessingafter\needsfontinstversionhadbeenwritten,sogthat ETX commandscan writedatadirectlytotheoutputMTX le.(LH)198X\providepsencoding:pCommandTadded.(LH)*c}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 240X\substitute_generic:GMacroѿadded,tosuppAortexplicitdisablingofsubstitu-gtions.p(LH)l}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 158285ӠsoIv1.932 X\glyphpcc:3cChangederrormessagetow9arningwhenacorrespAondingnotglyphgexists.(LH)ThisdealswithanissueregardingcompAositesinfon9tswhichgha9veTbAeenreencodedtosomethingnotasupersetof8a.獑}.΍}.}.}.}.}.}.}.}.}.}.}.}. 131Iv1.933X\afm-CH:ޘPropAerޙde nition,thatparsesthefollo9winghexadecimalv|ralue.x=(LH)gSincenoAonehascomplainedabAoutthisbAefore,it'sprobablynotv9erycom-gmon.uj}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 179X\afm_char:Negating\bbox_lly using\numberinsteadofanassignmen9ttog\a_count.p(LH)b}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 180X\afm_write_setkern:pMacroTadded.(LH);Ǎ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 179X\definealias:pCommandTadded.(LH)ፑ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 182286!sogIInZternal notesꨍIAenTyps3ographicfftreatmentXbIKBhaveKEbGeenfollowingTheL雍QATKß'E-XComp}'anioninKDthatKEIKChavesetKEallnamesof bpackqagesandthelike|fontinst,!fontdoGc,"trig,doc,"anddocstrip(ImighthavebforgottenZsome)|inZsansseriftypGe.zActually*,IZMhaveZde nedacommandb\packageᒲinfisource.sty(oristhat source?)}whichdoGesthis,soifwebdecideUUonsomeotherformatting,wecanjustchangethat.q/LHXbItYseemstomethatthereshouldindeedYbGesomespacebetweenYthe`v'andbthedigitsinaversionnumbGerwhenitistypGeset,ybutI[alsothinkafullspacebisڲtoGomuch, soڱIڐhaveڲbeenڱusingthinspaces.TheseareunbreakqableandbunderѕL5ffA͉TU>'ExXіyoucansimplyuse\,togetone(whileyouarenotinmathbmoGde,UUthatis).q/LHXbWhile"Iwentthrough(some!of)thecoGde,Icameacrossafewinconsistencies.bIha9vemarkedthemoutlikethis|some>)bGoldfaced>(textinaparagraph,anAbandalargeAminthemargin.mIde nedacommand\ambiguityfordoingbthis.q/LHXbThereisalsoasimilarcommand\questionwhichisintendedforsituationsbwherethereisn'treallyanerror,ڨbutsomethingseemslikeitshouldbGetakenbcareZofinsomeotherway*. Ther\questionrcommandputsaquestionbmarkTinthemargin.2\?XbI;also;noticed;thatthereareseveralfontinstcommands,@notallofwhicharebnew,@whichxarenotde nedinfontdoGc./T*omarkoutsuchthings,@I+have65NotTindoc:p\foobwrittenthingsliketheoneshowninthemarginbythisparagraph.MCIde nedbaUUcommand\missingfordoingthis.q/LH!čIBdvPlanningfftopicsIThissectionlistsitemsinthelargerdesignofXfontinstwhichneedtobGeresolvedIinFconewayFcoranother.lDebatesabGouttheseitemsonthefontinstmailinglistareIwelcome.6IB.1jReorganisationofthesourceuTIAtUUthemoment,alltheideassuggestedhavebGeenrealized.IB.2jFilesIWhich lesshouldbGeconsideredtemporaryandplacedintheloGcationspeci ed Iwith\tempfileprefix?sShould lesbGeexplicitlybelookedforatthisloGcationIorshoulditbGeassumedthatfontinstusersincludethatloGcationintheirTU>'ExXIinput lesearchpath?[Intheformercase,which lesshouldbGelookedforinthatIloGcation?˥ShouldsI lessJbelookedsJforinthetempGorarylocationsJbeforetheysJareIloGokedUUforwithoutaspeci edlocation,orshoulditbetheotherwayUUround?287 soICddContributorsI[The fontinstsource hasbGeenprettyinconsistentinhow pGeoplearecreditedfor Iwhatdtheydhavedone|someappGearonlydasacronymswhileothersdappGearasratherIstriking8e-mailaddresses|soIthoughtit9bGestthatthisisshapedupa9bit.pMyIsuggestionhisthatweusenamesoriacronymsinthesourceandmoveeverythingIelseqhere.wIZalsothoughtpitcouldbGeinterestingwithashortdescriptionofwhatIeachpGersonhasdoneandisdoing,soIyhavestartedeversoslightlyonsomethingIalongUUthoselines.qF*eelfreetoaddthings!/LH]XThefollowingpGeoplehavecontributedsubstantialamountsofcoGdeordocu-ImentationUUtofontinst.qTheyarelistedinstrictalphabGeticalorder.IThierryTBouc9heThierry~saw~tothattheT1encoGdedfontsgotfontdimensionsbcomparableytotheecyfonts.wThierryisalsotheauthorofseveralpapGersb(publishedintheCahiersGUT;enb}'ergkandTUGboatز)whichdealwithnon-btrivial(9applications(8ofVfontinst,\suchascreatingmetricsforAdobGeMinionbMultipleUUMasterfontsanddevelopingacorrespGondingmathfontsetup.bE-mail:qThierry.Bouche@ujf-grenoble.frILarsTHellstr@om(LH) ;Lars_isrespGonsibleformostofthethingsinv1.9thatbwereUUnotthereinv1.8.bLarskislcurrentlyamembGerofthefontinstmaintenanceteam. HeisalsoabPh.D.UUinmathematicsloGokingforemployment.IAlanTJe rey(ASAJ)3jAlan}is}theoriginalauthorofDfontinst.)HeisnotcurrentlybonUUthedevelopmentUUteam,butheisstillmanagingthefontinstmailinglist.bE-mailUU(fontinstmailinglistsubscriptions):vfontinst-request@cogs.susx.ac.uk.IConstan9tinTKahn(CK)zٲConstantinZisYone(Sebastianistheother)oftheori-bginalUUcoauthorsofthecurrent\latinfamilycommand.IRo9wlandTMcDonnellʆRowlandnrewroteAlan'soldnv1.5doGcumentationforbfontinstUUandupGdateditforv1.8.ISebastianTRah9tz(SPQR)*Sebastianisone(Constantinistheother)oftheboriginalIcoauthorsoftheJcurrent\latinfamilycommand.[nHehasalsocon-btributednumerousETX lesandmadethe\unocial"v1.6andv1.7,?whichbincludedUUthe rstfontinstsuppGortformakingxTS1encoded les.IUlrikTVieth(UV)6UlrikRconvertedfontinst.styStodoGc/docstripformat,re-bunitedAlan'sv1.511andSebastian'sv1.7,andmadethe rstocialreleasebofrfontinstUU(v1.8)formorethantwoUUyears.bUlrik1is1currentlyamembGerof1thefontinstmaintenance1team.Heis1alsobinvolved~in~theJointTUG/L5ffA͉TU>'ExX3Pro8jectW*orkingGrouponextendedbmathUUfontencoGdings.I...IAnyoneUUelse?288!*"soIDeTfoffdoIThissectionisbasedontheTODO lefromfontinstv1.504,butacoupleofnew IentriesUUhavebGeenaddedandsomehavebGeenequippedwithcomments.6ID.1kXThingstodointhe\near"futureuTXbUpGdateUUdocumentation.q(Lars,knowingheisn'tsayinganythingnew)XbRewritetheentiresubstitutionmechanismfromscratch!UThemainproblembwiththecurrentmechanismisthatitonlyallowsonesubstitutionpGershapeband0one0pGerseries.eOnecannotsubstitutetheitshapGeforbGoththeslandbthexuiwshapGessinceeachnew\substitute(noisyjsilent)withitinthebhfr}'omciUUargumentwilloverwritethesettingmadebytheprevious;x\substitutenoisy{ui}{it}x\substitutesilent{sl}{it}bisUUe ectivelythesameasx\substitutesilent{sl}{it}bAnother?big>problemisthatitisn'twellde nedwhatthesubstitutionmech-banismUUshoulddo.q(Lars)bI've:gotasketch9foranewsubstitutionmechanism,sbutI'm9notatallsurebitwillmakeitintoanyv1.9xx./LH(ThecoGdethatwaswrittenisnowinbfimain.dtx,UUbutit'snotincludedinanyofthegenerated les.)bAnYIalternativetoYJsubstitutionsistouseexplicit\installfontascommands.bThisUUprovidescompletecontrol.q/LHXbConsiderUUremovingthefollowingunreliablefakesfromtextcomp.mtx:xasciiacutedbl,asciigravedbl,bardbl,openbracketleft,and xopenbracketrightbandUUconsideraddingfakesforthefollowingunavqailableglyphs:xdollaroldstylei(usedollar),centoldstyle(usecent),lirax(useUUsterling),andpilcrow(useparagraph)bTheseUUsuggestionsareofcourseopGenfordebate.q(Ulrik)XbOnethingImissin[thetypGesetformofanencodingspeci cation]isasimplebhex/oGctal/decimalchartshowingallthecharacternamesintheirpGositionsb(and&ideallyeven%anexampleoftheprintedcharacter,calthough%IknowthatbwouldUUbGeharder).q(KarlBerry)6ID.2kXThings!thatprobablywon'tb`edoneinthenearfutureuTXbFindUUawayUUtoautomaticallygeneratemathfonts.q(Alan)bI-doubt-that-thiswilleverbGepossible-todoautomatically*.mathptmandbmathptmxVarealreadyhackishenough,W nottomentiontheprototypGeimple-bmentationsUUfornewmathfontencoGdings.q/UV289"8 soXbInvestigateUUusingAlternatesets.q(Alan)bAFAIK,yThierryxBouchehasdonesomeworkwithalternatesetsforAGara- bmond,ACaslonWandMinion,butthisimpliesWalotofmanualworkWtocompGosebtheUUpropGercallstofontinst.q/UVXbCreateL5ffA͉TU>'ExXpackqages?Infact,rethinkthewholepackqageinterface...b(Alan)bSebastian's2Perlfront-endtofontinst1doGescreatetrivialL5ffA͉TU>'ExXpackqagesauto-bmaticallyUUfortheCT*ANfonts.q/UVXbW*orryUUabGoutexcessivekerntablesinT1fonts.q(Alan)bI think the bGestway togetatthiswouldbGetowriteaprogramthatcanboptimizesv(forsize)kerntablesbysumakinguseoftheSKIPs=instruction.&}There'sboften:roGom9forquitealotofcompression.uSuchaprogramwouldhoweverbhavetobGewritteninsomecompilinglanguage,9otherwiseitwouldn'tbGefastbenough.q/LHXbConsidermaking\set(leftjright)kerningparameterizedbythesizeofbtheotherglyph,PegsothatfakingcanbGedi erentfromb.qSuggestedUUbyHilmarSchlegel.6ID.3kXThingsthathaveb`eendoneuTXbUpGdateUUdocumentation(commentsfromKarlandDamian).bRowlandhasmeritoriouslydonetheupGdaterequestedhere.jOntheotherbhand,WitneedstobGeupdatedagain,VsincemanynewfeatureshavebGeenbadded.q/LHXbInvestigateUUusingrawSCfonts.q(Alan)bThisJ]problemcomesupJ^onthemailinglistfromtimetotime.nTheproblembis thatfontinst's\latinfamilycommand isgearedtowards fontsthatcomebwithvstandardandvexpGertfontsets(aswithAdobevandMonotypefonts)bratherthanfontsthatcomewithstandardandsmallcaps(aswithLinotypGebfonts).XI'mafraiditwouldbGetocomplicatedtohandlebothcasesinthebsameUU\latinfamilyproGcedure.q/UVXbInvestigate8problemswith8duplicatekernsappGearinginVPL8 les(HilmarbSchlegel).bTheUUproblemhasbGeeninvestigatedUUandissolvedwithv1.9.q/LHXbFindUoutTwhy*,ifyouhaveTafontwithbGothTmediumandlightvqariantsTbutnobitalic,yougetm/it7!l/it7!l/slratherthanm/it7!m/sl.Z(Sebastian).bBecausejforieveryshapGethatfontinstisallowedjtouseagivenfontjfor,eitwillbpGerformчallшpossibleseriessubstitutions.EIfшthe\installfontforl/slcamebbGefore[the\installfontZform/sl,thensubstitutionswillbGeasdescribedbabGove.qSeeUUalsoitemaboutthesubstitutionmechanism.q/LHXbAFMUU lescancontainrealunits,notjustintegers.q(GintautasGrigelionis).bThisUUis xedwithv1.9.q/LH290#C soXbMakeUUfontdoc.styandco.usePSfonts.q(Alan)bI8thinka\useexamplefontand`friends(introGducedwithv1.8)prettymuch bdoUUwhatwasintendedhere.q/LHXblatin.mtxUUusesfontinstratherthanfontdoGc!q(RobHutchings).XbAllowUU.vpl lestobGereadas.pl les.q(Constantin)XbRichardUUW*alkerrepGortsthatifyousayx\latinfamily{mbvx}{}x\latinfamily{mbv9}{}bthenthe2ndrundoGesn'tuseold-styledigits,bGecausethe1strunhasalreadybde nedHv\digit.K*Ifso,>thisHuisbGecause\latinfamilyismissingabracingblevel.qIUUshouldinvestigate.bICthinkCitCisbGesttodooldstyleandnon-oldstylevqariantsinCtwoseparatebfontinstruns,i.e.bdon'tuse\latinfamilymorethanonceinasinglerun.b(IGIRC,groupingdoesn'tworkproperlysinceeverysinglefontclosesandbreopGensa\begingroup-\endgrouppairtoencapsulatethekerninginfo^15 torbsomethingUUlikethat.)q/UVXbConsiderxwritingan\installfontasxcommandwhichdoGesn'tgenerateab(V)PLbutmakesanentryintheFD le.BPTypicalusage:*InstallanscshapGebofUUaTS1fontfamilybyusingthefontmadeforthenshapGe.q(Lars)bDone.TheldescribGedinstallationforthelmseriesoftheptmfontfamilycanbbGeUUdonethroughx\installfontas{ptmr8c}{TS1}{ptm}{m}{sc}{}bNoteUUhoweverthatyouneedtodoitineachseriesexplicitly*.q/LHXbUseFKtheStdVWF propGertyfromAFM4.0 lesFLinsteadofthewidthofIڬforbstandardUUstemfontdimen.qPointedUUoutbyHilmarSchlegel.bPartially_vdone.\afmtomtx_wwritesa\setint{verticalstem}{hvalue[i}whenbitencountersaStdVWꈲpropGerty*.1TheETX leshavenotyet(2000/05/30)bbGeenUUchangedtousethisvqalue.q/LHXbfontdoGchasaproblemwithglyph,integer,string,etc.namesthatcontainsbunderscores,v since<^thesewillcauseTU>'ExXtojumptomathmoGdewhenonebtriestotypGesetthesethings.Unfortunately=fontinstitselfwritestwosuchbintegers:descender_neg^=andmaxdepth_neg.There^>areatleastthreesolu-btionsbtob~this. The rstistomakeunderscorean`other'characterthroughout,bbutthismightbreaksomecommentsinMTXandETX les.^ThesecondisbtotempGorarilychangethecatcoGdeintheargumentsofthecommands,butbthatwillcomplicatethede nitionsofalmostallfontdoGccommandsdramat-bically*.TheZthird[istodeclarethisasunsuppGortedby:fontdocandZchangebfontinstsothatthetroublesomeintegersarerenamed,e.g.descender-negbandUUmaxdepth-neg,butthiscanbreakpGeople'scode.q(Lars)Ifffr J=w-:15LܼAndXglyphmetricsinfo,andglyphmap'ExX2"(.q(Alan)bfontdoc.sty $underwent %ama8joroverhaulfrom %v1.916on,xsoI suspGect bthismcannbGesaidtohavebGeenmdonenow.,Thebasicverticalnspacingputbin"by\Aheadingand\Bheading!mayhoweverneed!morework;sometimesbitUUdoGesn'tcomeoutasonewouldwantitto.q/LHXblatin.mtx!Gfakes!HcompGositeSC!:glyphs[kerning?]`mfromthecompGositeglyph,beg.x\setleftrightkerning{Aacutesmall}{Aacute}{900},bratherUUthanfromtheSCnon-compGosite,eg.x\setleftrightkerning{Aacutesmall}{Asmall}{1000}bThisUUmaycauseproblemswithSCfontswithexplicitSC{Ckerns,eg.x\setkern{V}{Asmall}{100}bThisUUneedstobGethoughtabout.qPointedUUoutbyHilmarSchlegel.bnewlatin.mtxdoGesthisright;w@shrunkglyphsgetshrunkkerning,FwhereasbconstructedUUglyphsgetkerningfromthebaseletter.q/LH6ID.4kXOthernotesuTIAlan's؇TODOf lealso؈containssomeitemsregardingmathptm,TbutthatseemstoIhave`migratedoutof}fontinsta(ifiteverreallywasapart).TheproblemisthatImathptmDZcannotǰbGechangedanyǰmoreforthesakeofchecksumǰconsistencyandIbackwardsKcompatibility*.9A newLvqariantcalledmathptmxtriestodoalittlebGetter,IbutUUtheremaystillbGeroomforimprovements.!čIEcTEciencyIThisNsectionrecordstheresultsofsomeO(rathersimple)testrunsthathaveNbGeenImade>totestthe>eciencyoffontinst,y@primarilytoseehowchanges>intheim-Iplementationa ecteciencybycomparingthetimeandspaceusedbydi erentIfontinstUUversionstocompletethesametask.292%_soIE.1irAlanJe rey'stestsuTIIacomparedadtheacversionwhereyoutrytokeepintsacas\mathchardefswiththe Iversionwhereyoudon'tbGother,áandforasamplefontwithout\mathchardefsIIgot:Ob114673UUwordsofmemoryoutof150001bTimeUUelapsed:q135.0secondsIandUUwith,Igot:b114050UUwordsofmemoryoutof150001bTimeUUelapsed:q134.5secondsIsoI'vesavedalittlememoryandtime.ZNotbrilliant,butImayaswellkeepitin.XWhereR{pGossible,weRzavoidre-scalingRzkerns,whichsavesR{abitoftimeandImemory*.qWithUUasamplefont,theversionwherewedidn'tavoidre-scalingused:Ob114050UUwordsofmemoryoutof150001bTimeUUelapsed:q134.5secondsIwhereasUUtheversionwherewedoavoiditused:b113786UUwordsofmemoryoutof150001bTimeUUelapsed:q124.9secondsXW*ekeepthenamesoftheglyphstokernwithas\l-hname[iand\r-hnameiItoUUsaveontokenspace,andthisgottheresourcesuseddownto:b88574UUwordsofmemoryoutof150001bTimeUUelapsed:q106.1secondsIKeeping'ExXisrunona.tex leconsistingofthefollowingIcommands.b\batchmodeb\input?fontinst.styb\latinfamily{pad}{}b\tracingstats=1\byeIAllAthefontmetricsaregeneratedfromtheAFMA les;H9tempGoraryMTX,PL,andIVPLȂ lesȦaredeletedbGetweenȥtestȦruns.BTheformatusedwasgeneratedbytypingI\dumpLatMiniTU>'ExX's**prompt; thusthereisnooverheadfromLatypGesettingLformatIinUUthespacerequirements.X[It appGearstheexactdatafromthesetestswillhave towait,sinceIhaven'tIbGeenAabletogetaccesstoanycomputerwithreliableBprocesstiming.IkF*orthenextIreleaseUUpGerhaps.../LH]293&lsoIReferencesN[1]]'ExX3a_Pro8jectT*eam:L雍QATKß'E-X2"-z7fontsele}'ction,daCTAN:a_macros/latex/base/]- cmcsc10=߆Tff cmtt12< cmmi10 0ercmmi7K`y cmr10ٓRcmr7u cmex10}W