[metapost] MetaPost 1.800 announcement

Taco Hoekwater taco at elvenkind.com
Tue Mar 19 11:23:02 CET 2013

I am happy to announce a new release of MetaPost:

MetaPost 1.800

This version will be the one included in TeXLive 2013. The major
changes compared to MetaPost 1.504 that was in TeXLive 2012 are:

* Support for IEEE double (64 bit) internal calculations as well as
   traditional 32-bit scaled arithmetic, by means of a command-line
   switch (--numbersystem=double).

* Bitmap (png) output support.

* The C and lua APIs have been extended to allow path control point
   resolution without going through the Metapost input language.

* The code for picture shipout now uses "double" for all floating point
   values. This can give small differences in the actual output files in
   traditional mode due to the required scaled -> double conversion, but
   it was necessary to support the new numerical backend code.

The win32 binary as well as a source archive can be downloaded
immediately from the files section at


If you want to build MetaPost yourself, you can also do an anonymous
subversion checkout:

   $ svn checkout --username anonsvn 

The password is anonsvn

What is new in MetaPost version 1.800:

* A new string valued internal "outputformatoptions" is used by 'png'
   output format to control the png file format. In the future, this
   internal may become used for options to the other output formats
   as well.

   The syntax for "outputformatoptions" is a space-separated list of
   settings. Individual settings are keyword+'='+value. The only
   currently allowed ones are:
   No spaces are allowed on the left, nor on the right, of the equals
   sign inside a setting.

   The assignment that would match the compiled-in default setup is:
     outputformatoptions := "format=rgba antialias=fast";
   however, "outputformatoptions" is initially the empty string.

   Some notes on the (new) PNG output formats:
   - The 'rgb' and 'gray' subformats have a white background. The
     'rgba' and 'graya' subformats have a transparent background.
   - Bitdepth is always 8.
   - In all cases, the image is initially created in 8-bit RGB
     mode. For 'gray' and 'graya', the RGB colors are reduced just
     before the actual PNG file is written, using a standard rule:
       g = 0.2126*r + 0.7152*g + 0.0722*b
   - CMYK colors are always converted to RGB during generation of
     the output image using:
       r = 1 - (c+k>1 ? 1 : c+k);
       g = 1 - (m+k>1 ? 1 : m+k);
       b = 1 - (y+k>1 ? 1 : y+k);
    - If you care about color conversions, you should be doing a
      "within <pic>" loop inside "extra_endfig". The built-in
      conversions are more of a fallback.

* A new string-valued internal "outputfilename", which is set by
   "shipout" to the value of the just created file name. Until the
   first shipout has occurred, it is the empty string.

What is fixed in MetaPost version 1.800:

* Fixed a number of bugs where Metapost loaded the default font map
   file multiple times, resulting in lots of "fontmap entry for
   `<fontname>' already exists, duplicates ignored" warnings.

* The "glyph <> of <>" operation could crash on fonts with empty
   subpaths in the charstrings.

* Fixed a bug in the postscript encoding reader that caused a buffer
   overflow (fatal error) for encoding files that do not end with a

* Sped up png creation a bit by using smarter libpng options.

* In the 'double' numbersystem, lots of precision was lost due to a bad
   internal conversion of fractions to scaled values. This affected the
   "rotated by", "directiontime", "sind" and "cosd" primitives, as well
   as internal dependency calculations.

* In the 'double' numbersystem, an internal rounding error caused
   "directiontime" to return bad results for requests near zero.

* There was a big scaling miscalculation while outputting glyphs in SVG
   mode with "prologues:=3". The output labels were so big that they
   fell completely outside of the generated image.

* A problem resulting in 'This can't happen (endinput)' caused by a
   missing "end" at the end of the run was fixed.

Legal notice / license / bug reports

MetaPost is a system for producing graphics developed by John Hobby
at AT&T, based on Donald Knuth's Metafont.  The MetaPost home page
is http://tug.org/metapost.

MetaPost is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 2.1 of the License, or
(at your option) any later version.

The MetaPost development project is currently hosted at Supelec,
https://foundry.supelec.fr/projects/metapost; with a bug tracker
at http://tracker.luatex.org/. Please report bugs and
request enhancements through there if possible. Alternatively, you
can reach us through the <metapost at tug.org> mailing list as well.

Have fun!

Taco Hoekwater, for the MetaPost team, March 19, 2013.

More information about the metapost mailing list