Commit graph

4957 commits

Author SHA1 Message Date
Anuj Verma
e6576cc0e7 [sdf] Precompute the orthogonality. 2020-08-02 16:33:18 +05:30
Anuj Verma
1e3c41d19e [sdf] Added bounding box optimization. 2020-08-02 16:33:18 +05:30
preversewharf45
1d5d8ff288 * src/sdf/ftsdfrend.c (sdf_shape_dump): Use %ld' to printf signed long'. 2020-08-02 16:33:18 +05:30
Anuj Verma
44e16a0be6 * src/sdf/ftsdfrend.c (ft_sdf_render): Don't negate unsigned integers. 2020-08-02 16:33:18 +05:30
Anuj Verma
4fcc1653ca * src/sdf/ftsdf.c: Use ASCII single quote ('). 2020-08-02 16:33:18 +05:30
Anuj Verma
ddf631729e [sdf] Added function to find shortest distance from a point to a cubic. 2020-08-02 16:33:18 +05:30
Anuj Verma
5baa2cefc6 * src/sdf/ftsdf.c (sdf_contour_get_min_distance): Use epsilon. 2020-08-02 16:33:18 +05:30
Anuj Verma
76e67227ec * src/sdf/ftsdf.c (sdf_shape_dump): Add more info to the debug output. 2020-08-02 16:33:18 +05:30
Anuj Verma
3e52d1a7a8 * src/sdf/ftsdf.c (MAX_NEWTON_DIVISIONS): Renamed to avoid confusion. 2020-08-02 16:33:18 +05:30
Anuj Verma
363f1e8de1 [sdf] Added Newton's method for conic curve. 2020-08-02 16:33:17 +05:30
Anuj Verma
be3b7d7945 * src/sdf/ftsdf.c: More comments and code style fix. 2020-08-02 16:33:17 +05:30
Anuj Verma
d0e3074738 [sdf] Make squared distances toggleable. 2020-08-02 16:33:17 +05:30
Anuj Verma
97474a7072 * src/sdf/ftsdf.c (get_min_distance_conic): Use 0, 1 in case of 0 roots. 2020-08-02 16:33:17 +05:30
Anuj Verma
f9b4f37433 [sdf] Added function to find shortest distance from a point to a conic. 2020-08-02 16:33:17 +05:30
Anuj Verma
5cbcab183a * src/sdf/ftsdf.c (get_min_distance_line): Minor bug 2020-08-02 16:33:17 +05:30
Anuj Verma
c8e3c5a420 * src/sdf/ftsdf.c: Refactored the code. 2020-08-02 16:33:17 +05:30
Anuj Verma
f1de833a9d [sdf] Added functions to solve polynomial equations. 2020-08-02 16:33:17 +05:30
Anuj Verma
92a5312036 * src/sdf/ftsdf.c: Use FT_16D16 instead of FT_Fixed to avoid confusion. 2020-08-02 16:33:17 +05:30
Anuj Verma
811b6a7177 * src/sdf/ftsdf.c (cube_root, arc_cos): Added a few math functions. 2020-08-02 16:33:17 +05:30
Anuj Verma
38df99a1b4 [sdf] Fixed compilation under gnumake. 2020-08-02 16:33:17 +05:30
Anuj Verma
96883decbb [sdf] Added function to resolve corners. 2020-08-02 16:33:17 +05:30
Anuj Verma
03e6debb80 [sdf] The module can now generate SDF for outline with only lines. 2020-08-02 16:33:17 +05:30
Anuj Verma
063b65d583 [sdf] Added function to find shortest distance from a point to a line. 2020-08-02 16:33:17 +05:30
Anuj Verma
186cc478ae * src/sdf/ftsdf.c: Manually iterate through the lists. 2020-08-02 16:33:17 +05:30
Anuj Verma
e9fce03032 [sdf] Added basic outline of the functions required to generate sdf. 2020-08-02 16:33:17 +05:30
Anuj Verma
6d4e00ae37 [sdf] Added `SDF_Raster_Params'. 2020-08-02 16:33:17 +05:30
Anuj Verma
3ebcbd7066 * include/freetype/ftimage.h (FT_RASTER_FLAG_): Added a new raster flag. 2020-08-02 16:33:16 +05:30
Anuj Verma
f02d1acb89 * src/sdf/ftsdf.c (sdf_shape_dump): Use FT_TRACEX' instead of printf'. 2020-08-02 16:33:16 +05:30
Anuj Verma
63c2ac5fae * src/sdf/ftsdf.c (sdf_shape_dump): Added debugging function. 2020-08-02 16:33:16 +05:30
Anuj Verma
2f0d349d8c [sdf] Added functions to de-allocate `SDF_' structs. 2020-08-02 16:33:16 +05:30
Anuj Verma
54ff90398a [sdf] Decompose outline and store it in a `SDF_Shape'. 2020-08-02 16:33:16 +05:30
Anuj Verma
38bc88ae6f [sdf] Added essential enums and structs required. 2020-08-02 16:33:16 +05:30
Anuj Verma
d21ceef7b4 [sdf] Added functionality to set and get module properties. 2020-08-02 16:33:16 +05:30
Anuj Verma
29c92db771 [sdf] Implemented a few functions required by a renderer module. 2020-08-02 16:33:16 +05:30
Anuj Verma
08ba8d1422 added new `FT_RENDER_MODE_SDF' 2020-08-02 16:33:16 +05:30
preversewharf45
185d07b0cd added the structure of new `sdf' module 2020-08-02 16:33:16 +05:30
Priyesh Kumar
53be1753de Fix `-Wformat' compiler warnings.
* src/*: Fix format specifiers.

* builds/unix/ftsystem.c (FT_Stream_Open): Ditto.
2020-07-28 07:33:40 +02:00
Werner Lemberg
8cfc41ae95 Fix `-Wformat' compiler warnings.
Problem reported by Priyesh kumar <priyeshkkumar@gmail.com>

* src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments
to tracing macro.

* src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property):
Ditto.

* src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto.
Reformulate message.

* src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto.

* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.
Trace table offset, too.

* src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto.
2020-07-25 12:23:22 +02:00
Werner Lemberg
b6183ea369 * src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning.
Reported by Hin-Tak.
2020-07-23 13:03:22 +02:00
Werner Lemberg
96fb73efd5 Fix clang warnings.
* include/freetype/internal/autohint.h
(FT_DECLARE_AUTOHINTER_INTERFACE): New macro.
* src/autofit/afmodule.h: Use it to declare
`af_autofitter_interface'.

* include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro.
* src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class' and
`ft_outline_glyph_class'.

* src/base/ftglyph.c: Include `ftbase.h'.

* src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size'.

* src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result'.

* src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE'.
* src/psaux/psauxmod.h: Declare `afm_parser_funcs',
`t1_cmap_classes', `cff_decoder_funcs', and `psaux_module_class'.

* src/pshinter/pshmod.c: Include `pshmod.h'.

* src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign
conversion.
(compute_ULong_sum): Fix return type.
Fix implicit sign conversion.
(store_points): Fix type of `last_flag', `repeat_count', and `flag'.
Use casts to avoid warnings.
(reconstruct_glyf): Fix implicit sign conversion.
Use cast to avoid warning.
(get_x_mins): Fix implicit sign conversion.
* src/sfnt/ttcmap.c: Undef `TTCMAPCITEM'.
* src/sfnt/ttcmap.h: Define `TTCMAPCITEM' and include `ttcmapc.h' to
declare cmap classes.

* src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast.

* src/truetype/ttinterp.c (Ins_MIAP): Fix typo.
2020-07-07 16:58:14 +02:00
David Turner
0f35b042e0 [build] Really fix multi and C++ builds.
The following builds were still failing due to previous changes:

  make multi
  make multi CC="c++"
  make CC="c++"

This patch fixes the issues, which were missing includes to get the
right macro definitions in multi-build mode.

Also, `FT_UNUSED' is actually used by third-party code, so move it
back to `public-macros.h' to avoid breaking it.

* include/freetype/config/public-macros.h (FT_EXPORT): Remove
special definition for C++.
(FT_UNUSED): Define here instead of...
* include/freetype/config/compiler-macros.h: ... here.
(FT_FUNCTION_DECLARATION): Remove special definition for C++.
(FT_LOCAL_ARRAY_DEF): Fix definition.

* src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h,
src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'.
2020-07-07 06:51:09 +02:00
David Turner
cb4a943bc4 [build] Fix multi and C++ builds.
The following builds were failing due to previous changes:

  make multi
  make multi CC="c++"

* include/freetype/config/ftconfig.h: Remove `FT_END_HEADER'.

* include/freetype/config/ftheader.h (FT_BEGIN_HEADER,
FT_END_HEADER): Protect against redefinition.

* src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h,
src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h,
src/sfnt/woff2tags.h: Include `compiler-macros.h'.

* src/sfnt/woff2tags.c: Include `woff2tags.h'.
2020-07-06 11:49:00 +02:00
Werner Lemberg
2eb8f88626 [psaux] Improve `t1_decoder_parse_metrics' (#58646).
* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
corresponding code from old engine's `t1_decoder_parse_charstrings'
function to handle `op_callsubr' and `op_return'.
2020-07-06 09:21:03 +02:00
David Turner
bb66c8d8cf [build] Split off more stuff from `ftconfig.h'.
* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h: Split off macro definitions
required by the FreeType API headers to...
* include/freetype/config/public-macros.h: ...this new file.

* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h: Split off macro definitions used
by the library but not to be exposed to clients to...
* include/freetype/config/compiler-macros.h: ...this new file.

* include/freetype/internal/*.h, src/raster/ftraster.h: Include
`compiler-macros.h' where needed.
2020-07-05 10:42:23 +02:00
Alexei Podtelezhnikov
3bb512bc9f [smooth] Introduce direct oversampling for overlaps.
This implements oversampling to metigate artifacts in pixels partially
covered by overlapping contours.  It turns out that the 4x4
oversampling is sufficient but, at least, quadruples the rendering
time.  The outline has to set FT_OUTLINE_OVERLAP to use this method.

* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag.
* src/smooth/ftsmooth.c (ft_smooth_render): Check it to...
(ft_smooth_raster_overlap): ... inflate outline and set up direct
rendering for oversampling with...
(ft_smooth_overlap_spans): ... new span function that integrates them.
2020-07-03 22:29:34 -04:00
Alexei Podtelezhnikov
19d39f43d2 [smooth] Use direct rendering mode in Harmony.
Instead of rendering 3 bitmaps side by side and reshuffling, we use
direct rendering to deliver the bitmaps on each third byte.

* src/smooth/ftsmooth.c (ft_smooth_raster_lcd)
[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with...
(ft_smooth_lcd_spans): ... new span function.
2020-07-03 09:17:22 -04:00
Alexei Podtelezhnikov
2d67511a14 [smooth] Separate LCD paths from gray rendering.
This makes `ft_smooth_render' a lot smaller and easier to follow. It
also cleanly separates Harmony and ClearType-style LCD rendering
algorithms. Now I only wish to move LCD filtering and geometry from
FT_Library to FT_Renderer.

* src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here...
(ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here.
[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef's.
2020-07-03 09:02:09 -04:00
Sebastian Rasmussen
a443474755 [cff] Fix handling of `style_name == NULL' (#58630).
* src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy' fails
by returning NULL in `cff_face_init', `remove_style' is still
called.  This means that the NULL pointer is dereferenced, causing a
crash.
2020-06-20 05:31:34 +02:00
Sebastian Rasmussen
f594ffdc35 [cff] Fix another two memory leaks (#58629).
* src/cff/cffobjs.c (cff_size_init): If a call to `funcs->create'
fails to allocate one of the `internal->subfont' variables, make
sure to free `internal->topfont' and any successfully allocated
subfonts.
2020-06-19 18:55:49 +02:00
Sebastian Rasmussen
2e2f3cb5ba [psaux] Fix memory leak (#58626).
* src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init' fails to
allocate the stack, return error early.
2020-06-19 18:51:33 +02:00