diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/utilities/mf2ps/MFfonts |
Initial commit
Diffstat (limited to 'fonts/utilities/mf2ps/MFfonts')
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/README | 9 | ||||
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/move | 9 | ||||
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/myplain.base | 184 | ||||
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/myplain.log | 17 | ||||
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/myplain.mf | 622 | ||||
-rw-r--r-- | fonts/utilities/mf2ps/MFfonts/bases/myplain.tfm | 1 |
6 files changed, 842 insertions, 0 deletions
diff --git a/fonts/utilities/mf2ps/MFfonts/bases/README b/fonts/utilities/mf2ps/MFfonts/bases/README new file mode 100644 index 0000000000..6dbe588d1e --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/README @@ -0,0 +1,9 @@ +To prevent tarring from clobbering your original, I have renamed the plain* +files here to myplain*.. but to run them, they have to be renamed back to +plain*.. do so after moving the originals some place out of the way + +the shell script move does this.. + +all the plain* files are the ones I used +plain.base and other plain.* file were generated by +inimf running on plain.mf diff --git a/fonts/utilities/mf2ps/MFfonts/bases/move b/fonts/utilities/mf2ps/MFfonts/bases/move new file mode 100644 index 0000000000..8f3d5a571b --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/move @@ -0,0 +1,9 @@ +mkdir originals +mv plain.base originals +mv plain.log originals +mv plain.mf originals +mv plain.tfm originals +mv myplain.base plain.base +mv myplain.log plain.log +mv myplain.mf plain.mf +mv myplain.tfm plain.tfm diff --git a/fonts/utilities/mf2ps/MFfonts/bases/myplain.base b/fonts/utilities/mf2ps/MFfonts/bases/myplain.base new file mode 100644 index 0000000000..25d669be59 --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/myplain.base @@ -0,0 +1,184 @@ +Hu04V !$'*-0369<?BEHKNQTWZ]`abcdefghijklmnopqrstuvwxyz{|}~24p"+6@CJv&a!\?jsF| +"%2b},16=DSYgju
$ ( - 8 ? F P Y f i n u x + + + + +! +# +& +( +* +, +3 +: +@ +G +R +Y +` +g +x + + + + + + + + + + + +)6BO[hlqtx".7EGOU[hqwy~
%
'
,
1
6
@
K
W
[
]
b
i
n
p
s
{
+)@n>h #&)7BDexIqTl 29<>R #2BT).1ARZ/dn!To#+0;@g)[8]_bhr~+g3`.\Ez3?h ) ` t !'!_!!!!!!"
""" "K"T"z""##D#w######$*$Z$e$t$$$$$$$$$$%%%%@%n%%%%%%%&&&&&2&l&&&'!'Q'''( +((N(}((())U))))**@*s**++L+P+++++,,/,1,b,,,-->-k---./.V.z.../$/F/{//0 +0?0m000111&1a11112#2S2e22333?3{33344S4s4445%5O5n55566/6b6677B7^778 88D8v8889.919D9`999:&:]::::;8;A;q;;<<A<o<<==7=G=s=v=z===> >->:>?>D>{>>>??:?e?o???@'@:@C@L@P@\@l@n@v@y@}@@@@@@@@@@@A-A4A>ABAIASA[AbAoAABB3BGBtBBBC'CbCrCCCDD@DkDDDE
E7ELEEEEEF FF>F^FFFGG!G2GbGjGrG|GGGGHH)H.H:HGHTHHHHI-I:IOIuIwI{IIIJ J0JGJMJvJyJJJJJK
K"K3K6K8KKK~KKKKKKLLLLL,LWLgLxL}LLLLLLMM<MQMXMbMmMvMMMMMMMMMMMMMMMMMMMMMMMMNNNN
NNN$N.N8NBNJNVN_NdNoNxNNNNNNNNNNNNNNNNNNNNNNOOOO%O'OBOSOUOWOpOxOzOOOOOOOOOOOOOOOOOOOOOOOPPPP P"P$P&P(P*P,P.P:PAPMPZPmPPPPPPQ Q QBQLQQQVQ`QdQiQyQQQQQQQQQQQQQQQQQQRRRRR!R(R/R2R5R9R=R@RCRGRKRTR^RmR{R}RRRRRRRRRRRRRRRRSSSSSSS.S9S=SHSPSXS_SgSoSxSSSSSSSSSSSSSSSSSSSSSSSSSSTTT +TTT!T(T0T5T:TCTMTVT`ThTqTzTTTTTTTTTTTTTUU +UUU#U,U6UGUZUlUyUUUUUUUUUVV +VVV#V0V:VNVWVyVVVVV^^@^^A^^B^^C^^D^^E^^F^^G^^H^^I^^J^^K^^L^^M^^N^^O^^P^^Q^^R^^S^^T^^U^^V^^W^^X^^Y^^Z^^[^^\^^]^^^^^_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^^?buffer sizepool sizenumber of strings???End of file on the terminal!! (That makes 100 errors; please try again.)? Type <return> to proceed, S to scroll future error messages,R to run without stopping, Q to run quietly,I to insert something, E to edit your file,1 or ... or 9 to ignore the next 1 to 9 tokens of input,H for help, X to quit.OK, entering batchmodenonstopmodescrollmode...insert>I have just deleted some text, as you asked.You can now delete more, or insert, or whatever.Sorry, I don't know how to help in this situation.Maybe you should try asking a human?Sorry, I already gave what help I could...An error might have occurred before I noticed any problems.``If all else fails, read the instructions.''Emergency stopMETAFONT capacity exceeded, sorry [If you really absolutely need more capacity,you can ask a wizard to enlarge me.This can't happen (I'm broken. Please show this to someone who can fix can fixI can't go on meeting you like thisOne of your faux pas seems to have wounded me deeply...in fact, I'm barely conscious. Please fix it and try again.InterruptionYou rang?Try to insert some instructions for me (e.g.,`I show x'),unless you just want to quit by typing `X'.Missing `' has been insertedArithmetic overflowUh, oh. A little while ago one of the quantities that I wascomputing got too large, so I'm afraid your answers will besomewhat askew. You'll probably have to adopt differenttactics next time. But I shall try to carry on anyway.Square root of has been replaced by 0Since I don't take square roots of negative numbers,I'm zeroing this one. Proceed, with fingers crossed.Pythagorean subtraction +-+Logarithm of Since I don't take logs of non-positive numbers,angle(0,0) is taken as zeroThe `angle' between two identical points is undefined.main memory sizeAVAIL list clobbered at Double-AVAIL list clobbered at Doubly free location at Bad flag at New busy locs:LINK(INFO(vacuousbooleanunknown booleanstringunknown stringpenunknown penfuture penpathunknown pathpictureunknown picturetransformpairknown numericdependentproto-dependentnumericindependenttoken liststructuredunsuffixed macrosuffixed macroundefinedtruefalsenullpicturenullpenjobnamereadstringpencirclenormaldeviateoddknownunknownnotdecimalreversemakepathmakepentotalweightocthexASCIIcharlengthturningnumberxpartypartxxpartxypartyxpartyypartsqrtmexpmlogsindcosdflooruniformdeviatecharexistsanglecycle++orand<=>=<>rotatedslantedscaledshiftedtransformedxscaledyscaledzscaledintersectiontimessubstringsubpathdirectiontimepointprecontrolpostcontrolpenoffset..tracingtitlestracingequationstracingcapsulestracingchoicestracingspecstracingpenstracingcommandstracingrestorestracingmacrostracingedgestracingoutputtracingstatstracingonlineyearmonthdaytimecharcodecharextcharwdcharhtchardpcharicchardxchardydesignsizehpppvpppxoffsetyoffsetpausingshowstoppingfontmakingproofingsmoothingautoroundinggranularityfillinturningcheckwarningcheck at line a bad variablefiendgroupenddefendfor INACCESSIBLEhash sizeEQUIV(:=addtoatatleastbegingroupcontrolscullcurldelimitersdisplayeveryjobexitifexpandafterfrominwindowinterimletnewinternalofopenwindowrandomseedsavescantokensshipoutstepstrtensiontountiltoken ETC. CLOBBERED IMPOSSIBLE NONEXISTENT BAD[](EXPR(SUFFIX(TEXT->>-><expr>-><expr>of<primary>-><suffix>-><text>->(SAVED)varxxxyyxyy%CAPSULEpart struct{restoring Path{open?}..control? ..{curl ..tension and ..controls ??, before choices, after choicesSome number got too bigThe path that I just computed is out of range.So it will probably look funny. Proceed, for a laugh.path sizeEdge structurerow |Scaled picture would be too bigI can't yscale the picture as requested---it wouldmake some coordinates too large or too small.Proceed, and I'll omit the transformation.I can't xscale the picture as requested---it wouldmove table sizeTracing edges (weight (No new edges added.)Cycle spec % beginning in octant `% entering octant ` & cycleENENNENNWWNWWSWSSWSSEESE ..controls % segment (, before subdivision into octants, after subdivision, after subdivision and double autorounding, after subdivision and autoroundingCurve out of rangeAt least one of the coordinates in the path I'm about todigitize was really huge (potentially bigger than 4095).So I've cut it back to the maximum size.The results will probably be pretty wild.rounding table sizePen polygon .. cycle .. (newly created)Pen too largeThe cycle you specified has a coordinate of 4095.5 or more.So I've replaced it by the trivial path `(0,0)..cycle'.Pen cycle must be convexThe cycle you specified either has consecutive equal pointsor turns right or turns through more than 360 degrees.pen polygon size@ Octant offset), from to @ retrograde line from @ transition line , from dep*4Value is too large (The equation I just processed has given some variablea value of 4096 or more. Continue and I'll try to copewith that big value; but it might be dangerous.(Set warningcheck:=0 to suppress this message.)#### ## Bad PREVDEP at Out of order at Redundant equationI already knew that this equation was true.But perhaps no harm has been done; let's continue.[unknown command code!]<*><insert><scantokens>l.<forever> <argument> <recently read> <to be read again> <inserted text> <for()> input stack sizetext input levelsendinputIncomplete if; all text was ignored after line A forbidden `outer' token occurred in skipped text.This kind of error happens when you say `if...' and forgetthe matching `fi'. I've inserted a `fi'; this might work.The file ended while I was skipping conditional text.File endedForbidden token found while scanning I suspect you have forgotten an `enddef',causing me to read past where you wanted me to stop.I'll try to recover; but if the error is serious,you'd better type `E' or `X' now and fix your file.to the end of the statementA previous error seems to have propagated,a text argumentIt seems that a right delimiter was left out,the definition of the text of a loopI suspect you have forgotten an `endfor',Runaway text?definition?loop?Text line contains an invalid characterA funny symbol that I can't read has just been input.Continue, and I'll forget that it ever happened.Incomplete string token has been flushedStrings should finish on the same line as they began.I've deleted the partial string; you might want toinsert another by typing, e.g., `I"new string"'.Enormous number has been reducedI can't handle numbers bigger than about 4095.99998;so I've changed your constant to that maximum amount.(Please type a command or say `end')*** (job aborted, no legal end found)=>defvardefprimarydefsecondarydeftertiarydefforforsuffixesforeverquote#@@#Missing symbolic token insertedSorry: You can't redefine a number, string, or expr.I've inserted an inaccessible symbol so that yourdefinition will be completed without mixing me up too badly.Sorry: You can't redefine my error-recovery tokens.The next thing in this `def' should have been `=',because I've already looked at the definition heading.But don't worry; I'll pretend that an equals signwas present. Everything from here to `enddef'will be the replacement text of this macro.exprsuffixtextprimarysecondarytertiaryThis variable already starts with a macroAfter `vardef a' you can't say `vardef a.b'.So I'll have to discard this definition.Missing parameter type; `expr' will be assumedYou should've had `expr' or `suffix' or `text' here.parameter stack sizeExtra `endfor'I'm not currently working on a for loop,so I had better not try to end anything.inputLost loopI'm confused; after exiting from a loop, I still seemto want to repeat it. I'll try to forget the problem.No loop is in progressWhy say `exitif' when there's nothing to exit from?After `exitif <boolean exp>' I expect to see a semicolon.I shall pretend that one was there.*** (loop confusion)Not a stringI'm going to flush this expression, sincescantokens should be followed by a known string.)<-Too many arguments to Missing `I'm going to assume that the comma I just read was aright delimiter, and then I'll begin expanding the macro.You might want to delete some tokens before continuing.Missing argument to That macro has more parameters than you thought.I'll continue by pretending that each missing argumentis either zero or null.I've finished reading a macro argument and am about toread another; the arguments weren't delimited correctly.I've gotten to the end of the macro parameter list. for I've got the first argument; will look now for the other.ifelseelseifThere should've been a colon after the condition.{true}{false}Extra I'm ignoring this; it doesn't match any if.Improper When you say `for x=a step b until c',the initial value `a' and the step size `b'and the final value `c' must have known numeric values.The next thing in this loop should have been `=' or `:='.was present, and I'll look for the values next.The next thing in this loop should have been a `:'.So I'll pretend that a colon was present;everything from here to `endfor' will be iterated. ENDFOR{loop value=initial valuestep sizeI assume you meant to say `until' after `step'.So I'll look for the final value and colon next.final valueinput file nameI can't find file `I can't write on file `'..mfPlease type another *** (job aborted, file error in nonstop mode): mfput.log**transcript file name file name for outputFile names can't appear within macrosSorry...I've converted what follows to tokens,possibly garbaging the name you gave.Please delete the tokens and insert the name again.exp (see the transcript file) (future pen)linearform>> recycle### = A primary expression can't begin with `I'm afraid I need some sort of value in order to continue,so I've tentatively inserted `0'. You may want todelete this zero and insert something else;see Chapter 27 of The METAFONTbook for an example.Nonnumeric ypart has been replaced by 0I thought you were giving me a pair `(x,y)'; butafter finding a nice xpart `x' I found a ypart `y'that isn't of numeric type. So I've changed y to zero.(The y that I didn't like appears above the error message.)A group begun on line never endedI saw a `begingroup' back there that hasn't been matchedby `endgroup'. So I've inserted `endgroup' now.Division by zeroI'll pretend that you meant to divide by 1.Improper subscript has been replaced by zeroA bracketed subscript must have a known numeric value;unfortunately, what I found was the value that appears justabove this error message. So I'll try a zero subscript.Variable has been obliteratedIt seems you did a nasty thing---probably by accident,but nevertheless you nearly hornswoggled me...While I was evaluating the right-hand side of thiscommand, something happened, and the left-hand sideis no longer a variable! So I won't change anything.While I was evaluating the suffix of this variable,something was redefined, and it's no longer a variable!In order to get back on my feet, I've inserted `0' instead.copyI've scanned an expression of the form `a[b,c',so a right bracket should have come next.I've seen a `[' and a subscript value, in a suffix,A secondaryA tertiaryPen path must be a cycleI can't make a pen from the given path.AnUndefined coordinates have been replaced by (0,0)I need x and y numbers for this part of the path.The value I found (see above) was no good;so I'll try to keep going by using zero instead.(Chapter 27 of The METAFONTbook explains thatyou might want to type `I ???' now.)Undefined x coordinate has been replaced by 0I need a `known' x value for this part of the path.Undefined y coordinate has been replaced by 0I need a `known' y value for this part of the path.I've scanned a direction spec for part of a path,so a right brace should have come next.Improper curl has been replaced by 1A curl must be a known, nonnegative number.I've got the x coordinate of a path direction;will look for the y coordinate next.A path join command should end with two dots.Improper tension has been set to 1The expression above should have been a number > 3/4.Paths don't touch; `&' will be changed to `..'When you join paths `p&q', the ending point of pmust be exactly equal to the starting point of q.So I'm going to pretend that you said `p..q' instead.Undefined condition will be treated as `false'The expression shown above should have had a definitetrue-or-false value. I'm changing it to `false'.*** (cannot readstring in nonstop modes)unknown pairunknown numericNot implemented: I'm afraid I don't know how to apply that operation to thatparticular type. Continue, and I'll simply return theargument (shown above) as the result of the operation.)}String contains illegal digitsI zeroed out characters that weren't in the range 0..7.I zeroed out characters that weren't hex digits.Number too large (I have trouble with numbers greater than 4095; watch out.combination of types. Continue, and I'll return the secondargument (see above) as the result of the operation.{(The quantities shown above have not been equated.Oh dear. I can't decide if the expression above is positive,negative, or zero. So this comparison test won't be `true'.Unknown relation will be considered false)*(You're trying to divide the quantity shown above the errormessage by zero. I'm going to divide it by one instead.Improper transformation argumentThe expression shown above has the wrong type,so I can't transform anything using it.Transform components aren't all knownI'm unable to apply a partially specified transformationexcept to a fully known pair or transform.That transformation is too hardI can apply complicated transformations to paths,but I can only do integer operations on pictures.Too far to shiftI can't shift the picture as requested---it wouldA statement can't begin with `I was looking for the beginning of a new statement.If you just proceed without changing anything, I'll ignoreeverything up to the next `;'. Please insert a semicolonnow in front of anything that you don't want me to delete.(See Chapter 27 of The METAFONTbook for an example.)Extra tokens will be flushedI've just read as much of that statement as I could fathom,so a semicolon should have been next. It's very puzzling...but I'll try to get myself back together, by ignoringIsolated expressionI couldn't find an `=' or `:=' after theexpression that is shown above this error message,so I guess I'll just ignore it and carry on.Improper `:=' will be changed to `='I didn't find a variable name at the left of the `:=',so I'm going to pretend that you said `=' instead.)=(Internal quantity `' must receive a known valueI can't set an internal quantity to anything but a knownnumeric value, so I'll have to ignore this assignment.Equation cannot be performed (I'm sorry, but I don't know how to make such things equal.(See the two expressions just above the error message.)Redundant or inconsistent equationAn equation between already-known quantities can't help.But don't worry; continue and I'll just ignore it.Inconsistent equationThe equation I just read contradicts what was said before. (off by Declared variable conflicts with previous vardefYou can't use, e.g., `numeric foo[]' after `vardef foo'.Proceed, and I'll ignore the illegal redeclaration.Illegal suffix of declared variable will be flushedVariables in declarations must consist entirely ofnames and collective subscripts, e.g., `x[]a'.Are you trying to use a reserved word in a variable name?I'm going to discard the junk I found here,up to the next comma or the end of the declaration.Explicit subscripts like `x15a' aren't permitted.Extra `endgroup'I'm not currently working on a `begingroup',enddumpAlways say `randomseed:=<numeric expression>'.Unknown value will be ignoredYour expression was too random for me to handle,so I won't change the random seed just now.{randomseed:=errorstopmodeinnerouterI found no right delimiter to match a left one. So I'veput one in, behind the scenes; this may fix the problem.The token `' is no longer a right delimiterStrange: This token has lost its former meaning!I'll read it as a right delimiter this time;but watch out, I'll probably miss it later.(%CAPSULE)' isn't an internal quantitySomething like `tracingonline' should follow `interim'.You should have said `let symbol = something'.was present. The next token I read will be `something'.number of internalsshowtokenshowstatsshowshowvariableshowdependencies> (outer) lefright delimiter that matches tagvariablemacro:'d macro:[repeat the loop]Memory usage still untouched)String usage =macro:OKThis isn't an error message; I'm just showing something.contourdoublepathalsowithpenwithweightdroppingkeepingImproper typeNext time say `withweight <known numeric expression>';I'll ignore the bad `with' clause and look for another.Next time say `withpen <known pen expression>';Weight must be -3, -2, -1, +1, +2, or +3 is the wrong type (I was looking for a "known" picture variable.So I'll not change anything just now.Not a suitable variableAt this point I needed to see the name of a picture variable.(Or perhaps you have indeed presented me with one; I mighthave missed it, if it wasn't followed by the proper token.)Improper `addto'This expression should have specified a known picture.This expression should have been a known path.Not a cycleThat contour should have ended with `..cycle' or `&cycle'.Strange path (turning number is zero)Backwards path (turning number is negative)The path doesn't have a counterclockwise orientation,so I'll probably have trouble drawing it.(See Chapter 27 of The METAFONTbook for more help.)Bad window numberIt should be the number of an open window.Improper `openwindow'Say `openwindow k from (r0,c0) to (r1,c1) at (x,y)',where all quantities are known and k is between 0 and 15.Bad culling amountsAlways cull by known amounts that exclude 0.messageerrmessageerrhelpA message should be a known string expression.(That was another `errmessage'.)This error message was generated by an `errmessage'command, so I can't give any explicit help.Pretend that you're Miss Marple, examine all clues,and deduce the truth by inspired guesses.Enormous has been reducedFont metric dimensions must be less than 2048pt.charlistligtableextensibleheaderbytefontdimenInvalid code has been replaced by 0I was looking for a number between 0 and 255, or for astring of length 1. Didn't find it; will use 0 instead.Character code is already in a ligtablein a charlistIt's not legal to label a character more than once.Improper locationI was looking for a known, positive number.For safety's sake I'll ignore the present command.A colon should follow a headerbyte or fontinfo location.ligtable sizeIllegal ligtable stepI was looking for `=:' or `kern' here.=:kernLigature program too longAfter 256 ligtable steps, no more colons are allowed.Improper kernThe amount of kern should be a known numeric value.I'm processing `extensible c: t,m,b,r'.Improper font parameter(some values had to be adjusted by as much as pt)(illegal design size has been changed to 128pt).tfmfile name for font metricsFont metrics written on (a font metric dimension font metric dimensions had to be decreased) METAFONT output .gfgf (just shipped out)(There's unbounded black in character shipped out!)specialnumspecialUnsuitable expressionThe expression shown above has the wrong type to be output.title Output written on character, bytes). (INIMF) strings of total length memory locations dumped; current usage is symbolic tokens (preloaded base=.basebase file nameBeginning to dump on file Transcript written on (end occurred when on line was incomplete)(see the transcript file for additional information)(dump is performed only by INIMF)debug # (-1 to exit):myplainmyplain.mfmyplain.logbase_namebase_versionplain1.0uptodowntoexitunlessrelax\\]]-----infinity...gobblegobbledgghide???stopinteractloggingalltracingalltracingnoneepsepsilonrightleftupdownoriginquartercirclehalfcirclefullcircleunitsquareidentityblankpictureunitpixeldittocapsule_defpensquarepenrazorpenspeckwhateverabsroundhroundvroundo__o_ceilingbytedirunitvectorinverseT_counterclockwisetensepathmoddivdotprod**takepowerUndefined power: **directiondirectionpointa_The direction doesn't occurintersectionpointx_y_The paths don't intersectsoftjoinc_join_radiusb_incrdecrreflectedaboutrotatedaroundrotatedaboutminu_setu_uumaxflexn_z_dz_superellipseinterpathsolvetrue_xfalse_xtx_fx_tolerancefix_unitsmmpixels_per_inchcmptpcddccbpinaspect_ratioblackero_correctiondefine_pixelsdefine_whole_pixelsdefine_whole_vertical_pixelsdefine_good_x_pixelsgooddefine_good_y_pixelsdefine_blacker_pixelsdefine_whole_blacker_pixelsdefine_whole_vertical_blacker_pixelsdefine_corrected_pixelsdefine_horizontal_corrected_pixelslowres_fixratiofirstmode_setupmodeproofcurrenttransforminput mode_namemagdisplayingextra_setupclearitpickupsmodemagstepmode_defnumber_of_modesproofproof_proof_smokesmokesmoke_smoke_grayfont blackmakeboxmaketickslowreslowreslowres_lowres_midmidmid_mid_sunsunsun_sun_localfontcurrentpencurrentpen_pathcurrentpicturet_filladdto_currentpicturedrawfilldrawdrawdotdef_pen_path_unfillundrawunfilldrawundrawdoterasedefault_wt_cullitcutdrawcutoffthetapic_cut_pen_lftpen_rtpen_toppen_botnumeric_pickup_pen_pickup_pen_Unknown penclearpenpen_lft_pen_rt_pen_top_pen_bot_pen_path_pen_count_savepenclear_pen_memorylftrttopbotpenpospenstrokepath_cyclestroke_makelabellcode_nodot 1 2 3 4 0 5 6 7 8labelspenlabels$$rangenumtokthruproofrulerulescreenrulerulepenmakegridxlistylisttitlefonttitlefont labelfontlabelfont grayfontgrayfont slantfontslantfont proofoffsetoffsetproofrulethicknessrulethicknessbegincharw_sharph_sharpd_sharpclearxyextra_begincharitalcorrx_sharpchange_widthendcharextra_endcharshipitshowitfont_sizefont_slantfont_normal_spacefont_normal_stretchfont_normal_shrinkfont_x_heightfont_quadfont_extra_spacefont_identifierfont_identifier_font_coding_schemefont_coding_scheme_UNSPECIFIEDscreen_rowsscreen_colscurrentwindowopenitshowit_screencharsshowit;screenstrokesimagerulesmakebox(screenrule);gfcornerslet makebox=maketicks;proofing:=1;nodisplaysdisplaying:=0;notransformsbye (preloaded base=myplain 89.3.8)ЊЊЊЊ݊ЊЊ@7orrr +rrrrrsssss"4s>sA4kksOs\sbsfs~sssssskksTksskVsstk@tttt%t0!t:t<Z4)tEtFËTZtNt`k<tltwiiffoo ll uxxrru~ { ~{ ъЋioukkkky,Ykk{Y{kԋ{y,{ZՋ**UU[lÌl([ll"l2(l8lDlT(lZU****U +UUlf.lv(ql(zl(y"y,(%*%lC 222?"u0tz[llU.ll2mmmmmeClmnnnlÌUnrql
6 +kn|ffn33nfnvnnn+Llnffn33nf::n,nnnqHl +Jm<ml،eknffn33nfnnnnD
UUUUUUUUky,ky,n?n=nnnn +)Rnnn9# n_'o.~#\oЍf_Z}B|r~.
!5}}|~~|<!
C}Z~r|BJ!
QZZrBBrX
!h+gooffoIoXo`oq-opp"'p<p?э~HE$ +)R$>@$s荪$MK!@}Z~r|B!
ZZrBBr9G!&ǍՋ$ڍߍ$"$&0$$d$!@ZZrBBr9G!fnpHpppppHEp=pffqMkh9q*qCqIqjqn +Ћs4 +ЋmqxdЊЎQ ] _ g&>S>Qgrr +r
{rr&oMr]urzrώg}yu_qI[tttttttttttttttttttttttttttttttuuuu%u*R(<uo + + &,)#,&#)82 +/5 +28 5/A>;DD;>APM +MP GJ +JG V\YS\VSYhb +_e +bh e_ъАh>8VP &iϊ"
u +#k +,Q
Y#Q +Б`*]b]БgdidБnekpkБurwrБ|qy~yБϑʊȊƊhh,h2{i
i$Yi)i.i3i8i=iBɑiY +ifit +i +ii +i +iiՑiiijj[jj/jMj\jjjjjjj NjjjjY j˒"%%".+(.+(4411::77@CC==@LIFLIFъВL4.@:"{OjYjj{k(k0kB-kI܍[<يqЊhhhhh]h>hhohhБ'hgh2hghhБ'hgh2hghhБ'hh2hhhЊ<hhh<huh6hh>huhhhAhh̊Б'h[h2h[hhҊЊ*-h'h.h)h)h6hhh܊Њ6hhhЊh2h6hhЊzh-hyhhhЊh'h6hhhЊh<h=h>hhoh<hhhЊ*-.h)ii*ici-ii)iiii i +iii*i Zizi-i Ziyi)iniiЊi2iiiЊi2i
i i!Њi#;7i%i&Њi(;7i*i+Њi-;7i/i0Њi2;7i4i5Њi7;7i9i:Њi<;7i>i?ЊiA;7iCiDЊiF2iGiHiIЊiK<iL*iM*iNiOiiP-iQiR+iSiT,iUxiV)iW-iX*.iZi[ii\-i]i^+i_i`,iaxib)ic)id ie;7igihii6ij<ik*il*iminiio-ipyiq)ir-is*.iuiviiw-ixyiy)iz)i{ i|<i}*i~*iiei.i-iyi)i-i*iiei.-iyi)i)i i;ixi->iyiii6i<i*i*izi-ixi)i-i*izi-.ixi)i)i i<i*i*izi-)i-i*izi-)i)i i;iiei.i-iiii->iziiii iЊi<i*i*iii-ii+ii,ixi)i-i*iiii-ii+ii,ixi)i)i i;7iii6i<i*i*iiii-iyi)i-i*iiei.i-iyi)i)i i;ixi->iyiii6i<i*i*izi-ixi)j-j*jzj-)j)j j;jj ej +.j-jj
ij->jzjijj jЊjj<jj<j*jj)jj;?j j!j"<j#j$<j%xj&2j'j(j)<j**j+j,)j-j.;?j0j1j2<j3[j4j5j6Бj8,j9;j:j;.j<;j=j>+j?j@?jAxjBjCxjD2jExjFjGЊjIjJ2jKjL;?jNjOjPjQЊ<jSjTjU<jVjW<jXjY<jZj[<2j]j^<j_*j`ja+jbjc)jd)je2jfejg<jh*jijj+jkjl)jm)jn2joijp<jq*jrjs+jtju)jvZjw2jxxjy<jzj{2j|j}<j~j2jj<jj2jj<j;jjjj;jjjj2jjnjjjjjjjjj<jnjjЊjjj<jjljj<jjj Zjj'jnjjj Zjj'jnjjj Zjj'jnjjj Zjj'
jnjjʊЊj jϊj jQjjjj)j6jjjjjڊЊj܋jj<jjljj<jjjj<jjljj<yjjjjЊ6j^jyj\j?j-j;jj^#,jj>jyjijkkЊ XkkЊ^kk\k?k k +k,k6k
6k<k*kk%k{k-kk%kk)k Zkk;k k>k%kk;k sk!-k"-k#mk$>k%k&k';?k)k*k+nk-k. k/kFk16k2<k3*k4%k5{k6-k7%k8k9)k: Zk;k<;k= k>>k?%k@kA;?kCkDkEnkGkJkH kckK*kLkMkN)kOkPkQ<kR*kSkTkU)kVlkWkX<kYkZ'k[ Zk\k]k^;k_k`kakbnkdkekfkgЊ<kikj<.kl2kmkn<kokp2kqkr<ksktkukv<kwkxkykz)k{k|k}<k~`kkkskk"kkk<.kkmkk"kkk<02kkYknkkЊkQkkskkkkmkkk;kkk;kmkkQkk6k<k k2kfkk;ksk-kmk>kfkkkk*ksk Zkzk,kmk Zkzk)6>k Zkzk<k*ksk Zkyk,kmk Zkyk)<>k Zkyk<kkџk*D-kk)k>k*kmk Zkzk.ksk Zkzk-kmk Zkyk.ksk Zkyk)knkkkkl
k<k*kk*k*-k<k)k,kk)k)k<k>kk*k*-l<l)l,ll)l<lll <l +llnlll/l<l*ll*l*-ll)l,ll)l)l<l>ll *l!*-l#l$)l%,l&l')l(<l)l*l+<l,l-l.nl0l1lQl3<l4*l5l6*l7*-l9Bl:)l;,l<l=)l>)l?<l@>lAlB*lC*-lEBlF)lG,lHlI)lJ<lKlLlM<lNlOlPnlRlSlslU<lV*lWlX*lY*-l[Rl\)l],l^l_)l`)la<lb>lcld*le*-lgRlh)li,ljlk)ll<lmlnlo<lplqlrnltlullw.lx*lylz,l{l|)l})l~nlllRl.l*lRl,ll)lZlnllll<l;ll*l<l-,)l;llll,lĊlnlllll;ll*ll-A)l;llll,lĊlnllllBl;ll*G-lBl)l;llll,lĊlnllÊllRl;ll*a-lRl)l;llll,lĊlnllՊЊ<l^l\l*l-lll<l^l\ll-llyl<l^l\lel-l^l\ll-l^l\lql-l^l\lll<2lllЊ<lll<2l<m2mm2mBm2mRm<m"m2m m +mm9m
<mm>m^mm\m*m<m<m>m^mm\mem<mm>m^mm \m!m"<m#Bm$>m%^m&m'\m(qm)<m*Rm+>m,^m-m.\m/m0<m1m2>m3^m4m5m6\m7Њm8nm:m;Њ<m=m>m?<m@:mA*mBmCmDmEmFmG)mH2mI<mJ<mK:mL*mMmNmOmPmQmR)mS2mTmU<mVmWmXmYmZlm[2m\Bm]<m^m_m`mamblmc2mdRme<mfmgmhmi2mjmkmlЊ<mnmo^mpmq\mr*ms2mtmu<mv^mwmx\myemz2m{<m|<m}^m~m\mm2mm<m^mm\mqm2mBm<m^mm\mm2mRm<m^mm\mm2mm;mmm<sm;m^mm\mm1mmmЊmmm;mmm;mmmmmmm2mm<mmm6mm<mm.mm*K-M)mmmm<m*mmhmmɟmm*m*m<m-mm-mBm-mRm)mm,O)m$mm)m"mmm<mmQmmm)mmm<Q2mmYm<S2mmYmnmmmmЊmm<m*mmm'mmm-mmn'nn)nn<n*nnŌ[n n +,]-nn
Ō_n)nnnЌc.n2nn<nn<nn<n`nn n<nn <n!`n"2n#n$Yn%nn&n'Њ`n)n*n+n,n-Њ`n/n0n1n2n3Њ`n5n6n7n8n9Њ`n;n<n=n>n?Њ*nAnB&nCVnD>nEnF)nGnHnIЊnKQnLnMnNhnOnP"nQnRnSnT;nUnV1nWnXnYЊn[Qn\n]@n^n_n`ЊnbQncndne)nfngnhЊ6njnknlЊnnno"npnq<g.ns2ntnunvЊn{nynx<u2n}n~<w2nNn<y2nn<{2nMn<}2nn<n،2nn2n<nЊ<2nn<2nNn<2nn<2nMn<2nn<n،2nn2n<nЊ<2nn<2nNn<2nn<2nMn<2nn<n،2nn2n<nЊ<nn>nnon<'ngn2ngn-n<2nn<nnΊЊ<2nn<2nNn<2nn<2nMn<2nn<n؍2nn2n<nЊ^n Xn\nnnAnn<!'n Xnn2n^n Xn\nn<nnn2n Xnno*oč%)o݊onooo<o o +ooЊ<l2oo<o*oo,oՍn)o$ooo<oo<ooooo ;o!o"o#;o$o%1o&o'2o(o)<o*go+o,<o-bo.<o/o0o1o20o3>o4:o5Ao6<o7o8o9+o:>o;o<Ao=;o>o?]o@>oA:oBooC<oD]oE>oFoGooH;p>oJoKoL<oMoN+oOMoP2oQMoR<oSoT2oUoVoW<r>oYoZ;o[o\1o]o^o_<t>oaob;ocod1oeof<ogoh^oioj\okol;omon*ooop'v)or;osotouovow<oxoyoz<o{o|o}o~<o o>oo;oo1oo<x2oooЊoo6o<oo2o%o;o o>o%oo;o$ouo0o$oo+oo?ouo0ooo6oo<o$o%o2o$oo<o%o2oo;o$oo?o$o%oro<o$o%o2o$ouo<o%o2ouo;o$ouo=o$o%oro<o$o%o>o$oo>o$ouo<o%o>oo>oo>ouo;ouo1oo;o o>o%oo<oo-oo-ouoonoo oЊ6o<oho,o*oo+oo+o$o%o)oZo2o%o;o o>o%ppp pЊ6p<php,p*p p ++pp+p
$p%p)p)p2p%p;p p>p%ppp pЊ6pp<p:z2p %p!;|6p#%p$p%<p&*p'p(,p)p*+p+$p,%p-)p.)p/2p0%p1;p2 p3>p4%p5p6p7 p8Њ6p:p;<2p=%p>;6p@%pApB<pC*pDpE,pFpG+pH$pI%pJ)pKZpL2pM%pN;pO pP>pQ%pRpSpT pUЊ6pW<pXpY,pZp[+p\$p]%p^2p_%p`;pa pb>pc%pdpepf pgЊ6pi<pj*pkpl+pm$pn%po)ppzpqpr2ps%pt;pu pv>pw%pxpypz p{Њ6p}<p~*pp+p$p%p)pypp2p%p;p p>p%ppp pЊ6p<p*pp+p$p%p)p)p2p%p;p p>p%ppp pЊ6p<p*pp+p$p%p)pZp2p%p;p p>p%ppp pЊ6p<pp+p$p%p2p%p;p p>p%ppp pŊЊ<pp+pp2pAp<pp2pp<pMp2pp<0pMp2pp<p2pp<pՎ02pp<0pMp2pp<0pMp2pp< 0pMp2pp<"0pMp2pppq%p6p<pp2ppp;qqq;q*qq)q Zqq<q q +6q*qq
.qq)q<qq<q^qq-qq\$2qq;qq<qq2qq <q!q"2q#q$nq&q'q(q)qrq+^q,q-q.'q/q0-q1q2q3'q4q5\q6q7;q8q9Qq:;q;q<Qq=q>6q?q@^qAqBŎ,,qDuqEqF-qGqHŎ.,qJuqKqL\qMqNEqO^qPqQqRuqS3qT-qUqVqWuqX3qY\qZq[9q\q]^q^q_q`uqaqb-qcqdqeuqfqg\qhqi;0.qkqlqm@2>qouqpiqqnqsqtquqvqwЊQqyqz~q{q|.q}q~|q*q^qqq-qqq\qq-q^qqlq-qqlq\qq)qq~qq|qqq~qq.qq|q*q^qqq-qqq\qq-q^qqlq-qqlq\qq)qq~qq|qqq~qq.qq|q*q^qqq-qqq\qq-q^qqlq-qqlq\qq)qq~qq|qqq~qq.qq|q*q^qq܋q-qqߋq\qq-q^qqlq-qqlq\qq)qq~qq|qqqqqqqqЊ^qq\qqq6q~qdr|r^rlr\rrr;U.rr @W>rlriYr*cr.r^rr\rr2rdr6r<r{r2r^rrr\rr ;r! r">r#{r$ir%<e2r'r()r)r*r+ r,Њr.>r/r0<r1r2r3r4;r5r6r7rr8r9r:;r;r<r=r>r?rXrA6rBrC<rDrE2rFrG;rHrI?rJrKrL;rM rN>rOrPirQ<rRrSrT<rUrVrWnrYrZ r[r\rur^6r_r`<rarb2rcrd;rerf=rgrhri;rj rk>rlrmirn<rorprq<rrrsrtnrvrw rxryЊr{hr|r}r~r.rhrrrrъrr<rrr>rrr<rrr.r>rrr<rr>rrrr<rr>rrrr<rrrnrrrrrr Zr<m.r Zr2r Zrnrrr Zr<,r Zr2r ZrnrrЊrrrr*r'r-rr)rr;rrrr'rr~rrr'rr|r;=rrrrrrr*rr-)rr;rr~rrŊr|rrŊr;=rrr<r*rrrr)rr2rr<r*rrrr)rr2rs<ssŊshs$s]s2s s +nssЊss^sssss-sssss\;sss<s*)s ss!; +=s#s$s%<s&s's(s)>s**s+s,-s-s.)s/<s0s1-s2s3s4ns5s6sLs8s9s:s;s<<s=*)s?ss@;=sBsCsD<sEsFsGsHsI2sJsKnsMsNsYsPsQsRsS.sTsUsVsW3sXnsZs[Њs]s^*s_s`sa''scsdse'ssg)shsi;sjsksl6smsn0so;spsqsr`ss>stosuisv;swsx6sysz+s{;s|s}@ >sosis;":sss;ss\s>ss$;s&;s*(?ss)sEs**>ss)srs*sss+ss)ss;,?ssssЊsssss;sss+ss;2>ssssЊ*sss+sss,ssls+ssls)ssÊЊ*ss0ss)s\ssˊЊ*s*ss0ss)s\s+ss.ss)ssيssss'ss;ssQs;ssQss6sssslss;8.sss@:>slsisnsstsss;@6ssst<B2ttYtntttt <t +t>tt
tt<tttntttt<t0tĊtnttt"tt ؊t!nt#t$t-t&t't(;t)t*t+t,nt.t/t7*t1t2.t3)t4\t5.t6nt8t9tB:t;*R,t=t>t?)t@\tAntCtDtK*X,tGtH)tI\tJntLtMtitOtP;tQtR*tStTtU)tV-tWtXltYZtZ)t[;t\t]t^rt_*^,tatb)tc\td;tetftgthntjtktq@tm<tn@totpntrtsЋttt>tytt}t~Atx Xtt| XtvЊ<2tGt<2t1t<2t>t<2tt<2tt<2tTt<2tt<2t`t<2tt<2tt<2tt<2tWt<2tUt<2tttЊTt<2tWt<2tUttЊ<2tGt<2t1t<2t>t<2tt<2tt<2tTt<2tt<2t`t<2tt<2tt<2tt<2ttt܊Њ*2tUt<2tWt)tttЊкtSt<ttIttЊ*t6t<2tWtYt)tttЊ<tt<t tntttu uЊuЊuЊpuu u +uЊu
'uuuuЊ~u|uu~u|uuЊ^u^uuЊu u!u"u#Њ^.u&#u'u(Њ^#u-u+hАЊR~$#)%$)'&S0)(**))>+*G7,+E+-,O.-F+0/H6;:N<;P=<M2>=Q3?>O2@?)A@=UT)\[?]\^]@`_,(ba)cb)dc)ed)fe)hg)ih)lk)ml)nm)on)qp)rq)sr)ts)ut)vu)xw)yx)zy){z)|{.~}A6"d)j +XnJ +$!im +T7#!ˎE)08(_% ))9"(r +)w)s
1s5jmm +I-=u +/<%($p +Z p| +$=&,")ڋV)1("2IM5yL6N27R29N9:P2Gi' +Q7BXiE +oY7pu$ +s4(t +)u +7"Tnm +7(.(/()8"),k))
Z7 J-5())BKHGu +s7,)u +)[E():")d%4(K-)Q))dGwW)ǎ}))*")(6(j +8!( 11( !)J)B(1"!P)'+()9C-]6Qm):t +B*(K\n. +M5(N)S!8`fbp +Ai +4"
1(e2h +)r +t{ + +)h +͎A)s +)_S"pV +-(:#(}k +jR +\ X) +i@ +)Po)j7 +*6n +7t +:<3">p +@F)AEL4L'(R)T(UYs5[y?)^`~(c0"d<)eqn)h)(i
kF)m"oYpL;qvi)sYuk)vB"w/"yt +U )"n)u5h +xE)2(Rb#8BOq)q +h +ό)WnZ +&o +[n4 +b%^:(pu),X7@j +:C)(-""4D'WI)5D5i, +7hHiJ +QjH +\5))]̎C)qdx^%Ќ)).(s5-("!/(0(,(`n ++(tu +h +Ջ)ul +`% i +mm +h +D$-)1 (6E<h>(G(IXN=&(O%!Re;(Su +YX
qo|)rIg=(H)())Ns)J! +(_h +))79(6(3"Qu) +C"aY)! r +;$(U)T$ V7()0i6 +?8)Bf<(Jt)QD$U$
(V>)Z\)\@"_p +cA(g1j)h +W7m2"nM qp +{j +z`).f)%p +6Du +?((|)Snw +?"Uni +r- +H+"U7,OIn +Ǝ))o +(){) +5P<i; + RVF'"cI)s?( kg)2(y)` ֏Ŏ)8h +<"(&(CQ(^c:Vna +Ό)a%>"#p9 +r@ + 8((
)>'(#(%()!ph + 8k1; +) +)"!!#aJ(Mn +*r`)+>n +-:n +3c%45;"6#7t +8!9*)<؋b)=h +>"(?k +@u, +A3(FYn@ +K"8OZn: +Q=Tt +W7 ([)^eKl5"n)p X8~̥h +h +i
+@(i" +i1 +h +)j +)j +k +)~(){k +d0)b)]n( +Rnz +J)En +B)4o
+3m +/O)*W)()')p +3(:)0(i)))s5ߋL)ދN)ʎG)*(t +)zLgZ!
\-[7A"="9"."&"F)XX)>[?/H6:N;PEDBCQA))B !"#$%&'()*+,-./01$2$3456789:;<=>? _
+)R07^efghsn>
diff --git a/fonts/utilities/mf2ps/MFfonts/bases/myplain.log b/fonts/utilities/mf2ps/MFfonts/bases/myplain.log new file mode 100644 index 0000000000..89ef087e3b --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/myplain.log @@ -0,0 +1,17 @@ +This is METAFONT, Version 1.0 for Berkeley UNIX (INIMF) 8 MAR 1989 16:23 +**\input myplain;dump;end. +(myplain.mf +Preloading the plain base, version 1.0: preliminaries, + basic constants and mathematical macros, + macros for converting from device-independent units to pixels, + macros and tables for various modes of operation, + macros for drawing and filling, + macros for proof labels and rules, + macros for character and font administration, +and a few last-minute items.) +Beginning to dump on file myplain.base + (preloaded base=myplain 89.3.8) +1230 strings of total length 22208 +4690 memory locations dumped; current usage is 1362&3209 +493 symbolic tokens +Font metrics written on myplain.tfm diff --git a/fonts/utilities/mf2ps/MFfonts/bases/myplain.mf b/fonts/utilities/mf2ps/MFfonts/bases/myplain.mf new file mode 100644 index 0000000000..9c85b7e622 --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/myplain.mf @@ -0,0 +1,622 @@ +% This is the plain METAFONT base that's described in The METAFONTbook. +% N.B.: Please change "base_version" whenever this file is modified! +% And don't modify the file under any circumstances. +string base_name, base_version; base_name="plain"; base_version="1.0"; + +message "Preloading the plain base, version "&base_version&": preliminaries,"; + +delimiters (); % this makes parentheses behave like parentheses +def upto = step 1 until enddef; % syntactic sugar +def downto = step -1 until enddef; +def exitunless expr c = exitif not c enddef; +let relax = \; % ignore the word `relax', as in TeX +let \\ = \; % double relaxation is like single +def ]] = ] ] enddef; % right brackets should be loners +def -- = {curl 1}..{curl 1} enddef; +def --- = .. tension infinity .. enddef; +def ... = .. tension atleast 1 .. enddef; + +def gobble primary g = enddef; +primarydef g gobbled gg = enddef; +def hide(text t) = exitif numeric begingroup t;endgroup; enddef; +def ??? = hide(interim showstopping:=1; showdependencies) enddef; +def stop expr s = message s; gobble readstring enddef; + +smoothing:=1; autorounding:=2; % this adjusts curves to the raster +turningcheck:=2; % this will warn about a "strange path" +granularity:=1; % this says that pixels are pixels + +def interact = % sets up to make "show" commands stop + hide(showstopping:=1; tracingonline:=1) enddef; + +def loggingall = % puts tracing info into the log + tracingcommands:=3; tracingedges:=2; tracingtitles:=1; tracingequations:=1; + tracingcapsules:=1; tracingspecs:=1; tracingpens:=1; tracingchoices:=1; + tracingstats:=1; tracingoutput:=1; tracingmacros:=1; tracingrestores:=1; + enddef; + +def tracingall = % turns on every form of tracing + tracingonline:=1; showstopping:=1; loggingall enddef; + +def tracingnone = % turns off every form of tracing + tracingcommands:=0; tracingonline:=0; showstopping:=0; + tracingedges:=0; tracingtitles:=0; tracingequations:=0; + tracingcapsules:=0; tracingspecs:=0; tracingpens:=0; tracingchoices:=0; + tracingstats:=0; tracingoutput:=0; tracingmacros:=0; tracingrestores:=0; + enddef; + +message " basic constants and mathematical macros,"; + +% numeric constants +newinternal eps,epsilon,infinity,_; +eps := .00049; % this is a pretty small positive number +epsilon := 1/256/256; % but this is the smallest +infinity := 4095.99998; % and this is the largest +_ := -1; % internal constant to make macros unreadable but shorter + +% pair constants +pair right,left,up,down,origin; +origin=(0,0); up=-down=(0,1); right=-left=(1,0); + +% path constants +path quartercircle,halfcircle,fullcircle,unitsquare; +quartercircle=(right{up}..(right+up)/sqrt2..up{left}) scaled .5; +halfcircle=quartercircle & quartercircle rotated 90; +fullcircle=halfcircle & halfcircle rotated 180 & cycle; +unitsquare=(0,0)--(1,0)--(1,1)--(0,1)--cycle; + +% transform constants +transform identity; +for z=origin,right,up: z transformed identity = z; endfor + +% picture constants +picture blankpicture,unitpixel; +blankpicture=nullpicture; % `display blankpicture...' +unitpixel=nullpicture; addto unitpixel contour unitsquare; + +% string constants +string ditto; ditto = char 34; % ASCII double-quote mark + +% pen constants +def capsule_def(suffix s) primary u = def s = u enddef enddef; +capsule_def(pensquare) makepen(unitsquare shifted -(.5,.5)); +capsule_def(penrazor) makepen((-.5,0)--(.5,0)--cycle); +pen penspeck; penspeck=pensquare scaled eps; + +% nullary operators +vardef whatever = save ?; ? enddef; + +% unary operators +let abs = length; + +vardef round primary u = + if numeric u: floor(u+.5) + elseif pair u: (hround xpart u, vround ypart u) + else: u fi enddef; + +vardef hround primary x = floor(x+.5) enddef; +vardef vround primary y = floor(y.o_+.5)_o_ enddef; + +vardef ceiling primary x = -floor(-x) enddef; + +vardef byte primary s = + if string s: ASCII fi s enddef; + +vardef dir primary d = right rotated d enddef; + +vardef unitvector primary z = z/abs z enddef; + +vardef inverse primary T = + transform T_; T_ transformed T = identity; T_ enddef; + +vardef counterclockwise primary c = + interim autorounding:=0; + if turningnumber c <= 0: reverse fi c enddef; + +vardef tensepath expr r = + for k=0 upto length r - 1: point k of r --- endfor + if cycle r: cycle else: point infinity of r fi enddef; + +% binary operators + +primarydef x mod y = (x-y*floor(x/y)) enddef; +primarydef x div y = floor(x/y) enddef; +primarydef w dotprod z = (xpart w * xpart z + ypart w * ypart z) enddef; + +primarydef x**y = if y=2: x*x else: takepower y of x fi enddef; +def takepower expr y of x = + if x>0: mexp(y*mlog x) + elseif (x=0) and (y>0): 0 + else: 1 + if y=floor y: + if y>=0: for n=1 upto y: *x endfor + else: for n=_ downto y: /x endfor + fi + else: hide(errmessage "Undefined power: " & decimal x&"**"&decimal y) + fi fi enddef; + +vardef direction expr t of p = + postcontrol t of p - precontrol t of p enddef; + +vardef directionpoint expr z of p = + a_:=directiontime z of p; + if a_<0: errmessage("The direction doesn't occur"); fi + point a_ of p enddef; + +secondarydef p intersectionpoint q = + begingroup save x_,y_; (x_,y_)=p intersectiontimes q; + if x_<0: errmessage("The paths don't intersect"); origin + else: .5[point x_ of p, point y_ of q] fi endgroup +enddef; + +tertiarydef p softjoin q = + begingroup c_:=fullcircle scaled 2join_radius shifted point 0 of q; + a_:=ypart(c_ intersectiontimes p); b_:=ypart(c_ intersectiontimes q); + if a_<0:point 0 of p{direction 0 of p} else: subpath(0,a_) of p fi + ... if b_<0:{direction infinity of q}point infinity of q + else: subpath(b_,infinity) of q fi endgroup enddef; +newinternal join_radius,a_,b_; path c_; + +% special operators +vardef incr suffix $ = $:=$+1; $ enddef; +vardef decr suffix $ = $:=$-1; $ enddef; + +def reflectedabout(expr w,z) = % reflects about the line w..z + transformed + begingroup transform T_; + w transformed T_ = w; z transformed T_ = z; + xxpart T_ = -yypart T_; xypart T_ = yxpart T_; % T_ is a reflection + T_ endgroup enddef; + +def rotatedaround(expr z, d) = % rotates d degrees around z + shifted -z rotated d shifted z enddef; +let rotatedabout = rotatedaround; % for roundabout people + +vardef min(expr u)(text t) = % t is a list of numerics, pairs, or strings + save u_; setu_ u; for uu = t: if uu<u_: u_:=uu; fi endfor + u_ enddef; + +vardef max(expr u)(text t) = % t is a list of numerics, pairs, or strings + save u_; setu_ u; for uu = t: if uu>u_: u_:=uu; fi endfor + u_ enddef; + +def setu_ primary u = + if pair u: pair u_ elseif string u: string u_ fi; + u_=u enddef; + +def flex(text t) = % t is a list of pairs + hide(n_:=0; for z=t: z_[incr n_]:=z; endfor + dz_:=z_[n_]-z_1) + z_1 for k=2 upto n_-1: ...z_[k]{dz_} endfor ...z_[n_] enddef; +newinternal n_; pair z_[],dz_; + +def superellipse(expr r,t,l,b,s)= + r{up}...(s[xpart t,xpart r],s[ypart r,ypart t]){t-r}... + t{left}...(s[xpart t,xpart l],s[ypart l,ypart t]){l-t}... + l{down}...(s[xpart b,xpart l],s[ypart l,ypart b]){b-l}... + b{right}...(s[xpart b,xpart r],s[ypart r,ypart b]){r-b}...cycle enddef; + +vardef interpath(expr a,p,q) = + for t=0 upto length p-1: a[point t of p, point t of q] + ..controls a[postcontrol t of p, postcontrol t of q] + and a[precontrol t+1 of p, precontrol t+1 of q] .. endfor + if cycle p: cycle + else: a[point infinity of p, point infinity of q] fi enddef; + +vardef solve@#(expr true_x,false_x)= % @#(true_x)=true, @#(false_x)=false + tx_:=true_x; fx_:=false_x; + forever: x_:=.5[tx_,fx_]; exitif abs(tx_-fx_)<=tolerance; + if @#(x_): tx_ else: fx_ fi :=x_; endfor + x_ enddef; % now x_ is near where @# changes from true to false +newinternal tolerance, tx_,fx_,x_; tolerance:=.1; + +message " macros for converting from device-independent units to pixels,"; + +def fix_units = % define the conversion factors, given pixels_per_inch + mm:=pixels_per_inch/25.4; cm:=pixels_per_inch/2.54; + pt:=pixels_per_inch/72.27; pc:=pixels_per_inch/6.0225; + dd:=1238/1157pt; cc:=12dd; + bp:=pixels_per_inch/72; in:=pixels_per_inch; + hppp:=pt; % horizontal pixels per point + vppp:=aspect_ratio*hppp; % vertical pixels per point + enddef; + +mm#=2.84528; pt#=1; dd#=1.07001; bp#:=1.00375; +cm#=28.45276; pc#=12; cc#=12.84010; in#:=72.27; + +newinternal pixels_per_inch; % the given resolution +newinternal blacker, o_correction; % device-oriented corrections + +def define_pixels(text t) = + forsuffixes $=t: $:=$.#*hppp; endfor enddef; +def define_whole_pixels(text t) = + forsuffixes $=t: $:=hround($.#*hppp); endfor enddef; +def define_whole_vertical_pixels(text t) = + forsuffixes $=t: $:=vround($.#*hppp); endfor enddef; +def define_good_x_pixels(text t) = + forsuffixes $=t: $:=good.x($.#*hppp); endfor enddef; +def define_good_y_pixels(text t) = + forsuffixes $=t: $:=good.y($.#*hppp); endfor enddef; +def define_blacker_pixels(text t) = + forsuffixes $=t: $:=$.#*hppp+blacker; endfor enddef; +def define_whole_blacker_pixels(text t) = + forsuffixes $=t: $:=hround($.#*hppp+blacker); + if $<=0: $:=1; fi endfor enddef; +def define_whole_vertical_blacker_pixels(text t) = + forsuffixes $=t: $:=vround($.#*hppp+blacker); + if $<=0: $:=1_o_; fi endfor enddef; +def define_corrected_pixels(text t) = + forsuffixes $=t: $:=vround($.#*hppp*o_correction)+eps; endfor enddef; +def define_horizontal_corrected_pixels(text t) = + forsuffixes $=t: $:=hround($.#*hppp*o_correction)+eps; endfor enddef; + +def lowres_fix(text t) expr ratio = + begingroup save min,max,first; + forsuffixes $=t: if unknown min: min=max=first=$; min#=max#=$.#; + elseif $.#<min#: min:=$; min#:=$.#; + elseif $.#>max#: max:=$; max#:=$.#; fi endfor + if max/min>ratio*max#/min#: forsuffixes $=t: $:=first; endfor fi + endgroup enddef; + +message " macros and tables for various modes of operation,"; + +def mode_setup = + warningcheck:=0; + if unknown mode: mode=proof; fi + numeric aspect_ratio; transform currenttransform; + scantokens if string mode:("input "&mode) else: mode_name[mode] fi; + if unknown mag: mag=1; fi + if unknown aspect_ratio: aspect_ratio=1; fi + displaying:=proofing; + pixels_per_inch:=pixels_per_inch*mag; + if aspect_ratio=1: let o_=\; let _o_=\ + else: def o_=*aspect_ratio enddef; def _o_=/aspect_ratio enddef fi; + fix_units; + scantokens extra_setup; % the user's special last-minute adjustments + currenttransform:= + if unknown currenttransform: identity else: currenttransform fi + yscaled aspect_ratio; + clearit; + pickup pencircle scaled (.4pt+blacker); + warningcheck:=1; enddef; +def smode = string mode; mode enddef; +string extra_setup, mode_name[]; +extra_setup=""; % usually there's nothing special to do +newinternal displaying; % if positive, endchar will `showit' + +vardef magstep primary m = mexp(46.67432m) enddef; + +def mode_def suffix $ = + $:=incr number_of_modes; + mode_name[$]:=str$ & "_"; + expandafter quote def scantokens mode_name[$] enddef; +newinternal number_of_modes; + +% proof mode: for initial design of characters +mode_def proof = + proofing:=2; % yes, we're making full proofs + fontmaking:=1; % no, we're not making a font + tracingtitles:=1; % yes, show titles online + pixels_per_inch:=2601.72; % that's 36 pixels per pt + blacker:=0; % no additional blackness + fillin:=0; % no compensation for fillin + o_correction:=1; % no reduction in overshoot + enddef; + +% smoke mode: for label-free proofs to mount on the wall +mode_def smoke = + proof_; % same as proof mode, except: + proofing:=1; % yes, we're making unlabeled proofs + extra_setup:=extra_setup&"grayfont black"; % with solid black pixels + let makebox=maketicks; % make the boxes less obtrusive + enddef; + +% lowres mode: for certain devices that print 200 pixels per inch +mode_def lowres = + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=1; % no, don't show titles at all + pixels_per_inch:=200; % that's the meaning of lowres + blacker:=.65; % make pens a bit blacker + fillin:=.2; % compensate for diagonal fillin + o_correction:=.4; % but don't overshoot as much + enddef; + +% mid mode: for certain devices that print 300 pixels per inch +mode_def mid = + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=1; % no, don't show titles at all + pixels_per_inch:=300; % Laser printer resolution + blacker:=.65; % make pens a bit blacker + fillin:=.2; % compensate for diagonal fillin + o_correction:=.4; % but don't overshoot as much + enddef; + +% sun mode: for SUN screen with 118 pixels_per_inch +mode_def sun = + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=1; % no, don't show titles at all + pixels_per_inch:=118; % Sun's screen resolution + blacker:=.65; % make pens a bit blacker + fillin:=.2; % compensate for diagonal fillin + o_correction:=.4; % but don't overshoot as much + enddef; + +localfont:=lowres; % the mode most commonly used to make fonts + +% It is customary to input another file to supplement the PLAIN base. +% This supplementary file adds analogous modes, corresponding to +% local output devices, and it redefines `localfont' as appropriate. +% The values of screen_rows and screen_cols should also be updated. +% The auxiliary file should set base_version:=base_version&"/localname". +% Remember that the present file PLAIN.MF should not be changed; +% all local changes should be confined to a separate file. + +message " macros for drawing and filling,"; + +pen currentpen; +path currentpen_path; +picture currentpicture; +transform currenttransform; +def t_ = transformed currenttransform enddef; + +def fill expr c = +%---------------- +month := -1; +%---------------- +addto_currentpicture contour c.t_ enddef; +def addto_currentpicture = addto currentpicture enddef; +def draw expr p = + addto_currentpicture doublepath p.t_ withpen currentpen enddef; +def filldraw expr c = fill counterclockwise c withpen currentpen enddef; +def drawdot expr z = if unknown currentpen_path: def_pen_path_ fi + addto_currentpicture contour + currentpen_path shifted z.t_ withpen penspeck enddef; +def def_pen_path_ = + hide(currentpen_path=tensepath makepath currentpen) enddef; + +def unfill expr c = fill c withweight _ enddef; +def undraw expr p = draw p withweight _ enddef; +def unfilldraw expr c = filldraw c withweight _ enddef; +def undrawdot expr z = drawdot z withweight _ enddef; +def erase text t = + begingroup + interim default_wt_:=_; + cullit; t withweight _; cullit; endgroup; +% ---------------------------- + year := -2 % visiting Erase +%---------------------------- +enddef; +newinternal default_wt_; default_wt_:=1; + +def cutdraw expr p = + cutoff(point 0 of p, 180+angle direction 0 of p); + cutoff(point infinity of p, angle direction infinity of p); + draw p enddef; +vardef cutoff(expr z,theta) = + interim autorounding := 0; interim smoothing := 0; + addto pic_ doublepath z.t_ withpen currentpen; + addto pic_ contour + (cut_ scaled (1+max(pen_lft,pen_rt,pen_top,pen_bot))t_ + rotated theta shifted z); + cull pic_ keeping (2,2) withweight -default_wt_; + addto currentpicture also pic_; + pic_:=nullpicture enddef; +picture pic_; pic_:=nullpicture; +path cut_; cut_ = ((0,_)--(1,_)--(1,1)--(0,1)--cycle) scaled 1.42; + +def pickup secondary q = + if numeric q: numeric_pickup_ else: pen_pickup_ fi q enddef; +def numeric_pickup_ primary q = + if unknown pen_[q]: errmessage "Unknown pen"; clearpen + else: currentpen:=pen_[q]; + pen_lft:=pen_lft_[q]; + pen_rt:=pen_rt_[q]; + pen_top:=pen_top_[q]; + pen_bot:=pen_bot_[q]; + currentpen_path:=pen_path_[q] fi; enddef; +def pen_pickup_ primary q = + currentpen:=q yscaled aspect_ratio; + pen_lft:=xpart penoffset down of currentpen; + pen_rt:=xpart penoffset up of currentpen; + pen_top:=(ypart penoffset left of currentpen)_o_; + pen_bot:=(ypart penoffset right of currentpen)_o_; + path currentpen_path; enddef; +newinternal pen_lft,pen_rt,pen_top,pen_bot,pen_count_; + +vardef savepen = pen_[incr pen_count_]=currentpen; + pen_lft_[pen_count_]=pen_lft; + pen_rt_[pen_count_]=pen_rt; + pen_top_[pen_count_]=pen_top; + pen_bot_[pen_count_]=pen_bot; + pen_path_[pen_count_]=currentpen_path; + pen_count_ enddef; + +def clearpen = currentpen:=nullpen; + pen_lft:=pen_rt:=pen_top:=pen_bot:=0; + path currentpen_path; + enddef; +def clear_pen_memory = + pen_count_:=0; + numeric pen_lft_[],pen_rt_[],pen_top_[],pen_bot_[]; + pen currentpen,pen_[]; + path currentpen_path, pen_path_[]; + enddef; + +vardef lft primary x = x + if pair x: (pen_lft,0) else: pen_lft fi enddef; +vardef rt primary x = x + if pair x: (pen_rt,0) else: pen_rt fi enddef; +vardef top primary y = y + if pair y: (0,pen_top) else: pen_top fi enddef; +vardef bot primary y = y + if pair y: (0,pen_bot) else: pen_bot fi enddef; +vardef good.x primary x = hround(x+pen_lft)-pen_lft enddef; +vardef good.y primary y = vround(y+pen_top)-pen_top enddef; +vardef good.lft primary z = save z_; pair z_; + (z_+(pen_lft,0))t_=round((z+(pen_lft,0))t_); z_ enddef; +vardef good.rt primary z = save z_; pair z_; + (z_+(pen_rt,0))t_=round((z+(pen_rt,0))t_); z_ enddef; +vardef good.top primary z = save z_; pair z_; + (z_+(pen_top,0))t_=round((z+(pen_top,0))t_); z_ enddef; +vardef good.bot primary z = save z_; pair z_; + (z_+(pen_bot,0))t_=round((z+(pen_bot,0))t_); z_ enddef; + +vardef penpos@#(expr b,d) = + (x@#r-x@#l,y@#r-y@#l)=(b,0) rotated d; + x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r) enddef; + +def penstroke text t = + forsuffixes e = l,r: path_.e:=t; endfor + if cycle path_.l: cyclestroke_ + else: fill path_.l -- reverse path_.r -- cycle fi enddef; +def cyclestroke_ = + begingroup interim turningcheck:=0; + addto pic_ contour path_.l.t_ withweight 1; + addto pic_ contour path_.r.t_ withweight _; + cull pic_ dropping origin withweight default_wt_; + addto_currentpicture also pic_; + pic_:=nullpicture; +%----------------------------------------- + year := -1; % visiting Cycle_stroke +%----------------------------------------- + endgroup; +enddef; +path path_.l,path_.r; + +message " macros for proof labels and rules,"; + +vardef makelabel@#(expr s,z) = % puts string s at point z + if known z: special lcode_@# & s; + numspecial xpart(z.t_); numspecial ypart(z.t_) fi enddef; +string lcode_,lcode_.top,lcode_.lft,lcode_.rt,lcode_.bot, + lcode_.top.nodot,lcode_.lft.nodot,lcode_.rt.nodot,lcode_.bot.nodot; +lcode_.top=" 1"; lcode_.lft=" 2"; lcode_.rt=" 3"; lcode_.bot=" 4"; +lcode_=" 0"; % change to " /" to avoid listing in overflow column +lcode_.top.nodot=" 5"; lcode_.lft.nodot=" 6"; +lcode_.rt.nodot=" 7"; lcode_.bot.nodot=" 8"; + +vardef labels@#(text t) = + if proofing>1: forsuffixes $=t: + makelabel@#(str$,z$); endfor + fi enddef; +vardef penlabels@#(text t) = + if proofing>1: forsuffixes $$=l,,r: forsuffixes $=t: + makelabel@#(str$.$$,z$.$$); endfor endfor + fi enddef; + +def range expr x = numtok[x] enddef; +def numtok suffix x=x enddef; +tertiarydef m thru n = + m for x=m+1 step 1 until n: , numtok[x] endfor enddef; + +def proofrule(expr w,z) = + special "rule"; numspecial xpart w; numspecial ypart w; + numspecial xpart z; numspecial ypart z enddef; +def screenrule(expr w,z) = + addto currentpicture doublepath w--z withpen rulepen enddef; +pen rulepen; rulepen = pensquare scaled 2; + +def makegrid(text xlist,ylist) = +% xmin_ := min(xlist); xmax_ := max(xlist); +% ymin_ := min(ylist); ymax_ := max(ylist); +% for x=xlist: proofrule((x,ymin_), (x,ymax_)); endfor +% for y=ylist: proofrule((xmin_,y), (xmax_,y)); endfor + enddef; + +vardef titlefont suffix $ = special "titlefont "&str$ enddef; +vardef labelfont suffix $ = special "labelfont "&str$ enddef; +vardef grayfont suffix $ = special "grayfont "&str$ enddef; +vardef slantfont suffix $ = special "slantfont "&str$ enddef; +def proofoffset primary z = % shifts proof output by z + special "offset"; numspecial xpart z; numspecial ypart z enddef; +vardef proofrulethickness expr x = + special "rulethickness"; numspecial x enddef; + +message " macros for character and font administration,"; + +def beginchar(expr c,w_sharp,h_sharp,d_sharp) = + begingroup + charcode:=if known c: byte c else: 0 fi; + charwd:=w_sharp; charht:=h_sharp; chardp:=d_sharp; + w:=hround(charwd*hppp); h:=vround(charht*hppp); d:=vround(chardp*hppp); + charic:=0; clearxy; clearit; clearpen; scantokens extra_beginchar; + enddef; + +def italcorr expr x_sharp = if x_sharp>0: charic:=x_sharp fi enddef; + +def change_width = + w:=w if w>charwd*hppp:- else:+ fi 1 enddef; + +def endchar = + scantokens extra_endchar; + if proofing>0: makebox(proofrule); fi + chardx:=w; % desired width of the character in pixels + shipit; + if displaying>0: makebox(screenrule); showit; fi + endgroup enddef; + +string extra_beginchar, extra_endchar; +extra_beginchar=extra_endchar=""; + +def makebox(text r) = + for y=0,h.o_,-d.o_: r((0,y),(w,y)); endfor % horizontals + for x=0,w: r((x,-d.o_),(x,h.o_)); endfor % verticals + if charic<>0: r((w+charic*hppp,h.o_),(w+charic*hppp,.5h.o_)); fi + enddef; + +def maketicks(text r) = + for y=0,h.o_,-d.o_: r((0,y),(10,y)); r((w-10,y),(w,y)); endfor + for x=0,w: r((x,10-d.o_),(x,-d.o_)); r((x,h.o_-10),(x,h.o_)); endfor + if charic<>0: r((w+charic*hppp,h.o_-10),(w+charic*hppp,h.o_)); fi + enddef; + +def font_size expr x = designsize:=x enddef; +def font_slant expr x = fontdimen 1: x enddef; +def font_normal_space expr x = fontdimen 2: x enddef; +def font_normal_stretch expr x = fontdimen 3: x enddef; +def font_normal_shrink expr x = fontdimen 4: x enddef; +def font_x_height expr x = fontdimen 5: x enddef; +def font_quad expr x = fontdimen 6: x enddef; +def font_extra_space expr x = fontdimen 7: x enddef; + +def font_identifier expr x = font_identifier_:=x enddef; +def font_coding_scheme expr x = font_coding_scheme_:=x enddef; +string font_identifier_, font_coding_scheme_; +font_identifier_=font_coding_scheme_="UNSPECIFIED"; + +message "and a few last-minute items."; + +vardef z@#=(x@#,y@#) enddef; + +newinternal screen_rows, screen_cols, currentwindow; +screen_rows:=400; % these values should be corrected, +screen_cols:=500; % by reading in a separate file after PLAIN.MF + +def openit = openwindow currentwindow + from origin to (screen_rows,screen_cols) at (-50,300) enddef; +def showit = openit; let showit=showit_; showit enddef; % first time only +def showit_ = display currentpicture inwindow currentwindow enddef; + +def clearxy = save x,y enddef; +def clearit = currentpicture:=nullpicture enddef; +def shipit = shipout currentpicture enddef; +def cullit = cull currentpicture dropping (-infinity,0) enddef; + +def screenchars = % endchar should `showit' + extra_endchar:=extra_endchar&"showit;" enddef; +def screenstrokes = % every stroke should `showit' + def addto_currentpicture text t= + addto currentpicture t; showit enddef; enddef; +def imagerules = % a box should be part of the character image + extra_beginchar:=extra_beginchar & "makebox(screenrule);" enddef; +def gfcorners = % `maketicks' should send rules to the GF file + extra_setup:=extra_setup & "let makebox=maketicks;proofing:=1;" enddef; +def nodisplays = % endchar shouldn't `showit' + extra_setup:=extra_setup & "displaying:=0;" enddef; +def notransforms = % currenttransform should not be used + let t_ = \ enddef; + +let bye = end; outer end,bye; + +clear_pen_memory; % initialize the `savepen' mechanism +mode_setup; % establish proof mode as the default +numeric mode,mag; % but leave mode and mag undefined diff --git a/fonts/utilities/mf2ps/MFfonts/bases/myplain.tfm b/fonts/utilities/mf2ps/MFfonts/bases/myplain.tfm new file mode 100644 index 0000000000..b7c73d6384 --- /dev/null +++ b/fonts/utilities/mf2ps/MFfonts/bases/myplain.tfm @@ -0,0 +1 @@ + |