platform/upstream/libHarfBuzzSharp.git
5 years ago[fuzzing] Add more clusterfuzz tests I had lying around
Behdad Esfahbod [Tue, 16 Oct 2018 22:16:20 +0000 (15:16 -0700)]
[fuzzing] Add more clusterfuzz tests I had lying around

5 years agoAdd all the fonts found by fuzzers to the repo (#1258)
Ebrahim Byagowi [Tue, 16 Oct 2018 22:12:04 +0000 (01:42 +0330)]
Add all the fonts found by fuzzers to the repo (#1258)

5 years ago[morx] Reword ligation
Behdad Esfahbod [Tue, 16 Oct 2018 21:46:07 +0000 (14:46 -0700)]
[morx] Reword ligation

Still fails MORX-41.  Am talking to Sascha to better understand what CoreText
is doing.

5 years ago[morx] Comment
Behdad Esfahbod [Tue, 16 Oct 2018 20:57:35 +0000 (13:57 -0700)]
[morx] Comment

5 years ago[test/text-rendering-tests] Update from upstream
Behdad Esfahbod [Tue, 16 Oct 2018 20:39:54 +0000 (13:39 -0700)]
[test/text-rendering-tests] Update from upstream

5 years agoRevert "[vector] Simplify Sort" and "More of the same"
Behdad Esfahbod [Tue, 16 Oct 2018 20:32:52 +0000 (13:32 -0700)]
Revert "[vector] Simplify Sort" and "More of the same"

This reverts commit de0b9a466490c2c13d6ec6f59d5122b0a87d3180.
This reverts commit 921f0e6ec722940a1e37660e1291aa69f9f39db8.

Annnnd, revert.  MSVC doesn't like it.

5 years ago[kern] Scale kern pairs before applying
Behdad Esfahbod [Tue, 16 Oct 2018 20:24:29 +0000 (13:24 -0700)]
[kern] Scale kern pairs before applying

Fixes https://github.com/harfbuzz/harfbuzz/issues/1255
Fixes https://github.com/harfbuzz/harfbuzz/issues/1252

5 years ago[vector] More of the same
Behdad Esfahbod [Tue, 16 Oct 2018 05:20:26 +0000 (22:20 -0700)]
[vector] More of the same

5 years ago[vector] Simplify sort
Behdad Esfahbod [Tue, 16 Oct 2018 05:19:17 +0000 (22:19 -0700)]
[vector] Simplify sort

Hopefully this fits fine with SFINAE with all our compilers.

5 years ago[test] Minor cleanup in test-multithread and test-ot-name (#1256)
Ebrahim Byagowi [Tue, 16 Oct 2018 10:47:21 +0000 (14:17 +0330)]
[test] Minor cleanup in test-multithread and test-ot-name (#1256)

5 years ago[kerx] Minor, remove debug bit
Ebrahim Byagowi [Tue, 16 Oct 2018 07:28:09 +0000 (10:58 +0330)]
[kerx] Minor, remove debug bit

5 years ago[kerx] Fix Format6 sanitize
Behdad Esfahbod [Tue, 16 Oct 2018 04:16:58 +0000 (21:16 -0700)]
[kerx] Fix Format6 sanitize

Fixes https://oss-fuzz.com/v2/testcase-detail/5650286710882304

5 years ago[CBDT] Fix more offsetting
Behdad Esfahbod [Tue, 16 Oct 2018 02:46:45 +0000 (19:46 -0700)]
[CBDT] Fix more offsetting

Fixes https://oss-fuzz.com/v2/testcase-detail/5750379279548416

5 years ago[morx] Another end-of-text corner case
Behdad Esfahbod [Mon, 15 Oct 2018 18:15:54 +0000 (11:15 -0700)]
[morx] Another end-of-text corner case

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10990

5 years ago[kerx] Merge clusters in Ligature
Behdad Esfahbod [Mon, 15 Oct 2018 18:04:49 +0000 (11:04 -0700)]
[kerx] Merge clusters in Ligature

5 years ago[kerx/morx] More end-of-text protection
Behdad Esfahbod [Mon, 15 Oct 2018 17:20:39 +0000 (10:20 -0700)]
[kerx/morx] More end-of-text protection

5 years ago[dump-emoji] minor
Ebrahim Byagowi [Mon, 15 Oct 2018 08:46:47 +0000 (12:16 +0330)]
[dump-emoji] minor

5 years ago[dump-emoji] better explaination of the usage
Ebrahim Byagowi [Mon, 15 Oct 2018 08:34:14 +0000 (12:04 +0330)]
[dump-emoji] better explaination of the usage

5 years ago[ot-font] Implement TrueType v_origin
Behdad Esfahbod [Mon, 15 Oct 2018 08:09:05 +0000 (01:09 -0700)]
[ot-font] Implement TrueType v_origin

Fixes https://github.com/harfbuzz/harfbuzz/issues/537

5 years ago[blob] Fix UBSan error
Behdad Esfahbod [Mon, 15 Oct 2018 05:22:45 +0000 (22:22 -0700)]
[blob] Fix UBSan error

5 years ago[CBDT] Fix more offsetting issues
Behdad Esfahbod [Mon, 15 Oct 2018 04:32:09 +0000 (21:32 -0700)]
[CBDT] Fix more offsetting issues

Fixes https://github.com/harfbuzz/harfbuzz/issues/960

dump-emoji still segfaults.  Needs debugging.

5 years ago[CBDT] Fix offset handling
Behdad Esfahbod [Mon, 15 Oct 2018 04:08:42 +0000 (21:08 -0700)]
[CBDT] Fix offset handling

Fixes https://github.com/harfbuzz/harfbuzz/issues/960

5 years ago[CBDT] More UnsizedArrayOf cleanup
Behdad Esfahbod [Mon, 15 Oct 2018 03:49:21 +0000 (20:49 -0700)]
[CBDT] More UnsizedArrayOf cleanup

5 years ago[CBDT] Simplify sanitize
Behdad Esfahbod [Mon, 15 Oct 2018 03:37:57 +0000 (20:37 -0700)]
[CBDT] Simplify sanitize

5 years ago[morx] Handle end-of-text conditions in Insertion
Behdad Esfahbod [Mon, 15 Oct 2018 02:39:31 +0000 (19:39 -0700)]
[morx] Handle end-of-text conditions in Insertion

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10955

5 years ago[buffer] Fix output_glyph at end of buffer
Behdad Esfahbod [Mon, 15 Oct 2018 02:36:46 +0000 (19:36 -0700)]
[buffer] Fix output_glyph at end of buffer

Part of https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10955

5 years ago[aat] More protection against buffer fail
Behdad Esfahbod [Mon, 15 Oct 2018 02:30:44 +0000 (19:30 -0700)]
[aat] More protection against buffer fail

5 years ago[hmtx] Whitespace
Behdad Esfahbod [Sun, 14 Oct 2018 23:26:03 +0000 (16:26 -0700)]
[hmtx] Whitespace

5 years agoIgnore signed-integer-overflow while kerning
Behdad Esfahbod [Sun, 14 Oct 2018 22:20:50 +0000 (15:20 -0700)]
Ignore signed-integer-overflow while kerning

Fixes https://github.com/harfbuzz/harfbuzz/issues/1247

5 years ago[kerx] Fix Format1 sanitize
Behdad Esfahbod [Sun, 14 Oct 2018 21:56:32 +0000 (14:56 -0700)]
[kerx] Fix Format1 sanitize

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10948

5 years ago[aat] Whitespace
Behdad Esfahbod [Sun, 14 Oct 2018 21:52:17 +0000 (14:52 -0700)]
[aat] Whitespace

5 years ago[aat] Finish off massaging table
Behdad Esfahbod [Sat, 13 Oct 2018 23:03:33 +0000 (19:03 -0400)]
[aat] Finish off massaging table

5 years ago[aat] WIP remove feature mapping here from hb-coretext
Behdad Esfahbod [Sat, 13 Oct 2018 22:37:14 +0000 (18:37 -0400)]
[aat] WIP remove feature mapping here from hb-coretext

Need to map enum values to numerics since we don't have CoreText headers.

5 years ago[coretext] Prepare AAT feature mapping to be moved
Behdad Esfahbod [Sat, 13 Oct 2018 21:03:32 +0000 (17:03 -0400)]
[coretext] Prepare AAT feature mapping to be moved

5 years ago[kerx] Sanitize more
Behdad Esfahbod [Sat, 13 Oct 2018 17:48:22 +0000 (13:48 -0400)]
[kerx] Sanitize more

5 years ago[kerx] Fix-up previous commit
Behdad Esfahbod [Sat, 13 Oct 2018 17:36:27 +0000 (13:36 -0400)]
[kerx] Fix-up previous commit

A "&" was missing.  Go back to using pointers that are less error-prone.

5 years ago[kerx] Use sanitizer instead of handcoded runtime sanitization
Behdad Esfahbod [Sat, 13 Oct 2018 16:20:33 +0000 (12:20 -0400)]
[kerx] Use sanitizer instead of handcoded runtime sanitization

5 years ago[kerx] Wire up context down to get_kerning
Behdad Esfahbod [Sat, 13 Oct 2018 16:16:12 +0000 (12:16 -0400)]
[kerx] Wire up context down to get_kerning

5 years ago[kerx] Use sanitizer.get_num_glyphs() instead of face->get_num_glyphs()
Behdad Esfahbod [Sat, 13 Oct 2018 15:48:49 +0000 (11:48 -0400)]
[kerx] Use sanitizer.get_num_glyphs() instead of face->get_num_glyphs()

5 years ago[kerx] Protext against overflows
Behdad Esfahbod [Sat, 13 Oct 2018 15:39:12 +0000 (11:39 -0400)]
[kerx] Protext against overflows

5 years ago[hangul] Fix use-after-free issue
Behdad Esfahbod [Sat, 13 Oct 2018 13:47:51 +0000 (09:47 -0400)]
[hangul] Fix use-after-free issue

out_info might have moved since we copied it's position into local
info var.

Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=894937

5 years agoCosmetic and minor changes
Ebrahim Byagowi [Sat, 13 Oct 2018 10:30:05 +0000 (14:00 +0330)]
Cosmetic and minor changes

5 years agoTouch up new API
Behdad Esfahbod [Fri, 12 Oct 2018 20:05:56 +0000 (16:05 -0400)]
Touch up new API

New API:
+hb_ot_layout_feature_get_name_ids()
+hb_ot_layout_feature_get_characters()

5 years agoAdd hb-ot-name.h
Behdad Esfahbod [Fri, 12 Oct 2018 19:52:31 +0000 (15:52 -0400)]
Add hb-ot-name.h

Actual name-fetching API to come later.

New API:
hb_name_id_t
HB_NAME_ID_INVALID

5 years agoAdd two APIs for getting stylistic set labels
Ebrahim Byagowi [Thu, 11 Oct 2018 23:30:59 +0000 (03:00 +0330)]
Add two APIs for getting stylistic set labels

* hb_ot_layout_feature_get_characters
* hb_ot_layout_feature_get_name_ids

However HarfBuzz currently doesn't expose an API for retrieving the actual
information associated with NameId from the `name` table and that should be
done separately.

5 years ago[sanitize] Reorder condition to silence bogus gcc warning
Behdad Esfahbod [Fri, 12 Oct 2018 01:37:45 +0000 (21:37 -0400)]
[sanitize] Reorder condition to silence bogus gcc warning

Was givin a dozen of:

../../src/hb-machinery.hh: In member function ‘bool AAT::ankr::sanitize(hb_sanitize_context_t*) const’:
../../src/hb-machinery.hh:307:23: warning: missed loop optimization, the loop counter may overflow [-Wunsafe-loop-optimizations]
     bool ok = --this->max_ops > 0 &&
               ~~~~~~~~~~~~~~~~~~~~~~
        this->start <= p &&
        ~~~~~~~~~~~~~~~~~~~
        p <= this->end &&
        ~~~~~~~~~~~~~~~^~
        (unsigned int) (this->end - p) >= len;
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I believe those are bogus, but this silences them and does not introduce
logic issues I believe.

5 years agoAdd HB_DEPRECATED_FOR and mark relevant symbols
Behdad Esfahbod [Fri, 12 Oct 2018 01:22:49 +0000 (21:22 -0400)]
Add HB_DEPRECATED_FOR and mark relevant symbols

5 years ago[graphite] Add HB_DEPRECATED annotation
Behdad Esfahbod [Fri, 12 Oct 2018 01:19:39 +0000 (21:19 -0400)]
[graphite] Add HB_DEPRECATED annotation

5 years agoAlways compile deprecated symbols
Behdad Esfahbod [Fri, 12 Oct 2018 01:18:20 +0000 (21:18 -0400)]
Always compile deprecated symbols

We haven't been keeping this updated.  So, while we don't expose the
symbols in the headers if HB_DISABLE_DEPRECATED is defined, we still
always build them.

5 years agoAdd missing colons to GObject annotations
David Corbett [Fri, 12 Oct 2018 02:08:14 +0000 (22:08 -0400)]
Add missing colons to GObject annotations

5 years agoFix Indic script tags in Graphite
David Corbett [Fri, 12 Oct 2018 00:37:49 +0000 (20:37 -0400)]
Fix Indic script tags in Graphite

5 years agoAttach CursivePositioning backwards, not forward
Behdad Esfahbod [Fri, 12 Oct 2018 00:45:00 +0000 (20:45 -0400)]
Attach CursivePositioning backwards, not forward

This is how Uniscribe does it.  So, adjust.  This is only relevant
to fonts that apply cursive positioning from a contextual lookup.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1181

5 years ago[myanmar] Implement Zawgyi shaper
Behdad Esfahbod [Fri, 12 Oct 2018 00:20:00 +0000 (20:20 -0400)]
[myanmar] Implement Zawgyi shaper

Enabled if script tag 'Qaag' is passed to HarfBuzz.  Disables mark
advance-zeroing and fallback mark-positioning.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1162

5 years ago[myanmar] Shuffle
Behdad Esfahbod [Fri, 12 Oct 2018 00:15:31 +0000 (20:15 -0400)]
[myanmar] Shuffle

5 years ago[graphite] Remove assert
Behdad Esfahbod [Fri, 12 Oct 2018 00:15:00 +0000 (20:15 -0400)]
[graphite] Remove assert

5 years agoMinor
Behdad Esfahbod [Thu, 11 Oct 2018 23:39:07 +0000 (19:39 -0400)]
Minor

5 years ago[test] Add test for USE indic3
Behdad Esfahbod [Thu, 11 Oct 2018 23:24:52 +0000 (19:24 -0400)]
[test] Add test for USE indic3

5 years agoMinor
Behdad Esfahbod [Thu, 11 Oct 2018 23:23:36 +0000 (19:23 -0400)]
Minor

5 years agoPass indic3 tags to USE shaper
Behdad Esfahbod [Thu, 11 Oct 2018 21:51:21 +0000 (17:51 -0400)]
Pass indic3 tags to USE shaper

Fixes https://github.com/harfbuzz/harfbuzz/issues/539

5 years agoParse Indic3 tags
David Corbett [Thu, 11 Oct 2018 21:15:22 +0000 (17:15 -0400)]
Parse Indic3 tags

5 years agoRemove remains of get-codepoint-fuzzer
Behdad Esfahbod [Thu, 11 Oct 2018 21:31:29 +0000 (17:31 -0400)]
Remove remains of get-codepoint-fuzzer

5 years ago[fuzzing] Fold get-codepoints-fuzzer into subset-fuzzer
Behdad Esfahbod [Thu, 11 Oct 2018 21:08:12 +0000 (17:08 -0400)]
[fuzzing] Fold get-codepoints-fuzzer into subset-fuzzer

5 years ago[aat] Fix two wrongs that made a right before!
Behdad Esfahbod [Thu, 11 Oct 2018 20:41:01 +0000 (16:41 -0400)]
[aat] Fix two wrongs that made a right before!

Unfortunately our static asserts (DEFINE_SIZE_STATIC) don't actually
fail when used in templates, thanks to SFINAE.  Le sighs.

Probably fixes https://oss-fuzz.com/v2/testcase-detail/5740171484463104

5 years ago[aat] Fix mul overflow
Behdad Esfahbod [Thu, 11 Oct 2018 19:56:17 +0000 (15:56 -0400)]
[aat] Fix mul overflow

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10897

5 years agoMinor
Behdad Esfahbod [Thu, 11 Oct 2018 19:42:54 +0000 (15:42 -0400)]
Minor

5 years ago[arabic] Update to latest UTR#53
Behdad Esfahbod [Thu, 11 Oct 2018 19:14:18 +0000 (15:14 -0400)]
[arabic] Update to latest UTR#53

From Lorna Evans: "That was a new character added to Unicode 11.0"

5 years ago[test] Fix use of deprecated symbols
Behdad Esfahbod [Thu, 11 Oct 2018 19:03:21 +0000 (15:03 -0400)]
[test] Fix use of deprecated symbols

5 years ago[graphite] Remove deprecated symbol use
Behdad Esfahbod [Thu, 11 Oct 2018 18:32:59 +0000 (14:32 -0400)]
[graphite] Remove deprecated symbol use

5 years agoWhitespace
Behdad Esfahbod [Thu, 11 Oct 2018 18:30:15 +0000 (14:30 -0400)]
Whitespace

5 years ago[graphite] Fix deva/dev2 resolution
Behdad Esfahbod [Thu, 11 Oct 2018 18:25:48 +0000 (14:25 -0400)]
[graphite] Fix deva/dev2 resolution

See https://github.com/harfbuzz/harfbuzz/pull/730#issuecomment-428277800

5 years agoAdd doc stubs for recently added API
Behdad Esfahbod [Thu, 11 Oct 2018 18:16:55 +0000 (14:16 -0400)]
Add doc stubs for recently added API

Thanks to David Corbett who revamped our script and language processing
and implemented full BCP 47 support.

https://github.com/harfbuzz/harfbuzz/pull/730

New API:
+hb_ot_layout_table_select_script()
+hb_ot_layout_script_select_language()
+HB_OT_MAX_TAGS_PER_SCRIPT
+HB_OT_MAX_TAGS_PER_LANGUAGE
+hb_ot_tags_from_script_and_language()
+hb_ot_tags_to_script_and_language()

Deprecated API:
-hb_ot_layout_table_choose_script()
-hb_ot_layout_script_find_language()
-hb_ot_tags_from_script()
-hb_ot_tag_from_language()

5 years agoRemove use of deprecated function
Behdad Esfahbod [Thu, 11 Oct 2018 18:07:44 +0000 (14:07 -0400)]
Remove use of deprecated function

5 years agoIncrease HB_OT_MAX_TAGS_PER_SCRIPT to 3
David Corbett [Mon, 10 Sep 2018 17:15:00 +0000 (13:15 -0400)]
Increase HB_OT_MAX_TAGS_PER_SCRIPT to 3

No script has 3 tags yet, but the plan is for the Indic scripts to each
get a third tag someday.

5 years agoUpdate language system tag registry to OT 1.8.3
David Corbett [Mon, 10 Sep 2018 16:05:51 +0000 (12:05 -0400)]
Update language system tag registry to OT 1.8.3

5 years agoAdd hb_ot_tags_to_script_and_language
David Corbett [Tue, 24 Jul 2018 01:19:23 +0000 (21:19 -0400)]
Add hb_ot_tags_to_script_and_language

5 years agoSwitch on the first char of a complex language tag
David Corbett [Thu, 19 Jul 2018 17:48:07 +0000 (13:48 -0400)]
Switch on the first char of a complex language tag

This results in a tenfold speed-up for the common case of tags that are
not complex, in the sense of `hb_ot_tags_from_complex_language`.

5 years agoMap Quechua languages to closest ones with tags
David Corbett [Tue, 17 Jul 2018 01:14:48 +0000 (21:14 -0400)]
Map Quechua languages to closest ones with tags

OpenType only officially maps four ISO 639 codes to Quechua languages,
but prior versions of HarfBuzz also mapped qu to 'QUZ '. Because qu is a
macrolanguage, the mapping now applies to all individual Quechua
languages. OpenType calls 'QUZ ' "Quechua", but it really corresponds to
Cusco Quechua, so the individual Quechua languages should not all
necessarily be mapped to it.

5 years agoTest deprecated tag fallback in a font
David Corbett [Thu, 18 Jan 2018 21:33:39 +0000 (16:33 -0500)]
Test deprecated tag fallback in a font

The font supports the deprecated tag 'DHV ' instead of 'DIV '. dv is
mapped to 'DIV ' and 'DHV ', in that order. The test specifies
`--language=dv`, demonstrating that if a font does not support the first
OpenType tag mapped to a BCP 47 tag, it will fall back to the next tag.

5 years agoMatch extlang subtags
David Corbett [Sat, 20 Jan 2018 20:53:09 +0000 (15:53 -0500)]
Match extlang subtags

If the second subtag of a BCP 47 tag is three letters long, it denotes
an extended language. The tag converter ignores the language subtag and
uses the extended language instead.

There are some grandfathered exceptions, which are handled earlier.

5 years agoAutogenerate the BCP 47 to OpenType mappings
David Corbett [Sat, 9 Dec 2017 03:45:52 +0000 (22:45 -0500)]
Autogenerate the BCP 47 to OpenType mappings

The new script, gen-tag-table.py, generates `ot_languages` automatically
from the [OpenType language system tag registry][ot] and the [IANA
Language Subtag Registry][bcp47] with some manual modifications. If an
OpenType tag maps to a BCP 47 macrolanguage, all the macrolanguage's
individual languages are mapped to the same OpenType tag, except for
individual languages with their own OpenType mappings. Deprecated
BCP 47 tags are canonicalized.

[ot]: https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
[bcp47]: https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

Some OpenType tags correspond to multiple ISO 639 codes. The mapping
from ISO 639 codes lists OpenType tags in priority order, such that more
specific or more likely tags appear first.

Some OpenType tags have no corresponding ISO 639 code in the registry so
their mappings use BCP 47 subtags besides the language. For example, any
BCP 47 tag with a fonipa variant subtag is mapped to 'IPPH', and 'IPPH'
is mapped back to und-fonipa.

Other OpenType tags have no corresponding ISO 639 code because it is not
clear what they are for. HarfBuzz just ignores these tags.

One such ignored tag is 'ZHP ' (Chinese Phonetic). It probably means
zh-Latn. However, it is used in Microsoft JhengHei and Microsoft YaHei
with the script tag 'hani', implying that it is not a romanization
scheme after all. It would be simple enough to add this mapping to
gen-tag-table.py once a definitive mapping is determined.

The manual modifications are mainly either obvious mappings that the
OpenType registry omits or mappings for compatibility with previous
versions of HarfBuzz. Some of the old mappings were discarded, though,
for homophonous language names. For example, OpenType maps 'KUI ' to
kxu; previous versions of HarfBuzz also mapped it to kvd, because kvd
and kxu both happen to be called "Kui".

gen-tag-table.py also generates a function to convert multi-subtag tags
like el-polyton and zh-HK to OpenType tags, replacing `ot_languages_zh`
and the hard-coded list of special cases in `hb_ot_tags_from_language`.
It also generates a function to convert OpenType tags to BCP 47,
replacing the hard-coded list of special cases in
`hb_ot_tag_to_language`.

5 years agoDeprecate obsolete functions
David Corbett [Fri, 29 Dec 2017 12:19:05 +0000 (20:19 +0800)]
Deprecate obsolete functions

`hb_ot_tags` replaces `hb_ot_tags_from_script` and
`hb_ot_tag_from_language`.

`hb_ot_layout_table_select_script` replaces
`hb_ot_layout_table_choose_script`.

`hb_ot_layout_script_select_language` replaces
`hb_ot_layout_script_find_language`.

5 years agoRefactor the selection of script and language tags
David Corbett [Fri, 8 Dec 2017 16:21:14 +0000 (11:21 -0500)]
Refactor the selection of script and language tags

The old hb-ot-tag.cc functions, `hb_ot_tags_from_script` and
`hb_ot_tag_from_language`, are now wrappers around a new function:
`hb_ot_tags`. It converts a script and a language to arrays of script
tags and language tags. This will make it easier to add new script tags
to scripts, like 'dev3'. It also allows for language fallback chains;
nothing produces more than one language yet though.

Where the old functions return the default tags 'DFLT' and 'dflt',
`hb_ot_tags` returns an empty array. The caller is responsible for
using the default tag in that case.

The new function also adds a new private use subtag syntax for script
overrides: "x-hbscabcd" requests a script tag of 'abcd'.

The old hb-ot-layout.cc functions,`hb_ot_layout_table_choose_script` and
`hb_ot_layout_script_find_language` are now wrappers around the new
functions `hb_ot_layout_table_select_script` and
`hb_ot_layout_script_select_language`. They are essentially the same as
the old ones plus a tag count parameter.

Closes #495.

5 years agoReplace "ISO 639" with "BCP 47"
David Corbett [Thu, 28 Dec 2017 14:59:29 +0000 (22:59 +0800)]
Replace "ISO 639" with "BCP 47"

`hb_language_from_string` accepts not only ISO 639 but also BCP 47. Not
all ISO 639 codes are valid BCP 47 tags but the function does not accept
overlong language subtags anyway.

5 years ago[aat] Apply kerx if GPOS kern was not applied
Behdad Esfahbod [Thu, 11 Oct 2018 17:26:58 +0000 (13:26 -0400)]
[aat] Apply kerx if GPOS kern was not applied

Ned tells me this is what Apple does.

5 years agoMinor
Behdad Esfahbod [Thu, 11 Oct 2018 17:24:17 +0000 (13:24 -0400)]
Minor

5 years ago[trak] Add tests
Behdad Esfahbod [Thu, 11 Oct 2018 15:30:45 +0000 (11:30 -0400)]
[trak] Add tests

5 years ago[trak] Implement extrapolation
Behdad Esfahbod [Thu, 11 Oct 2018 15:25:07 +0000 (11:25 -0400)]
[trak] Implement extrapolation

This concludes trak, as well as AAT shaping support!

5 years ago[trak] Fix, and hook up
Behdad Esfahbod [Thu, 11 Oct 2018 15:10:06 +0000 (11:10 -0400)]
[trak] Fix, and hook up

Works beautifully!  Test coming.

5 years ago[trak] Handle nSizes=0 and 1
Behdad Esfahbod [Thu, 11 Oct 2018 14:32:08 +0000 (10:32 -0400)]
[trak] Handle nSizes=0 and 1

5 years ago[trak] Fix counting
Behdad Esfahbod [Thu, 11 Oct 2018 14:30:32 +0000 (10:30 -0400)]
[trak] Fix counting

5 years ago[trak] More
Behdad Esfahbod [Thu, 11 Oct 2018 14:29:02 +0000 (10:29 -0400)]
[trak] More

5 years ago[trak] Only adjust around first glyph
Behdad Esfahbod [Thu, 11 Oct 2018 14:22:01 +0000 (10:22 -0400)]
[trak] Only adjust around first glyph

Assumes graphemes only have one base glyph.

5 years ago[trak] Clean up
Behdad Esfahbod [Thu, 11 Oct 2018 14:18:46 +0000 (10:18 -0400)]
[trak] Clean up

5 years ago[kerx] Implement Format4 action_type=1 contour-point-based attachment
Behdad Esfahbod [Thu, 11 Oct 2018 05:22:29 +0000 (01:22 -0400)]
[kerx] Implement Format4 action_type=1 contour-point-based attachment

Untested.

This concludes kerx table support!

5 years ago[kerx] Implement Format4 action_type=2 coordinate-based attachment
Behdad Esfahbod [Thu, 11 Oct 2018 05:17:57 +0000 (01:17 -0400)]
[kerx] Implement Format4 action_type=2 coordinate-based attachment

Untested.

5 years ago[kerx] Implement Format4 'ankr'-based mark attachment
Behdad Esfahbod [Thu, 11 Oct 2018 05:14:18 +0000 (01:14 -0400)]
[kerx] Implement Format4 'ankr'-based mark attachment

Tested with Kannada MN:

$ HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0CCD,0C95,0CD6
[kn_ka.vattu=0+230|kn_ai_length_mark=1@326,0+607]

5 years ago[aat] Wire up 'ankr' table to apply context
Behdad Esfahbod [Thu, 11 Oct 2018 04:52:07 +0000 (00:52 -0400)]
[aat] Wire up 'ankr' table to apply context

5 years ago[kerx] Flesh out Format4
Behdad Esfahbod [Thu, 11 Oct 2018 04:12:49 +0000 (00:12 -0400)]
[kerx] Flesh out Format4

Doesn't apply actions yet.

5 years ago[ankr] Implement table access
Behdad Esfahbod [Thu, 11 Oct 2018 03:07:03 +0000 (23:07 -0400)]
[ankr] Implement table access

5 years ago[ankr] Start fixing
Behdad Esfahbod [Thu, 11 Oct 2018 02:56:52 +0000 (22:56 -0400)]
[ankr] Start fixing