瀏覽代碼

Merge pull request #55118 from akien-mga/graphite-80c52493e

Rémi Verschelde 3 年之前
父節點
當前提交
882d61791b
共有 3 個文件被更改,包括 11 次插入244 次删除
  1. 4 4
      thirdparty/README.md
  2. 0 238
      thirdparty/graphite/ChangeLog
  3. 7 2
      thirdparty/graphite/src/Pass.cpp

+ 4 - 4
thirdparty/README.md

@@ -176,14 +176,14 @@ Files extracted from upstream source:
 ## graphite
 
 - Upstream: https://github.com/silnrsi/graphite
-- Version: 1.3.14 (92f59dcc52f73ce747f1cdc831579ed2546884aa, 2020)
+- Version: 1.3.14 (80c52493ef42e6fe605a69dcddd2a691cd8a1380, 2021)
 - License: MPL-2.0
 
 Files extracted from upstream source:
 
 - the `include` folder
-- the `src` folder
-- `COPYING`, `ChangeLog`
+- the `src` folder (minus `CMakeLists.txt` and `files.mk`)
+- `COPYING`
 
 
 ## harfbuzz
@@ -610,7 +610,7 @@ instead of `miniz.h` as an external dependency.
 ## vhacd
 
 - Upstream: https://github.com/kmammou/v-hacd
-- Version: git (b07958e18e01d504e3af80eeaeb9f033226533d7, 2019)
+- Version: git (1a49edf29c69039df15286181f2f27e17ceb9aef, 2020)
 - License: BSD-3-Clause
 
 Files extracted from upstream source:

+ 0 - 238
thirdparty/graphite/ChangeLog

@@ -1,238 +0,0 @@
-1.3.14
-    . Bug fixes
-    . Allow features to be hidden (for aliases)
-    . Move to python3
-    . Rename doc files from .txt to .asc
-
-1.3.13
-    . Resolve minor spacing issue in rtl non-overlap kerning
-    . python3 for graphite.py
-    . Better fuzzing
-    . Better building on windows
-
-1.3.12
-    . Graphite no longer does dumb rendering for fonts with no smarts
-    . Segment caching code removed. Anything attempting to use the segment cache gets given a regular face instead
-    . Add libfuzzer support
-    . Builds now require C++11
-    . Improvements to Windows 64 bit builds
-    . Support different versions of python including 32 bit and python 3
-    . Various minor bug fixes
-
-1.3.11
-    . Fixes due to security review
-    . Minor collision avoidance fixes
-    . Fix LZ4 decompressor against high compression
-
-1.3.10
-    . Address floating point build parameters to give consistent positioning results across platforms
-    . Various bug fixes
-
-1.3.9
-    . Add Collision COLL_ISSPACE to allow for visible spaces in collision avoidance
-    . Add segment and pass direction information to tracing output
-    . Bug fix rule length testing in 32-bit
-    . Increase slanted margin distances for collision avoidance
-    . Change kerning algorithm to simple outline expansion. Seems to make no visible difference.
-    . Add trace2svg to test tools
-
-1.3.8
-    . Various bug fixes arising from fuzzing
-    . Fix regression that stopped piglatin from working
-    . Make collision avoidance kerning give more regular results
-    . Minor modification to clustering algorithm to handle variable width chars
-
-1.3.7
-    . Bug fixes
-    . Start to deprecate SegCache. This will be going away in a later release.
-
-1.3.6
-    . Bug fixes
-
-1.3.5
-    . Bug fixes
-        . Security bug fix
-        . Fix ARM misalignment problem
-        . Track latest cmake
-
-1.3.4
-    . Transition from Mercurial to Git
-    . Bug fixes
-        . Fix Collision Kerning ignoring some diacritics
-        . Handle pass bits 16-31 to speed up fonts with > 16 passes
-        . Various minor fuzz bug fixes
-        . Make Coverity happy
-        . Add GR_FALLTHROUGH macro for clang c++11
-
-1.3.3
-    . Slight speed up in Collision Avoidance
-    . Remove dead bidi code
-    . Bug fixes
-        . Between pass bidi reorderings and at the end
-        . Decompressor fuzz bugs
-        . Other fuzz bugs
-
-1.3.2
-    . Remove full bidi. All segments are assumed to be single directioned.
-    . Bug fixes:
-        . Decompressor corner cases
-        . Various fuzz bugs
-
-1.3.1
-    . Deprecation warning: Full bidi support is about to be deprecated. Make contact
-      if this impacts you.
-    . Change compression block format slightly to conform to LZ4
-    . Bug fixes:
-        . Handle mono direction text with diacritics consistently. Fonts
-          now see the direction they expect consistently and bidi now
-          gives expected results.
-        . Fixed lots of fuzz bugs
-        . Coverity cleanups
-        . Build now works for clang and/or asan and/or afl etc.
-
-1.3.0
-    . Add collision avoidance
-        . Shift Collider
-        . Kern Collider
-        . Octabox outlines and subboxes
-    . Add compressed Silf and Glat table support
-    . Bug fixes:
-        . Stop loops forming in the child, sibling tree
-        . Handle bidi mirroring correctly if no bidi occurring
-
-1.2.4
-    . Face failure now has error code reporting via debug logging
-        . can now call gr_start_logging(NULL, fname)
-        . gr2fonttest --alltrace added
-    . Format 14 table support
-        . Not done. To be handled entirely in the compiler
-    . Bidi support for Unicode 6.3 Isolating direction controls
-    . Fonts no longer require a glyf/loca table. In such cases the bounding box is always 0.
-    . Clang ASAN build support added for testing.
-    . Handle out of memory sanely.
-    . Documentation improvements
-    . Bug fixes:
-        . Enforce fonts having to store glyph attributes by monotonically increasing attribute number
-        . zeropadding was not getting called on feature tags
-        . automatic associations for unassociated characters
-        . use direct engine on Mac
-        . various extreme case reading 1 past the end errors fixed
-        . remove tabs from sources so that it becomes readable again
-
-1.2.3
-    . Bug fixes only:
-        . fix byte swapping when testing cmap subtable lengths
-        . work around armel compilation problems with conditional operators
-        . fix pseudoglyph support for advance and bbox
-
-1.2.2
-    . Add support for passKeySlot (makes Charis 2x faster) up to 32 passes
-    . Add telemetry output to json if enabled in build GRAPHITE2_TELEMETRY
-    . Shrink font memory footprint particularly in the fsm
-    . Add -S to comparerenderer
-    . Bug fixes:
-        . Fix shift.x being reversed for rtl text
-        . Fix faulty fallback justification
-        . Fix bad cmap handling
-        . Support compiling on old Solaris where bidi attributes clash with register names
-        . Follow the crowd in using Windows.h
-
-1.2.1
-    . Bug fixes:
-        . Allow glyph reattachment
-        . Allow signed glyph attributes
-        . Various build problems with MacOS, old gcc versions, etc.
-        . Various overrun read errors fixed
-
-1.2.0
-    . API Changes:
-        . Added Windows friendly gr_start_logging and gr_stop_logging, now per face
-        . Added gr_make_face_with_ops, gr_make_face_with_seg_cache_and_ops
-        . Added gr_make_font_with_ops
-        . Added gr_face_is_char_supported
-        . Added gr_face_info to give info to apps about face capabilities
-        . Deprecated gr_make_face, gr_make_face_with_seg_cache, gr_make_font_with_advance_fn
-        . Deprecated graphite_start_logging and graphite_stop_logging
-            . These functions are stubbed now and do nothing, but do compile and link.
-        . Bump API version to 3
-    . Add C# wrapper to contrib
-    . Handle justification information in a font and do something useful with it
-    . Builds clang clean (has done for a while)
-    . Bug fixes
-    . Windows build and bug fixes
-    . Add extra information to json debug output
-    . Added windows build documentation
-    . Added freetype sample code and test
-
-1.1.3
-    . Default build has GRAPHITE2_COMPARE_RENDERER to OFF to reduce dependencies
-    . Builds on Mac with clang
-    . Debug output improvements
-    . Tidy up perl wrappers
-    . Fuzz tester improvements
-    . Various bug fixes for bad font handling
-
-1.1.2
-    . Support feature ids < 4 chars when space padded for inclusion in FF 14.
-    . More fuzztesting and removal of causes of valgrind bad reads and sigabrts
-    . Remove contrib/android into its own repo (http://hg.palaso.org/grandroid)
-    . Update comparerenderer to latest harfbuzzng api
-
-1.1.1
-    . Missing Log.h included
-    . perl wrappers updated
-
-1.1.0
-    . Refactored debug output to use json
-    . Renamed VM_MACHINE_TYPE to GRAPHITE2_VM_TYPE
-    . Renamed DISABLE_SEGCACHE to GRAPHITE2_NSEGCACE
-    . Renamed DISBALE_FILE_FACE to GRAPHITE2_NFILEFACE
-    . Renamed ENABLE_COMPARE_RENDERER to GRAPHTIE2_COMPARE_RENDERER
-    . Renamed DOXYGEN_CONFIG to GRAPHITE2_DOXYGEN_CONFIG
-    . Renamed GR2_CUSTOM_HEADER to GRAPHITE2_CUSTOM_HEADER
-    . Renamed GR2_EXPORTING to GRAPHITE2_EXPORTING
-    . Added GRAPHITE2_STATIC for static only builds
-    . Added GRAPHITE2_NTRACING to compile out tracing code
-    . Documented GRAPHITE2_{EXPORTING,STATIC,NTRACING} in hacking.txt
-    . Bump libtool version to 2.1.0
-    . dumb font rendering works
-    . slot user attributes are now signed rather than unsigned
-    . add support for long class maps
-    . Rename perl library to avoid nameclash on Windows
-    . Various robustness fixes
-    . Moved internal .h files into src/inc
-    . Parallelise fuzztest
-    . General build improvements, particularly on Windows
-
-1.0.3
-    . Fix UTF16 surrogate support
-    . script and lang tags may be space padded or null padded
-    . Remove need for WORDS_BIGENDIAN, do it all automatically
-    . Remove all #include <new>. Use CLASS_NEW_DELETE instead.
-    . Fix comparerenderer to work with current hbng
-    . Add valgrind to fuzztest to ensure good memory use at all times
-    . Fix new fuzztest exposed bugs.
-    . Fix bugs exposed by Mozilla security review
-    . Add continuous integration build on Windows support
-
-1.0.2
-    . Fix Windows build
-    . Comparerenderer uses hbng enforcing ot rendering
-    . Add Bidi .hasChar support and refactor mirroring code
-    . Make cmake default Release rather than debug
-    . Don't compile in a boat load of TtfUtil that isn't used, saving 15% of binary
-    . Chase the FSF around its latest office moves
-    . WORDS_BIGENDIAN is set at the top so tests now pass on ppc, etc.
-    . More words in the manual
-
-1.0.1
-    . Release is the default build in cmake now.
-    . Refactor cmake build to not rebuild things so much.
-    . Include a missing file
-    . Remove -nostdlibs, making gcc happy everywhere
-    . Update comparerenderer to latest hbng interface
-    . Add changelog
-
-1.0.0
-    . First major release of perfect code!
-

+ 7 - 2
thirdparty/graphite/src/Pass.cpp

@@ -1056,12 +1056,17 @@ float Pass::resolveKern(Segment *seg, Slot *slotFix, GR_MAYBE_UNUSED Slot *start
     ymin = min(by + bbb.bl.y, ymin);
     for (nbor = slotFix->next(); nbor; nbor = nbor->next())
     {
-        if (nbor->isChildOf(base))
-            continue;
         if (!gc.check(nbor->gid()))
             return 0.;
         const Rect &bb = seg->theGlyphBBoxTemporary(nbor->gid());
         SlotCollision *cNbor = seg->collisionInfo(nbor);
+        const float nby = nbor->origin().y + cNbor->shift().y;
+        if (nbor->isChildOf(base))
+        {
+            ymax = max(nby + bb.tr.y, ymax);
+            ymin = min(nby + bb.bl.y, ymin);
+            continue;
+        }
         if ((bb.bl.y == 0.f && bb.tr.y == 0.f) || (cNbor->flags() & SlotCollision::COLL_ISSPACE))
         {
             if (m_kernColls == InWord)