MetaPost

MetaPost
Paradigmimperative, typesetting
Designed byJohn D. Hobby
DeveloperTaco Hoekwater, Luigi Scarso
First appeared1994 (1994)
Stable release
1.8 / 17 June 2013; 11 years ago (2013-06-17)
Preview release
2.0rc2 / 19 February 2018; 6 years ago (2018-02-19)
Typing disciplineduck, dynamic, strong
OSCross-platform
LicenseLGPL
Websitetug.org/metapost
Influenced by
Metafont

MetaPost refers to both a programming language and the interpreter of the MetaPost programming language. Both are derived from Donald Knuth's Metafont language and interpreter. MetaPost produces vector graphic diagrams from a geometric/algebraic description. The language shares Metafont's declarative syntax for manipulating lines, curves, points and geometric transformations. However,

  • Metafont is set up to produce fonts, in the form of image files (in .gf format) with associated font metric files (in .tfm format), whereas MetaPost produces EPS, SVG, or PNG files
  • The output of Metafont consists of the fonts at a fixed resolution in a raster-based format, whereas MetaPost's output is vector-based graphics (lines, Bézier curves)
  • Metafont output is monochrome, whereas MetaPost uses RGB or CMYK colors.
  • The MetaPost language can include text labels on the diagrams, either strings from a specified font, or anything else that can be typeset with TeX.
  • Starting with version 1.8, Metapost allows floating-point arithmetic with 64 bits (default: 32 bit fixed-point arithmetic)

Many of the limitations of MetaPost derive from features of Metafont. For instance, MetaPost does not support all features of PostScript. Most notably, paths can have only one segment (so that regions are simply connected), and regions can be filled only with uniform colours. PostScript level 1 supports tiled patterns and PostScript 3 supports Gouraud shading.