THIS FILE BELONGS TO METATYPE1 PACKAGE; IT IS AN INFORMAL COLLECTION OF NOTES

HISTORY
0.2  (16.12.2000, Grudzi/adz meeting)
first numbered version of fontbase.mp

0.21 (16.12.2000)
fontbase.mp: some corrections due to JMN's suggestions

0.22 (07.01.2001)
fontbase.mp (JMN's suggestion): writing dim_file; ghost stems generalized;
italic correction corrected; proof colors changed; default uc_height, depth,
ascender, and descender uniformized

0.23 (12.01.2001)
fontbase.mp: default blue_fuzz is now 0; set_stem added; dimen report
is generated on demand, governed by tracingdimens internal variable

0.24 (11.03.2001)
fontbase.mp: compose_segment and delete_nodes macros added

0.25 (08.05.2001)
fontbase.mp: positioning of accent hints corrected

0.26 (11.05.2001)
fontbase.mp: besides space, nbspace char is also added
if missing but at the same time encoded, and if slot 160 is free

0.27 (04.08.2001, Grudzi/adz meeting)
fontbase.mp: in use_accent the statement `off_acc_:=round(off_acc_)'
corrected; pf_info_designsize fixed (used to use macro set_tf),
pf_info_quad, and pf_info_pfm added; pfcommon.dat and afm2pfm
updated accordingly; VM comment removed from pfcommon.dat (temporarily?);
macro \MF corrected in mpform.sty; a few touches in mpform.mft;
no more designsize-vs.-design_size mess

0.28 (12.08.2001)
fontbase.mp: superfluous assign_name._space("space") and
assign_name._nbspace("nbspace") (following introduce) removed
from complete_pf_info

0.29 (12--20.08.2001)
fontbase.mp: math_axis is drawn by show_bb; plain_ex.mp -- pen_stroke
added (to improve: re-building of pen-stroked edges, removing inner
loops of pen-stroked edges, cutting off some parts of a path);
`turn_angle' should be used in a more robust way.

0.30 (21.08.2001)
plain_ex.mp -- gets the same numbering as fontbase; internal variable
of pen_stroke, ang_rel_, is boolean now; macros cut_join and nib_join
may have a nib parameter optional (skipped nib means obviously
default_nib)

0.31 (11.09.2001--22.09.2001)
mpform.sty: first attempt to prepare a one-or-two-language version
mkproof.bat: form of `copy ...+...' changed, `call mpost' --> `mpost', 
  variable generating used instead of external_project (see below);
plain_ex.mp:
  * soften_path, soften_nodes, quicksort, and insert_nodes added;
    delete_nodes moved from fontbase.mp to plain_ex.mp
  * generisize macro borrowed from J. D. Hobby's boxes.mp
fontbase.mp: more profound changes:
  * internal variables show_fills, show_strokes, show_paths, show_labels,
    show_boxes, show_stems, and show_stencils introduced;
  * variable generating now controls generating fonts: if known and
    equal to 0 -- PS fonts are generated, if known and equal to 1 --
    TFM files are generated, otherwise -- proofs are generated
  * separating use_... form ship_... for glyphs and hints;
    use_... renamed to do_show..., namely: do_show_hints, do_show_stencils,
    do_show_glyphs, do_show_labels, do_show_boxes,
  * bbox of the output EPSes is forced (force_bbox) in proofing mode
  * characters names can conform Pascal language conventions, in particular,
    they may contain digits
  * add_selected (an obsolete version of introduce_selected) removed
  * a bug in pf_info_creationdate fixed
  * piclist file is now not generated only when TFM files are being
    generated; it is used both for proofing and assembling the font
  * write_tex writes the macro call (\EPSNAMEandNUMBER) rather than
    raw TeX code
  * the && operator ignores a preceding parameter if it is a pair
  * a bug (typo) fixed in the definition of introduce_nodes
  * a bug fixed in the definition of local_tip_ (for the left edge)
mp2pf.awk: a call to system (directory listing) replaced by the reading
  of piclist.tex (presuming the presence of \EPSNAMEandNUMBER);
  messages and comments changed to English language 
mpform.sty: the definition of \EPSNAMEandNUMBER added

0.3? 11.01.2002
plain_ex.mp:
  * soften_path: 
    p_:=soften_node(i_,p_,r); --> p_:=soften_node(p_,r,i_);
  * whatever_pair restored (lost some day after March 2001, why?)
  * few changes in Polish texts

20.02.2002--23.02.2002
mpform.sty:
  * \tentex defined explicitly
  * \setcnt and \endproof added
mkproof.bat:
  * adjusted respectively

01.03.2002:
  * afm2pfm.pl (v. 0.12): font kind was wrongly guessed
    due to an error in a regular expression 

13.03.2002:
  * fontbase.mp: variable absolute_stencils introduced
    (session with Wlodek Bzyl)

19.03.2002:
  * mp2pf: odd `if (x == 0.0) return "0/1"' --> `if (x == 0.0) return "0 1"'

21.03.2002:
  * pfcommon.dat:
    Generated by Metpost --> Generated by MetaType1 (a MetaPost-based engine)
  * fontbase.mp:
    introduce_selected: process_selected=1 --> process_selected:=1
    (multiple use of introduce_selected is now legal); a comment corrected

30.03.2002:
  * plain_ex.mp: fixed bug (the explicit using of possibly indexed suffix
    in declaration of `path' variable in find_outlines); moreover,
    <suffix>.num is also declared explicitly to be of type numeric --
    see phrase:
     if not path r[0]: scantokens("path " & generisize(str r) & "[]"); fi
     if not numeric r.num: scantokens("numeric " & generisize(str r.num); fi

05.06.2002:
  * fontbase.mp:
      -- silly bug fixed in assign_name:
           if not string glyph_stencil @#:
         changed to
           if not string glyph_ps_name @#:
      -- warningcheck:=-1 added (because of names afii10065, afii10066 etc.)
      -- changed definition of write_tex header:
         (suffix name)(expr num) --> (expr name, num)
  * mpform.mft: assign_name formatted
    REMARK: variables of form x0 1 2 3 are formatted as x0123
            in the context of `good', and thus also in context of
            wd, ht, dp; in other words, wd.x0 1 2 3 is (in proof)
            indistingushable from wd.x0123; is it OK?
  * mpform.sty: subscript mark (underscore character) is gobbled
    after a PS name

13--15.07.2002 (Grudzi/adz -- several troubles overcome):
  * fontbase.mp:
    -- macro set_stem enhanced (see the relevant comment);
       it didn't rounded its parameters, as well as mf2pf.awk,
       and thus produced something like 
         /StemSnapH[... 63.998 64 ...]def
       which caused the hanging of Acrobat Distiller
    -- use_glyph introduced (JMN's desire)
  * mpform.sty: further consecuences of ``underscore freaks'':
    special protection of the underscore appearing in names
    due to f_k
  * mpform.mft: glyph_shift and set_stem, set_hstem, set_vstem formatted
  COMMENT: if during destillation fonts vere not loaded partially, e.g.,
    only below 35% (of WHAT?!), Acrobat Reader 3.0 didn't show
    all the characters for a ``large'' version of ANTT;
    the change of the threshold 35% --> 99% helped

18.07.2002:
fontbase.mp:
  * reference to the node operator in macro set_stem
    replaced by a `point ... of ...' construction
  * plain_ex: macros node, first, last, nflipped,
    nrotated (so far in Antykwa P/o/ltawskiego's ``lego'' file)
    and, moreover, xflipped, yflipped, crotated added;
    macros nflipped and nrotated correspond to pmirr and prefl,
    respectively; however, both nflipped and nrotated just do nothing
    for a cyclic path, while pmirr and prefl -- for unknown reason --
    reverse an argument path; for non-cyclic paths they can be defined as:
      def pmirr = nflipped enddef;
      def prefl = nrotated 180 enddef;
  * mpform.mft:
    added: *flipped, *nrotated

24.07.2002:
  * fontbase.mp: label font changed: cmr17 --> cmr10,
    defaultscale 1.5 --> magstep5 (actually, introduced five months ago,
    24.02.2002, around Hel meeting, but then somehow overlooked...)

25.07.2002:
  * plain_ex.mp:
    added: killtext, is_suffix
  * fontbase.mp:
    -- uni_name re-implemented using is_suffix
    -- spec_comma replaced by a more general macro fix_name_list
    -- introduce_selected reimplemented using fix_name_list
    -- mix_stem renamed to use_stems
    -- use_accent, use_stems, use_glyph (def -> vardef),
       use_stored (def -> vardef) admit both suffix and string
       form of names
    -- use_stems has optional offset
    -- use_accent admits color as an optional offset; for a color c,
       (redpart c, greenpart c) denote the shift of the character
       being accented
    -- use_stored removed as functionally nearly equivalent
       to newly introduced use_glyph (the latter enables
       repositioning)
  * mpform.mft:
    added: killtext, is_suffix, fix_name_list,
           use_accent, use_glyph, use_stems

26.07.2002:
  * fontbase.mp: typo fixed in use_stems (offset instead of offset_)
  
30.07.2002:
  * pf2mt1.awk (v. 0.13): a special option, NO_SLANT, added
  * fontbase.mp: ht_accent_limit introduced (supposedly bottom accent
    if ht.accent < ht_accent_limit)

31.07.2002:
  * afm2pfm (v. 0.13): typo in a comment fixed; banner added, message changed
  * packsubr (v. 0.1): VERBOSE added, banner added
  * mp2pf: banner added
  * mktfm.bat born (out of a part of mkfont.bat)

04.08.2002:
  * plain_ex.mp, plain_e_.mp: macro delete_nodes more elaborately
    described (illustration added); the text parameter is now
    delimited (upward incompatibility -- rather harmless?)

ver 0.32 of METAPOST1 (intra-JNS release) 08.08.2002--19.08.2002:
  * mt1set.bat:  added (as a common for all batches that
                 need setting environment variable METATYPE1)
    mkfont.bat:  preserves MP log file (from the 1st MP pass), comments touched
    mkt1.bat:    added (dual to mktfm). 
    mktfm.bat:   preserves MP log file, comments touched
    mkproof.bat: comment touched
    All batches updated to be compatible with the most recent
    distributions of t1utils (1.26, also with 1.24 from TeXLive 7)
    and MFT (Web2C 7.37x, 2.0)
  * pfcommon.dat also adjusted to new t1utils (cleartomark added)
    (ver 0.11)
  * pf2mt1: moved from extras to the main distribution, after a few
    enhancements and bug fixes; *.exc file also has changed
  * mpform.sty and mpform.mft renamed to mt1form.sty and mt1form.mft,
    respectively (new MFT deals with MP sources, hence mpform is too
    general name).
  * nearly all files touched (belonging to METATYPE1 explicitly expressed)
    except those in SAMPLES directory; in EXTRA directory only README has
    changed

ver 0.33 of METAPOST1 07.09.2002-09.09.2002
  * batch mt1set: a comment touched
  * fontbase.mp: short-cuts  family_name, font_name, and full_name added

26.10.2002:
  * afm2pfm, ver. 0.14, -- sub prepare_data() --> sub prepare_data;

30.12.2002:
  * plain_ex, ver. 0.32: `crotated' corrected; (used to work only with
    non-cyclic paths; backward incompatible change, hopefully innocuous)

03.01.2003:
  * plain_ex, ver. 0.33: xscaledto and yscaledto added; *scaleto
    operators store most recent scaling factor in a `lastscale';
    similarly, *shiftedto operators leave most recent shift vector
    in a `lastshift' variable (backward compatible change);
    aliases added: `xtime' and `ytime' for `x_time' and `y_time',
    respectively; `emergency_turningnumber' introduced; comments touched
    ``sharp units'' (mm#, pt#, dd#, bp#, cm#, pc#, cc#, in#)
    moved from fontbase to plain_ex.
  * fontbase, ver. 0.34: a lot of changes due to handling fontdimens
    and headerbytes (in particular, AFM XHeight need not to be equal to
    TFM xheight, i.e., fontdimen 5); no special comment for space params
    and quad; tfm_units and ps_units more accurate (old versions preserved);
    WARNING: the latter change is backward incompatible, but for
    Knuth's logo font TFM files remain intact (due to the trick
    with ``hashed'' variables in tfm_units)
  * pfcommon.dat, ver 0.12: adjusted to the changes in fontbase;
  * afm2pfm, ver. 0.15: adjusted to the changes in pfcommon.dat;
  * mp2pf, ver. 0.32: adjusted to the changes in fontbase and pfcommon.dat

06.01.2003:
  * mp2pf, ver. 0.33: function rational: unlikely case included (as a comment)

11.01.2003:
  * pf2mt1, ver. 0.16: adjusted to the changes in fontbase and pfcommon.dat
  
16.01.2003:
  * afm2pfm, ver. 0.16: old convention of PFM parameters restored
    (along with the new one)
  * pfcommon.dat, ver 0.13: ASCENDER and DESCENDER
    distinguished from ADL_ASCENDER and ADL_DESCENDER

17.01.2003:
  * fontbase ver. 0.35: continuation of changes due to a new way of
    fontdimen handling; compliance with the above change in pfcommon.dat;
    the option od rigorous encoding introduced (if variable
    `rigorous_encoding' is known, only characters existing
    in TFM will appear in the encoding file); `uncode' operations
    introduced (for overriding current encoding); several
    vardefs replaced by defs
  * afm2pfm, ver. 0.16: careful rounding

18.01.2003:
  * plain_ex ver. 0.34: gen_whatever added; soften_path performs
    a loop only for radius > 0;
  * mp2pf ver. 0.34: adjustment to ``Ascender/Descender story'';
    a few minor changes

04.02.2003:
  * mkfont.bat, mkt1.bat, mktfm -- (optional) files *.dim are handled like
    *.afm, *.pfb, *.log and *.pfm files, i.e., they are copied to a resulting
    directory (for mkfont, *.dim left by non-TFM run is preserved, but
    both log files);

06.02.2003:
  * fontbase ver. 0.36: nbspace is not added in TFM run;
    is_stored and use_dimens added

15.02.2003:
  * pf2mt1 ver 0.17: a lot of changes (most important: FontMatrix and
    seac handled)
  * fontbase ver. 0.37: a ``namespace'' bug fixed: local offset_ variable
    must not be declared in use_stems _and_ somewhere else (used to be
    declared in use_glyph).

19.02.2003:
  * mt1form.sty: info moved from footline to headline 
  * pf2mt1 ver 0.18: newly introduced correct_path_directions handled

20.02.2003:
  * fontbase ver. 0.38: correct_path_directions added along with
    a binary inside operator; exclude_selected introduced
  * mf1form.mft a few new items

04.03.2003:
  * pf2mt1 batch touched (`if exist' clause added)

26.03.2003:
  * fontbase ver. 0.39:
    font_math_axis math_rule; --> font_math_axis math_axis; !!!
  * pf2mt1.awk ver. 019 flex resolving procedure used to return
    curveto instead of rrcurveto; now the occurence of flex is
    marked (as a comment) in *.mpg; comment in pf2mt1.exc touched

31.03.2003:
  * fontbase ver. 0.40: a nasty yet silly bug in correct_path_directions
    fixed (by PSt): condition `odd i_' instead of `odd idx_[i_]'...
  * comments in enc*.mp files touched
  * pf2mt1.awk ver. 0.20:
    another silly bug fixed, namely:
    wrong template "pf_info_fontdimen %2d: %s"
    replaced by "pf_info_fontdimen %2d, %s"
    comments touched; the version _with the bug_ sent as. 0.20 to
    WB, MW, and JMN, a bit prematurely (bad days...)
  * plain_ex.awk ver. 0.35: p_ saved in pen_stroke

29.04.2003:
  * fontbase.mp ver. 0.41: a substantial change of the implementation
    of a few pf_info... commands: pf_info_space, pf_info_xheight,
    pf_info_quad, pf_info_extra_space; added: pf_info_normal_space,
    pf_info_space_stretch and pf_info_space_shrink;
    a condition (designsize<>0) checked prior to using tfm_units;
    accordingly, complete_tfm_info changed; moreover,
    font_math_rule and font_math_axis corrected (they wrote PS units
    to AFM comments; it was a bad day when they were implemented
    for the first time -- see 26.03.2003).
  * mt1form.mft augmented
  * mp2pf.awk ver 0.35: a bug in gawk circumvented; the following three-liner
      BEGIN {a(); b(S)}
      function a() {delete S}
      function b(s) {s[0]}
    reports an error: ... fatal: delete: illegal use of variable `S' as array
    (in this case, the error can be circumvented by adding a dummy
    function definition at the beginning of the script:
      function c() {S[0]}
    )

02.05.2003: option /b consequently added in copy statements in batches
    mkproof and mkfont (Win XP adds EOF character otherwise)

21.05.2003:
  pf2mt1.bat: used to accept only 1 parameter
  mt1set.bat: performs a trickery in order to convert backslashes
              into slashes in %METATYPE1%; will it work with every shell?
  set METATYPE1=%BOP_UTI%/metatyp1
  gawk "BEGIN {s=ENVIRON[\"METATYPE1\"]; gsub(/\\/,\"/\",s); print \"set METATYPE1=\" s}" > mt1set_.bat
  call mt1set_.bat
  del mt1set_.bat

05.06.2003: preparing a new distribution (for 11.06.2003);
  mkfont.bat and mkproof.bat renamed to mkfont1.bat and mkproof1.bat
  (Wlodek Bzyl's suggestion)

11.06.2003:
  * pf2mt1.awk: a bug in adl data fixed; now ADL_DESCENDER
    is positive (default 250)
  * version 0.40 of METATYPE1 released.

14.07.2003:
  * fontbase.mp ver. 0.42: a circumvention of dvips fragile dvips prologues
    and inaccuracy of epsf macros (operation force_bbox)
  * TeX'n'ANSI encoding added, i.e., LY1 (enctxnan.mp)

15.07.2003:
  * fontbase.mp ver. 0.43: pf_info_space corrected; a next silly
    bug in correct_path_directions ('t was a bad day...) fixed,
    more precisely, in the inside operator:
    @x
     (xpart urcorner b > xpart llcorner a) and
    @y
     (xpart urcorner b > xpart urcorner a) and
    @z
    added: extra_beginfont, extra_endfont
  * Text Companion encoding added, i.e., TS1 (enctctex.mp); all encodings
    are now equipped in a distinguishing encoding_badge macro

03.08.2003:
  ENCQXWIN.MP -- characters of codes < 32 unencoded (version 1.05a)
  ENCTCTEX.MP -- perthousandzero removed (it is now in ENCECTEX.MP)
  ENCECTEX.MP -- perthousand replaced by perthousandzero

23.08.2003--24.08.2003:
  * fontbase.mp ver. 0.44 UPWARDS INCOMPATIBLE CHANGE!
    (``And his name is Fourty and Four'' -- A. Mickiewicz)
    encode, LK, LP, and KP commands refer to METATYPE1 (internal)
    names; so far, they used to refer to PostScript names;
    -- the parameters of encode, LP and KP are now of text type,
       therefore they MUST NOT be separated by commas; instead, they
       must be taken in separate braces, e.g.,
         encode("a_char")(128)
         LK("a_char")
          LP("another_char")("yet_another_char")
          KP("and_yet_another_char")(30)
         KL
    -- a bundle of related renamings:
       ps_name_used() --> name_used()
       mark_ps_name_used() --> mark_name_used()
       ps_name_xused[] --> name_used_[]
       glyph_ps_code() --> name_to_code()
       glyph_ps_xcode[] --> code_to_name_[]
       ps_code --> glyph_code 
       max_ps_code --> max_glyph_code
       min_ps_code --> min_glyph_code
       ps_used_max --> max_name_used
    -- comments touched
  * pf2mt1.mp ver. 0.22
    -- adjustments to the changes listed above
    -- corrected checking of ligtable data
  * encodings corrected adequately; QX 1.06 implemented
 

