diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:49:07 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:49:07 +0000 |
commit | 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (patch) | |
tree | 90d17e00e572ecb1e24764b6f29c80e098b08d29 /Master/texmf-dist/doc/latex/accfonts/README | |
parent | 950209b26f70aa87ed07c54f82a95b6f03b7c3a0 (diff) |
doc/latex
git-svn-id: svn://tug.org/texlive/trunk@84 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/accfonts/README')
-rw-r--r-- | Master/texmf-dist/doc/latex/accfonts/README | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/accfonts/README b/Master/texmf-dist/doc/latex/accfonts/README new file mode 100644 index 00000000000..3f5a5ecc54e --- /dev/null +++ b/Master/texmf-dist/doc/latex/accfonts/README @@ -0,0 +1,333 @@ + + + Mkt1font and vpl2vpl: programs to generate accented fonts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + John D. Smith, University of Cambridge, 1997 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +These two programs address the same requirement using the same basic +algorithms: their aim is to make it easy to create versions of +existing fonts containing whatever accented characters the user may +need, arranged according to whatever encoding he/she may favour. +Mkt1font does this by reading in the two files that define a Type 1 +PostScript font and writing out new versions of them; vpl2vpl does +it by reading in the file that defines a TeX virtual font and +writing out a new version of it. In each case information about what +accented characters are required and where they should be located is +supplied by means of a simple definition file, which has the same +format for both programs. + +It is common to hear someone say, "I need a font containing +such-and-such special characters," when really they should be +saying, "I need a version of Times/Palatino/New Century Schoolbook +etc. containing the special characters for such-and-such a +language." If we are to take full advantage of computer typesetting +and desktop publishing, we need to be able to choose our fonts on +grounds of aesthetic merit rather than expediency, and to move +towards standardised encodings. These programs should go some way to +making this possible. + +Note that most Type 1 PostScript fonts are commercial products +subject to both copyright and licensing restrictions. If the license +for such a font forbids reverse-engineering it, it is presumably +illegal to run mkt1font on it; in any case it would certainly be a +serious breach of copyright to make modified versions of the font +available to third parties. The author of mkt1font will not be held +responsible for any such misuses of the software. (No such legal +problems surround the use of TeX virtual fonts, which merely specify +new ways to use existing fonts.) However, would-be users may wish to +note the existence of a body of high-quality freeware lookalikes for +many of the standard Type 1 fonts: like mkt1font and vpl2vpl, the +Ghostscript fonts developed by URW++ Design and Development +Incorporated are made available under the GNU General Public License +(see the file COPYING), which permits them to be modified and +redistributed provided that certain simple decencies are observed. +These fonts are available from many ftp sites, including those +forming the Comprehensive TeX Archive Network (CTAN), for example +ftp.tex.ac.uk: look for the most recent font archive file in the +directory /tex-archive/support/ghostscript/gnu/fonts. + +A detailed specification of the form of the definition file used by +mkt1font and vpl2vpl is given below in the instructions for using +the two programs, but it may be helpful to give a quick idea of its +contents here. Each line of the file contains something similar to +"128 x acute", which is an instruction to create a new character +formed from "x" with an acute accent and located at position 128 in +the character set. Once a new character has been defined in this +way, it "exists" in just the same way as any other character, under +the name "xacute" (or whatever); thus it can even receive further +accents. The two lines + + 129 e macron + 130 emacron breve + +will create a "long e" and a "long-or-short e" at the positions +specified. (If only the latter is desired, they can both be assigned +the same position in the encoding -- the second will overwrite the +first.) Subscript as well as superscript accents are available. Some +sample definition files are included to give an idea of the format: +note that two of these (CSX.def and Norman.def), used for Indian +language material in Roman script, contain the triple-accented +character "runderdotmacron acute"! + +In addition to accented characters proper, both programs can produce +digraphs -- single characters composed of pairs of other characters. +In itself this may seem to be of limited use, since the digraph +should always be indistinguishable from its two constituent +characters printed consecutively. However, some Unicode-style +encodings require that certain character-pairs be treated as +digraphs. In addition, use of a digraph in subsequent definitions +allows an accent to be applied to two characters as a pair: so, for +example, + + 131 k h + 131 kh underbar + +will produce a character consisting of an underlined "kh" at +position 131. + +The algorithms used in both programs take great care to secure the +most attractive results, placing accents centrally over/under their +characters at appropriate heights/depths, varying their position +according to the angle of slant in Italic and similar fonts, +providing new characters with kerning information (which will be +resolutely ignored by most word-processors), and -- in the case of +mkt1font -- giving hinting instructions to improve output on +low-resolution printers. However, users may feel that some +characters need "tweaking". This tends to happen when the part of +the character adjacent to the accent is highly asymmetrical: +subscript accents below "r" may need moving to the left, while +superscript accents above "d" may need moving to the right. It is +relatively easy to modify the output of vpl2vpl to make such +improvements by hand (vpl files are designed to be easy for humans +to read, and vpl2vpl identifies each character with a comment). Type +1 fonts are another matter; mkt1font generates a human-readable and +commented ".dis" file as well as the ".pfb" font file, and it is +possible to make changes to this and rebuild the pfb file with t1asm +(see below), but this is not quite as simple as modifying a TeX +virtual font. + +The programs are written in Perl, and have not been tested on +systems other than Unix. (Apart from the #! line at the top, the +only Unix specificities the author is aware of are two references to +"/dev/null" in mkt1font and the general assumption that filenames +can be of any length.) At run time, mkt1font invokes two further +font utilities, t1asm and t1disasm, written by I. Lee Hetherington +and available from CTAN ftp sites: look in the directory +/tex-archive/fonts/utilities/t1utils. If it is intended to use the +fonts output by mkt1font with Adobe Type Manager, it will probably +be necessary to create ".inf" and/or ".pfm" files for them: for this +there is a useful shareware program for MS-DOS called REFONT, which +can be found at http://www.asy.com/sharewr.htm. + +Detailed instructions for using the two programs follow. In each +case these instructions can also be seen by typing the name of the +program with a "-h" option. + + +Mkt1font +~~~~~~~~ +Syntax: mkt1font -n fontname -d definition-file -a afm-file -f font-file + [-s shrink-factor] [-c candrabindu-adjustment] [-b] + +Mkt1font creates new Type 1 PostScript fonts based on existing fonts +("input fonts"). In order to do this it makes use of I. Lee +Hetherington's programs t1asm and t1disasm, which must be present on +the system. A successful run will generate an AFM file and a PFB +file, as well as a DIS file containing a disassembled version of the +PFB file (including useful comments). Four options must be specified +on the command line, as follows: + + -n should name the font it is intended to generate. Avoid names + such as "myfont", as both mkt1font and other programs attempt + to draw conclusions from the name; better would be something + like "Utopia_French-BoldItalic". The generated font files will + also use this for their basename. + + -d should refer to a font definition file. This file (which could + usefully be named, e.g., "French.def") should consist of lines + of character definitions, in the form + "number" "character" + or + "number" "character" "accent" + Here "number" represents the character's position in the new + encoding and may be expressed in decimal, octal or hex; + "character" names the character (e.g. "comma", "eight", "A") + or consists of the word ".notdef" (indicating that the + specified number's "slot" in the new encoding is to be empty); + and "accent" optionally names an accent to be placed on the + character. In addition to the standard accents available in + PostScript fonts, "underbar" and "underdot" are also available, + as are "under" versions of all the normal superscript accents + ("underdieresis", "underring", etc.). The Indian accent + "candrabindu" may also be specified: it is formed by + overprinting a breve with a dotaccent. Finally, "overdot" may + be used as a synonym for "dotaccent". + + If the character named in the "accent" position is not in fact + a valid accent character, the program interprets the definition + as a request for a digraph formed from the "character" and the + "accent". A digraph consisting of, say, "k" and "h" will be + indistinguishable from the letters "k" and "h" printed + consecutively, but the digraph "kh" can itself receive accents + like any other character: see next paragraph. + + A new character (such as "amacron" or "kh") may be freely + used in the "character" position of a further definition (such + as "amacron breve" or "kh underbar"). There is no constraint + on the ordering of definitions within a definition file. The + definition of "a macron" does not have to precede that of + "amacron breve": requests for "impossible" characters are + deferred until their constituents have had a chance to come into + being. + + "Slots" for which no new definition is given retain the + definition they have in the input font. + + The definition file may also contain blank lines and comments + (introduced by "#"). + + -a should refer to the AFM (Adobe Font Metrics) file for the input + font. + + -f should refer to the binary font file (PFB) for the input font. + (In fact the equivalent ASCII file (PFA) is also acceptable for + input, but the output font is always in PFB format.) + + -s may optionally give the factor, expressed as a per-thousand + value, by which normally superscript accents (such as dieresis, + ring) should be shrunk when they are used as subscript accents + (such as underdieresis, underring). Values of around 800 may be + found useful. + + -c may optionally give two comma-separated numerical values to + adjust the x and y coordinates of the dotaccent placed within a + breve to form the candrabindu accent. + + -b may optionally be specified to block the use of predefined + accented characters, forcing mkt1font to define its own + versions. This may be useful to secure a consistent appearance + in cases where a font designer does not share mkt1font's views + on where accents should be placed. + +The -h option prints this help. + + +Vpl2vpl +~~~~~~~ +Syntax: vpl2vpl -d definition-file [-s shrink-factor] + [-c candrabindu-adjustment] [-b] vpl-file + +Vpl2vpl creates new TeX virtual fonts based on existing virtual +fonts ("input fonts"). A successful run will read a vpl (Virtual +Property List) file and a definition file, and will generate a new +vpl file on standard output. The input font is assumed to adhere to +the standard TeX encoding for text fonts unless it was created with +the program afm2tfm, in which case it is assumed to conform to the +encoding specified in the file dvips.enc. In either case, the name +of the input font is assumed to be the name of the input file +without its .vpl extension: it must conform to normal TeX +conventions for naming fonts, as vpl2vpl attempts to draw +conclusions from it about the kind of font it is dealing with. + +In the case of a non-virtual font (such as the Computer Modern +fonts), use a pl (Property List) file, created with the standard +utility tftopl, as the input file in place of a vpl file; vpl2vpl +will make the necessary changes on the fly. + +A typical complete sequence of commands to create a new virtual +font might therefore be + afm2tfm Times-Roman.afm -t dvips.enc -v ptmr rptmr + vpl2vpl -d ISO-Latin1.def ptmr.vpl >ptmr_isol1.vpl + vptovf ptmr_isol1.vpl ptmr_isol1.vf ptmr_isol1.tfm +for a PostScript font, or + tftopl cmr10.tfm cmr10.pl + vpl2vpl -d ISO-Latin1.def cmr10.pl >cmr10_isol1.vpl + vptovf cmr10_isol1.vpl cmr10_isol1.vf cmr10_isol1.tfm +for a Computer Modern font. + +In order to keep the whole upper half of the character set free for +the requirements of the encoding specified in the definition file, +certain modifications are made to input fonts following the +dvips.enc encoding to bring them into greater conformity with the +TeX norm. In particular, the characters dotaccent and hungarumlaut +are placed in the positions assigned by TeX ("5F, "7D), not those +enforced by dvips.enc ("C7, "CD). The f-ligatures, double quotes and +dashes are also moved from the upper half of the character set to +their normal TeX positions. As a result, the following characters +are not found in the lower half of the character set: quotesingle, +quotedbl, backslash, underscore, braceleft, bar, braceright. These +characters can, however, be assigned positions in the output font if +they are needed. (Indeed, they could all be explicitly restored to +their dvips.enc positions if this were desired.) + +Options: + + -d should refer to a font definition file. This file (which could + usefully be named, e.g., "French.def") should consist of lines + of character definitions, in the form + "number" "character" + or + "number" "character" "accent" + + Here "number" represents the character's position in the new + encoding and may be expressed in decimal, octal or hex; + "character" names the character (e.g. "comma", "eight", "A") or + consists of the word ".notdef" (indicating that the specified + number's "slot" in the new encoding is to be empty); and + "accent" optionally names an accent to be placed on the + character. In addition to the standard accents available in + PostScript fonts, "underbar" and "underdot" are also available, + as are "under" versions of all the normal superscript accents + ("underdieresis", "underring", etc.). The Indian accent + "candrabindu" may also be specified: it is formed by + overprinting a breve with a dotaccent. Finally, "overdot" may + be used as a synonym for "dotaccent". + + If the character named in the "accent" position is not in fact + a valid accent character, the program interprets the definition + as a request for a digraph formed from the "character" and the + "accent". A digraph consisting of, say, "k" and "h" will be + indistinguishable from the letters "k" and "h" printed + consecutively, but the digraph "kh" can itself receive accents + like any other character: see next paragraph. + + A new character (such as "amacron" or "kh") may be freely + used in the "character" position of a further definition (such + as "amacron breve" or "kh underbar"). There is no constraint + on the ordering of definitions within a definition file. The + definition of "a macron" does not have to precede that of + "amacron breve": requests for "impossible" characters are + deferred until their constituents have had a chance to come into + being. + + "Slots" for which no new definition is given retain the + definition they have in the input font. + + The definition file may also contain blank lines and comments + (introduced by "#"). + + -s may optionally give the factor, expressed as a per-thousand + value, by which normally superscript accents (such as dieresis, + ring) should be shrunk when they are used as subscript accents + (such as underdieresis, underring). Values of around 800 may be + found useful. + + -c may optionally give two comma-separated numerical values to + adjust the x and y coordinates of the dotaccent placed within a + breve to form the candrabindu accent. A coordinate scheme using + "DESIGNUNITS R 1000" is assumed. + + -b may optionally be specified to block the use of predefined + accented characters, forcing vpl2vpl to define its own + versions. This may be useful to secure a consistent appearance + in cases where a font designer does not share vpl2vpl's views + on where accents should be placed. + + -h prints this help. + + +John D. Smith jds10@cam.ac.uk +University of Cambridge http://bombay.oriental.cam.ac.uk |