Anuj Verma
31c0a833d6
[sdf] Fixed corner checks and improved performance.
...
* src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for
corner if two distance (for different curves) are very close.
* src/sdf/ftsdf.c (sdf_conic_to): Added check to figure out if
the conic can be treated as a line (which happens if the control
point coincide with any end-point).
Also, replace tabs `\t` with spaces.
2021-10-16 10:02:30 +05:30
Anuj Verma
3d3be1dfd1
[sdf] Impliment deviation based splitting for bezier curves.
...
* src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Added checks
to figure out the deviation of bezier curves and stop splitting
if the curve is flat enough.
* src/sdf/ftsdfcommon.h (ONE_PIXEL): Added macro for unit pixel size
in 26.6 fixed point representation.
2021-10-15 08:55:41 +05:30
Alexei Podtelezhnikov
946df22165
* src/cid/cidload.c (cid_face_open): Streamline SubrCount check.
2021-10-07 22:44:53 -04:00
Alexei Podtelezhnikov
0313a11c4c
* src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading.
2021-10-07 22:43:12 -04:00
Alexei Podtelezhnikov
22befeef82
Signedness revisions.
...
This eliminates explicit casting by switching to unsigned fields.
The revisions mostly impact the handling of CID fonts.
* include/freetype/fttypes.h (FT_Data): Change to unsigned `length`.
* include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`.
(CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`.
* include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for
`byte_len`.
* src/cid/cidgload.c (cid_load_glyph): Updated.
* src/cid/cidload.h (cid_get_offset): Update argument.
* src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open):
Updated.
* src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data):
Updated.
* src/psaux/psft.c (cf2_getT1SeacComponent): Updated.
* src/truetype/ttgload.c (TT_Process_Composite_Glyph,
load_truetype_glyph): Updated.
2021-10-07 22:41:56 -04:00
Alexei Podtelezhnikov
0f23ae2e80
* src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround.
2021-10-05 16:28:40 -04:00
Alexei Podtelezhnikov
ec6a458821
[pshinter] Additional clean-ups.
...
* src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code.
* src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields.
2021-10-04 23:10:59 -04:00
Alexei Podtelezhnikov
227445f613
[pshinter] More convenient direction definition.
...
It is easier to check directions using flags than integer values.
* src/pshinter/pshalgo.h (PSH_Dir): Redefine directions.
(PSH_PointRec): Use them as an enum type.
* src/pshinter/pshalgo.c (psh_compute_dir): Modify return type.
(psh_glyph_init, psh_hint_table_find_strong_points,
psh_glyph_find_blue_points): Update users.
2021-10-03 22:48:23 -04:00
Alexei Podtelezhnikov
d102a51438
[pshinter] Remove unnecessary check.
...
* src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not
check if direction is defined before checking how.
2021-10-03 22:45:42 -04:00
Alexei Podtelezhnikov
68fae526c4
* src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting.
2021-09-30 22:59:04 -04:00
Alexei Podtelezhnikov
1d79c892cf
* src/tools/apinames.c: Facilitate OpenVMS linker options.
2021-09-29 22:17:31 -04:00
Alexei Podtelezhnikov
dd0ccdc3d3
* src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation.
2021-09-28 22:57:58 -04:00
Alexei Podtelezhnikov
a69320a9b2
[bdf] Simplify comment collection or lack thereof.
...
BDF comments are neither actually collected nor retrieved. There is
no need to be fancy with delimiters.
* src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros...
(bdf_load_font): ...and do not null-terminate comments additionally.
(_bdf_parse_glyphs): Check if comments are kept, which they are not.
(_bdf_parse_start): Minor clean up.
2021-09-24 22:06:44 -04:00
Alexei Podtelezhnikov
a29e020059
Use NULL for pointers only.
...
* src/bdf/bdflib.c (*): Code changes.
* include/freetype/freetype.h: Comments only.
* src/cff/cffload.c, src/cff/cffobjs.c: Ditto.
* src/winfonts/winfnt.c: Ditto.
2021-09-23 23:10:26 -04:00
Alexei Podtelezhnikov
90b14882ec
[bdf, pcf] Minor optimization.
...
* src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a
small job.
* src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto.
* src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment.
2021-09-22 20:20:04 -04:00
Alexei Podtelezhnikov
b4dddd8244
[base] Initialize stream memory earlier.
...
With Windows memory management tracking heap, it is important to use
it during the stream opening fallback. In Unix, the argument is
unused, but it is better to set it correctly.
* src/base/ftobjs.c (FT_Stream_New): Set memory before calling
`FT_Stream_Open`.
* builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open,
ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper
memory argumment.
2021-09-22 00:30:03 -04:00
Alexei Podtelezhnikov
892e7eadc9
* src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner.
2021-09-21 14:39:21 +00:00
Alexei Podtelezhnikov
6190360967
Minor.
2021-09-20 22:18:29 -04:00
Alexei Podtelezhnikov
71969d1edf
* src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW.
2021-09-20 14:31:45 -04:00
Alexei Podtelezhnikov
529158983d
[cache] Minor clean-ups.
...
* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses.
* src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
(FTC_Cache_RemoveFaceID): Remove unnecessary variable.
2021-09-18 07:05:55 -04:00
Edwin Steiner
6e1ef98a04
[cff] Explicitly set StandardEncoding or ExpertEncoding offsets.
...
Fixes #1097 .
* src/cff/cffload.c (cff_encoding_load): Set special offset values.
2021-09-16 23:08:46 -04:00
Alexei Podtelezhnikov
fce74b7365
[cache] Miscellaneous clean-ups.
...
* src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear):
Remove barely used variables.
(ftc_cache_add): Adjust casting.
* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting.
* src/cache/ftcsbits.c (ftc_snode_load): Remove casting.
2021-09-16 17:03:19 -04:00
Alexei Podtelezhnikov
79d14cc256
* src/cff/cffload.c (cff_fd_select_get): Remove casting.
2021-09-16 16:41:56 -04:00
Alexei Podtelezhnikov
ae516e6a43
* src/pcf/pcfread.c (pcf_read_TOC): Remove casting.
2021-09-16 16:39:23 -04:00
Alexei Podtelezhnikov
801b7540dc
Minor type adjustments.
...
* src/cff/cffobjs.c (cff_face_init): Reduce casting.
* src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto.
* src/type1/t1load.c (T1_Set_MM_Design): Ditto.
2021-09-14 22:55:50 -04:00
Alexei Podtelezhnikov
49270c1701
Replace boolean allocation macros with MEM ones.
...
* src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro.
* src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto.
* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto.
* src/cache/ftccache.c (ftc_cache_init): Ditto
* src/gzip/ftgzip.c (ft_gzip_alloc): Ditto.
* src/psnames/psmodule.c (ps_unicodes_init): Ditto.
* src/sfnt/sfobjs.c (sfnt_load_face): Ditto.
* src/sfnt/ttload.c (tt_face_load_name): Ditto.
2021-09-14 21:32:43 -04:00
Alexei Podtelezhnikov
9a4c846e60
[cache] Revert to some zeroing.
...
* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero
`buckets` again to fix some crashes.
2021-09-14 21:25:47 -04:00
Alexei Podtelezhnikov
0a8ee851e0
* src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops.
...
Fixes fallout from 731d0b6856
reported as
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685
2021-09-14 10:26:37 -04:00
Alexei Podtelezhnikov
731d0b6856
[cff, pshinter] Clean up unsigned counters.
...
Loops with unsigned decrement can be reliably stopped when the counter
wraps around after reaching zero.
* src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter.
* src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto.
* src/pshinter/pshrec.c (ps_mask_table_merge): Ditto.
2021-09-13 16:29:08 -04:00
Alexei Podtelezhnikov
058f3f2d7d
[bdf, psnames, sfnt] Avoid some memory zeroing.
...
* src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro.
* src/sfnt/sfobjs.c (sfnt_load_face): Ditto.
* src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero.
2021-09-13 16:24:25 -04:00
Alexei Podtelezhnikov
59b43ae663
* src/base/ftobjs.c (FT_CMap_New): Revert to zeroing.
...
Fixes fallout from c1fa7aa2bc
, reported as
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641
2021-09-13 16:16:18 -04:00
Alexei Podtelezhnikov
073ff2d77e
[truetype] Clean up `exec` initialization.
...
* src/truetype/ttinterp.c (Init_Context): Absorbed into...
(TT_New_Context): ... this function.
2021-09-13 00:04:45 -04:00
Alexei Podtelezhnikov
fab94f9fcc
[truetype] Avoid some memory zeroing.
...
* src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro.
* src/truetype/ttinterp.c (Update_Max): Ditto.
* src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto.
2021-09-12 23:30:07 -04:00
Alexei Podtelezhnikov
c1fa7aa2bc
[base] Avoid some memory zeroing.
...
* src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done,
ft_open_face_internal, ft_open_face_internal): Use Q-macros.
2021-09-12 23:25:46 -04:00
Alexei Podtelezhnikov
a8e8d9d7a4
[cache, psaux] Remove zeros.
...
* src/cache/ftcmru.c (FTC_MruList_New): Remove initialization.
* src/psaux/psstack.c (cf2_stack_init): Ditto.
2021-09-12 23:21:32 -04:00
Alexei Podtelezhnikov
9870b6c07e
[cache] Avoid some memory zeroing.
...
* src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro.
* src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto.
* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto.
2021-09-12 14:32:22 -04:00
Alexei Podtelezhnikov
2d57b05928
* src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero.
...
Fixes fall out from a7b199d081
.
2021-09-11 10:38:08 -04:00
Alexei Podtelezhnikov
5b626281f1
[truetype] Tweak `hdmx` checking.
...
Fixes #1096 .
* src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding.
2021-09-10 10:19:07 -04:00
Alexei Podtelezhnikov
e942a31007
[truetype] Tweak `loca` clamping.
...
Fixes #1095 .
* src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping.
* include/freetype/internal/tttypes.h (TT_Face): Correct docs.
2021-09-09 22:17:46 -04:00
Alexei Podtelezhnikov
c350aac099
Fortify memory debugging (cont'd).
...
* src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger.
(ft_mem_table_destroy): Move `FT_DumpMemory` call from here...
(ft_mem_debug_done): ... to here.
2021-09-08 12:18:23 -04:00
Alexei Podtelezhnikov
63806aad9f
Fortify memory debugging.
...
These changes are neccessary to properly recover `memory->user` that
holds the Windows heap handle now.
* src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations,
initializations, and sizing instead of...
(ft_mem_table_new): ... this function removed.
(ft_mem_debug_done): Better check for the active debugger and free the
debugger table here instead of...
(ft_mem_table_destroy): ... here.
2021-09-08 10:54:44 -04:00
Werner Lemberg
77dcc5ed6a
src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600.
...
This allows C99 compilation on Solaris.
Problem reported by Mojca Miklavec.
2021-09-07 18:51:53 -07:00
Werner Lemberg
60a93ea231
[dlg] Synchronize with upstream.
...
* src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600.
Fixes #1093 .
2021-09-07 06:40:55 -07:00
Alexei Podtelezhnikov
aee1fd3bb8
Cosmetic zeros.
2021-09-03 22:13:22 -04:00
Alexei Podtelezhnikov
7bf655b228
* src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory.
2021-09-03 11:31:41 -04:00
Alexei Podtelezhnikov
7f8f0c1c70
[smooth, raster, sdf] Clean up initialization calls.
...
* src/raster/ftraster.c (ft_black_init): Removed.
(ft_black_new): Clean up.
* src/sdf/ftbsdf.c (bsdf_raster_new): Ditto.
* src/sdf/ftsdf.c (sdf_raster_new): Ditto.
* src/smooth/ftgrays.c (gray_raster_new): Ditto.
2021-09-02 23:30:31 -04:00
Alexei Podtelezhnikov
a7b199d081
* src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing.
2021-09-02 22:58:50 -04:00
Alexei Podtelezhnikov
0a6f0f8fed
* src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling.
2021-09-02 22:52:21 -04:00
Alexei Podtelezhnikov
a81cf5aade
Cosmetic zeros.
2021-09-02 22:10:57 -04:00
Alexei Podtelezhnikov
7482c98f15
[base] Clean up stream reading.
...
* src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset,
FT_Stream_ReadULong and their LE variants): Remove unnecessary
initialization and slightly refactor.
(FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned
value and align with sister functions.
* include/freetype/internal/ftstream.h (FT_Stream_GetByte,
FT_Stream_ReadByte): Update prototypes and caller macros.
2021-09-01 22:18:29 -04:00