platform/upstream/libHarfBuzzSharp.git
9 years ago[indic] Allow ZWJ/ZWNJ before SM
Behdad Esfahbod [Wed, 10 Dec 2014 20:05:24 +0000 (12:05 -0800)]
[indic] Allow ZWJ/ZWNJ before SM

In Oriya, a ZWJ/ZWNJ might be added before candrabindu to encourage
or stop ligation of the candrabindu.  This is clearly specified in
the Unicode section on Oriya.  Allow it there.  Note that Uniscribe
doesn't allow this.

Micro tests added using Noto Sans Oriya draft.

No changes in numbers.  Currently at:

BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%)
DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%)
KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
MALAYALAM: 1048147 out of 1048334 tests passed. 187 failed (0.0178378%)
ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%)
TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)

9 years ago0.9.36
Behdad Esfahbod [Thu, 20 Nov 2014 22:42:24 +0000 (14:42 -0800)]
0.9.36

10 years agoIn hb_ot_collect_glyphs(), don't recurse to a lookup more than once
Behdad Esfahbod [Wed, 29 Oct 2014 18:23:08 +0000 (11:23 -0700)]
In hb_ot_collect_glyphs(), don't recurse to a lookup more than once

Otherwise, we might process a lookup thousands of times, with no
benefit.  This pathological case was hit by Noto Nastaliq Urdu Draft
in Firefox's code to determine whether space glyph is involved in
any GSUB/GPOS rules.  A test page is at http://behdad.org/urdu

See:
https://bugzilla.mozilla.org/show_bug.cgi?id=1090869

10 years agoMove code around
Behdad Esfahbod [Wed, 15 Oct 2014 04:26:13 +0000 (21:26 -0700)]
Move code around

10 years agoMove macros around
Behdad Esfahbod [Wed, 15 Oct 2014 04:24:59 +0000 (21:24 -0700)]
Move macros around

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=84491

10 years agoFix misc warnings
Behdad Esfahbod [Wed, 15 Oct 2014 03:07:31 +0000 (20:07 -0700)]
Fix misc warnings

Fixes https://github.com/behdad/harfbuzz/pull/51

10 years agoUpdate test expectation for previous commit
Behdad Esfahbod [Thu, 2 Oct 2014 20:54:33 +0000 (16:54 -0400)]
Update test expectation for previous commit

10 years ago[ft] Add NO_HINTING in a couple other places
Behdad Esfahbod [Thu, 2 Oct 2014 20:40:41 +0000 (16:40 -0400)]
[ft] Add NO_HINTING in a couple other places

10 years ago[travis] Fix clang again
Behdad Esfahbod [Wed, 1 Oct 2014 22:58:43 +0000 (18:58 -0400)]
[travis] Fix clang again

10 years ago[travis] Fail build if coveralls fails
Behdad Esfahbod [Wed, 1 Oct 2014 22:54:55 +0000 (18:54 -0400)]
[travis] Fail build if coveralls fails

10 years ago[travis] Only run coveralls under gcc
Behdad Esfahbod [Wed, 1 Oct 2014 22:48:40 +0000 (18:48 -0400)]
[travis] Only run coveralls under gcc

10 years agoHelp clang with gcov
Behdad Esfahbod [Wed, 1 Oct 2014 22:18:25 +0000 (18:18 -0400)]
Help clang with gcov

10 years ago[travis] Try to make coverage work with clang
Behdad Esfahbod [Wed, 1 Oct 2014 22:07:27 +0000 (18:07 -0400)]
[travis] Try to make coverage work with clang

10 years ago[travis] Minor
Behdad Esfahbod [Wed, 1 Oct 2014 21:57:43 +0000 (17:57 -0400)]
[travis] Minor

10 years agoAdd README.md symlink to make github happy
Behdad Esfahbod [Wed, 1 Oct 2014 21:45:17 +0000 (17:45 -0400)]
Add README.md symlink to make github happy

10 years ago[travis] Re-enable clang
Behdad Esfahbod [Wed, 1 Oct 2014 21:44:30 +0000 (17:44 -0400)]
[travis] Re-enable clang

10 years agoAdd build and coverage status links
Behdad Esfahbod [Wed, 1 Oct 2014 21:41:41 +0000 (17:41 -0400)]
Add build and coverage status links

10 years ago[travis] Report matrix settings to help debugging
Behdad Esfahbod [Wed, 1 Oct 2014 21:35:03 +0000 (17:35 -0400)]
[travis] Report matrix settings to help debugging

10 years ago[travis] More coveralls
Behdad Esfahbod [Wed, 1 Oct 2014 21:20:31 +0000 (17:20 -0400)]
[travis] More coveralls

10 years ago[travis] Give coveralls a hand
Behdad Esfahbod [Wed, 1 Oct 2014 21:05:58 +0000 (17:05 -0400)]
[travis] Give coveralls a hand

10 years ago[travis] Disable clang for now
Behdad Esfahbod [Wed, 1 Oct 2014 21:03:26 +0000 (17:03 -0400)]
[travis] Disable clang for now

10 years ago[test] Fixup test
Behdad Esfahbod [Wed, 1 Oct 2014 20:53:00 +0000 (16:53 -0400)]
[test] Fixup test

10 years ago[travis] Another try at coveralls.io
Behdad Esfahbod [Wed, 1 Oct 2014 20:49:22 +0000 (16:49 -0400)]
[travis] Another try at coveralls.io

10 years ago[travis] First try to hookup coveralls.io code coverage tracking
Behdad Esfahbod [Wed, 1 Oct 2014 20:38:47 +0000 (16:38 -0400)]
[travis] First try to hookup coveralls.io code coverage tracking

10 years ago[travis] Unbreak
Behdad Esfahbod [Wed, 1 Oct 2014 20:14:59 +0000 (16:14 -0400)]
[travis] Unbreak

10 years ago[travis] Minor
Behdad Esfahbod [Wed, 1 Oct 2014 20:09:08 +0000 (16:09 -0400)]
[travis] Minor

10 years agoCreate ragel-generated files in srcdir
Behdad Esfahbod [Wed, 1 Oct 2014 18:24:07 +0000 (14:24 -0400)]
Create ragel-generated files in srcdir

10 years agoClean ragel-generated headers in maintainercleanfiles
Behdad Esfahbod [Wed, 1 Oct 2014 17:33:21 +0000 (13:33 -0400)]
Clean ragel-generated headers in maintainercleanfiles

10 years agoDon't use tmp files in Makefile
Behdad Esfahbod [Wed, 1 Oct 2014 16:41:03 +0000 (12:41 -0400)]
Don't use tmp files in Makefile

Useful for code-coverage generation of the ragel-generated files
as they will now contain the correct .hh filename in them.

10 years agocheck-static-inits: Filter out zero-length sections
Behdad Esfahbod [Wed, 1 Oct 2014 15:56:07 +0000 (11:56 -0400)]
check-static-inits: Filter out zero-length sections

When compiling with -O0, zero-sized constructors were showing up
and confusing the test.

10 years agocheck-static-inits: check for static finalizers
Behdad Esfahbod [Wed, 1 Oct 2014 15:55:14 +0000 (11:55 -0400)]
check-static-inits: check for static finalizers

10 years agoHide other bubble-sort
Behdad Esfahbod [Wed, 1 Oct 2014 15:28:01 +0000 (11:28 -0400)]
Hide other bubble-sort

10 years agoHide bubble-sort!
Behdad Esfahbod [Wed, 1 Oct 2014 15:07:08 +0000 (11:07 -0400)]
Hide bubble-sort!

10 years ago[util] Fix ansi output when surface is empty
Behdad Esfahbod [Thu, 25 Sep 2014 14:59:46 +0000 (17:59 +0300)]
[util] Fix ansi output when surface is empty

10 years ago[ot-font] Add hb_ot_face_cmap_accelerator_t
Behdad Esfahbod [Thu, 25 Sep 2014 14:45:49 +0000 (17:45 +0300)]
[ot-font] Add hb_ot_face_cmap_accelerator_t

10 years ago[ot-font] Minor
Behdad Esfahbod [Thu, 25 Sep 2014 14:26:56 +0000 (17:26 +0300)]
[ot-font] Minor

10 years ago[ot-font] Handle missing vertical metrics tables
Behdad Esfahbod [Thu, 25 Sep 2014 14:15:35 +0000 (17:15 +0300)]
[ot-font] Handle missing vertical metrics tables

10 years ago[ot-font] Add metrics_accel_t
Behdad Esfahbod [Thu, 25 Sep 2014 13:53:24 +0000 (16:53 +0300)]
[ot-font] Add metrics_accel_t

10 years ago[ot-font] Start adding vertical support
Behdad Esfahbod [Thu, 25 Sep 2014 10:04:08 +0000 (13:04 +0300)]
[ot-font] Start adding vertical support

10 years agoFix build
Behdad Esfahbod [Mon, 25 Aug 2014 16:54:57 +0000 (12:54 -0400)]
Fix build

10 years ago[arabic] Don't #include __FILE__
Behdad Esfahbod [Mon, 25 Aug 2014 16:31:19 +0000 (12:31 -0400)]
[arabic] Don't #include __FILE__

Fine!

https://code.google.com/p/chromium/issues/detail?id=406957

10 years ago[arabic] Allow disabling win1256 fallback code
Behdad Esfahbod [Mon, 25 Aug 2014 15:48:12 +0000 (11:48 -0400)]
[arabic] Allow disabling win1256 fallback code

By defining HB_NO_WIN1256.

10 years ago[ot] Prefer Windows platform cmap tables / accept all Unicode encodingIDs
Behdad Esfahbod [Fri, 22 Aug 2014 16:06:57 +0000 (12:06 -0400)]
[ot] Prefer Windows platform cmap tables / accept all Unicode encodingIDs

Some fonts on the Mac ship with (0,1).

10 years ago[win32] Avoid preprocessor warnings re macros
Behdad Esfahbod [Fri, 15 Aug 2014 18:28:04 +0000 (14:28 -0400)]
[win32] Avoid preprocessor warnings re macros

10 years agoFix check-symbols on OS X
Behdad Esfahbod [Thu, 14 Aug 2014 17:33:37 +0000 (13:33 -0400)]
Fix check-symbols on OS X

10 years ago[coretext] Hide feature_mappings
Behdad Esfahbod [Thu, 14 Aug 2014 17:29:30 +0000 (13:29 -0400)]
[coretext] Hide feature_mappings

10 years agoSimplify hb-object
Behdad Esfahbod [Thu, 14 Aug 2014 17:25:55 +0000 (13:25 -0400)]
Simplify hb-object

10 years agoReally fix clang build this time
Behdad Esfahbod [Thu, 14 Aug 2014 17:15:21 +0000 (13:15 -0400)]
Really fix clang build this time

10 years agoRevert "Fix build on clang after previous commit"
Behdad Esfahbod [Thu, 14 Aug 2014 17:11:33 +0000 (13:11 -0400)]
Revert "Fix build on clang after previous commit"

This reverts commit 9c80cbc87f23040a334e30c750f64523d9ef10c8.

10 years agoFix build on clang after previous commit
Behdad Esfahbod [Thu, 14 Aug 2014 17:09:52 +0000 (13:09 -0400)]
Fix build on clang after previous commit

10 years agoRewrite this==NULL checks to avoid undefined behavior
Behdad Esfahbod [Thu, 14 Aug 2014 17:05:36 +0000 (13:05 -0400)]
Rewrite this==NULL checks to avoid undefined behavior

Fixes https://code.google.com/p/chromium/issues/detail?id=403594

10 years agoRemove this==NULL check from face->reference_table()
Behdad Esfahbod [Thu, 14 Aug 2014 16:59:16 +0000 (12:59 -0400)]
Remove this==NULL check from face->reference_table()

Not supposed to happen, and apparently this is undefined in C++.
https://code.google.com/p/chromium/issues/detail?id=403594

10 years agoMake hb_object_t members private
Behdad Esfahbod [Thu, 14 Aug 2014 16:57:02 +0000 (12:57 -0400)]
Make hb_object_t members private

In preparation for fixing:
https://code.google.com/p/chromium/issues/detail?id=403594

10 years agoMinor
Behdad Esfahbod [Wed, 13 Aug 2014 23:42:01 +0000 (19:42 -0400)]
Minor

10 years ago0.9.35
Behdad Esfahbod [Wed, 13 Aug 2014 16:39:34 +0000 (12:39 -0400)]
0.9.35

10 years ago[coretext] Add version guards for kCTLanguageAttributeName
Behdad Esfahbod [Tue, 12 Aug 2014 23:26:35 +0000 (19:26 -0400)]
[coretext] Add version guards for kCTLanguageAttributeName

10 years ago[coretext] Pass buffer language to CoreText
Behdad Esfahbod [Tue, 12 Aug 2014 23:17:19 +0000 (19:17 -0400)]
[coretext] Pass buffer language to CoreText

10 years ago[coretext] Minor
Behdad Esfahbod [Tue, 12 Aug 2014 23:10:33 +0000 (19:10 -0400)]
[coretext] Minor

10 years ago[hb-coretext] Fix cluster order of notdef runs in RTL text
Behdad Esfahbod [Tue, 12 Aug 2014 22:57:08 +0000 (18:57 -0400)]
[hb-coretext] Fix cluster order of notdef runs in RTL text

10 years ago[shape-plan] Fix typo!
Behdad Esfahbod [Tue, 12 Aug 2014 21:15:09 +0000 (17:15 -0400)]
[shape-plan] Fix typo!

The only effect is, if shaper_list was not NULL and no shaper was found,
we now don't insert anything into cache and return earlier.

10 years ago[shape-plan] Better debug messages
Behdad Esfahbod [Tue, 12 Aug 2014 21:14:36 +0000 (17:14 -0400)]
[shape-plan] Better debug messages

10 years ago[shape-plan] Simplify macro
Behdad Esfahbod [Tue, 12 Aug 2014 21:03:27 +0000 (17:03 -0400)]
[shape-plan] Simplify macro

10 years agoFix gcc warning
Behdad Esfahbod [Tue, 12 Aug 2014 21:02:59 +0000 (17:02 -0400)]
Fix gcc warning

10 years ago[shape-plan] Fix shape-plan caching with more than one requested shaper
Behdad Esfahbod [Tue, 12 Aug 2014 20:50:22 +0000 (16:50 -0400)]
[shape-plan] Fix shape-plan caching with more than one requested shaper

Wasn't breaking out of loop, ouch!

http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html

10 years ago[shape-plan] Add debug tracing
Behdad Esfahbod [Tue, 12 Aug 2014 20:49:18 +0000 (16:49 -0400)]
[shape-plan] Add debug tracing

10 years ago[coretext] Fix buffer resizing
Behdad Esfahbod [Tue, 12 Aug 2014 19:49:47 +0000 (15:49 -0400)]
[coretext] Fix buffer resizing

Was very broken.  Now fixed and tested.

10 years ago[coretext] Rewind scratch-allocated arrays when not needed anymore
Behdad Esfahbod [Tue, 12 Aug 2014 18:25:11 +0000 (14:25 -0400)]
[coretext] Rewind scratch-allocated arrays when not needed anymore

10 years ago[wince] Two more Windows CE fixes
Behdad Esfahbod [Tue, 12 Aug 2014 17:12:31 +0000 (13:12 -0400)]
[wince] Two more Windows CE fixes

Report has it that it builds (and works) now:

  https://codereview.qt-project.org/#/c/92087/

10 years ago[coretext] Compare CGFont and PS name, if CTFont didn't match
Behdad Esfahbod [Tue, 12 Aug 2014 14:32:41 +0000 (10:32 -0400)]
[coretext] Compare CGFont and PS name, if CTFont didn't match

See comments.

Fixes vertical text.  CoreText backend is in very good shape now!

Also see:
5a0eed3b50629be4826e4e9428f2c3255195395d
25f4fb9b56bb3f8bec821571c78f8829e40daa54

Fixes http://github.com/behdad/harfbuzz/pull/36

10 years ago[coretext] Implement vertical shaping
Behdad Esfahbod [Tue, 12 Aug 2014 03:47:16 +0000 (23:47 -0400)]
[coretext] Implement vertical shaping

Currently doesn't work though, we detect font fallback.  Apparently
matching on ct_font is not safe for this.  Looks like commit
25f4fb9b56bb3f8bec821571c78f8829e40daa54 wasn't enough after all.

10 years ago[coretext] Remove unnecessary alt_size
Behdad Esfahbod [Tue, 12 Aug 2014 00:45:12 +0000 (20:45 -0400)]
[coretext] Remove unnecessary alt_size

Wasn't needed after a6b8dc87421de33746b0b14d86d2d1532aec02af.

10 years ago[coretext] Use CFRunStatus
Behdad Esfahbod [Tue, 12 Aug 2014 00:02:45 +0000 (20:02 -0400)]
[coretext] Use CFRunStatus

Assert that all runs had expected direction, and take hint for
non-monotone clusters.

10 years ago[coretext] Minor
Behdad Esfahbod [Tue, 12 Aug 2014 00:01:37 +0000 (20:01 -0400)]
[coretext] Minor

10 years ago[coretext] Remove debug printf!
Behdad Esfahbod [Mon, 11 Aug 2014 23:16:26 +0000 (19:16 -0400)]
[coretext] Remove debug printf!

10 years agoAPI: Do not clear buffer-flags in hb_buffer_clear_contents()
Behdad Esfahbod [Mon, 11 Aug 2014 22:40:01 +0000 (18:40 -0400)]
API: Do not clear buffer-flags in hb_buffer_clear_contents()

After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
need to set flags for different pieces of text.  The flags now
are something the client sets up once, depending on how it
actually uses the buffer.  As such, don't clear it in
clear_contents().

Tests updated.

10 years agoMinor
Behdad Esfahbod [Mon, 11 Aug 2014 22:23:43 +0000 (18:23 -0400)]
Minor

10 years ago[coretext] Pass buffer direction to CoreText
Behdad Esfahbod [Mon, 11 Aug 2014 21:46:50 +0000 (17:46 -0400)]
[coretext] Pass buffer direction to CoreText

Have to use a CTTypesetter for this.

10 years ago[coretext] Minor
Behdad Esfahbod [Mon, 11 Aug 2014 21:46:12 +0000 (17:46 -0400)]
[coretext] Minor

It's hard to handle all possible NULL returns from CoreText.  Add one
more...

10 years ago[coretext] Attach marks to base clusters
Behdad Esfahbod [Mon, 11 Aug 2014 19:29:18 +0000 (15:29 -0400)]
[coretext] Attach marks to base clusters

Fixes https://githu.com/behdad/harfbuzz/issues/49
to the extent that it can be fixed.

10 years ago[coretext] Use input clusters
Behdad Esfahbod [Mon, 11 Aug 2014 19:11:59 +0000 (15:11 -0400)]
[coretext] Use input clusters

Before, this shaper was returning UTF-16 cluster indices instead of
returning whatever cluster values the user had had set up in the buffer.
Ouch!

10 years ago[coretext] Fix buffer resize handling
Behdad Esfahbod [Mon, 11 Aug 2014 19:08:19 +0000 (15:08 -0400)]
[coretext] Fix buffer resize handling

We can't really resize buffer and continue in this shaper as we are
using the scratch buffer for string_ref and log_cluster.  Restructure
shaper to retry from (almost) scratch.

10 years ago[coretext] Always compute log_clusters
Behdad Esfahbod [Mon, 11 Aug 2014 17:25:43 +0000 (13:25 -0400)]
[coretext] Always compute log_clusters

To be used soon.

10 years agoMinor
Behdad Esfahbod [Mon, 11 Aug 2014 17:42:42 +0000 (13:42 -0400)]
Minor

10 years ago[coretext] Simplify cluster mapping
Behdad Esfahbod [Mon, 11 Aug 2014 06:04:38 +0000 (02:04 -0400)]
[coretext] Simplify cluster mapping

10 years ago[coretext] Minor
Behdad Esfahbod [Sun, 10 Aug 2014 23:19:38 +0000 (19:19 -0400)]
[coretext] Minor

10 years ago[coretext] Fix fallback detection
Behdad Esfahbod [Sun, 10 Aug 2014 23:05:25 +0000 (19:05 -0400)]
[coretext] Fix fallback detection

Fixes http://github.com/behdad/harfbuzz/pull/36

10 years ago[coretext] Fix last range
Behdad Esfahbod [Sun, 10 Aug 2014 22:59:47 +0000 (18:59 -0400)]
[coretext] Fix last range

Test with:

hb-view /Library/Fonts/Zapfino.ttf ZapfinoZapfino --features=-dlig[7:] --shaper=coretext

10 years agoFix hb_in_range() for types smaller than int
Behdad Esfahbod [Sun, 10 Aug 2014 22:52:07 +0000 (18:52 -0400)]
Fix hb_in_range() for types smaller than int

As exercised by hb-coretext .notdef code.

10 years ago[wince] Try to fix some stuff on Windows CE
Behdad Esfahbod [Sun, 10 Aug 2014 22:04:50 +0000 (18:04 -0400)]
[wince] Try to fix some stuff on Windows CE

Based on errors seen here:
http://testresults.qt-project.org/ci/QtBase_dev_Integration/build_03837/wince70embedded-armv4i-msvc2008_Windows_7/log.txt.gz

Fully untested.

10 years agoMinor
Behdad Esfahbod [Sun, 10 Aug 2014 21:42:19 +0000 (17:42 -0400)]
Minor

10 years ago[coretext] Fix assert on Yosemite
Behdad Esfahbod [Sun, 10 Aug 2014 21:40:24 +0000 (17:40 -0400)]
[coretext] Fix assert on Yosemite

Apparently those functions documented as sometimes returning NULL
actually exercise that right in OS X 10.10 Yosemite.  The scratch
was too small for that.  I *think* I fixed it, but haven't tested
as I don't have Yosemite.

10 years ago[coretext] Use CGFont as face_data
Behdad Esfahbod [Fri, 18 Apr 2014 18:21:08 +0000 (11:21 -0700)]
[coretext] Use CGFont as face_data

10 years ago[arabic] Bug 82306 - Mandaic had errors in its Unicode Joining_Type
Behdad Esfahbod [Thu, 7 Aug 2014 19:38:52 +0000 (15:38 -0400)]
[arabic] Bug 82306 - Mandaic had errors in its Unicode Joining_Type

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=82306

10 years agoUse atexit() only if it's safe to call from shared library
Behdad Esfahbod [Wed, 6 Aug 2014 17:34:49 +0000 (13:34 -0400)]
Use atexit() only if it's safe to call from shared library

Apparently they are not (advertised as?) safe on BSD systems.
We ignore the case of static libraries.

Whitelisted on glibc, Android, and MSVC / mingw.

https://bugs.freedesktop.org/show_bug.cgi?id=82246

10 years ago[arabic] Fix fallback shaping regression
Behdad Esfahbod [Tue, 5 Aug 2014 18:19:01 +0000 (14:19 -0400)]
[arabic] Fix fallback shaping regression

Was broken in 615d00ea252739da57edbd980ff27e573.

Fixes https://github.com/behdad/harfbuzz/pull/48

Micro-test added.

10 years ago0.9.34
Behdad Esfahbod [Sat, 2 Aug 2014 23:24:55 +0000 (19:24 -0400)]
0.9.34

10 years ago[uniscribe] Minor
Behdad Esfahbod [Sat, 2 Aug 2014 21:46:38 +0000 (17:46 -0400)]
[uniscribe] Minor

10 years agoMake sure gsubgpos buffer vars are available during fallback_position
Behdad Esfahbod [Sat, 2 Aug 2014 21:18:46 +0000 (17:18 -0400)]
Make sure gsubgpos buffer vars are available during fallback_position

Add buffer var allocation asserts to a few key places.

10 years agoDisable 'liga' for vertical text
Behdad Esfahbod [Sat, 2 Aug 2014 20:31:16 +0000 (16:31 -0400)]
Disable 'liga' for vertical text

The reason we turned it on is because Kazuraki uses it.  But that's
not reason enough.  Until the OpenType spec gets its act together re
adding design-direction to lookups, this is better user experience.

10 years agoMake it easier to use HB_BUFFER_FLAG_BOT/EOT
Behdad Esfahbod [Sat, 2 Aug 2014 20:17:44 +0000 (16:17 -0400)]
Make it easier to use HB_BUFFER_FLAG_BOT/EOT

Previously, we expected users to provide BOT/EOT flags when the
text *segment* was at paragraph boundaries.  This meant that for
clients that provide full paragraph to HarfBuzz (eg. Pango), they
had code like this:

  hb_buffer_set_flags (hb_buffer,
                       (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
                       (item_offset + item_length == paragraph_length ?
                        HB_BUFFER_FLAG_EOT : 0));

  hb_buffer_add_utf8 (hb_buffer,
                      paragraph_text, paragraph_length,
                      item_offset, item_length);

After this change such clients can simply say:

  hb_buffer_set_flags (hb_buffer,
                       HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);

  hb_buffer_add_utf8 (hb_buffer,
                      paragraph_text, paragraph_length,
                      item_offset, item_length);

Ie, HarfBuzz itself checks whether the segment is at the beginning/end
of the paragraph.  Clients that only pass item-at-a-time to HarfBuzz
continue not setting any flags whatsoever.

Another way to put it is: if there's pre-context text in the buffer,
HarfBuzz ignores the BOT flag.  If there's post-context, it ignores
EOT flag.