From 4753d050bd3af817ecd785fe9035f6123f31957d Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Sun, 17 Sep 2017 11:18:20 +0200 Subject: [PATCH 1/8] Bug 1396848 - Iterating a Header object returns sorted and combined values, r=qdot --- dom/fetch/InternalHeaders.cpp | 58 +++++++++++++++++++ dom/fetch/InternalHeaders.h | 31 +++++++--- .../mochitest/fetch/test_headers_common.js | 10 ++-- .../fetch/api/headers/headers-basic.html.ini | 14 ----- 4 files changed, 86 insertions(+), 27 deletions(-) diff --git a/dom/fetch/InternalHeaders.cpp b/dom/fetch/InternalHeaders.cpp index c7d00ae28cfa..de67b1dff26c 100644 --- a/dom/fetch/InternalHeaders.cpp +++ b/dom/fetch/InternalHeaders.cpp @@ -22,12 +22,14 @@ InternalHeaders::InternalHeaders(const nsTArray&& aHeaders, HeadersGuardEnum aGuard) : mGuard(aGuard) , mList(aHeaders) + , mListDirty(true) { } InternalHeaders::InternalHeaders(const nsTArray& aHeadersEntryList, HeadersGuardEnum aGuard) : mGuard(aGuard) + , mListDirty(true) { for (const HeadersEntry& headersEntry : aHeadersEntryList) { mList.AppendElement(Entry(headersEntry.name(), headersEntry.value())); @@ -59,6 +61,8 @@ InternalHeaders::Append(const nsACString& aName, const nsACString& aValue, return; } + SetListDirty(); + mList.AppendElement(Entry(lowerName, trimValue)); } @@ -72,6 +76,8 @@ InternalHeaders::Delete(const nsACString& aName, ErrorResult& aRv) return; } + SetListDirty(); + // remove in reverse order to minimize copying for (int32_t i = mList.Length() - 1; i >= 0; --i) { if (lowerName == mList[i].mName) { @@ -160,6 +166,8 @@ InternalHeaders::Set(const nsACString& aName, const nsACString& aValue, ErrorRes return; } + SetListDirty(); + int32_t firstIndex = INT32_MAX; // remove in reverse order to minimize copying @@ -182,6 +190,7 @@ InternalHeaders::Set(const nsACString& aName, const nsACString& aValue, ErrorRes void InternalHeaders::Clear() { + SetListDirty(); mList.Clear(); } @@ -470,5 +479,54 @@ InternalHeaders::GetUnsafeHeaders(nsTArray& aNames) const } } +void +InternalHeaders::MaybeSortList() +{ + class Comparator { + public: + bool Equals(const Entry& aA, const Entry& aB) const + { + return aA.mName == aB.mName; + } + + bool LessThan(const Entry& aA, const Entry& aB) const + { + return aA.mName < aB.mName; + } + }; + + if (!mListDirty) { + return; + } + + mListDirty = false; + + Comparator comparator; + + mSortedList.Clear(); + for (const Entry& entry : mList) { + bool found = false; + for (Entry& sortedEntry : mSortedList) { + if (sortedEntry.mName == entry.mName) { + sortedEntry.mValue += ", "; + sortedEntry.mValue += entry.mValue; + found = true; + break; + } + } + + if (!found) { + mSortedList.InsertElementSorted(entry, comparator); + } + } +} + +void +InternalHeaders::SetListDirty() +{ + mSortedList.Clear(); + mListDirty = true; +} + } // namespace dom } // namespace mozilla diff --git a/dom/fetch/InternalHeaders.h b/dom/fetch/InternalHeaders.h index a3fedd8141f1..501fe59cff6e 100644 --- a/dom/fetch/InternalHeaders.h +++ b/dom/fetch/InternalHeaders.h @@ -45,14 +45,23 @@ private: HeadersGuardEnum mGuard; nsTArray mList; + nsTArray mSortedList; + + // This boolean is set to true at any writing operation to mList. It's set to + // false when mSortedList is regenerated. This happens when the header is + // iterated. + bool mListDirty; + public: explicit InternalHeaders(HeadersGuardEnum aGuard = HeadersGuardEnum::None) : mGuard(aGuard) + , mListDirty(false) { } explicit InternalHeaders(const InternalHeaders& aOther) : mGuard(HeadersGuardEnum::None) + , mListDirty(true) { ErrorResult result; Fill(aOther, result); @@ -79,19 +88,22 @@ public: bool Has(const nsACString& aName, ErrorResult& aRv) const; void Set(const nsACString& aName, const nsACString& aValue, ErrorResult& aRv); - uint32_t GetIterableLength() const + uint32_t GetIterableLength() { - return mList.Length(); + MaybeSortList(); + return mSortedList.Length(); } - const NS_ConvertASCIItoUTF16 GetKeyAtIndex(unsigned aIndex) const + const NS_ConvertASCIItoUTF16 GetKeyAtIndex(unsigned aIndex) { - MOZ_ASSERT(aIndex < mList.Length()); - return NS_ConvertASCIItoUTF16(mList[aIndex].mName); + MaybeSortList(); + MOZ_ASSERT(aIndex < mSortedList.Length()); + return NS_ConvertASCIItoUTF16(mSortedList[aIndex].mName); } - const NS_ConvertASCIItoUTF16 GetValueAtIndex(unsigned aIndex) const + const NS_ConvertASCIItoUTF16 GetValueAtIndex(unsigned aIndex) { - MOZ_ASSERT(aIndex < mList.Length()); - return NS_ConvertASCIItoUTF16(mList[aIndex].mValue); + MaybeSortList(); + MOZ_ASSERT(aIndex < mSortedList.Length()); + return NS_ConvertASCIItoUTF16(mSortedList[aIndex].mValue); } void Clear(); @@ -153,6 +165,9 @@ private: const nsACString& aValue); static bool IsRevalidationHeader(const nsACString& aName); + + void MaybeSortList(); + void SetListDirty(); }; } // namespace dom diff --git a/dom/tests/mochitest/fetch/test_headers_common.js b/dom/tests/mochitest/fetch/test_headers_common.js index 955b1e4481a4..c5a3965c8b70 100644 --- a/dom/tests/mochitest/fetch/test_headers_common.js +++ b/dom/tests/mochitest/fetch/test_headers_common.js @@ -240,12 +240,12 @@ function TestHeadersIterator() { var value_iter = headers.values(); var entries_iter = headers.entries(); - arrayEquals(iterate(key_iter), ["foo", "foo", "foo2"], "Correct key iterator"); - arrayEquals(iterate(value_iter), ["bar", ehsanInflated, "baz2"], "Correct value iterator"); - arrayEquals(iterate(entries_iter), [["foo", "bar"], ["foo", ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); + arrayEquals(iterate(key_iter), ["foo", "foo2"], "Correct key iterator"); + arrayEquals(iterate(value_iter), ["bar, " + ehsanInflated, "baz2"], "Correct value iterator"); + arrayEquals(iterate(entries_iter), [["foo", "bar, " + ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); - arrayEquals(iterateForOf(headers), [["foo", "bar"], ["foo", ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); - arrayEquals(iterateForOf(new Headers(headers)), [["foo", "bar"], ["foo", ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); + arrayEquals(iterateForOf(headers), [["foo", "bar, " + ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); + arrayEquals(iterateForOf(new Headers(headers)), [["foo", "bar, " + ehsanInflated], ["foo2", "baz2"]], "Correct entries iterator"); } function runTest() { diff --git a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini index f65304b2112e..4012104a5d48 100644 --- a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini +++ b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini @@ -1,19 +1,5 @@ [headers-basic.html] type: testharness - [Check keys method] - expected: FAIL - - [Check values method] - expected: FAIL - - [Check entries method] - expected: FAIL - - [Check Symbol.iterator method] - expected: FAIL - - [Check forEach method] - expected: FAIL [Create headers with existing headers with custom iterator] expected: FAIL From e5750cee50b2d80151319677660c196f52a5f7cd Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Sun, 17 Sep 2017 07:36:44 -0400 Subject: [PATCH 2/8] Bug 1400602 - Update Freetype to version 2.8.1. r=jfkthame --- modules/freetype2/CMakeLists.txt | 2 +- modules/freetype2/ChangeLog | 1113 ++++++++++++++++- modules/freetype2/ChangeLog.24 | 4 +- modules/freetype2/ChangeLog.25 | 2 +- modules/freetype2/Jamfile | 2 +- modules/freetype2/LICENSE.TXT | 78 +- modules/freetype2/README | 10 +- modules/freetype2/builds/mac/ftmac.c | 4 +- modules/freetype2/builds/unix/config.guess | 54 +- modules/freetype2/builds/unix/config.sub | 16 +- modules/freetype2/builds/unix/configure | 24 +- modules/freetype2/builds/unix/configure.ac | 6 +- modules/freetype2/builds/unix/configure.raw | 4 +- .../freetype2/builds/unix/freetype-config.in | 18 +- modules/freetype2/builds/unix/unix-def.in | 2 + .../builds/wince/vc2005-ce/freetype.vcproj | 76 +- .../builds/wince/vc2005-ce/index.html | 10 +- .../builds/wince/vc2008-ce/freetype.vcproj | 76 +- .../builds/wince/vc2008-ce/index.html | 10 +- modules/freetype2/builds/windows/detect.mk | 2 +- .../builds/windows/vc2005/freetype.vcproj | 12 +- .../builds/windows/vc2005/index.html | 10 +- .../builds/windows/vc2008/freetype.vcproj | 12 +- .../builds/windows/vc2008/index.html | 10 +- .../builds/windows/vc2010/freetype.vcxproj | 62 +- .../builds/windows/vc2010/index.html | 14 +- .../builds/windows/visualc/freetype.dsp | 20 +- .../builds/windows/visualc/freetype.vcproj | 12 +- .../builds/windows/visualc/index.html | 10 +- .../builds/windows/visualce/freetype.dsp | 20 +- .../builds/windows/visualce/freetype.vcproj | 84 +- .../builds/windows/visualce/index.html | 10 +- modules/freetype2/devel/ftoption.h | 23 +- modules/freetype2/docs/CHANGES | 99 +- modules/freetype2/docs/INSTALL.VMS | 12 +- modules/freetype2/docs/VERSIONS.TXT | 3 +- modules/freetype2/docs/freetype-config.1 | 2 +- .../docs/reference/ft2-auto_hinter.html | 8 +- .../docs/reference/ft2-base_interface.html | 20 +- .../docs/reference/ft2-basic_types.html | 4 +- .../docs/reference/ft2-bdf_fonts.html | 4 +- .../docs/reference/ft2-bitmap_handling.html | 4 +- .../freetype2/docs/reference/ft2-bzip2.html | 4 +- .../docs/reference/ft2-cache_subsystem.html | 4 +- .../docs/reference/ft2-cff_driver.html | 4 +- .../docs/reference/ft2-cid_fonts.html | 4 +- .../docs/reference/ft2-computations.html | 11 +- .../docs/reference/ft2-error_code_values.html | 6 +- .../reference/ft2-error_enumerations.html | 8 +- .../docs/reference/ft2-font_formats.html | 4 +- .../docs/reference/ft2-gasp_table.html | 4 +- .../docs/reference/ft2-glyph_management.html | 7 +- .../docs/reference/ft2-glyph_stroker.html | 4 +- .../docs/reference/ft2-glyph_variants.html | 4 +- .../docs/reference/ft2-gx_validation.html | 4 +- .../freetype2/docs/reference/ft2-gzip.html | 4 +- .../reference/ft2-header_file_macros.html | 4 +- .../docs/reference/ft2-header_inclusion.html | 4 +- .../docs/reference/ft2-incremental.html | 4 +- .../freetype2/docs/reference/ft2-index.html | 543 ++++---- .../docs/reference/ft2-lcd_filtering.html | 8 +- .../docs/reference/ft2-list_processing.html | 4 +- modules/freetype2/docs/reference/ft2-lzw.html | 4 +- .../docs/reference/ft2-mac_specific.html | 4 +- .../docs/reference/ft2-module_management.html | 4 +- .../docs/reference/ft2-multiple_masters.html | 87 +- .../docs/reference/ft2-ot_validation.html | 4 +- .../reference/ft2-outline_processing.html | 7 +- .../docs/reference/ft2-pcf_driver.html | 4 +- .../docs/reference/ft2-pfr_fonts.html | 4 +- .../docs/reference/ft2-quick_advance.html | 4 +- .../freetype2/docs/reference/ft2-raster.html | 14 +- .../docs/reference/ft2-sfnt_names.html | 4 +- .../docs/reference/ft2-sizes_management.html | 4 +- .../docs/reference/ft2-system_interface.html | 4 +- modules/freetype2/docs/reference/ft2-toc.html | 6 +- .../docs/reference/ft2-truetype_engine.html | 4 +- .../docs/reference/ft2-truetype_tables.html | 4 +- .../docs/reference/ft2-tt_driver.html | 4 +- .../docs/reference/ft2-type1_tables.html | 4 +- .../docs/reference/ft2-user_allocation.html | 4 +- .../freetype2/docs/reference/ft2-version.html | 6 +- .../docs/reference/ft2-winfnt_fonts.html | 4 +- .../include/freetype/config/ftoption.h | 21 +- modules/freetype2/include/freetype/freetype.h | 37 +- modules/freetype2/include/freetype/ftautoh.h | 14 +- modules/freetype2/include/freetype/fterrdef.h | 2 + modules/freetype2/include/freetype/fterrors.h | 6 +- modules/freetype2/include/freetype/ftglyph.h | 9 + modules/freetype2/include/freetype/ftimage.h | 20 +- modules/freetype2/include/freetype/ftlcdfil.h | 19 +- modules/freetype2/include/freetype/ftmac.h | 9 +- modules/freetype2/include/freetype/ftmm.h | 64 +- modules/freetype2/include/freetype/ftoutln.h | 3 + .../include/freetype/internal/ftcalc.h | 36 +- .../include/freetype/internal/ftobjs.h | 34 +- modules/freetype2/include/freetype/tttags.h | 6 + modules/freetype2/src/autofit/afblue.c | 12 +- modules/freetype2/src/autofit/afblue.dat | 20 +- modules/freetype2/src/autofit/afblue.h | 10 +- modules/freetype2/src/autofit/afcjk.c | 12 +- modules/freetype2/src/autofit/afhints.c | 6 +- modules/freetype2/src/autofit/aflatin.c | 33 +- modules/freetype2/src/autofit/aflatin2.c | 12 +- modules/freetype2/src/autofit/afloader.c | 8 +- modules/freetype2/src/autofit/afscript.h | 24 +- modules/freetype2/src/autofit/afshaper.c | 1 + modules/freetype2/src/autofit/afstyles.h | 28 +- modules/freetype2/src/base/ftbitmap.c | 5 +- modules/freetype2/src/base/ftcalc.c | 146 ++- modules/freetype2/src/base/ftglyph.c | 16 + modules/freetype2/src/base/ftlcdfil.c | 207 ++- modules/freetype2/src/base/ftmac.c | 2 +- modules/freetype2/src/base/ftmm.c | 32 +- modules/freetype2/src/base/ftobjs.c | 38 +- modules/freetype2/src/base/ftoutln.c | 3 +- modules/freetype2/src/base/ftrfork.c | 10 +- modules/freetype2/src/base/ftsynth.c | 2 +- modules/freetype2/src/base/ftutil.c | 10 +- modules/freetype2/src/bdf/bdfdrivr.c | 144 ++- modules/freetype2/src/bdf/bdflib.c | 40 +- modules/freetype2/src/cache/ftcbasic.c | 38 +- modules/freetype2/src/cff/cf2blues.c | 45 +- modules/freetype2/src/cff/cf2blues.h | 2 +- modules/freetype2/src/cff/cf2fixed.h | 4 +- modules/freetype2/src/cff/cf2font.c | 4 +- modules/freetype2/src/cff/cf2ft.c | 4 +- modules/freetype2/src/cff/cf2hints.c | 251 ++-- modules/freetype2/src/cff/cf2intrp.c | 179 +-- modules/freetype2/src/cff/cffgload.c | 207 +-- modules/freetype2/src/cff/cffload.c | 9 +- modules/freetype2/src/cff/cffparse.c | 27 +- modules/freetype2/src/gxvalid/README | 2 +- modules/freetype2/src/pcf/README | 4 +- modules/freetype2/src/pcf/pcfdrivr.c | 12 +- modules/freetype2/src/pcf/pcfread.c | 78 +- modules/freetype2/src/pfr/pfrobjs.c | 6 - modules/freetype2/src/psaux/psconv.c | 8 + modules/freetype2/src/psaux/t1decode.c | 92 +- modules/freetype2/src/raster/ftrend1.c | 9 +- modules/freetype2/src/sfnt/pngshim.c | 72 +- modules/freetype2/src/sfnt/sfobjs.c | 51 +- modules/freetype2/src/sfnt/ttcmap.c | 112 +- modules/freetype2/src/sfnt/ttcmap.h | 2 + modules/freetype2/src/sfnt/ttkern.c | 8 +- modules/freetype2/src/sfnt/ttpost.c | 7 +- modules/freetype2/src/sfnt/ttsbit.c | 20 +- modules/freetype2/src/smooth/ftgrays.c | 15 +- modules/freetype2/src/smooth/ftsmooth.c | 196 +-- modules/freetype2/src/tools/ftfuzzer/README | 6 +- modules/freetype2/src/truetype/ttgload.c | 101 +- modules/freetype2/src/truetype/ttgxvar.c | 97 +- modules/freetype2/src/truetype/ttinterp.c | 303 +++-- modules/freetype2/src/truetype/ttinterp.h | 50 +- modules/freetype2/src/truetype/ttobjs.c | 16 +- modules/freetype2/src/truetype/ttpload.c | 8 +- modules/freetype2/src/type1/t1load.c | 4 +- modules/freetype2/src/type1/t1objs.c | 6 - modules/freetype2/src/type42/t42objs.c | 6 - modules/freetype2/src/winfonts/winfnt.c | 6 +- modules/freetype2/vms_make.com | 14 +- 161 files changed, 4109 insertions(+), 1864 deletions(-) diff --git a/modules/freetype2/CMakeLists.txt b/modules/freetype2/CMakeLists.txt index d1b053e2b002..8115f1a4b691 100644 --- a/modules/freetype2/CMakeLists.txt +++ b/modules/freetype2/CMakeLists.txt @@ -154,7 +154,7 @@ endif () set(VERSION_MAJOR "2") set(VERSION_MINOR "8") -set(VERSION_PATCH "0") +set(VERSION_PATCH "1") set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}) diff --git a/modules/freetype2/ChangeLog b/modules/freetype2/ChangeLog index b81af155d0dc..f6de03c78e95 100644 --- a/modules/freetype2/ChangeLog +++ b/modules/freetype2/ChangeLog @@ -1,3 +1,1106 @@ +2017-09-16 Werner Lemberg + + * Version 2.8.1 released. + ========================= + + + Tag sources with `VER-2-8-1'. + + * docs/VERSION.TXT: Add entry for version 2.8.1. + * docs/CHANGES: Updated. + + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 21:0:15. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + +2017-09-13 suzuki toshiya + + [sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7. + + __builtin_shuffle() was introduced in gcc-4.7. The lowest + gcc to enable vector operation is delayed from 4.6 to 4.7. + + * src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to + enable the vector operation, to change the lowest gcc version + from 4.6 to 4.7. + +2017-09-13 suzuki toshiya + + [cache] Fix a possible overflow by signed integer comparison. + + Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 , + issues are found by Behdad Esfahbod and Werner Lemberg. + + * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace + a subtraction to check higher bit by a bit operation, + and cpp-conditionalize for appropriate systems. Add better + documentation to the comment. + (FTC_ImageCache_LookupScaler): Ditto. + (FTC_SBitCache_Lookup): Ditto. + (FTC_SBitCache_LookupScaler): Ditto. + +2017-09-13 Werner Lemberg + + [autofit] Really fix #41334 (#52000). + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set + `segment->delta' everywhere. + +2017-09-12 suzuki toshiya + + [autofit, sfnt] Fix for `make multi'. + + * src/autofit/afshaper.c: Include FT_ADVANCE_H, to use + FT_Get_Advance() in it. + * src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H + to use PS_Unicodes in it, also include `ttpost.h' to use + tt_face_get_ps_name() in it. + +2017-09-11 Azzuro + + [build] Improve builds with different MS Visual Studio versions. + + * builds/windows/vc2010/freetype.vcxproj: Switch platform toolset + according to the Visual Studio version. + +2017-09-11 Werner Lemberg + + * src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables. + + Reported by Behdad. + +2017-09-09 Werner Lemberg + + [autofit] Improve communication with ftgrid. + + * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): + Provide values in font units. + +2017-09-08 suzuki toshiya + + [base] Remove a check for resource ID in the resource fork driver. + + LastResort.dfont has a marginal resource ID 0xFFFF for sfnt + resource. Inside Macintosh: More Macintosh Toolbox, `Resource IDs' + (1-46), tells that some IDs are reserved and should not be used. + FreeType2 just uses resource ID to sort the fragmented resource. + To accept the marginal fonts, the checking is removed. + + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id + validity check, fix a trace message format. + +2017-09-08 suzuki toshiya + + [sfnt, truetype] Register the tags for marginal fonts. + + The first 32bit of standard TrueType variants is 0x00010000, + `OTTO', `ttcf', `true' or `typ1'. 2 marginal dfonts on legacy Mac + OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources + starting 0xA5 followed by `kbd' or `lst'. Considering the following + data could be parsed as conventional TrueType fonts, the header + checking is updated to allow these tags. It seems that recent Mac + OS X has already switched to normal TTF for these fonts. + + See the discussion at + http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0 + + * include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header + tags for Keyboard.dfont and LastResort.dfont. + * src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource + starts with TTAG_0xA5kbd or TTAG_0xA5lst. + * src/truetype/ttobjs.c (tt_face_init): Accept the face with the + format tag is TTAG_0xA5kbd or TTAG_0xA5lst. + +2017-09-05 Werner Lemberg + + Fix multiple calls of `FT_Bitmap_Convert'. + + The documentation of `FT_Bitmap_Convert' says that multiple calls do + proper reallocation of the target FT_Bitmap object. However, this + failed for the sequence + + non-empty bitmap + empty bitmap + non-empty bitmap + + Reason was that `FT_Bitmap_Convert' only reallocated the bitmap + buffer if it became too small; it didn't make the buffer smaller. + For an empty bitmap following a non-empty one, only the buffer + dimension got set to zero, without deallocation. If the next call + was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was + triggered. + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target + buffer to the correct size. + + * docs/CHANGES: Document it. + +2017-09-05 Werner Lemberg + + [bdf] Fix size and resolution handling. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if + `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are + missing. + + * docs/CHANGES: Document it. + +2017-08-25 Alexei Podtelezhnikov + + Swap `ALLOC_MULT' arguments (#51833). + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated. + * src/winfonts/winfnt.c (FNT_Load_Glyph): Updated. + * src/raster/ftrend1.c (ft_raster1_render): Updated. + +2017-08-23 Werner Lemberg + + [sfnt] Fix clang compilation (#51788). + + * src/sfnt/pngshim.c (premultiply_data): Use vectors instead of + scalars. + (vector_shuffle): New macro to take care of a different built-in + function name on clang. + +2017-08-22 Werner Lemberg + + [base] Don't zero out allocated memory twice (#51816). + + Patch applied from bug report. + + * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to + avoid unnecessary overhead. + +2017-08-22 Werner Lemberg + + [truetype] Integer overflow. + + Changes triggered by + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107 + + * src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use + NEG_LONG. + +2017-08-17 Alexei Podtelezhnikov + + [sfnt] Avoid synthetic unicode for symbol fonts with PUA. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=754574 + + * src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL. + +2017-08-16 Werner Lemberg + + * src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings. + +2017-08-15 Behdad Esfahbod + + [sfnt] Speed up PNG image loading. + + This reduces the overhead of `premultiply_data' by 60%. + + * src/sfnt/pngshim.c (premultiply_data): Provide code which uses + gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a + time. + +2017-08-11 Werner Lemberg + + [sfnt, truetype] Improve handling of missing sbits. + + Requested by Behdad. + + Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain + entries in the bitmap strike(s) for empty glyphs. Instead, they + rely that a space glyph gets created from the font's metrics data. + This commit makes FreeType behave accordingly. + + * include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error + code. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes + to make a distinction between a missing bitmap in a composite and a + simple missing bitmap. + + * src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a + bitmap-only font), synthesize an empty bitmap glyph if metrics are + available. + +2017-08-10 Werner Lemberg + + [base] Minor API improvement for default variation axis setting. + + * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, + FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, + FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0. + + * docs/CHANGES: Updated. + +2017-08-08 Werner Lemberg + + [psnames] Really fix issue #49949. + + We now use a separate preprocessor macro to handle both definition + and declaration of the glyph name arrays. + + * src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro. + + * src/tools/glnames.py (StringTable::dump, + StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'. + (dump_encoding): Ditto. + (main): Use `wb' mode for writing the output file, which works on + Windows also. + + * src/psnames/pstables.h: Regenerated. + +2017-08-08 Alexei Podtelezhnikov + + [smooth] Harmony LCD rendering. + + This is a new technology for LCD-optimized rendering. It capitalizes + on the fact that each color channel grid is shifted by a third of a + pixel. Therefore it is logical to render 3 separate monochrome + bitmaps shifting the outline by 1/3 pixel, and then combine them. + Importantly, the resulting output does not require additional LCD + filtering. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic) + [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized + rendering. + + * include/freetype/ftlcdfil.h, include/freetype/freetype.h, + include/freetype/config/ftoption.h, devel/ftoption.h: Updated + documentation. + +2017-08-08 Alexei Podtelezhnikov + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up. + +2017-08-08 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (format): Use otspec-compliant versions. + +2017-08-05 Werner Lemberg + + [truetype] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868 + + * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG. + +2017-08-05 Werner Lemberg + + [base, truetype] New function `FT_Get_Var_Axis_Flags'. + + The reserved `flags' field got a value in OpenType version 1.8.2; + unfortunately, the public `FT_Var_Axis' structure misses the + corresponding element. Since we can't add a new field, we add an + access function. + + * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function. + + * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro. + Updated. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory + of `mmvar' to hold axis flags. + Fill the axis flags array. + + * docs/CHANGES: Updated. + +2017-08-03 Nikolaus Waxweiler + + [truetype] Fix metrics of B/W hinting in v40 mode. + + Phantom points are now saved outside v40 backwards compatibility + mode. This fixes the jumping glyphs when switching between v35 and + v40 monochrome mode. + + * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic. + +2017-08-03 Nikolaus Waxweiler + + [truetype] Do not set any ClearType flags in v40 monochrome mode. + + This fixes weird behavior of instructions that resulted in rendering + differences between v35 and v40 in monochrome mode, e.g., in + `timesbi.ttf'. + + * src/truetype/ttinterp.c (Ins_GETINFO) + [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check + `subpixel_hinting_lean'. + +2017-08-01 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko. + +2017-08-01 Behdad Esfahbod + + [truetype] Fix loading of named instances. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position + while loading the `avar' table. + +2017-08-01 Werner Lemberg + + [sfnt, truetype] Minor adjustments for OpenType 1.8.2. + + * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now + (tighter) limits. + + * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType + version explicitly allows all negative values for the number of + contours if we have a composite glyph (this is for better backwards + compatibility I guess), but it still recommends value -1. + +2017-07-26 Werner Lemberg + + [cff] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738 + + * src/cff/cf2hints.c (cf2_glyphpath_computeOffset, + cf2_glyphpath_curveTo): Use ADD_INT32. + +2017-07-13 Werner Lemberg + + [base] Fix memory leak. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=738362 + + * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case + of error. + +2017-07-12 Werner Lemberg + + [base] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573 + + * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use + FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG. + +2017-07-12 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo. + + Also improve tracing message. + + Problem reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=738919 + +2017-07-07 Werner Lemberg + + [cff] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517 + + * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32. + +2017-07-05 Werner Lemberg + + * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning. + +2017-07-05 Werner Lemberg + + * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395). + +2017-07-04 Werner Lemberg + + [truetype] Prevent address overflow (#51365). + + * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard. + +2017-07-03 Alexei Podtelezhnikov + + * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code. + +2017-07-03 Werner Lemberg + + [truetype] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455 + + * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG. + +2017-07-01 Alexei Podtelezhnikov + + * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name. + +2017-06-28 Ben Wagner + + Avoid Microsoft compiler warnings (#51331). + + While clang's sanitizer recommends a cast to unsigned for safe + negation (to handle -INT_MIN), both MSVC and Visualc emit warning + C4146 if an unsigned value gets negated. + + * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32), + src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a + subtraction. + +2017-06-27 Werner Lemberg + + * src/cff/cffparse.c (do_fixed): Fix typo. + + Spotted by chris . + +2017-06-27 Werner Lemberg + + [truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391 + + * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use + NEG_LONG. + + * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG. + +2017-06-24 Werner Lemberg + + [truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364 + + * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG. + +2017-06-22 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328 + + * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and + SUB_INT32. + + * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG. + +2017-06-21 Alexei Podtelezhnikov + + [sfnt] Synthesize a Unicode charmap if one is missing. + + * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it. + * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init, + tt_cmap_unicode_done, tt_cmap_unicode_char_index, + tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement + synthetic Unicode charmap class. + (tt_get_cmap_info): Make sure the callback is available. + + * src/sfnt/sfobjs.c (sfnt_load_face) + [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing, + synthesize one. + + * include/freetype/config/ftoption.h: Document it. + * devel/ftoption.h: Ditto. + +2017-06-20 Tony Theodore + + Fix pkg-config in freetype-config for cross-compiling (#51274). + + * builds/unix/unix-def.in (PKG_CONFIG): New variable. + (freetype-config): Use it in sed expression. + + * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/. + +2017-06-20 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313 + + * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32. + + * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS. + +2017-06-17 Alexei Podtelezhnikov + + [base, smooth] LCD filtering cleanups. + + * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy): + Clean up, start filtering from the bottom-left origin. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated. + +2017-06-16 Werner Lemberg + + [truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276 + + * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use + ADD_LONG and SUB_LONG. + +2017-06-15 Werner Lemberg + + [bdf, cff] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261 + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with + direct code to avoid value negation. + + * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and + ADD_INT32. + +2017-06-13 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding. + + FreeType only sets a default active encoding for Unicode. + +2017-06-13 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218 + + * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32. + + * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG. + +2017-06-11 Werner Lemberg + + [cff] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210 + + * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and + ADD_INT32. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Use + ADD_INT32. + +2017-06-10 Werner Lemberg + + [truetype] Fix TT_Set_Var_Design. + + Reported by Nikolaus Waxweiler . + + * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the + case where we have less input coordinates than axes. + +2017-06-10 Werner Lemberg + + * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo. + + Bug introduced 2017-05-28. + +2017-06-09 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186 + + * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32. + + * src/truetype/ttinterp.c (Round_None, Round_To_Grid, + Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid, + Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG, + SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG, + FT_PAD_ROUND_LONG + (Ins_SxVTL, Ins_MIRP): Use SUB_LONG. + (_iup_worker_shift): Use SUB_LONG and ADD_LONG. + +2017-06-09 Werner Lemberg + + Provide more macros for flooring, ceiling, and rounding. + + These versions don't produce run-time errors due to integer + overflow. + + * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H. + (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG, + FT_PIX_CEIL_LONG): New macros. + (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32, + FT_PIX_CEIL_INT32): New macros. + +2017-06-09 Werner Lemberg + + Remove unused macros. + + * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT, + NEG_INT): Deleted. + +2017-06-09 Werner Lemberg + + */*: Remove `OVERFLOW_' prefix. + + This increases readability. + +2017-06-07 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137 + + * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32. + + * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use + OVERFLOW_SUB_LONG. + +2017-06-06 Werner Lemberg + + [cff] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122 + + * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32. + + * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else + branches. + +2017-06-05 Werner Lemberg + + [cff] Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089 + + * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32. + +2017-06-04 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088 + + * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32. + + * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG, + OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG. + +2017-06-03 Werner Lemberg + + [base, cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068 + + * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use + OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG. + + * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c + (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32. + + * src/truetype/ttgload.c (compute_glyph_metrics): User + OVERFLOW_SUB_LONG. + + * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig, + Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X, + Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use + OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG. + +2017-06-03 Werner Lemberg + + * builds/unix/freetype-config.in: Fix pkg-config test (#51162). + + Patch directly taken from bug report. + +2017-06-03 Werner Lemberg + + [bdf] Synchronize sanity checks with pcf driver. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058 + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent. + Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and + RESOLUTION_Y properties. + +2017-06-03 Werner Lemberg + + [cff, truetype] Integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057 + + * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32. + + * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG. + (Ins_SUB): Use OVERFLOW_SUB_LONG. + (Ins_NEG): Use NEG_LONG. + +2017-06-03 Werner Lemberg + + ftcalc.h: Avoid left-shift of negative numbers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055 + + * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6, + INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication. + +2017-06-02 Werner Lemberg + + [cff] Even more integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046 + + * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use + OVERFLOW_ADD_INT32. + +2017-06-02 Werner Lemberg + + [cff] More integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032 + + * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32. + +2017-06-02 Werner Lemberg + + [bdf] Don't left-shift negative numbers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031 + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication. + +2017-06-02 Werner Lemberg + + [bdf] Fix integer scanning routines. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029 + + * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos): + Stop scanning if result would overflow. + +2017-06-02 Werner Lemberg + + [cff] Fix integer overflows. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028 + + * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c + (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32. + +2017-06-01 Werner Lemberg + + [smooth] Some 32bit integer overflow run-time errors. + + * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG, + OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros. + [!STANDALONE]: Include FT_INTERNAL_CALC_H. + (gray_render_cubic): Use those macros where appropriate. + +2017-06-01 Werner Lemberg + + * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'. + +2017-06-01 Werner Lemberg + + [psaux] 32bit integer overflow tun-time errors (#46149). + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use + OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate. + +2017-06-01 Werner Lemberg + + * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again. + + Problem reported by Marek Kašík . + + The problematic font that exceeds the old limit is Padauk-Bold, + version 3.002, containing bytecode generated by a buggy version of + ttfautohint. + +2017-05-31 Werner Lemberg + + [cff] 32bit integer overflow run-time errors 2/2 (#46149). + + This commit handles the new engine. + + * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32, + OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG, + NEG_INT32): New macros. + + * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32. + + * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init, + cf2_hintmap_map, cf2_glyphpath_hintPoint, + cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset, + cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use + OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and + NEG_INT32 where appropriate. + + * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend, + cf2_interpT2CharString): Ditto. + Also add some other code where needed to avoid overflow. + +2017-05-30 Werner Lemberg + + [cff] 32bit integer overflow run-time errors 1/2 (#46149). + + This commit handles the old engine. + + * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H. + (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and + OVERFLOW_SUB_LONG where needed. + + * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H. + (power_ten_limits): New static array. + (do_fixed): Use it to prevent multiplication overflow. + (cff_parser_run): Use OVERFLOW_ADD_LONG. + +2017-05-30 Werner Lemberg + + [psaux] Correctly handle sequences of multiple number signs. + + * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero + if we encounter more than a single sign. + +2017-05-29 Werner Lemberg + + [pcf] 32bit integer overflow run-time errors (#46149). + + * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for + `fontAscent' and `fontDescent'. + (pcf_load_font): Add sanity checks for global height. + Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, + RESOLUTION_X, and RESOLUTION_Y properties. + +2017-05-29 Werner Lemberg + + Handle some integer overflow run-time errors (#46149, #48979). + + This commit (mainly for 32bit CPUs) is the first of a series of + similar commits to handle known integer overflows. Basically, all + of them are harmless, since they affect rendering of glyphs only, + not posing security threats. It is expected that fuzzying will show + up more overflows, to be fixed in due course. + + The idea is to mark places where overflows can occur, using macros + that simply cast to unsigned integers, because overflow arithmetic + is well defined in this case. Doing so suppresses run-time errors + of sanitizers without adding computational overhead. + + * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT, + OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG, + OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros. + + * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply, + FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled, + ft_corner_orientation): Use new macros. + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros. + +2017-05-28 Werner Lemberg + + * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove. + + This macro is not used. + +2017-05-28 Werner Lemberg + + [cff] s/cf2_floatToFixed/cf2_doubleToFixed/. + + The new name better describes what the macro actually does; + additionally, we don't need a trailing `f' for literals (there was + only a single such instance in the code, but this caused a clang + warning because the macro itself uses `double' literals). + + * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h, + src/cff/cf2font.c, src/cff/cf2hints.c: Updated. + +2017-05-28 Werner Lemberg + + Fix negation of INT_MIN and LONG_MIN (#46149). + + * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned + value, to be used as the result. + (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix, + FT_Vector_NormLen): Updated. + +2017-05-27 Werner Lemberg + + [truetype] Fix handling of design coordinates (#51127). + + * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design + coordinates if we have to create the `blends->coord' array. + (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance + coordinates if no instance is selected yet. + +2017-05-24 Werner Lemberg + + [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII). + + Problem reported by Marek Kašík , cf. + + https://bugzilla.redhat.com/show_bug.cgi?id=1451795 + + * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c + (PCF_Face_Init): Implement it. + +2017-05-20 Nikolaus Waxweiler + + [truetype] Always use interpreter v35 for B/W rendering (#51051). + + * src/truetype/ttgload.c (tt_loader_init) + [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust + `subpixel_hinting_lean', `grayscale_cleartype', and + `vertical_lcd_lean' accordingly. + + * src/truetype/ttinterp.c (Ins_GETINFO): Updated. + (TT_RunIns): Update `backward_compatibility' flag. + +2017-05-20 Alexei Podtelezhnikov + + [smooth] Implement minimal dynamic padding for LCD filtering. + + Extra bitmap padding for LCD filtering depends on the filter. The + default 5-tap filter needs 2 extra subpixels. The light 3-tap filter + needs only 1 extra subpixel. This space could be already available + due to rounding. In order to optimize the padding, we now expand + CBox for the given filter weights before rounding. + + This change breaks current Skia (and Firefox). + + * include/freetype/internal/ftobjs.h (FT_LibraryRec) + [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights, + FT_Library_SetLcdFilter): Remove `lcd_extra' initializations. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic + LCD padding. + +2017-05-15 Werner Lemberg + + [sfnt] Return proper scaling values for SBIX bitmaps. + + Problem reported by Hin-Tak Leung . + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it. + +2017-05-15 Werner Lemberg + + [truetype] Fix error handling for embedded bitmaps. + + Problem reported by Hin-Tak Leung . + + * src/truetype/ttgload.c (TT_Load_Glyph) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not + scalable. + +2017-05-15 Alexei Podtelezhnikov + + [autofit] Make autohint warping NORMAL option. + + This moves warping option from LIGHT to NORMAL mode. This makes LIGHT + truly void of hinting in x-direction, with left side bearing never + changed and right side bearing only altered by advance rounding. + Therefore, LIGHT is now ready to return fractional advance. As a + NORMAL option, warping substitutes normal hinting. + + * src/autofit/afcjk.c (af_cjk_hints_apply): Updated. + * src/autofit/aflatin.c (af_latin_hints_apply): Updated. + * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated. + + * src/autofit/afloader.c (af_loader_load_glyph): Handle warping + phantom points as normal. + +2017-05-14 Werner Lemberg + + Remove remnants of raster pool. + + * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove + `raster_pool' and `raster_pool_size' fields. + + * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c + (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated. + 2017-05-13 Werner Lemberg * Version 2.8 released. @@ -327,7 +1430,7 @@ [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470). - * src/truetype/ttobs.h (TT_SizeRec): Add field `hinted_metrics' to + * src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to hold hinted metrics. Make `metrics' a pointer so that `tt_glyph_load' can easily switch between metrics. @@ -1096,7 +2199,7 @@ * src/sfnt/sfdriver.c (search_name_id): Rename to... (sfnt_get_name_id): ... this. - (sfnt_get_ps_name, sfnt_interface): Udpated. + (sfnt_get_ps_name, sfnt_interface): Updated. 2017-03-04 Werner Lemberg @@ -1522,7 +2625,7 @@ * include/freetype/ftsnames.h (FT_SfntLangTag): New structure. (FT_Get_Sfnt_LangTag): New declaration. - * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion. + * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function. * docs/CHANGES: Updated. @@ -2521,7 +3624,7 @@ [cff] Implement CFF2 support (2/2). The font variation code. All parts dependent on the GX code in the - `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT. + `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT. In other words, you can still compile the `cff' module without defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2 support without font variation). @@ -3545,7 +4648,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1270288 - * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage' + * src/cff/cf2intrp.c (cf2_interpT2CharString): Initialize `storage' array to handle a `get' opcode without a previous `put'. 2016-09-05 Alexei Podtelezhnikov diff --git a/modules/freetype2/ChangeLog.24 b/modules/freetype2/ChangeLog.24 index 796763cd7b3a..e33b8f5e98c3 100644 --- a/modules/freetype2/ChangeLog.24 +++ b/modules/freetype2/ChangeLog.24 @@ -1860,10 +1860,10 @@ Fix `checking if gcc static flag -static works' test. On my linux build tree, I receive yes answer in every package I - build except freetype for this test checking if gcc static flag + build except FreeType for this test checking if gcc static flag `-static' works - On freetype, no is received, unless bzip2 and zlib are disabled using + In FreeType, no is received, unless bzip2 and zlib are disabled using ./configure --without-bzip2 --without-zlib diff --git a/modules/freetype2/ChangeLog.25 b/modules/freetype2/ChangeLog.25 index d7fed710da54..f3e5cc1aca65 100644 --- a/modules/freetype2/ChangeLog.25 +++ b/modules/freetype2/ChangeLog.25 @@ -2116,7 +2116,7 @@ builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle HarfBuzz. - * docs/INSTALL.UNIX: Document interdependency of Freetype with + * docs/INSTALL.UNIX: Document interdependency of FreeType with HarfBuzz. 2014-02-28 Alexei Podtelezhnikov diff --git a/modules/freetype2/Jamfile b/modules/freetype2/Jamfile index 5df9b8fef75f..aa3d9f0dbb01 100644 --- a/modules/freetype2/Jamfile +++ b/modules/freetype2/Jamfile @@ -210,7 +210,7 @@ actions RefDoc { python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 - --title=FreeType-2.8 + --title=FreeType-2.8.1 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h diff --git a/modules/freetype2/LICENSE.TXT b/modules/freetype2/LICENSE.TXT index af5a1c50f65b..f346fc1909ad 100644 --- a/modules/freetype2/LICENSE.TXT +++ b/modules/freetype2/LICENSE.TXT @@ -1,39 +1,39 @@ - -The FreeType 2 font engine is copyrighted work and cannot be used -legally without a software license. In order to make this project -usable to a vast majority of developers, we distribute it under two -mutually exclusive open-source licenses. - -This means that *you* must choose *one* of the two licenses described -below, then obey all its terms and conditions when using FreeType 2 in -any of your projects or products. - - - The FreeType License, found in the file `FTL.TXT', which is similar - to the original BSD license *with* an advertising clause that forces - you to explicitly cite the FreeType project in your product's - documentation. All details are in the license file. This license - is suited to products which don't use the GNU General Public - License. - - Note that this license is compatible to the GNU General Public - License version 3, but not version 2. - - - The GNU General Public License version 2, found in `GPLv2.TXT' (any - later version can be used also), for programs which already use the - GPL. Note that the FTL is incompatible with GPLv2 due to its - advertisement clause. - -The contributed BDF and PCF drivers come with a license similar to that -of the X Window System. It is compatible to the above two licenses (see -file src/bdf/README and src/pcf/README). The same holds for the files -`fthash.c' and `fthash.h'; their code was part of the BDF driver in -earlier FreeType versions. - -The gzip module uses the zlib license (see src/gzip/zlib.h) which too is -compatible to the above two licenses. - -The MD5 checksum support (only used for debugging in development builds) -is in the public domain. - - ---- end of LICENSE.TXT --- + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `FTL.TXT', which is similar + to the original BSD license *with* an advertising clause that forces + you to explicitly cite the FreeType project in your product's + documentation. All details are in the license file. This license + is suited to products which don't use the GNU General Public + License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in `GPLv2.TXT' (any + later version can be used also), for programs which already use the + GPL. Note that the FTL is incompatible with GPLv2 due to its + advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to that +of the X Window System. It is compatible to the above two licenses (see +file src/bdf/README and src/pcf/README). The same holds for the files +`fthash.c' and `fthash.h'; their code was part of the BDF driver in +earlier FreeType versions. + +The gzip module uses the zlib license (see src/gzip/zlib.h) which too is +compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development builds) +is in the public domain. + + +--- end of LICENSE.TXT --- diff --git a/modules/freetype2/README b/modules/freetype2/README index 926e9dc1174b..35324b0a784a 100644 --- a/modules/freetype2/README +++ b/modules/freetype2/README @@ -1,5 +1,5 @@ - FreeType 2.8 - ============ + FreeType 2.8.1 + ============== Homepage: http://www.freetype.org @@ -24,9 +24,9 @@ and download one of the following files. - freetype-doc-2.8.tar.bz2 - freetype-doc-2.8.tar.gz - ftdoc28.zip + freetype-doc-2.8.1.tar.bz2 + freetype-doc-2.8.1.tar.gz + ftdoc281.zip To view the documentation online, go to diff --git a/modules/freetype2/builds/mac/ftmac.c b/modules/freetype2/builds/mac/ftmac.c index 60cf73e5ac1d..f5747a401a49 100644 --- a/modules/freetype2/builds/mac/ftmac.c +++ b/modules/freetype2/builds/mac/ftmac.c @@ -1423,7 +1423,7 @@ typedef short ResourceIndex; /* accepts an FSRef instead of a path. */ /* */ /* This function is deprecated because Carbon data types (FSRef) */ - /* are not cross-platform, and thus not suitable for the freetype API. */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FSRef( FT_Library library, const FSRef* ref, @@ -1481,7 +1481,7 @@ typedef short ResourceIndex; /* accepts an FSSpec instead of a path. */ /* */ /* This function is deprecated because Carbon data types (FSSpec) */ - /* are not cross-platform, and thus not suitable for the freetype API. */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FSSpec( FT_Library library, const FSSpec* spec, diff --git a/modules/freetype2/builds/unix/config.guess b/modules/freetype2/builds/unix/config.guess index 69ed3e573bb3..7834a66476c6 100755 --- a/modules/freetype2/builds/unix/config.guess +++ b/modules/freetype2/builds/unix/config.guess @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2017-03-05' +timestamp='2017-09-12' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -259,6 +259,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; + *:Redox:*:*) + echo ${UNAME_MACHINE}-unknown-redox + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -315,15 +318,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; @@ -855,10 +849,6 @@ EOF *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; @@ -874,27 +864,12 @@ EOF echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; @@ -1304,14 +1279,21 @@ EOF if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1335,16 +1317,16 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) + NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; - NSR-?:NONSTOP_KERNEL:*:*) + NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; - NSX-?:NONSTOP_KERNEL:*:*) + NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) @@ -1422,8 +1404,8 @@ cat >&2 <. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='FreeType' PACKAGE_TARNAME='freetype' -PACKAGE_VERSION='2.8' -PACKAGE_STRING='FreeType 2.8' +PACKAGE_VERSION='2.8.1' +PACKAGE_STRING='FreeType 2.8.1' PACKAGE_BUGREPORT='freetype@nongnu.org' PACKAGE_URL='' @@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeType 2.8 to adapt to many kinds of systems. +\`configure' configures FreeType 2.8.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1394,7 +1394,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeType 2.8:";; + short | recursive ) echo "Configuration of FreeType 2.8.1:";; esac cat <<\_ACEOF @@ -1541,7 +1541,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeType configure 2.8 +FreeType configure 2.8.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2139,7 +2139,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeType $as_me 2.8, which was +It was created by FreeType $as_me 2.8.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2495,7 +2495,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Don't forget to update `docs/VERSIONS.TXT'! -version_info='20:0:14' +version_info='21:0:15' ft_version=`echo $version_info | tr : .` @@ -13193,8 +13193,8 @@ main () } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok, add it to XX_ANSIFLAGS" >&5 -$as_echo "ok, add it to XX_ANSIFLAGS" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok, adding to XX_ANSIFLAGS" >&5 +$as_echo "ok, adding to XX_ANSIFLAGS" >&6; } XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" else @@ -15017,7 +15017,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeType $as_me 2.8, which was +This file was extended by FreeType $as_me 2.8.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15083,7 +15083,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -FreeType config.status 2.8 +FreeType config.status 2.8.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/modules/freetype2/builds/unix/configure.ac b/modules/freetype2/builds/unix/configure.ac index 7cdafccc1769..9da9f0bdd2f2 100644 --- a/modules/freetype2/builds/unix/configure.ac +++ b/modules/freetype2/builds/unix/configure.ac @@ -11,13 +11,13 @@ # indicate that you have read the license and understand and accept it # fully. -AC_INIT([FreeType], [2.8], [freetype@nongnu.org], [freetype]) +AC_INIT([FreeType], [2.8.1], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) # Don't forget to update `docs/VERSIONS.TXT'! -version_info='20:0:14' +version_info='21:0:15' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -275,7 +275,7 @@ if test "x$GCC" = xyes; then } ])], - [AC_MSG_RESULT([ok, add it to XX_ANSIFLAGS]) + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" ], [AC_MSG_RESULT([no])]) diff --git a/modules/freetype2/builds/unix/configure.raw b/modules/freetype2/builds/unix/configure.raw index ef6debed4e5a..d91a732669d5 100644 --- a/modules/freetype2/builds/unix/configure.raw +++ b/modules/freetype2/builds/unix/configure.raw @@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in]) # Don't forget to update `docs/VERSIONS.TXT'! -version_info='20:0:14' +version_info='21:0:15' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -275,7 +275,7 @@ if test "x$GCC" = xyes; then } ])], - [AC_MSG_RESULT([ok, add it to XX_ANSIFLAGS]) + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" ], [AC_MSG_RESULT([no])]) diff --git a/modules/freetype2/builds/unix/freetype-config.in b/modules/freetype2/builds/unix/freetype-config.in index 97de13449851..2c1c160f8836 100644 --- a/modules/freetype2/builds/unix/freetype-config.in +++ b/modules/freetype2/builds/unix/freetype-config.in @@ -14,7 +14,7 @@ export LC_ALL # if `pkg-config' is available, use values from `freetype2.pc' -pkg-config --version >/dev/null 2>&1 +%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1 if test $? -eq 0 ; then # note that option `--variable' is not affected by the # PKG_CONFIG_SYSROOT_DIR environment variable @@ -23,17 +23,17 @@ if test $? -eq 0 ; then export PKG_CONFIG_SYSROOT_DIR fi - prefix=`pkg-config --variable prefix freetype2` - exec_prefix=`pkg-config --variable exec_prefix freetype2` + prefix=`%PKG_CONFIG% --variable prefix freetype2` + exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2` - includedir=`pkg-config --variable includedir freetype2` - libdir=`pkg-config --variable libdir freetype2` + includedir=`%PKG_CONFIG% --variable includedir freetype2` + libdir=`%PKG_CONFIG% --variable libdir freetype2` - version=`pkg-config --modversion freetype2` + version=`%PKG_CONFIG% --modversion freetype2` - cflags=`pkg-config --cflags freetype2` - dynamic_libs=`pkg-config --libs freetype2` - static_libs=`pkg-config --static --libs freetype2` + cflags=`%PKG_CONFIG% --cflags freetype2` + dynamic_libs=`%PKG_CONFIG% --libs freetype2` + static_libs=`%PKG_CONFIG% --static --libs freetype2` else prefix="%prefix%" exec_prefix="%exec_prefix%" diff --git a/modules/freetype2/builds/unix/unix-def.in b/modules/freetype2/builds/unix/unix-def.in index feae99b6583b..34e06e38038e 100644 --- a/modules/freetype2/builds/unix/unix-def.in +++ b/modules/freetype2/builds/unix/unix-def.in @@ -62,6 +62,7 @@ version_info := @version_info@ # Variables needed for `freetype-config' and `freetype.pc'. # +PKG_CONFIG := @PKG_CONFIG@ REQUIRES_PRIVATE := @REQUIRES_PRIVATE@ LIBS_PRIVATE := @LIBS_PRIVATE@ LIBSSTATIC_CONFIG := @LIBSSTATIC_CONFIG@ @@ -102,6 +103,7 @@ NO_OUTPUT := 2> /dev/null $(OBJ_BUILD)/freetype-config: $(TOP_DIR)/builds/unix/freetype-config.in rm -f $@ $@.tmp sed -e 's|%LIBSSTATIC_CONFIG%|$(LIBSSTATIC_CONFIG)|' \ + -e 's|%PKG_CONFIG%|$(PKG_CONFIG)|' \ -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \ -e 's|%exec_prefix%|$(exec_prefix)|' \ -e 's|%ft_version%|$(ft_version)|' \ diff --git a/modules/freetype2/builds/wince/vc2005-ce/freetype.vcproj b/modules/freetype2/builds/wince/vc2005-ce/freetype.vcproj index a1c0e3729259..8805279462da 100644 --- a/modules/freetype2/builds/wince/vc2005-ce/freetype.vcproj +++ b/modules/freetype2/builds/wince/vc2005-ce/freetype.vcproj @@ -21,7 +21,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -81,7 +81,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -201,7 +201,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -321,7 +321,7 @@ - + @@ -341,7 +341,7 @@ - + @@ -361,7 +361,7 @@ - + @@ -381,7 +381,7 @@ - + @@ -401,7 +401,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -461,7 +461,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -521,7 +521,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -561,7 +561,7 @@ - + @@ -581,7 +581,7 @@ - + @@ -601,7 +601,7 @@ - + @@ -621,7 +621,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -661,7 +661,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -701,7 +701,7 @@ - + @@ -721,7 +721,7 @@ - + @@ -741,7 +741,7 @@ - + @@ -758,7 +758,7 @@ - + diff --git a/modules/freetype2/builds/wince/vc2005-ce/index.html b/modules/freetype2/builds/wince/vc2005-ce/index.html index fcb52bc5bcf9..87fbc5adc293 100644 --- a/modules/freetype2/builds/wince/vc2005-ce/index.html +++ b/modules/freetype2/builds/wince/vc2005-ce/index.html @@ -21,14 +21,14 @@ the following targets:
  • PPC/SP WM6 (Windows Mobile 6)
  • -It compiles the following libraries from the FreeType 2.8 sources:

    +It compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/builds/wince/vc2008-ce/freetype.vcproj b/modules/freetype2/builds/wince/vc2008-ce/freetype.vcproj index 273aa53d4f2f..2616df8b4fcf 100644 --- a/modules/freetype2/builds/wince/vc2008-ce/freetype.vcproj +++ b/modules/freetype2/builds/wince/vc2008-ce/freetype.vcproj @@ -88,7 +88,7 @@ /> PPC/SP WM6 (Windows Mobile 6) -It compiles the following libraries from the FreeType 2.8 sources:

    +It compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/builds/windows/detect.mk b/modules/freetype2/builds/windows/detect.mk index 350d156059b8..2032934f541e 100644 --- a/modules/freetype2/builds/windows/detect.mk +++ b/modules/freetype2/builds/windows/detect.mk @@ -77,7 +77,7 @@ ifeq ($(PLATFORM),windows) # So we need to hack. # # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it. - # Details are available in threads of the freetype mailing list + # Details are available in threads of the FreeType mailing list # (2004-11-11), and then in the devel mailing list (2004-11-20 to -23). # ifeq ($(OS),Windows_NT) diff --git a/modules/freetype2/builds/windows/vc2005/freetype.vcproj b/modules/freetype2/builds/windows/vc2005/freetype.vcproj index e5e67d5b3ced..099c527b2e27 100644 --- a/modules/freetype2/builds/windows/vc2005/freetype.vcproj +++ b/modules/freetype2/builds/windows/vc2005/freetype.vcproj @@ -16,7 +16,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -101,7 +101,7 @@ - + diff --git a/modules/freetype2/builds/windows/vc2005/index.html b/modules/freetype2/builds/windows/vc2005/index.html index 4bd9b75b7c05..2a00148894b5 100644 --- a/modules/freetype2/builds/windows/vc2005/index.html +++ b/modules/freetype2/builds/windows/vc2005/index.html @@ -11,14 +11,14 @@

    This directory contains project files for Visual C++, named freetype.vcproj, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.8 sources:

    +compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/builds/windows/vc2008/freetype.vcproj b/modules/freetype2/builds/windows/vc2008/freetype.vcproj index a8bc67295f59..5b505dab9c29 100644 --- a/modules/freetype2/builds/windows/vc2008/freetype.vcproj +++ b/modules/freetype2/builds/windows/vc2008/freetype.vcproj @@ -70,7 +70,7 @@ /> This directory contains project files for Visual C++, named freetype.vcproj, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.8 sources:

    +compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/builds/windows/vc2010/freetype.vcxproj b/modules/freetype2/builds/windows/vc2010/freetype.vcxproj index e4f11fc1159c..5d8182e790fd 100644 --- a/modules/freetype2/builds/windows/vc2010/freetype.vcxproj +++ b/modules/freetype2/builds/windows/vc2010/freetype.vcxproj @@ -50,6 +50,32 @@ x64 + + + + 4.0 + + + + v100 + + + + v120 + + + + v140 + + + + v141 + + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} @@ -58,73 +84,61 @@ StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 StaticLibrary false MultiByte - v100 @@ -191,18 +205,18 @@ - freetype28d - freetype28d - freetype28MTd - freetype28MTd - freetype28STd - freetype28STd - freetype28 - freetype28 - freetype28MT - freetype28MT - freetype28ST - freetype28ST + freetype281d + freetype281d + freetype281MTd + freetype281MTd + freetype281STd + freetype281STd + freetype281 + freetype281 + freetype281MT + freetype281MT + freetype281ST + freetype281ST diff --git a/modules/freetype2/builds/windows/vc2010/index.html b/modules/freetype2/builds/windows/vc2010/index.html index c2b5800450ad..8209e2427140 100644 --- a/modules/freetype2/builds/windows/vc2010/index.html +++ b/modules/freetype2/builds/windows/vc2010/index.html @@ -12,16 +12,16 @@

    This directory contains a project file for Visual C++ (VS.NET 2010 or newer), named freetype.vcxproj, and Visual Studio, called freetype.sln. It compiles the following libraries from the -FreeType 2.8 sources:

    +FreeType 2.8.1 sources:

      -    freetype28.lib    - release build
      -    freetype28d.lib   - debug build
      -    freetype28ST.lib  - release build; single threaded
      -    freetype28STd.lib - debug build;   single threaded
      -    freetype28MT.lib  - release build; multi-threaded
      -    freetype28MTd.lib - debug build;   multi-threaded
      + freetype281.lib - release build + freetype281d.lib - debug build + freetype281ST.lib - release build; single threaded + freetype281STd.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MTd.lib - debug build; multi-threaded

    Both Win32 and x64 builds are supported.

    diff --git a/modules/freetype2/builds/windows/visualc/freetype.dsp b/modules/freetype2/builds/windows/visualc/freetype.dsp index fc14b48ce28d..1a613128fce3 100644 --- a/modules/freetype2/builds/windows/visualc/freetype.dsp +++ b/modules/freetype2/builds/windows/visualc/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype28_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT_D.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype281_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype28.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype281.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" @@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype28.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype28ST.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281.lib" +# ADD LIB32 /out:"..\..\..\objs\freetype281ST.lib" # SUBTRACT LIB32 /nologo !ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" @@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype28_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28ST_D.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281ST_D.lib" !ENDIF diff --git a/modules/freetype2/builds/windows/visualc/freetype.vcproj b/modules/freetype2/builds/windows/visualc/freetype.vcproj index 968f2ee756b7..67b147e47eb7 100644 --- a/modules/freetype2/builds/windows/visualc/freetype.vcproj +++ b/modules/freetype2/builds/windows/visualc/freetype.vcproj @@ -69,7 +69,7 @@ /> This directory contains project files for Visual C++, named freetype.dsp, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.8 sources:

    +compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/builds/windows/visualce/freetype.dsp b/modules/freetype2/builds/windows/visualce/freetype.dsp index fc14b48ce28d..1a613128fce3 100644 --- a/modules/freetype2/builds/windows/visualce/freetype.dsp +++ b/modules/freetype2/builds/windows/visualce/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype28_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT_D.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype281_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype28.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype281.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" @@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype28.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype28ST.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281.lib" +# ADD LIB32 /out:"..\..\..\objs\freetype281ST.lib" # SUBTRACT LIB32 /nologo !ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" @@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype28_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28ST_D.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281ST_D.lib" !ENDIF diff --git a/modules/freetype2/builds/windows/visualce/freetype.vcproj b/modules/freetype2/builds/windows/visualce/freetype.vcproj index f28b3c140866..90084b40bf28 100644 --- a/modules/freetype2/builds/windows/visualce/freetype.vcproj +++ b/modules/freetype2/builds/windows/visualce/freetype.vcproj @@ -87,7 +87,7 @@ /> PPC/SP WM6 (Windows Mobile 6) -It compiles the following libraries from the FreeType 2.8 sources:

    +It compiles the following libraries from the FreeType 2.8.1 sources:

      -    freetype28.lib     - release build; single threaded
      -    freetype28_D.lib   - debug build;   single threaded
      -    freetype28MT.lib   - release build; multi-threaded
      -    freetype28MT_D.lib - debug build;   multi-threaded
      + freetype281.lib - release build; single threaded + freetype281_D.lib - debug build; single threaded + freetype281MT.lib - release build; multi-threaded + freetype281MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/modules/freetype2/devel/ftoption.h b/modules/freetype2/devel/ftoption.h index db661e7fcbc6..9f9cac12909e 100644 --- a/modules/freetype2/devel/ftoption.h +++ b/modules/freetype2/devel/ftoption.h @@ -107,22 +107,19 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* Uncomment the line below if you want to activate sub-pixel rendering */ - /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* Uncomment the line below if you want to activate LCD rendering */ + /* technology similar to ClearType in this build of the library. This */ + /* technology triples the resolution in the direction color subpixels. */ + /* To mitigate color fringes inherent to this technology, you also need */ + /* to explicitly set up LCD filtering. */ /* */ /* Note that this feature is covered by several Microsoft patents */ /* and should not be activated in any default build of the library. */ + /* When this macro is not defined, FreeType offers alternative LCD */ + /* rendering technology that produces excellent output without LCD */ + /* filtering. */ /* */ - /* This macro has no impact on the FreeType API, only on its */ - /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ - /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ - /* the original size in case this macro isn't defined; however, each */ - /* triplet of subpixels has R=G=B. */ - /* */ - /* This is done to allow FreeType clients to run unmodified, forcing */ - /* them to display normal gray-level anti-aliased glyphs. */ - /* */ -#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ /*************************************************************************/ @@ -327,7 +324,7 @@ FT_BEGIN_HEADER /* */ /* - The TrueType driver will provide its own set of glyph names, */ /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ + /* `post' table, but will not synthesize a missing Unicode charmap. */ /* */ /* - The Type 1 driver will not be able to synthesize a Unicode */ /* charmap out of the glyphs found in the fonts. */ diff --git a/modules/freetype2/docs/CHANGES b/modules/freetype2/docs/CHANGES index 3ee9510d076c..510da893cbe7 100644 --- a/modules/freetype2/docs/CHANGES +++ b/modules/freetype2/docs/CHANGES @@ -1,4 +1,87 @@ +CHANGES BETWEEN 2.8 and 2.8.1 + + I. IMPORTANT BUG FIXES + + - B/W hinting of TrueType fonts didn't work properly if + interpreter version 38 or 40 was selected. + + - Some severe problems within the handling of TrueType Variation + Fonts were found and fixed. + + - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle + the case with less input coordinates than axes. + + + II. IMPORTANT CHANGES + + - By default, FreeType now offers high quality LCD-optimized + output without resorting to ClearType techniques of resolution + tripling and filtering. In this method, called Harmony, each + color channel is generated separately after shifting the glyph + outline, capitalizing on the fact that the color grids on LCD + panels are shifted by a third of a pixel. This output is + indistinguishable from ClearType with a light 3-tap filter. + + + III. MISCELLANEOUS + + - Using the new function `FT_Get_Var_Axis_Flags', an application + can access the `flags' field of a variation axis (introduced in + OpenType version 1.8.2) + + - More sanity checks. + + - The internal representation of buffers for LCD rendering has + changed (to be more precise, the amount of padding gets computed + differently). Applications that use the FreeType API are not + affected. + + - To reset all design axis values of a variation font to its + default values you can now say + + error = FT_Set_Var_Design_Coordinates( face, 0, NULL ); + + This also works with functions `FT_Set_MM_Design_Coordinates' + and `FT_Set_MM_Blend_Coordinates'. + + - FreeType now synthesizes a missing Unicode cmap for (older) + TrueType fonts also if glyph names are available. + + - FreeType has improved handling of BDF fonts without the + `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties; the + library now uses the values of the `SIZE' keyword if they are + missing. Previously, `SIZE' was completely ignored, and + FreeType used heuristic values instead. + + - Multiple calls to `FT_Bitmap_Convert' do work now as advertised. + Previously, they failed with an assertion error if there was an + empty bitmap between non-empty ones. + + - The warping option has moved from `light' to `normal' hinting + where it replaces the original hinting algorithm. The `light' + mode is now always void of any hinting in x-direction. + + - 16bit compiler support is now officially ended. We didn't + provide any maintenance since many years, and given that there + were no error or problem reports either it seems that it is no + longer needed. + + - The `ftgrid' demo program can now toggle the display of grid lines + with the `G' key. + + - The `ftgrid' demo program can toggle a different set of colors + (suitable to color-blind people) with the `C' key. + + - The `ftgrid' demo program now supports the `-e' command line option + to select a cmap. + + - The `ftdump' demo program has a new command line option `-t' to + output the SFNT table list. + + +====================================================================== + CHANGES BETWEEN 2.7.1 and 2.8 I. IMPORTANT CHANGES @@ -44,6 +127,20 @@ CHANGES BETWEEN 2.7.1 and 2.8 configuration option. However, it is strongly recommended to avoid that, adjusting font sizes instead. + - Global size metrics values in the `FT_Size_Metrics' structure + can be different for TrueType fonts. Reason is that in older + FreeType versions the metrics were rounded differently to + integer pixels compared to all other font formats, yielding an + inconsistent behaviour if you used non-native hinting. Starting + with this version, global size metrics for TrueType fonts are + handled the same as other font formats: `ascender' gets rounded + up, `descender' gets rounded down, `height' gets normally + rounded, and `max_advance' gets normally rounded, too. + + If you need more precise values of (global) ascender, descender, + height, or `max_advance', please take the corresponding values + from the `FT_Face' structure and scale them manually. + - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType now scales the font linearly again (bug introduced in version 2.4.6). @@ -748,7 +845,7 @@ CHANGES BETWEEN 2.5.2 and 2.5.3 and install FreeType again. With FreeType's `configure' script the procedure boils down to - configure, build, and install Freetype, then configure, compile, + configure, build, and install FreeType, then configure, compile, and install HarfBuzz, then configure, compile, and install FreeType again (after executing `make distclean'). diff --git a/modules/freetype2/docs/INSTALL.VMS b/modules/freetype2/docs/INSTALL.VMS index 7a5174d2e62f..6ba48d39b5c1 100644 --- a/modules/freetype2/docs/INSTALL.VMS +++ b/modules/freetype2/docs/INSTALL.VMS @@ -1,7 +1,7 @@ -How to build the freetype2 library on VMS +How to build the FreeType 2 library on VMS ----------------------------------------- -It is actually very straightforward to install the Freetype2 library. +It is actually very straightforward to install the FreeType 2 library. Just execute vms_make.com from the toplevel directory to build the library. This procedure currently accepts the following options: @@ -15,10 +15,10 @@ ccopt= Options to pass to the C compiler e.g. ccopt=/float=ieee In case you did download the demos, place them in a separate directory -sharing the same toplevel as the directory of Freetype2 and follow the -same instructions as above for the demos from there. The build -process relies on this to figure the location of the Freetype2 include -files. +sharing the same top level as the directory of FreeType 2 and follow +the same instructions as above for the demos from there. The build +process relies on this to figure out the location of the FreeType 2 +include files. To rebuild the sources it is necessary to have MMS/MMK installed on diff --git a/modules/freetype2/docs/VERSIONS.TXT b/modules/freetype2/docs/VERSIONS.TXT index e116d34cb534..eac4fc81698b 100644 --- a/modules/freetype2/docs/VERSIONS.TXT +++ b/modules/freetype2/docs/VERSIONS.TXT @@ -52,6 +52,7 @@ on _most_ systems, but not all of them: release libtool so ------------------------------- + 2.8.1 21.0.15 6.15.0 2.8.0 20.0.14 6.14.0 2.7.1 19.0.13 6.13.0 2.7.0 18.6.12 6.12.6 @@ -99,7 +100,7 @@ other release numbers. #include #include FT_FREETYPE_H #if (FREETYPE_MAJOR*1000 + FREETYPE_MINOR)*1000 + FREETYPE_PATCH < 2000009 -#error Freetype version too low. +#error FreeType version too low. #endif ], [AC_MSG_RESULT(yes) diff --git a/modules/freetype2/docs/freetype-config.1 b/modules/freetype2/docs/freetype-config.1 index eaaa1b95b368..0170b11681fb 100644 --- a/modules/freetype2/docs/freetype-config.1 +++ b/modules/freetype2/docs/freetype-config.1 @@ -1,4 +1,4 @@ -.TH FREETYPE-CONFIG 1 "May 2017" "FreeType 2.8" +.TH FREETYPE-CONFIG 1 "September 2017" "FreeType 2.8.1" . . .SH NAME diff --git a/modules/freetype2/docs/reference/ft2-auto_hinter.html b/modules/freetype2/docs/reference/ft2-auto_hinter.html index f1770f861b1a..3cdf0548d64d 100644 --- a/modules/freetype2/docs/reference/ft2-auto_hinter.html +++ b/modules/freetype2/docs/reference/ft2-auto_hinter.html @@ -3,7 +3,7 @@ -FreeType-2.8 API Reference +FreeType-2.8.1 API Reference