Improve support for WGL4 encoded fonts.
* src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): New macro.
(ft_wgl_extra_unicodes, ft_wgl_extra_glyph_names,
ft_wgl_extra_glyph_name_offsets): New arrays.
(ps_check_wgl_name, ps_check_wgl_unicode): New functions.
(ps_unicodes_init): Use them to add additional Unicode mappings.
* include/freetype/internal/ftcalc.h, src/base/ftcalc.c
(FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled): New
functions.
* src/cff/cffobjs.h (CFF_Internal): New struct. It is used to
provide global hinting data for both the top-font and all subfonts
(with proper scaling).
* src/cff/cffobjs.c (cff_make_private_dict): New function, using
code from `cff_size_init'.
(cff_size_init, cff_size_done, cff_size_select, cff_size_request):
Use CFF_Internal and handle subfonts.
(cff_face_init): Handle top-dict and subfont matrices correctly;
apply some heuristic in case of unlikely matrix concatenation
results. This has been discussed with people from Adobe (thanks
goes mainly to David Lemon) who confirm that the CFF specs are fuzzy
and not correct.
* src/cff/cffgload.h (cff_decoder_prepare): Add `size' argument.
* src/cff/cffgload.c (cff_builder_init): Updated.
(cff_decoder_prepare): Handle hints globals for subfonts.
Update all callers.
(cff_slot_load): Handling scaling of subfonts properly.
* src/cff/cffparse.c (cff_parse_fixed_dynamic): New function.
(cff_parse_font_matrix): Use it.
* src/cff/cfftypes.h (CFF_FontDictRec): Make `units_per_em'
FT_ULong.
* docs/CHANGES: Document it.
reported by Ding Li on 2008/03/28 on freetype-devel.
* src/base/cff/cffparse.c (power_tens): New array.
(cff_parse_real): Rewritten to introduce a fourth parameter which
returns the `scaling' of the real number so that we have no
precision loss. This is not used yet.
Update all callers.
(cff_parse_fixed_thousand): Replace with...
(cff_parse_fixed_scaled): This function. Update all callers.
and `scale_y' as obsolete since they aren't used.
* src/psaux/psobjs.c (t1_builder_init): Updated.
* src/cff/cffgload.h (CFF_Builder): Mark `scale_x' and `scale_y' as
obsolete since they aren't used.
* src/cff/cffgload.c (cff_builder_init): Updated.
targets).
* src/base/ftobjs.c (FT_Open_Face): Don't define a variable in block
which is crossed by a `goto'.
* src/otvalid/otvalid.h (otv_MATH_validate): Add prototype.
* include/freetype/freetype.h (FT_FACE_FLAG_CID_KEYED,
FT_IS_CID_KEYED): New macros.
* src/cff/cffobjs.c (cff_face_init): Set number of glyphs to the
maximum CID value in CID-keyed CFFs.
Handle FT_FACE_FLAG_CID_KEYED flag.
* docs/CHANGES: Document it.
Fix CFF font matrix calculation and improve precision.
* src/cff/cffparse.c (cff_parse_real): Increase precision if integer
part is zero.
(cff_parse_font_matrix): Simplify computation of `units_per_em';
this prevents overflow also.
Support FT_Get_CID_Registry_Ordering_Supplement for PS CID fonts.
* src/cid/cidriver.c: Include FT_SERVICE_CID_H.
(cid_get_ros): New function.
(cid_service_cid_info): New service structure.
(cid_services): Register it.
division too early; otherwise the most significant digit(s) of the
final result are lost as the value is truncated to an integer. This
fixes Savannah bug #21794 (where the patch has been posted too).
expanded). This is needed for options like
--includedir='${prefix}/include'.
* builds/unix/detect.mk, configure: Prevent argument expansion in
call to the (real) `configure' script.
* src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if
TT_USE_BYTECODE_INTERPRETER isn't defined.
There exist CFFs which contain opcodes for the Type 1 operators
`hsbw' and `closepath' which are both invalid in Type 2 charstrings.
However, it doesn't harm to support them.
* src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and
`cff_op_closepath.'
(cff_argument_counts): Ditto.
(cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath)
and 13 (hsbw) which are invalid in Type 2 charstrings.
support for bit 8 in the `OS/2' table. MS is already using this;
hopefully, this becomes part of OpenType 1.5.
Prepare also support for `name' IDs 21 (WWS_FAMILY) and 22
(WWS_SUBFAMILY).
cmap14-related new APIs to the FT_Object_ActionName scheme.
update the documentation for these APIs
* src/sfnt/ttcmap.c: stronger cmap 14 validation, make the
code a little more consistent with FreeType coding conventions
and modify the cmap14 functions that returned a newly allocated
array to use a persistent vector from the TT_CMap14 object
instead.
(otv_Coverage_validate): Add fourth argument to pass an expected
count value. Update all users.
Check glyph IDs.
(otv_ClassDef_validate): Check `StartGlyph'.
* src/otvalid/otvgsub.c (otv_SingleSubst_validate): More glyph ID
checks.
* src/otvalid/otvmath.c (otv_MathConstants_validate): There are only
56 constants.
(otv_GlyphAssembly_validate, otv_MathGlyphConstruction_validate):
Check glyph IDs.
Add new service for getting the ROS from a CID font.
* include/freetype/config/ftheader.h (FT_CID_H): New macro.
* include/freetype/ftcid.h: New file.
* include/freetype/internal/ftserv.h (FT_SERVIVE_CID_H): New macro.
* include/freetype/internal/services/svcid.h: New file.
* src/base/ftcid.c: New file.
* src/cff/cffdrivr.c: Include FT_SERVICE_CID_H.
(cff_get_ros): New function.
(cff_service_cid_info): New service structure.
(cff_services): Register it.
* src/cff/cffload.c (cff_font_done): Free registry and ordering.
* src/cff/cfftypes.h (CFF_FontRec): Add `registry' and `ordering'.
* modules.cfg (BASE_EXTENSIONS): Add ftcid.c.
* src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_NAME_H.
(cff_get_ps_name): New function.
(cff_service_ps_name): New service structure.
(cff_services): Register it.
recursion depth of 1. This was the maximum value in TrueType 1.0,
and some older fonts don't set this field correctly.
* src/gxvalid/gxvmort1.c
(gxv_mort_subtable_type1_substTable_validate): Fix tracing message.
FNT_Err_Invalid_File_Format if file format was recognized but
the file doesn't contain any FNT(NE) or RT_FONT(PE) resources.
Add verbose debug logs to make it easier to debug failing load
attempts.
(FNT_Face_Init): A single FNT font can't contain more than 1 face,
so return an error if requested face index is > 0.
Do not do further attempt to load fonts if a previous attempt has
failed but returned error FNT_Err_Invalid_File_Format, i.e., the
file format has been recognized but no fonts found in the file.
logic.
(ps_parser_load_field) <T1_FIELD_TYPE_BBOX>: Skip delimiters
correctly.
(ps_parser_load_field_table): Use `fields->array_max' instead of
T1_MAX_TABLE_ELEMENTS to limit the number of arguments.