Commit Graph

1360 Commits

Author SHA1 Message Date
Werner Lemberg
a4d6a1c8d1 Move creation of field `buildchar' of T1_DecoderRec out of
`t1_decoder_init' and let the caller of `t1_decoder_init' take care
of it.

Call the finisher for T1_Decoder in `cid_face_compute_max_advance'
and `T1_Compute_Max_Advance'.

* freetype2/include/freetype/internal/psaux.h (T1_DecoderRec):
Remove field `face', add `len_buildchar'.

* freetype2/include/freetype/internal/t1types.h (T1_FaceRec): Add
field `buildchar'.

* freetype2/src/cid/cidgload.c (cid_face_compute_max_advance): Call
finisher for T1_Decoder.
(cid_slot_load_glyph): Do not ignore failure when initializing the
T1_Decoder.

* freetype2/src/psaux/t1decode.c (t1_decoder_parse_charstrings):
Updated.
(t1_decoder_init): Remove initialization of fields `buildchar' and
`len_buildchar'.
(t1_decoder_done): Remove deallocation of field `buildchar'.

* freetype/src/type1/t1gload.c (T1_Compute_Max_Advance): Initialize
T1_Decoder's `buildchar' and `len_buildchar'; call finisher for
T1_Decoder.
(T1_Load_Glyph): Initialize T1_Decoder's `buildchar' and
`len_buildchar'; make sure to call finisher for T1_Decoder even in
case of error.

* freetype2/src/type1/t1load.c (T1_Open_Face): Allocate new field
`buildchar' of T1_FaceRec.

* freetype2/src/type1/t1objs.c (T1_Face_Done): Free new field
`buildchar' of T1_FaceRec.
2006-07-19 09:54:56 +00:00
Werner Lemberg
1a380e02d1 * freetype2/include/freetype/internal/psaux.h: New macros
IS_PS_NEWLINE, IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT,
IS_PS_XDIGIT, and IS_PS_BASE85 (from freetype2/src/psaux/psconv.h).
(T1_FieldLocation): Add T1_FIELD_LOCATION_LOADER,
T1_FIELD_LOCATION_FACE, and T1_FIELD_LOCATION_BLEND.
(T1_DecoderRec): New fields `buildchar' and `face'.
(IS_PS_TOKEN): New macro.

* freetype2/include/freetype/internal/t1types.h (T1_FaceRec): New
fields `ndv_idx', `cdv_idx', and `len_buildchar'.

* freetype2/include/freetype/t1tables.h (PS_BlendRec): New fields
`default_design_vector' and `num_default_design_vector'.

* freetype2/src/psaux/psconv.h: Move macros IS_PS_NEWLINE,
IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT,
and IS_PS_BASE85 to freetype2/include/freetype/internal/psaux.h.

* freetype2/src/psaux/psobjs.c (ps_parser_to_token_array): Allow
`token' argument to be NULL if we want only to count the number of
tokens.
(ps_tocoordarray): Allow `coords' argument to be NULL if we just
want to skip the array.
(ps_tofixedarray): Allow `values' argument to be NULL if we just
want to skip the array.

* freetype2/src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add
support for (partially commented out) othersubrs 19-25, 27, and 28.
(t1_decoder_init): Initialize new fields `face' and `buildchar'.
(t1_decoder_done): Release new field `buildchar'.

* freetype2/src/type1/t1load.c (parse_buildchar, parse_private): New
functions.
(t1_keywords): Register them.
(t1_allocate_blend): Updated.
(t1_load_keyword): Handle field types T1_FIELD_LOCATION_LOADER,
T1_FIELD_LOCATION_FACE and T1_FIELD_LOCATION_BLEND.
(parse_dict): Remove `keyword_flags' argument.
Use new macro IS_PS_TOKEN.
Changed function so that later PostScript definitions override
earlier ones.
(t1_init_loader): Initialize new field `keywords_encountered'.
(T1_Open_Face): Initialize new fields `ndv_idx', `cdv_idx', and
`len_buildchar'.
Remove `keywords_flags'.

* freetype2/src/type1/t1load.h (T1_LoaderRect): New field
`keywords_encountered'.
(T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros.

* freetype2/src/type1/t1tokens.h [!T1_CONFIG_OPTION_NO_MM_SUPPORT]:
New entries for parsing /NDV, /CDV, and /DesignVector.
2006-07-14 18:28:08 +00:00
Werner Lemberg
4af3c4d7ee Add many checks to protect against malformed PCF files.
* src/pcf/pcfdrivr.c (PCF_Face_Done): Protect against NULL pointers.
(PCF_Face_Init): Add calls to PCF_Face_Done in case of errors.

* src/pcf/pcfread.c (pcf_read_TOC): Protect against malformed table
data and check that tables don't overlap (using a simple
bubblesort).
(PCF_METRIC_SIZE, PCF_COMPRESSED_METRIC_SIZE, PCF_PROPERTY_SIZE):
New macros which give the size of data structures in the data
stream.
(pcf_get_properties): Use rough estimates to get array size limits.
Assign `face->nprops' and `face->properties' earlier so that a call
to PCF_Face_Done can do the clean-up in case of error.
Protect against invalid string offsets.
(pcf_get_metrics): Clean up code.
Adjust tracing message levels.
Use rough estimate to get array size limit.
(pcf_get_bitmaps): Clean up code.
Adjust tracing message levels.
Use rough estimates to get offset limits.
(pcf_get_encodings): Adjust tracing message level.
(pcf_get_accel): Clean up code.
2006-07-08 21:31:24 +00:00
Werner Lemberg
8eb05255fb * src/bdf/bdfdrivr.c (BDF_Face_Init): Handle fonts correctly which
don't have a POINT_SIZE property.  This fixes Savannah bug #16914.
2006-06-27 06:20:01 +00:00
Werner Lemberg
24703f8b39 * src/psaux/t1decode.c (T1_Operator, t1_args_count): Add opcode 15.
(t1_decoder_parse_charstrings): Operator with
opcode 15 pops its two arguments.
Handle the case where the pops of an othersubr may be part of a
subroutine.
Handle unknown othersubrs gracefully: count their operands and let
the following pop operators push the operands as the results onto
the Type1 stack.
Improve handling of setcurrentpoint opcode.
2006-06-26 19:12:51 +00:00
Werner Lemberg
c011f4cba1 The Type 1 parser now skips over top-level procedures as required
for a `Simplified Parser'.  This makes the parser more robust as it
doesn't poke around in PostScript code.  Additionally, it makes the
FontDirectory hackery in src/type1/t1load.c unnecessary.

* src/psaux/psobjs.c (IS_OCTAL_DIGIT): New macro.
(skip_literal_string): Add FT_Error as return value.
Handle escapes better.
(skip_string): Add FT_Error as return value.
Don't set `parser->error' but return error code directly.
(skip_procedure): New function.
(ps_parser_skip_PS_token): Handle procedures.
Update code.
(ps_parser_to_token): Update code.
(ps_parser_load_field_table): Handle bbox entries also.

* src/type1/t1load.c (parse_dict): Remove FontDirectory hackery.
Add commented-out code for synthetic fonts.
2006-06-26 09:40:00 +00:00
Werner Lemberg
a2da05c2c5 Fix two hinting bugs as reported in
http://lists.nongnu.org/archive/html/freetype-devel/2006-06/msg00057.html.

* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
`first_point' member.

* src/truetype/ttgload.c (tt_prepare_zone): Initialize
`first_point'.
(TT_Process_Composite_Glyph): Always untouch points.

* src/truetype/ttinterp.c (Ins_SHC): Fix computation of
`first_point' and `last_point' in case of composite glyphs.
(Ins_IUP): Fix computation of `end_point'.
2006-06-25 06:27:27 +00:00
Werner Lemberg
ef3d2c2347 formatting, copyright years 2006-06-25 06:07:14 +00:00
Suzuki, Toshiya (鈴木俊哉)
523119761a * src/base/ftmac.c: Add byteorder workaround for Intel Mac 2006-06-22 02:34:27 +00:00
Werner Lemberg
67d2f3a740 Fix ChangeLog. 2006-06-16 06:50:36 +00:00
Suzuki, Toshiya (鈴木俊哉)
817831f435 src/base/ftgxval.c, src/base/ftotval.c: return FT_Err_Unimplemented_Feature when validation service is unavailable 2006-06-15 09:05:41 +00:00
Werner Lemberg
b10e45a7fb * src/bdf/bdflib.c (bdf_load_font): Fix memory leaks in case of
errors.
2006-06-08 07:32:56 +00:00
Werner Lemberg
7d48cb06b4 formatting 2006-06-08 06:00:08 +00:00
David Turner
5f1f75076c Fix memory leak described in Savannah bug #16768
* src/type1/t1afm.c (T1_Read_Metrics): fix memory leak
  which happened when the metrics file doesn't have kerning
  pairs.
2006-06-07 05:11:50 +00:00
Werner Lemberg
4836f955f3 formatting 2006-06-06 12:54:08 +00:00
David Turner
457b4a81a1 * include/freetype/internal/services/svpscmap.h, src/cff/cffcmap.c,
src/psaux/t1cmap.c, src/psnames/psmodule.c: Fix for the memory
        leak described in bug #16759.

        We change 'ps_unicodes_init' so that it also takes a 'free_glyph_name'
        callback to release the glyph names returned by 'get_glyph_name'
2006-06-06 08:14:14 +00:00
Werner Lemberg
d724f20e05 formatting 2006-06-04 15:17:41 +00:00
David Turner
ea4547ca03 * src/base/ftutil.c (ft_mem_qrealloc): fix the function
to accept 'item_size == 0' as well, though this sounds
  weird, it can theorically happen.

  see bug #16669
2006-06-04 14:50:57 +00:00
David Turner
0971735dce * src/pfr/pfrobjs.c (pfr_face_init): fix the computation
of 'face->num_glyphs' which missed the last glyph, due to
  the offset-by-1 computation, since the PFR format doesn't
  guarantee that glyph index 0 corresponds to the "missing
  glyph"

  should fix bug #16668
2006-06-04 14:33:08 +00:00
Werner Lemberg
33779660ba * builds/unix/unix-cc.in (LINK_LIBRARY): Don't comment out
`-no-undefined'.  Reported by Christian Biesinger.
2006-05-26 06:30:05 +00:00
Werner Lemberg
24773d6dc6 * builds/win32/visualc/freetype.dsp: Release libraries no longer
have debug information, and debug libraries use `C7 compatible'
debug info.
2006-05-20 08:53:13 +00:00
Werner Lemberg
a6523a6719 Fix ChangeLog. 2006-05-20 08:47:01 +00:00
Suzuki, Toshiya (鈴木俊哉)
de0a96c5dd * fix 2 memory leaks in MacOS resource fork handler, Savannah bug #16631 2006-05-19 23:16:12 +00:00
Suzuki, Toshiya (鈴木俊哉)
8cfa8bd51a * remove Carbon dependency of Darwin, if configured with no option 2006-05-19 22:11:50 +00:00
Suzuki, Toshiya (鈴木俊哉)
4720060553 fix the 2nd part of Savannah bug #16590 2006-05-19 10:48:42 +00:00
Werner Lemberg
545c4e566e * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
[FT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Make it compilable again.


Formatting, documentation fixes.
2006-05-17 22:55:04 +00:00
David Turner
281679de85 * include/freetype/internal/tttypes.h, src/autofit/afangles.c,
src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c,
        src/autofit/aftypes.h, src/base/ftcalc.c, src/base/ftoutln.c,
        src/gzip/ftgzip.c, src/psaux/psconv.c, src/truetype/ttgload.c,
        src/type1/t1gload.c:

          this is a major patch used to drastically improve the performance
          of loading glyphs. This both speeds up loading the glypn vector
          themselves and the auto-fitter.

          note that we've started using inline assembler with GCC to
          implement FT_MulFix, given that this function is so damn
          important for the engine's performance.

          the resulting speed-up is about 25%.
2006-05-17 13:34:21 +00:00
David Turner
dc3ff31c3f * src/ftccmap.c (FTC_CMapCache_Lookup): changed the threshold
used to detect rogue clients from 4 to 16. This is to prevent
        some segmentation faults with fonts like KozMinProVI-Regular.otf
        which comes from the Japanese Adobe Reader Asian Font pack.
2006-05-17 12:59:35 +00:00
Werner Lemberg
de2d90af6e * src/cff/cffload.c (cff_font_done): Deallocate subfont array. This
fixes the first part of Savannah bug #16590.


* docs/PROBLEMS: Updated icl issues.
2006-05-17 08:54:30 +00:00
Werner Lemberg
8ab412d48d Version 2.2.1 released. 2006-05-12 15:09:02 +00:00
Werner Lemberg
6e467a654d * src/tools/docmaker/tohtml.py (block_footer): Split into...
(block_footer_start, block_footer_middle, block_footer_end): This to
add navigation buttons.
(HtmlFormatter::block_exit): Updated.
2006-05-12 15:05:45 +00:00
Werner Lemberg
e12a471f6a * src/tools/docmaker/tohtml.py (html_header_1): Use `utf-8' charset.
Convert some files to UTF-8.
2006-05-12 14:20:43 +00:00
Werner Lemberg
6756dc15ba * src/tools/docmaker/sources.py (re_source_keywords): Add word
boundary markers.
* src/tools/docmaker/content.py (re_field): Allow `.' in field names
(but not at the beginning or end).

* include/freetype/*: Many minor documentation improvements (adding
links, spelling errors, etc.).
2006-05-12 08:00:13 +00:00
Werner Lemberg
fd74ec68b4 * README: Minor updates.
* include/freetype/*: s/scale/scaling value/ where appropriate.
Many other minor documentation improvements.

* src/tools/docmaker/sources.py (re_italic, re_bold): Handle
trailing punctuation.
* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): Add
warning message for undefined cross references.
Update handling of re_italic and re_bold.
2006-05-12 04:00:44 +00:00
Yamato, Masatake (大和正武)
28b55a9bb6 (FT_Stream_Open): Check errno only if read system call returns -1.
Remove a redundant parenthesis.
2006-05-11 03:01:42 +00:00
Werner Lemberg
e0d1559591 * builds/freetype.mk (refdoc): Write-protect the `docmaker'
directory to suppress generation of .pyc files.  According to the
Python docs there isn't a more elegant solution (currently).

* builds/toplevel.mk (dist): New target which builds .tar.gz,
.tar.bz2, and .zip files.  Note that the version number is still
hard-coded.
(do-dist): Sub-target of `dist'.
(CONFIG_GUESS, CONFIG_SUB): New variables.
(.PHONY): Updated.
2006-05-10 13:44:47 +00:00
Werner Lemberg
b80d85fe9e * builds/unix/ftsystem.c (FT_Stream_Open): Avoid infinite loop if
given an empty, un-mmap()able file.  Reported and suggested fix in
Savannah bug #16555.
2006-05-10 04:47:35 +00:00
Werner Lemberg
a127ca42ca * builds/win32/visualc/freetype.sln,
builds/win32/visualc/freetype.vcproj: Upgraded to VS.NET 2005 from
VS.NET 2003
Added files ftbbox.c, fttype1.c, ftwinfnt.c, ftsynth.c.

* builds/win32/visualc/index.html: Updated.
2006-05-09 13:41:50 +00:00
Werner Lemberg
4df5b26fdf Put version information into the configure script. Reported by Paul
Watson <pwatson@redlinepy.com>.

* builds/unix/configure.ac: Renamed to...
* builds/unix/configure.raw: This which now serves (with appropriate
modifications) as a template for configure.ac.

* version.sed: New script.

* autogen.sh: Generate configure.ac from configure.raw, using
FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH from freetype.h.
2006-05-08 07:10:29 +00:00
Werner Lemberg
1639c79482 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
* builds/unix/configure.ac (version_info): Set to 9:10:3.

* builds/win32/visualc/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj, builds/freetype.mk (refdoc),
Jamfile (RefDoc), README: s/220/221/, s/2.2.0/2.2.1/.
Minor updates.

* docs/CHANGES, docs/VERSION.DLL, docs/PROBLEMS, README.CVS:
Updated.

* builds/unix/install-sh: Updated from `texinfo' CVS module at
savannah.gnu.org.

* devel/ftoption.h: Synchronize with
include/freetype/config/ftoption.h.
2006-05-06 16:44:58 +00:00
Werner Lemberg
4f3b5bbd95 * src/lzw/ftlzw2.c: Renamed to...
* src/lzw/ftlzw.c: This.

* src/lzw/Jamfile, src/lzw/rules.mk: Updated.

* builds/mac/FreeType.m68k_cfm.make.txt,
builds/mac/FreeType.m68k_far.make.txt,
builds/mac/FreeType.ppc_carbon.make.txt,
builds/mac/FreeType.ppc_classic.make.txt: Updated.
2006-05-04 07:13:05 +00:00
Werner Lemberg
a94746caee Formatting. 2006-05-03 20:39:55 +00:00
David Turner
679a252c24 * include/freetype/internal/ftmemory.h: allow compilation with
C++ compilers
2006-05-03 09:40:33 +00:00
Werner Lemberg
58eed04d5a * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Removed. 2006-05-02 22:26:09 +00:00
Werner Lemberg
94204895db Fix ChangeLog. 2006-05-02 22:24:06 +00:00
Werner Lemberg
c6afa1221a * include/freetype/internal/ftmemory.h: s/new/newsz/ (for C++).
(FT_ALLOC): Remove redundant redefinition.

* builds/compiler/gcc-dev.mk (CFLAGS) [g++]: Don't use
`-Wstrict-prototypes'.

* src/base/ftstream.c (FT_Stream_EnterFrame): Add cast.

Formatting, copyright years.
2006-05-02 22:22:16 +00:00
David Turner
9482ba50b7 * include/freetype/ftstream.h, src/base/ftstream.c: modifying
various frame-related functions to report the place where the
    frames were entered/extracted/exited/released in the memory debugger.
2006-05-02 10:21:28 +00:00
David Turner
9ca782569c * include/freetype/internal/ftmemory.h, src/base/ftbitmap.c,
src/base/ftmac.c, src/base/ftrfork.c, src/lzw/ftzopen.c,
    src/raster/ftrend1.c, src/sfnt/ttpost.c, src/truetype/ttgxvar.c,
    src/type42/t42parse.c, src/winfonts/winfnt.c: hardening the code
    against out-of-bounds conditions when allocating arrays. This is
    for the cases where FT_NEW_ARRAY and FT_RENEW_ARRAY are not used
    already. Introducing the new FT_ALLOC_MULT and FT_REALLOC_MULT
    macros.
2006-05-02 09:00:29 +00:00
David Turner
264f307e66 * include/freetype/fterrdef.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c,
    src/base/ftutil.c: udpating the memory management functions and
    macros to safely deal with array size buffer overflows, this
    corresponds to attemps to allocate arrays that are too large. For
    an example, consider the following code:

         count = read_uint32_from_file();
         array = malloc( sizeof(Item) * count );
         for ( nn = 0; nn < count; nn++ )
           array[nn] = read_item_from_file();

    if 'count' is larger than FT_UINT_MAX/sizeof(Item), the multiplication
    will overflow and the array allocated will be smaller than the data
    read from the file. In this case, the heap will be trashed, and this
    can be used as a denial-of-service, or make the engine crash later.

    the FT_ARRAY_NEW and FT_ARRAY_RENEW macro now check that the new
    count is no more than FT_INT_MAX/item_size, otherwise, a new error,
    named 'FT_Err_Array_Too_Large' will be returned.

    note that the memory debugger now works again when FT_DEBUG_MEMORY
    is defined, and FT_STRICT_ALIASING has disappeared, the corresponding
    code being now the default.
2006-05-02 06:34:27 +00:00
Suzuki, Toshiya (鈴木俊哉)
a229540280 fix bug in Mac_Read_POST_Resource() 2006-04-30 04:46:17 +00:00