852 lines
26 KiB
Plaintext
852 lines
26 KiB
Plaintext
Changes between FreeType version 1.3 and version 1.3.1
|
|
======================================================
|
|
|
|
Bug fixes.
|
|
|
|
Changes between FreeType version 1.2 and version 1.3
|
|
====================================================
|
|
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
Improved installation instructions.
|
|
|
|
|
|
Complete revision of almost all documentation files.
|
|
|
|
**
|
|
** Added the file apirefx.txt to document all extensions to the
|
|
** FreeType library. Consequently, errstr.txt has been removed.
|
|
**
|
|
|
|
Added the file optimize.txt, explaining how to improve FreeType
|
|
on a given architecture.
|
|
|
|
**
|
|
** Documentation about possible patent restrictions added.
|
|
**
|
|
|
|
Added howto/mac.txt (stating basically that the FreeType team
|
|
can't support the Macintosh platform because of lack of
|
|
knowledge).
|
|
|
|
|
|
Added howto/msdos.txt, documenting compilation for various 16bit
|
|
and 32bit compilers.
|
|
|
|
|
|
API functions
|
|
-------------
|
|
|
|
TT_Load_Kerning_Table() now returns TT_Err_Invalid_Argument
|
|
instead of TT_Err_Bad_Argument (which is used for an internal
|
|
error only) for an invalid argument. The same holds for
|
|
TT_Get_Face_Widths() and TT_Get_Glyph_Big_Metrics().
|
|
|
|
|
|
If the glyf table is missing, the new error code
|
|
TT_Err_Glyf_Table_Missing is returned instead of
|
|
TT_Err_Table_Missing. This affects TT_Get_Face_Widths(),
|
|
TT_Load_Glyph(), and TT_Open_Face().
|
|
|
|
**
|
|
** New function TT_FreeType_Version() to get the major and minor
|
|
** version dynamically.
|
|
**
|
|
|
|
TT_Load_Glyph() has now two additional flags. TTLOAD_PEDANTIC
|
|
will force pedantic handling of the glyph instructions, and
|
|
TTLOAD_IGNORE_GLOBAL_ADVANCE_WIDTH is needed for some fonts
|
|
which have correct advance width values for the glyphs but an
|
|
incorrect global advance width value.
|
|
|
|
|
|
TT_Get_Glyph_Big_Metrics() now returns correct vertical bearing
|
|
values (both linear and pixel values).
|
|
|
|
|
|
New error code TT_Err_Glyf_Table_Missing (0x89) used to indicate
|
|
a missing `glyf' table.
|
|
|
|
|
|
The following macros have been shortened to stay within the
|
|
limit of 32 characters (the longer macro names are still
|
|
available if HAVE_LIMITS_ON_IDENTS is not defined).
|
|
|
|
TT_UCR_ARABIC_PRESENTATION_FORMS_A ->
|
|
TT_UCR_ARABIC_PRESENTATIONS_A
|
|
TT_UCR_ARABIC_PRESENTATION_FORMS_B ->
|
|
TT_UCR_ARABIC_PRESENTATIONS_B
|
|
|
|
TT_UCR_COMBINING_DIACRITICAL_MARKS ->
|
|
TT_UCR_COMBINING_DIACRITICS
|
|
TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB ->
|
|
TT_UCR_COMBINING_DIACRITICS_SYMB
|
|
|
|
|
|
freetype.h:
|
|
|
|
TT_Bool is now typedef'ed as `typedef int'.
|
|
|
|
New typedefs: TT_Int and TT_UInt.
|
|
|
|
Declarations of TT_Matrix_Multiply() and TT_Matrix_Invert()
|
|
have been removed since these functions were never
|
|
implemented.
|
|
|
|
|
|
Architectures
|
|
-------------
|
|
|
|
Added `ansi' directory to the supported architectures -- any
|
|
ANSI C compiler should compile FreeType with these files.
|
|
|
|
|
|
Added `debugger' directory to the architectures. Use this to
|
|
build a special version of FreeType for bytecode debugging
|
|
(tested with OS/2 and Unix).
|
|
|
|
|
|
Added more files to the `mac' architecture directory to make
|
|
basic support complete.
|
|
|
|
|
|
Support for VMS added (to compile the library only).
|
|
Contributed by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
|
|
|
|
|
|
Added `win16' architecture directory for older Windows versions.
|
|
A graphics driver (gw_win16.c) for the example programs is
|
|
available also.
|
|
|
|
**
|
|
** Antoine Leca contributed support for many MS-DOS and Windows
|
|
** compilers (including library fixes to make it 16bit compliant):
|
|
**
|
|
Borland C++ for MS-DOS (tested with v. 3.1, 4.02, 5.0),
|
|
Microsoft C for MS-DOS,
|
|
Turbo C (versions 1.5 and 2.0 -- version 1.0 is too old),
|
|
Borland C++ 4.0 and 5.0 for Windows (both 16bit and 32bit
|
|
versions),
|
|
gcc under Win32 (Cygwin32 or MinGW32),
|
|
Microsoft Visual C++ 2.x, 4.x, 5.0, and 6.0 for Windows
|
|
|
|
|
|
Support for the gettext package with DJGPP compiler has been
|
|
added.
|
|
|
|
|
|
Since many older compilers on both MS-DOS and Windows platforms
|
|
have problems to build dependency files automatically, scripts
|
|
for gcc under Unix have been added to do this. Similarly, a
|
|
script to produce a DLL definition file is now included in the
|
|
distribution.
|
|
|
|
|
|
Moved old win32 support to contrib/win32, replacing all CR/LF
|
|
with LF, and using only lowercase file names for consistency.
|
|
Additionally, some missing files in the FreeType 1.2
|
|
distribution have been added. Antoine Leca has written a new,
|
|
light-weight graphics driver (gw_win32.c) which fits better into
|
|
the current scheme.
|
|
|
|
|
|
Small additions have been made to the Amiga graphics driver.
|
|
|
|
|
|
The use of the ARM macro (intended for this architecture) has
|
|
been completely removed due to lack of support.
|
|
|
|
|
|
Checks for endianness have been removed completely since
|
|
FreeType isn't dependent on it.
|
|
|
|
|
|
Global compilation macros
|
|
-------------------------
|
|
|
|
The TT_HUGE_PTR macro has been added to support fonts with more
|
|
than 16000 characters or so with 16bit MS-DOS compilers.
|
|
Consequently, the files hugefile.c and hugemem.c have been added
|
|
which provide special versions for these compilers.
|
|
|
|
|
|
HAVE_LIMITS_ON_IDENTS has been introduced to overcome
|
|
restrictions with old compilers which can't digest identifiers
|
|
longer than 32 characters.
|
|
|
|
**
|
|
** Added option TT_CONFIG_OPTION_NO_INTERPRETER to desactivate the
|
|
** bytecode interpreter completely. This option is off by default.
|
|
**
|
|
|
|
Added options TT_CONFIG_OPTION_STATIC_RASTER and
|
|
TT_CONFIG_OPTION_STATIC_INTERPRETER to build static versions of
|
|
the respective components. Off by default. (It was formerly
|
|
called TT_STATIC_RASTER.)
|
|
|
|
Better debugging support (see ttconfig.h for details):
|
|
DEBUG_LEVEL_TRACE, DEBUG_LEVEL_ERROR, DEBUG_INTERPRETER,
|
|
DEBUG_MEMORY, DEBUG_FILE.
|
|
|
|
Added TT_MAX_EXTENSIONS to define the maximal number of
|
|
extensions (currently set to 8 -- this macro was previously in
|
|
ttextend.c).
|
|
|
|
|
|
Extensions
|
|
----------
|
|
**
|
|
** Full support for TrueType Open resp. OpenType GSUB tables has
|
|
** been implemented. It uses a GDEF table if available; otherwise,
|
|
** a method to construct an artificial GDEF table has been added
|
|
** (note that GDEF parts not related to GSUB are loaded but not
|
|
** further handled). An example how to use it can be found in the
|
|
** new test program ftstrtto.
|
|
**
|
|
|
|
Rudimentary GPOS support -- currently, you can load the GPOS
|
|
subtables but nothing more.
|
|
|
|
**
|
|
** Documentation for all extensions can be found in the file
|
|
** apirefx.txt.
|
|
**
|
|
|
|
Fixed a bug in TT_Load_PS_Names() which returned a local, thus
|
|
invalid pointer.
|
|
|
|
**
|
|
** Support for embedded bitmaps has been added (thanks to
|
|
** YAMANO'UCHI Hidetoshi <mer@interlink.or.jp> who has contributed
|
|
** a lot of the code). It can handle `bloc', `bdat', `EBLC', and
|
|
** `EBDT' tables. [TrueType embedded bitmaps are also called
|
|
** `sbits' (for `scaler bitmaps').]
|
|
**
|
|
|
|
Test programs
|
|
-------------
|
|
**
|
|
** A new test program called ftstrtto has been added to test
|
|
** TrueType Open features. Almost all available FreeType
|
|
** extensions are used in this program -- it displays a UTF 8
|
|
** encoded string on screen, allowing to toggle kerning, embedded
|
|
** bitmaps, GSUB support, and hinting. Additionally, it has a
|
|
** special module to handle the Arabic script properly (in
|
|
** arabic.c), i.e., it treats initial, medial, final, and isolated
|
|
** glyphs correctly.
|
|
**
|
|
|
|
The new module `blitter.c' provides the blitting function
|
|
Blit_Bitmap() for bitmaps of various depth.
|
|
|
|
|
|
The debugging program `fdebug' has been rewritten to provide a
|
|
better user interface.
|
|
|
|
|
|
ftdump has been extended to show information about embedded
|
|
bitmaps and GSUB data. It will now also show the PostScript
|
|
name of the font.
|
|
|
|
|
|
The new test program ftmetric can dump metrics and glyphs -- it
|
|
uses the gettext package for i18n support.
|
|
|
|
|
|
Another new test program is ftsbit to dump embedded bitmaps
|
|
contained in a font.
|
|
|
|
|
|
A small bug has been fixed in ftstring to compute the right
|
|
bounding box of the string.
|
|
|
|
|
|
ftview has been extended to display embedded bitmaps also
|
|
(switch `-B').
|
|
|
|
|
|
The maximal point size of glyphs in ftview has been increased to
|
|
5000pt -- this has shown some clipping bugs in the engine which
|
|
has been fixed meanwhile. As a demonstration, it also activates
|
|
tracing of the raster and gload component if DEBUG_LEVEL_TRACE
|
|
(see above) is defined.
|
|
|
|
|
|
Miscellaneous
|
|
-------------
|
|
|
|
The library has been updated to use autoconf 2.13 and libtool
|
|
1.3.3 throughout.
|
|
|
|
**
|
|
** FreeType will now install its header files in
|
|
** <prefix>/freetype/... since the number of files has grown again.
|
|
**
|
|
|
|
Added a lot of EXPORT_FUNC/EXPORT_DEF macros to functions for
|
|
correct exporting in DLLs.
|
|
|
|
**
|
|
** FreeType can now successfully load Mac fonts which don't have an
|
|
** `OS/2' table.
|
|
**
|
|
|
|
Fixed a bug in handling composite glyphs where the composite
|
|
elements use attached points.
|
|
|
|
|
|
Better debugging support for instructions.
|
|
|
|
|
|
Various workarounds have been implemented to support slightly
|
|
broken fonts (or rather, fonts not following exactly the
|
|
TrueType specifications).
|
|
|
|
|
|
Contributed programs
|
|
--------------------
|
|
|
|
ttf2bdf:
|
|
**
|
|
** Swapped all the columns in the mapping files.
|
|
**
|
|
|
|
Changed the mapping table loader to index on the second column
|
|
instead of the first.
|
|
|
|
|
|
Changed the includes to deal with compilation on Windows.
|
|
|
|
|
|
Added some new mapping tables.
|
|
|
|
|
|
Fixed an incorrect parameter for Traditional C compilers.
|
|
|
|
|
|
Added generation of the _XFREE86_GLYPH_RANGES properties.
|
|
|
|
|
|
Change all CRLF's, CR's, or LF's in copyright strings to
|
|
double spaces.
|
|
|
|
|
|
Changed it so gcc 2.8.1 likes the return type of main() again.
|
|
|
|
|
|
Changed Makefile.in a bit to make installation more
|
|
consistent.
|
|
|
|
|
|
Changed the lower limit for the vertical and horizontal
|
|
resolutions to be 10dpi instead of 50dpi.
|
|
|
|
|
|
ttf2pfb:
|
|
|
|
Has now rudimentary support for mapping tables (switch `-m')
|
|
and better PostScript name support for ordinary Type 1 fonts
|
|
-- nevertheless, it is far from finished, and there are some
|
|
plans to merge it with ttf2pt1.
|
|
|
|
configure script added.
|
|
|
|
Option `-k' added to keep output file in case of error.
|
|
|
|
`-v' is now really verbose.
|
|
|
|
ttf2pk:
|
|
**
|
|
** Support for MiKTeX's file searching mechanism added (ttf2pk
|
|
** and ttf2tfm are now part of the MiKTeX).
|
|
**
|
|
**
|
|
** Support for rotated glyphs added (only for subfonts; switches
|
|
** `-x' and `-y' to activate rotation resp. controlling the y
|
|
** offset). If a GSUB table with the `vert' feature is available
|
|
** in the font, vertical glyph presentation forms are used.
|
|
**
|
|
|
|
Added warning message to the configure script in case the
|
|
kpathsea library isn't used.
|
|
|
|
|
|
Fixed an omission in Bg5.sfd.
|
|
|
|
**
|
|
** Added UBg5plus.sfd for mapping Unicode to Bg5+ encoding.
|
|
** Similar SFD files now available: UBg5.sfd, UGB.sfd, UGBK.sfd,
|
|
** UJIS.sfd, UKS.sfd.
|
|
**
|
|
|
|
Added documentation for dvidrv.btm.
|
|
|
|
|
|
Will now compile with kpathsea version 3.3 or newer also.
|
|
|
|
|
|
Subfont ligature support added as needed in the HLaTeX package
|
|
for Korean (switch `-l').
|
|
|
|
**
|
|
** Since ttf2pk support has been added to teTeX version 1.0 and
|
|
** newer, no patch are necessary.
|
|
**
|
|
|
|
Fixed a string initialization bug in buildtfm() (file
|
|
tfmaux.c).
|
|
|
|
|
|
Added more documentation about file searching and a full
|
|
example how to use ttf2tfm.
|
|
|
|
|
|
Fixed a small bug in ttf2tfm.c which printed `(null)' instead
|
|
of nothing for the ttfonts.map entry if the font name prefix
|
|
string was empty.
|
|
|
|
|
|
ttf2tfm will now use the first type 0 kerning table only
|
|
(instead of the first kerning table only).
|
|
|
|
|
|
Both ttf2pk and ttf2tfm will now apply stretching and slanting
|
|
directly to the outline. This usually yields smaller bounding
|
|
boxes.
|
|
|
|
|
|
ttf2tfm will now output a comment string to the VPL file to
|
|
illustrate the meaning of the `HEADER' lines.
|
|
|
|
|
|
ttfbanner:
|
|
|
|
Added Makefile for emx+gcc compiler.
|
|
|
|
|
|
Added autoconf support.
|
|
|
|
|
|
Fixed a lot of compilation warnings.
|
|
|
|
|
|
Pascal source code
|
|
------------------
|
|
|
|
The Pascal source code has been seriously updated since 1.2.
|
|
Here are the most important changes.
|
|
|
|
**
|
|
** A. Support for charmaps and the name table
|
|
**
|
|
**
|
|
** The Charmap functions were not correctly implemented before
|
|
** 1.3. They are now available in the Pascal API.
|
|
**
|
|
**
|
|
** Similarly, the `name' table was not loaded, and the
|
|
** TT_Get_Name function wasn't implemented before 1.3. It is now
|
|
** done.
|
|
**
|
|
**
|
|
** The Pascal engine is now feature-complete, except that it
|
|
** provides no extensions like the C source code.
|
|
**
|
|
|
|
B. Improvements in the glyph loader and the interpreter
|
|
|
|
|
|
Several changes were made in order to be able to load more
|
|
broken fonts, as well as old Apple fonts which happened to use
|
|
some very rarely-used aspects of the specification.
|
|
|
|
|
|
Note that the Pascal bytecode interpreter, contrary to the C
|
|
version, is not able to silently accept broken glyphs yet, or
|
|
even use the flag TTLOAD_PEDANTIC. Implementing this in
|
|
Pascal would require some serious work (unlike to C, where
|
|
this feature was introduced easily with the use of a few
|
|
macros to minimize source changes). So TT_Load_Glyph might
|
|
return an error with the Pascal engine while the C one accept
|
|
the same request successfully.
|
|
|
|
|
|
C. Ports to Delphi and Free Pascal
|
|
|
|
This release has been compiled on the following compilers:
|
|
|
|
- Free Pascal 0.9 (Dos,Linux,Win32,OS/2)
|
|
- Virtual Pascal 1.1 and 2.0 (Win32 and OS/2)
|
|
- Turbo Pascal 6.0 and Borland Pascal 7.0 (Dos)
|
|
- Delphi 1, 2, and 3. It should work with D4 and D5 also.
|
|
(Windows)
|
|
|
|
Note that most of the test programs will not compile on
|
|
anything except MS-DOS or OS/2. The debugger also needs the
|
|
Turbo Vision library. The library, however, should compile
|
|
fine with all tools cited above.
|
|
|
|
|
|
|
|
Changes between FreeType 1.1 and 1.2
|
|
====================================
|
|
|
|
Mostly bug fixes and build fixes.
|
|
|
|
|
|
|
|
Changes between FreeType 1.0 and 1.1
|
|
====================================
|
|
|
|
There were various changes since the 1.0 release. Here they are
|
|
summarized:
|
|
|
|
- Added vertical layout support
|
|
|
|
The engine now loads the vertical header and metrics if available
|
|
and makes them visible through the new `vertical' field of the
|
|
face properties (it is set to NULL if no vertical data was found
|
|
in the font file).
|
|
|
|
The glyph loader now loads all metrics (horizontal and vertical),
|
|
but still returns the horizontal ones only with the API
|
|
TT_Get_Glyph_Metrics(). However, TT_Get_Glyph_Bit_Metrics() has
|
|
been added to extract them from a glyph container.
|
|
|
|
|
|
- Serialization of coordinates arrays in TT_Outline()
|
|
|
|
As announced in the previous API reference, the structure of
|
|
TT_Outline changed slightly, as well as the naming of its fields.
|
|
The points are now stored in a single array of TT_Vector, instead
|
|
of two parallel arrays (one for the Xs, the other for the Ys).
|
|
|
|
|
|
- New API function TT_Get_Face_Metrics()
|
|
|
|
Useful to access unscaled metrics like left side bearings, advance
|
|
widths, top side bearings, and advance height, for a given range
|
|
of glyphs.
|
|
|
|
|
|
- New extension: ftxcmap.c
|
|
|
|
Used by some applications to enumerate and parse the charmap
|
|
tables in an easier way.
|
|
|
|
|
|
- New extension: ftxpost.c
|
|
|
|
With this extension you can access the PostScript glyph names
|
|
given in the `post' table.
|
|
|
|
|
|
- New extension: ftxwidth.c
|
|
|
|
This extension is used to parse the `glyf' table to extract the
|
|
bounding boxes of a given range of glyphs. This is much faster
|
|
than loading individual glyphs.
|
|
|
|
|
|
- The FreeType engine is now THREAD-SAFE and REENTRANT
|
|
|
|
However, the implementation of ttmutex must be refined for your
|
|
system -- the default one is a dummy and doesn't do anything!
|
|
Beware! THIS IS STILL IN BETA.
|
|
|
|
The thread-safe and reentrant builds now compile and seem to run
|
|
well when used with a single thread. Some efforts have been spent
|
|
to check the coherency of the lock contentions within the engine,
|
|
but we haven't tested multi-threading heavily.
|
|
|
|
|
|
- Large internal re-organization
|
|
|
|
Too technical to explain shortly, but results in a much better
|
|
memory footprint and smaller code, especially when opening
|
|
multiple faces.
|
|
|
|
|
|
- Fixes/enhancements to the interpreter
|
|
|
|
The infamous Monotype.com bug (a new free font released by
|
|
Microsoft Typography a few days after the FreeType 1.0 release!)
|
|
is fixed, of course, as well as few other little and unpleasant
|
|
artifacts...
|
|
|
|
The interpreter was also seriously re-organized to allow the use
|
|
of a very large `switch' statement, instead of a jump table, which
|
|
results in smaller and faster code on some systems (depending of
|
|
the compiler too). Users of the library can experiment with the
|
|
TT_CONFIG_OPTION_INTERPRETER_SWITCH configuration macro to test
|
|
this.
|
|
|
|
|
|
- Single object compilation mode
|
|
|
|
The core engine can now be compiled into a single object file.
|
|
This allows optimizing compilers to do more global optimizations,
|
|
and get rid of many of the `intermediate' internal symbols used to
|
|
link internal engine components together.
|
|
|
|
The engine now takes only 48kByte of stripped Intel object code!
|
|
|
|
|
|
- DLL compilation mode
|
|
|
|
In order to allow the compilation of the library as a DLL, the
|
|
keyword EXPORT has been added as a prefix to all high-level API
|
|
functions found in `freetype.h'. Define it to the value you need
|
|
before `#include "freetype.h"' when building the DLL (if undefined
|
|
it will default to nothing within this header file).
|
|
|
|
(Apparently, this is only useful on Win32, maybe on OS/2.)
|
|
|
|
|
|
- Renamed configuration macros
|
|
|
|
These were renamed to forms of TT_CONFIG_OPTION_XXXXX_YYYYY.
|
|
They're located in ttconfig.h and can be defined/undefined
|
|
manually by developers who want to tune the compilation of the
|
|
engine:
|
|
|
|
TT_CONFIG_OPTION_EXTEND_ENGINE
|
|
|
|
Allows extensions to be linked with the single object engine.
|
|
If you don't need any of them, you may save one or more
|
|
kilobytes by undefining it.
|
|
|
|
|
|
TT_CONFIG_OPTION_GRAY_SCALING
|
|
|
|
Allows the compilation of the gray-scaling (font smoothing)
|
|
code in ttraster. If undefined, some APIs won't be available:
|
|
|
|
TT_Set_Raster_Palette(),
|
|
TT_Get_Glyph_Pixmap(),
|
|
TT_Get_Outline_Pixmap()
|
|
|
|
|
|
TT_CONFIG_OPTION_INTERPRETER_SWITCH
|
|
|
|
Uses a large `switch' statement in the bytecode interpreter
|
|
instead of a constant call-table. Depending on your processor
|
|
and compiler, this can lead to significant reduction of code
|
|
size and/or increase of performance.
|
|
|
|
|
|
TT_CONFIG_OPTION_THREAD_SAFE
|
|
|
|
When defined, a thread-safe version of the engine is built. A
|
|
thread-safe version is a bit bigger, probably not slower, than
|
|
a non-threaded build. ATTENTION: You must redefine the file
|
|
`lib/ttmutex.c' for your own platform to get it to work
|
|
correctly.
|
|
|
|
|
|
Some more options may come in the future...
|
|
|
|
|
|
- New API functions TT_MulDiv() and TT_MulFix()"
|
|
|
|
To help you compute `a*b/c' with 64-bit intermediate precision, or
|
|
`a*b/0x10000' with the same one...
|
|
|
|
These are not necessarily the fastest functions but they are
|
|
clearly portable and overflow-safe. Your runtime/compiler may
|
|
provide better replacements, though...
|
|
|
|
|
|
|
|
Changes between FreeType Beta and 1.0
|
|
=====================================
|
|
|
|
There were a number of changes since the public beta:
|
|
|
|
|
|
I. Bug fixes
|
|
------------
|
|
|
|
The following bugs have been fixed in this release:
|
|
|
|
|
|
- Incorrect advance width and left side bearings
|
|
|
|
The glyph loader has been re-designed to match the values found
|
|
in the pre-calc tables...
|
|
|
|
|
|
- Problems when opening multiple fonts
|
|
|
|
Fixed. A stupid bug in the i/o component.
|
|
|
|
|
|
- Problems with some Georgian fonts
|
|
|
|
Fixed. Discovered some new undocumented opcodes behaviour...
|
|
|
|
|
|
- Buglets in the test programs which made them return invalid
|
|
error codes
|
|
|
|
Fixed.
|
|
|
|
|
|
- Memory leaks when trying to open broken some font files
|
|
|
|
Fixed. Waiting for more broken fonts to test...
|
|
|
|
|
|
- Non-square resolutions don't work or display correctly
|
|
|
|
They now work very well!
|
|
|
|
|
|
- The scan-line converter, while in font-smoothing mode, doesn't
|
|
perform horizontal drop-out control
|
|
|
|
This wasn't really bug, but the feature has been correctly
|
|
added.
|
|
|
|
|
|
The remaining `features' persist, as they're not essential yet:
|
|
|
|
- The `rotated' and `stretched' flags do not work (glyph loading
|
|
will then return errors). However, it is still possible to
|
|
rotate or transform any outline without setting these flags.
|
|
|
|
- We always use drop-out mode number 2, as some of the values
|
|
returned by some `cvt programs' seem invalid for now...
|
|
|
|
|
|
Note also that an `event hook/callback' has been introduced in this
|
|
release, but is still under alpha (not even beta; it is commented
|
|
out currently). You should not rely on this...
|
|
|
|
|
|
II. Code changes
|
|
----------------
|
|
|
|
1. API Changes
|
|
|
|
A few API changes were necessary in order to support important
|
|
features, or future improvements which will come in later
|
|
releases.
|
|
|
|
|
|
- TT_Set_Instance_Resolution() was renamed to
|
|
TT_Set_Instance_Resolutions().
|
|
|
|
|
|
- TT_Set_Instance_PointSize() has disappeared. Instead, the
|
|
following APIs have been defined:
|
|
|
|
TT_Set_Instance_CharSize()
|
|
TT_Set_Instance_CharSizes()
|
|
TT_Set_Instance_PixelSizes()
|
|
|
|
|
|
- The TT_Engine class has been introduced. It models one
|
|
instance of the library, and is used to allow re-entrance and
|
|
shared library code. The functions which now depend on a
|
|
TT_Engine parameter are:
|
|
|
|
TT_Init_FreeType()
|
|
TT_Done_FreeType()
|
|
TT_Open_Face()
|
|
TT_Open_Collection()
|
|
TT_Set_Raster_Palette()
|
|
TT_Get_Outline_Bitmap()
|
|
TT_Get_Outline_Pixmap()
|
|
|
|
Note that there is _no_ sharing of objects between distinct
|
|
engines.
|
|
|
|
|
|
- Each face and instance object have an inside pointer which use
|
|
is reserved to client application. Several functions are
|
|
defined to set and read it:
|
|
|
|
TT_Set_Face_Pointer() / TT_Get_Face_Pointer()
|
|
TT_Set_Instance_Pointer() / TT_Get_Instance_Pointer()
|
|
|
|
|
|
- TT_Apply_Outline_Matrix() has been renamed to
|
|
TT_Transform_Outline().
|
|
TT_Apply_Outline_Translation() has been renamed to
|
|
TT_Translate_Outline()
|
|
TT_Apply_Vector_Matrix() has been renamed to
|
|
TT_Transform_Vector()
|
|
|
|
all for the sake of clarity.
|
|
|
|
|
|
2. Structural changes
|
|
|
|
Some structures have evolved.
|
|
|
|
|
|
- The instance metrics have now two new fields which are
|
|
`x_scale' and `y_scale'. Each one is a scaling factor,
|
|
expressed in the 16.16 fixed float format (TT_Fixed), used to
|
|
convert one distance expressed in font units into the same
|
|
distance in fractional (26.6) pixels.
|
|
|
|
|
|
- A new structure TT_BBox has been defined to describe an
|
|
outline's bounding box.
|
|
|
|
|
|
- The outlines are now full-class citizen. It is possible to
|
|
create new outlines, copy, clone, transform, translate and
|
|
render them through specific methods of the TT_Outline class
|
|
(previously called TT_Glyph_Outline). Read the API reference
|
|
for a complete listing.
|
|
|
|
|
|
- The glyph metrics have a new structure: they contain a TT_BBox
|
|
field, a TT_Outline field, as well as three metrics values,
|
|
which are `bearingX', `bearingY', and `advance'. Read the
|
|
file `glyphs.txt' for more information about their definitions
|
|
and uses.
|
|
|
|
|
|
3. Small but IMPORTANT changes
|
|
|
|
|
|
- The `max_Faces' field of a face's properties has disappeared.
|
|
It is replaced by `num_Faces' which gives the total number of
|
|
fonts embedded in a collection (the previous field gave the
|
|
total minus one).
|
|
|
|
|
|
- TT_Load_Glyph() now returns correctly placed outlines, and
|
|
computes advance widths which match the pre-calc values in the
|
|
"hdmx" table in nearly all cases.
|
|
|
|
|
|
- TT_Get_Glyph_Metrics() returns grid-fitted metrics for hinted
|
|
glyphs (i.e., loaded with the TTLOAD_HINT_GLYPH, or
|
|
TTLOAD_DEFAULT, flags). This includes the bounding box. To
|
|
get the exact bounding box of a hinted glyph, you should
|
|
extract its outline, then call TT_Get_Outline_BBox().
|
|
|
|
|
|
- Some improvements in the glyph loader, which improves
|
|
drastically the placement of glyphs (especially composite
|
|
ones) which previously caused trouble for some fonts
|
|
(e.g. goudy.ttf).
|
|
|
|
|
|
- Several minor improvements in the interpreter to improve
|
|
rendering and bounds checking...
|
|
|
|
|
|
- Up-to-date Pascal source code, with output equivalent to the C
|
|
tree...
|
|
|
|
|
|
--- END ---
|