FreeType 1.31.1
This commit is contained in:
851
docs/changes.txt
Normal file
851
docs/changes.txt
Normal file
@@ -0,0 +1,851 @@
|
||||
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 ---
|
||||
Reference in New Issue
Block a user