summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/info/mf2pt1.info
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
committerKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
commitb04c2e1a42573e9735547702356c7b9a769a6855 (patch)
treec0753443f39500a062d7698fe6b94359c813f871 /Master/texmf-dist/doc/info/mf2pt1.info
parentfb0bf13304a356f197bfc1add17f98c07e96f17b (diff)
texmf -> texmf-dist: doc
git-svn-id: svn://tug.org/texlive/trunk@29714 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/info/mf2pt1.info')
-rw-r--r--Master/texmf-dist/doc/info/mf2pt1.info714
1 files changed, 714 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/info/mf2pt1.info b/Master/texmf-dist/doc/info/mf2pt1.info
new file mode 100644
index 00000000000..796a095453d
--- /dev/null
+++ b/Master/texmf-dist/doc/info/mf2pt1.info
@@ -0,0 +1,714 @@
+This is mf2pt1.info, produced by makeinfo version 4.13 from mf2pt1.texi.
+
+INFO-DIR-SECTION TeX
+START-INFO-DIR-ENTRY
+* mf2pt1:: Produce PostScript Type 1 fonts from Metafont source
+END-INFO-DIR-ENTRY
+
+ *mf2pt1*: Produce PostScript Type 1 fonts from Metafont source
+
+ Copyright 2012 Scott Pakin.
+
+
+File: mf2pt1.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+mf2pt1
+******
+
+`mf2pt1' is a tool that lets font designers design PostScript Type 1
+fonts using the Metafont language. The same source file can be used
+to produce both Type 1 (`.pfb') and bitmap (`.pk') fonts.
+
+* Menu:
+
+* Introduction:: Introduction to mf2pt1
+* Usage:: How to use mf2pt1
+* Future Work:: Features I may one day add to mf2pt1
+* Acknowledgments:: People who helped with mf2pt1
+
+
+File: mf2pt1.info, Node: Introduction, Next: Usage, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+Metafont is a high-level, mathematically oriented language for
+producing fonts. The Metafont interpreter produces device-dependent
+bitmaps, which render well at the target resolution on the target
+device, but poorly at other resolutions or on other devices. Adobe's
+PostScript Type 1 font format is the de facto font standard for
+printers these days. It is a vector format, which implies that it
+scales better than bitmaps, and it delegates the device- and
+resolution-dependent tweaking from the font source to the target
+device's PostScript renderer. However, Type 1 fonts are extremely
+difficult to code by hand. Usually, one uses a WYSIWYG program to
+design a Type 1 font. Metafont , with its font-specific programming
+language, is an elegant alternative. A font designer can write
+reusable subroutines for repeated features, such as serifs and accents.
+He can define a font in terms of arbitrary parameters, such as
+"boldness" or "italicness", making it trivial to produce entire
+families of fonts from a single source (hence the "meta" in the name
+"Metafont "). Ideally, we would like to design a font using the
+Metafont language, but produce PostScript Type 1 output instead of
+bitmaps.
+
+`mf2pt1' helps bridge the gap between Metafont and Type 1 fonts.
+`mf2pt1' facilitates producing PostScript Type 1 fonts from a Metafont
+source file. It is _not_, as the name may imply, an automatic
+converter of arbitrary Metafont fonts to Type 1 format. `mf2pt1'
+imposes a number of restrictions on the Metafont input. If these
+restrictions are met, `mf2pt1' will produce valid Type 1 output.
+
+* Menu:
+
+* Requirements:: Pre-installation checklist
+* Installation:: How to install mf2pt1
+
+
+File: mf2pt1.info, Node: Requirements, Next: Installation, Prev: Introduction, Up: Introduction
+
+1.1 Requirements
+================
+
+Before using `mf2pt1', you will need to install the following programs:
+
+Perl
+ `mf2pt1' is written in Perl. You will need a Perl interpreter to
+ run it.
+
+MetaPost
+ `mf2pt1' actually uses MetaPost, not Metafont , to produce
+ PostScript output. Specifically, you will need the `mpost'
+ executable and the `mfplain.mp' base file.
+
+Type 1 Utilities
+ Producing properly encoded Type 1 fonts is tricky. `mf2pt1'
+ delegates the effort to the Type 1 Utilities, specifically, to the
+ `t1asm' program within that suite.
+
+FontForge (optional)
+ FontForge is a WYSIWYG, but scriptable, Type 1 font-editing
+ program. Although FontForge is not strictly required for `mf2pt1'
+ to produce a Type 1 font, `mf2pt1' uses FontForge when available
+ to autohint the generated Type 1 font, thereby making it look
+ better especially at lower resolutions.
+
+ Perl is available from the Comprehensive Perl Archive Network
+(http://www.cpan.org); MetaPost and the Type 1 utilities are available
+from the Comprehensive TeX Archive Network (http://www.ctan.org); and,
+FontForge is available from `http://fontforge.sourceforge.net/'. In
+addition, MetaPost's home page is
+`http://cm.bell-labs.com/who/hobby/MetaPost.html', and the Type 1
+utilities' home page is `http://www.lcdf.org/type/'.
+
+ Besides being useful for autohinting fonts, FontForge enables a font
+designer to hint fonts manually for additional fine-tuning and to
+convert among a variety of font formats, such as PostScript, TrueType,
+and X Window fonts. FontForge is strongly recommended as a complement
+to `mf2pt1'.
+
+
+File: mf2pt1.info, Node: Installation, Prev: Requirements, Up: Introduction
+
+1.2 Installation
+================
+
+To install `mf2pt1', move the `mf2pt1' executable someplace where your
+operating system can find it. If you're running Microsoft Windows, you
+should rename the program to `mf2pt1.pl', so that Windows knows it's a
+Perl script. (Alternatively, if you have `pl2bat', use that to produce
+a `mf2pt1.bat' file, which you can run as simply `mf2pt1'.)
+
+ The next step is to produce a `mf2pt1.mem' file from the supplied
+`mf2pt1.mp'. The command to do this differs from system to system but
+is usually something like the following:
+
+ mpost -progname=mpost -ini mf2pt1 \\dump
+
+ Move the resulting `mf2pt1.mem' file someplace where MetaPost can
+find it.
+
+
+ The `mf2pt1' documentation (what you're reading now) is written in
+Texinfo and can therefore easily be converted to a variety of formats:
+
+PDF (`mf2pt1.pdf')
+ texi2pdf mf2pt1.texi
+
+PostScript (`mf2pt1.ps')
+ texi2dvi mf2pt1.texi
+ dvips mf2pt1.dvi -o mf2pt1.ps
+
+HTML (`mf2pt1.html')
+ makeinfo --html mf2pt1.texi
+
+Info (`mf2pt1.info')
+ makeinfo mf2pt1.texi
+
+N.B. The `install-info' command is a convenient way to install
+`mf2pt1.info' on your system.
+
+
+ On Unix, you may also want to generate an `mf2pt1' man page. The
+man page is embedded within the `mf2pt1' Perl script and can be
+extracted with `pod2man':
+
+ pod2man --center="User Commands" --date="29 June 2012" \
+ --release="v2.5" mf2pt1 > mf2pt1.1
+
+You can then move `mf2pt1.1' into `/usr/man/man1' or any other man page
+directory. Note that the `mf2pt1' man page is fairly rudimentary. It
+is primarily a list of the command-line options (*note Font
+information::) and a pointer to the document that you're reading now.
+
+
+File: mf2pt1.info, Node: Usage, Next: Future Work, Prev: Introduction, Up: Top
+
+2 Usage
+*******
+
+`mf2pt1' is fairly straightforward to use. To process a Metafont
+source file, merely specify the filename:
+
+ mf2pt1 myfont.mf
+
+That simple command automatically performs all of the following
+operations:
+
+ 1. Read `myfont.mf'.
+
+ 2. Use `mpost' to convert each character to a separate Encapsulated
+ PostScript (EPS) file named `myfont.NUM'.
+
+ 3. Process and merge the EPS files into a single "disassembled"
+ Type 1 font called `myfont.pt1'.
+
+ 4. Run `t1asm' from the Type 1 Utilities to convert the disassembled
+ font into a true, binary Type 1 font called `myfont.pfb'.
+
+ 5. Invoke `fontforge' to apply rendering hints to `myfont.pfb' and to
+ attempt to remove overlapping paths.
+
+ The external programs launched by `mf2pt1'--`mpost', `t1asm', and
+`fontforge'--can be overridden by setting the eponymous, uppercase
+environment variable. For example, invoking FontForge's predecessor,
+PfaEdit, instead of FontForge is simply a matter of setting the
+`FONTFORGE' environment variable to `pfaedit' before invoking `mf2pt1'.
+As a corollary, you can inhibit an `mf2pt1' external program from
+running by setting the corresponding environment variable to the name
+of a nonexistent program.
+
+* Menu:
+
+* Restrictions:: Restrictions imposed on the font source code
+* Font information:: Specifying PostScript font characteristics
+* Additional command-line options:: Options unrelated to font characteristics
+* Custom font encodings:: Altering the mapping from character name to number
+* Restoring mfplain defaults:: Using the original (un)filldraw and pencircle
+
+
+File: mf2pt1.info, Node: Restrictions, Next: Font information, Prev: Usage, Up: Usage
+
+2.1 Restrictions
+================
+
+If `mf2pt1' sounds too good to be true, it is--somewhat. `mf2pt1' is
+not a general-purpose Metafont -to-Type 1 converter. Rather, it can
+convert only certain Metafont constructs. This is not a showstopper
+for new fonts designed with `mf2pt1' in mind, but it is unlikely that
+`mf2pt1' will work on an arbitrary Metafont source file.
+
+ `mf2pt1''s biggest restriction is that each glyph must be drawn
+entirely from closed paths, using Metafont 's *fill* and *unfill*
+commands. (`mf2pt1' has limited support for *draw* and *undraw*, but
+their use is currently discouraged. *filldraw* and *unfilldraw* issue a
+warning message and invoke *draw* and *undraw*, respectively.) The
+Type 1 format requires that these paths be nonoverlapping. The
+following are some of the alternatives for removing path overlaps:
+
+ 1. Install FontForge. As part of its final step in producing a
+ Type 1 font, `mf2pt1' instructs FontForge to replace overlapping
+ paths with nonoverlapping paths.
+
+ 2. Remove overlaps using Metafont code within the font program
+ itself. A `.zip' file attachment to a 6 January 2005 article
+ (http://tug.org/mailman/htdig/metapost/2005-January/000080.html) by
+ Boguslaw Jackowski on the MetaPost mailing list (subject: "Re: all
+ intersections between two paths") includes a MetaPost library which
+ assists with that task. The library provides a *find_outlines*
+ command which can be used to define a path as the union of two
+ other paths. A number of MetaPost example programs are also
+ included in the `.zip' file.
+
+ 3. Design your fonts from the beginning without using overlapping
+ paths.
+
+ A secondary restriction is that `mf2pt1' redefines a number of Plain
+Metafont commands, such as *beginchar*, *fill*, and *unfill*. Metafont
+font programs which redefine or bypass these (using Metafont
+primitives) will not be convertible with `mf2pt1'.
+
+ A far less severe restriction is due to `mf2pt1''s utilizing
+MetaPost's Metafont interface instead of Metafont itself. The
+implication is that commands not defined by MetaPost's `mfplain.mp'
+cannot be handled by `mf2pt1', either. Very few fonts will have a
+problem with this restriction but see the MetaPost manual for more
+information.
+
+
+File: mf2pt1.info, Node: Font information, Next: Additional command-line options, Prev: Restrictions, Up: Usage
+
+2.2 Specifying font information
+===============================
+
+Metafont fonts normally specify a set of *fontdimen*s which provide
+information about a particular font that cannot otherwise be inferred.
+These include features such as the font's x-height, quad width,
+interword stretchability and shrinkability, and other design
+characteristics that TeX makes use of. PostScript fonts utilize a
+largely different set of font parameters, such as the underline
+position and thickness, font family name, and copyright notice.
+`mf2pt1' provides Metafont commands to define the PostScript font
+parameters in the generated Type 1 font. These parameters should
+appear in the Metafont source file as follows:
+
+ if known ps_output:
+ ...
+ fi
+
+`ps_output' is defined by `mf2pt1' but not by Plain Metafont .
+Checking if it is known is the recommended way to determine if the font
+is being built under `mf2pt1'.
+
+* Menu:
+
+* Parameters:: Font-information commands available to Metafont
+* Command-line equivalents:: Specifying font features on the command line
+* Default values:: Types and default values of each parameter
+* Parameter example:: Metafont example which specifies all parameters
+
+
+File: mf2pt1.info, Node: Parameters, Next: Command-line equivalents, Prev: Font information, Up: Font information
+
+2.2.1 Parameters
+----------------
+
+ The following list presents all of the font-information commands
+provided by `mf2pt1' and describes what each command means. Commands
+marked with an asterisk are also defined by Plain Metafont and
+therefore do not need to be enveloped within a test for `ps_output'.
+
+*font_coding_scheme*
+ The mapping between character numbers and PostScript names. If
+ this is the name of a file, `mf2pt1' expects it to contain
+ PostScript code defining a font-encoding vector. *Note Custom
+ font encodings::, for an example of such a file. If
+ *font_coding_scheme* is not the name of a file, `mf2pt1' expects
+ it to be one of the literal strings `standard' (Adobe standard
+ encoding), `isolatin1' (ISO Latin 1 encoding), `ot1' (TeX 7-bit
+ encoding), `t1' (TeX 8-bit encoding), or `asis' (encoding
+ integrated with the character programs using the *glyph_name*
+ command as described in *note Custom font encodings::). Anything
+ else will generate a warning message and cause `mf2pt1' to use
+ `standard' instead.
+
+*font_comment*
+ A textual comment that will appear within the generated font.
+ This is often used for copyright notices.
+
+*font_family*
+ The family that this font belongs to. For example, "Utopia Bold
+ Italic" belongs to the `Utopia' family.
+
+*font_fixed_pitch*
+ Whether the font is monospaced (if *true*) or or proportionally
+ spaced (if *false*).
+
+*font_identifier (*)*
+ The full name of the font, e.g., `Utopia Bold Italic'.
+
+*font_name*
+ The symbolic font name, used to load the font from a PostScript
+ document. Spaces are forbidden. Generally, the font name is of
+ the form `FAMILY-MODIFIERS'. For example, the font name of Utopia
+ Bold Italic would be `Utopia-BoldItalic'.
+
+*font_size (*)*
+ The font design size. This is specified in "sharped" units within
+ Metafont code or as a point size on the command line.
+
+*font_slant (*)*
+ When specified with *font_slant*, the amount of slant per point.
+ When specified with `--italicangle', the angle in counterclockwise
+ degrees from the vertical (i.e., zero for an upright font,
+ negative for a right-slanting italic font).
+
+*font_underline_position*
+ The vertical position at which an underline should lie, specified
+ in "sharped" units within Metafont code or as a number of points
+ on the command line.
+
+*font_underline_thickness*
+ The thickness of an underline, specified in "sharped" units within
+ Metafont code or as a number of points on the command line.
+
+*font_unique_id*
+ The unique ID for this font. The ID should be between 0 and
+ 16,777,215. If not specified, `mf2pt1' will choose an ID at
+ random from the "open" range, 4,000,000-4,999,999. All IDs not in
+ that range are allocated by contacting Adobe's UniqueID
+ Coordinator. (I don't believe a fee is involved, but I don't know
+ for sure.)
+
+*font_version*
+ The version number of the font. This should be of the form
+ `MMM.MMM', where MMM is the major version number and MMM is the
+ minor version number.
+
+*font_weight*
+ The font weight. For example, the font weight of Utopia Bold
+ Italic is `Bold'.
+
+
+File: mf2pt1.info, Node: Command-line equivalents, Next: Default values, Prev: Parameters, Up: Font information
+
+2.2.2 Command-line equivalents
+------------------------------
+
+ Each of the font-information commands listed in *note Parameters::
+has a command-line equivalent. Their use is discouraged but they are
+listed here for completeness:
+
+*font_coding_scheme* `--encoding'
+*font_comment* `--comment'
+*font_family* `--family'
+*font_fixed_pitch* `--fixedpitch'
+*font_identifier* `--fullname'
+*font_name* `--name'
+*font_size* `--designsize'
+*font_slant* `--italicangle'
+*font_underline_position* `--underpos'
+*font_underline_thickness* `--underthick'
+*font_unique_id* `--uniqueid'
+*font_version* `--fontversion'
+*font_weight* `--weight'
+
+ A special case is `--fixedpitch' which does not take an argument.
+Rather, you should use `--fixedpitch' as the equivalent of
+`font_fixed_pitch true' and `--nofixedpitch' as the equivalent of
+`font_fixed_pitch false'.
+
+
+File: mf2pt1.info, Node: Default values, Next: Parameter example, Prev: Command-line equivalents, Up: Font information
+
+2.2.3 Default values
+--------------------
+
+ The next table lists the Metafont type and default value of each of
+the parameters listed in *note Parameters::.
+
+*font_coding_scheme* *string* `"standard"'
+*font_comment* *string* `"Font converted to Type 1
+ by mf2pt1, written by
+ Scott Pakin."'
+*font_family* *string* (The value of
+ *font_identifier*)
+*font_fixed_pitch* *boolean* *false*
+*font_identifier* *string* (The input filename, minus
+ `.mf')
+*font_name* *string* (The value of
+ *font_family*, plus an
+ underscore, plus the
+ value of *font_weight*,
+ with all spaces removed)
+*font_size* *numeric* (Must be specified or
+ `mf2pt1' will abort with
+ an error message)
+*font_slant* *numeric* 0
+*font_underline_position* *numeric* -1
+*font_underline_thickness* *numeric* 0.5
+*font_unique_id* *string* (Randomly generated in the
+ range 4000000-4999999)
+*font_version* *string* `"001.000"'
+*font_weight* *string* `"Medium"'
+
+
+
+File: mf2pt1.info, Node: Parameter example, Prev: Default values, Up: Font information
+
+2.2.4 Parameter example
+-----------------------
+
+ As an example, the following Metafont code shows the usage of all
+of the parameters that `mf2pt1' accepts:
+
+if known ps_output:
+ font_coding_scheme "ot1";
+ font_comment "Copyright (C) 2012 Scott Pakin.";
+ font_family "Kerplotz";
+ font_fixed_pitch false;
+ font_identifier "Kerplotz Light Oblique";
+ font_name "Kerplotz-LightOblique";
+ font_size 10pt#; % Important to include
+ this.
+ font_slant 1/6;
+ font_underline_position -1pt#;
+ font_underline_thickness 1/2pt#;
+ font_unique_id "4112233"; % Better to omit
+ this.
+ font_version "002.005";
+ font_weight "Light";
+ fi
+
+In the above, the *font_fixed_pitch* call could have been omitted, as
+it defaults to *false*. Also, unless you've requested a unique ID from
+Adobe, it's generally better not to assign *font_unique_id*; let
+`mf2pt1' choose a random value itself.
+
+ The same parameters can also be specified on the command line as
+follows:
+
+ mf2pt1 --encoding=ot1 --comment="Copyright (C) 2012 Scott Pakin."
+ --family=Kerplotz --nofixedpitch --fullname="Kerplotz Light Oblique"
+ --name=Kerplotz-LightOblique --designsize=10 --italicangle=-9.5
+ --underpos=-100 --underthick=50 --uniqueid=4112233 --version=002.005
+ --weight=Light kerplotz.mf
+
+Note that a Metafont font slant of 1/6 is equal to a PostScript italic
+angle of approximately -9.5. The conversion formula is slant =
+-tan(angle). In addition, the underline position and thickness must be
+multiplied by 1000/*font_size* to convert from the Metafont units that
+are used within the `.mf' file to the PostScript units that are used on
+the command line.
+
+
+File: mf2pt1.info, Node: Additional command-line options, Next: Custom font encodings, Prev: Font information, Up: Usage
+
+2.3 Additional command-line options
+===================================
+
+In addition to the command-line options for setting font parameters
+that were presented in *note Parameters::, `mf2pt1' supports a
+`--rounding' option. While `mf2pt1' normally rounds all font
+coordinates to the nearest integer, `--rounding' increases coordinate
+precision by instructing `mf2pt1' to round instead to the nearest
+multiple of a given fractional number. For example, `--rounding=0.25'
+rounds the coordinate (7.4, 10.3) to (7.5, 10.25) while it would
+otherwise be rounded to the less-precise (7, 10).
+
+ Large glyphs can be problematic in MetaPost and therefore in
+`mf2pt1'. Unlike Metafont , MetaPost does not honor `mag' for
+magnifying dimensions. Rather, the number of PostScript (a.k.a. "big")
+points per pixel--`bpppix'--is hardwired to 0.02 and all other
+dimensions (`mm', `in', `pt', etc.) are expressed in terms of that.
+Consequently, glyphs that multiply a large number of font units by a
+dimension are likely to exceed 4096, the largest value that MetaPost
+can represent in its fixed-point format. If numerical overflow becomes
+a problem you can use the `--bpppix' option to `mf2pt1' to change the
+value of `bpppix'. For example, specifying `--bpppix=0.2' enables a
+tenfold increase in maximum glyph size (with a corresponding decrease
+in precision).
+
+ After generating a Type 1 font, `mf2pt1' runs it through FontForge
+to add hinting information, remove overlaps, and otherwise clean up the
+generated font. The `--ffscript' option specifies the filename of a
+FontForge script to use instead of the default script, which is listed
+below:
+
+ Open($1);
+ SelectAll();
+ RemoveOverlap();
+ AddExtrema();
+ Simplify(0, 2);
+ CorrectDirection();
+ Simplify(0, 2);
+ RoundToInt();
+ AutoHint();
+ Generate($1);
+ Quit(0);
+
+See the FontForge documentation for an explanation of each of those
+commands and a description of other commands made available to
+FontForge scripts. `mf2pt1' runs the script with one argument (`$1'),
+which is the name of the generated `.pfb' file.
+
+ `mf2pt1' also supports a `--help' option which summarizes all of the
+program's command-line options.
+
+
+File: mf2pt1.info, Node: Custom font encodings, Next: Restoring mfplain defaults, Prev: Additional command-line options, Up: Usage
+
+2.4 Custom font encodings
+=========================
+
+*note Parameters::, lists the font encodings currently supported by
+`mf2pt1' and mentions that an alternate encoding can be specified by
+providing the name of an encoding file. To elaborate, the following
+example represents the contents of an encoding file which defines
+a--largely useless nowadays--EBCDIC font encoding:
+
+ `% Sample encoding vector: EBCDIC
+ % The encoding vector must have a name and be defined as a
+ PostScript array.
+ /ebcdic_encoding [
+ /_a0 /_a1 /_a2 /_a3 /_a4 /_a5 /_a6 /_a7 /_a8 /_a9 /_a10 /_a11 /_a12
+ /_a13 /_a14 /_a15 /_a16 /_a17 /_a18 /_a19 /_a20 /_a21 /_a22 /_a23
+ /_a24 /_a25 /_a26 /_a27 /_a28 /_a29 /_a30 /_a31 /_a32 /_a33 /_a34
+ /_a35 /_a36 /_a37 /_a38 /_a39 /_a40 /_a41 /_a42 /_a43 /_a44 /_a45
+ /_a46 /_a47 /_a48 /_a49 /_a50 /_a51 /_a52 /_a53 /_a54 /_a55 /_a56
+ /_a57 /_a58 /_a59 /_a60 /_a61 /_a62 /_a63 /space /_a65 /_a66 /_a67
+ /_a68 /_a69 /_a70 /_a71 /_a72 /_a73 /bracketleft /period /less
+ /parenleft /plus /exclam /ampersand /_a81 /_a82 /_a83 /_a84 /_a85
+ /_a86 /_a87 /_a88 /_a89 /bracketright /dollar /asterisk /parenright
+ /semicolon /asciicircum /hyphen /slash /_a98 /_a99 /_a100 /_a101
+ /_a102 /_a103 /_a104 /_a105 /bar /comma /percent /underscore
+ /greater /question /_a112 /_a113 /_a114 /_a115 /_a116 /_a117
+ /_a118 /_a119 /_a120 /_a121 /colon /numbersign /at /quoteright
+ /equal /quotedbl /_a128 /a /b /c /d /e /f /g /h /i /_a138 /_a139
+ /_a140 /_a141 /_a142 /_a143 /_a144 /j /k /l /m /n /o /p /q /r
+ /_a154 /_a155 /_a156 /_a157 /_a158 /_a159 /_a160 /asciitilde /s /t
+ /u /v /w /x /y /z /_a170 /_a171 /_a172 /_a173 /_a174 /_a175 /_a176
+ /_a177 /_a178 /_a179 /_a180 /_a181 /_a182 /_a183 /_a184 /quoteleft
+ /_a186 /_a187 /_a188 /_a189 /_a190 /_a191 /braceleft /A /B /C /D
+ /E /F /G /H /I /_a202 /_a203 /_a204 /_a205 /_a206 /_a207
+ /braceright /J /K /L /M /N /O /P /Q /R /_a218 /_a219 /_a220 /_a221
+ /_a222 /_a223 /backslash /_a225 /S /T /U /V /W /X /Y /Z /_a234
+ /_a235 /_a236 /_a237 /_a238 /_a239 /zero /one /two /three /four
+ /five /six /seven /eight /nine /_a250 /_a251 /_a252 /_a253 /_a254
+ /_a255
+ % Don't forget to end the array.
+ ] def'
+
+All entries in the encoding vector are PostScript "names" and therefore
+must be prefixed with a slash. Unnamed characters such as control
+characters are commonly named `_aNUMBER', where NUMBER is the decimal
+offset into the character table. Undefined characters are indicated by
+`.notdef'. In the EBCDIC example, the character at position 0 in the
+font will be named `a0'; the character at position 1 will be named
+`a1'; the character at position 74 will be named `bracketleft'; the
+character at position 129 will be named `a'; and so forth.
+
+ Individual characters can be mapped to an encoding either numerically
+or by executing a *glyph_name* command within a character definition.
+For example, the following code overrides the character position passed
+to *beginchar* (i.e., 123) with whatever character position the current
+encoding has designated for the `ohungarumlaut' glyph:
+
+ beginchar (123, cap_height#-1/2pt#, cap_height#, 0);
+ if known ps_output:
+ glyph_name "ohungarumlaut";
+ fi
+ ...
+ endchar;
+
+
+File: mf2pt1.info, Node: Restoring mfplain defaults, Prev: Custom font encodings, Up: Usage
+
+2.5 Restoring `mfplain' defaults
+================================
+
+`mf2pt1' normally redefines *filldraw* as *fill* and *unfilldraw* and
+*unfill* because Type 1 fonts don't allow overlapping curves.
+Similarly, `mf2pt1' redefines *pencircle* as a 20-gon to coerce
+MetaPost into drawing it using a filled instead of a stroked PostScript
+path.
+
+ If you know you'll be postprocessing your fonts using FontForge,
+which can automatically convert overlapping paths to nonoverlapping
+paths, then you can restore the original `mfplain.mp' definitions of
+*filldraw*, *unfilldraw*, and *pencircle* as follows:
+
+ if known ps_output:
+ pencircle := mfplain_pencircle;
+ let filldraw := mfplain_filldraw;
+ let unfilldraw := mfplain_unfilldraw;
+ fi
+
+
+File: mf2pt1.info, Node: Future Work, Next: Acknowledgments, Prev: Usage, Up: Top
+
+3 Future Work
+*************
+
+One avenue for future work is to enable the font designer to specify
+Type 1 font hints directly in the Metafont font program. Hinting is a
+way for a font designer to specify how a font should be rendered at low
+resolutions, for example, at typical monitor resolutions. In Metafont
+, this is done by controlling the way that points are mapped to pixel
+locations, using commands such as *define_corrected_pixels*,
+*define_blacker_pixels*, and *lowres_fix*. Type 1 fonts are hinted in
+a completely different manner. Type 1 hints distinguish key character
+features, such as stems and dots, from decorations which can be
+discarded at low resolutions. The PostScript interpreter uses that
+information to determine how to map points to pixels. Although
+`mf2pt1' employs FontForge to autohint the fonts it generates, the
+approach is mechanical and unlikely to hint as well as a human can do
+manually. It would be convenient for `mf2pt1' one day to provide
+Metafont commands for *hstem*, *vstem*, *dotsection*, and the other
+Type 1 hints. That way, hints will no longer need to be re-added
+manually every time `mf2pt1' regenerates a Type 1 font.
+
+ Another future addition to `mf2pt1' is the addition of more font
+encodings. The following are the encodings that `mf2pt1' will most
+likely accept:
+
+`TeXMathItalicEncoding'
+ Upper- and lowercase Greek and Latin letters, old-style digits,
+ and a few symbols and accents.
+
+`TeXMathSymbolEncoding'
+ A variety of symbols, as well as calligraphic Latin majuscules.
+
+`TeXMathExtensionEncoding'
+ Variable-sized symbols, such as braces, integrals, and radicals.
+
+`AdobeExpert'
+ Small caps, currency symbols, old-style digits, and various
+ superior and inferior letters and digits.
+
+
+File: mf2pt1.info, Node: Acknowledgments, Prev: Future Work, Up: Top
+
+Acknowledgments
+***************
+
+Many thanks are owed to Werner Lemberg for writing the code underlying
+the `--rounding' option; for introducing the *glyph_name* command and
+`asis' encoding vector; for providing the default FontForge script
+listed in *note Additional command-line options::; for fixing some
+code-generation bugs in `mf2pt1'; for finding a more robust way to dump
+`mf2pt1.mem'; for directing me to the overlap-removal code mentioned in
+*note Restrictions::; for supplying the _crossproduct_, _makeline_, and
+_is_clockwise_ functions used by `mf2pt1.mp'; for proposing the
+`--bpppix' command-line option; and, for suggesting various features and
+improvements to `mf2pt1'. Thanks also go to Werner Lemberg and Boguslaw
+Jackowski for updating the *is_clockwise* function in `mf2pt1.mp' to
+work around a bug in MetaPost which relates to the *turningnumber*
+command. Finally, thanks go to Ralf Stubner for providing the T1
+encoding vector and for pointing out a typo in the generated font
+programs; to Michael Zedler for alerting me to problems with
+`--encoding' and suggesting I modify that option to accept PostScript
+`.enc' files; and to Michael Ummels for fixing a couple of bugs that
+made character widths in the generated fonts slightly too large.
+
+
+
+Tag Table:
+Node: Top301
+Node: Introduction840
+Node: Requirements2677
+Node: Installation4426
+Node: Usage6237
+Node: Restrictions7953
+Node: Font information10343
+Node: Parameters11703
+Node: Command-line equivalents15078
+Node: Default values16202
+Node: Parameter example17880
+Node: Additional command-line options19899
+Node: Custom font encodings22238
+Node: Restoring mfplain defaults25689
+Node: Future Work26548
+Node: Acknowledgments28415
+
+End Tag Table