* include/freetype/internal/ftobjs.h, src/base/ftobjs.c, src/bdf/bdfdrivr.c, src/pcf/pcfdriver.c, src/pfr/pfrsbit.c, src/sfnt/ttsbit.c, src/type42/t42objs.c, src/winfonts/winfnt.c: introduced three new functions to deal with glyph bitmaps within FT_GlyphSlot objects. these are: ft_glyphslot_free_bitmap ft_glyphslot_alloc_bitmap ft_glyphslot_set_bitmap these are much more convenient to use than managing the FT_GLYPH_OWN_BITMAP flag manually. the font drivers have been modified to use them as well. * src/cache/ftlru.c: fixed an invalid assertion checkBRANCH-2-1-5
parent
8a4f0e3d73
commit
956884724d
24 changed files with 858 additions and 800 deletions
@ -1,275 +0,0 @@ |
||||
List of known FreeType 2 Bugs |
||||
----------------------------- |
||||
|
||||
"Identifier" is a string to uniquely identify the bug. A more detailed |
||||
description of the bug is found below the table of opened bugs. |
||||
|
||||
"Date" is the date when the bug was first reported or entered in this |
||||
document. Dates are in _European_ format, i.e day/month/year. |
||||
|
||||
"Opened By" is the name of the person who first spotted the bug. Note that |
||||
we can use abbreviations here, like: |
||||
|
||||
"David" for David Turner |
||||
"Werner" for Werner Lemberg |
||||
etc. |
||||
|
||||
"Reproduceable" indicates whether the bug could be reproduced by the |
||||
development team or not (it can be specific to a given platform), whether it |
||||
always happens, or only sporadically, etc. |
||||
|
||||
|
||||
|
||||
I. Open bugs |
||||
============ |
||||
|
||||
|
||||
Identifier Date Opened by Reproduceable |
||||
------------------------------------------------------------------------------ |
||||
NO-CID-CMAPS 13-09-2001 David always |
||||
BAD-TT-RENDERING 12-09-2001 Paul Pedriana ? |
||||
BAD-THIN-LINES 13-09-2001 David ? |
||||
NOT-WINDOWS-METRICS 07-10-2001 David always |
||||
ADVANCED-COMPOSITES 25-10-2001 George Williams always |
||||
|
||||
--------------------END-OF-OPENED-BUGS-TABLE---------------------------------- |
||||
|
||||
|
||||
|
||||
II. Closed bugs |
||||
=============== |
||||
|
||||
|
||||
Identifier Date Closed by Closure date |
||||
------------------------------------------------------------------------------ |
||||
BAD-TTNAMEID.H 12-09-2001 Antoine N/A |
||||
BAD-T1-CHARMAP 15-06-2001 David 2.0.5 |
||||
BAD-UNIXXXX-NAMES 30-07-2001 David 2.0.5 |
||||
GLYPH_TO_BITMAP-BUG 05-12-2001 David 05-12-2001 |
||||
AUTOHINT-NO-SBITS 13-09-2001 David 2.0.6 |
||||
TT-GLYPH-CRASH 01-01-2002 David 2.0.6 |
||||
T1-FONT-CRASH 01-01-2002 David 2.0.6 |
||||
BAD-ADVANCES 30-11-2001 David 2.0.6 |
||||
GLYPH-TO-BITMAP-BUG 15-12-2001 David 2.0.6 |
||||
--------------------END-OF-CLOSED-BUGS-TABLE---------------------------------- |
||||
|
||||
|
||||
|
||||
III. Bug descriptions |
||||
===================== |
||||
|
||||
|
||||
--- START OF OPEN BUGS --- |
||||
|
||||
|
||||
NO-CID-CMAPS |
||||
|
||||
Not exactly a bug, but the CFF font driver doesn't build a Unicode charmap |
||||
from the contents of font files, which prevents efficiently using fonts in |
||||
this format. |
||||
|
||||
|
||||
|
||||
BAD-TT-RENDERING |
||||
|
||||
According to Paul Pedriana <PPedriana@maxis.com>, there is a rather |
||||
important difference between the rendering of TrueType-hinted glyphs of |
||||
current FT2 and old betas. |
||||
|
||||
Tests and comparisons show a _major_ discrepancy of monochrome truetype |
||||
bytecode-hinted glyphs! Something seems to be really broken here! |
||||
|
||||
Some of this has been fixed in 2.0.6; there was a bug in the TrueType |
||||
loader that prevented it from loading composites correctly. However, |
||||
there are still _subtle_ differences between FT1 and FT2 when it comes to |
||||
monochrome TrueType-hinted glyphs (the major differences are gone though). |
||||
|
||||
|
||||
|
||||
BAD-THIN-LINES |
||||
|
||||
It seems that the anti-aliased renderer in FreeType has problems rendering |
||||
extremely thin straight lines correctly, at least when using the |
||||
FT_Outline_Render() function. |
||||
|
||||
|
||||
|
||||
NOT-WINDOWS-METRICS |
||||
|
||||
FreeType doesn't always return the same metrics as Windows for ascender, |
||||
descender, and text height, depending on character pixel sizes. A lot of |
||||
testing on Windows is needed to debug this properly. It might be due to a |
||||
rounding bug when computing the "x_scale" and "y_scale" values. |
||||
|
||||
|
||||
|
||||
ADVANCED-COMPOSITES |
||||
|
||||
Provided by George Williams <pfaedit@users.sourceforge.net>: |
||||
|
||||
I notice that truetype/ttgload.c only supports Apple's definition of |
||||
offsets for composite glyphs. Apple and Microsoft behave differently if |
||||
there is a scale factor. OpenType defines some bits to disambiguate. |
||||
|
||||
(A problem in both 2.0.4 and 2.0.5.) |
||||
|
||||
Apple says (http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html) that if |
||||
flags&ARGS_ARE_XY is set then the offsets should be scaled by the scale |
||||
factors (as you have done), but they also say something very cryptic |
||||
about what happens when the component is rotated at 45° (which you do |
||||
not support) -- See the "Important" note at the bottom. |
||||
|
||||
The old truetype spec from Microsoft did not mention this. The OpenType |
||||
spec (http://www.microsoft.com/typography/otspec/glyf.htm, |
||||
http://partners.adobe.com/asn/developer/opentype/glyf.html) defines two |
||||
new bits to disambiguate: |
||||
|
||||
SCALED_COMPONENT_OFFSET 11 |
||||
Composite designed to have the component offset scaled (designed for |
||||
Apple rasterizer) |
||||
|
||||
UNSCALED_COMPONENT_OFFSET 12 |
||||
Composite designed not to have the component offset scaled (designed |
||||
for the Microsoft TrueType rasterizer) |
||||
|
||||
Perhaps you could add a load_flag to allow the user to define the |
||||
default setting? |
||||
|
||||
David says: |
||||
|
||||
Wow, I was not even aware of this, it will probably take a little time |
||||
to implement since I don't have any font that implement these |
||||
"features", and also because I believe that we're running out of bits |
||||
for "load_flag", some other way to set preferences is probably needed. |
||||
|
||||
|
||||
|
||||
--- END OF OPEN BUGS --- |
||||
|
||||
|
||||
|
||||
BAD-TTNAMEID.H |
||||
|
||||
The file "ttnameid.h" contains various constant macro definitions |
||||
corresponding to important values defined by the TrueType specification. |
||||
|
||||
Joe Man <trmetal@yahoo.com.hk> reports that: |
||||
|
||||
According to the information from TrueType v1.66: |
||||
|
||||
Platform ID = 3 (Microsoft) |
||||
the Encoding ID of GB2312 = 4 |
||||
the Encoding ID of big5 = 3 |
||||
|
||||
However, I have found that in ttnameid.h: |
||||
|
||||
TT_MS_ID_GB2312 = 3 |
||||
TT_MS_ID_BIG_5 = 4 |
||||
|
||||
Which one is correct? |
||||
|
||||
Antoine replied that this was a bug in the TT 1.66 specification, and that |
||||
FreeType followed the most recent TrueType/OpenType specification here. |
||||
|
||||
|
||||
|
||||
AUTOHINT-SBITS |
||||
|
||||
When trying to load a glyph, with the auto-hinter activated (i.e., when |
||||
using FT_LOAD_FORCE_AUTOHINT, or when the font driver doesn't provide its |
||||
own hinter), embedded bitmaps are _never_ loaded, unlike the default |
||||
behaviour described by the API specification. |
||||
|
||||
This seems to be a bug in FT_Load_Glyph(), but there is no way to solve it |
||||
efficiently without making a few important internal changes to the |
||||
library's design (more importantly, to the font driver interface). |
||||
|
||||
This has been corrected with a hack in FT_Load_Glyph(). More important |
||||
internal changes should help get rid of it with a clean solution in a |
||||
further release like FreeType 2.1. |
||||
|
||||
|
||||
|
||||
BAD-T1-CHARMAP |
||||
|
||||
Type1 driver doesn't read "cacute" and "lslash" characters from iso8859-2 |
||||
charset. Those characters are mapped as MAC-one in glnames.py, so they |
||||
cannot be shown in Adobe Type1 fonts. |
||||
|
||||
(This was due to a bug in the "glnames.py" script used to generate the |
||||
table of glyph names in 'src/psaux/pstables.h'.) |
||||
|
||||
|
||||
|
||||
BAD-UNIXXXX-NAMES |
||||
|
||||
Glyph names like uniXXXX are not recognized as they should be. It seems |
||||
that code in psmodule.c for uniXXXX glyph names was never tested. The |
||||
patch is very simple. |
||||
|
||||
(A simple bug that was left un-noticed due to the fact that I don't have |
||||
any Postscript font that use this convention, unfortunately.) |
||||
|
||||
|
||||
|
||||
GLYPH_TO_BITMAP-BUG |
||||
|
||||
Calling FT_Glyph_To_Bitmap() sometimes modifies the original glyph |
||||
outline, creating weird alignment artefacts. |
||||
|
||||
This subtle bug was really in the file `src/smooth/ftsmooth.c'. |
||||
Basically, the outline was shifted before rendering it into a new bitmap |
||||
buffer. However, it wasn't properly un-shifted after that operation. |
||||
|
||||
This was only noticeable with certain glyphs or certain fonts; it crept in |
||||
a long time ago. |
||||
|
||||
The same bug has been fixed in src/raster/ftrender1.c also. |
||||
|
||||
|
||||
|
||||
TT-GLYPH-CRASH |
||||
|
||||
The library crashed when trying to load certain glyphs from an |
||||
automatically generated TrueType file (tt1095m_.ttf submitted by Scott |
||||
Long). |
||||
|
||||
It turned out that the font contained invalid glyph data (i.e. was |
||||
broken), but the TrueType glyph loader in FreeType wasn't paranoid enough, |
||||
which resulted in nasty memory overwrites all over the place. |
||||
|
||||
|
||||
|
||||
T1-FONT-CRASH |
||||
|
||||
The library crashed when trying to load the "Stalingrad Regular" face from |
||||
the "sadn.pfb" font file provided by Anthony Fok (and the Gnome-Print team |
||||
I believe). |
||||
|
||||
This was due to the fact that the font missed a full font name entry, |
||||
though boasted a family name and postscript name. The Type 1 face loader |
||||
didn't check for these pathetic cases and seg-faulted. |
||||
|
||||
|
||||
|
||||
BAD-ADVANCES |
||||
|
||||
All scalable font drivers returned un-fitted glyph advances when |
||||
FT_LOAD_DEFAULT was used, which was incorrect. This problem was pretty |
||||
old but hadn't been spotted because all test programs actually explicitly |
||||
or implicitly (i.e. through the cache) rounded the advance widths of |
||||
glyphs. |
||||
|
||||
This resulted in poor rendering of a number of client applications however |
||||
(it is strange to see they took so long to notify the FreeType team). |
||||
|
||||
|
||||
|
||||
GLYPH-TO-BITMAP-BUG |
||||
|
||||
FT_Glyph_To_Bitmap() did incorrectly modify the source glyph in certain |
||||
cases, which resulted in random behaviour and bad text rendering. This |
||||
was spotted to bugs in both the monochrome and smooth rasterizer. |
||||
|
||||
|
||||
=== end of file === |
@ -1,276 +0,0 @@ |
||||
|
||||
FreeType 2 compilation how-to |
||||
============================= |
||||
|
||||
|
||||
Introduction |
||||
------------ |
||||
|
||||
Welcome to the FreeType 2 library. You'll find in this document |
||||
instructions on how to compile the library on your favorite platform. |
||||
|
||||
|
||||
I. QUICK COMMAND-LINE GUIDE |
||||
--------------------------- |
||||
|
||||
THE FOLLOWING WILL ONLY WORK WITH GNU MAKE, IT WILL FAIL MISERABLY |
||||
WITH OTHER MAKE TOOLS, FOR EXAMPLE "BSD MAKE". |
||||
|
||||
Install GNU Make (version 3.78.1 or newer), then try the following |
||||
on Unix or Cygwin: |
||||
|
||||
./configure <youroptions> // this will setup the build |
||||
make // this will build the library |
||||
|
||||
or even: |
||||
|
||||
make setup unix |
||||
make |
||||
|
||||
On Win32 + Visual C++: |
||||
|
||||
make setup visualc // setup the build for VisualC++ on Win32 |
||||
make // build the library |
||||
|
||||
Then, go to the `demos' directory and type |
||||
|
||||
make |
||||
|
||||
|
||||
|
||||
If this doesn't work, read the following. |
||||
|
||||
|
||||
II. COMMAND-LINE COMPILATION |
||||
---------------------------- |
||||
|
||||
Note that if you do not want to compile FreeType 2 from a command |
||||
line shell, please skip to section III below (DETAILED COMPILATION). |
||||
|
||||
FreeType 2 includes a powerful and flexible build system that allows |
||||
you to easily compile it on a great variety of platforms from the |
||||
command line. To do so, just follow these simple instructions: |
||||
|
||||
a. Install GNU Make |
||||
|
||||
Because GNU Make is the only Make tool supported to compile |
||||
FreeType 2, you should install it on your machine. |
||||
|
||||
The FreeType 2 build system relies on many features special to GNU |
||||
Make -- trying to build the library with any other Make tool will |
||||
*fail*. |
||||
|
||||
NEARLY ALL OTHER MAKE TOOLS WILL FAIL, INCLUDING "BSD MAKE", SO |
||||
REALLY INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM! |
||||
|
||||
Make sure that you are invoking GNU Make from the command line, by |
||||
typing something like: |
||||
|
||||
make -v |
||||
|
||||
to display its version number. |
||||
|
||||
VERSION 3.78.1 OR NEWER IS NEEDED! |
||||
|
||||
b. Invoke `make' |
||||
|
||||
Go to the root directory of FreeType 2, then simply invoke GNU |
||||
Make from the command line. This will launch the FreeType 2 host |
||||
platform detection routines. A summary will be displayed, for |
||||
example, on Win32: |
||||
|
||||
|
||||
============================================================== |
||||
FreeType build system -- automatic system detection |
||||
|
||||
The following settings are used: |
||||
|
||||
platform win32 |
||||
compiler gcc |
||||
configuration directory ./builds/win32 |
||||
configuration rules ./builds/win32/w32-gcc.mk |
||||
|
||||
If this does not correspond to your system or settings please |
||||
remove the file 'config.mk' from this directory then read the |
||||
INSTALL file for help. |
||||
|
||||
Otherwise, simply type 'make' again to build the library. |
||||
============================================================= |
||||
|
||||
|
||||
If the detected settings correspond to your platform and compiler, |
||||
skip to step e. Note that if your platform is completely alien to |
||||
the build system, the detected platform will be `ansi'. |
||||
|
||||
|
||||
c. Configure the build system for a different compiler |
||||
|
||||
If the build system correctly detected your platform, but you want |
||||
to use a different compiler than the one specified in the summary |
||||
(for most platforms, gcc is the defaut compiler), invoke GNU Make |
||||
with |
||||
|
||||
make setup <compiler> |
||||
|
||||
For example: |
||||
|
||||
to use Visual C++ on Win32, type: "make setup visualc" |
||||
to use LCC-Win32 on Win32, type: "make setup lcc" |
||||
to use Cygwin on Win32, type "make setup unix" |
||||
|
||||
The <compiler> name to use is platform-dependent. The list of |
||||
available compilers for your system is available in the file |
||||
`builds/<system>/detect.mk' (note that we hope to make the list |
||||
displayed at user demand in the final release). |
||||
|
||||
If you are satisfied by the new configuration summary, skip to |
||||
step e. |
||||
|
||||
d. Configure the build system for an unknown platform/compiler |
||||
|
||||
The auto-detection/setup phase of the build system copies a file |
||||
to the current directory under the name `config.mk'. |
||||
|
||||
For example, on OS/2+gcc, it would simply copy |
||||
`builds/os2/os2-gcc.mk' to `./config.mk'. |
||||
|
||||
If for some reason your platform isn't correctly detected, copy |
||||
manually the configuration sub-makefile to `./config.mk' and go to |
||||
step e. |
||||
|
||||
Note that this file is a sub-Makefile used to specify Make |
||||
variables for compiler and linker invocation during the build. |
||||
You can easily create your own version from one of the existing |
||||
configuration files, then copy it to the current directory under |
||||
the name `./config.mk'. |
||||
|
||||
e. Build the library |
||||
|
||||
The auto-detection/setup phase should have copied a file in the |
||||
current directory, called `./config.mk'. This file contains |
||||
definitions of various Make variables used to invoke the compiler |
||||
and linker during the build. |
||||
|
||||
To launch the build, simply invoke GNU Make again: The top |
||||
Makefile will detect the configuration file and run the build with |
||||
it. |
||||
|
||||
f. Build the demonstration programs |
||||
|
||||
|
||||
III. DETAILED COMPILATION PROCEDURE |
||||
----------------------------------- |
||||
|
||||
If you don't want to compile FreeType 2 from the command-line (for |
||||
example if you use a graphical IDE on a Mac or Windows), you will |
||||
need to understand how the FreeType files are organized. |
||||
|
||||
FreeType 2 has a very modular design, and it is made of several |
||||
components. Each component must be compiled as a stand-alone object |
||||
file, even if it is really made of several C source files. For |
||||
example, the `base layer' component is made of the following C |
||||
files: |
||||
|
||||
src/ |
||||
base/ |
||||
ftcalc.c - computations |
||||
ftextend.c - extensions support |
||||
ftlist.c - simple list management |
||||
ftobjs.c - object management |
||||
ftoutln.c - simple outline processing |
||||
ftstream.c - stream input |
||||
|
||||
However, you can create a single object file by compiling the file |
||||
`src/base/ftbase.c', which basically contains |
||||
|
||||
#include "ftcalc.c" |
||||
#include "ftobjs.c" |
||||
#include "ftstream.c" |
||||
#include "ftlist.c" |
||||
#include "ftoutln.c" |
||||
#include "ftextend.c" |
||||
|
||||
Similarly, each component has a single `englobing' C file to compile |
||||
it as a stand-alone object: |
||||
|
||||
src/autohint/autohint.c - the autohinting module |
||||
src/base/ftbase.c - the base layer, high-level interface |
||||
src/cache/ftcache.c - a glyph and image caching system |
||||
(still experimental) |
||||
src/cff/cff.c - the OpenType font driver |
||||
src/cid/type1cid.c - the CID-keyed font driver |
||||
src/psaux/psaux.c - the PS support module |
||||
src/psnames/psnames.c - a support module to handle PS glyph |
||||
names |
||||
src/raster1/raster1.c - the monochrome raster module |
||||
src/sfnt/sfnt.c - the `sfnt' module |
||||
src/smooth/smooth.c - the anti-aliasing raster module |
||||
src/truetype/truetype.c - the TrueType font driver |
||||
src/type1/type1.c - the Type 1 font driver |
||||
|
||||
The last module of FreeType 2, `winfonts' (implementing support for |
||||
Windows FNT format), is a single file. |
||||
|
||||
To compile one component, do the following: |
||||
|
||||
- Add the top-level `include' directory to your compilation |
||||
include path |
||||
|
||||
- Add the `src/<component>' directory to your compilation include |
||||
path, or simply `cd' to the component's source directory. |
||||
|
||||
- Compile the component `source' file (see list below); you don't |
||||
need to be in the component's directory if you added |
||||
`src/<component>' to your include path. |
||||
|
||||
For example, the following line can be used to compile the truetype |
||||
driver on Unix: |
||||
|
||||
cd freetype2/ |
||||
cc -c -Iinclude -Isrc/truetype src/truetype/truetype.c |
||||
|
||||
Alternatively: |
||||
|
||||
cd freetype2/src/truetype |
||||
cc -c -I../../include truetype.c |
||||
|
||||
Finally, FreeType 2 contains some other components: |
||||
|
||||
src/base/ftsystem.c - system-specific memory and i/o support |
||||
src/base/ftinit.c - initialization layer |
||||
src/base/ftdebug.c - debugging component (empty in release |
||||
build) |
||||
src/base/ftglyph.c - optional convenience functions |
||||
|
||||
All font drivers are optional. The `sfnt', `psaux', and `psnames' |
||||
modules are mandatory for certain drivers. However, you may need to |
||||
update the list of drivers that are statically linked to the |
||||
library, which is located in the configuration file |
||||
`include/freetype/config/ftmodule.h'. |
||||
|
||||
|
||||
IV. Support for flat-directory compilation |
||||
------------------------------------------ |
||||
|
||||
It is possible to put all FreeType 2 source files into a single |
||||
directory, with the exception of the `include' hierarchy. |
||||
|
||||
1. Copy all files in current directory: |
||||
|
||||
cp freetype2/src/base/*.[hc] . |
||||
cp freetype2/src/raster1/*.[hc] . |
||||
cp freetype2/src/smooth/*.[hc] . |
||||
etc. |
||||
|
||||
2. Compile sources: |
||||
|
||||
cc -c -Ifreetype2/include ftsystem.c |
||||
cc -c -Ifreetype2/include ftinit.c |
||||
cc -c -Ifreetype2/include ftdebug.c |
||||
cc -c -Ifreetype2/include ftbase.c |
||||
etc. |
||||
|
||||
You don't need to define the FT_FLAT_COMPILATION macro (as this was |
||||
required in previous releases of FreeType 2). |
||||
|
||||
End of file |
@ -0,0 +1,117 @@ |
||||
How to customize the compilation of the library: |
||||
================================================ |
||||
|
||||
FreeType is highly customizable to fit various needs, and this document |
||||
details how it is possible to select options and components at compilation |
||||
time. |
||||
|
||||
|
||||
I. Configuration macros: |
||||
|
||||
the file found in "include/freetype/config/ftoption.h" contains a list |
||||
of commented configuration macros that can be toggled by developers to |
||||
indicate which features to activate in their build of the library. |
||||
|
||||
these options range from debug level to availability of certain |
||||
features, like native TrueType hinting through a bytecode interpreter. |
||||
|
||||
we invite you to read this file for more information. You can change |
||||
the file's content to suit your needs, or override it with one of the |
||||
techniques described below.. |
||||
|
||||
|
||||
II. Modules list: |
||||
|
||||
the file found in "include/freetype/config/ftmodule.h" contains a list |
||||
of names corresponding to the modules / font drivers to be statically |
||||
compiled in the FreeType library during the build. |
||||
|
||||
you can change it to suit your own preferences. Be aware that certain |
||||
modules depend on others, as described by the file "modules.txt" in |
||||
this directory. |
||||
|
||||
you can modify the file's content to suit your needs, or override it |
||||
at compile time with one of the methods described below |
||||
|
||||
|
||||
III. System interface: |
||||
|
||||
FreeType's default interface to the system (i.e. the parts that deal with |
||||
memory management and i/o streams) is located in "src/base/ftsystem.c". |
||||
|
||||
the current implementation uses standard C library calls to manage |
||||
memory and read font files. It is however possible to write custom |
||||
implementations to suit specific systems. |
||||
|
||||
to tell the GNU Make-based build system to use a custom system interface, |
||||
you'll need to define the environment variable FTSYS_SRC to point to |
||||
the relevant implementation, like in: |
||||
|
||||
on Unix: |
||||
./configure <youroptions> |
||||
export FTSYS_SRC=foo/my_ftsystem.c |
||||
make |
||||
make install |
||||
|
||||
on Windows: |
||||
make setup <compiler> |
||||
set FTSYS_SRC=foo/my_ftsystem.c |
||||
make |
||||
|
||||
|
||||
IV. Overriding default configuration and module headers: |
||||
|
||||
it is possible to over-ride the default configuration and module headers |
||||
without changing the original files. There are two ways to do that: |
||||
|
||||
1. Using the C include path: |
||||
|
||||
use the C include path to ensure that your own versions of the |
||||
files are used at compile time when the lines: |
||||
|
||||
#include FT_CONFIG_OPTIONS_H |
||||
#include FT_CONFIG_MODULES_H |
||||
|
||||
are compiled. Their default values being <freetype/config/ftoption.h> |
||||
and <freetype/config/ftmodule.h>, you can do something like: |
||||
|
||||
custom/ |
||||
freetype/ |
||||
config/ |
||||
ftoption.h => custom options header |
||||
ftmodule.h => custom modules list |
||||
|
||||
include/ => normal FreeType 2 include |
||||
freetype/ |
||||
... |
||||
|
||||
then change the C include path to always give the path to "custom" |
||||
before the FreeType 2 "include" |
||||
|
||||
|
||||
2. Re-defining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H |
||||
|
||||
another way to do the same thing is to re-define the macros used |
||||
to name the configuration headers. To do so, you'll need a custom |
||||
"ft2build.h", whose content can be as simple as: |
||||
|
||||
#ifndef __FT2_BUILD_GENERIC_H__ |
||||
#define __FT2_BUILD_GENERIC_H__ |
||||
|
||||
#define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h> |
||||
#define FT_CONFIG_MACROS_H <custom/my-ftmodule.h> |
||||
|
||||
#include <freetype/config/ftheader.h> |
||||
|
||||
#endif /* __FT2_BUILD_GENERIC_H__ */ |
||||
|
||||
place them in: |
||||
|
||||
custom/ |
||||
ft2build.h => custom version described above |
||||
my-ftoption.h => custom options header |
||||
my-ftmodule.h => custom modules list header |
||||
|
||||
and change the C include path to ensure that "custom" is always placed |
||||
before the FT2 "include" during compilation. |
||||
|
@ -1,185 +1,65 @@ |
||||
In order to build the library, read the `BUILD' document in the `docs' |
||||
directory. This is only a quick starter. |
||||
Welcome |
||||
|
||||
There are several ways to build the FreeType library, depending on your |
||||
system and the level of customization you need. Here's a short overview |
||||
of the documentation available: |
||||
|
||||
I. Unix systems |
||||
--------------- |
||||
I. Normal installation and upgrades: |
||||
|
||||
If you have GNU Make installed, simply type |
||||
1. Native TrueType Hinting: |
||||
|
||||
Native TrueType hinting is disabled by default[1]. If you really need it, |
||||
read the file "TRUETYPE" for information. |
||||
|
||||
./configure |
||||
make |
||||
make install |
||||
|
||||
2. Unix Systems (as well as Cygwin or MSys on Windows): |
||||
|
||||
on the command line to configure, build and install FreeType on your |
||||
system. Note that the default installation path is "/usr/local". |
||||
Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade |
||||
FreeType 2 on a Unix system. Note that you *will* need GNU Make, since |
||||
other make tools won't work (this includes BSD Make !!) |
||||
|
||||
Please read the file README.UNX, it contains _critical_ information |
||||
regarding the installation of FreeType on many Unix systems. |
||||
3. On VMS with the "mms" build tool: |
||||
|
||||
see INSTALL.VMS for installation instructions on this platform |
||||
|
||||
4. Other systems using GNU Make: |
||||
|
||||
on non-Unix platforms, it's possible to build the library using |
||||
GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK* !! |
||||
This methods supports several compilers on Windows, OS/2 and BeOS, |
||||
including Mingw, Visual C++, Borland C++, and more. |
||||
|
||||
II. From the command line |
||||
------------------------- |
||||
instructions are provided in the file "INSTALL.GNU" |
||||
|
||||
If you are not using Unix, there are two ways to quickly build |
||||
FreeType 2 from the command line. |
||||
|
||||
The first, and favorite one, is to use the "Jam" build tool. Jam is |
||||
a highly portable replacement for Make whose control files do not |
||||
depend on the current platform or compiler toolset. |
||||
5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior): |
||||
|
||||
we provide a small number of "project files" for various IDEs to |
||||
automatically build the library as well. Note that these files are |
||||
not supported and sporadically maintained by FreeType developers, |
||||
so don't expect them to work in each release. |
||||
|
||||
to find them, have a look at the content of the "builds/<system>" |
||||
directory, where <system> stands for your OS or environment. |
||||
|
||||
For more information, please see: |
||||
|
||||
http://www.freetype.org/jam/index.html |
||||
6. From you own IDE, or own Makefiles: |
||||
|
||||
If you want to create your own project file, follow the instructions |
||||
given in the "INSTALL.ANY" document of this directory. |
||||
|
||||
The second one is to use "GNU Make" (and NO OTHER MAKE TOOL). |
||||
|
||||
II. Custom builds of the library: |
||||
|
||||
1. Building FT2 with "Jam" |
||||
-------------------------- |
||||
Customizing the compilation of FreeType is easy, and allows you to select |
||||
only the components of the font engine that you really need. For more details |
||||
read the file "CUSTOMIZE" |
||||
|
||||
Once you've got *our version* of the Jam tool installed on your |
||||
system, simply go to the top-level FT2 directory, then type |
||||
|
||||
"jam" |
||||
-------------------------------------------------------------------- |
||||
|
||||
on the command line. This will build the library and place it in |
||||
the "objs" directory. |
||||
[1] More details on: http://www.freetype.org/patents.html |
||||
|
||||
By default, a static library is built. On Unix systems, it is |
||||
possible to build a shared library through the "libtool" script. |
||||
You need to have libtool installed on your system, then re-define |
||||
a few environment variables before invoking Jam, as in |
||||
End of file |
||||
|
||||
export CC="libtool --mode=compile cc" |
||||
export LINK="libtool --mode=link cc" |
||||
jam |
||||
|
||||
In later releases of FT2, building shared libraries with Jam |
||||
should become automatic on Unix systems. |
||||
|
||||
|
||||
2. Building FT2 with "GNU Make" |
||||
------------------------------- |
||||
|
||||
You need to have GNU Make (version 3.78.1 or newer) installed on |
||||
your system to compile the library from the command line. This will |
||||
_NOT_ work with other make tools (including BSD make)! |
||||
|
||||
[Well, this is not really correct. Recently, a perl implementation |
||||
of make called `makepp' has appeared which can also build FreeType 2 |
||||
successfully on Unix platforms. See http://makepp.sourceforge.net |
||||
for more details.] |
||||
|
||||
- Go to the `freetype2' directory. |
||||
|
||||
- Unix (any C compiler should work): |
||||
|
||||
- make setup (don't worry, this will invoke a configure script) |
||||
- make |
||||
- make install |
||||
|
||||
Alternatively, you can pass parameters to the configure script |
||||
within the CFG variable, as in: |
||||
|
||||
- make setup CFG="--prefix=/usr" |
||||
- make |
||||
- make install |
||||
|
||||
If the configure script isn't run, try to add `unix' as a target |
||||
on the command line, e.g.: |
||||
|
||||
- make setup unix CFG="--prefix=/opt/experimental" |
||||
|
||||
|
||||
- Windows: |
||||
|
||||
We provide a version of GNU Make for Win32 on the FreeType site. |
||||
See http://www.freetype.org/download.html for details. |
||||
|
||||
- gcc (Mingw, _not_ CygWin): |
||||
|
||||
- make setup |
||||
- make |
||||
|
||||
|
||||
- Visual C++: |
||||
|
||||
- make setup visualc |
||||
- make |
||||
|
||||
|
||||
- other compilers: |
||||
|
||||
- make setup bcc32 -> Borland C++ 32 bits |
||||
- make setup intelc -> Intel C++ |
||||
- make setup watcom -> Watcom C++ |
||||
- make setup lcc -> Win32-LCC |
||||
|
||||
|
||||
If you want to build FreeType 2 in another directory, you must set |
||||
two environment variables, `OJB_DIR' and `TOP_DIR'. The former |
||||
gives the directory where the object files and the library should be |
||||
created (this directory must exist), the latter the top directory of |
||||
the FreeType 2 source tree. Example: |
||||
|
||||
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ |
||||
make -f$TOP_DIR/Makefile setup ansi |
||||
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ |
||||
make -f$TOP_DIR/Makefile |
||||
|
||||
On Unix boxes, calling `configure' from the build directory is |
||||
sufficient; it will build a small Makefile which calls the |
||||
FreeType 2 Makefile with the necessary parameters. |
||||
|
||||
|
||||
III. In your own environment (IDE) |
||||
---------------------------------- |
||||
|
||||
You need to add the directories "freetype2/include" to your include |
||||
path when compiling the library. |
||||
|
||||
FreeType 2 is made of several components; each one of them is |
||||
located in a subdirectory of "freetype2/src". For example, |
||||
`freetype2/src/truetype/' contains the TrueType font driver. |
||||
|
||||
DO NOT COMPILE ALL C FILES! Rather, compile the following ones: |
||||
|
||||
-- base components (required) |
||||
|
||||
src/base/ftsystem.c |
||||
src/base/ftinit.c |
||||
src/base/ftdebug.c |
||||
src/base/ftbase.c |
||||
src/base/ftglyph.c |
||||
src/base/ftbbox.c |
||||
src/base/ftmm.c |
||||
|
||||
src/base/ftmac.c -- only on the Macintosh |
||||
|
||||
-- other components are optional |
||||
|
||||
src/autohint/autohint.c -- auto hinting module |
||||
src/cache/ftcache.c -- cache sub-system (in beta) |
||||
src/sfnt/sfnt.c -- SFNT files support |
||||
(TrueType & OpenType) |
||||
src/cff/cff.c -- CFF/OpenType font driver |
||||
src/psnames/psnames.c -- Postscript glyph names support |
||||
src/psaux/psaux.c -- Postscript Type 1 parsing |
||||
src/truetype/truetype.c -- TrueType font driver |
||||
src/type1/type1.c -- Type 1 font driver |
||||
src/cid/type1cid.c -- Type 1 CID-keyed font driver |
||||
src/winfonts/winfonts.c -- Windows FONT / FNT font driver |
||||
|
||||
Note: |
||||
|
||||
`truetype.c' needs `sfnt.c' and `psnames.c' |
||||
`type1.c' needs `psaux.c' and `psnames.c' |
||||
`type1cid.c' needs `psaux.c' and `psnames.c' |
||||
`cff.c' needs `sfnt.c', `psaux.c', and `psnames.c' |
||||
|
||||
etc. |
||||
|
||||
For more information, please consult "docs/BUILD". |
||||
|
||||
--- end of INSTALL -- |
||||
|
@ -0,0 +1,96 @@ |
||||
Instructions on how to build FreeType with your own build tool: |
||||
|
||||
see the file "CUSTOMIZE" to learn how to customize FreeType to |
||||
specific environments. |
||||
|
||||
follow these simple steps: |
||||
|
||||
I. Normal way: |
||||
-------------- |
||||
|
||||
* DISABLE PRE-COMPILED HEADERS ! This is very important for Visual |
||||
C++, because FreeType uses lines like: |
||||
|
||||
#include FT_FREETYPE_H |
||||
|
||||
which are not correctly supported by this compiler, while being |
||||
ISO C compliant !! |
||||
|
||||
* You need to add the directories "freetype2/include" to your include |
||||
path when compiling the library. |
||||
|
||||
* FreeType 2 is made of several components; each one of them is |
||||
located in a subdirectory of "freetype2/src". For example, |
||||
'freetype2/src/truetype/' contains the TrueType font driver. |
||||
|
||||
* DO NOT COMPILE ALL C FILES! Rather, compile the following ones: |
||||
|
||||
-- base components (required) |
||||
|
||||
src/base/ftsystem.c |
||||
src/base/ftinit.c |
||||
src/base/ftdebug.c |
||||
src/base/ftbase.c |
||||
src/base/ftglyph.c |
||||
src/base/ftbbox.c |
||||
src/base/ftmm.c |
||||
src/base/ftpfr.c -- optional, see <freetype/ftpfr.h> |
||||
src/base/ftbdf.c -- optional, see <freetype/ftbdf.h> |
||||
src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h> |
||||
|
||||
src/base/ftmac.c -- only on the Macintosh |
||||
|
||||
-- other components are optional |
||||
|
||||
src/autohint/autohint.c -- auto hinting module |
||||
src/cache/ftcache.c -- cache sub-system (in beta) |
||||
src/sfnt/sfnt.c -- SFNT files support |
||||
(TrueType & OpenType) |
||||
src/cff/cff.c -- CFF/OpenType font driver |
||||
src/pfr/pfr.c -- PFR/TrueDoc font driver |
||||
src/bdf/bdf.c -- BDF font driver |
||||
src/pcf/pcf.c -- PCF font driver |
||||
src/psnames/psnames.c -- Postscript glyph names support |
||||
src/psaux/psaux.c -- Postscript Type 1 parsing |
||||
src/truetype/truetype.c -- TrueType font driver |
||||
src/type1/type1.c -- Type 1 font driver |
||||
src/cid/type1cid.c -- Type 1 CID-keyed font driver |
||||
src/winfonts/winfonts.c -- Windows FONT / FNT font driver |
||||
src/raster1/raster1.c -- monochrome rasterizer |
||||
src/smooth/smooth.c -- anti-aliasing rasterizer |
||||
|
||||
Note: |
||||
|
||||
`truetype.c' needs `sfnt.c' and `psnames.c' |
||||
`type1.c' needs `psaux.c' and `psnames.c' |
||||
`type1cid.c' needs `psaux.c' and `psnames.c' |
||||
`cff.c' needs `sfnt.c', `psaux.c', and `psnames.c' |
||||
|
||||
that should be it ! in case of problems, see the archives of |
||||
the FreeType development mailing list. |
||||
|
||||
|
||||
II. Support for flat-directory compilation |
||||
------------------------------------------ |
||||
|
||||
It is possible to put all FreeType 2 source files into a single |
||||
directory, with the *exception* of the `include' hierarchy. |
||||
|
||||
1. Copy all files in current directory: |
||||
|
||||
cp freetype2/src/base/*.[hc] . |
||||
cp freetype2/src/raster1/*.[hc] . |
||||
cp freetype2/src/smooth/*.[hc] . |
||||
etc. |
||||
|
||||
2. Compile sources: |
||||
|
||||
cc -c -Ifreetype2/include ftsystem.c |
||||
cc -c -Ifreetype2/include ftinit.c |
||||
cc -c -Ifreetype2/include ftdebug.c |
||||
cc -c -Ifreetype2/include ftbase.c |
||||
etc. |
||||
|
||||
You don't need to define the FT_FLAT_COMPILATION macro (as this was |
||||
required in previous releases of FreeType 2). |
||||
|
@ -0,0 +1,128 @@ |
||||
This document contains instructions on how to build the FreeType library |
||||
on non-Unix systems with the help of GNU Make. Note that if you're running |
||||
Cygwin or MSys in Windows, you should follow the instructions of INSTALL.UNX |
||||
instead. |
||||
|
||||
|
||||
FreeType 2 includes a powerful and flexible build system that allows |
||||
you to easily compile it on a great variety of platforms from the |
||||
command line. To do so, just follow these simple instructions: |
||||
|
||||
a. Install GNU Make |
||||
|
||||
Because GNU Make is the only Make tool supported to compile |
||||
FreeType 2, you should install it on your machine. |
||||
|
||||
The FreeType 2 build system relies on many features special to GNU |
||||
Make -- trying to build the library with any other Make tool will |
||||
*fail*. |
||||
|
||||
NEARLY ALL OTHER MAKE TOOLS WILL FAIL, INCLUDING "BSD MAKE", SO |
||||
REALLY INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM! |
||||
|
||||
Make sure that you are invoking GNU Make from the command line, by |
||||
typing something like: |
||||
|
||||
make -v |
||||
|
||||
to display its version number. |
||||
|
||||
VERSION 3.78.1 OR NEWER IS NEEDED! |
||||
|
||||
|
||||
|
||||
b. Invoke 'make' |
||||
|
||||
Go to the root directory of FreeType 2, then simply invoke GNU |
||||
Make from the command line. This will launch the FreeType 2 host |
||||
platform detection routines. A summary will be displayed, for |
||||
example, on Win32: |
||||
|
||||
|
||||
============================================================== |
||||
FreeType build system -- automatic system detection |
||||
|
||||
The following settings are used: |
||||
|
||||
platform win32 |
||||
compiler gcc |
||||
configuration directory ./builds/win32 |
||||
configuration rules ./builds/win32/w32-gcc.mk |
||||
|
||||
If this does not correspond to your system or settings please |
||||
remove the file 'config.mk' from this directory then read the |
||||
INSTALL file for help. |
||||
|
||||
Otherwise, simply type 'make' again to build the library. |
||||
============================================================= |
||||
|
||||
|
||||
If the detected settings correspond to your platform and compiler, |
||||
skip to step e. Note that if your platform is completely alien to |
||||
the build system, the detected platform will be 'ansi'. |
||||
|
||||
|
||||
c. Configure the build system for a different compiler |
||||
|
||||
If the build system correctly detected your platform, but you want |
||||
to use a different compiler than the one specified in the summary |
||||
(for most platforms, gcc is the defaut compiler), invoke GNU Make |
||||
with |
||||
|
||||
make setup <compiler> |
||||
|
||||
For example: |
||||
|
||||
to use Visual C++ on Win32, type: "make setup visualc" |
||||
to use Borland C++ on Win32, type "make setup bcc32" |
||||
to use Watcom C++ on Win32, type "make setup watcom" |
||||
to use Intel C++ on Win32, type "make setup intelc" |
||||
to use LCC-Win32 on Win32, type: "make setup lcc" |
||||
to use Watcom C++ on OS/2, type "make setup watcom" |
||||
to use VisualAge C++ on OS/2, type "make setup visualage" |
||||
|
||||
The <compiler> name to use is platform-dependent. The list of |
||||
available compilers for your system is available in the file |
||||
`builds/<system>/detect.mk' |
||||
|
||||
If you are satisfied by the new configuration summary, skip to |
||||
step e. |
||||
|
||||
d. Configure the build system for an unknown platform/compiler |
||||
|
||||
The auto-detection/setup phase of the build system copies a file |
||||
to the current directory under the name `config.mk'. |
||||
|
||||
For example, on OS/2+gcc, it would simply copy |
||||
`builds/os2/os2-gcc.mk' to `./config.mk'. |
||||
|
||||
If for some reason your platform isn't correctly detected, copy |
||||
manually the configuration sub-makefile to `./config.mk' and go to |
||||
step e. |
||||
|
||||
Note that this file is a sub-Makefile used to specify Make |
||||
variables for compiler and linker invocation during the build. |
||||
You can easily create your own version from one of the existing |
||||
configuration files, then copy it to the current directory under |
||||
the name `./config.mk'. |
||||
|
||||
e. Build the library |
||||
|
||||
The auto-detection/setup phase should have copied a file in the |
||||
current directory, called `./config.mk'. This file contains |
||||
definitions of various Make variables used to invoke the compiler |
||||
and linker during the build. |
||||
|
||||
To launch the build, simply invoke GNU Make again: The top |
||||
Makefile will detect the configuration file and run the build with |
||||
it. |
||||
|
||||
|
||||
|
||||
Final note: |
||||
|
||||
the build system builds a statically linked library of the font engine |
||||
in the "objs" directory. It does _not_ support the build of DLLs on |
||||
Windows and OS/2, if you need these, you'll have to either use |
||||
a IDE-specific project file, or follow the instructions in |
||||
"INSTALL.ANY" to create your own Makefiles. |
@ -0,0 +1,181 @@ |
||||
This document contains instructions on how to build the FreeType library |
||||
on Unix systems. This also works for emulations like Cygwin or MSys on |
||||
Win32: |
||||
|
||||
|
||||
I. Ensure that you are using GNU Make |
||||
------------------------------------- |
||||
|
||||
The FreeType build system _exclusively_ works with GNU Make. You |
||||
will not be able to compile the library with the instructions |
||||
below using any other alternative (including BSD Make). |
||||
|
||||
Trying to compile the library with a different Make tool will |
||||
print a message like: |
||||
|
||||
Sorry, GNU make is required to build FreeType2. |
||||
|
||||
and the build process will be aborted. If this happens, install |
||||
GNU Make on your system, and use the GNUMAKE environment variable |
||||
to name it. |
||||
|
||||
|
||||
|
||||
IV. Build and install the library |
||||
--------------------------------- |
||||
|
||||
The following should work on all Unix systems where the 'make' |
||||
command invokes GNU Make: |
||||
|
||||
./configure --prefix=<yourprefix> |
||||
make |
||||
make install (as root) |
||||
|
||||
where "<yourprefix>" must be replaced by the prefix returned by |
||||
the "freetype-config" command. |
||||
|
||||
When using a different command to invoke GNU Make, use the GNUMAKE |
||||
variable. For example, if `gmake' is the command to use on your |
||||
system, do something like: |
||||
|
||||
GNUMAKE=gmake ./configure --prefix=<yourprefix> |
||||
gmake |
||||
gmake install (as root) |
||||
|
||||
If this still doesn't work, something's rotten on your system( |
||||
(e.g. you're using a very old version of GNU Make) |
||||
|
||||
|
||||
|
||||
I. Unix systems |
||||
--------------- |
||||
|
||||
If you have GNU Make installed, simply type |
||||
|
||||
./configure |
||||
make |
||||
make install |
||||
|
||||
on the command line to configure, build and install FreeType on your |
||||
system. Note that the default installation path is "/usr/local". |
||||
|
||||
Please read the file README.UNX, it contains _critical_ information |
||||
regarding the installation of FreeType on many Unix systems. |
||||
|
||||
|
||||
II. From the command line |
||||
------------------------- |
||||
|
||||
If you are not using Unix, there are two ways to quickly build |
||||
FreeType 2 from the command line. |
||||
|
||||
The first, and favorite one, is to use the "Jam" build tool. Jam is |
||||
a highly portable replacement for Make whose control files do not |
||||
depend on the current platform or compiler toolset. |
||||
|
||||
For more information, please see: |
||||
|
||||
http://www.freetype.org/jam/index.html |
||||
|
||||
The second one is to use "GNU Make" (and NO OTHER MAKE TOOL). |
||||
|
||||
|
||||
1. Building FT2 with "Jam" |
||||
-------------------------- |
||||
|
||||
Once you've got *our version* of the Jam tool installed on your |
||||
system, simply go to the top-level FT2 directory, then type |
||||
|
||||
"jam" |
||||
|
||||
on the command line. This will build the library and place it in |
||||
the "objs" directory. |
||||
|
||||
By default, a static library is built. On Unix systems, it is |
||||
possible to build a shared library through the "libtool" script. |
||||
You need to have libtool installed on your system, then re-define |
||||
a few environment variables before invoking Jam, as in |
||||
|
||||
export CC="libtool --mode=compile cc" |
||||
export LINK="libtool --mode=link cc" |
||||
jam |
||||
|
||||
In later releases of FT2, building shared libraries with Jam |
||||
should become automatic on Unix systems. |
||||
|
||||
|
||||
2. Building FT2 with "GNU Make" |
||||
------------------------------- |
||||
|
||||
You need to have GNU Make (version 3.78.1 or newer) installed on |
||||
your system to compile the library from the command line. This will |
||||
_NOT_ work with other make tools (including BSD make)! |
||||
|
||||
[Well, this is not really correct. Recently, a perl implementation |
||||
of make called `makepp' has appeared which can also build FreeType 2 |
||||
successfully on Unix platforms. See http://makepp.sourceforge.net |
||||
for more details.] |
||||
|
||||
- Go to the `freetype2' directory. |
||||
|
||||
- Unix (any C compiler should work): |
||||
|
||||
- make setup (don't worry, this will invoke a configure script) |
||||
- make |
||||
- make install |
||||
|
||||
Alternatively, you can pass parameters to the configure script |
||||
within the CFG variable, as in: |
||||
|
||||
- make setup CFG="--prefix=/usr" |
||||
- make |
||||
- make install |
||||
|
||||
If the configure script isn't run, try to add `unix' as a target |
||||
on the command line, e.g.: |
||||
|
||||
- make setup unix CFG="--prefix=/opt/experimental" |
||||
|
||||
|
||||
- Windows: |
||||
|
||||
We provide a version of GNU Make for Win32 on the FreeType site. |
||||
See http://www.freetype.org/download.html for details. |
||||
|
||||
- gcc (Mingw, _not_ CygWin): |
||||
|
||||
- make setup |
||||
- make |
||||
|
||||
|
||||
- Visual C++: |
||||
|
||||
- make setup visualc |
||||
- make |
||||
|
||||
|
||||
- other compilers: |
||||
|
||||
- make setup bcc32 -> Borland C++ 32 bits |
||||
- make setup intelc -> Intel C++ |
||||
- make setup watcom -> Watcom C++ |
||||
- make setup lcc -> Win32-LCC |
||||
|
||||
|
||||
If you want to build FreeType 2 in another directory, you must set |
||||
two environment variables, `OJB_DIR' and `TOP_DIR'. The former |
||||
gives the directory where the object files and the library should be |
||||
created (this directory must exist), the latter the top directory of |
||||
the FreeType 2 source tree. Example: |
||||
|
||||
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ |
||||
make -f$TOP_DIR/Makefile setup ansi |
||||
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ |
||||
make -f$TOP_DIR/Makefile |
||||
|
||||
On Unix boxes, calling `configure' from the build directory is |
||||
sufficient; it will build a small Makefile which calls the |
||||
FreeType 2 Makefile with the necessary parameters. |
||||
|
||||
|
||||
--- end of INSTALL -- |
@ -0,0 +1,23 @@ |
||||
How to enable the TrueType native hinter if you need it |
||||
-------------------------------------------------------- |
||||
|
||||
The TrueType bytecode interpreter is disabled in all public |
||||
releases of the FreeType packages for patents reasons (see |
||||
http://www.freetype.org/patents.html for more details). |
||||
|
||||
However, many Linux distributions do enable the interpreter in the |
||||
FreeType packages (DEB/RPM/etc.) they produce for their platforms. |
||||
If you are using TrueType fonts on your system, you most probably |
||||
want to enable it manually by doing the following: |
||||
|
||||
- open the file "include/freetype/config/ftoption.h" |
||||
|
||||
- locate a line that says: |
||||
|
||||
#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER |
||||
|
||||
- change it to: |
||||
|
||||
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER |
||||
|
||||
of course, this must be done _before_ compiling the library |
@ -0,0 +1,124 @@ |
||||
|
||||
SPECIAL NOTE FOR UNIX USERS |
||||
=========================== |
||||
|
||||
If you are installing this release of FreeType on a system that |
||||
already uses release 2.0.5 (or even an older version), you have to |
||||
perform a few special steps to ensure that everything goes well. |
||||
|
||||
|
||||
I. Enable the TrueType bytecode hinter if you need it |
||||
----------------------------------------------------- |
||||
|
||||
See the instructions in the file "TRUETYPE" of this directory. |
||||
|
||||
Note that FreeType supports TrueType fonts without the bytecode |
||||
interpreter through its auto-hinter, which now generate relatively good |
||||
results with most fonts. |
||||
|
||||
|
||||
II. Determine the correct installation path |
||||
-------------------------------------------- |
||||
|
||||
By default, the source package will install the library in |
||||
"/usr/local". However, many Unix distributions now install the |
||||
library in "/usr", since FreeType is becoming a critical system |
||||
component. |
||||
|
||||
If FreeType is already installed on your system, type |
||||
|
||||
freetype-config --prefix |
||||
|
||||
on the command line. This should return the installation path to |
||||
use below (e.g. "/usr" or "/usr/local"). Otherwise, simply use |
||||
"/usr" (or what you think is adequate for your installation). |
||||
|
||||
|
||||
|
||||
III. Ensure that you are using GNU Make |
||||
--------------------------------------- |
||||
|
||||
The FreeType build system _exclusively_ works with GNU Make. You |
||||
will not be able to compile the library with the instructions |
||||
below using any other alternative (including BSD Make). |
||||
|
||||
Trying to compile the library with a different Make tool will |
||||
print a message like: |
||||
|
||||
Sorry, GNU make is required to build FreeType2. |
||||
|
||||
and the build process will be aborted. If this happens, install |
||||
GNU Make on your system, and use the GNUMAKE environment variable |
||||
to name it. |
||||
|
||||
|
||||
|
||||
IV. Build and install the library |
||||
--------------------------------- |
||||
|
||||
The following should work on all Unix systems where the `make' |
||||
command invokes GNU Make: |
||||
|
||||
./configure --prefix=<yourprefix> |
||||
make |
||||
make install (as root) |
||||
|
||||
where "<yourprefix>" must be replaced by the prefix returned by |
||||
the "freetype-config" command. |
||||
|
||||
When using a different command to invoke GNU Make, use the GNUMAKE |
||||
variable. For example, if `gmake' is the command to use on your |
||||
system, do something like: |
||||
|
||||
GNUMAKE=gmake ./configure --prefix=<yourprefix> |
||||
gmake |
||||
gmake install (as root) |
||||
|
||||
If this still doesn't work, read the detailed compilation |
||||
procedure available in the file "docs/BUILD" for troubleshooting. |
||||
|
||||
|
||||
V. Take care of XFree86 version 4 |
||||
--------------------------------- |
||||
|
||||
Certain recent Linux distributions will install _several_ versions |
||||
of FreeType on your system. For example, on a fresh Mandrake 8.1 |
||||
system, you can find the following files: |
||||
|
||||
/usr/lib/libfreetype.so which links to |
||||
/usr/lib/libfreetype.6.1.0.so |
||||
|
||||
and |
||||
|
||||
/usr/X11R6/lib/libfreetype.so which links to |
||||
/usr/X11R6/lib/libfreetype.6.0.so |
||||
|
||||
Note that these files correspond to two distinct versions of the |
||||
library! It seems that this surprising issue is due to the |
||||
install scripts of recent XFree86 servers (from 4.1.0) which |
||||
irremediably install their own (dated) version of the library in |
||||
"/usr/X11R6/lib". |
||||
|
||||
In certain _rare_ cases you may experience minor problems if you |
||||
install this release of the library in "/usr" only, namely, that |
||||
certain applications will not benefit from the bug fixes and |
||||
rendering improvements you'd expect. |
||||
|
||||
There are two good ways to deal with this situation: |
||||
|
||||
- Install the library _twice_, in "/usr" and in "/usr/X11R6" |
||||
(you have to do that each time you install a new FreeType |
||||
release though). |
||||
|
||||
- Change the link in /usr/X11R6/lib/libfreetype.so to point to |
||||
|
||||
/usr/lib/libfreetype.so, |
||||
|
||||
and get rid of |
||||
|
||||
/usr/X11R6/lib/libfreetype.6.0.so |
||||
|
||||
The FreeType Team is not responsible for this problem, so please |
||||
contact either the XFree86 development team or your Linux |
||||
distributor to help clear this issue in case the information given |
||||
here doesn't help. |
@ -1,11 +1,28 @@ |
||||
|
||||
FreeType comes with two licenses from which you can choose the one which |
||||
fits your needs best: |
||||
The FreeType 2 font engine is copyrighted work, and cannot be |
||||
used legally without a software license. In order to make this |
||||
project usable to a vast majority of developers, we distribute it |
||||
under two dual licenses. |
||||
|
||||
. The FreeType License, in file `docs/FTL.txt'. |
||||
What this means is that *you* must choose *one* license among those |
||||
described below, then obey all its terms and conditions when using |
||||
FreeType 2 in any of your projects or products: |
||||
|
||||
. The GNU General Public License, in file `docs/GPL.txt'. |
||||
|
||||
The contributed PCF driver comes with a license similar to that of X Window |
||||
System which is compatible to the above two licenses (see file |
||||
src/pcf/readme). |
||||
- The FreeType License, found in the file "FTL.TXT", which is |
||||
an BSD-style open-source license *with* an advertising |
||||
clause that forces you to explicitely cite the |
||||
FreeType project in your product's documentation. All |
||||
details are in the license file |
||||
|
||||
|
||||
- The GNU General Public License, found in "GPL.TXT", which is |
||||
the traditionnal and "viral" GPL license, that |
||||
forces you to redistribute the _complete_ sources of all |
||||
your products that simply use FreeType 2. |
||||
|
||||
|
||||
Note that the contributed PCF driver comes with a license similar to |
||||
that of X Window System which is compatible to the above two |
||||
licenses (see file src/pcf/readme). |
||||
|
||||
|
Loading…
Reference in new issue