÷ƒ’À;è TeX output 2004.08.18:1212‹éÿÿÿÿ ¨ ýF ²ñÇó$p®0J cmsl10Ïpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽóKñ`y cmr10²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1001ŽŽ œ ýx‰™šáŸ ñÇó%ò"V cmbx10ÐThe–Õ9ó&ßêTUG“ÑDVI“²Driv¸ãer“Standards“CommitteeŽ©ÐAbstractŽ¡²The›ÅrTUG–ÅÑDVI“²Driv¸ãer˜Standard˜de nes˜functionalŽ¤ and–Säinš¸ãterface“requiremen˜ts“for“computer“programsŽ¡(ÑDVI‘KŠ²proGcessors)–Kthat“read“and“translate“ les“in“theŽ¡ÑDVI‘š_²page–š³description“language.‘AáThis“doGcumen¸ãt“isŽ¡the–:wsubset“of“the“ÑDVI‘:p²standard“(lev¸ãel“0)“applying“toŽ¡minimally–X_functional“ÑDVI‘X^²prošGcessors.‘zåThe“sp˜eci ca-Ž¡tions– here“should“bGe“considered“a“minim¸ãum“require-Ž¡men•¸ãt;‘ãŒdev“elopGers–ª§are“encouraged“to“write“driv¸ãers“ex-Ž¡ceeding–UUthese“spGeci cations.Ž¡‘ (The–Ž5vš¸ãersion“of“the“Lev˜el“0“Standard“presen˜tedŽ¡here–ò¨is“draft“0.05.‘PãIt“has“bGeen“reviewš¸ãed“b˜y“the“TUGŽ¡ÑDVI‘c²Drivš¸ãer–vStandards“Committee“and“is“no˜w“bGeingŽ¡presenš¸ãted–ôto“the“TUG‘óÙmem˜bGership“at“large“for“re-Ž¡view.)Ž¡‘ The–oýcomplete“standard“will“bGe“presen¸ãted“as“a“se-Ž¡ries–1Ãof“\tiers"“requiring“increasingly“stringen¸ãt“con-Ž¡trol›UUo•¸ãv“er˜the˜output˜of˜ÑDVI˜²proGcessors.Ž¦Ð1Ž‘?úPurpQÇose–Õ9of“the“lev®9el-0“standardŽŸ²The–òlev¸ãel-0“standard“(henceforth“called“ó#ý': cmti10Îstandar‘ÿ}'d‘‰²)Ž¡is–™˜meanš¸ãt“to“bGe“a“base“standard“to“whic˜h“all“ÑDVI²-Ž¡proGcessing–låprograms“mš¸ãust“adhere.‘$MIt“pro˜vides“a“baseŽ¡lev¸ãel–{?of“suppšGort“for“b˜oth“ÑDVI²-to-output-device“trans-Ž¡lators–V—(so“called“Îdrivers‘Ò!²)“and“ÑDVI²-to-ÑDVI“²preproGces-Ž¡sors–ß (Îe.g.,‘ö´Ñdviselect²).‘JYThe“standard“hereafter“callsŽ¡suc¸ãh–ehÑDVI²-proGcessing“programs“\ÑDVI‘e"Îpr–ÿ}'o“c“essors‘Ò!²"‘ehorŽ¡just›ð¶\Îpr–ÿ}'o“c“essors²."‘CêThis˜standard˜allo¸ãws˜all˜reason-Ž¡able–‚%došGcumen¸ãts“to“b˜e“rendered“(i.e.,‘Xprin¸ãted“or“dis-Ž¡pla•¸ãy“ed)–•accurately‘ÿ*ª.‘#‡When“w¸ãe“refer“to“accurate“ren-Ž¡dering,‘É®w¸ãe–²imean“that“the“when“the“data“generatedŽ¡b¸ãy–the“ÑDVI‘ð²proGcessor(s)“are“transmitted“to“a“outputŽ¡device–Ë‹the“latter“shall“proGduce“a“page“accurately“de-Ž¡picting–|wthe“page“describGed“b¸ãy“the“ÑDVI‘|@² le“(disregard-Ž¡ing–UUresolution“e ects“and“output“tec¸ãhnology).Ž¡‘ The–”obasis“for“man¸ãy“of“the“spGeci cations“in“thisŽ¡standard–ä‘is“the“pGossible“output“of“T‘þU>ŸÓVEŽ‘ãxXŽ‘ cy82“althoughŽ¡some–w°requiremen¸ãts“are“based“on“assumptions“thatŽ¡cannot–«ôoGccur“with“T‘þU>ŸÓVEŽ‘ãxXŽ‘ cy82-based“output;‘WDfunctionsŽ¡whicš¸ãh–6Øcan“bGe“implemen˜ted“via“a“pre-proGcessor“areŽ¡generally–>Ãomitted“(Îe.g.,‘CF²page“selection“and“sorting).Ž¦Ð2Ž‘?úThe–Õ9ÑDVI“Ð leŽŸ²As–¬3a“rule,‘AêÑDVI“²prošGcessors“m¸ãust“b˜e“able“to“readŽ¡and–$ºÎinterpr‘ÿ}'et‘’²an¸ãy“v‘ÿqÇalid“ÑDVI‘$…² le“as“spGeci ed“in“ap-Ž¡pGendix–PìA.‘pOThey“shall“also“correctly“Îr‘ÿ}'ender‘dy²an¸ãy“ÑDVIŽ¡² le–Ñwhicš¸ãh“falls“within“the“follo˜wing“limits.‘äóIf“theseŽ¡requiremen¸ãts–hàcannot“bGe“met“due“to“limitations“of“theŽ¡computer–ÕQor“the“output“device“they“shall“bGe“ful lledŽ¡as–’Ecompletely“as“pšGossible“and“the“limitations“do˜cu-ŽŽŽ ý‚’ómen¸ãted.‘C3Aside–›$from“this“exception,‘¬—these“spGeci ca-Ž¤ ’ótions–ëare“a“Îminimum‘Äc²;‘Ægo•Go“d›ëpro“cessors˜will˜probablyŽ¡’óbGe–¿able“to“handle“ÑDVI“² les“exceeding“these“limitsŽ¡’ó(ÑDVI‘‡Ÿ² les–‡îwhicš¸ãh“exceed“the“limits“are“lik˜ely“to“bGeŽ¡’órare,–UUbut“migh¸ãt“still“oGccur).Ž¡’óó t ‰: cmbx9ËExplanation:‘ ?üóo´‹Ç cmr9ÇThis–çexception“abšAÇo•¾9v“e–çis“necessary“b˜e-Ž¤ ’ócause–*certain“pAÇopular“output“devices“ha•¾9v“e–*v‘ÿ|rarying“ca-Ž¡’ópacitš¾9y–¥adepAÇending“on“the“amoun˜t“of“on-bAÇoard“memory“orŽ¡’ósimilar–Ý2conditions.‘t F‘ÿ:«or“example,‘*an“HP‘ÜÿLaserJet“PlusŽ¡’ówith–žÕ512‘Š­KB“of“memory“is“capable“of“holding“in“memoryŽ¡’óonly–l3056“distinct“doš¾9wnloaded“c˜haracters;‘na“full“pageŽ¡’óbitmap–Tis“also“not“pAÇossible“with“this“con guration.Ž©’óÐ2.1Ž’ 1¾ÑDVI‘Õ9ÐcommandsŽŸ’ó²The–ÿÿÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“inš¸ãterpret“ev˜eryŽ¤ ’óÑDVI–UU²command“listed“in“AppGendix“A.Ž¡’óËExplanation:‘ ?üÇSome›ášcommands,–ëóó¼j‘¹ cmti9Êe.g.,“put4‘6ÁÇ,“are˜gener-Ž¤ ’óally–{uused“for“conditions“outside“those“enš¾9umerated“bAÇelo˜w;Ž¡’ódespite– ¤this,‘Gøó!ߤN cmtt9ÌDVIÇ-translating“programs“are“expAÇected“toŽ¡’óaccurately–@Ein¾9terpret“these“commands“and“execute“themŽ¡’óif–fthey“do“spšAÇecify“an“action“within“the“sp˜eci ed“minim¾9umŽ¡’ólimits.Ž¦’óÐ2.2Ž’ 1¾CharactersŽ¤’ó2.2.1Ž’#‚Numš®9bQÇer–Õ9of“c˜haracters“in“a“fon˜tŽ¡’ó²The–dpÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“handle“fon¸ãtsŽ¤ ’ówhic•¸ãh›­Sha“v“e˜c“haracters˜at˜an“y˜coGde˜in˜the˜rangeŽ¡’ó0–Çó !",š cmsy10¸“ó  b> cmmi10µc“<“²256.Ž¡’óËExplanation:‘ ?üÇSome–™Ïprinš¾9ters“with“do˜wnload“pAÇossibil-Ž¤ ’óities–¼†will“require“fonš¾9ts“with“more“than“a“giv˜en“n˜um˜bAÇerŽ¡’óof–ß\cš¾9haracters“to“bAÇe“brok˜en“in˜to“t˜w˜o“or“more“device“fon˜tsŽ¡’ówhen–3doš¾9wnloaded“to“the“prin˜ter.‘Š Please“note“that“thisŽ¡’órequiremen¾9t–ˆis“not“sub‘ƒŽject“to“the“exception“for“deviceŽ¡’ólimitations–Tof“section“2.Ž¦’óÐ2.2.2Ž’#‚Character‘Õ9sizeŽŸ’ó²The–³ÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“render“anš¸ãy“c˜har-Ž¤ ’óacter–~gup“to“a“size“of“600‘ª®pt“(horizonš¸ãtal)“b˜y“800‘ª®ptŽ¡’ó(v¸ãertical)–wýunless“this“is“not“pGossible“due“to“deviceŽ¡’óconstrain¸ãts–UUas“outlined“in“section“2.Ž¡’óËExplanation:‘ ?üÇThis–#size“is“the“glyph“size,‘' not“the“sizeŽ¤ ’ógivš¾9en–„óin“the“ÌTFM‘„ÏÇ les.‘ìPThese“t˜w˜o“sizes“are“not“connected;Ž¡’óespšAÇecially–pUit's“imp˜ortanš¾9t“that“the“glyph“migh˜t“bAÇe“outsideŽ¡’óthe–$bšAÇounding“b˜oš¾9x“giv˜en“b˜y“the“dimensions“of“the“ÌTFMŽ¡’óÇ les.Ž¦’óÐ2.2.3Ž’#‚Numš®9bQÇer–Õ9of“c˜haracters“pQÇer“pageŽŸ’ó²The–| ÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“render“a“pageŽ¤ ’óconš¸ãtaining–„ as“man˜y“as“20‘ª®000“c˜haracters“unless“thisŽ¡’óis–@ànot“pGossible“due“to“device“constrain¸ãts“as“outlinedŽ¡’óin–UUsection“2.ŽŽŽŽŽŽŒ‹ê* ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1002‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Ð2.2.4Ž‘##‚Un•®9usual‘Õ9c“haractersŽ©²The–ÛlÑDVI“²proGcessor“mš¸ãust“correctly“render“(a)“c˜harac-Ž¤ ters–ë³with“emptš¸ãy“bitmaps“(Îe.g.,‘Ô²the“S–ÿfhóQŒ-ø cmcsc10ëQlœïi“²T‘þU>ŸÓVEŽ‘ãxXŽ‘O,fon˜ts)‘ë³in-Ž¡cluding–ròcš¸ãharacters“whose“horizon˜tal“escapGemen˜t“is“0,Ž¡(b)–°¿cš¸ãharacters“whose“prin˜table“image“is“wider“thanŽ¡its–ø?horizonš¸ãtal“escapGemen˜t,‘ Ýand“(c)“c˜haracters“with“aŽ¡negativ•¸ãe›UUhorizon“tal˜escapGemen“t.ŽŸÐ2.3Ž‘1¾RulesŽ¦2.3.1Ž‘##‚Rule‘Õ9sizeŽ¦²The–õÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“render“rules“ofŽ¡anš¸ãy–s‰size“up“to“600‘ª®pt“(horizon˜tal)“b˜y“800‘ª®pt“(v˜ertical)Ž¡unless–„othis“is“not“pGossible“due“to“device“constrain¸ãtsŽ¡as–UUoutlined“in“section“2.ŽŸÐ2.3.2Ž‘##‚Placemen®9t–Õ9of“rules“on“the“pageŽ¦²The›øâlo•¸ãw“er˜left˜corner˜of˜a˜rule˜is˜to˜bGe˜placed˜on˜theŽ¡page–½Rat“the“loGcation“givš¸ãen“b˜y“rounding“the“curren˜tŽ¡ÑDVI–™²coGordinates“as“indicated“in“section“2.6.2.‘ГTheŽ¡heighš¸ãt––and“width“of“the“rule“is“giv˜en“b˜y“the“form˜ulaŽ¡¸dµK‘·n¸e–rP²where“µn“²is“the“dimension“in“ÑDVI“²units“and“µK‘)l²isŽ¡a–†7constanš¸ãt“whic˜h“con˜v˜erts“from“ÑDVI“²units“to“deviceŽ¡units.Ÿü^ÿóÙ“ Rcmr7±1ŽŽŽ¡ËExplanation:‘ ?üÇIt's–5impAÇortanš¾9t“to“remem˜bAÇer“that“no“ruleŽŸ is–Trendered“if“ó5ùž" cmmi9Èn–‘Æó©±Ê cmsy9É“Ç0,–Tas“spšAÇeci ed“in“app˜endix“A.ŽŸÐ2.4Ž‘1¾Num®9bšQÇer–Õ9of“rules“p˜er“pageŽ¦²The–| ÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“render“a“pageŽ¡conš¸ãtaining–¿ýas“man˜y“as“1000“rules“unless“this“is“notŽ¡pGossible–Ö6due“to“device“constrain¸ãts“as“outlined“in“sec-Ž¡tion‘UU2.ŽŸÐ2.5Ž‘1¾Stac®9kŽ¦²The–‰{ÑDVI“²prošGcessor“m¸ãust“b˜e“able“to“handle“ÑDVI“² lesŽ¡whose–UUÎpush²/Îp‘ÿ}'op‘öí²stacš¸ãk“is“up“to“100“lev˜els“deep.ŽŸÐ2.6Ž‘1¾P®9ositioning–Õ9on“the“pageŽ¦2.6.1Ž‘##‚LoQÇcation–Õ9of“the“originŽ¦²The–ƒ'pšGoin¸ãt“(0µ;‘ª¨²0)“in“ÑDVI“²co˜ordinates“is“to“b˜e“lo˜catedŽ¡at–œa“pGoinš¸ãt“one“inc˜h“(25.4‘ª®mm)“from“the“top“of“theŽ¡page–OÊand“one“inc¸ãh“(25.4‘ª®mm)“from“the“left“side“ofŽ¡the‘UUpage.Ž¡ËExplanation:‘ ?üÇWhile–QÌthe“default“margin“giv¾9en“in“thisŽ¤ circumstance–ºØis“somewhat“incon•¾9v“enien“t–ºØfor“users“of“non-Ž¡U.S.-sized–gpapAÇer,‘| the“adv‘ÿ|ranš¾9tage“of“ha˜ving“a“univ˜ersallyŽ¡standard– default“loAÇcation“of“(0È;‘ŠªÇ0)“and“the“widespreadŽ¡assumption–°Žof“the“giv¾9en“default“margin“in“most“macroŽ¡pac•¾9k‘ÿ|rages›-9out“w“eighs˜the˜incon“v“eniences.‘dF‘ÿ:«or˜some˜ÌDVIŽ¡ÇproAÇcessors–ï%(Êe.g.,›e˜Çscreen“preview¾9ers),˜this“spAÇeci cationŽ¡refers–Tto“a“virtual“page“and“not“the“ph¾9ysical“output.ŽŸ&f‰ffYÿ¦Ÿ ½s‘ƒŸü^ÿ±1ŽŽŽ‘DzDevices–qÄwith“aspGect“ratios“unequal“to“one“willŽ¤ need–Ünto“mainš¸ãtain“separate“constan˜ts“for“v˜ertical“andŽ¡horizon¸ãtal‘UUdimensions.ŽŽŽ ý‚’óÐ2.6.2Ž’#‚Changes–Õ9in“pQÇosition“due“toŽ¤ ’#‚c®9haracters–Õ9and“rulesŽŸ’ó²The–Ode nition“of“ÑDVI“² les“refers“to“six“registers,Ž¡’ó(µh;–ª¨vš[Ù;“wDã;“x;“y˜;“zp—²),‘ÿ whicš¸ãh–vµhold“in˜teger“v‘ÿqÇalues“in“ÑDVIŽ¡’ó²units.‘ÇåIn–Ç_practice,‘#áw¸ãe“also“need“registers“ÎhhŽ‘Œ²andŽ¡’óÎvvŽ’ýF»²,›§ãthe–0ûpixel“analogs“of“µh“²and“µv[Ù²,˜since“it“is“notŽ¡’óalw•¸ãa“ys–ìdtrue“that“ÎhhŽ‘Ó²=‘,pixel‘™˜‰ffŽŽ‘™šroundŽ‘9y(µh²)“or“ÎvvŽ‘KK²=Ž¡’ópixel‘™˜‰ffŽŽ‘™šroundŽ’%M(µv[Ù²)–+where“pixel‘™˜‰ffŽŽ‘™šroundŽ‘7/_(µn²)“is“de ned“asŽ¡’ósignŽ’G(µK›·n²)–o츓b²absŽ‘€(µK˜n²)“+“0µ:²5¸c–'é²with“signŽ‘o(µi²)“resultingŽ¡’óin–UU¸²1“if“µi–Ç<“²0–UUand“in“1“otherwise.Ž¡’ýWhenevš¸ãer–nNthe“ÑDVI‘mIJproGcessor“encoun˜ters“an“in-Ž¡’óstruction–A´that“cš¸ãhanges“the“curren˜t“pGosition,‘|Ëit“up-Ž¡’ódates–õɵh“²and“µv‘Q¢²using“pure“ÑDVI“²units.‘QîIf“the“c¸ãhange“inŽ¡’ópGosition–xis“due“to“a“command“whicš¸ãh“sets“a“c˜haracter,Ž¡’óthe–kÖprošGcessor“adds“the“horizon¸ãtal“escap˜emen¸ãt“v‘ÿqÇalueŽ¡’ófrom–the“ÑPK›²or“ÑGF˜² le“to“Îhh‘à€²to“get“the“new“v‘ÿqÇalue“forŽ¡’óÎhh‘Äc².Ž¡’ýF‘ÿ*ªor–>œa“horizonš¸ãtal“mo˜v˜emen˜t“of“µx“ÑDVI“²units“from“an˜yŽ¡’óother–T'command,‘‡—Îhh‘Š²will“bGe“set“to“ÎhhŽ‘ ‡ñ²+6‡pixel‘™˜‰ffŽŽ‘™šroundŽ‘2:Ô(µx²)Ž¡’óif›9eµx–íÙ<“Îwor–ÿ}'d‘¥Š‰ffŽŽ‘¶œsp“ac“eŽ‘;­Å²for˜a˜horizon•¸ãtal˜mo“v“emen“t˜toŽ¡’óthe–ãrigh¸ãt“or“if“µx–ª>“¸Îb–ÿ}'ack‘°Ž‰ffŽŽ‘Á sp“ac“eŽ‘4H‰²for–ãa“horizon-Ž¡’ótal›}mo•¸ãv“emen“t˜to˜the˜left.‘ èñÎwor–ÿ}'d‘‰ffŽ‘®sp“ac“e‘=i²is˜de nedŽ¡’óas›l£Îsp–ÿ}'ac“e‘³n¸‘óÎsp“ac“e‘]\‰ffŽŽ‘nnshrink‘²,‘²vand˜Îb“ack‘‰ffŽ‘®sp“ac“e‘,þ²is˜de nedŽ¡’óas–bkÎ0‘[µ:Î9quad‘jô²if“the“proGcessors“uses“ÑTFM‘b&² les.‘™ If“theŽ¡’ópro•Gcessors›÷Sdo“es˜not˜use˜ÑTFM‘÷)² les˜the˜design˜size˜ofŽ¡’óthe–ÿ9currenš¸ãt“fon˜t“in“the“ÑDVI‘ÿ ² le“(after“all“necessaryŽ¡’ómagni cations›Ê$ha•¸ãv“e˜bGeen˜applied)˜ma“y˜bGe˜used˜forŽ¡’óa–ÖJÎquad²,‘6‡and“Îwor–ÿ}'d‘‰ffŽ‘®sp“ac“e‘–¥²maš¸ãy–ÖJbGe“appro˜ximated“b˜yŽ¡’óÎ0‘[µ:Î2quad‘‰².‘-EIf–‡Îµx“²exceeds“the“bšGounds“outlined“ab˜o•¸ãv“e,‘°éÎhhŽŽ¡’ó²is–•7set“to“bGe“pixel‘™˜‰ffŽŽ‘™šroundŽ‘4™„(µh–¸¨²+“µx²).‘1¾In–•7this“w•¸ãa“y‘ÿ*ª,‘»¤roundingŽ¡’óerrors–UUare“absorbGed“bš¸ãy“in˜terw˜ord“spaces.Ž¡’ýF‘ÿ*ªor–áLa“vš¸ãertical“mo˜v˜emen˜t“of“µy‘=%ÑDVI“²units,‘ÄIÎvvŽ¡’ó²is–ÎÉset“similarly“except“that“Îvv‘âV²is“set“to“ÎvvŽ‘ŸY²+Ž¡’ópixel‘™˜‰ffŽŽ‘™šroundŽ’%M(µy[Ù²)–õ·if“¸²0µ:²8ÎquadŽ‘ @µ<–Òdy‘.=<“²0µ:²8ÎquadŽ‘.“²and‘õ·setŽ¡’óto‘áÁpixel‘™˜‰ffŽŽ‘™šroundŽ‘5æ(µv‘òV²+‘–}µy[Ù²)–áÁotherwise.‘ This“alloš¸ãws“v˜erti-Ž¡’ócal–rounding“errors“to“bšGe“absorb˜ed“in“the“in¸ãterlineŽ¡’óspacing– while“still“allo¸ãwing“fractions“and“supGer-“andŽ¡’ósubscripts–UUto“bGe“prinš¸ãted“consisten˜tly‘ÿ*ª.Ž¡’ýAfter–w¦anš¸ãy“horizon˜tal“mo˜v˜emen˜t,‘À:a“ nal“c˜hec˜k“isŽ¡’ómade–²as“to“whether“Îdist‘Txµ>‘a Îmax‘ÑE‰ffŽŽ‘âWdrift›¤æ²with“Îdist˜²de-Ž¡’ó ned–nuas“absŽ‘îw(ÎhhŽ‘ ñ¸‘ôJ²pixel‘™˜‰ffŽŽ‘™šroundŽ‘4ø—(µK‘·h²)).‘½'If“it“is,‘´½thenŽ¡’óÎhh‘’“²is–Î0set“to“pixel‘™˜‰ffŽŽ‘™šroundŽ‘4Ò}(µK‘·h²)–*˜+“signŽ‘q·(ÎdistŽ‘‰“²)“¸“Îmax‘ÑE‰ffŽŽ‘âWdriftŽ‘+µÄ².Ž¡’óA‘ôAsimilar›ôjc•¸ãhec“k˜is˜made˜with˜Îvv‘÷²and˜µv[Ù².‘OÎmax‘ÑE‰ffŽŽ‘âWdriftŽ¡’ó²should–›¥bGe“set“to“2“for“output“devices“with“deviceŽ¡’óunits–ÓGsmaller“than“or“equal“to“0.005›ª®in“(0.127˜mm),Ž¡’ó1–Ÿfor“output“devices“with“device“units“greater“thanŽ¡’ó0.005–ª®in›¥(0.127“mm)˜but˜less˜than˜or˜equal˜to˜0.01“inŽ¡’ó(0.254‘ª®mm)–/ºand“0“for“output“devices“with“deviceŽ¡’óunits–UUgreater“than“0.01›ª®in“(0.254˜mm).Ž¡’óËExplanation:‘ ?üÇThis–methošAÇd“for“trac¾9king“the“p˜ositionsŽ¤ ’óis–lÐorienš¾9ted“to˜w˜ards“the“t˜ypšAÇesetting“of“text.‘"åIt“do˜es“notŽ¡’ó x–vàpAÇositioning“problems“with“lines“consisting“completelyŽ¡’óof–cš¾9haracters“of“a“ xed-width“fon˜t,‘œwhere“one“line“con-Ž¡’ósists–}only“of“cš¾9haracters“without“an˜y“mo˜v˜emen˜ts“and“theŽŽŽŽŽŽŒ‹ëü ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1003ŽŽ œ ý‚Çnext–U¤line“conš¾9tains“mo˜v˜emen˜ts.‘ÝaOther“problematic“ar-Ž¤ eas–ùlare“the“creation“of“line“graphics“with“fon¾9ts“with“lineŽ¡segmenš¾9ts.‘pThese–Tline“segmen˜ts“ma˜y“not“align.Ž©Ð2.6.3Ž‘##‚Range–Õ9of“mo•®9v“emen“tŽŸ²The–ðçÑDVI‘ð¿²prošGcessor“should“b˜e“able“to“handle“mo•¸ãv“e-Ž¤ men¸ãts–Fðin“the“ÑDVI‘F²² le“up“to“a“total“of“2Ÿü^ÿ±31Ž‘ Rظ‘Ùò²1“ÑDVIŽ¡²units–UUin“an¸ãy“direction“from“the“origin.Ž¦Ð2.6.4Ž‘##‚Ob‘£Žjects–Õ9o “the“pageŽŸ²An•¸ãy›&—prin“table˜ob‘Ž8ject˜whic“h˜w“ould˜lie˜en“tirely˜o Ž¡the–QÃphš¸ãysical“page“should“not“bGe“rendered“but“an˜yŽ¡c¸ãhanges–†to“pšGositioning“should“still“b˜e“takš¸ãen“in˜toŽ¡consideration.‘ GAn•¸ãy›ñÃprin“table˜ob‘Ž8ject˜whic“h˜w“ouldŽ¡lie–QÃpartially“o “the“ph¸ãysical“page“should“either“bGeŽ¡clippšGed–Øàso“that“p˜ortion“of“the“ob‘Ž8ject“that“lies“o “theŽ¡page– xis“not“prinš¸ãted“or“omitted“en˜tirely‘ÿ*ª,‘6unless“thisŽ¡is–@ànot“pGossible“due“to“device“constrain¸ãts“as“outlinedŽ¡in–UUsection“2.Ž¡ËExplanation:‘ ?üÇBecause–,some“output“devices“do“unpre-Ž¤ dictable–#Éthings“when“ob‘ƒŽjects“are“rendered“partially“orŽ¡completely–q¸o “the“edge“of“the“page,‘ˆÑit“is“up“to“the“ÌDVIŽ¡ÇproAÇcessor–PÍwriter“to“makš¾9e“sure“that“ob‘ƒŽjects“prin˜ted“par-Ž¡tially–To “the“page“are“handled“correctly‘ÿ:«.Ž¦Ð2.7Ž‘1¾F‘ÿ «on®9tsŽ¤2.7.1Ž‘##‚F‘ÿ «on•®9t‘Õ9n“um“bQÇersŽ¡²The–ÚßÑDVI‘ÚÀ²prošGcessor“m¸ãust“b˜e“able“to“accept“fonš¸ãt“n˜um-Ž¤ bGers–ò(the“parameter“µk‘Q‰²givš¸ãen“b˜y“a“Îfnt‘‰ffŽ‘®def‘†²command)Ž¡in–UUthe“range“0–Ǹ“µk‘¯<“²256.Ž¦Ð2.7.2Ž‘##‚Distinct‘Õ9fon®9tsŽŸ²The–YGÑDVI‘YF²prošGcessor“m¸ãust“b˜e“able“to“handle“an¸ãy“do˜c-Ž¡umen•¸ãt›UUcon“taining˜64˜or˜few“er˜distinct˜fon“ts.Ž¦Ð2.8Ž‘1¾SpQÇecialsŽŸ²SpGecials–Care“the“parameters“to“the“ÑDVI‘BÕ²commandsŽ¡Îxxx1Ž‘ä÷²,‘ókÎxxx2Ž–Øb²,‘ókÎxxx3Ž“²,‘ókand‘ šÎxxx4Ž‘…‘².‘S•This– šstandard“doGesŽ¡not–'£de ne“the“meaning“of“an¸ãy“spGecial,‘\6future“tiersŽ¡maš¸ãy‘ÿ*ª.‘mSpGecials–Ž7not“ocially“de ned“b˜y“the“ÑDVI“²pro-Ž¡cessor–ˆstandards“committee“should“bGe“ agged“with“aŽ¡wš¸ãarning–ëƒwhen“read“from“the“ÑDVI“² le.‘NIf“an˜y“spGecialsŽ¡are–í³encounš¸ãtered“that“are“ignored“b˜y“the“proGcessor,Ž¡the–mÑproGcessor“mš¸ãust“issue“a“w˜arning“message.‘» are“as“abšGo•¸ãv“e.‘jThis–> is“the“preferred“sp˜ec-Ž¡’i cation–UUfor“ÑGF“²and“ÑPK“² les.ŽŸ33’óÐMagni cation‘ÕTn•®9um“bQÇerŽŽ’gŸ²The–0ðmagni cation“n¸ãum-Ž¡’bGer–#gis“givš¸ãen“b˜y“5–ÂA¸“Îr‘ÿ}'esolutionŽ‘0ÕŸ¸“Îmagni c‘ÿ}'ationŽŽ¡’²where–F6the“resolution“is“givš¸ãen“in“dots“pGer“inc˜hŽ¡’(on–Güdevices“with“a“aspGect“ratio“unequal“to“one,Ž¡’the–=horizon¸ãtal“resolution“should“bGe“used)“and“aŽ¡’magni cation–UUof“1“indicates“normal“sizing.Ž¦’óÐ4.3Ž’ 1¾Magni cationsŽ¤’ó4.3.1Ž’#‚Minim®9um–Õ9set“of“magni cationsŽ¡’ó²The––ùÑDVI‘–d²prošGcessor“m¸ãust“b˜e“able“to“use“at“leastŽ¤ ’ófonš¸ãts–\nat“the“follo˜wing“magni cations“of“its“tar-Ž¡’óget–aÜresolution:‘ŠÕ1.0“(Ñmagstep²0),‘dþ1.095“(Ñmagstep²0.5),Ž¡’ó1.2–ê´(Ñmagstep²1),›1.44“(Ñmagstep²2),˜1.728“(Ñmagstep²3),Ž¡’ó2.074– ð9(Ñmagstep²4),›ï2.488“(Ñmagstep²5),˜2.986Ž¡’ó(Ñmagstep²6),–ã53.583›`o(Ñmagstep²7),“4.300˜(Ñmagstep²8),Ž¡’óand–UU5.160“(Ñmagstep²9).Ž¡’óËExplanation:‘ ?üÇThe–¾¤term“ÌmagstepÈn“Çstems“from“theŽ¤ ’óT‘þuAŸ¤šEŽ‘˜ŸXŽ‘o´and–çtóø”o> logo10¹METÇAFŽ9ONT‘ç=Çcon¾9trol“sequence“with“the“sameŽ¡’óname.‘pIt's–Tmeaning“is“1È:Ç2Ÿü-=ó;Îcmmi6½nŽ‘7Ç.Ž¡’ýThis–65list“should“not“bAÇe“takš¾9en“as“an“exhaustiv˜e“list.‘ÒÌDVIŽ¡’óÇprošAÇcessor–­Iauthors“are“encouraged“to“supp˜ort“all“p˜ossibleŽ¡’ómagni cations.ŽŸ’óÐ4.3.2Ž’#‚Margin–Õ9of“errorŽŸ’ó²If–Î8a“ÑDVI“² le“requests“a“fon¸ãt“at“a“size“that“doGes“notŽ¤ ’óexist,‘Õ but–´õthe“requested“size“is“within“0.2‘ª®%“of“a“sup-Ž¡’ópGorted–ààmagni cation“with“the“fon¸ãt“at“that“size“ex-Ž¡’óisting,‘Zthe–®&ÑDVI‘­Î²proGcessor“mš¸ãust“use“the“latter“fon˜tŽ¡’ówithout‘UUw¸ãarning.ŽŽŽŽŽŽŒ‹ì7_ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1004‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚ËExplanation:‘ ?üÇT‘þuAŸ¤šEŽ‘˜ŸXŽ‘@¼and–¸|¹METÇAFŽ9ONT“Çcompute“fon¾9tŽ¤ magni cations–)Xwith“di eren¾9t“precisions.‘X{F‘ÿ:«urther,‘.Ycalcu-Ž¡lations–úždone“b¾9y“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ‚Þand/or“a“ÌDVI“ÇproAÇcessor“are“sub‘ƒŽjectŽ¡to–ªroundo “errors.‘É7The“margin“prescribAÇed“is“sucien¾9t“forŽ¡accomoAÇdating–¼Smost“of“these“errors.‘þÅIt“is“Ênot‘–Çin¾9tended“toŽ¡compAÇensate–Tfor“fon¾9ts“requested“at“an“incorrect“size.ŽŸÐ4.4Ž‘1¾Missing‘Õ9fon®9tsŽŸ²If–4ïa“fonš¸ãt“is“missing“the“ÑDVI‘4ç²proGcessor“m˜ust“con˜tin˜ueŽ¤ proGcessing–wand,‘µqafter“issuing“an“appropriate“w¸ãarningŽ¡message,‘¶`deal–¢øwith“the“missing“fon¸ãt“in“one“of“threeŽ¡w•¸ãa“ys:ŽŸ‘8ä1.ŽŽŽ‘Insert–`²appropriate“white“space“where“c¸ãharactersŽ¡‘of–UUthe“fonš¸ãt“w˜ould“appGear.Ž©€‘8ä2.ŽŽŽ‘Insert–ÿblacš¸ãk“rectangles“of“the“size“of“the“c˜har-Ž¡‘acter–UUgivš¸ãen“in“the“ÑTFM“² le“for“the“fon˜t.Ž¦‘8ä3.ŽŽŽ‘Prinš¸ãt–Hàthe“c˜haracters“from“that“fon˜t“at“a“di eren˜tŽ¡‘size–UUor“from“another“fon¸ãt“at“the“same“size.ŽŸIf–smethošGds“1“or“2“are“used“and“the“pro˜cessor“is“un-Ž¡able–Êto“loGcate“size“information“for“the“fon¸ãt“in“ques-Ž¡tion,‘¦Hthen–z„the“proGcessor“maš¸ãy“simply“ignore“an˜y“c˜har-Ž¡acter–Esetting“command“that“oGccur“while“the“curren¸ãtŽ¡fonš¸ãt–UUis“that“fon˜t.Ž¡‘ Under–£Šno“circumstances“should“a“missing“fon¸ãtŽ¡cause–UUa“fatal“error.ŽŸÐAŽ‘1ÀDevice-IndepQÇenden®9t–Õ9File“F‘ÿ «ormatŽŸA.1Ž‘#„In®9troQÇductionŽŸÇThe– form“of“ÌDVIŽ‘XÔÇ les“wš¾9as“designed“b˜y“ó[Œ-ø cmcsc10ë[D¼Ìa‘ÿ33vid–gR.“FuchsŽ¤ Çin–‰¸1979.‘y›Almost“anš¾9y“reasonable“t˜ypAÇesetting“device“canŽ¡bAÇe–z¼drivš¾9en“b˜y“a“program“that“tak˜es“ÌDVIŽ‘":Ç les“as“input,‘™§andŽ¡a–#~lot“of“sucš¾9h“ÌDVIŽ‘P@Ç-to-whatev˜er“programs“ha˜v˜e“bAÇeen“writ-Ž¡ten.‘óThš¾9us,‘±ìit–™is“pAÇossible“to“prin˜t“the“output“of“doAÇcumen˜tŽ¡compilers–likš¾9e“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ §Non“man˜y“di eren˜t“kinds“of“equipmen˜t.Ž¡‘ A‘ø\ÌDVIŽ‘µÇ le–ø—is“a“stream“of“8-bit“b•¾9ytes,‘1gwhic“h›ø—ma“y˜bAÇeŽ¡regarded– Éas“a“series“of“commands“in“a“mac•¾9hine-lik“e‘ Élan-Ž¡guage.‘GThe–Ø rst“bš¾9yte“of“eac˜h“command“is“the“opAÇerationŽ¡cošAÇde,‘dJand–!Lthis“co˜de“is“follo•¾9w“ed›!Lb“y˜zero˜or˜more˜b“ytesŽ¡that–ö÷pro¾9vide“parameters“to“the“command.‘QThe“parame-Ž¡ters–™Ethemselvš¾9es“ma˜y“consist“of“sev˜eral“consecutiv˜e“b˜ytes;Ž¡for–›example,‘K'the“`Êset‘‘‰ffÕYŽ‘firuleŽ‘oÇ'“command“has“t•¾9w“o‘›parameters,Ž¡eacš¾9h–Öof“whic˜h“is“four“b˜ytes“long.‘^P˜arameters“are“usuallyŽ¡regarded–«Das“nonnegativš¾9e“in˜tegers;‘Οbut“four-b˜yte-long“pa-Ž¡rameters,‘ÍŠand–»—shorter“parameters“that“denote“distances,Ž¡can–.bšAÇe“either“p˜ositivš¾9e“or“negativ˜e.‘fˆSuc˜h“parameters“areŽ¡givš¾9en–-Iin“t˜w˜o's“complemen˜t“notation.‘ÏF‘ÿ:«or“example,‘[²a“t˜w˜o-Ž¡bš¾9yte-long–-distance“parameter“has“a“v‘ÿ|ralue“bAÇet˜w˜een“ÉÇ2Ÿü-=ó¹Aa¨cmr6¼15ŽŽ¡Çand‘T2Ÿü-=¼15Ž‘ ã†É‘8Ç1.Ž¡‘ A‘?úÌDVIŽ‘¬ÁÇ le–@consists“of“a“\pream•¾9ble,"‘J±follo“w“ed›@b“y˜a˜se-Ž¡quence–Gaof“one“or“more“\pages,"‘Säfollo•¾9w“ed›Gab“y˜a˜\pAÇostam-Ž¡ble."‘8ëThe–t(pream¾9ble“is“simply“a“Êpr‡eŽ‘t Çcommand,‘‹Üwith“itsŽ¡parameters–®>that“de ne“the“dimensions“used“in“the“ le;Ž¡this–ƒòmš¾9ust“come“ rst.‘ëúEac˜h“\page"“consists“of“a“Êb‡opŽ‘JßÇcom-Ž¡mand,‘ ¸follo•¾9w“ed›Ðb“y˜an“y˜n“um“bAÇer˜of˜other˜commands˜thatŽŽŽ ý‚’ótell–b½where“cš¾9haracters“are“to“bAÇe“placed“on“a“ph˜ysical“page,Ž¤ ’ófollo•¾9w“ed›D#b“y˜an˜Êe‡opŽ‘ËAÇcommand.‘¨ÝThe˜pages˜appAÇear˜in˜theŽ¡’óorder–S½that“they“wš¾9ere“generated,‘zunot“in“an˜y“particular“n˜u-Ž¡’ómerical–`worder.‘ýÚIf“w¾9e“ignore“ÊnopŽ‘n•Çcommands“and“Êfnt‘‘‰ffÕYŽ‘fidefŽŽ¡’óÇcommands–™¹(whicš¾9h“are“allo˜w˜ed“bAÇet˜w˜een“an˜y“t˜w˜o“com-Ž¡’ómands–"in“the“ le),‘eGeac¾9h“Êe‡opŽ‘‡)Çcommand“is“immediatelyŽ¡’ófollo•¾9w“ed›H‚b“y˜a˜Êb‡opŽ‘ÓÿÇcommand,‘UNor˜b“y˜a˜Êp‡ostŽ‘µƒÇcommand;‘binŽ¡’óthe–GÊlatter“case,›Ththere“are“no“more“pages“in“the“ le,˜andŽ¡’óthe–{Bremaining“bš¾9ytes“form“the“pAÇostam˜ble.‘éF‘ÿ:«urther“detailsŽ¡’óabšAÇout–Tthe“p˜ostam¾9ble“will“b˜e“explained“later.Ž¡’ýSome–®parameters“in“ÌDVIŽ‘NÇcommands“are“\pAÇoin¾9ters."Ž¡’óThese–ôÌare“four-bš¾9yte“quan˜tities“that“giv˜e“the“loAÇcationŽ¡’ón•¾9um“bAÇer–®8of“some“other“bš¾9yte“in“the“ le;‘úªthe“ rst“b˜yte“isŽ¡’ón•¾9um“bšAÇer–<¨0,‘F}then“comes“n•¾9um“b˜er–<¨1,‘F}and“so“on.‘’lF‘ÿ:«or“exam-Ž¡’óple,‘aéone–R˜of“the“parameters“of“a“Êb‡opŽ‘è+Çcommand“pAÇoin¾9ts“toŽ¡’óthe–…Ëprevious“Êb‡opŽ‘ÈÆÇ;‘µ¤this“mak¾9es“it“feasible“to“read“the“pagesŽ¡’óin›dbac•¾9kw“ards˜order,‘‡ˆin˜case˜the˜results˜are˜bAÇeing˜directedŽ¡’óto–K a“device“that“stac¾9ks“its“output“face“up.‘½ÓSuppAÇose“theŽ¡’ópreamš¾9ble– of“a“ÌDVIŽ‘<ÜÇ le“oAÇccupies“b˜ytes“0“to“99.‘ôœNo˜w“ifŽ¡’óthe–M rst“page“oAÇccupies“bš¾9ytes“100“to“999,–Zêsa˜y‘ÿ:«,“and–Mif“theŽ¡’ósecond–Š¡page“oAÇccupies“b¾9ytes“1000“to“1999,‘§ôthen“the“Êb‡opŽŽ¡’óÇthat–Aýstarts“in“bš¾9yte“1000“pAÇoin˜ts“to“100“and“the“Êb‡opŽ‘ÆõÇthatŽ¡’óstarts–Win“bš¾9yte“2000“pAÇoin˜ts“to“1000.‘ãK(The“v˜ery“ rst“Êb‡opŽ‘š˜Ç,Ž¡’ói.e.,›ž¶the–one“that“starts“in“b¾9yte“100,˜has“a“pAÇoin¾9ter“of“ÉÇ1.)ŽŸ’ýThe‘ÒZÌDVIŽ‘ÑvÇformat–ÒZis“in¾9tended“to“bšAÇe“b˜oth“compactŽ¡’óand–TCeasily“inš¾9terpreted“b˜y“a“mac˜hine.‘Ù>Compactness“isŽ¡’óac•¾9hiev“ed›Þ»b“y˜making˜most˜of˜the˜information˜implicit˜in-Ž¡’óstead–hXof“explicit.‘âÇWhen“a“ÌDVIŽ‘•Ç-reading“program“reads“theŽ¡’ócommands–·Afor“a“page,‘ß¼it“kš¾9eeps“trac˜k“of“sev˜eral“quan˜ti-Ž¡’óties:‘F(a)–ªThe“currenš¾9t“fon˜t“Èf‘¤ÇÇis“an“in˜teger;‘ô€this“v‘ÿ|ralue“isŽ¡’ócš¾9hanged– ‹only“b˜y“ÊfntŽ‘¬®Çand“Êfnt‘‘‰ffÕYŽ‘finumŽ‘(¤îÇcommands.‘¾(b)“TheŽ¡’ócurrenš¾9t–ÃpAÇosition“on“the“page“is“giv˜en“b˜y“t˜w˜o“n˜um˜bAÇersŽ¡’ócalled–r˜the“horizonš¾9tal“and“v˜ertical“coAÇordinates,‘‰éÈh“Çand“ÈvRªÇ.Ž¡’óBoth–oÈcošAÇordinates“are“zero“at“the“upp˜er“left“corner“ofŽ¡’óthe–@»page;‘Önmoš¾9ving“to“the“righ˜t“correspAÇonds“to“increas-Ž¡’óing–©^the“horizonš¾9tal“coAÇordinate,‘Î`and“mo˜ving“do˜wn“corre-Ž¡’óspšAÇonds–gœto“increasing“the“v¾9ertical“co˜ordinate.‘HTh¾9us,‘|.theŽ¡’ócoAÇordinates–D(are“essenš¾9tially“Cartesian,‘OÜexcept“that“v˜erti-Ž¡’ócal–ìdirections“are“ ippAÇed;‘ùÑthe“Cartesian“v¾9ersion“of“(Èh;‘ŠªvRªÇ)Ž¡’ówš¾9ould–F¦bAÇe“(Èh;‘ŠªÉÈvRªÇ).‘°e(c)“The“curren˜t“spacing“amoun˜ts“areŽ¡’ógiv•¾9en›É®b“y˜four˜n“um“bAÇers˜Èw>Ç,–öÄÈxÇ,“ÈyRªÇ,“and˜ÈzcÇ,“where˜Èw‘®Çand˜ÈxŽ¡’óÇare–ʦused“for“horizon¾9tal“spacing“and“where“Èy‘PÇand“Èz‘.3ÇareŽ¡’óused–‹Üfor“vš¾9ertical“spacing.‘î(d)“There“is“a“stac˜k“con˜tainingŽ¡’ó(Èh;–ŠªvšRª;“w>;“x;“y˜;“zcÇ)–ËSv‘ÿ|ralues;‘ãþthe“ÌDVIŽ‘ÃhÇcommands“ÊpushŽ‘ô Çand“Êp‡opŽŽ¡’óÇare–Q_used“to“cš¾9hange“the“curren˜t“lev˜el“of“opAÇeration.‘Ð’NoteŽ¡’óthat–£õthe“currenš¾9t“fon˜t“Èf‘ž Çis“not“pushed“and“p•AÇopp“ed;‘ëFtheŽ¡’óstac•¾9k›Tcon“tains˜only˜information˜ab•AÇout˜p“ositioning.Ž¡’ýThe–1öv‘ÿ|ralues“of“ÈhÇ,–yÈvšRªÇ,“Èw>Ç,“ÈxÇ,“Èy˜Ç,“and–1öÈz‘•ƒÇare“signed“in¾9te-Ž¡’ógers–ÛTha¾9ving“up“to“32“bits,‘æîincluding“the“sign.‘ Since“theyŽ¡’órepresen•¾9t›Eph“ysical˜distances,‘nÂthere˜is˜a˜small˜unit˜of˜mea-Ž¡’ósuremen•¾9t›ÒÈsuc“h˜that˜increasing˜Èh˜Çb“y˜1˜means˜mo“ving˜aŽ¡’ócertain–/÷tinš¾9y“distance“to“the“righ˜t.‘lXThe“actual“unit“ofŽ¡’ómeasuremenš¾9t–Tis“v‘ÿ|rariable,“as“explained“bAÇelo˜w.ŽŸ’óÐA.2Ž’#„Summary–Õ9of“ÑDVI“ÐcommandsŽŸ’óÇHere–»ýis“a“list“of“all“the“commands“that“ma¾9y“appAÇear“inŽ¡’óa‘á²ÌDVIŽ‘ð&Ç le.‘ŠEacš¾9h–á²command“is“spAÇeci ed“b˜y“its“sym˜bAÇolicŽ¡’óname–‚'(Êe.g.Ç,‘Ý[Êb‡opŽ‘ VÇ),›Ý[its“op•AÇco“de–‚'b¾9yte“(Êe.g.Ç,˜139),˜and“itsŽŽŽŽŽŽŒ‹íOÌ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1005ŽŽ œ ý‚Çparameters–ß(if“anš¾9y).‘The“parameters“are“follo˜w˜ed“b˜y“aŽ¤ brac•¾9k“eted›=(n“um“bAÇer˜telling˜ho“w˜man“y˜b“ytes˜they˜oAÇccup“y;Ž¡for–ãexample,‘“`ÈpÇ[4]'“means“that“parameter“Èp“Çis“four“b¾9ytesŽ¡long.Ž©Êset‘‘‰ffÕYŽ–fichar‘‘‰ffÕYŽ“0Ž‘,úÍÇ0Ž¡‘øT•¾9ypAÇeset›\3c“haracter˜n“um“bAÇer˜0˜from˜fon“t˜Èf‘VÞÇsuc“h˜thatŽ¡‘øthe–×reference“pAÇoinš¾9t“of“the“c˜haracter“is“at“(Èh;‘ŠªvRªÇ).Ž¡‘øThen–Äfincrease“Èh“Çbš¾9y“the“width“of“that“c˜haracter.Ž¡‘øNote–`ˆthat“a“cš¾9haracter“ma˜y“ha˜v˜e“zero“or“negativ˜eŽ¡‘øwidth,‘G"so– ùone“cannot“bAÇe“sure“that“Èh“Çwill“adv‘ÿ|ranceŽ¡‘øafter–Tthis“command;“but“Èh“Çusually“doAÇes“increase.Ž¦Êset‘‘‰ffÕYŽ–fichar‘‘‰ffÕYŽ“1Ž‘,úÍÇthrough‘TÊset‘‘‰ffÕYŽ–fichar‘‘‰ffÕYŽ“127Ž‘9ñÇ(op•AÇco“des–T1“to“127)Ž¡‘øDo–}âthe“opAÇerations“of“Êset‘‘‰ffÕYŽ–fichar‘‘‰ffÕYŽ“0Ž‘-c[Ç;‘²)but“use“the“c¾9har-Ž¡‘øacter–²çwhose“n•¾9um“bAÇer›²çmatc“hes˜the˜op•AÇco“de,‘Æ—instead˜ofŽ¡‘øc¾9haracter‘T0.Ž¦Êset1Ž‘–ÎÇ128‘ UPÈcÇ[1]Ž¡‘øSame–uÿas“Êset‘‘‰ffÕYŽ–fichar‘‘‰ffÕYŽ“0Ž‘,[xÇ,‘•Ýexcept“that“cš¾9haracter“n˜um˜bAÇer“ÈcŽ¡‘øÇis–š¶tš¾9ypAÇeset.‘ó‘T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“uses“this“command“for“c˜haractersŽ¡‘øin–Tthe“range“128–‘ÆÉ“Èc“<“Ç256.Ž¦Êset2Ž‘–ÎÇ129‘ UPÈcÇ[2]Ž¡‘øSame–H°as“Êset1Ž‘Ê*Ç,‘qžexcept“that“Èc“Çis“t•¾9w“o›H°b“ytes˜long,‘qžso˜it˜isŽ¡‘øin–@ythe“range“0–ٯɓÈc“<“Ç65536.‘àT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82–@ynev¾9er“uses“thisŽ¡‘øcommand,‘P§whicš¾9h–zis“in˜tended“for“proAÇcessors“that“dealŽ¡‘øwith–Ô…orien¾9tal“languages;‘êbut“a“ÌDVI‘ÔtÇproAÇcessor“shouldŽ¡‘øallo•¾9w›wjc“haracter˜co•AÇdes˜greater˜than˜255.‘çÍThe˜pro“ces-Ž¡‘øsor–¥ maš¾9y“then“assume“that“these“c˜haracters“ha˜v˜e“theŽ¡‘øsame–±width“as“the“cš¾9haracter“whose“respAÇectiv˜e“coAÇdesŽ¡‘øare‘TÈc‘‘ÆÇmoAÇdŽ‘Þ/256.Ž¦Êset3Ž‘–ÎÇ130‘ UPÈcÇ[3]Ž¡‘øSame–`†as“Êset1Ž‘âÇ,›sRexcept“that“Èc“Çis“three“b¾9ytes“long,˜soŽ¡‘øit–Tcan“bAÇe“as“large“as“2Ÿü-=¼24Ž‘ ã†É‘8Ç1.Ž¦Êset4Ž‘–ÎÇ131‘ UPÈcÇ[+4]Ž¡‘øSame–ú!as“Êset1Ž‘{›Ç,›ÿ’except“that“Èc“Çis“four“b¾9ytes“long,˜pAÇos-Ž¡‘øsibly–Tevš¾9en“negativ˜e.‘pImagine“that.Ž¦Êset‘‘‰ffÕYŽ‘firuleŽ‘"2ÃÇ132‘ UPÈaÇ[+4]‘TÈbÇ[+4]Ž¡‘øTš¾9ypAÇeset–,Fa“solid“blac˜k“rectangle“of“heigh˜t“Èa“ÇandŽ¡‘øwidth–÷ïÈbÇ,‘ýÐwith“its“bAÇottom“left“corner“at“(Èh;‘ŠªvRªÇ).‘¤ThenŽ¡‘øset›Û Èh–ÛOÉ “Èh–’ Ç+“ÈbÇ.‘m›If˜either˜Èa–ÛOÉ“Ç0˜or˜Èb“É“Ç0,‘ {nothingŽ¡‘øshould–(HbšAÇe“t¾9yp˜eset.‘UKNote“that“if“Èb–\<“Ç0,‘mthe‘(Hv‘ÿ|ralueŽ¡‘øof–ŠOÈh“Çwill“decrease“ev¾9en“though“nothing“else“hap-Ž¡‘øpšAÇens.‘IAPrograms–yšthat“t¾9yp˜eset“from“ÌDVIŽ‘öÇ les“shouldŽ¡‘øbAÇe–„careful“to“mak¾9e“the“rules“line“up“carefully“withŽ¡‘ødigitized–'Âc¾9haracters,‘WFas“explained“in“connection“withŽ¡‘øthe‘TÊrule‘‘‰ffÕYŽ‘fipixelsŽ‘0rÇsubroutine‘TbAÇelo¾9w.Ž¦Êput1Ž‘=íÇ133‘ UPÈcÇ[1]Ž¡‘øT•¾9ypAÇeset›pc“haracter˜n“um“bAÇer˜Èc˜Çfrom˜fon“t˜Èf‘j¹Çsuc“h˜thatŽ¡‘øthe–,ùreference“pAÇoinš¾9t“of“the“c˜haracter“is“at“(Èh;‘ŠªvRªÇ).‘Îü(TheŽ¡‘ø`put'–)Çcommands“are“exactly“lik¾9e“the“`set'“commands,Ž¡‘øexcept–/³that“they“simply“put“out“a“c¾9haracter“or“a“ruleŽ¡‘øwithout–Tmoš¾9ving“the“reference“pAÇoin˜t“afterw˜ards.)Ž¦Êput2Ž‘=íÇ134‘ UPÈcÇ[2]Ž¡‘øSame–Tas“Êset2Ž‘–ÎÇ,“except“that“Èh“Çis“not“c¾9hanged.Ž¦Êput3Ž‘=íÇ135‘ UPÈcÇ[3]Ž¡‘øSame–Tas“Êset3Ž‘–ÎÇ,“except“that“Èh“Çis“not“c¾9hanged.Ž¦Êput4Ž‘=íÇ136‘ UPÈcÇ[+4]Ž¡‘øSame–Tas“Êset4Ž‘–ÎÇ,“except“that“Èh“Çis“not“c¾9hanged.ŽŽŽ ý‚’óÊput‘‘‰ffÕYŽ‘firuleŽ’ÙâÇ137‘ UPÈaÇ[+4]‘TÈbÇ[+4]Ž¤ ’øSame–Tas“Êset‘‘‰ffÕYŽ‘firuleŽ‘"2ÃÇ,“except“that“Èh“Çis“not“c¾9hanged.Ž©’óÊnopŽ’ÂûÇ138Ž¡’øNo–WYopAÇeration,‘§Údo“nothing.‘â€Anš¾9y“n˜um˜bAÇer“of“ÊnopŽ‘Ç'sŽ¡’øma¾9y–]ošAÇccur“b˜et•¾9w“een‘]ÌDVIŽ‘I|Çcommands,‘Ábut–]a“ÊnopŽ‘ÊaÇcan-Ž¡’ønot–»3bšAÇe“inserted“b˜et•¾9w“een–»3a“command“and“its“param-Ž¡’øeters–Tor“bAÇet•¾9w“een›Tt“w“o˜parameters.Ž¦’óÊb‡opŽ’XOÇ139‘ UPÈcŸÿÿ¼0Ž–*§Ç[+4]›TÈcŸÿÿ¼1Ž“Ç[+4]‘ŸþÈ:–Šª:“:Ž‘ ¢cŸÿÿ¼9Ž“Ç[+4]˜ÈpÇ[+4]Ž¡’øBeginning–Hof“a“page:‘ èSet“(Èh;–ŠªvšRª;“w>;“x;“y˜;“zcÇ)‘ ÿÉ Ž¡’øÇ(0È;–ŠªÇ0È;“Ç0È;“Ç0È;“Ç0È;“Ç0)–Üand“set“the“stacš¾9k“empt˜y‘ÿ:«.‘ p‡Set“theŽ¡’øcurren•¾9t›Èfon“t˜Èf‘ sÇto˜an˜unde ned˜v‘ÿ|ralue.‘ÍThe˜ten˜ÈcŸÿÿ½iŽŽ¡’øÇparameters–Y2can“bAÇe“used“to“iden¾9tify“pages,‘j)if“a“userŽ¡’øw•¾9an“ts–lŸto“prinš¾9t“only“part“of“a“ÌDVIŽ‘Ç le;‘˜DT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“giv˜esŽ¡’øthem–Ìthe“v‘ÿ|ralues“of“Ì\count0Ž‘&«È:–Šª:“:Ž‘4AÀÌ\count9Ž‘X ÚÇat“the“timeŽ¡’øÌ\shipoutŽ’-Ù~Çw•¾9as›ŒÖin“v“ok“ed˜for˜this˜page.‘îñThe˜parameterŽ¡’øÈp–ÈæÇpAÇoin¾9ts“to“the“previous“Êb‡opŽ‘ÔÇÇcommand“in“the“ le,Ž¡’øwhere–Tthe“ rst“Êb‡opŽ‘m£Çhas“Èp–‘ÆÇ=“ÉÇ1.Ž¦’óÊe‡opŽ’XOÇ140Ž¡’øEnd–ý>of“page:‘ìDPrinš¾9t“what“y˜ou“ha˜v˜e“read“since“theŽ¡’øprevious‘ùÊb‡opŽ‘ÐôÇ.‘†^Aš¾9t–ùthis“pAÇoin˜t“the“stac˜k“should“bAÇeŽ¡’øempt¾9y‘ÿ:«.Ž¦’óÊpushŽ’ r»Ç141Ž¡’øPush–.šthe“curren¾9t“v‘ÿ|ralues“of“(Èh;–ŠªvšRª;“w>;“x;“y˜;“zcÇ)–.šon¾9to“theŽ¡’øtop–ógof“the“stacš¾9k;‘þ¶do“not“c˜hange“an˜y“of“these“v‘ÿ|ralues.Ž¡’øNote–Tthat“Èf‘ÿÇis“not“pushed.Ž¦’óÊp‡opŽ’Ñ3Ç142Ž¡’øPš¾9op–â/the“top“six“v‘ÿ|ralues“o “of“the“stac˜k“and“assignŽ¡’øthem–þto“(Èh;–ŠªvšRª;“w>;“x;“y˜;“zcÇ).‘ÊSThe›þn•¾9um“b•AÇer˜of˜p“ops˜shouldŽ¡’ønevš¾9er–‹Pexceed“the“n˜um˜bAÇer“of“pushes,‘¨Ïsince“it“w˜ouldŽ¡’øbAÇe––ãhighly“emš¾9barrassing“if“the“stac˜k“w˜ere“empt˜y“atŽ¡’øthe–Ttime“of“a“Êp‡opŽ‘æ‡Çcommand.Ž¦’óÊright1Ž’CHÇ143‘ UPÈbÇ[+1]Ž¡’øSet›<Èh–Ç;‘4®i.e.,‘Úmo•¾9v“e˜righ“t˜Èw‘½Çunits.‘[$WithŽ¡’øluc¾9k,‘„ßthis–nparameterless“command“will“usually“suf-Ž¡’ø ce,‘ëbšAÇecause–the“same“kind“of“motion“will“o˜ccurŽ¡’øsevš¾9eral–v¯times“in“succession;‘«‘the“follo˜wing“commandsŽ¡’øexplain–Tho¾9w“Èw‘STÇgets“particular“v‘ÿ|ralues.Ž¦’óÊw1Ž’¡vÇ148‘ UPÈbÇ[+1]Ž¡’øSet–¬UÈw‘ÏÆÉ ›‘ÆÈb“Çand“Èh˜É ˜Èh–<9Ç+“ÈbÇ.‘ùpThe–¬Uv‘ÿ|ralue“of“Èb“Çis“a“signedŽ¡’øquan•¾9tit“y–cin“t•¾9w“o's›ccomplemen“t˜notation,‘‡ÉÇ128–‘ÆÉ“Èb“<Ž¡’øÇ128.‘KCThis–$ðcommand“cš¾9hanges“the“curren˜t“Èw‘bðÇspacingŽ¡’øand›Tmo•¾9v“es˜righ“t˜b“y˜ÈbÇ.ŽŽŽŽŽŽŒ‹îpb ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1006‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Êw2Ž‘¡vÇ149‘ UPÈbÇ[+2]Ž¤ ‘øSame–:Æas“Êw1Ž‘ÆèÇ,‘„"but“Èb“Çis“a“t•¾9w“o-b“yte-long‘:Æparameter,Ž¡‘øÉÇ32768–‘ÆÉ“Èb“<“Ç32768.Ž©Êw3Ž‘¡vÇ150‘ UPÈbÇ[+3]Ž¡‘øSame–zas“Êw1Ž‘²Ç,‘“Þbut“Èb“Çis“a“three-b¾9yte-long“parameter,Ž¡‘øÉÇ2Ÿü-=¼23Ž‘ gÉ–‘ÆÈb“<“Ç2Ÿü-=¼23Ž‘ÕNÇ.Ž¦Êw4Ž‘¡vÇ151‘ UPÈbÇ[+4]Ž¡‘øSame–Qas“Êw1Ž‘ŽsÇ,‘=but“Èb“Çis“a“four-b¾9yte-long“parameter,Ž¡‘øÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈb“<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦Êx0Ž‘ ÁtÇ152Ž¡‘øSet›ŠÈh–2ÊÉ “Èh–µÇ+“ÈxÇ;‘Œ¥i.e.,‘Nmo•¾9v“e˜righ“t˜Èx˜Çunits.‘ The˜`ÈxÇ'Ž¡‘øcommands–ÞRare“lik¾9e“the“`Èw>Ç'“commands“except“thatŽ¡‘øthey›Tin•¾9v“olv“e˜Èx˜Çinstead˜of˜Èw>Ç.Ž¦Êx1Ž‘ ÁtÇ153‘ UPÈbÇ[+1]Ž¡‘øSet›Ë™Èx–‘ÆÉ “Èb˜Çand˜Èh“É “Èh–zÁÇ+“ÈbÇ.‘ÜThe˜v‘ÿ|ralue˜of˜Èb˜Çis˜a˜signedŽ¡‘øquan•¾9tit“y–cin“t•¾9w“o's›ccomplemen“t˜notation,‘‡ÉÇ128–‘ÆÉ“Èb“<Ž¡‘øÇ128.‘Ö9This–SBcommand“cš¾9hanges“the“curren˜t“Èx“ÇspacingŽ¡‘øand›Tmo•¾9v“es˜righ“t˜b“y˜ÈbÇ.Ž¦Êx2Ž‘ ÁtÇ154‘ UPÈbÇ[+2]Ž¡‘øSame–tõas“Êx1Ž‘!Ç,‘ÌÝbut“Èb“Çis“a“t•¾9w“o-b“yte-long‘tõparameter,Ž¡‘øÉÇ32768–‘ÆÉ“Èb“<“Ç32768.Ž¦Êx3Ž‘ ÁtÇ155‘ UPÈbÇ[+3]Ž¡‘øSame–´¾as“Êx1Ž‘`ÞÇ,‘Ü™but“Èb“Çis“a“three-b¾9yte-long“parameter,Ž¡‘øÉÇ2Ÿü-=¼23Ž‘ gÉ–‘ÆÈb“<“Ç2Ÿü-=¼23Ž‘ÕNÇ.Ž¦Êx4Ž‘ ÁtÇ156‘ UPÈbÇ[+4]Ž¡‘øSame–<€as“Êx1Ž‘è Ç,‘†Kbut“Èb“Çis“a“four-b¾9yte-long“parameter,Ž¡‘øÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈb“<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦Êdown1Ž‘EÇ157‘ UPÈaÇ[+1]Ž¡‘øSet›ä Èv‘=ïÉ ‘ëEÈv‘ëÇ+‘˜kÈaÇ,–si.e.,“mo•¾9v“e˜do“wn˜Èa˜Çunits.‘ŠUThe˜pa-Ž¡‘ørameter–†is“a“signed“n•¾9um“bAÇer–†in“t•¾9w“o's‘†complemen“tŽ¡‘ønotation,›ÊÆÉÇ128–ƒ´É“Èa“<“Ç128;‘ïif‘¦|Èa“<“Ç0,˜the‘¦|referenceŽ¡‘øpAÇoinš¾9t–Tactually“mo˜v˜es“up.Ž¦Êdown2Ž‘EÇ158‘ UPÈaÇ[+2]Ž¡‘øSame–!Das“Êdown1Ž‘QÇ,‘Rexcept“that“Èa“Çis“a“t•¾9w“o-b“yte‘!Dquan“tit“yŽ¡‘øin–Tthe“range“ÉÇ32768–‘ÆÉ“Èa“<“Ç32768.Ž¦Êdown3Ž‘EÇ159‘ UPÈaÇ[+3]Ž¡‘øSame–®{as“Êdown1Ž‘Þ8Ç,‘à except“that“Èa“Çis“a“three-b¾9yte“quan-Ž¡‘øtit¾9y–Tin“the“range“ÉÇ2Ÿü-=¼23Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼23Ž‘ÕNÇ.Ž¦Êdown4Ž‘EÇ160‘ UPÈaÇ[+4]Ž¡‘øSame–,as“Êdown1Ž‘\MÇ,‘2_except“that“Èa“Çis“a“four-b¾9yte“quan-Ž¡‘øtit¾9y–Tin“the“range“ÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦Êy0Ž‘ úWÇ161Ž¡‘øSet›*›Èv‘çÉ ‘µ=Èv‘oÇ+‘hÈyRªÇ;‘5?i.e.,‘/ímo•¾9v“e˜do“wn˜Èy‘}EÇunits.‘\FWith˜luc“k,Ž¡‘øthis–dÿparameterless“command“will“usually“suce,‘ˆDbAÇe-Ž¡‘øcause–\ÿthe“same“kind“of“motion“will“oAÇccur“sev¾9eralŽ¡‘øtimes–(Ùin“succession;‘w­the“follo¾9wing“commands“explainŽ¡‘øho¾9w–TÈy‘gþÇgets“particular“v‘ÿ|ralues.Ž¦Êy1Ž‘ úWÇ162‘ UPÈaÇ[+1]Ž¡‘øSet–°dÈy›äpÉ ‘‘ÆÈa“Çand“Èv˜É ‘‘ÆÈv‘—Ç+‘DYÈaÇ.‘úËThe“v‘ÿ|ralue“of“Èa“Çis“a“signedŽ¡‘øquan•¾9tit“y–1in“t•¾9w“o's›1complemen“t˜notation,‘_)ÉÇ128–‘ÆÉ“Èa“<Ž¡‘øÇ128.‘õVThis–]¡command“cš¾9hanges“the“curren˜t“Èy‘°KÇspacingŽ¡‘øand›Tmo•¾9v“es˜do“wn˜b“y˜ÈaÇ.Ž¦Êy2Ž‘ úWÇ163‘ UPÈaÇ[+2]Ž¡‘øSame–Qas“Êy1Ž‘6Ç,‘Ÿìbut“Èa“Çis“a“t•¾9w“o-b“yte-long‘Qparameter,Ž¡‘øÉÇ32768–‘ÆÉ“Èa“<“Ç32768.ŽŽŽ ý‚’óÊy3Ž’úWÇ164‘ UPÈaÇ[+3]Ž¤ ’øSame–Êas“Êy1Ž‘uÍÇ,‘¯¨but“Èa“Çis“a“three-b¾9yte-long“parameter,Ž¡’øÉÇ2Ÿü-=¼23Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼23Ž‘ÕNÇ.Ž© [n’óÊy4Ž’úWÇ165‘ UPÈaÇ[+4]Ž¡’øSame–Œas“Êy1Ž‘ýÇ,‘YYbut“Èa“Çis“a“four-b¾9yte-long“parameter,Ž¡’øÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦’óÊz0Ž’EÇ166Ž¡’øSet›SÈv‘—nÉ ‘DÄÈv‘áÇ+‘¼7ÈzcÇ;‘œÒi.e.,‘[’mo•¾9v“e˜do“wn˜Èz‘}àÇunits.‘+lThe˜`ÈzcÇ'Ž¡’øcommands–'6are“lik¾9e“the“`ÈyRªÇ'“commands“except“thatŽ¡’øthey›Tin•¾9v“olv“e˜Èz‘xáÇinstead˜of˜ÈyRªÇ.Ž¦’óÊz1Ž’EÇ167‘ UPÈaÇ[+1]Ž¡’øSet–³þÈz‘õSÉ ›‘ÆÈa“Çand“Èv‘äpÉ ˜Èv‘ž6Ç+‘KŒÈaÇ.‘ûþThe“v‘ÿ|ralue“of“Èa“Çis“a“signedŽ¡’øquan•¾9tit“y–1in“t•¾9w“o's›1complemen“t˜notation,‘_)ÉÇ128–‘ÆÉ“Èa“<Ž¡’øÇ128.‘VThis–böcommand“cš¾9hanges“the“curren˜t“Èz‘ƃÇspacingŽ¡’øand›Tmo•¾9v“es˜do“wn˜b“y˜ÈaÇ.Ž¦’óÊz2Ž’EÇ168‘ UPÈaÇ[+2]Ž¡’øSame–füas“Êz1Ž‘–©Ç,‘»ebut“Èa“Çis“a“t•¾9w“o-b“yte-long‘füparameter,Ž¡’øÉÇ32768–‘ÆÉ“Èa“<“Ç32768.Ž¦’óÊz3Ž’EÇ169‘ UPÈaÇ[+3]Ž¡’øSame–¦Åas“Êz1Ž‘ ÖrÇ,‘Ë!but“Èa“Çis“a“three-b¾9yte-long“parameter,Ž¡’øÉÇ2Ÿü-=¼23Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼23Ž‘ÕNÇ.Ž¦’óÊz4Ž’EÇ170‘ UPÈaÇ[+4]Ž¡’øSame–.‡as“Êz1Ž‘^4Ç,‘tÓbut“Èa“Çis“a“four-b¾9yte-long“parameter,Ž¡’øÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈa“<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦’óÊfnt‘‘‰ffÕYŽ–finum‘‘‰ffÕYŽ“0Ž’ Ç171Ž¡’øSet–¦Èf‘}«É ‘ƒÇ0.‘Î¥F‘ÿ:«onš¾9t“0“m˜ust“previously“ha˜v˜e“bAÇeen“de-Ž¡’ø ned–Tbš¾9y“a“Êfnt‘‘‰ffÕYŽ‘fidefŽ‘"ÛÐÇinstruction,“as“explained“bAÇelo˜w.Ž¦’óÊfnt‘‘‰ffÕYŽ–finum‘‘‰ffÕYŽ“1Ž’ Çthrough‘TÊfnt‘‘‰ffÕYŽ–finum‘‘‰ffÕYŽ“63Ž‘4çAÇ(op•AÇco“des–T172“to“234)Ž¡’øSet–TÈf›ŒqÉ ‘‘ÆÇ1,“.–Šª.“.“,–TÈf˜É ‘‘ÆÇ63,“respAÇectiv¾9ely‘ÿ:«.Ž¦’óÊfnt1Ž’–ÎÇ235‘ UPÈkCŽÇ[1]Ž¡’øSet–|4Èf‘ŒqÉ ‘‘ÆÈkCŽÇ.‘éeT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“uses“this“command“for“fonš¾9t“n˜um-Ž¡’øbAÇers–Tin“the“range“64–‘ÆÉ“Èk‘ÕT<“Ç256.Ž¦’óÊfnt2Ž’–ÎÇ236‘ UPÈkCŽÇ[2]Ž¡’øSame–ü as“Êfnt1Ž‘}†Ç,‘except“that“Èk‘?šÇis“t•¾9w“o›ü b“ytes˜long,‘so˜itŽ¡’øis–¶ïin“the“range“0–ŸÉ“Èk‘â¬<“Ç65536.‘BT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82–¶ïnev¾9er“gen-Ž¡’øerates–¤‰this“command,‘ÈVbut“large“fonš¾9t“n˜um˜bAÇers“ma˜yŽ¡’øpro•¾9v“e–´•useful“for“spAÇeci cations“of“color“or“texture,‘ÇïorŽ¡’øthey–üma¾9y“bšAÇe“used“for“sp˜ecial“fonš¾9ts“that“ha˜v˜e“ xedŽ¡’øn•¾9um“bšAÇers–Tin“some“external“co˜ding“sc¾9heme.Ž¦’óÊfnt3Ž’–ÎÇ237‘ UPÈkCŽÇ[3]Ž¡’øSame–FNas“Êfnt1Ž‘ÇÈÇ,›Rexcept“that“Èk‘‰ÜÇis“three“b¾9ytes“long,˜soŽ¡’øit–Tcan“bAÇe“as“large“as“2Ÿü-=¼24Ž‘ ã†É‘8Ç1.Ž¦’óÊfnt4Ž’–ÎÇ238‘ UPÈkCŽÇ[+4]Ž¡’øSame–*“as“Êfnt1Ž‘¬ Ç,‘Y‡except“that“Èk‘n!Çis“four“b¾9ytes“long;‘xÓthis“isŽ¡’øfor–mÊthe“really“big“fonš¾9t“n˜um˜bAÇers“(and“for“the“negativ˜eŽ¡’øones).Ž¦’óÊxxx1Ž’ H˜Ç239‘ UPÈk•CŽÇ[1]‘TÈxÇ[Èk“Ç]Ž¡’øThis–&fcommand“is“unde ned“in“general;‘.ïit“functionsŽ¡’øas–l(a“(Èk‘ÿmÇ+‘»ß2)-b¾9yte“ÊnopŽ‘…÷Çunless“spAÇecial“ÌDVIŽ‘˜êÇ-reading“pro-Ž¡’øgrams–$%are“bAÇeing“used.‘HäT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“generates“Êxxx1Ž‘{ŽÇwhenŽ¡’øa–läshort“enough“Ì\specialŽ‘,¦xÇappAÇears,‘‚Èsetting“Èk‘°rÇto“theŽ¡’øn•¾9um“bšAÇer–rZof“b¾9ytes“b˜eing“sen¾9t.‘æIt“is“recommended“thatŽ¡’øÈx–¾]ÇbAÇe“a“string“haš¾9ving“the“form“of“a“k˜eyw˜ord“follo˜w˜edŽ¡’øbš¾9y–TpAÇossible“parameters“relev‘ÿ|ran˜t“to“that“k˜eyw˜ord.Ž¦’óÊxxx2Ž’ H˜Ç240‘ UPÈk•CŽÇ[2]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘TÊxxx1Ž‘H˜Ç,–Tbut“0–‘ÆÉ“Èk‘ÕT<“Ç65536.ŽŽŽŽŽŽŒ‹ïŽ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1007ŽŽ œ ý‚Êxxx3Ž‘H˜Ç241‘ UPÈk•CŽÇ[3]‘TÈxÇ[Èk“Ç]Ž¤ ‘øLik¾9e‘TÊxxx1Ž‘H˜Ç,–Tbut“0–‘ÆÉ“Èk‘ÕT<“Ç2Ÿü-=¼24Ž‘ÕNÇ.Ž© èºÊxxx4Ž‘H˜Ç242‘ UPÈk•CŽÇ[4]‘TÈxÇ[Èk“Ç]Ž¡‘øLik¾9e‘„QÊxxx1Ž‘·•Ç,‘ but–„QÈk‘ÇßÇcan“bAÇe“ridiculously“large.‘ifT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82Ž¡‘øuses‘TÊxxx4Ž–]ìÇwhen‘TÊxxx1Ž“Çw¾9ould–TbAÇe“incorrect.Ž¦Êfnt‘‘‰ffÕYŽ‘fidef1Ž‘#Ë{Ç243‘ UPÈkCŽÇ[1]–TÈcÇ[4]“ÈsÇ[4]“ÈdÇ[4]“ÈaÇ[1]“Èlš&9Ç[1]“ÈnÇ[Èa–8Ç+“Èl˜Ç]Ž¡‘øDe ne––?fonš¾9t“ÈkCŽÇ,‘¶ywhere“0–h¢É“Èk‘¬0<“Ç256;‘Ö´fon˜t‘–?de nitionsŽ¡‘øwill–TbAÇe“explained“shortly‘ÿ:«.Ž¦Êfnt‘‘‰ffÕYŽ‘fidef2Ž‘#Ë{Ç244‘ UPÈkCŽÇ[2]–TÈcÇ[4]“ÈsÇ[4]“ÈdÇ[4]“ÈaÇ[1]“Èlš&9Ç[1]“ÈnÇ[Èa–8Ç+“Èl˜Ç]Ž¡‘øDe ne–Tfon¾9t“ÈkCŽÇ,“where“0–‘ÆÉ“Èk‘ÕT<“Ç65536.Ž¦Êfnt‘‘‰ffÕYŽ‘fidef3Ž‘#Ë{Ç245‘ UPÈkCŽÇ[3]–TÈcÇ[4]“ÈsÇ[4]“ÈdÇ[4]“ÈaÇ[1]“Èlš&9Ç[1]“ÈnÇ[Èa–8Ç+“Èl˜Ç]Ž¡‘øDe ne–Tfon¾9t“ÈkCŽÇ,“where“0–‘ÆÉ“Èk‘ÕT<“Ç2Ÿü-=¼24Ž‘ÕNÇ.Ž¦Êfnt‘‘‰ffÕYŽ‘fidef4Ž‘#Ë{Ç246‘ UPÈkCŽÇ[+4]–TÈcÇ[4]“ÈsÇ[4]“ÈdÇ[4]“ÈaÇ[1]“Èlš&9Ç[1]“ÈnÇ[Èa–8Ç+“Èl˜Ç]Ž¡‘øDe ne–Tfon¾9t“ÈkCŽÇ,“where“ÉÇ2Ÿü-=¼31Ž‘ gÉ–‘ÆÈk‘ÕT<“Ç2Ÿü-=¼31Ž‘ÕNÇ.Ž¦Êpr‡eŽ‘¡¤Ç247‘ UPÈiÇ[1]‘TÊnumŽ‘ù×Ç[4]‘TÊdenŽ‘o)Ç[4]‘TÊmagŽ‘âºÇ[4]–TÈkšCŽÇ[1]“ÈxÇ[Èk˜Ç]Ž¡‘øBeginning–´êof“the“preamš¾9ble;‘µthis“m˜ust“come“at“theŽ¡‘øvš¾9ery–æ‹bAÇeginning“of“the“ le.‘ ØP˜arameters“ÈiÇ,‘ïæÊnumŽ‘ÔiÇ,‘ïæÊdenŽ‘I»Ç,Ž¡‘øÊmagŽ‘$M^Ç,–TÈkCŽÇ,“and“Èx“Çare“explained“bAÇelo¾9w.Ž¦Êp‡ostŽ‘9ÓÇ248Ž¡‘øBeginning–Tof“the“pšAÇostam¾9ble,“see“b˜elo¾9w.Ž¦Êp•‡ost‘‘‰ffÕYŽ‘fip“ostŽ‘'rÇ249Ž¡‘øEnding–Tof“the“pšAÇostam¾9ble,“see“b˜elo¾9w.Ž¦Commands–T250{255“are“unde ned“at“the“presen¾9t“time.ŽŸÐA.3Ž‘#„The‘Õ9pream®9bleŽŸÇThe–jcpreamš¾9ble“con˜tains“basic“information“abAÇout“the“ leŽ¡as–Ta“whole.‘pAs“stated“abAÇo•¾9v“e,–Tthere“are“six“parameters:Ž¤ hº‘)8œÈiÇ[1]‘TÊnumŽ‘ù×Ç[4]‘TÊdenŽ‘o)Ç[4]‘TÊmagŽ‘âºÇ[4]–TÈkšCŽÇ[1]“ÈxÇ[Èk˜Ç]È:Ž¡ÇThe–¶uÈi“Çbš¾9yte“iden˜ti es“ÌDVIŽ‘™¬Çformat;‘curren˜tly“this“b˜yte“isŽ¤ alw•¾9a“ys–’Ñset“to“2.‘”æ(The“v‘ÿ|ralue“Èi–bëÇ=“3–’Ñis“curren¾9tly“used“forŽ¡an–‚¼extended“format“that“alloš¾9ws“a“mixture“of“righ˜t-to-leftŽ¡and–ileft-to-righš¾9t“t˜ypAÇesetting.‘ã Some“da˜y“w˜e“will“set“Èi–‘ÆÇ=“4,Ž¡when‘BÌDVIŽ‘YFÇformat–Bmakš¾9es“another“incompatible“c˜hange|Ž¡pAÇerhaps–Tin“the“y¾9ear“2048.)Ž¡‘ The– ¤next“t•¾9w“o– ¤parameters,‘ ÇÊnumŽ‘ûîÇand“ÊdenŽ‘dyÇ,‘ Çare“pAÇositiv¾9eŽ¡inš¾9tegers–X®that“de ne“the“units“of“measuremen˜t;‘z[they“areŽ¡the–‚Ònš¾9umerator“and“denominator“of“a“fraction“b˜y“whic˜hŽ¡all–\Ndimensions“in“the“ÌDVIŽ‘å^Ç le“could“bAÇe“m¾9ultiplied“in“orderŽ¡to–\get“lengths“in“units“of“10Ÿü-=óq¡% cmsy6¾¼7Ž‘ ôÇmeters.‘ã‡(F‘ÿ:«or“example,Ž¡there–Õare“exactly“7227“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘œpAÇoinš¾9ts“in“254“cen˜timeters,Ž¡and–iT‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“wš¾9orks“with“scaled“pAÇoin˜ts“where“there“areŽ¡2Ÿü-=¼16Ž‘ |HÇsp–¦úin“a“pAÇoin¾9t,‘Ëcso“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“sets“ÊnumŽ‘Ç=‘„…25400000“andŽ¡ÊdenŽ‘ë›Ç=›‘Æ7227–8É“Ç2Ÿü-=¼16Ž‘ gÇ=˜473628672.)Ž¡‘ The‘6ÜÊmagŽ‘;Çparameter–6Üis“what“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@82“calls“Ì\magŽ‘4Ç,‘>i.e.,Ž¡1000–§átimes“the“desired“magni cation.‘ÔThe“actual“frac-Ž¡tion–4bš¾9y“whic˜h“dimensions“are“m˜ultiplied“is“thereforeŽ¡Èmn=Ç1000ÈdÇ.‘КNote–ü that“if“a“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘„Msource“došAÇcumen¾9t“do˜esŽ¡not–L call“for“anš¾9y“`ÌtrueŽ‘æXÇ'“dimensions,‘Zsand“if“y˜ou“c˜hange“itŽ¡only–˜$bš¾9y“spAÇecifying“a“di eren˜t“Ì\magŽ‘ Çsetting,‘¸Øthe“ÌDVIŽ‘] Ç leŽ¡that–ÔT‘þuAŸ¤šEŽ‘˜ŸXŽ‘\Zcreates“will“bAÇe“completely“unc¾9hanged“exceptŽ¡for–Vthe“v‘ÿ|ralue“of“ÊmagŽ‘z†Çin“the“preamš¾9ble“and“pAÇostam˜ble.Ž¡(F‘ÿ:«ancy‘£HÌDVIŽ‘Ð Ç-reading–£Hprograms“alloš¾9w“users“to“o˜v˜erride“theŽ¡ÊmagŽ‘âºÇsetting–Twhen“a“ÌDVIŽ‘WjÇ le“is“bAÇeing“prin¾9ted.)Ž¡‘ Finally‘ÿ:«,‘ìZÈk‘Ñ´Çand–Ž&Èx“Çallo¾9w“the“ÌDVIŽ‘IÇwriter“to“include“aŽ¡commen•¾9t,‘›8whic“h–€qis“not“in¾9terpreted“further.‘]ÇThe“lengthŽ¡of–Tcommen¾9t“Èx“Çis“ÈkCŽÇ,“where“0–‘ÆÉ“Èk‘ÕT<“Ç256.ŽŽŽ ý‚’óÐA.4Ž’#„F‘ÿ «on®9t‘Õ9de nitionsŽŸ’óÇF‘ÿ:«onš¾9t–£de nitions“for“a“giv˜en“fon˜t“n˜um˜bAÇer“Èk‘_1Çcon˜tain“furtherŽ© ’óparametersŽ¤ €’(¸æÈcÇ[4]–TÈsÇ[4]“ÈdÇ[4]“ÈaÇ[1]“Èlš&9Ç[1]“ÈnÇ[Èa–8Ç+“Èl˜Ç]È:Ž¡’óÇThe–gífour-bš¾9yte“v‘ÿ|ralue“Èc“Çis“the“c˜hec˜k“sum“that“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ð-(orŽ¦’ówhatev¾9er–²9program“generated“the“ÌDVIŽ‘‘4Ç le)“found“in“theŽ¦’óÌTFMŽ’×ýÇ le–«;for“this“fonš¾9t;‘ö.Èc“Çshould“matc˜h“the“c˜hec˜k“sum“ofŽ¦’óthe–Tfonš¾9t“found“b˜y“programs“that“read“this“ÌDVIŽ‘WjÇ le.Ž¦’ýPš¾9arameter–·“Ès“Çcon˜tains“a“ xed-pAÇoin˜t“scale“factor“that“isŽ¦’óapplied–èyto“the“cš¾9haracter“widths“in“fon˜t“ÈkCŽÇ;‘R fon˜t“dimen-Ž¦’ósions–4]in“ÌTFMŽ‘•|Ç les“and“other“fonš¾9t“ les“are“relativ˜e“to“thisŽ¦’óquan•¾9tit“y‘ÿ:«,‘„:whic“h–n is“alw•¾9a“ys›n pAÇositiv“e˜and˜less˜than˜2Ÿü-=¼27Ž‘ÕNÇ.‘&˜ItŽ¦’óis–½vgiv¾9en“in“the“same“units“as“the“other“dimensions“of“theŽ¦’óÌDVIŽ’Ç le.‘‰lP¾9arameter–äSÈd“Çis“similar“to“ÈsÇ;‘KÒit“is“the“\designŽ¦’ósize,"‘Z!and–L^(likš¾9e“ÈsÇ)“it“is“giv˜en“in“ÌDVIŽ‘Å~Çunits.‘ÁTh˜us,‘Z!fon˜t“ÈkŽ¦’óÇis–Tto“bAÇe“used“at“ÊmagŽ‘ðòÉ‘8Ès=Ç1000Èd“Çtimes“its“normal“size.Ž¦’ýThe–;¶remaining“part“of“a“fonš¾9t“de nition“giv˜es“the“exter-Ž¦’ónal–Ùname“of“the“fon•¾9t,‘åxwhic“h–Ùis“an“ASCIAÇI‘Ùqstring“of“lengthŽ¦’óÈa–bïÇ+“Èl&9Ç.‘™§The›”fn•¾9um“bAÇer˜Èa˜Çis˜the˜length˜of˜the˜\area"˜or˜di-Ž¦’órectory‘ÿ:«,‘»-and–šÈl‘À:Çis“the“length“of“the“fon¾9t“name“itself;‘ÜXtheŽ¦’óstandard–|lošAÇcal“system“fon¾9t“area“is“supp˜osed“to“b˜e“usedŽ¦’ówhen›]ÉÈa– ŠÇ=“0.‘õÐThe˜Èn˜Ç eld˜con¾9tains˜the˜area˜in˜its˜ rst˜ÈaŽ¦’óÇb¾9ytes.Ž¦’ýF‘ÿ:«onš¾9t–:çde nitions“m˜ust“appšAÇear“b˜efore“the“ rst“use“of“aŽ¦’óparticular–K4fonš¾9t“n˜um˜bAÇer.‘¾Once“fon˜t“Èk‘ŽÂÇis“de ned,‘X«it“m˜ustŽ¦’ónot–£‰bšAÇe“de ned“again;‘ê¤ho•¾9w“ev“er,‘Çw“e–£‰shall“see“b˜elo¾9w“thatŽ¦’ófon¾9t–?de nitions“appšAÇear“in“the“p˜ostamš¾9ble“as“w˜ell“as“inŽ¦’óthe–¤cpages,‘È&so“in“this“sense“eacš¾9h“fon˜t“n˜um˜bAÇer“is“de nedŽ¦’óexactly–óntš¾9wice,‘ú6if“at“all.‘#Lik˜e“ÊnopŽ‘”ƒÇcommands,‘ú6fon˜t“de ni-Ž¦’ótions–Þ¤can“appšAÇear“b˜efore“the“ rst“Êb‡opŽ‘!ŸÇ,‘é•or“b˜et•¾9w“een–Þ¤an“Êe‡opŽŽ¦’óÇand–Ta“Êb‡opŽ‘XOÇ.ŽŸ’óÐA.5Ž’#„The‘Õ9pQÇostam®9bleŽŸ’óÇThe–mUlast“page“in“a“ÌDVIŽ‘lÇ le“is“follo•¾9w“ed›mUb“y˜`Êp‡ostŽ‘$Ç';‘UthisŽ¦’ócommand–u^in¾9trošAÇduces“the“p˜ostam•¾9ble,‘awhic“h‘u^summarizesŽ¦’óimpAÇortanš¾9t–rºfacts“that“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘úúhas“accum˜ulated“abAÇout“theŽ¦’ó le,‘Émaking–þ&it“pAÇossible“to“prin¾9t“subsets“of“the“data“withŽ¦’óreasonable–Teciency‘ÿ:«.‘pThe“pAÇostam¾9ble“has“the“formŽ¤€Ÿôó1’A/Êp‡ostŽ’{ÈpÇ[4]‘TÊnumŽ‘ù×Ç[4]‘TÊdenŽ‘o)Ç[4]‘TÊmagŽ‘âºÇ[4]–TÈl&9Ç[4]“ÈuÇ[4]“ÈsÇ[2]“ÈtÇ[2]ŽŽ¦’A/Éh–ŠªÇfon¾9t‘Tde nitions“ÉiŽŽ¦’A/Êp•‡ost‘‘‰ffÕYŽ‘fip“ostŽ’*³>ÈqRªÇ[4]–TÈiÇ[1]“223'sŽ‘-[É‘‘ÆÇ4]ŽŽŽŽŽ¡’óHere–¾Èp“Çis“a“pAÇoin¾9ter“to“the“ nal“Êb‡opŽ‘TwÇin“the“ le.‘>The“nextŽ¦’óthree–³½parameters,‘ÇBÊnumŽ‘«ÅÇ,‘ÇBÊdenŽ‘!Ç,›ÇBand“ÊmagŽ‘#Ç,˜are“duplicates“ofŽ¦’óthe–Tquanš¾9tities“that“appAÇeared“in“the“pream˜ble.Ž¦’ýPš¾9arameters–4Èl‘ZOÇand“Èu“Çgiv˜e“respAÇectiv˜ely“the“heigh˜t-plus-Ž¦’ódepth–$?of“the“tallest“page“and“the“width“of“the“widestŽ¦’ópage,‘‘¶in–xÖthe“same“units“as“other“dimensions“of“the“ le.Ž¦’óThese›•õn•¾9um“bAÇers˜migh“t˜bAÇe˜used˜b“y˜a˜ÌDVIŽ‘·Ç-reading˜programŽ¦’óto–!€pAÇosition“individual“\pages"“on“large“sheets“of“ lm“orŽ¦’ópapAÇer;‘»úho•¾9w“ev“er,‘ 3the–„mstandard“con•¾9v“en“tion–„mfor“output“onŽ¦’ónormal–Ø_size“papšAÇer“is“to“p˜osition“eac¾9h“page“so“that“theŽ¦’óuppAÇer–PBleft-hand“corner“is“exactly“one“inc¾9h“from“the“leftŽ¦’óand–M¯the“top.‘Å‚ExpAÇerience“has“shoš¾9wn“that“it“is“un˜wiseŽ¦’óto–édesign“ÌDVIŽ‘G«Ç-to-prinš¾9ter“soft˜w˜are“that“attempts“clev˜erlyŽ¦’óto–¦Òcen¾9ter“the“output;‘ï‘a“ xed“pšAÇosition“of“the“upp˜er“leftŽ¦’ócorner–lNis“easiest“for“users“to“understand“and“to“w¾9orkŽ¦’ówith.‘pTherefore–TÈl‘;Çand“Èu“Çare“often“ignored.ŽŽŽŽŽŽŒ‹ð©P ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1008‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚‘ ÇPš¾9arameter–SÈs“Çis“the“maxim˜um“stac˜k“depth“(i.e.,‘¢€theŽ¤ largest–Å“excess“of“ÊpushŽ‘èÇcommands“o•¾9v“er‘Å“Êp‡opŽ‘GÇcommands)Ž¡needed–ƒto“proAÇcess“this“ le.‘ë°Then“comes“ÈtÇ,‘ Tthe“total“n¾9um-Ž¡bAÇer–Tof“pages“(Êb‡opŽ‘XOÇcommands)“presen¾9t.Ž¡‘ The– þpAÇostamš¾9ble“con˜tin˜ues“with“fon˜t“de nitions,‘#éwhic˜hŽ¡are–„anš¾9y“n˜um˜bšAÇer“of“Êfnt‘‘‰ffÕYŽ‘fidefŽ‘ ð0Çcommands“as“describ˜ed“ab˜o•¾9v“e,Ž¡p•AÇossibly›Mwin¾9tersp“ersed˜with˜ÊnopŽ‘H•Çcommands.‘ÄÙEac•¾9h˜fon“tŽ¡n•¾9um“bšAÇer–O|that“is“used“in“the“ÌDVIŽ‘輂 le“m¾9ust“b˜e“de ned“ex-Ž¡actly–§tš¾9wice:‘å”Once“bAÇefore“it“is“ rst“selected“b˜y“a“ÊfntŽ‘ºÒÇcom-Ž¡mand,–Tand“once“in“the“pAÇostam¾9ble.Ž©‘ The–Hzlast“part“of“the“pAÇostam•¾9ble,‘qsfollo“wing–Hzthe“Êp•‡ost‘‘‰ffÕYŽ‘fip“ostŽŽ¡Çbš¾9yte–Î8that“signi es“the“end“of“the“fon˜t“de nitions,‘üqcon-Ž¡tains–óÏÈqRªÇ,‘úƒa“pAÇoin¾9ter“to“the“Êp‡ostŽ‘ Çcommand“that“started“theŽ¡pAÇostam•¾9ble.‘µwAn›óiden“ti cation˜b“yte,–*lÈiÇ,“comes˜next;‘a×thisŽ¡currenš¾9tly–Tequals“2,“as“in“the“pream˜ble.Ž¡‘ The–+Èi“Çbš¾9yte“is“follo˜w˜ed“b˜y“four“or“more“b˜ytes“that“areŽ¡all–·—equal“to“the“decimal“n•¾9um“bšAÇer–·—223“(i.e.,‘ÊW‘þ&jÊ337Ž‘"´Çin“o˜ctal).Ž¡T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ¡Òputs–’out“four“to“sevš¾9en“of“these“trailing“b˜ytes,‘¢un˜tilŽ¡the– 6total“length“of“the“ le“is“a“mš¾9ultiple“of“four“b˜ytes,Ž¡since–Sthis“wš¾9orks“out“bAÇest“on“mac˜hines“that“pac˜k“fourŽ¡bš¾9ytes–zÎpAÇer“w˜ord;‘­‹but“an˜y“n˜um˜bAÇer“of“223's“is“allo˜w˜ed,‘”,asŽ¡long–Fòas“there“are“at“least“four“of“them.‘±KIn“e ect,‘SZ223“isŽ¡a–Tsort“of“signature“that“is“added“at“the“v¾9ery“end.Ž¡‘ This–¾vcurious“w•¾9a“y–¾vto“ nish“o “a“ÌDVIŽ‘©®Ç le“mak¾9es“it“feasi-Ž¡ble–¥õfor“ÌDVIŽ‘Ò·Ç-reading“programs“to“ nd“the“pAÇostam¾9ble“ rst,Ž¡on–¿most“computers,‘¨Ýevš¾9en“though“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ÿw˜an˜ts“to“write“theŽ¡pšAÇostam¾9ble–ÿlast.‘ÿMost“op˜erating“systems“p˜ermit“randomŽ¡access–híto“individual“wš¾9ords“or“b˜ytes“of“a“ le,‘}Ôso“the“ÌDVIŽŽ¡Çreader–Þ can“start“at“the“end“and“skip“bac•¾9kw“ards›Þ o“v“er˜theŽ¡223's–¯nunš¾9til“ nding“the“iden˜ti cation“b˜yte.‘ê½Then“it“canŽ¡bacš¾9k–Åùup“four“b˜ytes,›ò!read“ÈqRªÇ,˜and“mo•¾9v“e–Åùto“b¾9yte“Èq‘£Çof“theŽ¡ le.‘ryThis–‡Wb¾9yte“should,›£Øof“course,˜con¾9tain“the“v‘ÿ|ralue“248Ž¡(Êp‡ostŽ‘$Ç);‘˜ˆnoš¾9w–Z"the“pAÇostam˜ble“can“bAÇe“read,‘“so“the“ÌDVIŽ‘áÇreaderŽ¡disco•¾9v“ers–AÇall“the“information“needed“for“t¾9ypAÇesetting“theŽ¡pages.‘øNote–^„that“it“is“also“pAÇossible“to“skip“through“theŽ¡ÌDVIŽ‘®GÇ le–…at“reasonably“high“spšAÇeed“to“lo˜cate“a“particularŽ¡page,‘ƒ©if–m˜that“pro•¾9v“es–m˜desirable.‘%=This“sa•¾9v“es–m˜a“lot“of“time,Ž¡since‘TÌDVIŽ‘WjÇ les–Tused“in“prošAÇduction“jobs“tend“to“b˜e“large.ŽŸÐBŽ‘®2Generic–Õ9F›ÿ «on®9t“File“F˜ormatŽŸB.1Ž‘ŸöIn®9troQÇductionŽ¦ÇThe–`(most“impšAÇortan¾9t“output“pro˜duced“bš¾9y“a“t˜ypical“run“ofŽ¡¹METÇAFŽ9ONT–ÞµÇis“the“\generic“fon¾9t"“(ÌGFŽ‘ s,Ç)“ le“that“spAÇeci esŽ¡the–¼Ÿbit“patterns“of“the“cš¾9haracters“that“ha˜v˜e“bAÇeen“dra˜wn.Ž¡The–;fterm“ó]”q[˜ cmsl9ë]generic‘ÆnÇindicates“that“this“ le“format“doAÇesn'tŽ¡matcš¾9h–Gthe“con˜v˜en˜tions“of“an˜y“name-brand“man˜ufacturer;Ž¡but–¼jit“is“easy“to“con•¾9v“ert‘¼jÌGFŽ‘ìÇ les–¼jto“the“spAÇecial“format“re-Ž¡quired–rXbš¾9y“almost“all“digital“photot˜ypAÇesetting“equipmen˜t.Ž¡There's–¶.a“strong“analogy“bAÇet•¾9w“een–¶.the“ÌDVIŽ‘™Ç les“writtenŽ¡bš¾9y–¶T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ >Pand“the“ÌGFŽ‘ßLÇ les“written“b˜y“¹METÇAFŽ9ONTÇ;“and,‘ÉinŽ¡fact,–Tthe“ le“formats“ha•¾9v“e–Ta“lot“in“common.Ž¡‘ A‘æNÌGFŽ‘?ÿÇ le–æ…is“a“stream“of“8-bit“bš¾9ytes“that“ma˜y“bAÇe“re-Ž¡garded–æ¼as“a“series“of“commands“in“a“mac•¾9hine-lik“e‘æ¼lan-Ž¡guage.‘GThe–Ø rst“bš¾9yte“of“eac˜h“command“is“the“opAÇerationŽ¡cošAÇde,‘dJand–!Lthis“co˜de“is“follo•¾9w“ed›!Lb“y˜zero˜or˜more˜b“ytesŽ¡that–ö÷pro¾9vide“parameters“to“the“command.‘QThe“parame-Ž¡ters–™Ethemselvš¾9es“ma˜y“consist“of“sev˜eral“consecutiv˜e“b˜ytes;Ž¡for–[Âexample,‘€àthe“`Êb•‡o“cŽ‘ ?'Ç'“(bAÇeginning“of“c¾9haracter)“commandŽŽŽ ý‚’óhas–¡Isix“parameters,‘¸eacš¾9h“of“whic˜h“is“four“b˜ytes“long.‘õÂP˜a-Ž¤ ’órameters–ó–are“usually“regarded“as“nonnegativš¾9e“in˜tegers;Ž¡’óbut–^tfour-b¾9yte-long“parameters“can“bšAÇe“either“p˜ositiv¾9e“orŽ¡’ónegativ¾9e,‘Ÿøhence–‚ they“range“in“v‘ÿ|ralue“from“ÉÇ2Ÿü-=¼31Ž‘ WîÇto“2Ÿü-=¼31Ž‘¾É‘èÑÇ1.Ž¡’óAs–†Lin“ÌTFMŽ‘9ZÇ les,‘¢èn•¾9um“bšAÇers–†Lthat“o˜ccupš¾9y“more“than“one“b˜yteŽ¡’óp•AÇosition›)2app“ear˜in˜BigEndian˜order,‘.*and˜negativ•¾9e˜n“um-Ž¡’ób•AÇers›Tapp“ear˜in˜t•¾9w“o's˜complemen“t˜notation.Ž¡’ýA‘HhÌGFŽ‘Ç le–Hùconsists“of“a“\pream•¾9ble,"‘Õâfollo“w“ed›Hùb“y˜aŽ¡’ósequence–ú—of“one“or“more“\c•¾9haracters,"‘sçfollo“w“ed›ú—b“y˜aŽ¡’ó\pAÇostam•¾9ble."‘€ The›‹Ýpream“ble˜is˜simply˜a˜Êpr‡eŽ‘¤ Çcommand,Ž¡’ówith–Wits“parameters“that“inš¾9troAÇduce“the“ le;‘÷ßthis“m˜ustŽ¡’ócome–Ü rst.‘ëHEacš¾9h“\c˜haracter"“consists“of“a“Êb•‡o“cŽ‘BßÇcommand,Ž¡’ófollo•¾9w“ed›»lb“y˜an“y˜n“um“b•AÇer˜of˜other˜commands˜that˜sp“ecifyŽ¡’ó\blac•¾9k"›~pixels,‘Éfollo“w“ed˜b“y˜an˜Êe•‡o“cŽ‘t#Çcommand.‘+ïThe˜c“har-Ž¡’óacters–‡òappAÇear“in“the“order“that“¹METÇAFŽ9ONT“ÇgeneratedŽ¡’óthem.‘5@If–™wš¾9e“ignore“no-op“commands“(whic˜h“are“allo˜w˜edŽ¡’óbAÇet•¾9w“een›†an“y˜t“w“o˜commands˜in˜the˜ le),‘¢-eac“h˜Êe•‡o“cŽ‘K+Çcom-Ž¡’ómand–õùis“immediately“follo•¾9w“ed›õùb“y˜a˜Êb•‡o“cŽ‘+Çcommand,‘ü>or˜b“yŽ¡’óa‘ªKÊp‡ostŽ‘yÇcommand;‘ôÇin–ªKthe“latter“case,‘ωthere“are“no“moreŽ¡’ócš¾9haracters–)°in“the“ le,‘.Æand“the“remaining“b˜ytes“form“theŽ¡’ópšAÇostam¾9ble.‘OÅF‘ÿ:«urther–&pdetails“ab˜out“the“p˜ostam¾9ble“will“b˜eŽ¡’óexplained‘Tlater.Ž¡’ýSome–ZGparameters“in“ÌGFŽ‘'ºÇcommands“are“\pAÇoin¾9ters."Ž¡’óThese–ôÌare“four-bš¾9yte“quan˜tities“that“giv˜e“the“loAÇcationŽ¡’ón•¾9um“bAÇer–1tof“some“other“bš¾9yte“in“the“ le;‘?ƒthe“ rst“ le“b˜yteŽ¡’óis›Tn•¾9um“bAÇer˜0,˜then˜comes˜n“um“bAÇer˜1,˜and˜so˜on.ŽŸ’ýThe‘©ÌGFŽ‘ ¢~Çformat–©is“in¾9tended“to“bšAÇe“b˜oth“compact“and“eas-Ž¡’óily–Kinš¾9terpreted“b˜y“a“mac˜hine.‘VCompactness“is“ac˜hiev˜edŽ¡’óbš¾9y–Ámaking“most“of“the“information“relativ˜e“instead“ofŽ¡’óabsolute.‘Æ´When–øÀa“ÌGFŽ‘ kìÇ-reading“program“reads“the“com-Ž¡’ómands–hfor“a“cš¾9haracter,‘}[it“k˜eeps“trac˜k“of“t˜w˜o“quan˜tities:Ž¡’ó(a)–4othe“currenš¾9t“column“n˜um˜bAÇer,“ÈmÇ;‘Cýand“(b)“the“curren˜tŽ¡’óro•¾9w›|[n“um“bAÇer,˜ÈnÇ.‘Q„These˜are˜32-bit˜signed˜in“tegers,‘Öal-Ž¡’óthough–Ómost“actual“fon¾9t“formats“proAÇduced“from“ÌGFŽ‘®ÒÇ lesŽ¡’ówill–k[need“to“curtail“this“v‘ÿ|rast“range“bAÇecause“of“practicalŽ¡’ólimitations.‘çÊ(¹METÇAFŽ9ONT–waÇoutput“will“nevš¾9er“allo˜w“ÉjÈmÉj“ÇorŽ¡’óÉjÈnÉj– ‡Çto“get“extremely“large,‘Jbut“the“ÌGFŽ‘Œ:Çformat“tries“to“bAÇeŽ¡’ómore‘Tgeneral.)Ž¡’ýHoš¾9w–Fúdo“ÌGFŽ‘ º&Ç's“ro˜w“and“column“n˜um˜bšAÇers“corresp˜ond“toŽ¡’óthe›GAcon•¾9v“en“tions˜of˜T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ Ïand˜¹METÇAFŽ9ONTÇ?˜W‘ÿ:«ell,‘pythe˜\ref-Ž¡’óerence–bèpAÇoinš¾9t"“of“a“c˜haracter,›†—in“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@'s“view,˜is“consideredŽ¡’óto–{ÛbAÇe“at“the“lo•¾9w“er–{Ûleft“corner“of“the“pixel“in“ro¾9w“0“andŽ¡’ócolumn–Un0.‘ܽThis“pAÇoinš¾9t“is“the“in˜tersection“of“the“baselineŽ¡’ówith–Ñtthe“left“edge“of“the“t¾9ypšAÇe;‘èit“corresp˜onds“to“lo˜cationŽ¡’ó(0È;‘ŠªÇ0)–Äin“¹METÇAFŽ9ONT“Çprograms.‘ÁTh¾9us“the“pixel“in“ÌGFŽŽ¡’óÇro¾9w–+†0“and“column“0“is“¹METÇAFŽ9ONTÇ's“unit“square,‘1com-Ž¡’óprising–83the“region“of“the“plane“whose“cošAÇordinates“b˜oth“lieŽ¡’óbAÇet•¾9w“een–EÔ0“and“1.‘­ïThe“pixel“in“ÌGFŽ‘þÔÇro¾9w“Èn“Çand“column“ÈmŽ¡’óÇconsists–`of“the“pšAÇoin¾9ts“whose“¹METÇAFŽ9ONT“Çco˜ordinatesŽ¡’ó(Èx;‘ŠªyRªÇ)–(Fsatisfy“Èm–±YÉ“Èx“É“Èm–ÙÇ+“1–(Fand“Èn–±YÉ“Èy‘É“Èn–ÙÇ+“1.‘UFNega-Ž¡’ótiv¾9e–njv‘ÿ|ralues“of“Èm“Çand“Èx“ÇcorrespAÇond“to“columns“of“pixelsŽ¡’óë]left‘C¿Çof–Îthe“reference“pAÇoin•¾9t;‘”‹negativ“e–Îv‘ÿ|ralues“of“Èn“Çand“ÈyŽ¡’óÇcorrespšAÇond–Tto“ro¾9ws“of“pixels“ë]b˜elo¾9w‘ÛÇthe“baseline.Ž¡’ýBesides–ÎÈm“Çand“ÈnÇ,‘Zìthere's“also“a“third“aspAÇect“of“theŽ¡’ócurren¾9t–_;state,›qµnamely“the“Êp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘4ÑYÇ,˜whicš¾9h“is“alw˜a˜ysŽ¡’óeither‘%ÊblackŽ‘h–Çor‘%ÊwhiteŽ‘;¶Ç.‘äEac¾9h‘%Êp‡aintŽ‘†ÍÇcommand‘%adv‘ÿ|rancesŽ¡’óÈm–¨ãÇbš¾9y“a“spAÇeci ed“amoun˜t“ÈdÇ,‘ÍÆand“blac˜k˜ens“the“in˜terv˜en-Ž¡’óing–˜pixels“if“Êp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘7|Ç=‘‘ÆÊblackŽ‘ØÇ;‘then“the“Êp‡aint‘‘‰ffÕYŽ‘fiswitchŽŽŽŽŽŽŽŒ‹ñË7 ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1009ŽŽ œ ý‚Çc¾9hanges–æto“the“oppAÇosite“state.‘ŽËÌGFŽ‘÷Ç's“commands“are“de-Ž¤ signed–ooso“that“Èm“Çwill“nevš¾9er“decrease“within“a“ro˜w,‘…öandŽ¡Èn–„aÇwill“nevš¾9er“increase“within“a“c˜haracter;‘»çhence“there“isŽ¡no›Tw•¾9a“y˜to˜whiten˜a˜pixel˜that˜has˜bAÇeen˜blac“k“ened.ŽŸÐB.2Ž‘ŸöSummary–Õ9of“ÑGF“ÐcommandsŽŸÇHere– ¨is“a“list“of“all“the“commands“that“ma¾9y“appAÇear“in“aŽ¡ÌGFŽ‘ ZÇ le.‘ùEacš¾9h–«.command“is“spAÇeci ed“b˜y“its“sym˜bAÇolic“nameŽ¡(Êe.g.Ç,‘Â%Êb•‡o“cŽ‘LÇ),‘Â%its›­Yop•AÇco“de˜b¾9yte˜(Êe.g.Ç,–Â%67),“and˜its˜parametersŽ¡(if–*anš¾9y).‘ZyThe“parameters“are“follo˜w˜ed“b˜y“a“brac˜k˜etedŽ¡n•¾9um“bAÇer–=øtelling“hoš¾9w“man˜y“b˜ytes“they“oAÇccup˜y;‘RKfor“exam-Ž¡ple,–T`ÈdÇ[2]'“means“that“parameter“Èd“Çis“t•¾9w“o›Tb“ytes˜long.Ž© ÛnÊp‡aint‘‘‰ffÕYŽ‘fi0Ž‘ ö"Ç0Ž¡‘øThis–2Ôis“a“Êp‡aintŽ‘Ê+Çcommand“with“Èd–‘ÆÇ=“0;‘~Tit–2ÔdoAÇes“nothingŽ¡‘øbut–Ãc¾9hange“the“Êp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘7{¤Çfrom“ÊblackŽ‘OÒÇto“ÊwhiteŽ‘4ÇorŽ¡‘øvice‘Tv¾9ersa.Ž¦Êp‡aint‘‘‰ffÕYŽ‘fi1Ž‘ ö"Çthrough‘TÊp‡aint‘‘‰ffÕYŽ‘fi63Ž‘(Ä^Ç(op•AÇco“des–T1“to“63)Ž¡‘øThese–3‚are“Êp‡aintŽ‘ˇÇcommands“with“Èd–‘ÆÇ=“1–3‚to“63,‘`­de nedŽ¡‘øas–ò3folloš¾9ws:‘ ßIf“Êp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘6öÇ=‘‘ÆÊblackŽ‘ØÇ,‘ù9blac˜k˜en“Èd“ÇpixelsŽ¡‘øof–ðthe“currenš¾9t“ro˜w“ÈnÇ,‘&Éin“columns“Èm“Çthrough“Èm‘ Ç+Ž¡‘øÈd–;É“Ç1–Uinclusivš¾9e.‘pThen,‘ïin“an˜y“case,‘ïcomplemen˜t“theŽ¡‘øÊp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘GjÇand–Tadv‘ÿ|rance“Èm“Çb¾9y“ÈdÇ.Ž¦Êp‡aint1Ž‘¹Ç64‘ UPÈdÇ[1]Ž¡‘øThis–xQis“a“Êp‡aintŽ‘U%Çcommand“with“a“spAÇeci ed“v‘ÿ|ralue“of“ÈdÇ;Ž¡‘ø¹METÇAFŽ9ONT–TÇuses“it“to“pain¾9t“when“64–‘ÆÉ“Èd“<“Ç256.Ž¦Êp‡aint2Ž‘¹Ç65‘ UPÈdÇ[2]Ž¡‘øSame–Tas“Êp‡aint1Ž‘¹Ç,“but“Èd“Çcan“bAÇe“as“high“as“65535.Ž¦Êp‡aint3Ž‘¹Ç66‘ UPÈdÇ[3]Ž¡‘øSame–ìYas“Êp‡aint1Ž‘f¾Ç,‘"but“Èd“Çcan“bAÇe“as“high“as“2Ÿü-=¼24Ž‘ rßÉ‘‘Ç1.Ž¡‘ø¹METÇAFŽ9ONT–çyÇnev¾9er“needs“this“command,‘and“it“isŽ¡‘øhard–/to“imagine“an¾9yb•AÇo“dy–/making“practical“use“ofŽ¡‘øit;‘Ÿ§surely–6a“more“compact“encošAÇding“will“b˜e“desir-Ž¡‘øable–túwhen“c¾9haracters“can“bAÇe“this“large.‘;aBut“theŽ¡‘øcommand–Tis“there,“an•¾9yw“a“y‘ÿ:«,–Tjust“in“case.Ž¦Êb•‡o“cŽ‘A,Ç67‘ BÈcÇ[+4]–ÈpÇ[+4]“Êmin‘‘‰ffÕYŽ‘fimŽ‘»/Ç[+4]“Êmax‘‘‰ffÕYŽ‘fimŽ‘°†Ç[+4]“Êmin‘‘‰ffÕYŽ‘finŽ‘^ºÇ[+4]Ž¡‘$ÿðÊmax‘‘‰ffÕYŽ‘finŽ‘?QüÇ[+4]Ž¡‘øBeginning–×of“a“cš¾9haracter:‘)wHere“Èc“Çis“the“c˜haracterŽ¡‘øcošAÇde,‘ çand– Èp“Çp˜oinš¾9ts“to“the“previous“c˜haracter“bAÇegin-Ž¡‘øning–©l(if“anš¾9y)“for“c˜haracters“ha˜ving“this“coAÇde“n˜um-Ž¡‘øb•AÇer›Cmo“dulo˜256.‘ Ý=(The˜p“oin¾9ter˜Èp˜Çis˜ÉÇ1˜if˜thereŽ¡‘øwš¾9as–—‘no“prior“c˜haracter“with“an“equiv‘ÿ|ralen˜t“coAÇde.)Ž¡‘øThe–mlv‘ÿ|ralues“of“registers“Èm“Çand“Èn“Çde ned“b¾9y“the“in-Ž¡‘østructions–vïthat“folloš¾9w“for“this“c˜haracter“m˜ust“satisfyŽ¡‘øÊmin‘‘‰ffÕYŽ‘fimŽ‘2ÌÉ–תÈm“É“Êmax‘‘‰ffÕYŽ‘fimŽ‘$_Çand‘ØÝÊmin‘‘‰ffÕYŽ‘finŽ‘! <É“Èn“É“Êmax‘‘‰ffÕYŽ‘finŽ‘)¶Ç.Ž¡‘ø(The–—Qv‘ÿ|ralues“of“Êmax‘‘‰ffÕYŽ‘fimŽ‘'Ý#Çand“Êmin‘‘‰ffÕYŽ‘finŽ‘$‹WÇneed“not“bAÇeŽ¡‘øthe–Éätigh¾9test“bšAÇounds“p˜ossible.)‘:When“a“ÌGFŽ‘ =Ç-readingŽ¡‘øprogram–"sees“a“Êb•‡o“cŽ‘a(Ç,›¥+it“can“use“Êmin‘‘‰ffÕYŽ‘fimŽ‘ Û+Ç,˜Êmax‘‘‰ffÕYŽ‘fimŽ‘"S¬Ç,Ž¡‘øÊmin‘‘‰ffÕYŽ‘finŽ‘+Ü­Ç,‘»and‘fªÊmax‘‘‰ffÕYŽ‘finŽ‘#`Çto–fªinitialize“the“bAÇounds“of“anŽ¡‘øarra¾9y‘ÿ:«.‘$åThen–m{it“sets“Èm–$²É “Êmin‘‘‰ffÕYŽ‘fimŽ‘ÝÜÇ,›ƒ…Èn“É “Êmax‘‘‰ffÕYŽ‘finŽ‘v¾Ç,˜andŽ¡‘øÊp‡aint‘‘‰ffÕYŽ‘fiswitchŽ‘FƒÜÉ ‘‘ÆÊwhiteŽ‘¼WÇ.Ž¦Êb•‡o“c1Ž‘ÅÇ68‘ UPÈcÇ[1]‘TÊdel‘‘‰ffÕYŽ‘fimŽ‘ŽzÇ[1]‘TÊmax‘‘‰ffÕYŽ‘fimŽ‘ÃÕÇ[1]‘TÊdel‘‘‰ffÕYŽ‘finŽ‘2Ç[1]‘TÊmax‘‘‰ffÕYŽ‘finŽ‘g`Ç[1]Ž¡‘øSame–HYas“Êb•‡o“cŽ‘‡€Ç,‘Õbut“Èp“Çis“assumed“to“bAÇe“ÉÇ1;‘aÛalsoŽ¡‘øÊdel‘‘‰ffÕYŽ‘fimŽ‘.ŽÑÇ=‘•³Êmax‘‘‰ffÕYŽ‘fimŽ‘$ ËÉ‘Ü—Êmin‘‘‰ffÕYŽ‘fimŽ‘"à£Çand‘JâÊdel‘‘‰ffÕYŽ‘finŽ‘ýFÇ=‘•³Êmax‘‘‰ffÕYŽ‘finŽ‘!ÄVÉŽ¡‘øÊmin‘‘‰ffÕYŽ‘finŽ‘.×iÇare–ú¼giv¾9en“instead“of“Êmin‘‘‰ffÕYŽ‘fimŽ‘!®¢Çand“Êmin‘‘‰ffÕYŽ‘finŽ‘WqÇ.‘“TheŽ¡‘øone-bš¾9yte–/Wparameters“m˜ust“bšAÇe“b˜et•¾9w“een–/W0“and“255,Ž¡‘øinclusivš¾9e.‘¸Ç(This–º–abbreviated“Êb•‡o“cŽ‘´SÇsa˜v˜es“19“b˜ytes“pAÇerŽ¡‘øc¾9haracter,–Tin“common“cases.)ŽŽŽ ý‚’óÊe•‡o“cŽ’T{Ç69Ž¤ ’øEnd–ÈVof“cš¾9haracter:‘‚sAll“pixels“blac˜k˜ened“so“far“con-Ž¡’østitute–Ôbthe“pattern“for“this“c¾9haracter.‘ÊIn“particular,Ž¡’øa–¬ÿcompletely“blank“cš¾9haracter“migh˜t“ha˜v˜e“Êe•‡o“cŽ‘™%Çimme-Ž¡’ødiately–Tfollo¾9wing“Êb•‡o“cŽ‘T{Ç.Ž©’óÊskip0Ž’ EÇ70Ž¡’øDecrease–ÑzÈn“Çb¾9y“1“and“set“Èm– ±É “Êmin‘‘‰ffÕYŽ‘fimŽ‘'ÙÛÇ,Ž¡’øÊp‡aint‘‘‰ffÕYŽ‘fiswitchŽ’:†É ‘%pÊwhiteŽ‘PÇ.‘”((This–mí nishes“one“ro¾9w“andŽ¡’øbAÇegins–‹€another,‘© ready“to“whiten“the“leftmost“pixelŽ¡’øin–Tthe“new“ro¾9w.)Ž¦’óÊskip1Ž’ EÇ71‘ UPÈdÇ[1]Ž¡’øDecrease–ÂâÈn“Çb¾9y“Èd–,—Ç+“1,›.Eset‘ÂâÈm–]³É “Êmin‘‘‰ffÕYŽ‘fimŽ‘!ÝÇ,˜and‘ÂâsetŽ¡’øÊp‡aint‘‘‰ffÕYŽ‘fiswitchŽ’;~É ‘hÊwhiteŽ‘·ùÇ.‘®.This–Eéis“a“w•¾9a“y–Eéto“proAÇduceŽ¡’øÈd–TÇall-white“ro¾9ws.Ž¦’óÊskip2Ž’ EÇ72‘ UPÈdÇ[2]Ž¡’øSame–Tas“Êskip1Ž‘EÇ,“but“Èd“Çcan“bAÇe“as“large“as“65535.Ž¦’óÊskip3Ž’ EÇ73‘ UPÈdÇ[3]Ž¡’øSame–!ˆas“Êskip1Ž‘yÇ,‘d”but“Èd“Çcan“bAÇe“as“large“as“2Ÿü-=¼24Ž‘ –SÉ‘ÁÇ1.Ž¡’ø¹METÇAFŽ9ONT–TÇobš¾9viously“nev˜er“needs“this“command.Ž¦’óÊnew‘‘‰ffÕYŽ–fir‡ow‘‘‰ffÕYŽ“0Ž’!)Ç74Ž¡’øDecrease–ÑzÈn“Çb¾9y“1“and“set“Èm– ±É “Êmin‘‘‰ffÕYŽ‘fimŽ‘'ÙÛÇ,Ž¡’øÊp‡aint‘‘‰ffÕYŽ‘fiswitchŽ’:9É ‘GÊblackŽ‘MÇ.‘ä¹(This–‚ nishes“one“ro¾9w“andŽ¡’øbAÇegins–'³another,‘,Kready“to“ë]blac•¾9k“en–'³Çthe“leftmost“pixelŽ¡’øin–Tthe“new“ro¾9w.)Ž¦’óÊnew‘‘‰ffÕYŽ–fir‡ow‘‘‰ffÕYŽ“1Ž’!)Çthrough‘TÊnew‘‘‰ffÕYŽ–fir‡ow‘‘‰ffÕYŽ“164Ž‘:°+Ç(op•AÇco“des–T75“to“238)Ž¡’øSame–Ù¸as“Ênew‘‘‰ffÕYŽ–fir‡ow‘‘‰ffÕYŽ“0Ž‘/íkÇ,‘JÑbut“with“Èm–ƒÂÉ “Êmin‘‘‰ffÕYŽ‘fimŽ‘$x¼Ç+‘;Ð1Ž¡’øthrough‘TÊmin‘‘‰ffÕYŽ‘fimŽ‘ ܶÇ+‘8164,‘TrespAÇectiv¾9ely‘ÿ:«.Ž¦’óÊxxx1Ž’ H˜Ç239‘ UPÈk•CŽÇ[1]‘TÈxÇ[Èk“Ç]Ž¡’øThis–&fcommand“is“unde ned“in“general;‘.ïit“functionsŽ¡’øas–a“(ÈkaKÇ+½2)-b¾9yte“Êno‘‘‰ffÕYŽ‘fiopŽ‘&Çunless“spAÇecial“ÌGFŽ‘ CÇ-reading“pro-Ž¡’øgrams–ªRare“bAÇeing“used.‘Ûi¹METÇAFŽ9ONT“Çgenerates“ÊxxxŽŽ¡’øÇcommands–d%when“encoun¾9tering“a“ËspK¼ecial“Çstring;‘Ÿ5thisŽ¡’øošAÇccurs–]Ãin“the“ÌGFŽ‘.²Ç le“only“b˜et•¾9w“een‘]Ãc“haracters,‘oÞafterŽ¡’øthe–Npream¾9ble,‘\Pand“bšAÇefore“the“p˜ostam•¾9ble.‘ÆÌHo“w“ev“er,Ž¡’øÊxxxŽ’Ô»Çcommands–úðmighš¾9t“appAÇear“an˜ywhere“in“ÌGFŽ‘i Ç lesŽ¡’øgenerated–¬fb¾9y“other“proAÇcessors.‘á§It“is“recommendedŽ¡’øthat–ºdÈx“ÇbAÇe“a“string“haš¾9ving“the“form“of“a“k˜eyw˜ord“fol-Ž¡’ølo•¾9w“ed›g~b“y˜pAÇossible˜parameters˜relev‘ÿ|ran“t˜to˜that˜k“ey-Ž¡’øw¾9ord.Ž¦’óÊxxx2Ž’ H˜Ç240‘ UPÈk•CŽÇ[2]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘TÊxxx1Ž‘H˜Ç,–Tbut“0–‘ÆÉ“Èk‘ÕT<“Ç65536.Ž¦’óÊxxx3Ž’ H˜Ç241‘ UPÈk•CŽÇ[3]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘…ôÊxxx1Ž‘¹8Ç,‘âbut›…ô0–ø%É“Èk‘;³<“Ç2Ÿü-=¼24Ž‘ÕNÇ.‘nO¹METÇAFŽ9ONT˜ÇusesŽ¡’øthis–‰ywhen“sending“a“ËspK¼ecial“Çstring“whose“lengthŽ¡’øexceeds‘T255.Ž¦’óÊxxx4Ž’ H˜Ç242‘ UPÈk•CŽÇ[4]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘6zÊxxx1Ž‘i¾Ç,‘c but–6zÈk›zÇcan“bAÇe“ridiculously“large;‘€ÃÈk˜Çm¾9ustn'tŽ¡’øbAÇe‘Tnegativ¾9e.Ž¦’óÊyyyŽ’ÐíÇ243‘ UPÈyRªÇ[+4]Ž¡’øThis–&fcommand“is“unde ned“in“general;‘.ïit“functionsŽ¡’øas–í•a“5-b¾9yte“Êno‘‘‰ffÕYŽ‘fiopŽ‘!¨"Çunless“spAÇecial“ÌGFŽ‘`ÁÇ-reading“pro-Ž¡’øgrams–æÁare“bAÇeing“used.‘ ¸¹METÇAFŽ9ONT“Çputs“Êsc•‡ale“dŽŽ¡’øÇn•¾9um“bAÇers›YØin“to˜ÊyyyŽ‘qÇ's,‘Xas˜a˜result˜of˜Ën´CumspK¼ecial˜Çcom-Ž¡’ømands;‘ë»the›Öïin•¾9ten“t˜is˜to˜pro“vide˜n“umeric˜parametersŽ¡’øto‘TÊxxxŽ‘„{Çcommands–Tthat“immediately“precede.ŽŽŽŽŽŽŒ‹òîÖ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1010‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Êno‘‘‰ffÕYŽ‘fiopŽ‘âLÇ244Ž¤ ‘øNo–vopAÇeration,‘ŽÞdo“nothing.‘@!Anš¾9y“n˜um˜bAÇer“of“Êno‘‘‰ffÕYŽ‘fiopŽ‘C‡Ç'sŽ¡‘øma¾9y–žÛošAÇccur“b˜et•¾9w“een‘žÛÌGFŽ‘°âÇcommands,‘¶Žbut–žÛa“Êno‘‘‰ffÕYŽ‘fiopŽ‘ ®Çcan-Ž¡‘ønot–»3bšAÇe“inserted“b˜et•¾9w“een–»3a“command“and“its“param-Ž¡‘øeters–Tor“bAÇet•¾9w“een›Tt“w“o˜parameters.Ž©  Êchar‘‘‰ffÕYŽ‘filo‡cŽ‘#çeÇ245‘ UPÈcÇ[1]‘TÊdxŽ‘  ëÇ[+4]‘TÊdyŽ‘ ëÇ[+4]–TÈw>Ç[+4]“ÈpÇ[+4]Ž¡‘øThis–¶“command“will“appšAÇear“only“in“the“p˜ostam¾9ble,Ž¡‘øwhic¾9h–Twill“bAÇe“explained“shortly‘ÿ:«.Ž¦Êchar‘‘‰ffÕYŽ‘filo‡c0Ž‘)WòÇ246‘ UPÈcÇ[1]‘TÊdmŽ‘‹šÇ[1]–TÈw>Ç[+4]“ÈpÇ[+4]Ž¡‘øSame–P7as“Êchar‘‘‰ffÕYŽ‘filo‡cŽ‘$"HÇ,‘^ðexcept“that“ÊdyŽ‘Çis“assumed“to“bAÇeŽ¡‘øzero,‘Û¿and–ÍYthe“v‘ÿ|ralue“of“ÊdxŽ‘&IÇis“tak¾9en“to“bAÇe“65536–~BÉ“ÊdmŽ‘ôˆÇ,Ž¡‘øwhere‘T0–‘ÆÉ“ÊdmŽ‘™ÒÈ<“Ç256.Ž¦Êpr‡eŽ‘¡¤Ç247‘ UPÈiÇ[1]–TÈkšCŽÇ[1]“ÈxÇ[Èk˜Ç]Ž¡‘øBeginning–´êof“the“preamš¾9ble;‘µthis“m˜ust“come“at“theŽ¡‘øvš¾9ery–ŽâbAÇeginning“of“the“ le.‘‰P˜arameter“Èi“Çis“an“iden-Ž¡‘øtifying›õn•¾9um“bAÇer˜for˜ÌGFŽ‘]8Çformat,‘,ócurren“tly˜131.‘»‡TheŽ¡‘øother–̨information“is“merely“commen¾9tary;‘(Rit“is“notŽ¡‘øgivš¾9en–ɽspAÇecial“in˜terpretation“lik˜e“ÊxxxŽ‘íMÇcommands“are.Ž¡‘ø(Note–<»that“ÊxxxŽ‘ÓIÇcommands“maš¾9y“immediately“follo˜wŽ¡‘øthe–Tpream¾9ble,“bAÇefore“the“ rst“Êb•‡o“cŽ‘T{Ç.)Ž¦Êp‡ostŽ‘9ÓÇ248Ž¡‘øBeginning–Tof“the“pšAÇostam¾9ble,“see“b˜elo¾9w.Ž¦Êp•‡ost‘‘‰ffÕYŽ‘fip“ostŽ‘'rÇ249Ž¡‘øEnding–Tof“the“pšAÇostam¾9ble,“see“b˜elo¾9w.Ž¦Commands–T250{255“are“unde ned“at“the“presen¾9t“time.ŽŸÐB.3Ž‘ŸöThe‘Õ9pQÇostam®9bleŽŸÇThe–4 last“cš¾9haracter“in“a“ÌGFŽ‘ÛBÇ le“is“follo˜w˜ed“b˜y“`Êp‡ostŽ‘$Ç';‘CfthisŽ¡command–u^in¾9trošAÇduces“the“p˜ostam•¾9ble,‘awhic“h‘u^summarizesŽ¡impAÇortanš¾9t–/Ìfacts“that“¹METÇAFŽ9ONT“Çhas“accum˜ulated.‘ÏíTheŽ¡pAÇostam¾9ble–Thas“the“formŽ© Ÿïs1‘rÊp‡ostŽ‘$«èÈpÇ[4]‘TÊdsŽ‘ ÉÍÇ[4]‘TÊcsŽ‘ PéÇ[4]‘TÊhpppŽ‘Ç[4]‘TÊvpppŽ‘ŠÇ[4]‘TÊmin‘‘‰ffÕYŽ‘fimŽ‘Î~Ç[+4]ŽŽ¡‘"ò Êmax‘‘‰ffÕYŽ‘fimŽ‘? ŽÇ[+4]‘TÊmin‘‘‰ffÕYŽ‘finŽ‘r Ç[+4]‘TÊmax‘‘‰ffÕYŽ‘finŽ‘g`Ç[+4]ŽŽ¡‘rÉh–ŠªÇc¾9haracter‘TloAÇcators“ÉiŽŽ¡‘rÊp•‡ost‘‘‰ffÕYŽ‘fip“ostŽ‘7ä$ÈqRªÇ[4]–TÈiÇ[1]“223'sŽ‘-[É‘‘ÆÇ4]ŽŽŽŽŽ¦Here–ÉÈp“Çis“a“pAÇoinš¾9ter“to“the“b˜yte“follo˜wing“the“ nal“Êe•‡o“cŽ‘D¹ÇinŽ¡the–‘J le“(or“to“the“bš¾9yte“follo˜wing“the“pream˜ble,‘°Hif“thereŽ¡are–ʦno“c¾9haracters);‘%Oit“can“bšAÇe“used“to“lo˜cate“the“b˜egin-Ž¡ning–ƒof“ÊxxxŽ‘_ïÇcommands“that“mighš¾9t“ha˜v˜e“preceded“theŽ¡pAÇostam•¾9ble.‘3ŸThe‘ǹÊdsŽ‘CëÇand‘ǹÊcsŽ‘ËÇparameters›ǹgiv“e˜the˜designŽ¡size–€5and“c•¾9hec“k‘€5sum,›šîrespAÇectiv“ely‘ÿ:«,˜whic“h–€5are“exactly“theŽ¡v‘ÿ|ralues–Ñ–put“inš¾9to“the“header“of“an˜y“ÌTFMŽ‘ÏîÇ le“that“shares“in-Ž¡formation–g)with“this“ÌGFŽ‘A~Ç le.‘ïP¾9arameters“ÊhpppŽ‘»þÇand“ÊvpppŽŽ¡Çare–…¿the“ratios“of“pixels“pšAÇer“p˜oin•¾9t,‘¡Ùhorizon“tally–…¿and“v¾9er-Ž¡tically‘ÿ:«,›expressed–×zas“Êsc•‡ale“dŽ‘ 7éÇin¾9tegers“(i.e.,˜mš¾9ultiplied“b˜yŽ¡2Ÿü-=¼16Ž‘ÕNÇ);‘åßthey–Î%can“bšAÇe“used“to“correlate“the“fon¾9t“with“sp˜eci cŽ¡device›resolutions,–Ymagni cations,“and˜\at˜sizes."‘]ThenŽ¡come‘-ÿÊmin‘‘‰ffÕYŽ‘fimŽ‘ç)Ç,‘4)Êmax‘‘‰ffÕYŽ‘fimŽ‘âªÇ,‘4)Êmin‘‘‰ffÕYŽ‘finŽ‘ÞÇ,–4)and‘-ÿÊmax‘‘‰ffÕYŽ‘finŽ‘€ Ç,“whic¾9h‘-ÿbAÇoundŽ¡the–Pv‘ÿ|ralues“that“registers“Èm“Çand“Èn“Çassume“in“all“c¾9harac-Ž¡ters–-in“this“ÌGFŽ‘ÍfÇ le.‘cË(These“bšAÇounds“need“not“b˜e“the“b˜estŽ¡pAÇossible;‘ ¹Êmax‘‘‰ffÕYŽ‘fimŽ‘"¼&Çand‘ìÊmin‘‘‰ffÕYŽ‘finŽ‘dÇma¾9y‘ÿ:«,›gon–ìthe“other“hand,˜bAÇeŽ¡tigh¾9ter–¸than“the“similar“bAÇounds“in“Êb•‡o“cŽ‘`—Çcommands.‘ŽF‘ÿ:«orŽ¡example,‘ñMsome–èLcš¾9haracter“ma˜y“ha˜v˜e“Êmin‘‘‰ffÕYŽ‘finŽ‘ÖÇÇ=‘‘ÆÉÇ100“in“itsŽ¡Êb•‡o“cŽ‘ ?'Ç,‘9‘‘ÆÊmax‘‘‰ffÕYŽ‘fimŽ‘"U›Çand/or˜Êmin‘‘‰ffÕYŽ‘finŽ‘ÏÈ>‘‘ÆÊmax‘‘‰ffÕYŽ‘finŽ‘ãÒÇ.)ŽŽŽ ý‚’ýCharacter–A‚lošAÇcators“are“in¾9tro˜duced“b¾9y“Êchar‘‘‰ffÕYŽ‘filo‡cŽ‘)UÇcom-Ž¤ ’ómands,‘žOwhicš¾9h–€spAÇecify“a“c˜haracter“residue“ÈcÇ,‘žOc˜haracter“es-Ž¡’ócapAÇemenš¾9ts–;“(ÊdxŽ‘ ‹—È;‘ŠªÊdyŽ‘ AÇ),‘g!a“c˜haracter“width“Èw>Ç,‘g!and“a“pAÇoin˜ter“ÈpŽ¡’óÇto–Ÿ the“bAÇeginning“of“that“cš¾9haracter.‘õ (If“t˜w˜o“or“more“c˜har-Ž¡’óacters›«ha•¾9v“e˜the˜same˜co•AÇde˜Èc˜Çmo“dulo˜256,‘Ђonly˜the˜lastŽ¡’ówill–Û bšAÇe“indicated;‘îwthe“others“can“b˜e“lo˜cated“bš¾9y“follo˜wingŽ¡’óbac•¾9kpšAÇoin“ters.‘óžCharacters–²cwhose“co˜des“di er“bš¾9y“a“m˜ul-Ž¡’ótiple–ˆºof“256“are“assumed“to“share“the“same“fon¾9t“metricŽ¡’óinformation,‘žhence–°the“ÌTFMŽ‘0"Ç le“con¾9tains“only“residues“ofŽ¡’óc¾9haracter–9°cošAÇdes“mo˜dulo“256.‘Ó9This“con•¾9v“en“tion–9°is“in¾9tendedŽ¡’ófor–Rorienš¾9tal“languages,‘;when“there“are“man˜y“c˜haracterŽ¡’óshapAÇes–Tbut“few“distinct“widths.)Ž¡’ýThe–1Acš¾9haracter“escapAÇemen˜ts“(ÊdxŽ‘ ‹—È;‘ŠªÊdyŽ‘ AÇ)“are“the“v‘ÿ|ralues“ofŽ¡’ó¹METÇAFŽ9ONTÇ's–µÜËcš´Chardx“Çand“Ëc˜hardy‘ÛºÇparameters;‘†!theyŽ¡’óare–±min“units“of“Êsc•‡ale“dŽ‘!ëÏÇpixels;‘zi.e.,‘sÊdxŽ‘UwÇis“in“horizon¾9talŽ¡’ópixel–¼units“times“2Ÿü-=¼16Ž‘ÕNÇ,‘AÕand“ÊdyŽ‘‡Çis“in“v¾9ertical“pixel“unitsŽ¡’ótimes–$2Ÿü-=¼16Ž‘ÕNÇ.‘JThis“is“the“inš¾9tended“amoun˜t“of“displacemen˜tŽ¡’óafter–ƒëtš¾9ypAÇesetting“the“c˜haracter;‘»6for“ÌDVIŽ‘4˜Ç les,‘ŸÊdyŽ‘ŸÇshouldŽ¡’óbšAÇe–e«zero,‘yÀbut“other“do˜cumenš¾9t“ le“formats“allo˜w“nonzeroŽ¡’óv•¾9ertical‘TescapAÇemen“t.Ž¡’ýThe–\c¾9haracter“width“Èw‘šÇduplicates“the“information“inŽ¡’óthe‘ÙÌTFMŽ‘ÞÈÇ le;‘íit–Ùis“2Ÿü-=¼24Ž‘ ®QÇtimes“the“ratio“of“the“true“width“toŽ¡’óthe–Tfon¾9t's“design“size.Ž¡’ýThe›/con-Ž¡’ótains–óÏÈqRªÇ,‘úƒa“pAÇoin¾9ter“to“the“Êp‡ostŽ‘ Çcommand“that“started“theŽ¡’ópAÇostam•¾9ble.‘µwAn›óiden“ti cation˜b“yte,–*lÈiÇ,“comes˜next;‘a×thisŽ¡’ócurrenš¾9tly–Tequals“131,“as“in“the“pream˜ble.Ž¡’ýThe–+Èi“Çbš¾9yte“is“follo˜w˜ed“b˜y“four“or“more“b˜ytes“that“areŽ¡’óall–‡equal“to“the“decimal“n•¾9um“bAÇer–‡223“(i.e.,‘D}ÌDFŽ‘^ÄÇin“hex-Ž¡’óadecimal).‘‚ ¹METÇAFŽ9ONT–72Çputs“out“four“to“sev¾9en“of“theseŽ¡’ótrailing›œTb•¾9ytes,‘´ˆun“til˜the˜total˜length˜of˜the˜ le˜is˜a˜m“ulti-Ž¡’óple–#Çof“four“bš¾9ytes,‘'dsince“this“w˜orks“out“bAÇest“on“mac˜hinesŽ¡’óthat–'pacš¾9k“four“b˜ytes“pAÇer“w˜ord;‘ ábut“an˜y“n˜um˜bAÇer“of“223'sŽ¡’óis›¿allo•¾9w“ed,‘Cas˜long˜as˜there˜are˜at˜least˜four˜of˜them.‘”InŽ¡’óe ect,‘¨T223–is“a“sort“of“signature“that“is“added“at“the“v¾9eryŽ¡’óend.Ž¡’ýThis–,mcurious“w•¾9a“y–,mto“ nish“o “a“ÌGFŽ‘ÌÇ le“mak¾9es“it“feasi-Ž¡’óble–=(for“ÌGFŽ‘ °TÇ-reading“programs“to“ nd“the“pAÇostam¾9ble“ rst,Ž¡’óon–2$most“computers,‘9Xevš¾9en“though“¹METÇAFŽ9ONT“Çw˜an˜ts“toŽ¡’ówrite–šthe“pšAÇostam¾9ble“last.‘ª¬Most“op˜erating“systems“p˜er-Ž¡’ómit–Ðèrandom“access“to“individual“wš¾9ords“or“b˜ytes“of“a“ le,Ž¡’óso–„the“ÌGFŽ‘{ZÇreader“can“start“at“the“end“and“skip“bac•¾9kw“ardsŽ¡’óo•¾9v“er–šžthe“223's“unš¾9til“ nding“the“iden˜ti cation“b˜yte.‘ó‰ThenŽŽŽŽŽŽŒ‹ós ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1011ŽŽ œ ý‚Çit–óÒcan“bacš¾9k“up“four“b˜ytes,›ú†read“ÈqRªÇ,˜and“mo•¾9v“e–óÒto“b¾9yte“Èq‘F|ÇofŽ¤ the–ž$ le.‘¶áThis“b¾9yte“should,›ÀXof“course,˜con¾9tain“the“v‘ÿ|ralueŽ¡248–ïc(Êp‡ostŽ‘$Ç);‘\knoš¾9w“the“pAÇostam˜ble“can“bAÇe“read,‘%æso“the“ÌGFŽŽ¡Çreader–Võcan“disco•¾9v“er–Võall“the“information“needed“for“indi-Ž¡vidual‘Tc¾9haracters.ŽŸÐCŽ‘Î2P•®9ac“k“ed–Õ9File“F‘ÿ «ormatŽŸC.1Ž‘¿öIn®9troQÇductionŽ©ÇThe›$Opac•¾9k“ed˜ le˜format˜is˜a˜compact˜represen“tation˜ofŽ¡the– data“con¾9tained“in“a“ÌGFŽ‘…fÇ le.‘÷ÊThe“information“con-Ž¡tenš¾9t–ÉÂis“the“same,‘Øàbut“pac˜k˜ed“(ÌPKŽ‘ s,Ç)“ les“are“almost“alw˜a˜ysŽ¡less–¢Xthan“half“the“size“of“their“ÌGFŽ‘·ÜÇcoun¾9terparts.‘öThey“areŽ¡also–Eeasier“to“con•¾9v“ert›Ein“to˜a˜raster˜represen“tation˜bAÇecauseŽ¡they–WÄdo“not“ha•¾9v“e–WÄa“profusion“of“Êp‡aintŽ‘¼GÇ,‘}®ÊskipŽ‘Ç,‘}®and“Ênew‘‘‰ffÕYŽ‘fir‡owŽŽ¡Çcommands–‰]to“bAÇe“separately“in¾9terpreted.‘íÈIn“addition,‘¥\theŽ¡ÌPKŽ‘ ]Çformat–™1expressedly“forbids“ËspK¼ecial“Çcommands“withinŽ¡a–ôJcš¾9haracter.‘mThe“minim˜um“bšAÇounding“b˜oš¾9x“for“eac˜h“c˜har-Ž¡acter–UÊis“explicit“in“the“format,‘eèand“došAÇes“not“need“to“b˜eŽ¡scanned–/for“as“in“the“ÌGFŽ‘ÑjÇformat.‘iÑFinally‘ÿ:«,‘5’the“width“andŽ¡escapAÇemenš¾9t–óŽv‘ÿ|ralues“are“com˜bined“with“the“raster“infor-Ž¡mation–.inš¾9to“c˜haracter“\pac˜k˜ets,"‘tßmaking“it“simpler“inŽ¡manš¾9y–Tcases“to“proAÇcess“a“c˜haracter.Ž¡‘ A‘“™ÌPKŽ‘šÇ le–“ºis“organized“as“a“stream“of“8-bit“b•¾9ytes.‘—¢A“tŽ¡times,‘¸these–ç>bš¾9ytes“migh˜t“bAÇe“split“in˜to“4-bit“n˜ybbles“orŽ¡single–€bits,‘š«or“comš¾9bined“in˜to“m˜ultiple“b˜yte“parameters.Ž¡When–Ìþbš¾9ytes“are“split“in˜to“smaller“pieces,‘Ûuthe“` rst'“pieceŽ¡is›'alw•¾9a“ys˜the˜most˜signi can“t˜of˜the˜b“yte.‘S#F‘ÿ:«or˜instance,Ž¡the–#9 rst“bit“of“a“b¾9yte“is“the“bit“with“v‘ÿ|ralue“128;‘*,the“ rstŽ¡nš¾9ybble–¨ƒcan“bAÇe“found“b˜y“dividing“a“b˜yte“b˜y“16.‘ø*Similarly‘ÿ:«,Ž¡when–£êbš¾9ytes“are“com˜bined“in˜to“m˜ultiple“b˜yte“parameters,Ž¡the–æ rst“bš¾9yte“is“the“most“signi can˜t“of“the“parameter.Ž¡If–Hêthe“parameter“is“signed,‘•Ðit“is“represenš¾9ted“b˜y“t˜w˜o's-Ž¡complemen¾9t‘Tnotation.Ž¡‘ The–¬‚set“of“pAÇossible“eighš¾9t-bit“v‘ÿ|ralues“is“separated“in˜toŽ¡t•¾9w“o–f?sets,‘‰Dthose“that“inš¾9troAÇduce“a“c˜haracter“de nition,‘‰DandŽ¡those– that“do“not.‘ê_The“v‘ÿ|ralues“that“inš¾9troAÇduce“a“c˜haracterŽ¡de nition–‡range“from“0“to“239;‘¶Çbš¾9yte“v‘ÿ|ralues“abAÇo˜v˜e“239“areŽ¡inš¾9terpreted–'[as“commands.‘R…Bytes“that“in˜troAÇduce“c˜harac-Ž¡ter–@Æde nitions“are“called“ ag“b¾9ytes,‘‹¢and“v‘ÿ|rarious“ eldsŽ¡within–ìOthe“bš¾9yte“indicate“v‘ÿ|rarious“things“abAÇout“ho˜w“theŽ¡cš¾9haracter– Ode nition“is“encoAÇded.‘aCommand“b˜ytes“ha˜v˜eŽ¡zero–£hor“more“parameters,‘Æìand“can“nev¾9er“appAÇear“withinŽ¡a–zcš¾9haracter“de nition“or“bAÇet˜w˜een“parameters“of“anotherŽ¡command,–Twhere“they“wš¾9ould“bAÇe“in˜terpAÇeted“as“data.Ž¡‘ A‘œ±ÌPKŽ‘¬óÇ le–consists“of“a“pream•¾9ble,‘ÿfollo“w“ed›b“y˜a˜se-Ž¡quence–üof“one“or“more“cš¾9haracter“de nitions,‘ƒfollo˜w˜ed“b˜yŽ¡a–.”pAÇostamš¾9ble.‘h/The“pream˜ble“command“m˜ust“bAÇe“the“ rstŽ¡bš¾9yte–ëBin“the“ le,‘ó­follo˜w˜ed“immediately“b˜y“its“parameters.Ž¡An•¾9y›Un“um“bAÇer˜of˜c“haracter˜de nitions˜ma“y˜follo“w,‘{‰and˜an“yŽ¡command–G‘but“the“pream¾9ble“command“and“the“pAÇostam-Ž¡ble–„¯command“ma¾9y“ošAÇccur“b˜et•¾9w“een›„¯c“haracter˜de nitions.Ž¡The–`vš¾9ery“last“command“in“the“ le“m˜ust“bšAÇe“the“p˜ostam-Ž¡ble.Ž¦‘ The›ƒpac•¾9k“ed˜ le˜format˜is˜in“tended˜to˜bAÇe˜easy˜to˜readŽ¡and–övinš¾9terpret“b˜y“device“driv˜ers.‘¿×The“small“size“of“theŽ¡ le–Jreduces“the“input/output“o•¾9v“erhead›Jeac“h˜time˜a˜fon“tŽ¡is–ˆƒloaded.‘uþF‘ÿ:«or“those“drivš¾9ers“that“load“and“sa˜v˜e“eac˜hŽ¡fonš¾9t–p le“in˜to“memory‘ÿ:«,‘@7the“small“size“also“helps“reduceŽŽŽ ý‚’óthe–àîmemory“requiremenš¾9ts.‘ ùThe“length“of“eac˜h“c˜haracterŽ¤ ’ópac•¾9k“et–èois“spAÇeci ed,‘ñjalloš¾9wing“the“c˜haracter“raster“data“toŽ¡’óbAÇe–¯ãloaded“inš¾9to“memory“b˜y“simply“coun˜ting“b˜ytes,‘Ä-ratherŽ¡’óthan–ä©inš¾9terpreting“eac˜h“command;‘LTthen,‘~eac˜h“c˜haracterŽ¡’ócan–DþbAÇe“inš¾9terpreted“on“a“demand“basis.‘ÖþThis“also“mak˜es“itŽ¡’ópAÇossible– Lfor“a“drivš¾9er“to“skip“a“particular“c˜haracter“quic˜klyŽ¡’óif–Tit“knoš¾9ws“that“the“c˜haracter“is“un˜used.ŽŸ’óÐC.2Ž’¿öSummary–Õ9of“ÑPK“ÐcommandsŽŸ’óÇFirst,‘\Sthe–.command“bš¾9ytes“will“bAÇe“presen˜ted;‘{(then“the“for-Ž¡’ómat–¤Èof“the“cš¾9haracter“de nitions“will“bAÇe“de ned.‘öìEigh˜t“ofŽ¡’óthe– .pAÇossible“sixteen“commands“(v‘ÿ|ralues“240“through“255)Ž¡’óare–Fâcurrenš¾9tly“de ned;‘_©the“others“are“reserv˜ed“for“futureŽ¡’óextensions.›The–±commands“are“listed“bAÇelo•¾9w.˜Eac“h‘±com-Ž¡’ómand–Ù¤is“spAÇeci ed“bš¾9y“its“sym˜bAÇolic“name“(Êe.g.Ç,‘å”Êpk‘‘‰ffÕYŽ–fino‘‘‰ffÕYŽ“opŽ‘'áÇ),Ž¡’óits›Òîop•AÇco“de˜b•¾9yte,‘Tand˜an“y˜parameters.‘U>The˜parametersŽ¡’óare›'follo•¾9w“ed˜b“y˜a˜brac“k“eted˜n“um“bAÇer˜telling˜ho“w˜man“yŽ¡’óbš¾9ytes–*×they“oAÇccup˜y‘ÿ:«,‘07with“the“n˜um˜bAÇer“preceded“b˜y“a“plusŽ¡’ósign–Bif“it“is“a“signed“quan•¾9tit“y–ÿ:«.‘¢Â(F“our–Bbš¾9yte“quan˜tities“areŽ¡’óalw•¾9a“ys–Tsigned,“ho•¾9w“ev“er.)Ž© Ûn’óÊpk‘‘‰ffÕYŽ‘fixxx1Ž’§íÇ240‘ UPÈk•CŽÇ[1]‘TÈxÇ[Èk“Ç]Ž¡’øThis–&fcommand“is“unde ned“in“general;‘.ïit“functionsŽ¡’øas–Kca“(Èk‘ {Ç+‘Üí2)-b¾9yte“Êno‘‘‰ffÕYŽ‘fiopŽ‘ c¾Çunless“spAÇecial“ÌPKŽ‘ ¾Ç-readingŽ¡’øprograms–SÎare“bAÇeing“used.‘×ݹMETÇAFŽ9ONT“ÇgeneratesŽ¡’øÊxxxŽ’a„Çcommands–‡¹when“encoun¾9tering“a“ËspK¼ecial“Çstring.Ž¡’øIt–Mis“recommended“that“Èx“ÇbAÇe“a“string“ha¾9ving“theŽ¡’øform–T1of“a“k•¾9eyw“ord›T1follo“w“ed˜b“y˜pAÇossible˜parametersŽ¡’ørelev‘ÿ|ranš¾9t–Tto“that“k˜eyw˜ord.Ž¦’óÊpk‘‘‰ffÕYŽ‘fixxx2Ž’§íÇ241‘ UPÈk•CŽÇ[2]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘TÊpk‘‘‰ffÕYŽ‘fixxx1Ž‘"§íÇ,–Tbut“0–‘ÆÉ“Èk‘ÕT<“Ç65536.Ž¦’óÊpk‘‘‰ffÕYŽ‘fixxx3Ž’§íÇ242‘ UPÈk•CŽÇ[3]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘¢\Êpk‘‘‰ffÕYŽ‘fixxx1Ž‘#4õÇ,‘Åžbut›¢\0–|ÓÉ“Èk‘Àa<“Ç2Ÿü-=¼24Ž‘ÕNÇ.‘ȹMETÇAFŽ9ONT˜ÇusesŽ¡’øthis–‰ywhen“sending“a“ËspK¼ecial“Çstring“whose“lengthŽ¡’øexceeds‘T255.Ž¦’óÊpk‘‘‰ffÕYŽ‘fixxx4Ž’§íÇ243‘ UPÈk•CŽÇ[4]‘TÈxÇ[Èk“Ç]Ž¡’øLik¾9e‘½Êpk‘‘‰ffÕYŽ‘fixxx1Ž‘$O¡Ç,‘&õbut–½Èk‘–Çcan“bAÇe“ridiculously“large;‘âÈkŽ¡’øÇmš¾9usn't–TbAÇe“negativ˜e.Ž¦’óÊpk‘‘‰ffÕYŽ‘fiyyyŽ’0BÇ244‘ UPÈyRªÇ[4]Ž¡’øThis–&fcommand“is“unde ned“in“general;‘.ïit“functionsŽ¡’øas–Šqa“ v•¾9e-b“yte‘ŠqÊno‘‘‰ffÕYŽ‘fiopŽ‘áÚÇunless–ŠqspAÇecial“ÌPKŽ‘ˆÇreading“pro-Ž¡’øgrams–æÁare“bAÇeing“used.‘ ¸¹METÇAFŽ9ONT“Çputs“Êsc•‡ale“dŽŽ¡’øÇn•¾9um“bAÇers›YØin“to˜ÊyyyŽ‘qÇ's,‘Xas˜a˜result˜of˜Ën´CumspK¼ecial˜Çcom-Ž¡’ømands;‘ë»the›Öïin•¾9ten“t˜is˜to˜pro“vide˜n“umeric˜parametersŽ¡’øto‘TÊxxxŽ‘„{Çcommands–Tthat“immediately“precede.Ž¦’óÊpk‘‘‰ffÕYŽ‘fip‡ostŽ’™(Ç245Ž¡’øBeginning–i²of“the“pAÇostam¾9ble.‘‹This“command“is“fol-Ž¡’ølo•¾9w“ed›y[b“y˜enough˜Êpk‘‘‰ffÕYŽ–fino‘‘‰ffÕYŽ“opŽ‘+Çcommands˜to˜mak“e˜theŽ¡’ø le–Hµa“mš¾9ultiple“of“four“b˜ytes“long.‘Ø;Zero“through“threeŽ¡’øbš¾9ytes–à‰are“usual,‘Vbut“an˜y“n˜um˜bAÇer“is“allo˜w˜ed.‘~ThisŽ¡’øshould– makš¾9e“the“ le“easy“to“read“on“mac˜hines“thatŽ¡’øpacš¾9k–Tfour“b˜ytes“to“a“w˜ord.Ž¦’óÊpk‘‘‰ffÕYŽ–fino‘‘‰ffÕYŽ“opŽ’A¡Ç246Ž¡’øNo–…‚opAÇeration,‘¡do“nothing.‘lûAnš¾9y“n˜um˜bAÇer“ofŽ¡’øÊpk‘‘‰ffÕYŽ–fino‘‘‰ffÕYŽ“opŽ’)¬EÇ's–¡ma¾9y“appšAÇear“b˜et•¾9w“een‘¡ÌPKŽ‘”nÇcommands,‘’butŽ¡’øa‘ôÉÊpk‘‘‰ffÕYŽ–fino‘‘‰ffÕYŽ“opŽ‘*ßÇcannot–ôÉbšAÇe“inserted“b˜et•¾9w“een–ôÉa“commandŽ¡’øand–ý:its“parameters,‘ bAÇet•¾9w“een›ý:t“w“o˜parameters,‘ or˜in-Ž¡’øside–Ta“c¾9haracter“de nition.ŽŽŽŽŽŽŒ‹ô4© ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1012‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Êpk‘‘‰ffÕYŽ‘fipr‡eŽ‘ùÇ247‘ UPÈiÇ[1]–TÈkšCŽÇ[1]“ÈxÇ[Èk˜Ç]“ÊdsŽ‘ ÉÍÇ[4]“ÊcsŽ‘ PéÇ[4]“ÊhpppŽ‘Ç[4]“ÊvpppŽ‘ŠÇ[4]Ž¤ ‘øPreamš¾9ble–o•command.‘+2Here,‘Æ$Èi“Çis“the“iden˜ti cationŽ¡‘øbš¾9yte–/:of“the“ le,‘]@curren˜tly“equal“to“89.‘ϽThe“string“Èx“ÇisŽ¡‘ømerely– (a“commen¾9t,‘ þusually“indicating“the“source“ofŽ¡‘øthe‘S(ÌPKŽ‘|Ç le.‘Û·The–S(parameters“ÊdsŽ‘ZÉÇand“ÊcsŽ‘ áåÇare“the“designŽ¡‘øsize–÷Pof“the“ le“in“1È=Ç2Ÿü-=¼20Ž‘ ÌžÇpAÇoinš¾9ts,‘ýPand“the“c˜hec˜ksum“ofŽ¡‘øthe–´ le,‘Û·respAÇectivš¾9ely‘ÿ:«.‘ø’The“c˜hec˜ksum“should“matc˜hŽ¡‘øthe‘R7ÌTFMŽ‘Ñ0Ç le–R7and“the“ÌGFŽ‘šÇ les“for“this“fon•¾9t.‘ÛfP“arametersŽ¡‘øÊhpppŽ‘*7Çand‘!“ÊvpppŽ‘·îÇare–!“the“ratios“of“pixels“pšAÇer“p˜oin¾9t,Ž¡‘øhorizonš¾9tally–€sand“v˜ertically‘ÿ:«,‘›;m˜ultiplied“b˜y“2Ÿü-=¼16Ž‘ÕNÇ;‘¶theyŽ¡‘øcan–WcbšAÇe“used“to“correlate“the“fon¾9t“with“sp˜eci c“deviceŽ¡‘øresolutions,–Tmagni cations,“and“\at“sizes."ŽŸÐC.3Ž‘¿öP•®9ac“king‘Õ9algorithmsŽŸÇThe‘œ ÌPKŽ‘«DÇformat–œ has“t•¾9w“o–œ con icting“goals:‘ßÌto“pacš¾9k“c˜harac-Ž¡ter–»¼raster“and“size“information“as“compactly“as“pAÇossible,Ž¡while–*«retaining“ease“of“translation“in¾9to“raster“and“otherŽ¡forms.‘åhA‘­suitable–­§compromise“w¾9as“found“in“the“use“ofŽ¡run-encoAÇding–ÁKof“the“raster“information.‘mInstead“of“pac¾9k-Ž¡ing–€9the“individual“bits“of“the“c•¾9haracter,‘ž w“e–€9instead“coun¾9tŽ¡the›{în•¾9um“bAÇer˜of˜consecutiv“e˜`blac“k'˜or˜`white'˜pixels˜in˜aŽ¡horizonš¾9tal–raster“ro˜w,‘Iand“then“encoAÇde“this“n˜um˜bAÇer.‘ÇURunŽ¡counš¾9ts–Âare“found“for“eac˜h“ro˜w“from“left“to“righ˜t,‘Ótra˜v˜ers-Ž¡ing–õ_roš¾9ws“from“the“top“to“bAÇottom.‘ÉThis“is“essen˜tially“theŽ¡w•¾9a“y–nêthe“ÌGFŽ‘QÇformat“wš¾9orks.‘ä÷Instead“of“presen˜ting“eac˜h“ro˜wŽ¡individually‘ÿ:«,›Ého•¾9w“ev“er,˜w“e–¶ concatenate“all“of“the“horizon-Ž¡tal–Á\raster“roš¾9ws“in˜to“one“long“string“of“pixels,‘Ò'and“encoAÇdeŽ¡this–e+roš¾9w.‘ öWith“kno˜wledge“of“the“width“of“the“bit-map,Ž¡the–¾Õoriginal“c¾9haracter“glyph“can“easily“bAÇe“reconstructed.Ž¡In–H0addition,‘Tæw¾9e“do“not“need“spAÇecial“commands“to“markŽ¡the–Tend“of“one“ro¾9w“and“the“bAÇeginning“of“the“next.Ž¡‘ Next,‘Œwš¾9e–A)place“the“burden“of“ nding“the“minim˜umŽ¡b•AÇounding›Rb“o•¾9x˜on˜the˜part˜of˜the˜fon“t˜generator,‘EsinceŽ¡the–?›cš¾9haracters“will“usually“bAÇe“used“m˜uc˜h“more“often“thanŽ¡they–DÚare“generated.‘«The“minim¾9um“bšAÇounding“b˜o¾9x“is“theŽ¡smallest–ƒ`rectangle“that“encloses“all“`blac¾9k'“pixels“of“aŽ¡c¾9haracter.‘ÎpW‘ÿ:«e–P©also“eliminate“the“need“for“a“spAÇecial“endŽ¡of–RÛcš¾9haracter“mark˜er,‘bbut“thereŽ¡’óis–1no“legal“place“to“put“it.‘oxIf“w¾9e“put“it“bAÇefore“the“whiteŽ¡’órun–)Hcounš¾9t,‘.Dit“will“apply“to“the“curren˜t“ro˜w.‘XKIf“w˜e“put“itŽ¡’óafter,‘Œit–iÇapplies“to“the“roš¾9w“with“the“blac˜k“pixel“at“the“bAÇe-Ž¡’óginning.‘2ÓTh•¾9us,‘¨en“tirely–Êwhite“or“enš¾9tirely“blac˜k“repAÇeatedŽ¡’óroš¾9ws–¹ëare“alw˜a˜ys“pac˜k˜ed“as“large“run“coun˜ts“(in“this“case,Ž¡’óa–Twhite“run“counš¾9t“of“54)“rather“than“repAÇeat“coun˜ts.Ž©€’ýNo•¾9w›2¼w“e˜turn˜our˜atten“tion˜to˜the˜actual˜pac“king˜of˜theŽ¡’órun–ìDcounš¾9ts“and“repAÇeat“coun˜ts“in˜to“n˜ybbles.‘¡?There“areŽ¡’óonly–°sixteen“pAÇossible“n¾9ybble“v‘ÿ|ralues.‘úÙW‘ÿ:«e“need“to“indicateŽ¡’órun–1_counš¾9ts“and“repAÇeat“coun˜ts.‘p’Since“the“run“coun˜ts“areŽ¡’óm•¾9uc“h–rmore“common,‘:wš¾9e“will“dev˜ote“the“ma‘ƒŽjorit˜y“of“theŽ¡’ón¾9ybble–³év‘ÿ|ralues“to“them.‘ø/W‘ÿ:«e“therefore“indicate“a“repAÇeatŽ¡’ócoun•¾9t›¶Êb“y˜a˜n“ybble˜of˜14˜follo“w“ed˜b“y˜a˜pac“k“ed˜n“um“bAÇer,Ž¡’ówhere–ðza“pac•¾9k“ed›ðzn“um“b•AÇer˜will˜b“e˜explained˜later.‘­ãSinceŽ¡’óthe–àXrepAÇeat“counš¾9t“v‘ÿ|ralue“of“one“is“so“common,‘êñw˜e“indicateŽ¡’óa–®ÙrepAÇeat“one“command“bš¾9y“a“single“n˜ybble“of“15.‘èþA‘®±14Ž¡’ófollo•¾9w“ed›ašb“y˜the˜pac“k“ed˜n“um“b•AÇer˜1˜is˜still˜legal˜for˜a˜rep“eatŽ¡’óone–4counš¾9t.‘The“run“coun˜ts“are“coAÇded“directly“as“pac˜k˜edŽ¡’ón•¾9um“bAÇers.Ž¡’ýF‘ÿ:«or›Dôpac•¾9k“ed˜n“um“bAÇers,–Ûtherefore,“w•¾9e˜ha“v“e˜the˜n“ybbleŽ¡’óv‘ÿ|ralues–[m0“through“13.‘îºW‘ÿ:«e“need“to“represenš¾9t“the“pAÇositiv˜eŽ¡’óinš¾9tegers–z€up“to,–™xsa˜y›ÿ:«,“2Ÿü-=¼31Ž‘­ßÉ‘Ø‘Ç1.‘èÔW˜e–z€wš¾9ould“lik˜e“the“more“com-Ž¡’ómon–ž„smaller“n•¾9um“bAÇers–ž„to“takš¾9e“only“one“or“t˜w˜o“n˜ybbles,Ž¡’óand–á?the“infrequenš¾9t“large“n˜um˜bAÇers“to“tak˜e“three“or“more.Ž¡’óW‘ÿ:«e–Ælcould“therefore“alloAÇcate“one“n¾9ybble“v‘ÿ|ralue“to“indicateŽ¡’óa–Q¡large“run“counš¾9t“taking“three“or“more“n˜ybbles.‘ÑVW‘ÿ:«e“doŽ¡’óthis–Twith“the“v‘ÿ|ralue“0.Ž¦’ýW›ÿ:«e–Jare“left“with“the“v‘ÿ|ralues“1“through“13.‘ºÀW˜e“canŽ¡’óalloAÇcate–@çsome“of“these,›KÌsa¾9y“Êdyn‘‘‰ffÕYŽ‘fifŽ‘G_Ç,˜to“bAÇe“one-n¾9ybble“runŽ¡’ócounš¾9ts.‘ These–á,will“w˜ork“for“the“run“coun˜ts“1È;–Šª:“:“:Ž‘ ßú;‘ŠªÊdyn‘‘‰ffÕYŽ‘fifŽ‘‘"Ç.Ž¡’óF‘ÿ:«or–subsequenš¾9t“run“coun˜ts,‘ *w˜e“will“use“a“n˜ybble“greaterŽ¡’óthan‘ áÊdyn‘‘‰ffÕYŽ‘fifŽ‘YÇ,‘Gfollo•¾9w“ed› áb“y˜a˜second˜n“ybble,‘Gwhose˜v‘ÿ|ralueŽ¡’ócan–´Crun“from“0“through“15.‘üThš¾9us,‘Ç­the“t˜w˜o-n˜ybble“v‘ÿ|raluesŽ¡’ówill–Srun“from“Êdyn‘‘‰ffÕYŽ‘fifŽ‘ÞÇ+–V71È;–Šª:“:“:Ž‘ ßú;‘ŠªÇ(13“É“Êdyn‘‘‰ffÕYŽ‘fifŽ›\¯Ç)“É“Ç16“+“Êdyn‘‘‰ffÕYŽ‘fifŽ˜Ç.Ž¡’óW‘ÿ:«e›~ha•¾9v“e˜our˜de nition˜of˜large˜run˜coun“t˜v‘ÿ|ralues˜no“w,Ž¡’óbAÇeing– Ìall“coun¾9ts“greater“than“(13–ÿ)É“Êdyn‘‘‰ffÕYŽ‘fifŽ›¡Ç)“É“Ç16“+“Êdyn‘‘‰ffÕYŽ‘fifŽ˜Ç.ŽŽŽŽŽŽŒ‹õU> ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1013ŽŽ œ ý‚‘ ÇW‘ÿ:«e–™™can“analyze“our“sev¾9eral“dozen“pixel“ les“and“de-Ž¤ termine–ü•an“optimal“v›ÿ|ralue“of“Êdyn‘‘‰ffÕYŽ‘fifŽ‘ Ç,‘6fand“use“this“v˜alueŽ¡for–0æall“of“the“c¾9haracters.‘o&Unfortunately‘ÿ:«,‘7Ëv‘ÿ|ralues“of“Êdyn‘‘‰ffÕYŽ‘fifŽŽ¡Çthat–Úrpacš¾9k“small“c˜haracters“w˜ell“tend“to“pac˜k“the“largeŽ¡c¾9haracters›ý‹p•AÇo“orly‘ÿ:«,‘Mand˜v‘ÿ|ralues˜that˜pac•¾9k˜large˜c“haractersŽ¡wš¾9ell–WÔare“not“ecien˜t“for“the“smaller“c˜haracters.‘ÝETh˜us,‘}»w˜eŽ¡cš¾9hoAÇose–¦÷the“optimal“Êdyn‘‘‰ffÕYŽ‘fifŽ‘TfÇon“a“c˜haracter“basis,‘Ë`pic˜kingŽ¡the–ÖÛv‘ÿ|ralue“that“will“pacš¾9k“eac˜h“individual“c˜haracter“in“theŽ¡smallest›œsn•¾9um“bAÇer˜of˜n“ybbles.‘±ÍLegal˜v‘ÿ|ralues˜of˜Êdyn‘‘‰ffÕYŽ‘fifŽ‘?^ÇrunŽ¡from–lÃ0“(with“no“one-nš¾9ybble“run“coun˜ts)“to“13“(with“noŽ¡t•¾9w“o-n“ybble–Trun“coun¾9ts).Ž©‘ Our–w+only“remaining“task“in“the“coAÇding“of“pac•¾9k“ed‘w+n“um-Ž¡bAÇers–ÕZis“the“large“run“counš¾9ts.‘W‘ÿ:«e“use“a“sc˜heme“suggestedŽ¡bš¾9y–7îë[D.‘¨ŠE.‘„5Knuth“Çthat“simply“and“elegan˜tly“represen˜ts“ar-Ž¡bitrarily–¡large“v‘ÿ|ralues.‘…WThe“general“scš¾9heme“to“represen˜tŽ¡an–Ķinš¾9teger“Èi“Çis“to“write“its“hexadecimal“represen˜tation,Ž¡with–ïßleading“zeros“remo•¾9v“ed.‘¬Then›ïßw“e˜coun“t˜the˜n“um-Ž¡bšAÇer–¦÷of“digits,‘½ and“prep˜end“one“less“than“that“man¾9y“zerosŽ¡bAÇefore–·Õthe“hexadecimal“represen•¾9tation.‘ýFTh“us,‘ʈthe‘·Õv‘ÿ|raluesŽ¡from–~"one“to“ fteen“oAÇccupš¾9y“one“n˜ybble;‘°ˆthe“v‘ÿ|ralues“sixteenŽ¡through–Nœ255“oAÇccup¾9y“three,‘\îthe“v‘ÿ|ralues“256“through“4095Ž¡require–T v¾9e,“etc.Ž¡‘ F‘ÿ:«or–¡¨our“purpAÇoses,›½ho•¾9w“ev“er,˜w“e›¡¨ha“v“e˜already˜repre-Ž¡senš¾9ted–;ûthe“n˜um˜bAÇers“one“through“(13•[†É“Êdyn‘‘‰ffÕYŽ‘fifŽ›aþÇ)“É“Ç16“+“Êdyn‘‘‰ffÕYŽ‘fifŽ˜Ç.Ž¡In–§Rthe“abAÇo•¾9v“e›>Rsc“heme˜migh“t˜loAÇok˜lik“e˜the˜P“ascal˜routineŽ¡in–Ù gure“1,‘¯ºassuming“that“a“proAÇcedure“called“Êpk‘‘‰ffÕYŽ‘finybŽ‘"yWÇisŽ¡aš¾9v‘ÿ|railable–÷æto“get“the“next“n˜ybble“from“the“ le,‘0Šand“as-Ž¡suming–)that“the“global“Êr•‡ep“e“at‘‘‰ffÕYŽ‘fic“ountŽ‘:§Çindicates“whetherŽ¡a–ôŸro¾9w“needs“to“bšAÇe“rep˜eated.‘ºPNote“that“this“routine“isŽ¡recursivš¾9e,‘¡«but–Rgsince“a“repAÇeat“coun˜t“can“nev˜er“directlyŽ¡folloš¾9w–G¦another“repAÇeat“coun˜t,‘T:it“can“only“bAÇe“recursiv˜e“toŽ¡one‘Tlev¾9el.Ž¦‘ F‘ÿ:«or–Ýloš¾9w“resolution“fon˜ts,‘ or“c˜haracters“with“`gra˜y'“ar-Ž¡eas,‘UÑrun–¸encoAÇding“can“often“makš¾9e“the“c˜haracter“man˜yŽ¡times–Êlarger.‘:¸Therefore,‘÷Gfor“those“c¾9haracters“that“can-Ž¡not–VmbšAÇe“enco˜ded“ecienš¾9tly“with“run“coun˜ts,‘|œthe“ÌPKŽ‘ ÇformatŽ¡alloš¾9ws–yMbit-mapping“of“the“c˜haracters.‘H[This“is“indicatedŽ¡bš¾9y–Y‚a“Êdyn‘‘‰ffÕYŽ‘fifŽ‘¹|Çv‘ÿ|ralue“of“14.‘èúThe“bits“are“pac˜k˜ed“tigh˜tly‘ÿ:«,‘jŽb˜yŽ¡concatenating–núall“of“the“horizonš¾9tal“raster“ro˜ws“in˜to“oneŽ¡long–F±string,‘Sand“then“pacš¾9king“this“string“eigh˜t“bits“to“aŽ¡b•¾9yte.‘3ÏThe›ÇÉn“um“bAÇer˜of˜b“ytes˜required˜can˜bAÇe˜calculatedŽ¡b¾9y–,]ÉbÇ(ÊwidthŽ‘sáÉ‘È>ÊheightŽ‘¼!Ç+‘È>7)È=Ç8ÉcÇ.‘aŒThis“format“should“onlyŽ¡bAÇe–Êxused“when“pacš¾9king“the“c˜haracter“b˜y“run“coun˜ts“tak˜esŽ¡more–=žb¾9ytes“than“this,–G°although,“of›=žcourse,“it˜is˜legal˜forŽ¡an•¾9y›âkc“haracter.‘ xAn“y˜extra˜bits˜in˜the˜last˜b“yte˜should˜bAÇeŽ¡set–Tto“zero.ŽŽŽ ý‚’ýAš¾9t–Zthis“pAÇoin˜t,‘~w˜e“are“ready“to“in˜troAÇduce“the“format“forŽ¤ ’óa–Gwc¾9haracter“descriptor.‘²ÙIt“consists“of“three“parts:‘€¶a“ agŽ¡’ób•¾9yte,‘V>a›c“haracter˜pream“ble,‘V>and˜the˜raster˜data.‘¡TheŽ¡’ómost–šŒsigni canš¾9t“four“bits“of“the“ ag“b˜yte“yield“the“Êdyn‘‘‰ffÕYŽ‘fifŽŽ¡’óÇv›ÿ|ralue–½åfor“that“c¾9haracter.‘$(Notice“that“only“v˜alues“of“0Ž¡’óthrough–MË14“are“legal“for“Êdyn‘‘‰ffÕYŽ‘fifŽ‘TCÇ,‘[éwith“14“indicating“a“bitŽ¡’ómappAÇed›÷Xc•¾9haracter;‘hYth“us,‘/Øthe˜ ag˜b“ytes˜do˜not˜con ictŽ¡’ówith– ¥the“command“bš¾9ytes,‘ Èwhose“uppAÇer“n˜ybble“is“alw˜a˜ysŽ¡’ó15.)‘¸The–ø,next“bit“(with“w•¾9eigh“t–ø,8)“indicates“whether“theŽ¡’ó rst–ÿ+run“counš¾9t“is“a“blac˜k“coun˜t“or“a“white“coun˜t,‘šwith“aŽ¡’óone–-»indicating“a“blacš¾9k“coun˜t.‘Ï=F‘ÿ:«or“bit-mappAÇed“c˜haracters,Ž¡’óthis–Kbit“should“bAÇe“set“to“a“zero.‘ÉThe“next“bit“(with“w•¾9eigh“tŽ¡’ó4)–Õ)indicates“whether“certain“later“parameters“(referredŽ¡’óto–ü×as“size“parameters)“are“givš¾9en“in“one-b˜yte“or“t˜w˜o-b˜yteŽ¡’óquanš¾9tities,‘í½with–Âua“one“indicating“that“they“are“in“t˜w˜o-Ž¡’ób•¾9yte›‘Çquan“tities.‘‘ÈThe˜last˜t“w“o˜bits˜are˜concatenated˜onŽ¡’óto–‹Òthe“bAÇeginning“of“the“pac•¾9k“et-length–‹Òparameter“in“theŽ¡’óc•¾9haracter›Tpream“ble,˜whic“h˜will˜b•AÇe˜explained˜b“elo¾9w.Ž¡’ýHo•¾9w“ev“er,‘Þ±if–ƒ9the“last“three“bits“of“the“ ag“b¾9yte“areŽ¡’óall–áUset“(normally“indicating“that“the“size“parameters“areŽ¡’ót•¾9w“o-b“yte–I*v‘ÿ|ralues“and“that“a“3“should“bšAÇe“prep˜ended“toŽ¡’óthe–ŸÌlength“parameter),‘·Nthen“a“long“format“of“the“c¾9harac-Ž¡’óter–3!pream¾9ble“should“bAÇe“used“instead“of“one“of“the“shortŽ¡’óforms.Ž¡’ýTherefore,‘8Äthere–þ{are“three“formats“for“the“c¾9haracterŽ¡’ópream¾9ble;‘[the–ý_one“that“is“used“depAÇends“on“the“least“sig-Ž¡’óni canš¾9t–yÁthree“bits“of“the“ ag“b˜yte.‘è”If“the“least“signi can˜tŽ¡’óthree–ñ bits“are“in“the“range“zero“through“three,‘øKthe“shortŽ¡’óformat–kis“used.‘.¶If“they“are“in“the“range“four“throughŽ¡’ósix,›Õ1the–Å(extended“short“format“is“used.‘·Otherwise,˜if“theŽ¡’óleast–€ôsigni can¾9t“bits“are“all“set,‘ž¡then“the“long“form“of“theŽ¡’óc•¾9haracter›¹®pream“ble˜is˜used.‘ }The˜pream“ble˜formats˜areŽ¡’óexplained‘TbAÇelo¾9w.Ž©’óËShort‘ŒÊformŽŽ’+õÊ agŽ’:ÄYÇ[1]‘„uÊplŽ‘ ÿ%Ç[1]‘„uÊc‡cŽ‘ ƒ™Ç[1]‘„uÊtfmŽ‘(ôÇ[3]‘„uÊdmŽ‘ú»Ç[1]–„uÈw>Ç[1]“ÈhÇ[1]Ž¡’Êho Ž’€Ç[+1]‘TÊvo Ž‘Ç[+1].Ž¡’If–u´this“format“of“the“cš¾9haracter“pream˜ble“is“used,Ž¡’the›ŠabAÇo•¾9v“e˜parameters˜m“ust˜all˜ t˜in˜the˜indicatedŽ¡’n•¾9um“bAÇer–Àof“b¾9ytes,‘ê°signed“or“unsigned“as“indicated.Ž¡’Almost–sall“of“the“standard“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ¥³fonš¾9t“c˜haracters“ t;Ž¡’the–Tfew“exceptions“are“fonš¾9ts“suc˜h“as“ÌcminchŽ‘nØÇ.Ž¦’óËExtended–ŒÊshort“formŽŽ’Y2ÀÊ agŽ’hà$Ç[1]‘.dÊplŽ‘ ©Ç[2]‘.dÊc‡cŽ‘ -ˆÇ[1]‘.dÊtfmŽ‘ÒãÇ[3]‘.dÊdmŽ‘¤ªÇ[2]Ž¡’Èw>Ç[2]–TÈhÇ[2]“Êho Ž‘•cÇ[+2]“Êvo Ž‘Ç[+2].Ž¡’Larger–Tc¾9haracters“use“this“extended“format.Ž¦’óËLong‘ŒÊformŽŽ’(\LÊ agŽ’8 °Ç[1]‘™}ÊplŽ‘ -Ç[4]‘™}Êc‡cŽ‘ ˜¡Ç[4]‘™}ÊtfmŽ‘=üÇ[4]‘™}ÊdxŽ‘%Ç[4]‘™}ÊdyŽ‘Ç[4]‘™}Èw>Ç[4]Ž¡’ÈhÇ[4]‘TÊho Ž‘•cÇ[4]‘TÊvo Ž‘Ç[4].Ž¡’This–Ì=is“the“general“format“whicš¾9h“allo˜ws“all“of“theŽ¡’parameters–+Äof“the“ÌGFŽ‘Ê´Ç le“format,‘1`including“v¾9erticalŽ¡’escapAÇemen¾9t.Ž¦’óThe‘{0Ê agŽ‘£ÄÇparameter–{0is“the“ ag“b¾9yte.‘NThe“parameter“ÊplŽŽ¡’óÇ(pac•¾9k“et–W¤length)“conš¾9tains“the“o set“of“the“b˜yte“follo˜w-Ž¡’óing–" this“c¾9haracter“descriptor,‘%:with“respšAÇect“to“the“b˜egin-Ž¡’óning–cof“the“ÊtfmŽ‘jÇwidth“parameter.‘ˆThis“is“giv¾9en“so“aŽ¡’óÌPKŽ’ÿ½×Çreading–J«program“can,‘Xonce“it“has“read“the“ ag“b¾9yte,Ž¡’ópac•¾9k“et–r«length,›Êand“c¾9haracter“coAÇde“(Êc‡cŽ‘ÿ$Ç),˜skip“o•¾9v“er‘r«theŽ¡’óc•¾9haracter›=žb“y˜simply˜reading˜this˜man“y˜more˜b“ytes.‘•MF‘ÿ:«orŽ¡’óthe›`¬t•¾9w“o˜short˜forms˜of˜the˜c“haracter˜pream“ble,‘s‚the˜lastŽŽŽŽŽŽŒ‹öx| ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1014‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ þx1Ç ÿ 9Ëfunction‘TÊpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘?¸Ç:‘pÊinte‡gerŽ‘ ÒÁÇ;Ž¤ ‘Ëv‘ÿh‰ar‘TÈiŽ‘?ž;‘ŠªjŽ‘ÖºÇ:‘pÊinte‡gerŽ‘ ÒÁÇ;Ž¡‘ËbK¼egin‘ŸþÈiŽ‘ \É ‘‘ÆÊget‘‘‰ffÕYŽ‘finybŽ‘ ‚PÇ;Ž¡‘Ëif‘ ÈiŽ‘ Ö0Ç=‘‘Æ0‘TËthenŽ¡‘(bK¼eginŽ¡‘(repK¼eat‘ŸþÈjŽ‘ }ÔÉ ‘‘ÆÊget‘‘‰ffÕYŽ‘finybŽ‘ ‚PÇ;‘ŸþÊincrŽ‘=cÇ(ÈiŽ‘*JÇ);Ž¡‘(Ëun´Ctil‘ŸþÈjŽ‘ }ÔÉ6Ç=‘‘Æ0;Ž¡‘(Ëwhile‘TÈiŽ‘Ñd>‘‘ÆÇ0‘TËdoŽ¡‘<bK¼egin‘ŸþÈjŽ‘ }ÔÉ ‘‘ÆÈjŽ‘ìÉ–8Ç16“+“Êget‘‘‰ffÕYŽ‘finybŽ‘þÂÇ;‘ŸþÊde‡crŽ‘¶GÇ(ÈiŽ‘*JÇ);Ž¡‘<ËendÇ;Ž¡‘(Êpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘g5É ‘‘ÆÈjŽ‘ìÉ–8Ç15“+“(13“É“Êdyn‘‘‰ffÕYŽ‘fifŽ›°Ç)“É“Ç16“+“Êdyn‘‘‰ffÕYŽ‘fifŽ˜Ç;Ž¡‘(ËendŽ¡‘else‘Tif‘ ÈiŽ‘ Ö0É‘‘ÆÊdyn‘‘‰ffÕYŽ‘fifŽ‘­’Ëthen‘ŸþÊpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘CÔÿÉ ‘‘ÆÈiŽŽ¡‘(Ëelse–Tif‘ ÈiŽ‘ Ö0<›‘ÆÇ14“Ëthen‘ŸþÊpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘CÔÿÉ ˜Ç(ÈiŽ‘8‚É‘8Êdyn‘‘‰ffÕYŽ‘fifŽ›"èÉ–8Ç1)“É“Ç16“+“Êget‘‘‰ffÕYŽ‘finybŽ‘" úÇ+“Êdyn‘‘‰ffÕYŽ‘fifŽ˜Ç+“1Ž¡‘<Ëelse‘TbK¼eginŽ¡‘Pif‘ Êr•‡ep“e“at‘‘‰ffÕYŽ‘fic“ountŽ‘8œ;É6Ç=‘‘Æ0‘TËthen‘ŸþÊab‡ortŽ‘"»Ç(ÌSecond repeat count for this row!Ž’¥_‚Ç);Ž¡‘PÊr•‡ep“e“at‘‘‰ffÕYŽ‘fic“ountŽ’„‚#É ‘‘ÆÇ1;‘ ?üÉf›ŠªÇprev•¾9en“t–Trecursion“more“than“one“lev¾9el˜ÉgŽ¡‘PËif‘ ÈiŽ‘ Ö0Ç=–‘Æ14‘TËthen‘ŸþÇ!‘pÊr•‡ep“e“at‘‘‰ffÕYŽ‘fic“ountŽ‘8ž‹É “Êpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘?5Ç;Ž¡‘PÊsend‘‘‰ffÕYŽ‘fioutŽ‘sjþÇ(ÊtrueŽ‘SpÈ;‘ŠªÊr•‡ep“e“at‘‘‰ffÕYŽ‘fic“ountŽ‘3zÿÇ);‘ŸþÊpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘CÔÿÉ ‘‘ÆÊpk‘‘‰ffÕYŽ›fip•‡acke“d‘‘‰ffÕYŽ˜numŽ‘?5Ç;Ž¡‘PËendÇ;Ž¡‘ËendÇ;ŽŸ‘loÐFigure‘ÕT1²:‘qÇAlgorithm–UUfor“decoGding“run“coun¸ãts“in“a“ÑPKŽ‘*¤² leŽŽŽ ‡Î9 þ–1ÇÇt•¾9w“o–ÓŽbits“of“the“ ag“bš¾9yte“should“bAÇe“considered“the“t˜w˜oŽ¤ most-signi canš¾9t– Þbits“of“the“pac˜k˜et“length.‘óF‘ÿ:«or“the“shortŽ¡format,‘`—the–Wtrue“pac•¾9k“et–Wlength“migh¾9t“bAÇe“calculated“asŽ¡(Ê agŽ‘?*ÇmoAÇdŽ‘&‹“4)–àÉ“Ç256“+“ÊplŽ‘ Ç;‘ëŒfor–Ö¨the“short“extended“format,‘ã1itŽ¡migh¾9t–TbšAÇe“calculated“as“(Ê agŽ‘?*Çmo˜dŽ‘&‹“4)–8É“Ç65536“+“ÊplŽ‘ ˆèÇ.Ž¡‘ The–ÖÈw‘Çparameter“is“the“width“and“the“Èh“Çparameter“isŽ¡the–áXheighš¾9t“in“pixels“of“the“minim˜um“bšAÇounding“b˜o¾9x.‘ TheŽ¡ÊdxŽ‘ÊOÇand‘>¸ÊdyŽ‘ùÇparameters–>¸are“the“horizonš¾9tal“and“v˜erticalŽ¡escap•AÇemenš¾9ts,‘>¢resp“ectiv˜ely‘ÿ:«.‘åùIn–,the“short“formats,‘>¢ÊdyŽ‘½eÇisŽ¡assumed–¤úto“bAÇe“zero“and“ÊdmŽ‘À:Çis“ÊdxŽ‘Õ‹Çbut“in“pixels;‘ìÎin“theŽ¡long–$format,‘”ÊdxŽ‘—OÇand“ÊdyŽ‘ƒßÇare“bAÇoth“in“pixels“mš¾9ultiplied“b˜yŽ¡2Ÿü-=¼16Ž‘ÕNÇ.‘\`The‘*¤Êho Ž‘ÕWÇis–*¤the“horizon¾9tal“o set“from“the“uppAÇerŽ¡left–~°pixel“to“the“reference“pixel;‘³^the“Êvo Ž‘‹Çis“the“v¾9erticalŽ¡o set.‘ЋThey–Q]are“bAÇoth“givš¾9en“in“pixels,‘ _with“righ˜t“andŽ¡do¾9wn–@bšAÇeing“p˜ositiv¾9e.‘Õ[The“reference“pixel“is“the“pixel“thatŽ¡oAÇccupies–‘\the“unit“square“in“¹METšÇAFŽ9ONTÇ;“the“¹MET˜AÇ-Ž¡¹FŽ9ONT–$€Çreference“pAÇoinš¾9t“is“the“lo˜w˜er“left“hand“corner“ofŽ¡this–Tpixel.‘p(See“the“example“bAÇelo¾9w.)ŽŸ‘ T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ Íprequires–E0all“cš¾9haracters“that“ha˜v˜e“the“same“c˜harac-Ž¡ter–'ccošAÇdes“mo˜dulo“256“to“ha•¾9v“e–'calso“the“same“ÊtfmŽ‘óEÇwidthsŽ¡and–çWescapšAÇemen¾9t“v‘ÿ|ralues.‘’zThe“ÌPKŽ‘AÚÇformat“do˜es“not“itselfŽ¡makš¾9e–<~this“a“requiremen˜t,‘†Ibut“in“order“for“the“fon˜t“toŽ¡wš¾9ork–aÍcorrectly“with“the“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ê soft˜w˜are,‘´ëthis“constrain˜tŽ¡should–,ábAÇe“observš¾9ed.‘c(The“standard“v˜ersion“of“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ µ!can-Ž¡not–tÛoutput“c¾9haracter“coAÇdes“greater“than“255,‘̽but“ex-Ž¡tended–Tv¾9ersions“do“exist.)Ž¡‘ F‘ÿ:«olloš¾9wing–¥the“c˜haracter“pream˜ble“is“the“raster“infor-Ž¡mation–*êfor“the“c•¾9haracter,‘pOpac“k“ed›*êb“y˜run˜coun“ts˜or˜b“yŽ¡bits,‘.Fas–öindicated“bš¾9y“the“ ag“b˜yte.‘¾µIf“the“c˜haracter“isŽ¡pac•¾9k“ed›m°b“y˜run˜coun“ts˜and˜the˜required˜n“um“bAÇer˜of˜n“yb-Ž¡bles–~6is“oAÇdd,‘˜othen“the“last“b¾9yte“of“the“raster“descriptionŽ¡should›Tha•¾9v“e˜a˜zero˜for˜its˜least˜signi can“t˜n“ybble.ŽŽŽ þ–1Ç’óÐC.5Ž’¿öAn–Õ9example“c®9haracterŽŸ’óÇAs––9an“illustration“of“the“ÌPKŽ‘ŸžÇformat,‘¯¥the“c¾9haracter““fromŽ¤ ’óthe–tfonš¾9t“Ìamr10“Çat“300“dots“pAÇer“inc˜h“will“bšAÇe“enco˜ded.Ž¡’óThis–zcš¾9haracter“w˜as“c˜hosen“bAÇecause“it“illustrates“someŽ¡’óof–šthe“bAÇorderline“cases.‘ªÍThe“raster“for“the“c¾9haracter“isŽ¡’óshoš¾9wn–àëin“ gure“2.‘ øThe“width“of“the“minim˜um“bAÇoundingŽ¡’óbAÇoš¾9x– Üfor“this“c˜haracter“is“20;‘‡ its“heigh˜t“is“29.‘ The“`+'Ž¡’órepresenš¾9ts–7Xthe“reference“pixel;‘HYnotice“ho˜w“it“lies“outsideŽ¡’óthe–minim¾9um“bšAÇounding“b˜o¾9x.‘3ËThe“Êho Ž‘ºIÇv‘ÿ|ralue“is“ÉÇ2,‘andŽ¡’óthe‘TÊvo Ž‘1ÓÇis‘T28.Ž¡’ýThe–TH rst“task“is“to“calculate“the“run“coun¾9ts“and“repAÇeatŽ¡’ócounš¾9ts.‘}jThe–ŠýrepAÇeat“coun˜ts“are“placed“at“the“ rst“tran-Ž¡’ósition–£](blacš¾9k“to“white“or“white“to“blac˜k)“in“a“ro˜w,‘ÆßandŽ¡’óare–¢üenclosed“in“brac•¾9k“ets.‘ÅiWhite›¢ücoun“ts˜are˜enclosed˜inŽ¡’óparenš¾9theses.‘…3It–8@is“relativ˜ely“easy“to“generate“the“coun˜tsŽ¡’ólist:Ž©’L‘82–T[2]“(16)“2“(42)“[2]“2“(12)“2“(4)“[3]Ž¡’ŽX16–T(4)“[2]“2“(12)“2“(62)“[2]“2“(16)“82Ž¦’óNote–(that“anš¾9y“duplicated“ro˜ws“that“are“not“all“white“orŽ¡’óall–Ú‡blacš¾9k“are“remo˜v˜ed“bAÇefore“the“run“coun˜ts“are“calcu-Ž¡’ólated.‘z»The–4Âroš¾9ws“th˜us“remo˜v˜ed“are“ro˜ws“5,–<ž6,“10,“11,“13,Ž¡’ó14,–T15,“17,“18,“23,“and“24.ŽŸ’ýThe–pãnext“step“in“the“encoAÇding“of“this“c¾9haracter“is“toŽ¡’ócalculate–ÄÔthe“optimal“v‘ÿ|ralue“of“Êdyn‘‘‰ffÕYŽ‘fifŽ‘ËLÇ.‘›The“details“of“ho¾9wŽ¡’óthis–°ìcalculation“is“done“are“not“impAÇortan¾9t“here;‘Òdsuce“itŽ¡’óto–ôsa¾9y“that“there“is“a“simple“algorithm“that“can“deter-Ž¡’ómine–the“bAÇest“v‘ÿ|ralue“of“Êdyn‘‘‰ffÕYŽ‘fifŽ‘4¢Çin“one“pass“o•¾9v“er–the“coun¾9tŽ¡’ólist.‘¢.F‘ÿ:«or–—>this“c¾9haracter,‘·¹the“optimal“v‘ÿ|ralue“turns“out“toŽ¡’óbAÇe–½õ8“(atš¾9ypically“lo˜w).‘TTh˜us,‘èall“coun˜t“v‘ÿ|ralues“less“thanŽ¡’óor–-equal“to“8“are“pac•¾9k“ed–-in“one“n¾9ybble;‘8âthose“from“nineŽ¡’óto›3ä(13–ÍCÉ“Ç8)“É“Ç16“+“8˜or˜88˜are˜pac•¾9k“ed˜in˜t“w“o˜n“ybbles.ŽŽŽŽŽŽŽŒ‹÷™† ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1015ŽŽ œ þ¾ þÄ‘w1Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¤ ‘w2Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘w3Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘w4Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘w5Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘w6Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘w7Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘w8ŽŽ¡‘w9ŽŽ¡‘qÿÿ10Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ11Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ12Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ13Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ14Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ15Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ16Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ17Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ18Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ19Ž’®„Ž’¸„Ž’:„Ž’D„ŽŽŽ¡‘qÿÿ20ŽŽ¡‘qÿÿ21ŽŽ¡‘qÿÿ22ŽŽ¡‘qÿÿ23Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ24Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ25Ž’š„Ž’¤„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ26Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ27Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ28Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽ¡‘qÿÿ29Ž’†Ñ+Ž’š„Ž’¤„Ž’®„Ž’¸„Ž’„Ž’Ì„Ž’Ö„Ž’à„Ž’ê„Ž’ô„Ž’þ„Ž’„Ž’„Ž’„Ž’&„Ž’0„Ž’:„Ž’D„Ž’N„Ž’X„ŽŽŽŽŽ -€ÐFigure‘H 2²:‘9mCharacter–¹(“of“Ñamr10“²(the“roš¸ãw“n˜um˜bGers“are“c˜hosen“for“con˜v˜enience,‘Òand“are“not“¹METÇAFŽ9ONT²'sŽŸ ro•¸ãw‘UUn“um“bGers.)ŽŽ B þÜÇThe–%Brun“encošAÇded“v‘ÿ|ralues“no¾9w“b˜ecome“(in“hex,‘)>separatedŽ¤ according–Tto“the“abAÇo•¾9v“e‘Tlist):Ž©‘.YÌÌD9–¹–E2“97“2“B1“E2“2“93“2“4“E3Ž¡‘.YÌ97–¹–4“E2“2“93“2“C5“E2“2“97“D9Ž¦Çwhicš¾9h–1*comes“to“36“n˜ybbles,‘8 or“18“b˜ytes.‘oóThis“is“shorterŽ¡than–æQthe“73“bš¾9ytes“required“for“the“bit“map,‘‘so“w˜e“useŽ¡the–Trun“counš¾9t“pac˜king.ŽŸ‘ The–(Êshort“form“of“the“cš¾9haracter“pream˜ble“is“used“bAÇe-Ž¡cause–iall“of“the“parameters“ t“in“their“respAÇectiv¾9e“lengths.Ž¡The›ûópac•¾9k“et˜length˜is˜therefore˜18˜b“ytes˜for˜the˜raster,Ž¡plus–Š«eighš¾9t“b˜ytes“for“the“c˜haracter“pream˜ble“parametersŽ¡folloš¾9wing–åëthe“c˜haracter“coAÇde,‘Zor“26.‘ Ž6The“ÊtfmŽ‘pUÇwidthŽ¡for–$7this“c¾9haracter“is“640796,‘gïor“Ì9C71C‘#ñÇin“hexadecimal.Ž¡The–àŸhorizonš¾9tal“escapAÇemen˜t“is“25“pixels.‘~PThe“ ag“b˜yteŽ¡is–R88“hex,›a=indicating“the“short“pream¾9ble,˜the“blac¾9k“ rstŽ¡counš¾9t,‘g£and–<6the“Êdyn‘‘‰ffÕYŽ‘fifŽ‘~äÇv‘ÿ|ralue“of“8.‘ÔThe“ nal“total“c˜haracterŽ¡pac•¾9k“et,–Tin“hexadecimal,“is“giv¾9en“in“ gure“3.ŽŸÐDŽ‘QÀF‘ÿ «on®9t–Õ9metric“dataŽŸD.1Ž‘C„In®9troQÇductionŽŸÇThe–Zlidea“bšAÇehind“ÌTFMŽ‘ášÇ les“is“that“t¾9yp˜esetting“routinesŽ¡likš¾9e–­T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ 5Xneed“a“compact“w˜a˜y“to“store“the“relev‘ÿ|ran˜t“infor-Ž¡mation–ÏEabAÇout“sevš¾9eral“dozen“fon˜ts,‘ÝHand“computer“cen˜tersŽ¡need–‚a“compact“w•¾9a“y–‚to“store“the“relev‘ÿ|ran¾9t“informationŽ¡abAÇout–¬sevš¾9eral“h˜undred“fon˜ts.‘8ÌTFMŽ‘Y¦Ç les“are“compact,‘gandŽŽŽŸÈqÇŸ˜ÜrŸ²ó1’X BFlag‘Tb¾9yteŽ’ó¦Ì88ŽŽ¤ ’GTØÇP•¾9ac“k“et‘TlengthŽ’ó¦Ì1AŽŽ¡’@þtÇCharacter‘TcoAÇdeŽ’ó¦Ì04ŽŽ¡’U™äÊtfmŽ’gS·ÇwidthŽ’ó¦Ì09Ž’¦fÓC7Ž’»Ú1CŽŽ¡’²ÕÇHorizon•¾9tal›TescapAÇemen“t˜(pixels)Ž’ó¦Ì19ŽŽ¡’7ïÇWidth–Tof“bit“mapŽ’ó¦Ì14ŽŽ¡’6?·ÇHeigh¾9t–Tof“bit“mapŽ’ó¦Ì1DŽŽ¡’QÇHorizon¾9tal–To set“(signed)Ž’ó¦ÌFEŽŽ¡’FžÇV‘ÿ:«ertical‘To setŽ’ó¦Ì1CŽŽ¡’NøÇRaster‘TdataŽ’ó¦ÌD9Ž’¦fÓE2Ž’»Ú97ŽŽ¡’ó¦2BŽ’¦fÓ1EŽ’»Ú22ŽŽ¡’ó¦93Ž’¦fÓ24Ž’»ÚE3ŽŽ¡’ó¦97Ž’¦fÓ4EŽ’»Ú22ŽŽ¡’ó¦93Ž’¦fÓ2CŽ’»Ú5EŽŽ¡’ó¦22Ž’¦fÓ97Ž’»ÚD9ŽŽŽŽŽŸe1Ç’þä~ÐFigure‘ÕT3²:‘qÇÑPKŽ‘G²c•¸ãharacter›UUpac“k“et˜for˜˜of˜Ñamr10ŽŽŽŽŽŽŽŽŽŒ‹ø´: ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1016‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Çmost–&Oof“the“information“they“conš¾9tain“is“highly“relev‘ÿ|ran˜t,Ž¤ so–Tthey“pro¾9vide“a“solution“to“the“problem.Ž¡‘ The–ážinformation“in“a“ÌTFMŽ‘ïþÇ le“appAÇears“in“a“sequenceŽ¡of– u8-bit“bš¾9ytes.‘=ÒSince“the“n˜um˜bAÇer“of“b˜ytes“is“alw˜a˜ys“aŽ¡mš¾9ultiple–Ñ/of“4,‘ÞÐw˜e“could“also“regard“the“ le“as“a“sequenceŽ¡of–ä‘32-bit“wš¾9ords;‘L0but“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘lÑuses“the“b˜yte“in˜terpretation,Ž¡and–2Ãso“do“wš¾9e.‘t¼Note“that“the“b˜ytes“are“considered“to“bAÇeŽ¡unsigned‘Tn•¾9um“bAÇers.Ž©ÐD.2Ž‘C„Summary–Õ9of“ÑTFM“Ð lesŽŸD.2.1Ž‘&5HThe‘Õ9headerŽŸÇThe–%b rst“24“bš¾9ytes“(6“w˜ords)“of“a“ÌTFMŽ‘w†Ç le“con˜tain“t˜w˜elv˜eŽ¡16-bit–M'inš¾9tegers“that“giv˜e“the“lengths“of“the“v‘ÿ|rarious“sub-Ž¡sequenš¾9t–¯×pAÇortions“of“the“ le.‘ëøThese“t˜w˜elv˜e“in˜tegers“are,Ž¡in‘Torder:ŽŸS@Ÿ¸s1‘šèÊlfŽ‘%ÂÇ=Ž‘/…“length–Tof“the“enš¾9tire“ le,“in“w˜ords;ŽŽ¡‘ëÉÊlhŽ‘%ÂÇ=Ž‘/…“length–Tof“the“header“data,“in“w¾9ords;ŽŽ¡‘1Êb‡cŽ‘%ÂÇ=Ž‘/…“smallest–Tcš¾9haracter“coAÇde“in“the“fon˜t;ŽŽ¡‘1Êe‡cŽ‘%ÂÇ=Ž‘/…“largest–Tcš¾9haracter“coAÇde“in“the“fon˜t;ŽŽ¡‘iþÊnwŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“w¾9ords“in“the“width“table;ŽŽ¡‘qÊnhŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“wš¾9ords“in“the“heigh˜t“table;ŽŽ¡‘à:ÊndŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“w¾9ords“in“the“depth“table;ŽŽ¡‘Ì*ÊniŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“w¾9ords“in“theŽŽ¡‘q¢italic–Tcorrection“table;ŽŽ¡‘<¯ÊnlŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“wš¾9ords“in“the“lig/k˜ern“table;ŽŽ¡‘MŽÊnkŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“wš¾9ords“in“the“k˜ern“table;ŽŽ¡‘—ƒÊneŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“w¾9ords“in“theŽŽ¡‘`~extensible–Tc¾9haracter“table;ŽŽ¡‘;ƒÊnpŽ‘%ÂÇ=Ž‘/…“n•¾9um“bAÇer–Tof“fonš¾9t“parameter“w˜ords.ŽŽŽŽŽŸVp They–û/are“all“nonnegativš¾9e“and“less“than“2Ÿü-=¼15Ž‘ÕNÇ.‘ÎW‘ÿ:«e“m˜ustŽ¡ha•¾9v“e‘TÊb‡cŽ›"°É‘8Ç1–‘ÆÉ“Êe‡cŽ˜É“Ç255,‘TÊneŽ‘?ÙÉ“Ç256,‘TandŽŸ€‘ ?üÊlfŽ‘gÇ=‘‘Æ6–8+“ÊlhŽ‘ `éÇ+“(Êe‡cŽ‘ \É“Êb‡cŽ‘ ”Ç+“1)“+“ÊnwŽ‘â´Ç+“ÊnhŽŽŽŽŸ‘UOYÇ+‘8ÊndŽ‘lxÇ+‘8ÊniŽ‘ €ˆÇ+‘8ÊnlŽ‘ Ç+‘8ÊnkŽ‘ÿ$Ç+‘8ÊneŽ‘µ/Ç+‘8ÊnpŽ‘ ÷È:ŽŽŽŸ €ÇNote–Òáthat“a“fonš¾9t“ma˜y“con˜tain“as“man˜y“as“256“c˜haractersŽ¡(if‘GYÊb‡cŽ›+ Ç=‘å#0–GYand“Êe‡cŽ˜Ç=‘å#255),‘SÚand“as“few“as“0“c¾9haracters“(ifŽ¡Êb‡cŽ‘ êÇ=‘‘ÆÊe‡cŽ‘ Ÿ"Ç+‘81).Ž¡‘ Inciden•¾9tally‘ÿ:«,‘ß7when›¶×t“w“o˜or˜more˜8-bit˜b“ytes˜are˜com-Ž¡bined–òÝto“form“an“in¾9teger“of“16“or“more“bits,‘*@the“mostŽ¡signi can•¾9t›×bb“ytes˜appAÇear˜ rst˜in˜the˜ le.‘bšThis˜is˜calledŽ¡BigEndian‘Torder.Ž¦ÐD.2.2Ž‘&5HÑTFM‘Õ9ÐdataŽŸÇThe–x6rest“of“the“ÌTFMŽ‘.Ç le“ma¾9y“bAÇe“regarded“as“a“sequenceŽ¡of–Tten“data“arraš¾9ys“ha˜ving“the“informal“spAÇeci cationŽŸoŸ‘».Êhe‡aderŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊlhŽ‘ äwÉ‘8Ç1]‘TËof‘ Êstu ŽŽŽ¡‘¦Bchar‘‘‰ffÕYŽ‘fiinfoŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[Êb‡cŽ– êÉ!‘‘ÆÊe‡cŽ“Ç]‘TËof‘ Êchar‘‘‰ffÕYŽ–fiinfo‘‘‰ffÕYŽ“wor‡dŽŽŽ¡‘—¤widthŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊnwŽ‘fBÉ‘8Ç1]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽ¡‘¢heightŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊnhŽ‘¹ÏÉ‘8Ç1]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽ¡‘—¤depthŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊndŽ‘ðÉ‘8Ç1]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽ¡‘9nitalicŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊniŽ‘É‘8Ç1]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽ¡‘¤Ålig‘‘‰ffÕYŽ‘fikernŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊnlŽ‘ “‘É‘8Ç1]‘TËof‘ Êlig‘‘‰ffÕYŽ–fikern‘‘‰ffÕYŽ“c‡ommandŽŽŽ¡‘|ýkernŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊnkŽ‘‚²É‘8Ç1]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽ¡‘ ûextenŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[0–‘ÆÉ!“ÊneŽ‘8½É‘8Ç1]‘TËof‘ Êextensible‘‘‰ffÕYŽ‘fir•‡e“cip“eŽŽŽ¡‘g¢p•‡ar“amŽŽ‘.CGÇ:‘ŠªËarra´CyŽ‘<æÇ[1–‘ÆÉ!“ÊnpŽ‘ †…Ç]‘TËof‘ Ê x‘‘‰ffÕYŽ‘fiwor‡dŽŽŽŽŽŸ €ÇThe–~”most“impAÇortanš¾9t“data“t˜ypAÇe“used“here“is“a“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘$Á‡Ç,Ž¡whicš¾9h–J®is“a“32-bit“represen˜tation“of“a“binary“fraction.‘¼AŽŽŽ ý‚’óÊ x‘‘‰ffÕYŽ‘fiwor‡dŽ’¼éÇis–yöa“signed“quan•¾9tit“y‘ÿ:«,‘™ with–yöthe“t•¾9w“o's‘yöcomplemen“tŽ¤ ’óof–ÛÊthe“enš¾9tire“w˜ord“used“to“represen˜t“negation.‘ BOf“the“32Ž¡’óbits–”in“a“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘#ÖõÇ,‘­àexactly“12“are“to“the“left“of“the“binaryŽ¡’ópAÇoin•¾9t;‘¢2th“us,‘` the–èlargest“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘)~ÃÇv‘ÿ|ralue“is“2048–¾›É“Ç2Ÿü-=¾¼20Ž‘ œgÇ,Ž¡’óand–<~the“smallest“is“ÉÇ2048.‘‘íW‘ÿ:«e“will“see“bAÇelo•¾9w,‘FHho“w“ev“er,Ž¡’óthat–Ÿ all“but“one“of“the“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘(Çv‘ÿ|ralues“will“lie“bAÇet•¾9w“eenŽ¡’óÉÇ16–Tand“+16.ŽŸ’ýThe– rst“data“arraš¾9y“is“a“bloAÇc˜k“of“header“information,Ž¡’ówhic•¾9h›Äòcon“tains˜general˜facts˜abAÇout˜the˜fon“t.‘¥The˜headerŽ¡’óm•¾9ust›lÑcon“tain˜at˜least˜t“w“o˜w“ords,‘¯and˜for˜ÌTFMŽ‘dÇ les˜toŽ¡’óbAÇe–TDused“with“Xeroš¾9x“prin˜ting“soft˜w˜are“it“m˜ust“con˜tainŽ¡’óat–™Îleast“18“w¾9ords,‘ºíallošAÇcated“as“describ˜ed“b˜elo¾9w.‘©ßWhenŽ¡’ódi erenš¾9t–œmkinds“of“devices“need“to“bAÇe“in˜terfaced,‘¾3it“ma˜yŽ¡’óbšAÇe–Tnecessary“to“add“further“w¾9ords“to“the“header“blo˜c¾9k.Ž©’óÊhe‡aderŽ’ˆÇ[0]ŽŽ’K£is–Ga“32-bit“c•¾9hec“k–Gsum“that“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ Œ‡will“copš¾9y“in˜toŽ¡’the‘²»ÌDVIŽ‘’8Çoutput–²» le“whenevš¾9er“it“uses“the“fon˜t.‘û’LaterŽ¡’on–³when“the“ÌDVIŽ‘’ÆÇ le“is“prin¾9ted,‘ƬpAÇossibly“on“anotherŽ¡’computer,‘èÓthe–‹Sactual“fon¾9t“that“gets“used“is“sup-Ž¡’pAÇosed–Ÿ_to“ha•¾9v“e–Ÿ_a“c•¾9hec“k–Ÿ_sum“that“agrees“with“the“oneŽ¡’in– the“ÌTFMŽ‘hØÇ le“used“bš¾9y“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ ˆ@.‘6•In“this“w˜a˜y‘ÿ:«,‘ 9users“willŽ¡’bšAÇe–Hœw¾9arned“ab˜out“p˜otenš¾9tial“incompatibilities.‘Ø3(Ho˜w-Ž¡’evš¾9er,‘:rif–3the“c˜hec˜k“sum“is“zero“in“either“the“fon˜t“ leŽ¡’or–œÑthe“ÌTFMŽ‘fdÇ le,‘¾°no“c•¾9hec“k–œÑis“made.)‘²çThe“actual“re-Ž¡’lation›§þbAÇet•¾9w“een˜this˜c“hec“k˜sum˜and˜the˜rest˜of˜theŽ¡’ÌTFMŽ’½Ç le–Bis“not“impAÇortanš¾9t;‘͹the“c˜hec˜k“sum“is“simplyŽ¡’an–©²idenš¾9ti cation“n˜um˜bšAÇer“with“the“prop˜ert¾9y“that“in-Ž¡’compatible–éfonš¾9ts“almost“alw˜a˜ys“ha˜v˜e“distinct“c˜hec˜kŽ¡’sums.Ž¦’óÊhe‡aderŽ’ˆÇ[1]ŽŽ’K£is–üba“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘';·Çcon¾9taining“the“design“size“of“theŽ¡’fonš¾9t,‘{5in–3¢units“of“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘»âpAÇoin˜ts“(7227“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘»âpAÇoin˜ts“=Ž¡’254–Üácm).‘sThis“n•¾9um“bAÇer›Üám“ust˜bAÇe˜at˜least˜1.0;‘@§it˜isŽ¡’fairly–‚carbitrary‘ÿ:«,‘¦but“usually“the“design“size“is“10.0Ž¡’for–úa“\10“pAÇoinš¾9t"“fon˜t,–¥i.e.,“a–úfon˜t“that“w˜as“designedŽ¡’to–¦ÎlošAÇok“b˜est“at“a“10-p˜oinš¾9t“size,‘¼éwhatev˜er“that“reallyŽ¡’means.‘:÷When–a“T‘þuAŸ¤šEŽ‘˜ŸXŽ‘ §Áuser“asks“for“a“fon¾9t“`ÌatŽ‘ ’­È‘vYÌptŽ‘ é…Ç',Ž¡’the–*De ect“is“to“o•¾9v“erride–*Dthe“design“size“and“replaceŽ¡’it–[bš¾9y“ÈVØÇ,‘Àand“to“m˜ultiply“the“Èx“Çand“Èy‘aÇcoAÇordinates“ofŽ¡’the–pAÇoinš¾9ts“in“the“fon˜t“image“b˜y“a“factor“of“È‘ãôÇdividedŽ¡’b¾9y–ëòthe“design“size.‘¥ë]All“other“dimensions“in“the‘mÌTFMŽŽ¡’ë] le–eUare“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘% ë]n•¾9um“bAÇers–eUin“design-size“units.‘áÆÇTh¾9us,Ž¡’for–Pfexample,›wÉthe“v‘ÿ|ralue“of“Êp•‡ar“amŽ‘, Ç[6],˜one“ÌemŽ‘øÇor“Ì\quadŽ‘ðTÇ,Ž¡’is–ñ«often“the“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘)&IÇv‘ÿ|ralue“2Ÿü-=¼20Ž‘ ÖOÇ=‘1È:Ç0,‘(Àsince“man¾9yŽ¡’fon•¾9ts›«ÿha“v“e˜a˜design˜size˜equal˜to˜one˜em.‘ùTThe˜otherŽ¡’dimensions–Òêm¾9ust“bAÇe“less“than“16“design-size“unitsŽ¡’in–çåabsolute“v‘ÿ|ralue;‘÷ th¾9us,‘ðüÊhe‡aderŽ‘yÇ[1]“and“Êp•‡ar“amŽ‘ÊÇ[1]“areŽ¡’the–\ only“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘%û Çen¾9tries“in“the“whole“ÌTFMŽ‘äÜÇ le“whoseŽ¡’ rst–Tbš¾9yte“migh˜t“bšAÇe“something“b˜esides“0“or“255.Ž¦’óÊhe‡aderŽ’ˆÇ[2–ŠªÈ:“:“:Ž‘ ßúÇ11]È;ŽŽ’6ý_Çif›8ppresen•¾9t,‘A7con“tains˜40˜b“ytes˜that˜iden-Ž¡’tify–°the“cš¾9haracter“coAÇding“sc˜heme.‘…The“ rst“b˜yte,Ž¡’whic•¾9h›Pâm“ust˜b•AÇe˜b“et•¾9w“een˜0˜and˜39,‘ßÅis˜the˜n“um-Ž¡’bšAÇer–âof“subsequen¾9t“ASCI˜I‘ábš¾9ytes“actually“relev‘ÿ|ran˜tŽ¡’in–ƒvthis“string,‘Þþwhicš¾9h“is“in˜tended“to“spAÇecify“whatŽ¡’c•¾9haracter-cošAÇde-to-sym“b˜ol›L©con“v“en“tion˜is˜presen“t˜inŽ¡’the–'7fon¾9t.‘RExamples“are“ÌASCIIŽ‘%î\Çfor“standardŽ¡’ASCIAÇI,‘=æÌTeX‘¹–textŽ‘.H|Çfor–=æfonš¾9ts“lik˜e“Ìcmr10Ž‘ ºÇand“Ìcmti9Ž‘ÝÔÇ,Ž¡’ÌTeX–¹–math“extensionŽ’`Ú;Çfor‘Í­Ìcmex10Ž‘!'1Ç,‘;ÂÌXEROX‘¹–textŽ‘9IKÇforŽŽŽŽŽŽŒ‹ùÑ[ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²TUGbGoat,–UUV‘ÿ*ªolume“0“(2001),“No.“0‘Ïpreliminary“draft,“18“Aug“2004“12:12‘sŸÌ²1017ŽŽ œ ý‚‘ÇXero•¾9x›ÐŽfon“ts,‘¿[ÌGRAPHICŽ‘/£Çfor˜sp•AÇecial-purp“ose˜non-Ž¤ ‘alphabAÇetic–iÑfon¾9ts,‘~ðÌUNSPECIFIEDŽ‘:â3Çfor“the“default“caseŽ¡‘when–¢íthere“is“no“information.‘ÅûªÇpAÇer››c•¾9haracter.‘ó²Eac“h˜Êchar‘‘‰ffÕYŽ–fiinfo‘‘‰ffÕYŽ“wor‡dŽ‘A–ÅÇcon-Ž¡tains–Tsix“ elds“pac•¾9k“ed›Tin“to˜four˜b“ytes˜as˜follo“ws.Ž¦Ë rst‘ŒÊb´CyteŽŽ‘/xÉÊwidth‘‘‰ffÕYŽ‘fiindexŽ‘bCÉÇ(8‘Tbits)Ž© Ësecond‘ŒÊb´CyteŽŽ‘;ÌyÊheight‘‘‰ffÕYŽ‘fiindexŽ‘uTÕÇ(4–v‘TÇ128,‘m~the“program“actually“bAÇe-Ž¡’ógins–ßœin“loAÇcation“256Êop‘‘‰ffÕYŽ‘fibyteŽ‘ ¢‚Ç+‘•Êr‡emainderŽ‘,ßÇ.‘{IThis“featureŽŽŽŽŽŽŒ‹úô¬ ¨ ýF ²ñÇÏpreliminary–UUdraft,“18“Aug“2004“12:12’ñ”preliminary“draft,“18“Aug“2004“12:12ŽŽŽ²1018‘sŸÌÏpreliminary–UUdraft,“18“Aug“2004“12:12‘²TUGbGoat,“V‘ÿ*ªolume“0“(2001),“No.“0ŽŽ œ ý‚Çalloš¾9ws–­access“to“large“Êlig‘‘‰ffÕYŽ‘fikernŽ‘&ø Çarra˜ys,‘ÒþbAÇecause“the“ rstŽ¤ instruction–Tm¾9ust“otherwise“appšAÇear“in“a“lo˜cation“É‘‘ÆÇ255.Ž¡‘ An¾9y–täinstruction“with“Êskip‘‘‰ffÕYŽ‘fibyteŽ‘*ÖòÈ>‘1 Ç128“in“the“Êlig‘‘‰ffÕYŽ‘fikernŽŽ¡Çarra•¾9y›mÿm“ust˜ha“v“e˜256Êop‘‘‰ffÕYŽ‘fibyteŽ‘ VÄÇ+‘IUÊr‡emainderŽ‘/¸ÐÈ<‘%ŽÊnlŽ‘ !Ç.‘&qIf˜suc“hŽ¡an–Minstruction“is“encoun¾9tered“during“normal“program“ex-Ž¡ecution,‘á3it–…:denotes“an“unconditional“halt;‘=-no“ligatureŽ¡command–Tis“pAÇerformed.Ž©‘ Extensible’ƒûZc¾9haractersŽ¡are–spAÇeci ed“bš¾9y“an“Êextensible‘‘‰ffÕYŽ‘fir•‡e“cip“eŽ‘Eå~Ç,‘M}whic˜h“consists“ofŽ¡four–1b¾9ytes“called“ÊtopŽ‘¾ÀÇ,‘8 ÊmidŽ‘¹áÇ,‘8 Êb‡otŽ‘ˆÇ,‘8 and“Êr‡epŽ‘Ñ¢Ç(in“this“order).Ž¡These– "bš¾9ytes“are“the“c˜haracter“coAÇdes“of“individual“piecesŽ¡used–4sto“build“up“a“large“sym¾9bAÇol.‘yÎIf“ÊtopŽ‘ÂÇ,‘|;ÊmidŽ‘þÇ,‘|;or“Êb‡otŽŽ¡Çare–έzero,‘ÜÏthey“are“not“presen¾9t“in“the“built-up“result.‘ãF‘ÿ:«orŽ¡example,‘Ž´an–C;extensible“vš¾9ertical“line“is“lik˜e“an“extensi-Ž¡ble›zcbrac•¾9k“et,‘“§except˜that˜the˜top˜and˜bAÇottom˜pieces˜areŽ¡missing.Ž¦The–ùE nal“pAÇortion“of“a“ÌTFMŽ‘LÇ le“is“the“Êp•‡ar“amŽ‘Î/Çarra•¾9y‘ÿ:«,‘þâwhic“hŽ¡is–Tanother“sequence“of“Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘'m›Çv‘ÿ|ralues.Ž©Êp•‡ar“amŽ‘Û¥Ç[1]–‘Æ=“ÊslantŽŽŽ‘Ig9Çis–Ëthe“amounš¾9t“of“italic“slan˜t,‘8rwhic˜hŽ¡‘is–Jþused“to“help“pAÇosition“accen¾9ts.‘ ½oF‘ÿ:«or“example,Ž¡‘ÊslantŽ‘++eÇ=‘¸©0È:Ç25–,©means“that“when“y¾9ou“go“up“one“unit,Ž¡‘yš¾9ou–ialso“go“0.25“units“to“the“righ˜t.‘±The“ÊslantŽ‘DâÇis“aŽ¡‘pure›3]n•¾9um“bAÇer;‘Bbit's˜the˜only˜Ê x‘‘‰ffÕYŽ‘fiwor‡dŽ‘'©­Çother˜than˜theŽ¡‘design–'Ûsize“itself“that“is“not“scaled“b¾9y“the“designŽ¡‘size.Ž¦Êp•‡ar“amŽ‘Û¥Ç[2]–‘Æ=“Êsp•‡ac“eŽŽŽ‘JâœÇis–\œthe“normal“spacing“bAÇet•¾9w“een‘\œw“ordsŽ¡‘in–¹gtext.‘¨Note“that“cš¾9haracter“Ì" "Ž‘ŸÇin“the“fon˜t“needŽ¡‘not›Tha•¾9v“e˜an“ything˜to˜do˜with˜blank˜spaces.Ž¦Êp•‡ar“amŽ‘Û¥Ç[3]–‘Æ=“Êsp•‡ac“e‘‘‰ffÕYŽ‘fistr“etchŽŽŽ‘háHÇis–/Qthe“amounš¾9t“of“glue“stretc˜h-Ž¡‘ing›TbAÇet•¾9w“een˜w“ords.Ž¦Êp•‡ar“amŽ‘Û¥Ç[4]–‘Æ=“Êsp•‡ac“e‘‘‰ffÕYŽ‘fishrinkŽŽŽ‘g?Çis–-the“amoun¾9t“of“glue“shrinkingŽ¡‘bAÇet•¾9w“een‘Tw“ords.Ž¦Êp•‡ar“amŽ‘Û¥Ç[5]–‘Æ=“Êx‘‘‰ffÕYŽ‘fiheightŽŽŽ‘UÊÇis–Q¯the“heighš¾9t“of“letters“for“whic˜h“ac-Ž¡‘cenš¾9ts–Tdon't“ha˜v˜e“to“bAÇe“raised“or“lo˜w˜ered.Ž¦Êp•‡ar“amŽ‘Û¥Ç[6]–‘Æ=“ÊquadŽŽŽ‘IÇis–Tthe“size“of“one“em“in“the“fon¾9t.Ž¦Êp•‡ar“amŽ‘Û¥Ç[7]–‘Æ=“Êextr•‡a‘‘‰ffÕYŽ‘fisp“ac“eŽŽŽŽ¡‘Çis–ˆAthe“amoun¾9t“added“to“Êp•‡ar“amŽ‘cæÇ[2]“at“the“ends“ofŽ¡‘sen¾9tences.Ž¦‘ When–)>±the“c¾9haracter“coAÇd-Ž¡ing–ò¸scš¾9heme“is“ÌTeX–¹–math“symbolsŽ‘OŒÇ,‘*the“fon˜t“is“suppAÇosedŽ¡to›áÚha•¾9v“e˜15˜additional˜parameters˜called˜Ênum1Ž‘ÿÍÇ,‘üÊnum2Ž‘2ïÇ,Ž¡Ênum3Ž‘óÇ,‘Q—Êdenom1Ž–#,Ç,‘Q—Êdenom2Ž“Ç,‘Q—Êsup1Ž–/†Ç,‘Q—Êsup2Ž“Ç,‘Q—Êsup3Ž“Ç,‘Q—Êsub1Ž–¶¢Ç,‘Q—Êsub2Ž“Ç,Ž¡Êsup•‡dr“opŽ‘´Ç,‘÷¬Êsub•‡dr“opŽ‘&|Ç,‘÷¬Êdelim1Ž–#1Ç,‘÷¬Êdelim2Ž“Ç,‘÷¬and‘0ÏÊaxis‘‘‰ffÕYŽ‘fiheightŽ‘2[ÎÇ,Ž¡respAÇectivš¾9ely‘ÿ:«.‘ ü“When–µ`the“c˜haracter“coAÇding“sc˜heme“isŽ¡ÌTeX–¹–math“extensionŽ‘U ŒÇ,‘/the–ö«fonš¾9t“is“suppAÇosed“to“ha˜v˜e“sixŽ¡additional–ÃFparameters“called“Êdefault‘‘‰ffÕYŽ–firule‘‘‰ffÕYŽ“thicknessŽ‘^ ÚÇandŽ¡Êbig‘‘‰ffÕYŽ–fiop‘‘‰ffÕYŽ“sp‡acing1Ž–BYÇthrough‘TÊbig‘‘‰ffÕYŽ–fiop‘‘‰ffÕYŽ“sp‡acing5Ž“Ç.ŽŽŽŽŽŽŒø¢ƒ’À;è¨Ô ó]”q[˜ cmsl9ó[Œ-ø cmcsc10óQŒ-ø cmcsc10ó&ßê logo10ó !",š cmsy10ó  b> cmmi10óKñ`y cmr10óÙ“ Rcmr7ù%éßßßßßßß