Move all references of old url to the new address (#622)
This commit is contained in:
parent
baf7779d2d
commit
7c6937e7c7
|
@ -30,7 +30,7 @@ script:
|
||||||
- ./configure $CONFIGURE_OPTS
|
- ./configure $CONFIGURE_OPTS
|
||||||
- make
|
- make
|
||||||
- make check || (cat */test-suite.log test/*/test-suite.log && false)
|
- make check || (cat */test-suite.log test/*/test-suite.log && false)
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SLUG" == "behdad/harfbuzz" ]; then rm -f src/.libs/NONE.gcov; touch src/NONE; coveralls -e docs; fi
|
- if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SLUG" == "harfbuzz/harfbuzz" ]; then rm -f src/.libs/NONE.gcov; touch src/NONE; coveralls -e docs; fi
|
||||||
after_success:
|
after_success:
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then bash .ci/deploy-docs.sh; fi
|
- if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then bash .ci/deploy-docs.sh; fi
|
||||||
notifications:
|
notifications:
|
||||||
|
|
2
BUILD.md
2
BUILD.md
|
@ -9,7 +9,7 @@ on Windows, consider using [vcpkg](https://github.com/Microsoft/vcpkg),
|
||||||
provided by Microsoft, for building HarfBuzz and other open-source libraries
|
provided by Microsoft, for building HarfBuzz and other open-source libraries
|
||||||
but if you need to build harfbuzz from source, put ragel binary on your
|
but if you need to build harfbuzz from source, put ragel binary on your
|
||||||
PATH and follow appveyor CI's cmake
|
PATH and follow appveyor CI's cmake
|
||||||
[build steps](https://github.com/behdad/harfbuzz/blob/master/appveyor.yml).
|
[build steps](https://github.com/harfbuzz/harfbuzz/blob/master/appveyor.yml).
|
||||||
|
|
||||||
on macOS, using MacPorts:
|
on macOS, using MacPorts:
|
||||||
* sudo port install freetype glib2 cairo
|
* sudo port install freetype glib2 cairo
|
||||||
|
|
|
@ -146,7 +146,7 @@ if (NOT IN_HB_DIST)
|
||||||
if (RAGEL)
|
if (RAGEL)
|
||||||
message(STATUS "ragel found at: ${RAGEL}")
|
message(STATUS "ragel found at: ${RAGEL}")
|
||||||
else ()
|
else ()
|
||||||
message(FATAL_ERROR "ragel not found, get it here -- http://www.complang.org/ragel/ or, use harfbuzz releases https://github.com/behdad/harfbuzz/releases")
|
message(FATAL_ERROR "ragel not found, get it here -- http://www.complang.org/ragel/ or, use harfbuzz releases https://github.com/harfbuzz/harfbuzz/releases")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
foreach (ragel_output IN ITEMS ${HB_BASE_RAGEL_GENERATED_sources} ${HB_OT_RAGEL_GENERATED_sources})
|
foreach (ragel_output IN ITEMS ${HB_BASE_RAGEL_GENERATED_sources} ${HB_OT_RAGEL_GENERATED_sources})
|
||||||
|
|
20
NEWS
20
NEWS
|
@ -33,7 +33,7 @@ Monday, October 23nd, 2017
|
||||||
|
|
||||||
- Yesterday's release had a bad crasher; don't use it. That's what
|
- Yesterday's release had a bad crasher; don't use it. That's what
|
||||||
happens when one works on Sunday...
|
happens when one works on Sunday...
|
||||||
https://github.com/behdad/harfbuzz/issues/578
|
https://github.com/harfbuzz/harfbuzz/issues/578
|
||||||
- Build fixes for FreeBSD and Chrome Android.
|
- Build fixes for FreeBSD and Chrome Android.
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ Sunday, October 22nd, 2017
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
|
- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
|
||||||
To be refined: https://github.com/behdad/harfbuzz/issues/554
|
To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
|
||||||
- Faster hb_set_t implementation.
|
- Faster hb_set_t implementation.
|
||||||
- Don't use deprecated ICU API.
|
- Don't use deprecated ICU API.
|
||||||
- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
|
- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
|
||||||
|
@ -443,7 +443,7 @@ Tuesday, February 23, 2016
|
||||||
- CoreText: Drastically speed up font initialization.
|
- CoreText: Drastically speed up font initialization.
|
||||||
- CoreText: Fix tiny leak.
|
- CoreText: Fix tiny leak.
|
||||||
- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
|
- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
|
||||||
https://github.com/behdad/harfbuzz/issues/217
|
https://github.com/harfbuzz/harfbuzz/issues/217
|
||||||
- Add test/shaping/README.md about how to add tests to the suite.
|
- Add test/shaping/README.md about how to add tests to the suite.
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,8 +459,8 @@ Friday, February 19, 2016
|
||||||
- Allow GPOS cursive connection on marks, and fix the interaction with
|
- Allow GPOS cursive connection on marks, and fix the interaction with
|
||||||
mark attachment. This work resulted in some changes to how mark
|
mark attachment. This work resulted in some changes to how mark
|
||||||
attachments work. See:
|
attachments work. See:
|
||||||
https://github.com/behdad/harfbuzz/issues/211
|
https://github.com/harfbuzz/harfbuzz/issues/211
|
||||||
https://github.com/behdad/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
|
https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
|
||||||
- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
|
- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
|
||||||
- Add nmake-based build system for Windows.
|
- Add nmake-based build system for Windows.
|
||||||
- Minor speedup.
|
- Minor speedup.
|
||||||
|
@ -501,7 +501,7 @@ Wednesday, November 26, 2015
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
- Fix badly-broken fallback shaper that affected terminology.
|
- Fix badly-broken fallback shaper that affected terminology.
|
||||||
https://github.com/behdad/harfbuzz/issues/187
|
https://github.com/harfbuzz/harfbuzz/issues/187
|
||||||
- Fix y_scaling in Graphite shaper.
|
- Fix y_scaling in Graphite shaper.
|
||||||
- API changes:
|
- API changes:
|
||||||
* An unset glyph_h_origin() function in font-funcs now (sensibly)
|
* An unset glyph_h_origin() function in font-funcs now (sensibly)
|
||||||
|
@ -523,11 +523,11 @@ Wednesday, November 18, 2015
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
- Implement 'stch' stretch feature for Syriac Abbreviation Mark.
|
- Implement 'stch' stretch feature for Syriac Abbreviation Mark.
|
||||||
https://github.com/behdad/harfbuzz/issues/141
|
https://github.com/harfbuzz/harfbuzz/issues/141
|
||||||
- Disable use of decompose_compatibility() callback.
|
- Disable use of decompose_compatibility() callback.
|
||||||
- Implement "shaping" of various Unicode space characters, even
|
- Implement "shaping" of various Unicode space characters, even
|
||||||
if the font does not support them.
|
if the font does not support them.
|
||||||
https://github.com/behdad/harfbuzz/issues/153
|
https://github.com/harfbuzz/harfbuzz/issues/153
|
||||||
- If font does not support U+2011 NO-BREAK HYPHEN, fallback to
|
- If font does not support U+2011 NO-BREAK HYPHEN, fallback to
|
||||||
U+2010 HYPHEN.
|
U+2010 HYPHEN.
|
||||||
- Changes resulting from libFuzzer continuous fuzzing:
|
- Changes resulting from libFuzzer continuous fuzzing:
|
||||||
|
@ -550,7 +550,7 @@ Thursday, October 15, 2015
|
||||||
- Revert default load-flags of fonts created using hb_ft_font_create()
|
- Revert default load-flags of fonts created using hb_ft_font_create()
|
||||||
back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
|
back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
|
||||||
last release (1.0.5), but caused major issues, so revert.
|
last release (1.0.5), but caused major issues, so revert.
|
||||||
https://github.com/behdad/harfbuzz/issues/143
|
https://github.com/harfbuzz/harfbuzz/issues/143
|
||||||
|
|
||||||
|
|
||||||
Overview of changes leading to 1.0.5
|
Overview of changes leading to 1.0.5
|
||||||
|
@ -558,7 +558,7 @@ Tuesday, October 13, 2015
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
- Fix multiple memory access bugs discovered using libFuzzer.
|
- Fix multiple memory access bugs discovered using libFuzzer.
|
||||||
https://github.com/behdad/harfbuzz/issues/139
|
https://github.com/harfbuzz/harfbuzz/issues/139
|
||||||
Everyone should upgrade to this version as soon as possible.
|
Everyone should upgrade to this version as soon as possible.
|
||||||
We now have continuous fuzzing set up, to avoid issues like
|
We now have continuous fuzzing set up, to avoid issues like
|
||||||
these creeping in again.
|
these creeping in again.
|
||||||
|
|
8
README
8
README
|
@ -1,7 +1,7 @@
|
||||||
[![Build Status](https://travis-ci.org/behdad/harfbuzz.svg)](https://travis-ci.org/behdad/harfbuzz)
|
[![Build Status](https://travis-ci.org/harfbuzz/harfbuzz.svg)](https://travis-ci.org/harfbuzz/harfbuzz)
|
||||||
[![Build Status](https://ci.appveyor.com/api/projects/status/4oaq58ns2h0m2soa?svg=true)](https://ci.appveyor.com/project/behdad/harfbuzz)
|
[![Build Status](https://ci.appveyor.com/api/projects/status/4oaq58ns2h0m2soa?svg=true)](https://ci.appveyor.com/project/harfbuzz/harfbuzz)
|
||||||
[![CircleCI](https://circleci.com/gh/behdad/harfbuzz.svg?style=svg)](https://circleci.com/gh/behdad/harfbuzz)
|
[![CircleCI](https://circleci.com/gh/harfbuzz/harfbuzz.svg?style=svg)](https://circleci.com/gh/harfbuzz/harfbuzz)
|
||||||
[![Coverage Status](https://img.shields.io/coveralls/behdad/harfbuzz.svg)](https://coveralls.io/r/behdad/harfbuzz)
|
[![Coverage Status](https://img.shields.io/coveralls/harfbuzz/harfbuzz.svg)](https://coveralls.io/r/harfbuzz/harfbuzz)
|
||||||
[ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/)
|
[ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/)
|
||||||
|
|
||||||
This is HarfBuzz, a text shaping library.
|
This is HarfBuzz, a text shaping library.
|
||||||
|
|
|
@ -59,7 +59,7 @@ HarfBuzz release walk-through checklist:
|
||||||
12. Push the commit and tag out: "git push --follow-tags". Make sure it's
|
12. Push the commit and tag out: "git push --follow-tags". Make sure it's
|
||||||
pushed both to freedesktop repo and github.
|
pushed both to freedesktop repo and github.
|
||||||
|
|
||||||
13. Go to GitHub release page [here](https://github.com/behdad/harfbuzz/releases),
|
13. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases),
|
||||||
edit the tag, upload artefacts and NEWS entry and save.
|
edit the tag, upload artefacts and NEWS entry and save.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
AC_PREREQ([2.64])
|
AC_PREREQ([2.64])
|
||||||
AC_INIT([HarfBuzz],
|
AC_INIT([HarfBuzz],
|
||||||
[1.7.1],
|
[1.7.1],
|
||||||
[https://github.com/behdad/harfbuzz/issues/new],
|
[https://github.com/harfbuzz/harfbuzz/issues/new],
|
||||||
[harfbuzz],
|
[harfbuzz],
|
||||||
[http://harfbuzz.org/])
|
[http://harfbuzz.org/])
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 12 KiB |
|
@ -22,7 +22,7 @@
|
||||||
source tree is available
|
source tree is available
|
||||||
<ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
|
<ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
|
||||||
Also available on
|
Also available on
|
||||||
<ulink url="https://github.com/behdad/harfbuzz">github</ulink>.
|
<ulink url="https://github.com/harfbuzz/harfbuzz">github</ulink>.
|
||||||
See <xref linkend="download" endterm="download.title"/> for release tarballs.
|
See <xref linkend="download" endterm="download.title"/> for release tarballs.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<para>
|
<para>
|
||||||
The canonical source tree is available
|
The canonical source tree is available
|
||||||
<ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
|
<ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
|
||||||
Also available on <ulink url="https://github.com/behdad/harfbuzz">github</ulink>.
|
Also available on <ulink url="https://github.com/harfbuzz/harfbuzz">github</ulink>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The API that comes with <filename class='headerfile'>hb.h</filename> will
|
The API that comes with <filename class='headerfile'>hb.h</filename> will
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<!--download-page
|
<!--download-page
|
||||||
rdf:resource=""/-->
|
rdf:resource=""/-->
|
||||||
<bug-database
|
<bug-database
|
||||||
rdf:resource="https://github.com/behdad/harfbuzz/issues" />
|
rdf:resource="https://github.com/harfbuzz/harfbuzz/issues" />
|
||||||
|
|
||||||
<maintainer>
|
<maintainer>
|
||||||
<foaf:Person>
|
<foaf:Person>
|
||||||
|
|
|
@ -301,10 +301,10 @@ def map_to_use(data):
|
||||||
# the nasalization marks, maybe only for U+1CE9..U+1CF1.
|
# the nasalization marks, maybe only for U+1CE9..U+1CF1.
|
||||||
if U == 0x1CED: UISC = Tone_Mark
|
if U == 0x1CED: UISC = Tone_Mark
|
||||||
|
|
||||||
# TODO: https://github.com/behdad/harfbuzz/issues/525
|
# TODO: https://github.com/harfbuzz/harfbuzz/issues/525
|
||||||
if U == 0x1A7F: UISC = Consonant_Final; UIPC = Bottom
|
if U == 0x1A7F: UISC = Consonant_Final; UIPC = Bottom
|
||||||
|
|
||||||
# TODO: https://github.com/behdad/harfbuzz/pull/609
|
# TODO: https://github.com/harfbuzz/harfbuzz/pull/609
|
||||||
if U == 0x20F0: UISC = Cantillation_Mark; UIPC = Top
|
if U == 0x20F0: UISC = Cantillation_Mark; UIPC = Top
|
||||||
|
|
||||||
values = [k for k,v in items if v(U,UISC,UGC)]
|
values = [k for k,v in items if v(U,UISC,UGC)]
|
||||||
|
|
|
@ -1000,7 +1000,7 @@ resize_and_retry:
|
||||||
* However, even that wouldn't work if we were passed in the CGFont to
|
* However, even that wouldn't work if we were passed in the CGFont to
|
||||||
* construct a hb_face to begin with.
|
* construct a hb_face to begin with.
|
||||||
*
|
*
|
||||||
* See: http://github.com/behdad/harfbuzz/pull/36
|
* See: http://github.com/harfbuzz/harfbuzz/pull/36
|
||||||
*
|
*
|
||||||
* Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098
|
* Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -272,7 +272,7 @@ template <typename ret_t> /* Make sure we don't use hb_auto_trace_t when not tra
|
||||||
struct hb_auto_trace_t<0, ret_t>;
|
struct hb_auto_trace_t<0, ret_t>;
|
||||||
|
|
||||||
/* For disabled tracing; optimize out everything.
|
/* For disabled tracing; optimize out everything.
|
||||||
* https://github.com/behdad/harfbuzz/pull/605 */
|
* https://github.com/harfbuzz/harfbuzz/pull/605 */
|
||||||
template <typename ret_t>
|
template <typename ret_t>
|
||||||
struct hb_no_trace_t {
|
struct hb_no_trace_t {
|
||||||
inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; }
|
inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; }
|
||||||
|
|
|
@ -44,7 +44,7 @@ struct SingleSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
/* TODO Switch to range-based API to work around malicious fonts.
|
/* TODO Switch to range-based API to work around malicious fonts.
|
||||||
* https://github.com/behdad/harfbuzz/issues/363 */
|
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
hb_codepoint_t glyph_id = iter.get_glyph ();
|
hb_codepoint_t glyph_id = iter.get_glyph ();
|
||||||
if (c->glyphs->has (glyph_id))
|
if (c->glyphs->has (glyph_id))
|
||||||
c->glyphs->add ((glyph_id + deltaGlyphID) & 0xFFFFu);
|
c->glyphs->add ((glyph_id + deltaGlyphID) & 0xFFFFu);
|
||||||
|
@ -58,7 +58,7 @@ struct SingleSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
/* TODO Switch to range-based API to work around malicious fonts.
|
/* TODO Switch to range-based API to work around malicious fonts.
|
||||||
* https://github.com/behdad/harfbuzz/issues/363 */
|
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
hb_codepoint_t glyph_id = iter.get_glyph ();
|
hb_codepoint_t glyph_id = iter.get_glyph ();
|
||||||
c->input->add (glyph_id);
|
c->input->add (glyph_id);
|
||||||
c->output->add ((glyph_id + deltaGlyphID) & 0xFFFFu);
|
c->output->add ((glyph_id + deltaGlyphID) & 0xFFFFu);
|
||||||
|
@ -130,7 +130,7 @@ struct SingleSubstFormat2
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
if (c->glyphs->has (iter.get_glyph ()))
|
if (c->glyphs->has (iter.get_glyph ()))
|
||||||
c->glyphs->add (substitute[iter.get_coverage ()]);
|
c->glyphs->add (substitute[iter.get_coverage ()]);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ struct SingleSubstFormat2
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
c->input->add (iter.get_glyph ());
|
c->input->add (iter.get_glyph ());
|
||||||
c->output->add (substitute[iter.get_coverage ()]);
|
c->output->add (substitute[iter.get_coverage ()]);
|
||||||
}
|
}
|
||||||
|
@ -287,7 +287,7 @@ struct Sequence
|
||||||
return_trace (true);
|
return_trace (true);
|
||||||
}
|
}
|
||||||
/* Spec disallows this, but Uniscribe allows it.
|
/* Spec disallows this, but Uniscribe allows it.
|
||||||
* https://github.com/behdad/harfbuzz/issues/253 */
|
* https://github.com/harfbuzz/harfbuzz/issues/253 */
|
||||||
else if (unlikely (count == 0))
|
else if (unlikely (count == 0))
|
||||||
{
|
{
|
||||||
c->buffer->delete_glyph ();
|
c->buffer->delete_glyph ();
|
||||||
|
@ -339,7 +339,7 @@ struct MultipleSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
if (c->glyphs->has (iter.get_glyph ()))
|
if (c->glyphs->has (iter.get_glyph ()))
|
||||||
(this+sequence[iter.get_coverage ()]).closure (c);
|
(this+sequence[iter.get_coverage ()]).closure (c);
|
||||||
}
|
}
|
||||||
|
@ -461,7 +461,7 @@ struct AlternateSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
if (c->glyphs->has (iter.get_glyph ())) {
|
if (c->glyphs->has (iter.get_glyph ())) {
|
||||||
const AlternateSet &alt_set = this+alternateSet[iter.get_coverage ()];
|
const AlternateSet &alt_set = this+alternateSet[iter.get_coverage ()];
|
||||||
unsigned int count = alt_set.len;
|
unsigned int count = alt_set.len;
|
||||||
|
@ -479,7 +479,7 @@ struct AlternateSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
c->input->add (iter.get_glyph ());
|
c->input->add (iter.get_glyph ());
|
||||||
const AlternateSet &alt_set = this+alternateSet[iter.get_coverage ()];
|
const AlternateSet &alt_set = this+alternateSet[iter.get_coverage ()];
|
||||||
unsigned int count = alt_set.len;
|
unsigned int count = alt_set.len;
|
||||||
|
@ -792,7 +792,7 @@ struct LigatureSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
if (c->glyphs->has (iter.get_glyph ()))
|
if (c->glyphs->has (iter.get_glyph ()))
|
||||||
(this+ligatureSet[iter.get_coverage ()]).closure (c);
|
(this+ligatureSet[iter.get_coverage ()]).closure (c);
|
||||||
}
|
}
|
||||||
|
@ -806,7 +806,7 @@ struct LigatureSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
c->input->add (iter.get_glyph ());
|
c->input->add (iter.get_glyph ());
|
||||||
(this+ligatureSet[iter.get_coverage ()]).collect_glyphs (c);
|
(this+ligatureSet[iter.get_coverage ()]).collect_glyphs (c);
|
||||||
}
|
}
|
||||||
|
@ -961,7 +961,7 @@ struct ReverseChainSingleSubstFormat1
|
||||||
for (iter.init (this+coverage); iter.more (); iter.next ())
|
for (iter.init (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/behdad/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
if (c->glyphs->has (iter.get_glyph ()))
|
if (c->glyphs->has (iter.get_glyph ()))
|
||||||
c->glyphs->add (substitute[iter.get_coverage ()]);
|
c->glyphs->add (substitute[iter.get_coverage ()]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -711,7 +711,7 @@ static inline bool match_input (hb_apply_context_t *c,
|
||||||
* o If two marks want to ligate and they belong to different components of the
|
* o If two marks want to ligate and they belong to different components of the
|
||||||
* same ligature glyph, and said ligature glyph is to be ignored according to
|
* same ligature glyph, and said ligature glyph is to be ignored according to
|
||||||
* mark-filtering rules, then allow.
|
* mark-filtering rules, then allow.
|
||||||
* https://github.com/behdad/harfbuzz/issues/545
|
* https://github.com/harfbuzz/harfbuzz/issues/545
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool is_mark_ligature = _hb_glyph_info_is_mark (&buffer->cur());
|
bool is_mark_ligature = _hb_glyph_info_is_mark (&buffer->cur());
|
||||||
|
|
|
@ -273,13 +273,13 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
|
||||||
* what we do for joiners in Indic-like shapers, but since the
|
* what we do for joiners in Indic-like shapers, but since the
|
||||||
* FVSes are GC=Mn, we have use a separate bit to remember them.
|
* FVSes are GC=Mn, we have use a separate bit to remember them.
|
||||||
* Fixes:
|
* Fixes:
|
||||||
* https://github.com/behdad/harfbuzz/issues/234 */
|
* https://github.com/harfbuzz/harfbuzz/issues/234 */
|
||||||
else if (unlikely (hb_in_range (u, 0x180Bu, 0x180Du))) props |= UPROPS_MASK_HIDDEN;
|
else if (unlikely (hb_in_range (u, 0x180Bu, 0x180Du))) props |= UPROPS_MASK_HIDDEN;
|
||||||
/* TAG characters need similar treatment. Fixes:
|
/* TAG characters need similar treatment. Fixes:
|
||||||
* https://github.com/behdad/harfbuzz/issues/463 */
|
* https://github.com/harfbuzz/harfbuzz/issues/463 */
|
||||||
else if (unlikely (hb_in_range (u, 0xE0020u, 0xE007Fu))) props |= UPROPS_MASK_HIDDEN;
|
else if (unlikely (hb_in_range (u, 0xE0020u, 0xE007Fu))) props |= UPROPS_MASK_HIDDEN;
|
||||||
/* COMBINING GRAPHEME JOINER should not be skipped; at least some times.
|
/* COMBINING GRAPHEME JOINER should not be skipped; at least some times.
|
||||||
* https://github.com/behdad/harfbuzz/issues/554 */
|
* https://github.com/harfbuzz/harfbuzz/issues/554 */
|
||||||
else if (unlikely (u == 0x034Fu)) props |= UPROPS_MASK_HIDDEN;
|
else if (unlikely (u == 0x034Fu)) props |= UPROPS_MASK_HIDDEN;
|
||||||
}
|
}
|
||||||
else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL (gen_cat)))
|
else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL (gen_cat)))
|
||||||
|
@ -305,7 +305,7 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
|
||||||
/* Recategorize emoji skin-tone modifiers as Unicode mark, so they
|
/* Recategorize emoji skin-tone modifiers as Unicode mark, so they
|
||||||
* behave correctly in non-native directionality. They originally
|
* behave correctly in non-native directionality. They originally
|
||||||
* are MODIFIER_SYMBOL. Fixes:
|
* are MODIFIER_SYMBOL. Fixes:
|
||||||
* https://github.com/behdad/harfbuzz/issues/169
|
* https://github.com/harfbuzz/harfbuzz/issues/169
|
||||||
*/
|
*/
|
||||||
if (unlikely (hb_in_range (u, 0x1F3FBu, 0x1F3FFu)))
|
if (unlikely (hb_in_range (u, 0x1F3FBu, 0x1F3FFu)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#define HB_BUFFER_SCRATCH_FLAG_ARABIC_HAS_STCH HB_BUFFER_SCRATCH_FLAG_COMPLEX0
|
#define HB_BUFFER_SCRATCH_FLAG_ARABIC_HAS_STCH HB_BUFFER_SCRATCH_FLAG_COMPLEX0
|
||||||
|
|
||||||
/* See:
|
/* See:
|
||||||
* https://github.com/behdad/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516 */
|
* https://github.com/harfbuzz/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516 */
|
||||||
#define HB_ARABIC_GENERAL_CATEGORY_IS_WORD(gen_cat) \
|
#define HB_ARABIC_GENERAL_CATEGORY_IS_WORD(gen_cat) \
|
||||||
(FLAG_UNSAFE (gen_cat) & \
|
(FLAG_UNSAFE (gen_cat) & \
|
||||||
(FLAG (HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED) | \
|
(FLAG (HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED) | \
|
||||||
|
@ -198,7 +198,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
|
||||||
* pause for Arabic, not other scripts.
|
* pause for Arabic, not other scripts.
|
||||||
*
|
*
|
||||||
* A pause after calt is required to make KFGQPC Uthmanic Script HAFS
|
* A pause after calt is required to make KFGQPC Uthmanic Script HAFS
|
||||||
* work correctly. See https://github.com/behdad/harfbuzz/issues/505
|
* work correctly. See https://github.com/harfbuzz/harfbuzz/issues/505
|
||||||
*/
|
*/
|
||||||
|
|
||||||
map->add_gsub_pause (nuke_joiners);
|
map->add_gsub_pause (nuke_joiners);
|
||||||
|
|
|
@ -161,7 +161,7 @@ disable_otl_hebrew (const hb_ot_shape_plan_t *plan)
|
||||||
* script. This matches Uniscribe better, and makes fonts like
|
* script. This matches Uniscribe better, and makes fonts like
|
||||||
* Arial that have GSUB/GPOS/GDEF but no data for Hebrew work.
|
* Arial that have GSUB/GPOS/GDEF but no data for Hebrew work.
|
||||||
* See:
|
* See:
|
||||||
* https://github.com/behdad/harfbuzz/issues/347#issuecomment-267838368
|
* https://github.com/harfbuzz/harfbuzz/issues/347#issuecomment-267838368
|
||||||
*/
|
*/
|
||||||
return plan->map.chosen_script[1] != HB_TAG ('h','e','b','r');
|
return plan->map.chosen_script[1] != HB_TAG ('h','e','b','r');
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ enum indic_syllabic_category_t {
|
||||||
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM,
|
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM,
|
||||||
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA = OT_N,
|
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA = OT_N,
|
||||||
INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER = OT_CS,
|
INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER = OT_CS,
|
||||||
INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK = OT_SM, /* https://github.com/behdad/harfbuzz/issues/552 */
|
INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK = OT_SM, /* https://github.com/harfbuzz/harfbuzz/issues/552 */
|
||||||
INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_Coeng,
|
INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_Coeng,
|
||||||
INDIC_SYLLABIC_CATEGORY_JOINER = OT_ZWJ,
|
INDIC_SYLLABIC_CATEGORY_JOINER = OT_ZWJ,
|
||||||
INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X,
|
INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X,
|
||||||
|
|
|
@ -210,7 +210,7 @@ set_indic_properties (hb_glyph_info_t &info)
|
||||||
}
|
}
|
||||||
else if (unlikely (u == 0x0A51u))
|
else if (unlikely (u == 0x0A51u))
|
||||||
{
|
{
|
||||||
/* https://github.com/behdad/harfbuzz/issues/524 */
|
/* https://github.com/harfbuzz/harfbuzz/issues/524 */
|
||||||
cat = OT_M;
|
cat = OT_M;
|
||||||
pos = POS_BELOW_C;
|
pos = POS_BELOW_C;
|
||||||
}
|
}
|
||||||
|
@ -220,9 +220,9 @@ set_indic_properties (hb_glyph_info_t &info)
|
||||||
else if (unlikely (u == 0x11301u || u == 0x11303u)) cat = OT_SM;
|
else if (unlikely (u == 0x11301u || u == 0x11303u)) cat = OT_SM;
|
||||||
else if (unlikely (u == 0x1133cu)) cat = OT_N;
|
else if (unlikely (u == 0x1133cu)) cat = OT_N;
|
||||||
|
|
||||||
else if (unlikely (u == 0x0AFBu)) cat = OT_N; /* https://github.com/behdad/harfbuzz/issues/552 */
|
else if (unlikely (u == 0x0AFBu)) cat = OT_N; /* https://github.com/harfbuzz/harfbuzz/issues/552 */
|
||||||
|
|
||||||
else if (unlikely (u == 0x0980u)) cat = OT_PLACEHOLDER; /* https://github.com/behdad/harfbuzz/issues/538 */
|
else if (unlikely (u == 0x0980u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/issues/538 */
|
||||||
else if (unlikely (u == 0x17C6u)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */
|
else if (unlikely (u == 0x17C6u)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */
|
||||||
else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x2010u, 0x2011u)))
|
else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x2010u, 0x2011u)))
|
||||||
cat = OT_PLACEHOLDER;
|
cat = OT_PLACEHOLDER;
|
||||||
|
@ -691,7 +691,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||||
const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) plan->data;
|
const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) plan->data;
|
||||||
hb_glyph_info_t *info = buffer->info;
|
hb_glyph_info_t *info = buffer->info;
|
||||||
|
|
||||||
/* https://github.com/behdad/harfbuzz/issues/435#issuecomment-335560167
|
/* https://github.com/harfbuzz/harfbuzz/issues/435#issuecomment-335560167
|
||||||
* // For compatibility with legacy usage in Kannada,
|
* // For compatibility with legacy usage in Kannada,
|
||||||
* // Ra+h+ZWJ must behave like Ra+ZWJ+h...
|
* // Ra+h+ZWJ must behave like Ra+ZWJ+h...
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -90,7 +90,7 @@ CS = 43; # CONS_WITH_STACKER
|
||||||
|
|
||||||
|
|
||||||
consonant_modifiers = CMAbv* CMBlw* ((H B | SUB) VS? CMAbv? CMBlw*)*;
|
consonant_modifiers = CMAbv* CMBlw* ((H B | SUB) VS? CMAbv? CMBlw*)*;
|
||||||
# Override: Allow two MBlw. https://github.com/behdad/harfbuzz/issues/376
|
# Override: Allow two MBlw. https://github.com/harfbuzz/harfbuzz/issues/376
|
||||||
medial_consonants = MPre? MAbv? MBlw?.MBlw? MPst?;
|
medial_consonants = MPre? MAbv? MBlw?.MBlw? MPst?;
|
||||||
dependent_vowels = VPre* VAbv* VBlw* VPst*;
|
dependent_vowels = VPre* VAbv* VBlw* VPst*;
|
||||||
vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*;
|
vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*;
|
||||||
|
|
|
@ -108,7 +108,7 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
|
||||||
/* We really want to find a 'vert' feature if there's any in the font, no
|
/* We really want to find a 'vert' feature if there's any in the font, no
|
||||||
* matter which script/langsys it is listed (or not) under.
|
* matter which script/langsys it is listed (or not) under.
|
||||||
* See various bugs referenced from:
|
* See various bugs referenced from:
|
||||||
* https://github.com/behdad/harfbuzz/issues/63 */
|
* https://github.com/harfbuzz/harfbuzz/issues/63 */
|
||||||
map->add_feature (HB_TAG ('v','e','r','t'), 1, F_GLOBAL | F_GLOBAL_SEARCH);
|
map->add_feature (HB_TAG ('v','e','r','t'), 1, F_GLOBAL | F_GLOBAL_SEARCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -692,7 +692,7 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3)
|
||||||
* one enum to another... So this doesn't provide the type-checking that I
|
* one enum to another... So this doesn't provide the type-checking that I
|
||||||
* originally had in mind... :(.
|
* originally had in mind... :(.
|
||||||
*
|
*
|
||||||
* For MSVC warnings, see: https://github.com/behdad/harfbuzz/pull/163
|
* For MSVC warnings, see: https://github.com/harfbuzz/harfbuzz/pull/163
|
||||||
*/
|
*/
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# pragma warning(disable:4200)
|
# pragma warning(disable:4200)
|
||||||
|
|
|
@ -137,7 +137,7 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
|
||||||
* we do NOT want to hide them, as the way Uniscribe has implemented them
|
* we do NOT want to hide them, as the way Uniscribe has implemented them
|
||||||
* is with regular spacing glyphs, and that's the way fonts are made to work.
|
* is with regular spacing glyphs, and that's the way fonts are made to work.
|
||||||
* As such, we make exceptions for those four.
|
* As such, we make exceptions for those four.
|
||||||
* Also ignoring U+1BCA0..1BCA3. https://github.com/behdad/harfbuzz/issues/503
|
* Also ignoring U+1BCA0..1BCA3. https://github.com/harfbuzz/harfbuzz/issues/503
|
||||||
*
|
*
|
||||||
* Unicode 7.0:
|
* Unicode 7.0:
|
||||||
* $ grep '; Default_Ignorable_Code_Point ' DerivedCoreProperties.txt | sed 's/;.*#/#/'
|
* $ grep '; Default_Ignorable_Code_Point ' DerivedCoreProperties.txt | sed 's/;.*#/#/'
|
||||||
|
|
|
@ -45,7 +45,7 @@ hb.buffer_set_message_func (buf, debugger.message, 1, 0)
|
||||||
## Add text to buffer
|
## Add text to buffer
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
# See https://github.com/behdad/harfbuzz/pull/271
|
# See https://github.com/harfbuzz/harfbuzz/pull/271
|
||||||
#
|
#
|
||||||
if False:
|
if False:
|
||||||
# If you do not care about cluster values reflecting Python
|
# If you do not care about cluster values reflecting Python
|
||||||
|
|
|
@ -159,7 +159,7 @@ test_set_algebra (void)
|
||||||
g_assert (!hb_set_has (s, 13));
|
g_assert (!hb_set_has (s, 13));
|
||||||
g_assert (hb_set_has (s, 19));
|
g_assert (hb_set_has (s, 19));
|
||||||
|
|
||||||
/* https://github.com/behdad/harfbuzz/issues/579 */
|
/* https://github.com/harfbuzz/harfbuzz/issues/579 */
|
||||||
hb_set_clear (s);
|
hb_set_clear (s);
|
||||||
test_empty (s);
|
test_empty (s);
|
||||||
hb_set_add_range (s, 886, 895);
|
hb_set_add_range (s, 886, 895);
|
||||||
|
|
|
@ -18,4 +18,4 @@ The smaller the faster.
|
||||||
For more details consult the following locations:
|
For more details consult the following locations:
|
||||||
- http://llvm.org/docs/LibFuzzer.html or
|
- http://llvm.org/docs/LibFuzzer.html or
|
||||||
- https://github.com/google/libfuzzer-bot/tree/master/harfbuzz
|
- https://github.com/google/libfuzzer-bot/tree/master/harfbuzz
|
||||||
- https://github.com/behdad/harfbuzz/issues/139
|
- https://github.com/harfbuzz/harfbuzz/issues/139
|
||||||
|
|
Loading…
Reference in New Issue