Commit Graph

2674 Commits

Author SHA1 Message Date
Alexei Podtelezhnikov
cea9d7a682 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
* docs/CHANGES: Updated.
2012-06-15 06:33:46 +02:00
suzuki toshiya
a03cb019aa * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
to pass special compiler/linker flags under cross development.
Suggested by Savannah bug #36367.

ChangeLog on 2010-07-15 saying as they were removed was wrong
for the official trunk of FreeType2.  This commit is the first
introduction of them.
2012-06-14 17:56:01 +09:00
Werner Lemberg
2d67e9b555 * docs/CHANGES: Updated. 2012-06-14 08:46:04 +02:00
suzuki toshiya
6c7c3de197 [truetype] Add new versions of NEC FA family to tricky font list.
NEC FA family dated in 1996 have different checksum.
Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see

  http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html

* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
FA-RoundedGothicM, FA-RoundedGothicB are added.  The family
names in sample PDF are truncated, thus the list of the
family names in tt_check_trickyness_family() is not updated yet.
2012-06-14 01:38:20 +09:00
Werner Lemberg
495bd3cc4f [ftraster] Fix rounding issue causing visual artifacts.
Problem reported by jola <hans-jochen.lau@lhsystems.com>; see

  http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html

* src/raster/ftraster.c (SMulDiv_No_Round): New macro.
(Line_Up): Use it.
* src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
2012-06-06 13:24:04 +02:00
Alexei Podtelezhnikov
2bdd094976 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
We now use the cross product of the direction vectors to compute the
outline's orientation.
2012-05-28 23:11:03 +02:00
Werner Lemberg
aa6895c176 * docs/CHANGES: Updated. 2012-05-28 22:55:54 +02:00
Alexei Podtelezhnikov
f875fc7117 New function FT_Outline_EmboldenXY.
* include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.

* src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
simplified embolding algorithm.
(FT_Outline_Embolden): Make it a special case of
`FT_Outline_EmboldenXY'
2012-05-28 22:34:58 +02:00
Werner Lemberg
8dc17bb47b [type1] Fix Savannah bug #36386.
* src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
not valid.
2012-05-07 11:24:48 +02:00
Werner Lemberg
9c6d1ac39c Remove compiler warning.
* src/truetype/ttgload.c (TT_Load_Glyph)
[!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
2012-04-07 06:39:25 +02:00
Werner Lemberg
8be32d2f4a [autofit] Properly copy scaler flags to script metrics object.
Without this patch, only the dummy and cjk autohinter modules get
them (since they copy the whole scaler object).

* src/autofit/aflatin.c (af_latin_metrics_scale),
src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
2012-03-28 12:21:50 +02:00
Alexei Podtelezhnikov
0c5789f9c2 [bdflib] Remove redundant macro.
* src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
is exactly the same.
2012-03-22 07:05:40 +01:00
suzuki toshiya
f0b194141d [configure] fix Savannah bug #35644.
* builds/unix/configure.raw: Check `-ansi' flag works even if gcc
is used.  Bionic libc headers for Android lose the consistency
when they are parsed with __STDC_VERSION__ older than 199901L or
__STRICT_ANSI__.
2012-03-21 15:42:14 +09:00
Werner Lemberg
37b5c92f83 [bdf] Improvement to Savannah bug #35656.
* src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
2012-03-20 07:23:12 +01:00
Werner Lemberg
b43e0f4413 [type1] Fix Savannah bug #35847.
* src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
we want to exit when we have run out of data.
2012-03-17 07:42:43 +01:00
Werner Lemberg
649c673a8f [bdf] Really fix 35658.
* src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
2012-03-16 21:12:41 +01:00
Werner Lemberg
ad05bac605 [sfnt] Make arrays static like all others.
* src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
fields.
2012-03-14 18:34:36 +01:00
Huw Davies
3650f80165 [sfnt] A refinement of the previous commit.
* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
tt_name_entry_ascii_from_other): Stop at null byte.
2012-03-14 18:29:57 +01:00
Huw Davies
bf06b62a09 [sfnt] Add `name' table compatibility to MS Windows.
* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
tt_name_entry_ascii_from_other): Don't replace `\0' with question
marks when converting strings.
2012-03-14 14:44:46 +01:00
Werner Lemberg
9a55cb7a71 Fix Savannah bug #35833.
Based on the patch given in the bug report.

* src/type1/t1load.c (IS_INCREMENTAL): New macro.
(read_binary_data): Add parameter `incremental'.
Update all callers using `IS_INCREMENTAL'.
2012-03-14 14:40:03 +01:00
Werner Lemberg
1036409692 [autofit] Return correct linear advance width values.
This was quite a subtle bug which accidentally showed up with glyph
`afii10023' of arial.ttf (version 2.76).  This glyph is a composite;
the first component, `E', has an advance width of 1366 font units,
while the advance width of the composite itself (which looks like
uppercase `E' with dieresis) is 1367 font units.  I think this is
actually a bug in the font itself, because there is no reason that
this glyph has not the same width as uppercase `E' without the
dieresis.  Anyway, it helped identify this problem.

Using the TrueType hinter, the correct value (1367) of `afii10023'
was returned, but the autohinter mysteriously returned 1366.

Digging in the code showed that the autohinter recursively calls
FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
flag.  However, the `linearHoriAdvance' field is still returned as a
scaled value.  To avoid scaling twice, the old code in autofit reset
`linearHoriAdvance', using the `horiAdvance' field.  This seemed to
work since FT_LOAD_NO_SCALE was in use, but it failed actually,
because `horiAdvance' is defined as the distance of the first
subglyph's phantom points, which in turn are initialized using the
advance width of the first subglyph.  And as the given example
shows, these widths can differ.

* src/autofit/afloader.c (af_loader_load_g): Temporarily set
FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
values for the linear advance widths.
2012-03-11 15:20:32 +01:00
Werner Lemberg
e1899bcf6f [truetype] Fix SSW instruction.
* src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units.  For
verification, it took some time to find a font which actually uses
this instruction.
2012-03-10 09:28:24 +01:00
Vinnie Falco
9e287894cd Prepare source code for amalgamation.
* include\freetype\freetype.h: Swap order of preprocessor blocks.
2012-03-10 07:31:58 +01:00
Werner Lemberg
50ed33e537 * Version 2.4.9 released.
=========================

Tag sources with `VER-2-4-9'.

* docs/CHANGES: Updated.

* docs/VERSION.DLL: Update documentation and bump version number to
2.4.9.

* README, Jamfile (RefDoc),
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj,
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
builds/win32/visualce/freetype.vcproj,
builds/win32/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.

* builds/unix/configure.raw (version_info): Set to 14:1:8.
2012-03-08 21:02:06 +01:00
Werner Lemberg
c4cad30ed1 [bdf] Add missing overflow check.
* src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
`glyph->bpr'.
2012-03-08 20:11:37 +01:00
Vinnie Falco
26dfeb6d63 Prepare source code for amalgamation.
* src\autofit\aferrors.h, src\bdf\bdferror.h, src\bzip2\ftbzip2.c,
src\cache\ftcerror.h, src\cff\cfferrs.h, src\cid\ciderrs.h,
src\gxvalid\gxverror.h, src\gzip\ftgzip.c, src\lzw\ftlzw.c,
src\otvalid\otverror.h, src\pcf\pcferror.h, src\pfr\pfrerror.h,
src\psaux\psauxerr.h, src\pshinter\pshnterr.h,
src\psnames\psnamerr.h, src\raster\rasterrs.h, src\sfnt\sferrors.h,
src\smooth\ftsmerrs.h, src\truetype\tterrors.h,
src\type1\t1errors.h, src\type42\t42error.h, src\winfonts\fnterrs.h:
Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
2012-03-08 06:04:03 +01:00
Werner Lemberg
8a2b444db1 Revert "[cff] One more check against malformed font matrix."
As Alexei points out, this test is completely nonsense.

This reverts commit 35bb214ae620400cd09a2cfaf3bacd66e179a1f6.
2012-03-04 08:35:03 +01:00
Werner Lemberg
35bb214ae6 [cff] One more check against malformed font matrix.
* src/cff/cffparse.c (cff_parse_font_matrix): Guard against `xx' and
`yy' matrix coefficients being zero.
2012-03-03 12:29:53 +01:00
Werner Lemberg
ba67957d5e Fix Savannah bug #35660.
For some divisions, we use casts to 32bit entities.  Always guard
against division by zero with these casts also.

* src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
(FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
(FT_DivFix): Add 32bit cast (this omission triggered the bug).
2012-03-03 12:27:18 +01:00
Werner Lemberg
ceed93e328 [psaux] Fix handling of track kerning.
* src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
for `min_kern'.  It is indeed quite common that track kerning
*increases* spacing for very small sizes.
2012-03-03 07:03:08 +01:00
Werner Lemberg
0fc8debeb6 [truetype] Fix Savannah bug #35689.
* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
point.
2012-03-02 16:09:51 +01:00
Werner Lemberg
6ac022dc75 [bdf] Fix Savannah bug #35656.
* src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
of nibble characters instead of accessing `a2i' array.
2012-03-01 16:43:20 +01:00
Werner Lemberg
7d35a7dc7c [winfonts] Fix Savannah bug #35659.
* src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
2012-03-01 16:11:33 +01:00
Werner Lemberg
d9c1659610 [bdf] Fix Savannah bug #35658.
* src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
properly.
2012-03-01 15:15:00 +01:00
Werner Lemberg
292144b44a [psaux] Fix Savannah bug #35657.
If in function `skip_spaces' the routine `skip_comment' comes to the
end of buffer, `cur' is still increased by one, so we need to check
for `p >= limit' and not `p == limit'.

* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
2012-03-01 14:54:47 +01:00
Werner Lemberg
a33c013fe2 [truetype] Fix Savannah bug #35646.
* src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages.  The
code is now in sync with the other operators (e.g. MSIRP) which
modify twilight points.
2012-03-01 14:04:30 +01:00
Werner Lemberg
cee5d59358 [bdf] Fix Savannah bug #35643.
* src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
comment before `_bdf_list_split', this is, really allocate at least
five `field' elements.
2012-03-01 09:26:03 +01:00
Werner Lemberg
4086fb7caf [bdf] Fix Savannah bug #35641.
* src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
_BDF_ENCODING isn't set.  We need this because access to the `glyph'
variable might be undefined otherwise.
2012-03-01 08:55:40 +01:00
Werner Lemberg
5dddcc45a0 [truetype] Fix Savannah bug #35640.
* src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
for NPUSHB and NPUSHW instructions.
2012-03-01 07:52:24 +01:00
Werner Lemberg
96cddb8d1d [truetype] Fix Savannah bug #35601.
* src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
last point for loop.
Also remove redundant boundary check.
2012-02-29 17:58:57 +01:00
Werner Lemberg
9290fa9022 [truetype] Remove redundant check.
* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove reduntant
second check for ordered contour start points.
2012-02-29 17:29:07 +01:00
Werner Lemberg
9eacbb81bd [truetype] Make SHC instruction behave similar to MS rasterizer.
* src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
twilight zone.
2012-02-29 14:47:47 +01:00
Alexei Podtelezhnikov
b25265c5e4 Avoid modulo operators against a power-of-two denominator.
* src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
(ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
<cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
`&' operator.
2012-02-29 13:45:24 +01:00
Werner Lemberg
5621fdd412 [autofit] Don't synchronize digit widths for light rendering mode.
We don't hint horizontally in this mode.

* src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
Implement it.
2012-02-29 13:33:33 +01:00
Alexei Podtelezhnikov
c18c1882c2 [type42] Minor code optimization (again).
* src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
2012-02-28 07:52:04 +01:00
Werner Lemberg
fcbc82e69e [smooth] Fix Savannah bug #35604.
* src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
instead of `FT_UInt' for some variables and update comparisons
accordingly.  A detailed analysis can be found in the bug report.
2012-02-26 20:54:19 +01:00
Werner Lemberg
c42848e6d9 [type42] Minor code optimization.
* src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
modulo operator.
2012-02-26 19:44:04 +01:00
Werner Lemberg
bd63334ee7 * docs/CHANGES: Updated. 2012-02-26 08:46:05 +01:00
Werner Lemberg
d9577add64 [type1] Fix Savannah bug #35608.
* src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
dictionaries.
2012-02-26 08:03:57 +01:00
Werner Lemberg
03242f58c4 [bdf] Support `ENCODING -1 <n>' format.
* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
2012-02-26 06:52:56 +01:00
Werner Lemberg
28dd2c4595 [bdf] Fix Savannah bug #35607.
* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
negative encoding values.
2012-02-26 06:18:58 +01:00
Werner Lemberg
58cbc465d2 [type1] Fix Savannah bug #35606.
* src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.

* src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
only if cur < limit.
2012-02-26 05:26:56 +01:00
Werner Lemberg
c776fc17bf [pcf] Fix Savannah bug #35603.
* src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
`strings' array.
2012-02-25 14:21:01 +01:00
Werner Lemberg
82365c0dea [type42] Fix Savannah bug #35602.
* src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
thoroughly.
2012-02-25 13:22:40 +01:00
Werner Lemberg
0b1c0c6b20 [bdf] Fix Savannah bugs #35599 and #35600.
* src/bdf/bdflib.c (ACMSG16): New warning message.
(_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
2012-02-25 10:23:04 +01:00
Werner Lemberg
320d4976d1 [bdf] Fix Savannah bugs #35597 and #35598.
* src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
2012-02-24 18:06:46 +01:00
Werner Lemberg
6b5b6f39e7 Prepare source code for amalgamation (6/6).
* src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.

* src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
s/t1_init_loader/cid_init_loader/.
s/t1_done_loader/cid_done_loader/.

* src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.

* src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.

* src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
2012-02-24 12:26:25 +01:00
Werner Lemberg
1b99d0a01c Prepare source code for amalgamation (5/6).
* include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
using it.
2012-02-24 10:54:07 +01:00
Vinnie Falco
9511143385 Prepare source code for amalgamation (4/6).
* src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.

* src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
s/PRaster/black_PRaster/.
* src/raster/ftraster.c: s/TRaster/gray_TRaster/,
s/PRaster/gray_PRaster/.
2012-02-22 07:01:35 +01:00
Vinnie Falco
d55f16df11 Prepare source code for amalgamation (3/6).
* src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
s/PWorker/black_PWorker/.
* src/raster/ftraster.c: s/TWorker/gray_TWorker/,
s/PWorker/gray_PWorker/
2012-02-21 09:21:19 +01:00
Vinnie Falco
5ccebc4e1e Prepare source code for amalgamation (2/6).
* src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
CEILING, TRUNC, and SCALED before defining it.
2012-02-21 08:54:55 +01:00
Vinnie Falco
126405adde Prepare source code for amalgamation (1/6).
See discussion starting at

  http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html

* src/smooth/ftgrays.c: s/TBand/gray_TBand/.
* src/raster/ftraster.c: s/TBand/black_TBand/.
2012-02-21 08:48:39 +01:00
Werner Lemberg
634867898b [autofit] Fix outline flags.
* src/autofit/afloader.c (af_loader_load_g): Don't reassign
`outline.flags' so that this information is preserved.  See
discussion starting at

  http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
2012-02-17 14:55:27 +01:00
Werner Lemberg
b4e06818ed [truetype] Fix Savannah bug #35466.
Jump instructions are now bound to the current function.  The MS
Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.

* src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
* src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.

* src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
bound of jump address.
(Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
2012-02-11 20:56:10 +01:00
Werner Lemberg
185606a64d We don't use `extensions'.
* include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
`extensions' field.
2012-02-11 14:34:05 +01:00
Werner Lemberg
f24d0793f1 Clean up `generic' fields.
* include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
Remove `generic' field since users can't access it.

* src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
advertised in the documentation of FT_Generic.
(Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
2012-02-11 09:37:46 +01:00
Werner Lemberg
e343e87d4f [autofit] Harmonize function arguments.
* src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
`load_flags'.
2012-02-07 09:40:11 +01:00
Werner Lemberg
0b7daff031 * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts. 2012-02-07 08:52:41 +01:00
suzuki toshiya
7b02b70443 [gxvalid] Fix Savannah bug #35286.
Patch submitted by anonymous reporter.

* src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
gxv_set_length_by_ulong_offset() must be called with 3, not 4,
the number of the subtables in the state tables; classTable,
stateArray, entryTable.
2012-01-17 16:20:02 +09:00
suzuki toshiya
c7c4d68bfb [raccess] Modify for PIC build.
Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html

Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
are renamed with `ft_' suffixes.

* src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
to `ft_raccess_rule_by_darwin_vfs()'.
* src/base/ftobjs.c: Ditto.

* src/base/ftrfork.c: Declarations of FT_RFork_Rule,
raccess_guess_rec, are moved to...
* include/freetype/internal/ftrfork.h: Here.

* include/freetype/internal/ftrfork.h:
FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
to replace raccess_guess_table[] in both of PIC and non-PIC
modes.
* src/base/ftrfork.c: raccess_guess_table[] array is rewritten
by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.

* src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
storage.  (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
the function pointer from `ft_raccess_guess_table' storage in
`BasePIC' structure.
* src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
FT_RACCESS_GUESS_TABLE_GET.
(raccess_get_rule_type_from_rule_index): Add `library' as the
first argument to the function, to retrieve the storage of
`ft_raccess_guess_table' from it.  Also `raccess_guess_table'
is replaced by FT_RACCESS_GUESS_TABLE_GET.
(ft_raccess_rule_by_darwin_vfs): Ditto.
2012-01-17 15:13:50 +09:00
suzuki toshiya
1749d8bc6a Remove trailing spaces. 2012-01-17 02:00:24 +09:00
suzuki toshiya
c24f77ac76 Formatting PIC related sources.
* src/autofit/afpic.c: Harmonize to FT2 coding conventions.
* src/base/basepic.c: Ditto.
* src/base/ftpic.c: Ditto.
* src/cff/cffpic.c: Ditto.
* src/pshinter/pshpic.c: Ditto.
* src/psnames/pspic.c: Ditto.
* src/raster/rastpic.c: Ditto.
* src/sfnt/sfntpic.c: Ditto.
* src/smooth/ftspic.c: Ditto.
* src/truetype/ttpic.c: Ditto.
2012-01-16 21:13:05 +09:00
suzuki toshiya
8a5cea2616 [autofit] Fix the inclusion of "aflatin2.h" in PIC file.
* src/autofit/afpic.c: Include "aflatin2.h" when
FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
Unconditionally inclusion causes declared but unimplemented
warning by GCC 4.6.
2012-01-16 20:41:53 +09:00
suzuki toshiya
4880a0ed82 [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
* src/cff/cffpic.c: The declarations of
FT_Init_Class_cff_cmap_encoding_class_rec() and
FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
They can be obtained by the inclusion of cffcmap.h.
cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
2012-01-16 18:51:15 +09:00
suzuki toshiya
3c96681856 Fix redundant declaration warning in PIC mode.
Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
designed to declare xxx_pic_{free,init} by themselves.
Because these macros are used at the end of the module
interface (e.g. ttdriver.c) and the wrapper source to build
a module as a single object (e.g. truetype.c) includes
the PIC file (e.g. ttpic.c) before the module interface,
these macros are expanded AFTER xxx_pic_{free,init} body
when the modules are built as single object.
The declaration after the implementation causes the redundant
declaration warnings, so the declarations are moved to module
PIC headers (e.g. ttpic.h).  Separating to other header files
are needed for multi build.

* include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
Remove class_##_pic_free and class_##_pic_init declarations.
* include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
FT_DEFINE_MODULE): Ditto.

* src/base/basepic.h: Insert a comment and fix coding style.
* src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
init}.
* src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
* src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
init}.
* src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
init}.
* src/raster/rastpic.h: Declare
ft_raster{1,5}_renderer_class_pic_{free,init}
* src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
* src/smooth/ftspic.h: Declare
ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
* src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
2012-01-15 23:35:31 +09:00
suzuki toshiya
e38acb0d53 Make pspic.c to include module error header to fix multi build.
* src/psnames/pspic.c: Include `psnamerr.h'.
2012-01-15 20:05:22 +09:00
suzuki toshiya
09f3e41c25 [base] Fix a dereference of uninitialized variable in PIC mode.
* src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
set before derefering to obtain `library'.  The initialization
of `clazz', `glyph', `library' and NULL pointer check are
reordered to minimize PIC conditonals.
2012-01-15 02:48:47 +09:00
suzuki toshiya
0614febcec [base] Insert explict cast for GCC 4.6 in PIC mode.
* src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
configuration, FT_DEFAULT_MODULES_GET returns
FT_Module_Class** pointer, GCC 4.6 warns that
const FT_Module_Class* const* variable is warned as
inappropriate to store it.  To calm it, explicit cast is
inserted.  Also `library' is checked to prevent the NULL
pointer dereference in FT_DEFAULT_MODULES_GET.
2012-01-15 01:31:07 +09:00
suzuki toshiya
226f361975 Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
take no arguments but derefer the variable named `library'
internally.

* src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
set it if non-NULL driver is passed.
* src/truetype/ttdriver.c (tt_get_interface): Ditto.

* src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
under PIC configuration, and set it if non-NULL module is given.
* src/psnames/psmodule.c (psnames_get_interface): Ditto.
2012-01-14 06:40:03 +09:00
suzuki toshiya
4b733517d7 Make PIC files to include module error headers, to use the
error codes with per-module prefix.

* src/autofit/afpic.c: Include `aferrors.h'.
* src/cff/cffpic.c: Include `cfferrs.h'.
* src/pshinter/pshpic.c: Include `pshnterr.h'.
* src/raster/rastpic.c: Include `rasterrs.h'.
* src/sfnt/sfntpic.c: Include `sferrors.h'.
* src/smooth/ftspic.c: Include `ftsmerrs.h'.
* src/truetype/ttpic.c: Include `tterrors.h'.
2012-01-14 06:32:50 +09:00
Tobias Ringström
21472de11d [truetype] Fix IP instruction if x_ppem != y_ppem.
* src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
properly.
2012-01-04 18:27:16 +01:00
Werner Lemberg
c017f072e4 Fix tracing message for `loca' table.
* src/truetype/ttpload.c (tt_face_get_location): Don't emit a
warning message if the last `loca' entry references an empty glyph.
2012-01-02 22:33:42 +01:00
Werner Lemberg
5cb356405e Add some variable initializations.
Reported by Richard COOK <rscook@unicode.org>.

* src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
* src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
earlier.
2011-12-10 23:16:04 +01:00
Werner Lemberg
2fb22d5649 Fix serious scaling bug in `FT_Get_Advances'.
* src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
`FT_Load_Glyph' must be simply multiplied by 1024.
2011-12-08 11:55:06 +01:00
Werner Lemberg
96fcf87b75 * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing. 2011-12-08 11:22:07 +01:00
suzuki toshiya
714ee56ab1 [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
was a configurable macro to disable Carbon-dependent code.  Because
now configure script sets DARWIN_NO_CARBON by default and disables
Darwin & Carbon-dependent codes, these macros can be unified.
FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
(defined by default) is removed, because DARWIN_NO_CARBON violates
FT_XXX naming convention of public macros, and a macro configured by
default is not portable for the building without configure (e.g.
make devel).

* builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
old Mac font support is requested and Carbon is available.
* builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
for Mac OS X without Carbon (e.g.  Mac OS X 10.4 for ppc64) is
requested.
* include/freetype/config/ftconfig.in: Ditto.
* builds/vms/ftconfig.h: Ditto.

* src/base/ftbase.h: Remove DARWIN_NO_CARBON.
* src/base/ftbase.c: Ditto.
* src/base/ftobjs.c: Ditto.
* src/base/ftrfork.c: Ditto.

* src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
(same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
* builds/mac/ftmac.c: Ditto.

* builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
* builds/mac/FreeType.m68k_far.make.txt: Ditto.
* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
2011-12-02 21:14:58 +09:00
suzuki toshiya
2968bd6098 Fix Savannah bug #34728 (`make devel' on Mac OS X).
* builds/toplevel.mk: Check `/dev/null' to identify the Unix-
like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
* builds/unix/detect.mk: Ditto.
2011-11-30 23:25:38 +09:00
suzuki toshiya
eba2781ab9 [apinames] Fix the overflow of signed integer hash.
* src/tools/apinames.c (names_add): Change the type of `h' from
int to unsigned int, to prevent undefined behaviour in the
overflow of signed integers (overflow of unsigned int is defined
to be wrap around).  Found by clang test suggested by Sean
McBride.
2011-11-30 22:40:43 +09:00
Werner Lemberg
628bebe639 [winfonts] Remove casts.
* src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
update affected functions.
(FNT_Size_Select): Fix number of arguments.
2011-11-30 13:55:56 +01:00
Werner Lemberg
5a7a593c37 [type42] Remove casts.
* src/type42/t42driver.c (t42_driver_class): Remove all casts and
update affected functions.

* src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
changes.
2011-11-30 13:38:51 +01:00
Werner Lemberg
910b544aaf [type1] Remove casts.
* src/type1/t1driver.c (t1_driver_class): Remove all casts and
update affected functions.

* src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
Updated for t1driver changes.
src/type1/t1objs.h (T1_Driver): Remove unused typedef.
Updated for t1driver changes.
2011-11-30 13:08:28 +01:00
Werner Lemberg
ed54e43aed [bdf] Fix Savannah bug #34896.
ENCODING now covers the whole Unicode range.

Note, however, that this change is quite expensive since it
increases the size of three arrays by almost 400kByte in total.  The
right fix is to replace the logic with something smarter.
Additionally, there exist very old BDFs for three-byte CCCII
encoding which exceeds the range of Unicode (another reason to have
a smarter logic).

* src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
arrays.
* src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
2011-11-27 16:39:53 +01:00
Werner Lemberg
6e0d4cdf0e [bdf] Improve tracing.
* src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
(_bdf_parse_glyphs): Use them.
2011-11-27 09:21:03 +01:00
Werner Lemberg
70cf8c5e6d Improve tracing.
* src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
(PCF_Face_Done): Remove tracing message.

* src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
(cff_face_init), src/cid/cidobjs.c (cid_face_init),
src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
(sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
(T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
`greeting' message.

* src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
(T42_Open_Face): Improve tracing.
2011-11-26 20:09:39 +01:00
Werner Lemberg
3630bf7eb5 [cid] Fix error code.
* src/cid/cidparse.c (cid_parser_new): Do it.
2011-11-26 18:20:24 +01:00
Werner Lemberg
d05d56fff0 [cff] Fix error code.
* src/cff/cffload.c (cff_font_load): Do it.
2011-11-26 18:13:09 +01:00
Werner Lemberg
f8f576d1d4 Addition to last commit. 2011-11-26 18:07:30 +01:00
Werner Lemberg
930e9bf8f4 Add new error code FT_Err_Missing_Module.
Previously, FreeType misleadingly returned
FT_Err_Unknown_File_Format if a module was missing (or a test was
missing completely).

* include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.

* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
(cid_face_init), src/sfnt/sfobjs.c (sfnt_init_face),
src/truetype/ttobjs.c (tt_face_init), src/type1/t1objs.c
(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init,
T42_Driver_Init): Updated.

* src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
redundant test for `psaux'.
2011-11-26 13:38:26 +01:00
Werner Lemberg
e01406bb91 [bdf] Add more error messages.
* src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
Add line number argument.
Update all callers.
(ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
(_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
_bdf_parse_glyphs, _bdf_parse_start): Add error messages.
2011-11-25 09:44:28 +01:00
Werner Lemberg
fd905c02dd * include/freetype/fterrors.h: Remove dead code. 2011-11-24 12:53:38 +01:00
Werner Lemberg
bb18bf7d05 * docs/releases: Updated. 2011-11-15 08:34:54 +01:00
Werner Lemberg
9d7f0957fb * Version 2.4.8 released.
=========================

Tag sources with `VER-2-4-8'.

* docs/CHANGES: Updated.

* docs/VERSION.DLL: Update documentation and bump version number to
2.4.8.

* README, Jamfile (RefDoc),
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj,
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
builds/win32/visualce/freetype.vcproj,
builds/win32/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.

* builds/unix/configure.raw (version_info): Set to 14:0:8.
2011-11-14 20:37:12 +01:00
Chris Liddell
8b90cf0b42 Add FT_Get_PS_Font_Value() API.
This allows a Type 1 font face to be interrogated to retrieve most
of the dictionary keys (keys not relevant to FreeType's Type 1
interpreter are not available).

* include/freetype/internal/services/svpsinfo.h
(PS_GetFontValueFunc): New typedef.
(PSInfo): Add `ps_get_font_value'.
(FT_DEFINE_SERVICE_PSINFOREC): Updated.

* include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
* include/freetype/t1tables.h: Here.
(PS_Dict_Keys): New enumeration.
(FT_Get_PS_Font_Value): New declaration.

* src/base/fttype1.c (FT_Get_PS_Font_Value): New function.

* src/type1/t1driver.c (t1_ps_get_font_value): This new function
does the real job.
(t1_service_ps_info): Add it.

* src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
(cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
Updated.
2011-11-13 16:30:59 +01:00
Braden Thomas
14a16e3430 [cid] Various loading fixes.
* src/cid/cidload.c (cid_load_keyword) <default>,
(parse_font_matrix, parse_expansion_factor): Correctly check number
of dictionaries.
(cid_read_subrs): Protect against invalid values of `num_subrs'.
Assure that the elements of the `offsets' array are ascending.
2011-11-08 08:27:42 +01:00
Werner Lemberg
b2874fd5be * README: We use copyright ranges also.
According to

  http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html

this should be mentioned explicitly.
2011-11-05 08:39:58 +01:00
suzuki toshiya
94ada3d81c [raccess] Supplement for previous fix.
* src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
it on native Mac OS X.
* src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
too.
2011-10-30 14:03:13 +09:00
suzuki toshiya
dbe330bca9 [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
* src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
compile on native Mac OS X because it is not used.
2011-10-30 12:31:03 +09:00
Werner Lemberg
f4ec60fdb8 [truetype] Fix MD instruction for twilight zone.
* src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
instruction applied to original coordinates of twilight points
always returns zero.
2011-10-25 20:25:32 +02:00
Werner Lemberg
016eba976f * Version 2.4.7 released.
=========================

Tag sources with `VER-2-4-7'.

* docs/CHANGES: Updated.

* docs/VERSION.DLL: Update documentation and bump version number to
2.4.7.

* README, Jamfile (RefDoc),
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj,
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
builds/win32/visualce/freetype.vcproj,
builds/win32/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.

* builds/unix/configure.raw (version_info): Set to 13:2:7.
2011-10-18 13:34:32 +02:00
Kal Conley
72185cb5f4 Fix handling of transformations if no renderer is present.
* src/base/ftobjs.c (FT_Load_Glyph): Thinko.
2011-10-15 09:33:11 +02:00
Kal Conley
298608d1d2 Fix conditions for autohinting.
* src/base/ftobjs.c (FT_Load_Glyph): Handle
FT_LOAD_IGNORE_TRANSFORM.
2011-10-15 09:09:59 +02:00
suzuki toshiya
faddba4474 [gxvalid] Fix a bug to detect too large offset in morx table.
* src/gxvalid/gxvmorx2.c
(gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
that too large positive offset cannot be detected.
2011-10-08 01:30:49 +09:00
Werner Lemberg
9c98fbf634 Handle some border cases.
* include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.

* src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
value of `target->rows'.

* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
flex start.

* src/raster/ftrend1.c (ft_raster1_render): Check `width' and
`height'.

* src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
invalid values in `localpoints' array.
2011-10-01 09:25:55 +02:00
Werner Lemberg
6ae8bde444 [psnames] Handle zapfdingbats.
Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.

* src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
`zapfdingbats.txt' file.

* src/psnames/pstables.h: Regenerated.
2011-10-01 08:55:20 +02:00
Werner Lemberg
bfc20c76eb Fix Savannah bug #34189.
* src/type1/t1load.c (T1_Open_Face): Initialize
`face->len_buildchar'.
2011-09-27 17:35:09 +02:00
Werner Lemberg
34d2818a75 [cff] Dump SIDs while tracing.
* src/cff/cffobjs.c (cff_face_init): Do it.

* src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
<cff_kind_string>: Identify as SID.
2011-09-26 08:59:21 +02:00
Werner Lemberg
34eca6ec63 Remove unused FT_ALIGNMENT macro.
* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h: Do it.
2011-09-17 09:46:46 +02:00
Werner Lemberg
e9e93d1b19 [smooth] Slightly optimize conic and cubic flatterners.
* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
out some code from the main loop to speed it up.
2011-09-17 09:21:25 +02:00
Tomas Hoger
487913d9a6 Slightly improve LZW_CLEAR handling.
* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
handled as clear codes.  This also re-sets old_code and old_char to
predictable values, which is a little better than using `random'
ones if the code following LZW_CLEAR is invalid.
2011-09-11 09:18:10 +02:00
Tomas Hoger
83cb6c0049 Add explicit LZW decompression stack size limit.
Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
constructed correctly.  It's even less than that, see e.g.
libarchive code comment for a better size upper bound:

  http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121

This patch adds explicit stack size limit, enforced when stack is
realloced.

An alternative is to ensure that code < state->prefix[code - 256]
when traversing prefix table.  Such check is less efficient and
should not be required if prefix table is constructed correctly in
the first place.

* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
2011-09-11 09:13:45 +02:00
Tomas Hoger
86c3c69c15 Protect against loops in the prefix table.
LZW decompressor did not sufficiently check codes read from the
input LZW stream.  A specially-crafted or corrupted input could
create a loop in the prefix table, which leads to memory usage
spikes, as there's no decompression stack size limit.

* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
code in valid LZW stream must be 0..255.
<FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
code > free_ent is invalid.
2011-09-11 09:08:40 +02:00
Werner Lemberg
57b6a6148d Better tracing of metrics.
* src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
FT_TRACE.
2011-09-09 19:05:54 +02:00
Werner Lemberg
bb211ce6ce Fix Savannah bug #33816.
* src/cff/cfftypes.h (CFF_FontRecDictRec): New member
`has_font_matrix'.
* src/cff/cffparse.c (cff_parse_font_matrix): Set it.
Update tracing output.
* src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
can be removed.
2011-09-07 15:01:20 +02:00
Werner Lemberg
51ca771ff6 Better tracing of metrics.
* src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
Decorate with FT_TRACE.
2011-08-30 07:42:19 +02:00
Werner Lemberg
35ab70c19c [cff] Better tracing of the parsing process.
* src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
FT_TRACE.

* src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
cff_parse_private_dict, cff_parse_cid_ros): Updated.
(CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
CFF_FIELD_DELTA): Add argument for ID.
(cff_parser_run): Decorate with FT_TRACE.

* src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
`id' member.

* src/cff/cfftoken.h: Add IDs to all fields.
2011-08-25 13:41:16 +02:00
Werner Lemberg
c3fb981e2a Fix Savannah bug #34022.
* README, docs/INSTALL: Remove references to UPGRADE.UNIX.
2011-08-16 16:04:33 +02:00
Werner Lemberg
fa5c2e914e Fix Savannah bug #34018.
* doc/UPGRADE.UNIX: Removed.  Obsolete.
2011-08-15 17:46:40 +02:00
David Bevan
864c426eff Fix Savannah bug #33992.
* src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
2011-08-15 17:34:01 +02:00
Werner Lemberg
bad0160c16 [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
* src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
(Ins_SDPVTL): Handle v1 == v2 specially.
2011-08-12 19:50:13 +02:00
Werner Lemberg
b91e785308 Fix Savannah bug #33975.
* src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
2011-08-09 17:48:44 +02:00
Werner Lemberg
29a7965fd1 * Version 2.4.6 released.
=========================

Tag sources with `VER-2-4-6'.

* docs/CHANGES: Updated.

* docs/VERSION.DLL: Update documentation and bump version number to
2.4.6.

* README, Jamfile (RefDoc),
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj,
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
builds/win32/visualce/freetype.vcproj,
builds/win32/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.

* builds/unix/configure.raw (version_info): Set to 13:1:7.
2011-07-29 06:23:27 +02:00
Werner Lemberg
e7d42366f1 [cff] Add some more tracing infos.
* src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
cff_parse_cid_ros): Add tracing.
2011-07-29 06:15:20 +02:00
Dirk Müller
b03c4a0a3f [psaux, type1] Fix null pointer dereferences.
Found with font fuzzying.

* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
`decoder->buildchar'.

* src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
2011-07-22 05:24:11 +02:00
Chris Morgan
3abf617b5e Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
Useful for embedded systems which don't need file stream support.

* src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
it.
2011-07-20 06:48:08 +02:00
Elton Chung
77f04cebe8 * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo. 2011-07-20 06:30:20 +02:00
Steven Chu
b0962ac34e [truetype] Fix metrics on size request for scalable fonts.
* src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
from TT_Size to FT_Size if scalable font.
2011-07-16 09:12:42 +02:00
Matthias Drochner
143799d4a9 [psaux] Fix potential sign extension problems.
When shifting right a signed value, it is not defined by the
C standard whether one gets a sign extension or not.  Use a macro to
do an explicit cast from a signed short (assuming that this is
16bit) to an int.

* src/psaux/t1decode.c (Fix2Int): New macro.
Use it where appropriate.
2011-07-14 07:35:51 +02:00
Werner Lemberg
60f8371353 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
<op_callothersubr>: Better handling of subroutine index 0.
From Matthias Drochner <M.Drochner@fz-juelich.de>.
2011-07-14 07:34:12 +02:00
Алексей Подтележников
dc33b4a155 [psaux] Optimize previous commit.
* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
<op_callothersubr>: Move error check down to avoid testing twice for
good cases.
2011-07-10 07:08:51 +02:00
Werner Lemberg
c46b1e2476 [psaux] Add better argument check for `callothersubr'.
* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
<op_callothersubr>: Reject negative arguments.
2011-07-08 13:46:42 +02:00
Werner Lemberg
f095744d2d [sfnt] Try harder to find non-zero values for ascender and descender.
* src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
the `hhea' table's values are zero.
2011-07-07 14:10:39 +02:00
Werner Lemberg
f4b63326f1 Fix previous commit.
We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
strikes in the font.

* src/truetype/ttobjs.c (tt_face_init): Implement it.

* docs/CHANGES: Updated.
2011-07-03 11:24:46 +02:00
Just Fill Bugs
07598339f7 Fix Savannah bug #33246.
* src/truetype/ttobjs.c (tt_check_single_notdef): New function.
(tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
2011-07-02 18:41:36 +02:00
Werner Lemberg
9ae6c7c54d * docs/CHANGES: Updated. 2011-07-02 12:15:10 +02:00
David Bevan
aecbfe1ba7 [ftstroke] Major revision.
The main problems
-----------------

  o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
    joins (not bevel joins) were generated.  Indeed, the meanings of
    `miter' and `bevel' were incorrectly reversed (consistently) in
    both the code and comments.

  o The way bevel joins were constructed (whether specified
    explicitly, or created as a result of exceeding the miter limit)
    did not match what is required for stroked text in PostScript or
    PDF.

The main fixes
--------------

  o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.

  o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
    introduced to support PostScript and PDF miter joins.

  o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
    alias for FT_STROKER_LINEJOIN_MITER.

Additionally, a variety of stroking errors have been fixed.  These
would cause various artifacts (including points `at infinity'),
especially when stroking poor quality fonts.

See

  http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html

for example documents.  The FreeType stroker now produces results
very similar to that produced by GhostScript and Distiller for these
fonts.

Other problems
--------------

The following problems have been resolved:

  o Inside corners could be generated incorrectly.  Intersecting the
    inside corner could cause a missing triangular area and other
    effects.

    The intersection point can only be used if the join is between
    two lines and both lines are long enough.  The `optimization'
    condition in `ft_stroker_inside' has been corrected; this
    requires the line length to be passed into various functions and
    stored in `FT_StrokerRec'.

  o Incorrect cubic curves could be generated.  The angle
    calculations in `FT_Stroker_CubicTo' have been corrected to
    handle the case of the curve crossing the +/-PI direction.

  o If the border radius was greater than the radius of curvature of
    a curve, then the negative sector would end up outside (not
    inside) the border.  This situation is now recognized and the
    negative sector is circumnavigated in the opposite direction.
    (If round line joins are being used, this code is disabled
    because the line join will always cover the negative sector.)

  o When a curve is split, the arcs may not join smoothly (especially
    if the curve turns sharply back on itself).  Changes in
    direction between adjacent arcs were not handled.  A round
    corner is now added if the deviation from one arc to the next is
    greater than a suitable threshold.

  o The current direction wasn't retained if a the outline contained
    a zero length lineto or a curve that was determined to be
    `basically a point'.  This could cause a spurious join to be
    added.

  o Cubics with close control points could be mishandled.  All eight
    cases are now distinguished correctly.

Other improvements
------------------

o Borders for cubic curves could be too `flat'.
  FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
  this.

o The handling and use of movable points has been simplified a
  little.

o Various values are now computed only if the results are actually
  needed.

o The directions of the outer and inner borders have been swapped,
  as recommended by Graham Asher.

* src/base/ftstroke.c: Revised.
* include/freetype/ftstroke.h: Updated.
2011-07-02 12:09:52 +02:00
Werner Lemberg
ee5d3b5947 * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'. 2011-06-30 15:08:15 +02:00
Werner Lemberg
54f187ab1a Document last commit. 2011-06-29 10:01:42 +02:00
Werner Lemberg
96ddc679be Fix Savannah bug #33663.
* src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
ENCODING correctly.
2011-06-29 09:15:54 +02:00
Werner Lemberg
da9dbf89c8 * Version 2.4.5 released.
=========================

Tag sources with `VER-2-4-5'.

* docs/CHANGES: Updated.

* docs/VERSION.DLL: Update documentation and bump version number to
2.4.5

* README, Jamfile (RefDoc),
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproj,
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
builds/win32/visualce/freetype.vcproj,
builds/win32/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.

* builds/unix/configure.raw (version_info): Set to 13:0:7.
2011-06-25 07:16:22 +02:00
Werner Lemberg
3ae2c70dc6 Minor documentation fixes. 2011-06-24 13:18:41 +02:00