Commit Graph

92 Commits

Author SHA1 Message Date
Werner Lemberg
cc069beb2d cleanups 2000-12-08 16:17:16 +00:00
David Turner
19ed8afe60 - updated all source files to adhere to the new inclusion scheme
- the CFF loader now loads the encodings and charset tables
  though doesn't use them for now
2000-12-08 02:42:29 +00:00
David Turner
d3c8e064a5 - updating the header inclusion scheme to use <ft2build.h> by
default..

- created "builds/devel" to hold developer builds options
  for both Win32 and Unix

- fixed a bug in the winfonts driver, where the glyph image format
  wasn't set correctly..
2000-12-04 22:53:55 +00:00
David Turner
b1aabf4c5e - added support for the free command-line Borland C++ compiler
in the "builds" directory

- modified a few files because BCC32 didn't like certain comparisons
  (UInt compared with a UShort, apparently the UShort is promoted to
  an Int)

- updated the INSTALL file to include IDE compilation, prevent against
  BSD Make, and clarify the use of "make setup" (instead of "make")
  for build configuration
2000-11-30 23:48:22 +00:00
Werner Lemberg
f1ca234473 * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only
conditionally.

* src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set
`size->strike_index' only conditionally.

* src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only
conditionally.

* src/winfonts/winfnt.h: Move all type definitions to...
* src/include/freetype/internal/fnttypes.h: New file.
* src/winfonts/winfnt.c: Use it.


* include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT
with a direct solution (which also satifies picky compilers).
2000-11-29 15:18:54 +00:00
Werner Lemberg
34e52707f0 Formatting; removing tabs. 2000-11-13 16:58:01 +00:00
Tom Kacvinsky
200a1a41e3 In function TT_Load_Generic_Header, change tracing output to indicate
if a `bhed' or `head' table is being read.

In function TT_LookUp_Table, change tracing output to indicate success
or failure of table loading, and place output on one line.
2000-11-13 07:31:21 +00:00
Tom Kacvinsky
e0bd0c01d9 In function SFNT_Load_Face, set has_outline to true only if
the font has a `CFF ' or `glyf' table.
2000-11-13 07:26:31 +00:00
Werner Lemberg
90a0330142 All function comments are now removed from source files (and moved to the
header files if necessary).

Some minor fixes to have `make multi' run successfully (with gcc and g++).

Fixing compiler warnings.
2000-11-07 17:21:11 +00:00
Werner Lemberg
4b68007b4f Complementing David's changes with formatting, adding documentation, etc.
More `*'-convention formatting, adding the `a' resp. `an' prefix to
variables.
2000-11-07 06:30:29 +00:00
David Turner
f96594faf0 integrated Yamano-Uchi changes to the base source code. However,
I've made a few modifications:

  - there is no new field named "driver" in "FT_SizeRec"

  - the new fields in "TT_SizeRec" are:

       strike_index   :: value 0xFFFF means "no sbit strike selected"
       strike_metrics :: the FT_Size_Metrics structure corresponding to
                         the currently selected strike

  - the code in "ttload.c" has been somewhat cleaned up too

thanks a lot, Y-U !!

- David
2000-11-06 23:07:51 +00:00
Werner Lemberg
dc72aff43d Finishing David's latest changes (there were some errors in it). 2000-11-04 08:33:38 +00:00
David Turner
54e7574946 defining new types to hold "internal" fields of public
objects:

  FT_Face_Internal, FT_Size_Internal, FT_Slot_Internal

these contain some fields that may change between releases
of FreeType, without affecting the size of FT_FaceRec,
FT_SizeRec, FT_GlyphSlotRec, etc.., which means that
drivers wouldn't need to be recompiled if we only add new
fields to an internal structure..

I plan to hack a few things related to the auto-hinter and
I need this move to ensure that we will not break binary
compatibility between 2.0 and 2.1 :-)

- David
2000-11-04 02:52:02 +00:00
David Turner
76a5f62323 major reformatting of the sources:
FT_EXPORT_DEF    => FT_EXPORT
  FT_EXPORT_FUNC => FT_EXPORT_DEF
  BASE_DEF               => FT_BASE
  BASE_FUNC            => FT_BASE_DEF
  LOCAL_DEF             => FT_LOCAL
  LOCAL_FUNC          => FT_LOCAL_DEF
  LOCAL_FUNC_X     => FT_CALLBACK_DEF
  LOCAL_DEF_X       => FT_CALLBACK_TABLE
  FT_CPLUSPLUS     => FT_CALLBACK_TABLE_DEF
2000-11-04 01:55:49 +00:00
Werner Lemberg
e4b32a5dc5 Removing trailing whitespace. 2000-10-31 20:42:18 +00:00
Werner Lemberg
ddbb8e7b6a Some formatting.
Fixed some data types/added header files to remove compiler warnings.

Added trivial input data check to FT_Outline_Get_BBox().

Fixed type1z -> type1 file inclusions.
2000-10-26 10:04:16 +00:00
Werner Lemberg
47a5f41de6 Added copyright messages to all Makefiles.
Added documentation to FT_Get_Sfnt_* stuff (in ftnames.[ch])

minor other doc fixes
2000-10-17 03:38:43 +00:00
Werner Lemberg
1a2908bbc0 Added support for (3,0) pid/eid. 2000-09-21 14:10:23 +00:00
Werner Lemberg
21a27ee3cb Fixed a long outstanding bug with an incorrect offset for reading post
tables.
2000-09-01 14:36:39 +00:00
Werner Lemberg
4a5c142a40 Minor fixes. 2000-08-29 18:37:25 +00:00
David Turner
5878a6d2ad a fix to the computation of the font "text height" (i.e. the
baseline-to-baseline distance).

Unfortunately, we cannot rely on the OS/2 fields, like
sTypoAscender or usWinAscent to compute it. Rather,
we only look at the horizontal header's content. In case
the "line gap" is set to 0, we compute the text height as
115% of the ascender+descender value..

(this percentage is based on the values found in many
Windows fonts).
2000-08-29 16:03:01 +00:00
David Turner
24d7024c44 added draft "psaux" code
the t1 driver now reads the complete font matrix

and applies it (some fonts do not work properly without
hinting though...)
2000-08-17 01:09:06 +00:00
Werner Lemberg
9a814fabbf Yamano-uchi added support for SFNT-wrapped CID bitmap font files (with
minor modifications from WL).
2000-08-06 19:48:47 +00:00
Werner Lemberg
29a90e2610 Updating unix/ftconfig.in to recent config/ftconfig.h changes.
More C++ fixes: Introducing LOCAL_FUNC_X for local functions used in
function pointers (there are no local anonymous functions in C++) and
FT_CPLUSPLUS (instead of FT_EXPORT_VAR) to define linkage of structures
which contain function pointers.
2000-08-03 00:03:08 +00:00
Werner Lemberg
3a89c2a4ac Removing FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT. It has never worked.
Instead, define BASE_DEF() and BASE_FUNC() similarly to FT_EXPORT_DEF() and
FT_EXPORT_FUNC(), respectively, allowing the programmer to define proper
types and/or export lists for multiple DLLs if necessary (e.g. ftbase.dll --
standalone, fttype1.dll -- needs ftbase.dll, etc.).

The library is finally compiling and linking natively with a C++ compiler!
2000-08-01 17:05:20 +00:00
Werner Lemberg
c713d924d8 Added #ifdef's for C++ to all header files. 2000-08-01 13:17:04 +00:00
Werner Lemberg
b1dd3535d5 Added autoconf tests FT_MUNMAP_DECL and FT_MUNMAP_PARAM to fix some devils.
Updating unix/ftsystem.c accordingly.

More warning fixes.
2000-07-31 22:51:00 +00:00
Werner Lemberg
e72c9fec17 Simplifying the FIELD_* and FRAME_* macros. Before calling these macros,
you should #define FT_STRUCTURE to the structure which will be filled.

Replaced FT_FIELD_REF with FT_FIELD_SIZE, FT_FIELD_SIZE_DELTA, and
FT_FIELD_OFFSET to make the code more readable; additionally, it should be
more portable because we no longer cast a pointer to an FT_UShort (which
e.g. fails with Sun's C++ compiler) but computes the difference between two
pointers which is guaranteed to work.

Fixing warnings (and C++ errors) while using Sun's latest cc and CC
incarnations.  Most of them are related to variable shadowing.
2000-07-31 18:59:02 +00:00
Werner Lemberg
d060a75b0d Formatting.
Rudimentary support for autoconf (still using GNU make)

Say `make unix'.
2000-07-20 06:57:41 +00:00
David Turner
6930b45f78 - introduced FT_Get_Glyph_Name (see freetype.h)
to access individual glyph names. Changed some
  drivers to support it through a new interface named
  "glyph_name".

- introduced FT_Get_Sfnt_Name (see ftnames.h)
  to access the SFNT name table in a TrueType/OpenType
  file..
2000-07-19 17:13:03 +00:00
Werner Lemberg
e1bbc017ce Formatting.
Fixing documentation.
2000-07-19 06:25:56 +00:00
Werner Lemberg
c8f9cf37d3 Formatting. 2000-07-19 02:59:31 +00:00
David Turner
49bd4f054a removed some warnings with Visual C++
that prevented compilation
2000-07-12 16:57:37 +00:00
Werner Lemberg
7fa51b5535 Formatting.
Adding some trivial error checking.

Adding/Fixing tracing levels.
2000-07-08 19:51:42 +00:00
David Turner
a90663f591 vast clean-up of the sources in order to allow flat
directory compilation (by defining the FT_FLAT_COMPILE
macro at compile time..)

moved "freetype2/BUILD" to "freetype2/docs/BUILD"
2000-07-08 00:41:13 +00:00
Werner Lemberg
bd5ae40006 Run g++ on the FreeType library. This should make the use of code in
C++ programs easier:

  Renamed FT_WordXX to FT_UIntXX.

  Changed a lot of void* to FT_Byte* if related to i/o streams -- FreeType
  always accesses streams byte-wise, so this makes sense IMHO.

  Added a lot of #ifdef __cplusplus to header files (and removed a few).

  Other minor syntax fixes (mostly casts).

  Replaced the variable `private' with `private_dict' -- `private' is
  reserved in C++.
2000-07-05 04:32:02 +00:00
David Turner
c6a92202c2 various clean-ups:
- using FT_UNUSED instead of UNUSED
- using FT_LONG64 and FT_INT64 instead of LONG64 & INT64
- using FT_SIZEOF_INT & FT_SIZEOF_LONG instead of...

- removed the #ifdefs that used SIZEOF_INT, instead we now
  use FT_Int32 and FT_UInt32 when needed to support
  32-bits quantity correctly on 64-bits systems..
2000-07-04 18:12:13 +00:00
Werner Lemberg
aa8c7da0bf Don't use -lefence in the demo Makefile.
Added C++ guards in ftmodule.h

Fix error check in ftglyph.c

Formatting; adding copyrights; fixing documentation
2000-07-04 03:37:18 +00:00
David Turner
d18388e44b fixed a few 64-bit related bugs in "sfnt/ttload.c" and
"base/ftstream.c"

Note that "TT_PCLT" was incorrectly defined in
<freetype/tttables.h>
2000-07-03 15:00:49 +00:00
Werner Lemberg
fbeb41d93d Formatting.
Adding copyright notices.

Removing an unnecessary file (smooth.h).
2000-07-02 00:27:53 +00:00
Werner Lemberg
a8bbc267a2 Formatting as usual...
Adding trivial argument checking to some functions.

Added dynamic driver interface to cidriver.

Minor `version' fixes for macfont and psnames modules.

Removed unnecessary files
2000-07-01 14:06:46 +00:00
Werner Lemberg
cc9fc49c90 Formatting...
Applying some fixes from Tom.
2000-06-30 06:21:26 +00:00
David Turner
32b85e67cb various bug fixes in the postscript font drivers (mainly they
added one un-necessary point to each contour..)
2000-06-29 21:48:58 +00:00
Werner Lemberg
deb4e98396 Formatting...
Preprocessor lines now always start the line.

Improved error handling in `base' module.

Fixed a out-of-bounds error in ttgload.
2000-06-29 03:14:25 +00:00
David Turner
9d636b6d14 various cleanups to reduce compiler warnings
+ support for CID-keyed fonts in the CFF driver
(still some unexpected bugs though..)
2000-06-27 23:32:27 +00:00
Werner Lemberg
a929ba9b20 applying formatting again 2000-06-25 06:47:11 +00:00
David Turner
f0df85ba2a - MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
    source in order to provide the following enhancements:

      - more generic module support:

        The FT_Module type is now defined to represent a handle to a given
        module. The file <freetype/ftmodule.h> contains the FT_Module_Class
        definition, as well as the module-loading public API

        The FT_Driver type is still defined, and still represents a pointer
        to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
        FT_Get_Driver by FT_Get_Module, etc..


      - support for generic glyph image types:

        The FT_Renderer type is a pointer to a module used to perform various
        operations on glyph image.

        Each renderer is capable of handling images in a single format
        (e.g. ft_glyph_format_outline). Its functions are used to:

           - transform an glyph image
           - render a glyph image into a bitmap
           - return the control box (dimensions) of a given glyph image


        The scan converters "ftraster.c" and "ftgrays.c" have been moved
        to the new directory "src/renderer", and are used to provide two
        default renderer modules.

        One corresponds to the "standard" scan-converter, the other to the
        "smooth" one.

        The current renderer can be set through the new function
        FT_Set_Renderer.

        The old raster-related function FT_Set_Raster, FT_Get_Raster and
        FT_Set_Raster_Mode have now disappeared, in favor of the new:

           FT_Get_Renderer
           FT_Set_Renderer

        see the file <freetype/ftrender.h> for more details..

        These changes were necessary to properly support different scalable
        formats in the future, like bi-color glyphs, etc..


      - glyph loader object:

        A new internal object, called a 'glyph loader' has been introduced
        in the base layer. It is used by all scalable format font drivers
        to load glyphs and composites.

        This object has been created to reduce the code size of each driver,
        as each one of them basically re-implemented its functionality.

        See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
        more information..



      - FT_GlyphSlot had new fields:

        In order to support extended features (see below), the FT_GlyphSlot
        structure has a few new fields:

           linearHoriAdvance:  this field gives the linearly scaled (i.e.
                               scaled but unhinted) advance width for the glyph,
                               expressed as a 16.16 fixed pixel value. This
                               is useful to perform WYSIWYG text.

           linearVertAdvance:  this field gives the linearly scaled advance
                               height for the glyph (relevant in vertical glyph
                               layouts only). This is useful to perform
                               WYSIWYG text.

        Note that the two above field replace the removed "metrics2" field
        in the glyph slot.

           advance:   this field is a vector that gives the transformed
                      advance for the glyph. By default, it corresponds
                      to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
                      was specified when calling FT_Load_Glyph or FT_Load_Char

           bitmap_left: this field gives the distance in integer pixels from
                        the current pen position to the left-most pixel of
                        a glyph image WHEN IT IS A BITMAP. It is only valid
                        when the "format" field is set to
                        "ft_glyph_format_bitmap", for example, after calling
                        the new function FT_Render_Glyph.

           bitmap_top:  this field gives the distance in integer pixels from
                        the current pen position (located on the baseline) to
                        the top-most pixel of the glyph image WHEN IT IS A
                        BITMAP. Positive values correspond to upwards Y.

           loader:  this is a new private field for the glyph slot. Client
                    applications should not touch it..


      - support for transforms and direct rendering in FT_Load_Glyph:

        Most of the functionality found in <freetype/ftglyph.h> has been
        moved to the core library. Hence, the following:

          - a transform can be specified for a face through FT_Set_Transform.
            this transform is applied by FT_Load_Glyph to scalable glyph images
            (i.e. NOT TO BITMAPS) before the function returns, unless the
            bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..


          - once a glyph image has been loaded, it can be directly converted to
            a bitmap by using the new FT_Render_Glyph function. Note that this
            function takes the glyph image from the glyph slot, and converts
            it to a bitmap whose properties are returned in "face.glyph.bitmap",
            "face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
            native image might be lost after the conversion.


          - when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
            and FT_Load_Char functions will call FT_Render_Glyph automatically
            when needed.
2000-06-22 00:17:42 +00:00
Werner Lemberg
9ca2af3838 A new formatting orgy.
Added some `#if 0' to completely disable the CID AFM stuff.  In case this is
not correct please fix.
2000-06-21 03:03:28 +00:00
David Turner
f9b8dec437 major reformatting of the modules source code in order to get
rid of most of the basic types redefinitions (i.e. FT_Int instead
of "FT_Int", etc..)

The format-specific prefixs like "TT_", "T1_", "T2_" & 'CID_"
are now only used in relevant structures..

fixed Werner's fix to t2gload.c :-)
other small bug fixes
2000-06-16 19:34:52 +00:00
Werner Lemberg
7a4fda8821 The next round of formatting, checking documentation, etc. 2000-06-13 23:21:00 +00:00