Commit Graph

972 Commits

Author SHA1 Message Date
Michiharu Ariza 1f34388e8b Merge branch 'master' into cff-subset 2018-10-17 09:34:48 -07:00
Behdad Esfahbod 5842756b13 [fuzzing] Delete blink fuzzed data
These are text, not font.
2018-10-16 18:28:55 -07:00
Behdad Esfahbod ba42651608 Fix indent 2018-10-16 17:35:46 -07:00
Behdad Esfahbod c0c190c16a [fuzzing] Run tests against fuzzing fonts
Some disable.
2018-10-16 16:39:55 -07:00
Behdad Esfahbod 7b37705fb5 [fuzzing] Rename 2018-10-16 16:33:06 -07:00
Behdad Esfahbod 3676c685d4 [fuzzing] Move rest of fuzzing tests here 2018-10-16 16:32:26 -07:00
Behdad Esfahbod 1487173dcf [fuzzing] Delete duplicate fonts 2018-10-16 16:30:38 -07:00
Behdad Esfahbod 49c041f7c5 Minor 2018-10-16 16:25:24 -07:00
Behdad Esfahbod 1147ce2392 [fuzzing] Add more tests 2018-10-16 16:18:32 -07:00
Behdad Esfahbod 1aa353e4fc Fix tests 2018-10-16 15:26:51 -07:00
Behdad Esfahbod 98d4ad02b9 [fuzzing] One more 2018-10-16 15:17:31 -07:00
Behdad Esfahbod e6f267c3df [fuzzing] Add more clusterfuzz tests I had lying around 2018-10-16 15:16:20 -07:00
Ebrahim Byagowi e53206271d
Add all the fonts found by fuzzers to the repo (#1258) 2018-10-17 01:42:04 +03:30
Behdad Esfahbod 2137582c96 [morx] Reword ligation
Still fails MORX-41.  Am talking to Sascha to better understand what CoreText
is doing.
2018-10-16 14:46:07 -07:00
Behdad Esfahbod c46d42f8f2 [test/text-rendering-tests] Update from upstream 2018-10-16 13:39:54 -07:00
Ebrahim Byagowi 61510b63c1
[test] Minor cleanup in test-multithread and test-ot-name (#1256) 2018-10-16 14:17:21 +03:30
Michiharu Ariza 9ade3e7bb8 Merge branch 'master' into cff-subset 2018-10-15 14:03:23 -07:00
Behdad Esfahbod 8dc6296818 [ot-font] Implement TrueType v_origin
Fixes https://github.com/harfbuzz/harfbuzz/issues/537
2018-10-15 01:09:05 -07:00
Michiharu Ariza db0d83ddc7 Merge branch 'master' into cff-subset 2018-10-13 17:25:38 -07:00
Michiharu Ariza 9228db06f4 added CFF1 Expert Encoding subset test & bug fixes 2018-10-13 17:25:09 -07:00
Behdad Esfahbod c0a6814b49 Touch up new API
New API:
+hb_ot_layout_feature_get_name_ids()
+hb_ot_layout_feature_get_characters()
2018-10-12 16:06:39 -04:00
Ebrahim Byagowi dc49bd8d81 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.
2018-10-12 16:06:39 -04:00
Michiharu Ariza fc0153a1d4 Merge branch 'master' into cff-subset 2018-10-12 12:16:50 -07:00
Behdad Esfahbod bf8469be9a 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
2018-10-11 20:45:40 -04:00
Behdad Esfahbod bdb53ca24a [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
2018-10-11 20:20:29 -04:00
Behdad Esfahbod 788e147855 [test] Add test for USE indic3 2018-10-11 19:24:52 -04:00
Behdad Esfahbod a11972787a Minor 2018-10-11 19:23:36 -04:00
David Corbett 28d091d045 Parse Indic3 tags 2018-10-11 17:44:13 -04:00
Behdad Esfahbod 211cd3691b Remove remains of get-codepoint-fuzzer 2018-10-11 17:31:29 -04:00
Behdad Esfahbod 120ed02725 [fuzzing] Fold get-codepoints-fuzzer into subset-fuzzer 2018-10-11 17:08:12 -04:00
Behdad Esfahbod 1d995a340b Minor 2018-10-11 15:42:54 -04:00
Behdad Esfahbod 57b05210b1 [test] Fix use of deprecated symbols 2018-10-11 15:03:21 -04:00
Michiharu Ariza ca37172ee3 fixed leak 2018-10-11 11:55:55 -07:00
David Corbett 7f1fbfe2e3 Add hb_ot_tags_to_script_and_language 2018-10-11 13:54:28 -04:00
David Corbett 65d01f7755 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.
2018-10-11 13:54:28 -04:00
David Corbett 7c7cb2a989 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.
2018-10-11 13:54:28 -04:00
David Corbett 2f1f961cc0 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`.
2018-10-11 13:54:28 -04:00
David Corbett 91067716f5 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.
2018-10-11 13:54:28 -04:00
Michiharu Ariza ce6639cd27 Merge branch 'master' into cff-subset 2018-10-11 10:53:48 -07:00
Michiharu Ariza a6b6faf2b8 Replaced CFF1 J subset font for better coverage
in api test-ot-extents-cff
2018-10-11 10:53:44 -07:00
Behdad Esfahbod 100e95f48e [trak] Add tests 2018-10-11 11:30:45 -04:00
Michiharu Ariza b5aa5dbb11 Merge branch 'master' into cff-subset 2018-10-10 18:36:35 -07:00
Michiharu Ariza af61c3b10f added vsindex test & fixed process_vsindex 2018-10-10 18:35:12 -07:00
Behdad Esfahbod 1e8fdd285f Remove HAVE_OT
We never tested compiling without it.  Just kill it.  We always build
our own shaper.
2018-10-10 16:32:35 -04:00
Michiharu Ariza c06a5dff0b Merge branch 'master' into cff-subset 2018-10-09 22:00:10 -07:00
Michiharu Ariza 83c5298f33 added cff1_legacyops.otf as test-ot-extents-cff test case
fixed roll operator bugs uncovered by the test
2018-10-09 21:59:36 -07:00
Michiharu Ariza 588518ea51 fixed test-ot-extents-cff failure on some platforms 2018-10-09 14:48:04 -07:00
Behdad Esfahbod be2f148da4 [ft] Use mutex to lock access to FT_Face
Makes our FT-backed hb_font_t safe to use from multiple threads.  Still,
the underlying FT_Face should NOT be used from other threads by client
or other libraries.

Maybe I add a lock()/unlock() public API ala PangoFT2 and cairo-ft.
Maybe not.
2018-10-09 16:24:50 -04:00
Behdad Esfahbod 9f79365c3b Fix warning
How come this one is not generated by clang everything bot?!

../../../test/api/test-multithread.c:37:26: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
 static char *font_path = "fonts/Inconsolata-Regular.abc.ttf";
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../test/api/test-multithread.c:38:21: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
2018-10-09 14:36:25 -04:00
Michiharu Ariza f5f505b512 Merge branch 'master' into cff-subset 2018-10-09 10:10:35 -07:00