src


Log

Author Commit Date CI Message
Werner Lemberg 605946af 2016-07-11T16:14:36 Conditionally compile environment support. * include/freetype/internal/ftobjs.h, src/autofit/afmodule.c, src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c: Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where necessary.
Werner Lemberg 8f8ae8c5 2016-07-11T15:11:38 Handle properties in `FREETYPE_PROPERTIES' environment variable. This commit covers the most important one. * src/autofit/afmodule.c (af_property_set): Handle `warping', `darkening-parameters', and `no-stem-darkening'. * src/cff/cffdrivr.c (cff_property_set): Handle `darkening-parameters', `hinting-engine', and `no-stem-darkening'. * src/truetype/ttdriver.c (tt_property_set): Handle `interpreter-version'.
Werner Lemberg c3e83b46 2016-07-11T05:56:26 Replace calls to `atol' with `strtol'. We later on need strtol's `endptr' feature. * include/freetype/config/ftstdlib.h (ft_atol): Replace with... (ft_strtol): ... this. * src/base/ftdbgmem.c (ft_mem_debug_init): Updated. * src/cid/cidparse.c (cid_parser_new): Ditto. * src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
Werner Lemberg 84d3df75 2016-07-11T00:12:11 Implement handling of `FREETYPE_PROPERTIES' environment variable. Recognizing properties follows in another commit. * devel/ftoption.h, include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro. * include/freetype/config/ftstdlib.h (ft_getenv): New macro. * src/base/ftinit.c (ft_set_default_properties): New function to parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'. (FT_Init_FreeType): Updated.
Werner Lemberg c3beb30a 2016-07-10T07:11:45 Add function `ft_property_string_set'. This is a preparation for handling an `FREETYPE_PROPERTIES' environment variable to control (some) driver properties. No change in functionality. * src/base/ftobjs.c (ft_property_do): Add `value_is_string' parameter. (ft_property_string_set): New function. (FT_Property_Set, FT_Property_Get): Updated. * include/freetype/internal/ftobjs.h: Updated. * include/freetype/internal/services/svprop.h (FT_Properties_SetFunc): Add `value_is_string' parameter. * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c (cff_property_set), src/truetype/ttdriver.c (tt_property_set): Updated, emitting an error currently if `value_is_string' is set.
Werner Lemberg 971f10b6 2016-07-08T06:59:31 Formatting.
Werner Lemberg 109d1662 2016-07-08T06:58:46 Revert "Formatting." This reverts commit a0f3a1f25a69a7c5268e87ee6e7a9238c26e6242.
Werner Lemberg a0f3a1f2 2016-07-08T06:53:46 Formatting.
Alexei Podtelezhnikov 4a2f8f1f 2016-07-08T00:16:07 [smooth] Sub-banding protocol revision. Rasterization sub-banding is utilized at large sizes while using rather small fixed memory pool. Indeed it is possible to make an educated guess how much memory is necessary at a given size for a given glyph. It turns out that, for large majority of European glyphs, you should store about 8 times more boundary pixels than their height. Or, vice versa, if your memory pool can hold 800 pixels the band height should be 100 and you should sub-band anything larger than that. Should you still run out of memory, FreeType bisects the band but you have wasted some time. This is what has been implemented in FreeType since the beginning. It was overlooked, however, that the top band could grow to twice the default band size leading to unnecessary memory overflows there. This commit fixes that. Now the bands are distributed more evenly and cannot exceed the default size. Now the magic number 8 is really suitable for rather simple European scripts. For complex Chinese logograms the magic number should be 13 but that is subject for another day. * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding protocol.
Werner Lemberg 474682ff 2016-07-06T08:54:35 * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
Werner Lemberg adfec0af 2016-07-05T07:38:52 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
Alexei Podtelezhnikov d1876e58 2016-07-04T23:46:53 [smooth] Variable type revision (part 2). * src/smooth/ftgrays.c (TArea): Restore original definition as `int'. (gray_render_line) [FT_LONG64]: Updated. (gray_convert_glyph): 32-bit band bisection stack should be 32 bands. (gray_convert_glyph_inner): Trace successes and failures.
Werner Lemberg 5e353f07 2016-07-04T14:59:22 [autofit] Handle single-point contours as segments. Doing so allows us to link them to edges – some fonts like `NotoSansGurmukhi-Regular' have such isolated points sitting exactly on other outlines. * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't ignore one-point contours but handle them specially as one-point segments. (af_latin_hints_compute_edges): Append one-point segments to edges if possible.
Werner Lemberg 8b8c4408 2016-07-02T18:35:50 [autofit] Remove unused structure members. * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove `num_linked'. * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
Werner Lemberg aab2b8d8 2016-07-02T08:37:44 [autofit] Update to Unicode 9.0.0. * src/autofit/afranges.c (af_arab_nonbase_uniranges, af_cyrl_uniranges): Add new data.
Alexei Podtelezhnikov 597c6959 2016-07-01T23:27:41 [smooth] Variable type revision (part 1). This patch restores original `TCoord' definition as `int' so that the rendering pool is used more efficiently on LP64 platforms (unix). * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some fields to `TCoord'. (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline, gray_sweep, gray_convert_glyph): Updated.
Alexei Podtelezhnikov ef0a3e7e 2016-06-28T22:56:22 [smooth] Minor clean-ups. * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'. (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
Alexei Podtelezhnikov c9cf359f 2016-06-28T00:30:58 [smooth] Minor clean-ups. * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile qualifier. (gray_raster_render): Move span initializations from here. (gray_sweep): ... to here and remove unused `target' argument.
Alexei Podtelezhnikov 999bcee2 2016-06-26T08:27:29 [pcf] Fix handling of very large fonts (#47708). * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an unsigned short. Only reject `0xFFFF' as an invalid encoding offset.
Werner Lemberg 8ba407a7 2016-06-25T18:09:22 [truetype] Really fix deallocation in case of error (#47726). * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize `outline.points' also.
Alexei Podtelezhnikov 25e82bc2 2016-06-23T23:17:39 [smooth] Consolidate memory management. * src/smooth/ftgrays.c (gray_init_cells): Remove function. (gray_TWorker): Remove fields that become local variables. (gray_raster_render): Move rendering buffer declaration from here. (gray_convert_glyph): ... to here and update accordingly.
Alexei Podtelezhnikov e2233481 2016-06-22T23:14:26 [smooth] Consolidate boundary checks. Removing the checks from `gray_hline' shaves 1% off rendering speed. * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'. (gray_TWorker): No need to store `clip_box'. (gray_hline): Remove unnecessary boundary checks. (gray_convert_glyph): Move boundary checks from here. (gray_raster_render): ... to here and consolidate.
Alexei Podtelezhnikov 78e8fc0d 2016-06-22T00:04:08 [smooth] Use `FT_Outline_Get_CBox'. * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'. (gray_compute_cbox): Remove this function. (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.
Werner Lemberg 20c6ef4c 2016-06-21T11:39:34 [smooth] Remove compiler warnings. * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
Alexei Podtelezhnikov 3c64af98 2016-06-20T00:01:55 [smooth] Sanitize memory managenent. * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
Alexei Podtelezhnikov 74fd251b 2016-06-18T22:31:26 [smooth] Remove `band_shoot' that never worked. * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'. (gray_convert_glyph): Updated.
Alexei Podtelezhnikov 3e1f7bc5 2016-06-18T22:13:23 Fresh typos.
Alexei Podtelezhnikov 72a06531 2016-06-17T23:10:22 [raster, smooth] Handle FT_RENDER_POOL_SIZE better. * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro. (ft_black_render): Updated. * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro. (gray_raster_render): Updated.
Werner Lemberg 1e36c2e2 2016-06-16T06:17:54 * src/base/md5.c: Updated to recent version.
Alexei Podtelezhnikov 7f569f45 2016-06-14T23:49:31 Move function.
Alexei Podtelezhnikov 32acceff 2016-06-14T23:38:17 * src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
Werner Lemberg 05a55a56 2016-06-13T12:16:45 [autofit] Add support for Cherokee script. * src/autofit/afblue.dat: Add blue zone data for Cherokee. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Cherokee standard characters. * src/autofit/afranges.c: Add Cherokee data. * src/autofit/afstyles.h: Add Cherokee data.
Werner Lemberg b6b26f45 2016-06-09T06:53:48 [bdf] Check number of properties (#48166). * src/bdf/bdflib.c (_bdf_parse_start): Implement.
Alexei Podtelezhnikov 77180c7a 2016-06-08T23:31:28 [smooth] Re-enable new line renderer on 64-bit archs. * src/smooth/ftgrays (gray_render_line): Conditionally re-enable new implementation, where it is safe from overflows.
Alexei Podtelezhnikov 9cf232ed 2016-06-08T23:19:41 [smooth] Minor clean-ups. * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way. (gray_render_span): Remove spurious casts and streamline.
Werner Lemberg 223d002c 2016-06-07T13:52:14 [autofit] Add support for Ethiopic script. * src/autofit/afblue.dat: Add blue zone data for Ethiopic. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Ethiopic standard characters. * src/autofit/afranges.c: Add Ethiopic data. * src/autofit/afstyles.h: Add Ethiopic data.
Werner Lemberg 15eab363 2016-06-07T10:36:27 [autofit] Fix compilation with VS2016 (#48126). This compiler doesn't recognize the end-of-comment sequence `*/' if it immediately follows non-ASCII characters. * src/autofit/afscript.h: Ensure whitespace before `*/'.
Werner Lemberg 5485a34c 2016-06-04T06:57:32 [truetype] Fix missed test for named instances (#48122). * src/truetype/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
Nikolaus Waxweiler b4598828 2016-05-31T08:39:52 [truetype] Let SHPIX move points in the twilight zone in v40. * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in the twilight zone. Otherwise, treat SHPIX the same as DELTAP. Unbreaks various fonts such as older versions of Rokkitt and DTL Argo T Light that would glitch severly after calling ALIGNRP after a blocked SHPIX.
Werner Lemberg d28eac24 2016-05-30T00:23:59 [type42] Support `CharStrings' entry format as created by LilyPond. * src/type42/t42parse.c (t42_parse_charstrings): Handle entries having the format (foo) cvn 12345 def
Werner Lemberg 46d36904 2016-05-28T19:38:43 * src/autofit/afranges.c: Remove `UL' postfix from hex numbers. Suggested by Alexei. `UL' is only needed for 16bit compilers, but it seems noone is using this anymore (and we no longer test whether FreeType compiles in such an environment). Otherwise, it is easy to add the postfix to the `AF_UNICODE_RANGE' macro.
Alexei Podtelezhnikov e9f95093 2016-05-26T23:46:38 [smooth] Shrink bisection stack. The convergence of Bézier flatteners is fast with the deviation from straight line being assymptotically cut 4-fold on each bisection. This justifies smaller bisection stack size. * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'. (gray_render_conic): Create and use conic `bez_stack'. Move back the band analysis from... (gray_conic_to): ... here. (gray_render_cubic): Create and use cubic `bez_stack'. Move back the band analysis from... (gray_cubic_to): ... here. (gray_move_to): Updated.
Werner Lemberg e97918c5 2016-05-25T07:13:29 [autofit] Fixes for Armenian and Gujarati ranges. * src/autofit/afranges.c (af_armn_uniranges): Corrected. (af_guru_nonbase_uniranges): Make U+0A3E a base character.
Werner Lemberg 1dcda70e 2016-05-24T23:10:44 [autofit] Ordering, whitespace.
Werner Lemberg a74f40f9 2016-05-24T18:27:18 [autofit] Add support for Armenian script. * src/autofit/afblue.dat: Add blue zone data for Armenian. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Armenian standard characters. * src/autofit/afranges.c: Add Armenian data. * src/autofit/afstyles.h: Add Armenian data.
Werner Lemberg 9d179e3d 2016-05-22T08:38:41 [autofit] Add blue-zone support for Gurmukhi script. This essentially moves the Gurmukhi script from the `Indic' hinter to the `Latin' hinter. * src/autofit/afblue.dat: Add blue zone data for Gurmukhi. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Gurmukhi standard characters and move data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afranges.c: Move Gurmukhi data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use AF_WRITING_SYSTEM_LATIN.
Werner Lemberg d583561e 2016-05-21T11:20:42 Minor clang++ fixes. * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add initializer. * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit conversion from NULL to boolean.
Nikolaus Waxweiler 01de37e5 2016-05-18T07:07:44 [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3]. * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with... (tt_loader_set_pp): ... this new function. Update all callers.
Nikolaus Waxweiler ed1d8983 2016-05-18T06:58:44 [truetype] New implementation of v38 bytecode interpreter [2/3]. This patch actually modifies the bytecode interpreter. See added comments in `ttinterp.h' for more information on this and the following commit in the series. * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by... (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY, SUBPIXEL_HINTING_MINIMAL): ...new macros. (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards compatibility. Updated. (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD): Updated. (Ins_INSTCTRL): Handle native ClearType mode flag. Updated. (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards compatibility. (Move_Zp2_Point): Ditto. (Ins_SHP): Updated. (Ins_SHPIX): Handle backwards compatibility. Updated. (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated. (Ins_ALIGNRP): Updated. (Ins_IUP, Ins_DELTAP): Handle backwards compatibility. Updated. (Ins_GETINFO): Handle v38 flags. Updated. (TT_RunIns): Handle backwards compatibility mode. Updated.
Nikolaus Waxweiler 59615736 2016-05-18T06:57:59 [truetype] New implementation of v38 bytecode interpreter [1/3]. This patch prepares data structures and the like. See added comments in `ttinterp.h' for more information on this and the following commits in the series. * devel/ftoption.h, include/freetype/config/ftoption.h (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate between subpixel versions. (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY, TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros. * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro. * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields `subpixel_hinting_lean', `vertical_lcd_lean', `backwards_compatibility', `iupx_called', iupy_called', and `grayscale_cleartype' for new hinting mode. * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40 interpreters conditionally. * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless in v38 backwards compatibility mode. Updated. (compute_glyph_metrics): Add v38 backwards compatibility mode constraint for adjusting advance widths. Updated. (tt_loader_init): Handle new flags `subpixel_hinting_lean', `grayscale_cleartype', and `vertical_lcd_lean'. Updated. (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP): Updated. * src/truetype/ttobjs.c (tt_driver_init): Conditionally set default interpreter version number. * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
Werner Lemberg 119e8e41 2016-05-17T19:54:09 [cff] Fix matrix scaling (#47848). * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro. * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling value of all matrix coefficients to scale matrix. * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for matrix normalization if `matrix->yy' is zero.
Werner Lemberg 533887a9 2016-05-16T20:38:41 Whitespace, formatting.
Werner Lemberg bebac3cf 2016-05-16T20:16:35 [base] Reject invalid sfnt Mac resource (#47891). * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity of `CID ' and `TYPE1' table offset and length.
Werner Lemberg 09f0e0fc 2016-05-16T19:44:19 [cid] Fix scanning for `StartData' and `/sfnts' (#47892). * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN): New macros. (cid_parser_new): Fix and document algorithm.
suzuki toshiya a7d8bdbc 2016-05-16T21:54:32 [truetype] Improve the recursive reference detector. The previous fix for #46372 misunderstood a composite glyph referring same component twice as a recursive reference. See the discussion http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html Thanks to Khaled Hosny for finding this issue. * src/truetype/ttgload.c (ft_list_get_node_at): A function to get the i-th node from FT_List. (load_truetype_glyph): In the traversal scan of the reference tree in the composite glyph, we clear the nodes filled by previous sibling chain.
Alexei Podtelezhnikov 500bcbdd 2016-05-07T22:28:43 Duplicates.
Werner Lemberg 7ae9b999 2016-05-07T16:24:03 [cache] Allow value 0 for face ID. We never dereference `face_id', and some implementations might use a running number instead of a pointer. Additionally, disallowing value zero was undocumented. * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for `face_id'.
Alexei Podtelezhnikov 6e88087d 2016-05-05T23:41:03 [smooth] More efficient accounting of conic splits and draws. A single decrement counter of segments to draw, instead of an array, contains all the information necessary to decide when to split and when to draw a conic segment. The number of splits before each draw is equal to the number of trailing zeros in the counter. * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'. (gray_render_conic): Updated to use decrement counter of segments.
Werner Lemberg 0b3cb8a8 2016-05-05T12:28:48 [cff, truetype] Fix logic for `FT_Property_Set'. Otherwise some properties could be set to arbitrary values, which is harmless, but querying could give wrong positive results. * src/cff/cffdrivr.c (cff_property_set) [hinting-engine], * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]: Only allow defined values.
Werner Lemberg 22167629 2016-04-25T21:18:24 [autofit] Add blue-zone support for Gujarati script. This essentially moves the Gujarati script from the `Indic' hinter to the `Latin' hinter. * src/autofit/afblue.dat: Add blue zone data for Gujarati. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Gujarati standard characters and move data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afranges.c: Move Gujarati data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afstyles.h: Update Gujarati data; in particular, use AF_WRITING_SYSTEM_LATIN.
Werner Lemberg 432e00db 2016-04-24T08:14:07 [truetype] Fix deallocation in case of error (#47726). * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in `outline' that are going to be deallocated in case of error.
Werner Lemberg 80afef8b 2016-04-23T21:34:15 [autofit] Improve Georgian blue zone characters. Suggested by Akaki Razmadze <razmadzekoko@gmail.com>. * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM): Updated. * src/autofit/afblue.c: Regenerated.
Behdad Esfahbod 99eff678 2016-04-16T07:32:23 [truetype] Another fix for non-intermediate GX tuples. * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing cases.
Alexei Podtelezhnikov bbcb9779 2016-04-13T00:11:52 Typos.
Werner Lemberg c8c7ad79 2016-04-09T08:24:00 [autofit] Add support for Georgian scripts. Georgian is problematic, since `uppercase' forms of Mkhedruli (called Mtavruli) are not yet defined in Unicode, which means that proper blue zones can't be defined. However, there is already a proposal submitted to Unicode; see http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf Additionally, due to historical reasons, Unicode treats Khutsuri as the same script as Mkhedruli, and so does OpenType. However, since the two scripts have completely different shapes it can happen that blue zones differ considerably. The tag `geok' used here (derived from ISO 15924) to differentiate the two scripts is not an OpenType tag in use. If we now have a font that contains both glyphs for Mkhedruli and Khutsuri, and it uses OpenType features for both also, HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence, blue zones for `geok' are not used for glyphs involved in the OpenType features. An issue not yet resolved is which OpenType feature should be used to access Mtavruli glyph shapes; right now, FreeType doesn't set up support for them, but it is easy to add them later on as soon as more information is available. * src/autofit/afblue.dat: Add blue zone data for Georgian. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Georgian standard characters. * src/autofit/afranges.c: Add Georgian data. * src/autofit/afstyles.h: Add Georgian data.
Alexei Podtelezhnikov e8542260 2016-04-08T23:21:34 Typos.
Werner Lemberg bf8f100d 2016-04-05T11:43:58 [autofit] Provide dummy blue zone for pseudo script `none'. Even if the dummy hinter is used as the handler for `none' (which doesn't use blue zones), it is more consistent than the old value (which was 0), pointing to Arabic... * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
Werner Lemberg fb550bf4 2016-03-30T18:55:27 * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
Werner Lemberg aff6ebb9 2016-03-30T09:11:02 * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
Werner Lemberg ccd771cd 2016-03-30T08:44:46 * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
Werner Lemberg ff82747e 2016-03-29T09:19:22 * src/base/ftadvance.c (FT_Get_Advances): Fix invalid left shift.
Werner Lemberg 351fc4b4 2016-03-29T09:13:13 [pfr] Fix binary search (#47514). * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border conditions correctly.
Werner Lemberg 2a03e5d9 2016-03-29T08:56:03 [pfr] Minor. * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left', `right', and `middle' with `min', `max', and `mid' as used in other FreeType binary search code. (pfr_load_bitmap_metrics): Fix invalid left shift.
Werner Lemberg 31dc8f98 2016-03-29T08:37:07 * src/pfr/pfrtypes.h: Replace all enums with macros. We need `~FOO' to unset bits, and only with unsigned values (which `enum' isn't normally) this works cleanly.
Werner Lemberg f73a9937 2016-03-26T08:31:19 [autofit] Mark `aflatin2.[ch]' as not compilable.
Werner Lemberg b069a590 2016-03-26T08:00:07 [pfr] Robustify bitmap strike handling (#47514). We did a binary search for a charcode without ensuring that the searched data is ordered. Validating the order is now done lazily, this is, the first access to a bitmap glyph triggers the order check in the corresponding bitmap strike. * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'. * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument a pointer. Handle new PFR_BITMAP_XXX flags. (pfr_slot_load_bitmap): Updated.
Werner Lemberg 0003cb91 2016-03-26T07:34:30 [pfr] Fix handling of compound glyphs. Extra items are indicated with different bit positions. * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'. * src/pfr/pfrgload.c (pfr_glyph_load_simple, pfr_glyph_load_compound): Use them.
Werner Lemberg 2aa69565 2016-03-25T10:54:37 [pfr] Minor. * src/pfr/pfrsbit.c, srf/pfr/pfrobjs.c: Use flag names instead of bare numbers.
Werner Lemberg 59828f72 2016-03-25T08:47:14 [pfr] Various clang sanitizer fixes. * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle signed nibbles. (pfr_slot_load_bitmap): Correctly exit frame in case of error. Fix invalid left shifts.
Alexei Podtelezhnikov 98967b77 2016-03-23T23:07:24 Add comment.
Werner Lemberg 31f2dc19 2016-03-23T07:31:59 [raster, smooth] Directly test outline size (#47500). This improves stand-alone compilation. * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to... * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c (gray_raster_render): ...these functions.
Werner Lemberg e9181aba 2016-03-23T06:58:20 [raster, smooth] Fix some clang sanitizer runtime issues. * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode, ft_black_render): Harmonize signatures with `ftimage.h'. * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset): Ditto.
Werner Lemberg b6633073 2016-03-22T08:26:55 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor. This fixes an AddressSanitizer issue: ttgload.c:430:7: runtime error: null pointer passed as argument 1, which is declared to never be null
Werner Lemberg 614a8f17 2016-03-21T19:39:14 * src/autofit/afhints.c (af_glyph_hints_reload): Thinko. This fixes the previous commit to this file.
Alexei Podtelezhnikov 3beccbdf 2016-03-21T00:07:47 [smooth] Partly revert recent changes. * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework conditions to fix rendering issues.
Werner Lemberg 709486db 2016-03-20T22:20:32 [autofit] Show `near' points in tracing. * src/autofit/afhints.h (AF_FLAG_NEAR): New macro. * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it. (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
Alexei Podtelezhnikov 8e8bb126 2016-03-18T23:21:59 [smooth] Minor refactoring and microoptimizations. * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move band clipping from here. (gray_conic_to, gray_cubic_to): ... to here. (gray_rander_line, gray_render_scanline): Initialize variables closer to their use.
Alexei Podtelezhnikov 84b2c633 2016-03-17T00:53:09 [smooth] Minor refactoring. * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move upscaling from here... (gray_conic_to, gray_cubic_to):... to here.
Werner Lemberg da86b73f 2016-03-15T07:55:05 * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
Alexei Podtelezhnikov 1865575a 2016-03-14T22:39:22 [smooth] Temporarily revert 6eb6158dd787 (#47114). * src/smooth/ftgrays.c (gray_render_line): Old implementation.
Werner Lemberg ee6b4115 2016-03-12T23:48:13 [ftfuzzer] Improve coverage of rasterfuzzer. * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use input data for `tags' array also. Trim input data to get more positive hits.
Behdad Esfahbod 74c0a72d 2016-03-09T20:35:27 [truetype] Fix handling of non-intermediate GX tuples. We probably did not notice this as all fonts we tested had only tuple_coords[i] be +1 or -1 for non-intermediate tuples. * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
Alexei Podtelezhnikov 495de6cc 2016-03-06T23:54:34 [base] Refuse to render enormous outlines (#47114). The goal is to avoid integer overflows in the rendering algorithms. The limit is chosen arbitrarily at some 2^18 pixels, which should be enough for modern devices including printers. * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject enormous outlines.
Alexei Podtelezhnikov d0b0e31e 2016-03-06T23:01:50 [smooth] Replace left shifts with multiplications (#47114). * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
Werner Lemberg caa48b0d 2016-03-05T19:47:07 [autofit] Avoid excessive stem length rounding (#25392). * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument to pass difference between hinted and unhinted position of base point; use this to adjust the stem width depending on the PPEM so that it doesn't become too large under certain circumstances. Update all callers using value 0 for this argument except... (af_latin_align_linked_edge): Pass position delta of base point to `af_latin_compute_stem_width'.
Werner Lemberg a8b95622 2016-03-01T09:37:12 [ftfuzzer] Add unit for testing smooth and black rasterizers. * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
Werner Lemberg 3eb6f66a 2016-03-01T07:10:30 [autofit] Fix reallocation error introduced in 2016-02-27 (#47310). * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign `prev_segment' after reallocation.
Werner Lemberg 015c6e08 2016-03-01T06:45:52 Fix clang warnings. * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use FT_UShort for `min_flags' and `max_flags'. Initialize `prev_*' variables. * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix types of local variables. * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]: Update `printf' format string. * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast. (LLVMFuzzerTestOneInput): Fix loop type.
Werner Lemberg 5c7646d2 2016-02-29T09:12:35 [autofit] Add blue-zone support for Sinhala script. This essentially moves the Sinhala script from the `Indic' hinter to the `Latin' hinter. * src/autofit/afblue.dat: Add blue zone data for Sinhala. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Sinhala standard character and move data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afranges.c: Move Sinhala data out of AF_CONFIG_OPTION_INDIC block. * src/autofit/afstyles.h: Update Sinhala data; in particular, use AF_WRITING_SYSTEM_LATIN.
Werner Lemberg f2169478 2016-02-28T22:48:34 [autofit] Properly handle spikes pointing to the x-axis. An example that gets better rendered is glyph `uusignTaml' (glyph index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem. * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly handle segments where the last point of the first segment is identical to the first point in the second one. This can happen for malformed fonts or spikes. We either merge the new segment with the previous one (both segments point into the same direction), or we discard the shorter segment if they point into different directions.