Changes to vpl2vpl between first (unnumbered) release and release 0.1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When I first wrote vpl2vpl I was under the impression that the vpl
file output by afm2tfm could never contain accented character
definitions. The first (unnumbered) release of vpl2vpl thus did not
implement the -b option allowed for mkt1font (to block the use of
predefined accented characters). I have since become aware that in
the rather rare case of an afm file containing composite character
information, afm2tfm uses that information to build definitions of
accented characters; I have therefore introduced a -b option in
version 0.1.
There were two bugs in the coding dealing with the -s option in the
first version of vpl2vpl. First, the shrink-factor specified by the
user was incorrectly applied to the underdot accent as well as to
dropped superscript accents. Second, the shrink-factor was not
correctly scaled in terms of the value of DESIGNUNITS (this chiefly
affected Computer Modern fonts). Both of these have been fixed in
version 0.1.
Another bug affected those characters (quotesingle, quotedbl,
backslash, underscore, braceleft, bar and braceright) which
dvips.enc places in the lower half of the character set, but which
vpl2vpl removes to make room for the normal TeX inhabitants of their
"slots"; in the first version of the program it was not possible to
include these characters in the output font. This has also been
fixed in version 0.1.
The handling of LIGTABLE information controlling kerning etc. has
been improved, to eliminate repeated instructions and "orphaned"
instructions with no LABEL.
In the first version of vpl2vpl I deliberately did not allow for
double superscript accents on tall characters such as capital
letters, on the grounds that this would be bad typographic practice.
A specific request for one such character has led me to modify
version 0.1 of the program to make the creation of such characters
possible, but I would still argue against their use.
Some minor improvements have been made to the code in various areas,
including checking for inappropriate input, calculation of italic
correction for characters with superscript accents, and placing of
dropped superscript accents. (However, it is likely that such
accents will still sometimes require manual intervention.)
Changes to mkt1font between first (unnumbered) release and release 0.1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the first release of mkt1font, kerning information for predefined
accented characters was taken from the input font, even if the -b
option had been specified to force the redefinition of such
characters. This has been fixed in version 0.1: if the -b option is
used, kerns for characters such as "eacute" are generalised from the
kerns for "e" in just the same way as happens for "emacron" etc.
Similarly, predefined accented characters eliminated by the -b
option used to retain "ghost" entries among the unencoded characters
in the afm file. This too has been fixed in version 0.1.
As of version 0.1, any composite character definitions contained in
the afm file of the input font are eliminated from the output font,
since they will almost certainly be incomplete, and (if the user has
specified -b) will probably be wrong as well.
Version 0.1 can now properly process input fonts using MS-DOS file
format (with newline represented by CR/LF). It can also process
fonts in which the character "|" is used in the names of the
frequently used "noaccess def" and "noaccess put" definitions
(previously this fell foul of Perl's regular expression handler).
As with vpl2vpl, I have modified version 0.1 of mkt1font to permit
the creation of tall characters bearing double superscript accents,
though I do not recommend the use of such characters.
The "FontBBox" entries in the afm and pfb files now reflect any
increase in the maximum height or depth of characters in the output
font.
Various other minor improvements have been made to the code,
including the placing of dropped superscript accents. (As with
vpl2vpl, however, it is likely that such accents will still
sometimes require manual intervention.)
Changes between release 0.1 and release 0.2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes common to both programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I have implemented the candrabindu ("moon-dot") accent sometimes
used in Indian-language material. This is achieved by overprinting a
breve with a dotaccent; a new command-line option (-c) has been
introduced to allow for font-specific adjustments in the placing of
the dotaccent.
The user's command-line is now stored as a comment at the head of
the output file(s).
The constraint on the ordering of definitions in a definition file
has been removed: it is no longer necessary to ensure that a
character is defined before it is used.
Digraphs are now implemented: if the character specified as the
"accent" in a definition is not in fact a valid accent character,
the definition is interpreted as a request for a digraph formed from
the "character" followed by the "accent".
A bug which placed superscript accents incorrectly over tall
characters already bearing "under" accents has been fixed.
The vertical positioning of "under" accents has been adjusted: they
are now placed slightly lower than previously.
B. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
Fixed a bug which resulted in some accents in small caps fonts being
positioned at the wrong height.
Fixed a bug which resulted in small amounts of LIGTABLE information
being lost.
C. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
The internal organisation of the program has been cleaned up in a
number of respects. In particular, various subroutines are now
called with the appropriate formal parameters, rather than relying
on the existence of equivalent global variables; the fetching and
storing of character metric information is tidier and more
efficient; and kerning information is dealt with in the course of
the main program loop, rather than in a private (double) loop
afterwards.
The -s option allowing "under" accents to be shrunk by a specified
factor, which was previously available only in vpl2vpl, has now been
implemented in mkt1font also.
The output afm file previously sometimes contained spurious entries
for unencoded characters that duplicated items in the list of
encoded characters. This has been fixed.
Despite the fix introduced in version 0.1, some predefined kerning
information continued to find its way into the afm file even when
the -b option was specified to block the use of predefined accented
characters. A new, improved fix is now in place to prevent this. An
error in a regular expression which generated some undesirable kerns
has also been corrected.
The "FontBBox" entries in the afm and pfb files now reflect any
increase in the maximum width of characters in the output font, as
well as increases in their maximum height or depth.
Fixed a bug causing the underbar accent to be too long.
Fixed a bug causing "under" accents to be assigned the wrong depth:
this could result in the bottom of the accent failing to print
properly.
Changes between release 0.2 and release 0.21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Changes common to both programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The vertical positioning of "under" accents has been adjusted again
(the previous adjustment was a little too enthusiastic). They have
been raised slightly.
The height at which characters are reckoned to be so tall that
superscript accents placed on them must be raised above the normal
level has been increased slightly (from 1.1 x xheight to 1.15 x
xheight).
Changes between release 0.21 and release 0.211
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
A single minor change has been made to vpl2vpl: this has been
necessitated by a change in the format of the LIGTABLE information
produced by version 8.1 of afm2tfm, which now adds identificatory
comments to lines referring to characters by means of octal
notation. Vpl2vpl strips out such comments.
B. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
Minor bugfixes have been put in place: extra spaces in the the
"noaccess def" and "noaccess put" definitions are now permitted, and
so is a character named ".null". An error message has been improved.
Changes between release 0.211 and release 0.212
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
Fixed a bug in the "double superscript accent on small caps
character" routine.
B. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
Fixed a bug which produced incorrect output in cases where the
character to be accented is defined as blank (e.g. space).
Changes to between release 0.212 and release 0.22
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Changes common to both programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The programs now recognise "commaaccent" as a valid subscript
accent. Note that they cannot replace this subscript with the
superscript form used with the letter "g" (any more than they can
substitute the apostrophe-like form of the caron that is used with
"L", "d", "l" and "t"). Note also that as there is no position for
this accent in either the standard TeX encoding or the dvips.enc
variant, vpl2vpl will not actually be able to use it to build new
characters without further modification.
In the case where the definition file specifies, say, "z overdot"
and the font contains a predefined version named "zdotaccent", it
previously happened that the output font contained both characters.
This has been fixed: now only the character requested in the
definition file exists in the output.
Changes between release 0.22 and release 0.221
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
Fixed a bug which caused the program to fail after incorrectly
identifying CharStrings definitions.
Changes tbetween release 0.221 and release 0.222
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
Changed FamilyName to remove only the final one of a number of
hyphenated elements from the font name.
Changes between release 0.222 and release 0.23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
No changes have in fact been made to mkt1font, but its version number
has been raised to 0.23 to conform with those of vpl2vpl and vpl2ovp.
B. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
A change has been introduced to permit the program to use the output
of the AFM conversion utility afm2pl, rather than the earlier afm2tfm.
This has been done because it has come to light that afm2tfm gives
incorrect values for the heights of some characters, which can cause
poor accent placement. Support for the output of afm2tfm has not been
withdrawn, but afm2pl is now definitely preferred.
B. A new program: vpl2ovp
~~~~~~~~~~~~~~~~~~~~~~~~~
The greatest change as of 0.23 is the addition of a third program to
the suite. Vpl2ovp does essentially the same job as vpl2vpl, in that
it creates virtual fonts that contain arbitrarily accented characters,
but its output is a .ovp file suitable for use with Omega (the 16-bit
Unicode-aware development from TeX). Using vpl2ovp it is possible to
build substantial Unicode-compliant virtual fonts for use with Omega,
and a .def file for the set of characters I have included in my
earlier "IndUni" OpenType fonts is now included in the distribution.
(IndUni virtual fonts for Omega created with vpl2ovp are available at
http://bombay.indology.info/software/fonts/induni/index.html.) Glyphs
representing characters requiring more than a single codepoint are
stored in the Private Use Area, and a system of ligatures is provided
to allow them to be accessed. This system also permits
single-codepoint accented characters to be accessed through their
"decomposed" component parts. Thus if the characters a-macron (single
codepoint: U+0101) and a-macron-acute (two codepoints: U+0101 +
U+0301) are defined, the former will be accessible both as U+0101
(a-macron) and as U+0061 + U+0304 ("a" + macron); the latter will be
accessible both as U+0101 + U+0301 (a-macron + acute) and U+0061 +
U+0304 + U+0301 ("a" + macron + acute). This is a considerable
advantage, given the different possible ways in which Unicode can be,
and is, used.
Changes between release 0.23 and release 0.24
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
The format expected of glyph names has been brought into line with
Adobe's specification, i.e. they may contain upper- and lower-case
letters, numerals, "_" and ".", but must begin with a letter or with
"_". The format expected of PFB head and tail material has been made
less restrictive, to match the realities of perceived usage. A bug in
digraph creation has been fixed. A "dotlessj" character is created for
use with superscript accents. Full Flex hinting is now supported.
B. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
The help information has been improved.
C. Changes to vpl2ovp
~~~~~~~~~~~~~~~~~~~~~
A bug has been fixed that generated "ghost" replicas of some existing
accent characters in the Private Use Area. The handling of digraphs
and underscored digraphs has been brought into better Unicode
compliance. The help information has also been improved.
Changes between release 0.24 and release 0.25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A. Changes to mkt1font
~~~~~~~~~~~~~~~~~~~~~~
Various bugs have been fixed. Rounding of non-integer values to
integers has been improved.
B. Changes to vpl2vpl
~~~~~~~~~~~~~~~~~~~~~
No changes have in fact been made to vpl2vpl or vpl2ovp, but their
version number has been raised to 0.25 to conform with that of
mkt1font.