Sindbad~EG File Manager
Nov 1996: t1lib-0.1-alpha
-------------------------
- first public release of t1lib with all basic functionality
May 1997: t1lib-0.2-beta
-------------------------
- Now uses autoconf to configure the software for the system.
- All functions put into one library.
- ATTENTION: Argument order for the glyph-setting functions changed to be
consistent with the info functions. Programs that already use
t1lib have to be rewritten (sorry....)
- Function for computing the width of a string added (T1_GetStringWidth()).
- Function for computing the BoundingBox of a string added
(T1_GetStringBBox()).
- Function T1_GetMetricsInfo() added. It returns a struct containing width,
bounding box, number of characters and horizontal position of the characters
in character space coordinates (afm-units).
- Function T1_GetBBox() renamed to T1_GetCharBBox() for consistency reasons.
- All exit() calls removed from library and replaced by appropriate error
return codes.
- t1lib now optionally supports a logfile for logging of error- and
warning-messages at runtime. The "verbosity" of this logfile may be chosen
by the user.
- Documentation more complete.
July 1997: t1lib-0.3-beta
-------------------------
- Code for placing character bitmaps in T1_SetString() slightly advanced; the
restrictions concerning slanted fonts are eliminated.
- T1_GetStringBBox()/T1_GetCharBBox() extended. It is now possible to get the
bounding box if the font is slanted. This is implemented by examining the
characters outline at 1000bp.
- Some Bugs in the code managing linked lists of font sizes have been
corrected.
- Bug in T1_CopyFont() has been corrected. This should work now.
- The behavior during configuration file searching has been changed to
be compatible to well known UNIX-conventions.
- As the main new feature in this release t1lib now has direct support
for X11 (optionally). There is a set of functions that act similar
to XDrawText(), i.e. they draw directly into a drawable (pixmap or
window).
- Caching of bitmaps of the X11 rastering functions is also done
in the X-Server for maximum performance (although it is not as
fast as I dreamed of, admittedly).
- X11 rastering functions use the current foreground/background
colors
- The X11 rastering functions implement automatical antialiasing
between foreground and background color
- The X11 rastering functions provide an opaque and a transparent
mode
- The X11 rastering functions can draw into drawable of any depth
(provided the depth is large enough)
- A new target has been added to the makefiles allowing to remove
a t1lib-installation automatically from a system.
December 1997: t1lib-0.4-beta
-----------------------------
- Many memory allocation bugs fixed. t1lib is now "libefence-proved".
- Kerning and Metrics-Lookup rewritten. The corresponding functions are now
based on character indices rather than on character names which makes them
up to 8 x faster than before, depeding on data and context.
- Raph Levien (raph@acm.org) contributed a fast algorithm for subsampling
which improves Antialiasing time significantly.
- Fred L. Drake, Jr. (fdrake@acm.org) contributed a Python-interface
to t1lib. This allows Python programmers to make use of Adobe Type
1 fonts. This package, called t1python, is distributed with t1lib in
an independent subdirectory of the distribution. See README.t1python
for more information on t1python.
- Bitmaps and antialiased bitmaps may now be padded 8, 16 or 32 bits. This
allows (with some restrictions) somewhat faster concatenation of
characterbitmaps to stringbitmaps. The padding-value may be set and queried
at runtime.
- The optional X11-interface, introduced in t1lib-0.3-beta, has been reduced
to a simple wrapper. X11-pixmap caching has been completely dropped since it
has proven to be too inefficient. However, at the level of the function
calls, nothing has changed.
- Configuration of t1lib (with or without X11-interface) may be queried by
applicationprogrammers at compiletime or by applications at runtime.
- Two functions for informations on fonts have been added:
1) T1_GetFontBBox(): Return a fonts' bounding box.
2) T1_GetAllCharNames(): Return a list of all character defined in a Type 1
font. This might be of interest if somebody wants
to set up new encodings.
- Function T1_CloseLib() added. This function allows to completely free the
data-structures of t1lib. T1_CloseLib() should be called in future when an
application using t1lib exits.
- Many other things not worth to be metioned ...
March 1998: t1lib-0.5-beta
--------------------------
- Changed the license to the GNU General Public Library License (LGPL)
- Definition of INFINITY removed from
lib/type1/[regions.c|regions.h|t1imager.h]. Collided with a
definition in math.h on OS/2.
- Implemented proper handling of environment variables CFLAGS, LDFLAGS
and CC during build process.
- Added target 'without_doc' for people who have a very rudimentary or
no LaTeX-System at all
- Fixed some bugs that appeared when font files from database were not
found
- Clipmask Bug in the X11-rastering functions fixed
- Bugs in VM-reallocation (T1_LoadFont()) repeatedly fixed. It is now
ANSI-C compliant.
- Alignment of VM changed. This was needed on some systems.
- Set of functions for accessing information from FontInfo dictionary
is now complete. This introduces the new functions
T1_GetFullName(), T1_GetFamilyName(), T1_GetWeight(),
T1_GetItalicAngle(), T1_GetIsFixedPitch(), T1_GetVersion(),
T1_GetNotice().
- ATTENTION: In the above context, T1_GetPostScriptName() has been
renamed to T1_GetFontName() for consistency reasons, sorry.
- ATTENTION: All types "unsigned char (*)" have been changed to
char (*) in the API functions. This was necessary while adapting
t1lib to ANSI-standard to make it portable. Sorry for this
confusion.
- New function T1_AddFont(): Fonts can now be added to the font
database at runtime. This means especially, one can ignore a
FontDataBase file thus can start t1lib-programs on single fontfiles
without doing a complete setup before.
- There is now also the possibility to ignore the currently active
configuration file, thereby setting all search paths to the current
working directory and having an empty font data base. This is meant
for small applications that work on single files.
- t1lib is now able to work with fonts without corresponding
afm-files. AFM-information can be produced from pfa- and
pfb-files. This, of course, refers only to character-metrics
information.
- A function T1_WriteAFMFallbackFile() is provided which allows to
dump metrics information to a valid AFM-file.
- New subdirectory type1afm created which contains type1afm, a program
to extract afm files from Type 1 font files.
- Renamed definitions MAX, MIN, ABS, TRUE and FALSE because they
collided with system header files on some systems.
- Corrected antialiasing functions. The metrics should now be as
correct as possible and black pixel at the right edge of the bitmaps
should not appear any more.
- Handling of unencoded characters in strings (such as adieresis in
AdobeStandardEncoding) is now consistent in rotated and non-rotated
glyphs.
- A few functions have been added to get information on the file search
environment and to manipulate the search paths from within applications.
- Mixed endian setups (i.e., client and X-server on different machines
with different endianess) should now be handled correctly.
- In summary t1lib should now be much more portable than before.
- Update to t1python-0.3
March 1998: t1lib-0.6-beta
--------------------------
- Cleaned up the sources in type1-directory
- Functions Xalloc() and Xfree removed. x11dummy.c from list of source files
removed.
- A few bugs fixed
- Character positioning rewritten. It does now handle strings
correctly in which the leftmost pixels does not belong to the first
character and the rightmost pixels do not belong to the last character.
- t1lib now substitutes .notdef for defined character names that have
no corresponding charstring. This is a workaround for some fonts in
the ghostscript distribution (e.g., s050000l.pfb)
- Separated the X11-wrapper from the rest of t1-stuff. t1lib now
consists of two libraries and two include files.
- Cleaned up configuration and compilation process.
May 1998: t1lib-0.7-beta
------------------------
- Athena libraries are explicitly located for non-standard system
- glyph-structure changed. glyph.metrics.characterWidth is replaced
glyph.metrics.advanceX and an entry glyph.metrics.advanceY is added.
- Interpretation of the sign of glyph.metrics.descent has changed.
- String-rastering functions now support Underlining, Overlining and
Overstriking.
- Functions for overriding default line-parameters implemented.
- Whitespace at beginning and ending of glyphs is now correctly recorded into
leftSideBearing and RightSideBearing.
- Function T1_ConcatGlyphs() added to API. It concatenates two glyphs of
identical depth with an optional displacement inserted.
- xglyph output window has changed for X-rastering functions. It is now of
constant size with the logical origin in the center. Too large glyphs are
simply clipped.
- t1lib can be compiled and run on VMS thanks to John Hasstedt
(John.Hasstedt@sunysb.edu). A configure.com script for building on VMS is
included in the toplevel directory.
- T1_GetMetricsInfo() and T1_GetStringBBox() fixed. Now results are correct
also if the leftmost pixel in a glyph doesn't belong to the first char and if
the rightmost pixel does not belong to the last character.
- Leading and trailing white space in glyphs should now be recorded
consistently and correctly for all rastering functions.
- xglyph can now display a character map of a font.
- Global variable T1_errno introduced. It basically works the same way
as the errno in libc. This allows applications a unified
error-handling.
- Update to t1python-0.7.
November 1998: t1lib-0.8-beta
-----------------------------
- T1_GetAllCharNames() returned invalid list if the Charstrings dictionary was
larger than the actual number of charstrings defined (which is perfectly
valid, even if it does not make much sense) --> fixed.
- 4 x Antialiasing implemented. This can improve the quality at small sizes
once more, at the cost of some computational and memory requirement. It is
possible to work with 2 x and 4 x concurrently.
- Function T1_GetLibIdent() added to API.
- Function T1_SetRasterFlags() added to API. It allows to selectively enable
or disable certain rasterizer features like, e.g., hinting.
- xglyph extended to support 4 x antialiasing.
- xglyph now recognizes a few commandline options, primarily intended for
debugging purposes.
- xglyph is now somewhat more intelligent (and faster) if slanting,
extending or reencoding is applied to a font.
- New function T1_SetDefaultEncoding(). It allows to set a default
encoding vector which then is applied to all subsequently loaded fonts
that have StandardEncoding.
- Bug in Type 1 rasterizer corrected which prevented fonts with non-standard
lenIV values from being correctly decrypted (Charstring decryption).
- Internal ISOLatin1Encoding removed from rasterizer since there's no reason
for mainting this encoding scheme internally
- tlib now has notion of "Encoding Schemes". The format of encoding files is
extended correspondingly and is backward compatible.
- Memory leaks eliminated, thanks to David Huggins-Daines.
- Some slight performance improvements.
- Kerning performance improved. Moreover, kerning pairs need no longer be
alphabetically sorted.
- AFM-parser modified to work with DOS-style AFM-files.
- Some bugs in scan-code of Type 1 rasterizer corrected. Scanner is now aware
of pfb-blocks and can scan files with multiple binary data segments.
- t1lib now uses GNU-libtool, thanks to Hirotsugo Kakugawa
(h.kakugawa@computer.org)
- An encoding file for IsoLatin2 charset is included thanks to Jiri
Pavlovsky (jirap@bajt.cz).
- The angle-argument of the rastering functions has been replaced by a more
general transformation specification. This is an incompatible change to
previous versions, but I think it should be worth it.
- t1lib can now handle fontfile names with arbitrary extensions and
even without extension.
- t1lib compiles and runs under Win32 using the cygwin32 toolkit.
- Maximum number of stem-hints enlarged (-> 256) because 128 were not enough
for complicated fonts.
May 1999: t1lib-0.9
-------------------
- Sub-Pixel positioning for Antialiasing functions enthanced (It was in fact
not correct before.
- Multiple Master fonts are rejected instead of SIGSEGV (nearly as
professional as supporting them ;)
- An additional set of functions allows access, filling and manipulation of
outlines.
- Functionality for non-antialiased "bytemaps".
- "Smart Antialiasing", allows to automatically let t1lib decide what AA-level
to use. The switchlimits are adjustable.
- An AFM-filename may explicitly be specified. This suppresses t1libĀ“s search
for these files. This allows interfacing with other path search systems like
kpathsea. This was suggested by Nicolai Langfeldt (janl@math.uio.no).
- Some problems with aspect ratios different from 1 and transformed glyphs
fixed.
- Support for Right-To-Left typesetting. This might be experimental because I
don't know the rules for this exactly.
- In the context of Right-To-Left typesetting T1_ConcatGlyphs() expects one
additional argument "mode".
ATTENTION: This is an incompatible change with respect to V. 0.8.
- abort()-calls in type1-sources are caught by longjmp(). t1lib does not
any longer exit a program. Rather, errors may be handled by the user.
- If a rastering operation did not produce any black pixels, the rastering
fuctions do not return a NULL-glyph any longer. Rather, a glyph with the
correct metrics and NULL-bitmap pointer is returned. This seems to come
closer to accepted standards.
- The t1python-package is currently not distributed with t1lib because the
interface is not up to date.
- A lot of bugs fixed (and a lot of others introduced, of course :)
June 1999: t1lib-0.9.1
---------------------
- Several Bug-fixes, some functions that have been reported to be missing by
users, but no general new features.
- New functions T1_GetExtend(), T1_GetSlant() and T1_GetTransform() which give
access to currently active values of fontlevel transformations
- New function T1_GetNoKernPairs() which gives access to the number of defined
kerningpairs.
- New functions to query the grayvalue settings (T1_AAGetGrayValues(),
T1_AAHGetGrayValues() and T1_AANGetGrayValues())
- Arbitrary linear transformations on fontlevel including caching using
T1_TransformFont() (on suggestion and patches by Derek B. Noonburg,
(derekn@foolabs.com)
- Introduction of the initialization flag T1_NO_AFM which suppresses use of
AFM data. This limits the functionality of t1lib considerably but
applications that do not need those advanced functions can gain some
performance boost while loading fonts because AFM files are not parsed and
the mapping tables are not setup (also by Derek B. Noonburg)
- xglyph clips output window for the function fonttable() to the physical
screen size. This is to prevent from freezing or exceeding resources if the
fonttable button had accidentally been pressed while a large size was active.
- The utility function T1_DumpPixmap() removed from API. New function
T1_XImageFromGlyph() added to X11 interface. This function allows, together
with the Xpm-library function XpmWriteFileFromImage(), to write xpm-files
from glyphs of arbitrary depths, colors, etc ...
- Functions T1_CopyOutline() and T1_FreeOutline() added to the outline interface.
- Fixed alignment problem on 64bit architecture.
September 1999: t1lib-0.9.2:
----------------------------
- Support for EMX-environments under MSDOS. This concerns the file locating
routines.
- t1lib now allows for charstring code 15 and escape code 15 by ignoring
these. They may appear in some old Adobe fonts.
- Makefiles are more independent of GNU make.
- Finally, undefined/missing characters are handled consistent in all rastering
functions by substituting .notdef.
- Several bug-fixes
November 1999: t1lib-1.0:
-------------------------
- Bug-fixes.
- There happen to exist different assumptions about what exactly ISOLatin1Encoding
is. Especially the name for char 45 (dec) is not uniquely specified in
ISO 8859-1. Thus t1lib provides two encoding files ISOLatin1Encoding one
which (PSLatin1.enc) is compatible with PostScript Level 2 and above.
March 2000: t1lib-1.0.1:
-------------------------
- A few bug Fixes.
- lenIV=-1 is now handled. According to an undocumented Adobe convention
lenIV=-1 indicates suppressing of charstring encryption.
- Patches to compile t1lib und MS Visual C++ 6.0. In case something goes
wrong, please contact Nakano Hideo (hideo@mb.infoeddy.ne.jp).
February 2001: t1lib-1.1.0:
---------------------------
- Bug Fixes.
- Functions T1_GetFontFilePath() and T1_GetAfmFilePath() which return the
complete path of the files used by t1lib.
- Fixed parser code which previously failed on ASCII-encrypted files in
which the hex-lines were separated by <LF><CR> instead of by <LF> (Yes,
there such DOSian files out there ...).
- Multiple inclusion protection for t1lib.h
- T1_QueryLigs() fixed. It did not work correct if successors and/or
ligatures were not in the current encoding.
- New patches for VMS by Martin P. J. Zinser (zinser@decus.de).
- Patch by Sergey Babkin (babkin@bellatlantic.net) to correct the rasterizer
to respect StdStemWidths.
- General support for font subsetting.
- Dokumentation also provided as pdf for those people who do not have LaTeX
installed. This is due to suggestions and patches by Nguyen-Dai Quy
(NDQ@iris.ltas.ulg.ac.be).
April 2001: t1lib-1.1.1:
------------------------
- Update to libtool-1.3.5.
- T1_GetFontBBox() also accepts specification consisting of floating point
numbers (as suggested by Derek B. Noonburg (derekn@foolabs.com)).
- Within the near future the t1lib-webpage will be no longer available
because I will change my employer.
- Similarly, the sources will be distributed from sunsite only from then on.
- The Author's eMail-address will also become invalid in the near future. The
new and hopefully permanent eMail.address will be "Rainer.Menzner@web.de".
July 2001: t1lib-1.2:
----------------------
- Fixed bug in subsetting code.
- Fixed bug in AFM-parser code.
- Fixed kerning mapping code. Kerning did not work correctly for characters
that appeared multiple times in an encoding vector.
- In the same context a new function, T1_GetEncodingIndices() has been added
to the API. It returns an array of indices (by contrast,
T1_GetEncodingIndex() returns only the lowest index found).
- Support for composite characters.
- Additional support for dvips encoding files (thanks to suggestion and
contribution by Nicolai Langfeldt (janl@linpro.no).
- Documentation is installed in PostScript and PDF format, but no longer in
DVI format.
October 2001: t1lib-1.3:
------------------------
- *Really* an update to libtool-1.3.5
- Global Font Metrics Information is loaded from AFM files in order to be able
to read the typographic ascender. Line ruling did not behave as
documented. However, problems could still exist because the typographic
ascender specification is optional in AFMs.
- Reorganized search path handling and, in particular, the respective
documentation is more detailed.
- The configuration file now allows multiple lines of one type of search path
specification and it is also possible to quote path specification in order
to specify paths that contains special characters like spaces, colons, etc.
- Multiple font databases are supported.
- T1_PrintLog() extended to accept a variable argument list.
- The environment variable T1LIB_LOGMODE is evaluated to give the user the
chance to specify a loglevel and hence to detect t1lib-problems even if the
application programmer did not enable the log file features.
- Further bug fixes
November 2001: t1lib-1.3.1:
---------------------------
- Color problem in t1x11-module fixed.
- Fixes in AFM parser. Among others, Version had been read as name, instead of
as string. This led to a failure to scan global font info for some standard AFMs.
- Fixes in of OpenVMS special code
- Further Fixes
January 2003: t1lib-5.0.0:
--------------------------
- Forced PostScript target in the doc directory to file.
- Subsetting code extended in order to ensure that components of
composite characters are also part of the subset.
- Hinting meachanism reworked in order to get rid of some
rasterizing artifacts.
- Experimental support for stroked fonts (PaintType=1)
- Experimental support for stroking standard ATM fonts with PaintType=0.
- For historical reasons, there happened to exist a few documented API
functions that did not adhere to the T1_... naming convention. After
considering the pro's and con's, I have decided to cleanup the interface,
thus making this version incompatible to the previous version. Especially
in the type1 subdirectory there are still a lot of global symbols, but at
least these are not part of the documented API. The following functions
are affected:
CheckForInit() --> T1_CheckForInit()
CheckForFontID() --> T1_CheckForFontID()
T1_Get_no_fonts() --> T1_GetNoFonts()
Furthermore, I have removed and made static a few functions which
accidentally had found their way into t1lib.h, but which had not been part
of the documented API.
I'm sorry if this causes inconveniences ...
- The new version, 5.0.0, follows as consequence from the issues discussed
above. It is defined by the libtool quantities CURRENT, REVISION and AGE.
- Functions for drawing rectangles.
- Bug Fixes
- Please also have a look at the topic "Future" in README.t1lib-5.0.0.
February 2004: t1lib-5.0.1:
---------------------------
- Support for Flex was not adapted to the changes from 5.0.0. This led to
rasterization errors in fonts that use the Flex functionality --> fixed.
- Bug Fixes
April 2004: t1lib-5.0.2:
------------------------
- Changes not updated for this version
Mai 2005: t1lib-5.1.0:
----------------------
- Check against MultipleMasterFonts somewhat more tolerant, so that
Type 1 Fonts automatically created from Multiple Master Fonts (e.g.
using Mmpfb) should now be acceptable.
- The configure-machinery had been somewhat out of date and has been
updated. The distributed configure script has been generated by
AutoConf 2.59 and the redistributed libtool parts are taken from
GNU libtool 1.5.10.
- Top-Level TeX-file in the doc subdirectory adapted to recent TeX
systems' requirements.
- Added IsoLatin9.enc to distribution.
- Subsetting extended so that it works for SEAC-constructed composites
even if no AFM composite character information is available
- Somewhat more intelligent defaults for subsetting when composite
characters are included in the subset.
- Reallocation had been broken by relocation of internal StandardEncoding
vector. This problem turned out on systems where realloc() actually
returned a different pointer.
- Fix for outline code on 64bit systems. This involves a redefinition
of the T1_PATHPOINT struct. This should be uncritical because for 32bit
systems there is no difference, whereas on 64bit systems, this has never
worked correctly before.
- DESTDIR support in Makefile.in by Volker Zell
- Support for XLFD font database format (in which the fonts' names appear
in the first place on a line).
- Further Bug Fixes
December 2006: t1lib-5.1.1:
---------------------------
- DESTDIR support was missing and has been addded in install-target for type1afm.
- A bug fix in Anti-Aliasing subsampling code, which could make t1lib crash
under certain conditions.
- Small number of further fixes, in particular with respect to the build
mechanism.
December 2007: t1lib-5.1.2:
---------------------------
- Small number of fixes reported by users. The fixes pertain to a
vulnerability issue, memory access issues.
- More decent handling if Encoding and / or FontBBox specification are missing
(which is invalid with respect to the specification, but recoverablel).
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists