summaryrefslogtreecommitdiff
path: root/thirdparty/graphite
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2021-11-19 12:22:48 +0100
committerRémi Verschelde <rverschelde@gmail.com>2021-11-19 12:23:54 +0100
commitd1360895eeb4cd127f74fd80be7452c8e07b26be (patch)
tree8485bb0c674edc7d14e84950223e815f5bf47c8a /thirdparty/graphite
parentb452005c5cd7d4f281a288dfdcde4be2d3df4f6e (diff)
graphite: Update to upstream commit 80c52493e
https://github.com/silnrsi/graphite/commit/80c52493ef42e6fe605a69dcddd2a691cd8a1380 Includes a fix for inaccurate slice range calculation for bases with diacritics. Also removes unnecessary ChangeLog, and updated unrelated vhacd commit to match currently used one.
Diffstat (limited to 'thirdparty/graphite')
-rw-r--r--thirdparty/graphite/ChangeLog238
-rw-r--r--thirdparty/graphite/src/Pass.cpp9
2 files changed, 7 insertions, 240 deletions
diff --git a/thirdparty/graphite/ChangeLog b/thirdparty/graphite/ChangeLog
deleted file mode 100644
index e36110e1c1..0000000000
--- a/thirdparty/graphite/ChangeLog
+++ /dev/null
@@ -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!
-
diff --git a/thirdparty/graphite/src/Pass.cpp b/thirdparty/graphite/src/Pass.cpp
index db31c22d46..47ae2064f7 100644
--- a/thirdparty/graphite/src/Pass.cpp
+++ b/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)