Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 11beee85 | 2020-04-08 09:05:32 | Allow setting `CC' in Unix build (#58051). * builds/unix/unix-cc.in (CC): Use `override'. The command line value of `CC' (if any) is stored already in `CCraw'. | ||
| 7a019a63 | 2020-04-04 14:06:37 | [woff2] Return if single stream operation fails. * src/sfnt/sfwoff2.c (get_x_mins): Do it. * src/sfnt/woff2tags.c: Remove unused include. | ||
| 13c0df80 | 2020-03-22 23:29:51 | [docs] Fix building docs if `srcdir' != `builddir'. `docs/reference/*' was moved one directory up in commit 237fed6. * builds/unix/unix-def.in (PIP): Remove variable. * configure: Create `docs' directory and copy assets from `docs/markdown'. * docs/README: Output directory is `reference'. | ||
| 1fd31487 | 2020-03-21 20:17:17 | [docwriter] Drop support for Python < 3.5. Python versions < 3.5 have reached end-of-life and as such, no security or bug fixes will be provided for those versions. See https://devguide.python.org/#status-of-python-branches for more information. * Jamfile (RefDoc): Add `site' parameter. * builds/detect.mk (std_setup): Update Python version requirement. * builds/freetype.mk (refdoc-venv): Use pip as `python -m pip'. * builds/unix/ax_compare_version.m4, builds/unix/ax_prog_python_version.m4: Macros to detect Python version. New files. * builds/unix/configure.raw: Check for Python >= 3.5 and remove check for `pip'. * docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated. | ||
| 6a431038 | 2020-03-02 18:21:27 | [gzip] Support `gzip' encoded header conditionally. In order to support `gzip' encoded header the call to `inflateInit2' was modified in commit 6a92b1fadde26477a9179. However, this code breaks with the outdated internal version of zlib. This is a temporary fix to conditionally support `gzip' encoded header whenever a system installation of zlib is being used. Problem report in https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html * src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to `inflateInit2' depending on whether the system installation is being used or the internal copy. | ||
| 11975fe9 | 2020-02-29 20:18:00 | Fix state of `FT_Face' for buggy `gvar' tables (#57923). By resetting the blend as implemented with this commit fonts with invalid `gvar' tables may keep calling into `ft_var_load_gvar' from `tt_set_mm_blend' and failing, but the font was invalid anyway and we want to keep seeing the failure in `tt_set_mm_blend'. * src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of offset array once. Allocate arrays after `FT_FRAME_ENTER' (extra check before allocating and avoid needing to free array later if error entering frame). Always call `FT_FRAME_EXIT'. Consistently set counts immediately after array initialized. Reset the blend (particularly `blend->glyphoffsets') on failure. | ||
| 149b9055 | 2020-02-29 20:28:03 | ChangeLog entry for last commit. | ||
| 21c2311e | 2020-03-01 00:37:31 | Update docwriter stylesheet. This change is required to support docwriter 1.2.1. See https://github.com/freetype/docwriter/issues/36 for more information. * docs/markdown/stylesheets/extra.css: (.md-typeset code) -> (.md-typeset pre>code) (pre) -> (pre>code) (p, .md-typeset p, h4): Remove commented styles. (table.index): Remove unused styles. | ||
| 216e0776 | 2020-02-28 07:43:00 | [truetype] Add better checks for loading `gvar' table (#57905). * src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any `blend->xxxcount' values until the corresponding data has been checked. Also do some sanitizing to avoid a too early exit. (TT_Vary_Apply_Glyph_Deltas): Improve tracing message. | ||
| 141da028 | 2020-02-27 09:49:06 | Make `FT_HAS_*' and `FT_IS_*' really return true (#57906). * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it. | ||
| 5b1a37af | 2020-02-25 11:08:11 | Fix for CFF space glyph regression (#57541). * src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out with FT_OFFSET. | ||
| fa147af4 | 2020-02-22 18:30:46 | [woff2] Fix font table access. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20778 * src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of `head' table, which might not have been processed yet. | ||
| 6e49dff0 | 2020-02-21 20:57:52 | [psaux] Make `t1_decoder_parse_metrics' handle `op_div' (#57519). * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy corresponding code from old engine's `t1_decoder_parse_charstrings' function. | ||
| 49f3394d | 2020-02-19 12:56:49 | [autofit] Add support for Hanifi Rohingya script. * src/autofit/afblue.dat: Add blue zone data for Hanifi Rohingya. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Hanifi Rohingya standard character. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Hanifi Rohingya data. | ||
| 84d56589 | 2020-02-19 18:13:02 | Require HarfBuzz 1.8. * builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0 or newer. We are going to add auto-hinter support for Hanifi Rohingya, which was introduced in Unicode 11.0. | ||
| d09e8315 | 2020-02-16 15:24:27 | Minor. | ||
| 8930cc96 | 2020-02-12 18:25:03 | * src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708). | ||
| 4a19a53d | 2020-02-04 13:37:19 | * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#57732). The font that exceeds the old limit is Constantine, version 1.001. | ||
| e5038be7 | 2020-01-19 17:05:19 | Update all copyright notices. | ||
| fd03cf88 | 2020-01-04 19:28:36 | [base] Fix `FREETYPE_PROPERTIES=type1:hinting-engine=adobe`. * src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an incorrect return value that caused a warning. The function did the right thing, though. | ||
| 50b01387 | 2020-01-04 18:42:27 | Add reference to another oss-fuzz bug report. | ||
| a99a8e28 | 2020-01-03 18:09:12 | [woff2] Fix memory leaks and a runtime warning. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19773 * src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast. (reconstruct_hmtx): Add missing deallocation calls. | ||
| 10d8de75 | 2019-12-30 11:22:04 | [truetype] Fix UBSan warning on offset to nullptr (#57501). * src/truetype/ttinterp.c (Ins_CALL): Fail if `exc->FDefs' is null. | ||
| a4df0373 | 2019-12-31 16:04:01 | [woff2] Allow bitmap-only fonts (#57394). * src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf' and `loca' tables. | ||
| 496601e5 | 2019-12-18 23:11:22 | [docs] (2/2) Fix generation of API documentation (#56745). Creating the API Reference in the (new) `reference' sub-directory is consistent with other documentation sub-topics, such as `design', `glyphs' and `tutorial'. This patch fixes broken hyperlinks in the documentation pointing to and from the API Reference. It also allows web assets to load from their relative paths. * builds/freetype.mk (DOC_DIR): Adjust. (refdoc, refdoc-venv): Add `--site' argument. * builds/toplevel.mk (do-dist): Updated. | ||
| 237fed6d | 2019-12-18 23:07:35 | [docs] (1/2) Move static web assets (#56745). * docs/reference/*: Move ... * docs: ... one directory up. | ||
| 8cee1dde | 2019-12-17 14:12:38 | Fix more UBSan warnings on adding offset to nullptr (#57432). * src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c (cf2_initLocalRegionBuffer): Use `FT_OFFSET'. | ||
| 7e1b39f6 | 2019-12-16 11:07:58 | [truetype] Fix UBSan warnings on adding offsets to nullptr. Reported as https://bugs.chromium.org/p/chromium/issues/detail?id=1032152 * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'. | ||
| 0c14a3ad | 2019-12-14 00:04:01 | [truetype] Fix integer overflow. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19305 * src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG'. | ||
| 2c9a2d58 | 2019-12-13 23:56:25 | Another bunch of UBSan warnings on adding offsets to nullptr. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457 * src/autofit/aflatin.c (af_latin_hints_compute_segments, af_latin_hints_compute_edges): Use `FT_OFFSET'. * src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'. * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early if there is no charstring. * src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'. * src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for zero bitmap dimensions. | ||
| 11d4ce23 | 2019-12-09 12:40:42 | Fix more UBSan warnings on adding offset to nullptr (#57384) * src/smooth/ftsmooth.c (ft_smooth_render_generic), src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'. | ||
| dfc9a049 | 2019-12-05 08:44:30 | * src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'. Reported as https://bugs.chromium.org/p/chromium/issues/detail?id=1030614 | ||
| 551bd3a9 | 2019-12-03 11:52:48 | More nullptr offset UBSan warnings (#57331, #57347). * src/autofit/afcjk.c (af_cjk_hints_compute_segments), src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c (Ins_UNKNOWN): Use `FT_OFFSET'. | ||
| 4270e9f3 | 2019-11-27 11:38:45 | Avoid more nullptr offset UBSan warnings (#57316). * src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points. * src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'. * src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if `charstring_base' or `charstring_len' are null. * src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'. | ||
| d4f9c249 | 2019-11-23 11:25:28 | [base] Really fix #57194. Apply accidentally missed second part of patch. * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call `FT_GlyphLoader_CreateExtra'. | ||
| 9df460b6 | 2019-11-23 11:09:40 | [truetype] Avoid sanitizer warning (#57289). * src/truetype/ttpload.c (tt_face_get_device_metrics): Use `FT_OFFSET'. | ||
| c67b9a1c | 2019-11-23 11:01:18 | [truetype] Fix integer overflow (#57287). * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'. | ||
| 3cb7b3f7 | 2019-11-23 10:54:51 | [sfnt] Avoid sanitizer warning (#57286). * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL + offset' computation. Tag `table' as `const'. | ||
| 2d1d60aa | 2019-11-23 10:42:04 | [base] Fix `NULL + offset' sanitizer warnings (#57194). * src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points, FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'. (FT_GlyphLoader_CreateExtra): Add short cut if some values are zero. | ||
| 26d0f579 | 2019-11-23 10:28:37 | * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro. Use this for `base + offset' pointer calculations where `base' can be NULL (triggering a sanitizer warning even if the resulting pointer gets never dereferenced since it is undefined behaviour in C). Suggested by Ben Wagner. | ||
| 9b017959 | 2019-11-23 10:07:48 | [sfnt] Ensure OTTO fonts have tables (#57285). * src/sfnt/ttload.c (tt_face_load_font_dir): Add test. | ||
| 07c8d8bb | 2019-11-23 10:00:02 | Minor fixes for recent compilers. * src/gzip/infutil.h (inflate_mask): Add `const'. * src/autofit/aflatin2.c: Include `ft2build.h'. | ||
| 3aaae716 | 2019-11-07 23:39:41 | CMakeLists.txt: minor doc additions, compile builds/unix/ftsystem.c on UNIX | ||
| b75031a2 | 2019-10-25 21:29:13 | * src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18494 | ||
| 0a3d2bb9 | 2019-10-20 02:05:02 | [doc] FT_Open_Args: Clarify the ownership of `pathname'. Don't expect the function to deallocate the buffer. This may be obvious in C, but it is not so obvious in FFI bindings for FreeType 2. | ||
| 3b8bc65c | 2019-10-22 08:07:05 | * src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift. Also improve tracing. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18390 | ||
| 90a30f15 | 2019-10-10 22:04:50 | * src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only. | ||
| 545a481a | 2019-10-10 13:11:06 | * src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18108 | ||
| 1e9229f0 | 2019-10-09 15:37:19 | [cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023). * src/cff/cffobjs.c (cff_face_init): Don't set FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts. | ||
| 5a1a79c0 | 2019-10-08 11:12:18 | [woff2] Fix SFNT table checks. Also reduce number of SFNT table lookups. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18065 * include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields `glyf_table', `loca_table', and `head_table'. * src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature. Use table pointers in `info' parameter. (get_x_mins): Check `maxp_table' Use table pointers in `info' parameter. (reconstruct_font): Use and set table pointers in `info' parameter. Fix check for `glyf' and `loca' tables. Update call to `reconstruct_glyf'. (woff2_open_font): Updated. | ||
| 1167bff3 | 2019-10-06 23:22:34 | * src/sfnt/sfwoff2 (reconstruct_glyf): Fix reallocation. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18046 | ||
| 0fcf486e | 2019-10-06 21:12:42 | Improve memory debugging. * include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use `FT_DEBUG_INNER' to set source code file name and line. * src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of tracing message. | ||
| d355a73a | 2019-10-06 20:07:09 | docs/DEBUG: Document environment variable `FT2_KEEP_ALIVE'. Also do some formatting and minor edits. | ||
| 1f4e5bcb | 2019-10-03 21:07:16 | * src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17966 | ||
| c912690d | 2019-09-30 22:45:34 | * src/base/ftstroke.c (ft_stroker_inside): Speed up. | ||
| 94815d6e | 2019-10-01 00:15:25 | * src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17804 | ||
| 839a0236 | 2019-09-30 07:41:57 | * src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17812 | ||
| 12696dcf | 2019-09-30 07:27:55 | [woff2] Reject fonts without `head' table. Also fix memory deallocation in case of error. `head' problem reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17820 * src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'. Abort if `head_table' is NULL. Don't free `transformed_buf' in case of error. (woff2_open_font): Don't set `uncompressed_buf' to NULL. | ||
| ba06adaf | 2019-09-29 13:29:21 | [woff2] Fix compiler warnings. Problem reported by Alexei. * src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'. (reconstruct_font): Initialize `num_hmetrics'. (woff2_open_font): Initialize `info'. | ||
| c37a5014 | 2019-09-28 07:42:34 | * src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check. Correct thinkos in patch from 2019-09-01. | ||
| 2bf603bd | 2019-09-28 07:37:24 | [woff2] Fix memory leaks. One of them reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17766 * src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and `woff2->ttc_fonts'. (reconstruct_glyf): Initialize `info->x_mins'. | ||
| b39576f9 | 2019-09-27 19:18:49 | * src/base/ftstroke.c (ft_stroker_cap): Speed up caps. | ||
| 432efa25 | 2019-09-25 21:50:16 | * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter. * include/freetype/ftstroke.h: Wordsmith miter docs. | ||
| db4083fd | 2019-09-25 08:48:26 | * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17684 | ||
| 4881f75b | 2019-09-23 22:57:00 | * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations. | ||
| 5327092b | 2019-09-20 06:30:28 | [woff2] Fix memory leaks. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16896 * src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling. Free `uncompressed_buf'. (reconstruct_font): Free `transformed_buf'. | ||
| 04ebb2a0 | 2019-09-17 19:46:59 | * src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'. Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>. | ||
| 99f23d6f | 2019-09-17 13:22:28 | * src/sfnt/sfwoff2.c (woff2_open_font): Check table index. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17100 | ||
| cc17f852 | 2019-09-15 04:30:18 | [cmake] Don't fail if brotli is missing (#56894). The libs which cmake controls are commented out at include/freetype/config/ftoption.h and cmake un-comment each enabled library, but the brotli option was not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained defined even if brotli was missing/disabled/etc. Comment it such that cmake can control it, which means leaving it undefined if brotli is missing. * include/freetype/config/ftoption.h: Fix typo. | ||
| 3de1b8d0 | 2019-09-05 14:10:01 | [cmake] Add brotli support. * CMakeLists.txt (FT_WITH_BROTLI): New option. * builds/cmake/FindBrotliDec.cmake: New file. | ||
| bbb14361 | 2019-09-05 12:37:03 | FindHarfBuzz.cmake: Change indentation to two spaces; shorten lines. | ||
| 87f52252 | 2019-09-05 12:14:03 | Fix handling of `AF_CONFIG_OPTION_INDIC'. * devel/ftoption.h, include/freetype/config/ftoption.h: `AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'. | ||
| 12351eee | 2019-09-05 12:02:59 | CMakeLists.txt: Fix generation of DLL related stuff (#56852). Extract `version_info' variable from `builds/unix/configure.raw' and use the data to correctly set `LIBRARY_VERSION' and `LIBRARY_SOVERSION'. Also use the data to set `ft_version' field in `freetype2.pc'. Also fix the needed minimum version of HarfBuzz in `freetype2.pc'. | ||
| 3fa35aa4 | 2019-09-03 21:10:20 | * src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16933 | ||
| 543a3b93 | 2019-09-01 23:03:09 | * src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check. Don't trust `totalSfntSize' unconditionally. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16893 | ||
| cbee985a | 2019-08-27 15:08:15 | [woff2] Don't use `FT_UInt64' (#56815). * src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for `file_offset'. This fixes builds on platforms where `FT_LONG64' is not defined while still being sufficient to store a file offset. | ||
| 59415658 | 2019-08-27 14:07:14 | [truetype] Prevent crash in `TT_Set_Named_Instance' (#56813). * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error handling. | ||
| ed7e8194 | 2019-08-27 14:07:05 | CHANGES: Updated. | ||
| eef5c1dd | 2019-08-27 10:43:32 | [woff2] Fix compiler warnings. * src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument `table_len'. Update caller. (triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make `i' variable unsigned. (reconstruct_glyph): Remove condition which is always false. (reconstruct_html): Removed unused argument `transformed_size'. Update caller. * src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is always false. | ||
| 60c52f0e | 2019-08-27 10:08:01 | [woff2] Formatting; some comments. | ||
| 86803acd | 2019-08-22 16:46:03 | [woff2] Check whether known tag is in array bounds. If table tag is not 0x3f, we expect a value between 0 and 62. If this is not the case, exit with errors. * src/sfnt/sfwoff2/c: Check whether table tag makes sense. * src/sfnt/woff2tags.c: Return 0 if tag is out of bounds. | ||
| d2681a49 | 2019-08-21 20:21:02 | [woff2] More formatting and documentation. * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff2.c: Implement formatting changes suggested as https://lists.nongnu.org/archive/html/freetype-devel/2019-08/msg00052.html | ||
| 1a103015 | 2019-08-17 14:57:59 | * src/sfnt/sfwoff2.c: Improve trace comments. Adjust tracing levels for comments, and more formatting. | ||
| 97616704 | 2019-08-14 17:39:55 | [woff2] Formatting. * src/sfnt/sfobjs.c, src/sfnt/sfwoff2.c: Better formatting. | ||
| 2a23dc7f | 2019-08-14 02:36:27 | [woff2] Support `hmtx' reconstruction when `glyf' is untransformed. `reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to reconstruct the hmtx table. In case glyf is not transformed, we call `get_x_mins' which does the necessary work. * src/sfnt/sfwoff2.c (get_x_mins): New function. (reconstruct_font): Call get_x_mins. | ||
| 5367e0ca | 2019-08-05 01:53:00 | [sfnt] Support `face->num_faces' for WOFF2 fonts. Set correct value of `face->num_faces' for WOFF2 fonts. This is being handled separately because we only load the tables for the requested font face in `woff2_open_font' and create a single-face sfnt stream. The full discussion is at: https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter `woff2_num_faces'. (sfnt_init_face): Introduce variable `woff2_num_faces', and change `face->root.num_faces' if `woff2_num_faces' is set. * src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face index and handle negative face indices. * src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to declaration. | ||
| bb7668d7 | 2019-07-28 19:38:05 | [woff2] Improve memory and error handling. Free up memory after use, and improve error handling. * src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement changes. | ||
| 1e020768 | 2019-07-18 01:50:16 | [woff2] Avoid too many calls to `FT_REALLOC'. We do this by using `totalSfntSize' as an initial reference, and extending the buffer when required. This reduces rendering time considerably. * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add `totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'. * src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep track of and update total size of stream. (WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly. (pad4, store_loca, reconstruct_glyf, reconstruct_hmtx, reconstruct_font): Update parameters to accept `sfnt_size'. (woff2_open_font): Add variable `sfnt_size'. Use WOFF2 header field `totalSfntSize' as initial reference (if value makes sense) and allocate `totalSfntSize' bytes for the sfnt stream. `write_buf' handles reallocation if and when required. Also resize the stream to `actual_sfnt_size' after reconstruction. | ||
| 4d9b3d1d | 2019-07-16 02:45:03 | [woff2] Reconstruct `loca', `hmtx', and swap out stream. Add necessary functions to reconstruct loca and hmtx tables (the two remaining tables that can have a transform). `woff2_open_font' is now capable of loading a woff2 font face. This code may still need more refining and better memory management. * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total (final) size of sfnt stream. (WOFF2_InfoRec): Add header checksum value. * src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index' parameter to its pointer so its value can be modified by `woff2_open_font'. * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into sfnt buffer at given position. (write_buf): Add parameter `extend_buf' which allows caller to specify whether buffer should be reallocated before copying data. (WRITE_SFNT_BUF): Updated. (pad4, store_loca, reconstruct_htmx): New functions. (reconstruct_glyf): Calculate loca values and store them. (reconstruct_font): Call `reconstruct_hmtx', write table record entries, and calculate table checksums. Also calculate font checksum and update `checksumAdjustment' entry in head table. (woff2_open_font): Open stream for sfnt buffer, swap out input stream and return. * src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept pointer to `face_index'. | ||
| e3953e54 | 2019-07-13 03:14:17 | [woff2] Reconstruct transformed `glyf' table. Reconstruct `glyf' table if it is transformed in the uncompressed table stream. Also add necessary structures, macros and functions. * include/freetype/internal/wofftypes.h (WOFF2_InfoRec, WOFF2_SubstreamRec, WOFF2_PointRec): New structures. (WOFF2_TableRec): s/OrigLength/dst_length/. * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use `FT_SET_ERROR' to set implicit `error' variable. (WRITE_SHORT): New macro. (N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM, COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to refer to substreams of the transformed `glyf' tables. (Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX' macros. (with_sign, safe_int_addition): New functions to add sign to values based on a flag and perform safe addition respectively. (triplet_decode): Decode variable-length (flag, xCoordinate, yCoordinate) triplet for a simple glyph. See https://www.w3.org/TR/WOFF2/#triplet_decoding (store_points, compute_bbox, composteGlyph_size, reconstruct_glyf): New functions. (reconstruct_font): Call `reconstruct_glyf'. * src/sfnt/sfwoff2.h: Add required constants. * src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'. | ||
| 81cf5326 | 2019-07-06 18:05:18 | [woff2] Copy un-transformed tables to sfnt stream. Copy un-transformed tables to the sfnt stream. * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro. (write_buf): New function. Extend memory of `dst' buffer and copy bytes from `src'. (compute_ULong_sum): New function. Calculate checksum of table. (reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte** sfnt_bytes'. This has been done because we reallocate memory to `sfnt' multiple times, which may change the pointer value of `sfnt'. This new pointer must be propogated back to the caller. Same reason for using a double pointer in `write_buf'. * src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for overflow checking. | ||
| 106bacf5 | 2019-07-05 01:09:52 | [woff2] Create stream for uncompressed buffer. Uncompressed buffer is now an `FT_Stream'. Perform basic checks and start iterating over tables. * src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics): New functions. (reconstruct_font): Modify parameters and iterate over tables. (woff2_open_font): Updated. | ||
| 18f6ff11 | 2019-07-01 01:29:30 | [woff2] Handle TTCs and start reconstructing font. We `handle' TTCs by modifying the `indices' array to point to only those tables that are part of the requested `face_index'. Set and use `num_tables' in `WOFF2_TtcFont'. * src/sfnt/sfwoff2.c (reconstruct_font): New function. (woff2_open_font): Start reconstruction of font. | ||
| 7a1639bc | 2019-06-30 20:01:20 | [woff2] Get known tags from function. Change `KnownTags' to a function (`woff2_known_tags'). This avoids introducing a global constant array. This function returns the specified index without *any* checks. The caller must ensure that `index' is within array limits. * src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]' notation to `woff2_known_tags( ... )'. * src/sfnt/woff2tags.c: Perform changes. * src/sfnt/woff2tags.h: Update definitions. | ||
| c6c2c0b5 | 2019-06-30 19:32:27 | [woff2] Minor. * src/sfnt/sfwoff2.c (woff2_uncompress): Add error message (woff2_open_font): Free `uncompressed_buf'. | ||
| fc65d45a | 2019-06-30 04:31:04 | [woff2] Uncompress Brotli streams and `face_index' support. WOFF2 compressed stream is now uncompressed if Brotli is available. This data is stored in a separate buffer (uncompressed_buf) because it does not contain direct table data. Certain tables have transformations applied to them, and they must be reconstructed before we can write those tables to the SFNT stream. `face_index' is now being passed as a parameter to `woff2_open_font'. * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter `face_instance_index'. * src/sfnt/sfwoff2.c (woff2_uncompress): New function. (woff2_open_font): Call `woff2_uncompress'. (compute_first_table_offset): Fix return type. * src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration. | ||
| 732da8a4 | 2019-06-30 04:15:55 | * builds/unix/configure.raw: Change argument name to `brotli'. | ||
| 9443a1bc | 2019-06-28 01:01:17 | Add Brotli dependency and required checks. Brotli is required for decompressing WOFF2 font directory streams. The library is thus being added as an optional dependency for FreeType. * builds/unix/configure.raw: Add checks for `libbrotlidec'. (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated. * devel/ftoption.h, include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_BROTLI): New macro. | ||
| 76c64f6b | 2019-06-24 01:07:18 | [woff2] Write SFNT Offset table. * src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros. (compare_tags): New function. (woff2_open_font): Implement it. | ||
| e09fe4cc | 2019-06-18 19:58:55 | * src/sfnt/sfwoff2.c: #undef macros. |