Commit Graph

3094 Commits

Author SHA1 Message Date
Behdad Esfahbod d41b809e9d [ot-font] Start adding vertical support 2014-09-25 13:22:01 +03:00
Behdad Esfahbod 22f0de5025 Fix build 2014-08-25 12:54:57 -04:00
Behdad Esfahbod d457e3f0ff [arabic] Don't #include __FILE__
Fine!

https://code.google.com/p/chromium/issues/detail?id=406957
2014-08-25 12:31:19 -04:00
Behdad Esfahbod 9ceb673d9c [arabic] Allow disabling win1256 fallback code
By defining HB_NO_WIN1256.
2014-08-25 11:48:12 -04:00
Behdad Esfahbod 8a93195021 [ot] Prefer Windows platform cmap tables / accept all Unicode encodingIDs
Some fonts on the Mac ship with (0,1).
2014-08-22 12:06:57 -04:00
Behdad Esfahbod 270971a0fc [win32] Avoid preprocessor warnings re macros 2014-08-15 14:28:04 -04:00
Behdad Esfahbod 8c6bd34d38 Fix check-symbols on OS X 2014-08-14 13:33:37 -04:00
Behdad Esfahbod 522b1cc526 [coretext] Hide feature_mappings 2014-08-14 13:29:30 -04:00
Behdad Esfahbod 0d2c2f238b Simplify hb-object 2014-08-14 13:25:55 -04:00
Behdad Esfahbod 9d861b81f3 Really fix clang build this time 2014-08-14 13:15:21 -04:00
Behdad Esfahbod 272226f294 Revert "Fix build on clang after previous commit"
This reverts commit 9c80cbc87f.
2014-08-14 13:11:33 -04:00
Behdad Esfahbod 9c80cbc87f Fix build on clang after previous commit 2014-08-14 13:09:52 -04:00
Behdad Esfahbod a5a27073cf Rewrite this==NULL checks to avoid undefined behavior
Fixes https://code.google.com/p/chromium/issues/detail?id=403594
2014-08-14 13:05:36 -04:00
Behdad Esfahbod cc3b2d432b 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
2014-08-14 13:00:47 -04:00
Behdad Esfahbod cd7ea4f791 Make hb_object_t members private
In preparation for fixing:
https://code.google.com/p/chromium/issues/detail?id=403594
2014-08-14 12:57:02 -04:00
Behdad Esfahbod 20076cc41e [coretext] Add version guards for kCTLanguageAttributeName 2014-08-12 19:26:35 -04:00
Behdad Esfahbod 1b3011c27d [coretext] Pass buffer language to CoreText 2014-08-12 19:17:49 -04:00
Behdad Esfahbod 3eb6a4dbf2 [coretext] Minor 2014-08-12 19:17:45 -04:00
Behdad Esfahbod 08acfe0d3a [hb-coretext] Fix cluster order of notdef runs in RTL text 2014-08-12 19:17:45 -04:00
Behdad Esfahbod 30eed75de2 [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.
2014-08-12 17:15:09 -04:00
Behdad Esfahbod dc9aba6fc5 [shape-plan] Better debug messages 2014-08-12 17:14:36 -04:00
Behdad Esfahbod e956c65bf7 [shape-plan] Simplify macro 2014-08-12 17:06:50 -04:00
Behdad Esfahbod 29e25550ce Fix gcc warning 2014-08-12 17:06:50 -04:00
Behdad Esfahbod 8d5eebc0c6 [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
2014-08-12 17:06:50 -04:00
Behdad Esfahbod bc3d0dc601 [shape-plan] Add debug tracing 2014-08-12 17:06:50 -04:00
Behdad Esfahbod 81b8d9777b [coretext] Fix buffer resizing
Was very broken.  Now fixed and tested.
2014-08-12 15:50:15 -04:00
Behdad Esfahbod c3e924fb9e [coretext] Rewind scratch-allocated arrays when not needed anymore 2014-08-12 15:50:15 -04:00
Behdad Esfahbod 8fd4d70b14 [wince] Two more Windows CE fixes
Report has it that it builds (and works) now:

  https://codereview.qt-project.org/#/c/92087/
2014-08-12 13:12:31 -04:00
Behdad Esfahbod fd0001d7db [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:
5a0eed3b50
25f4fb9b56

Fixes http://github.com/behdad/harfbuzz/pull/36
2014-08-12 10:34:01 -04:00
Behdad Esfahbod 5a0eed3b50 [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
25f4fb9b56 wasn't enough after all.
2014-08-11 23:47:16 -04:00
Behdad Esfahbod 1b55077f03 [coretext] Remove unnecessary alt_size
Wasn't needed after a6b8dc8742.
2014-08-11 20:45:12 -04:00
Behdad Esfahbod 10b1104d79 [coretext] Use CFRunStatus
Assert that all runs had expected direction, and take hint for
non-monotone clusters.
2014-08-11 20:02:45 -04:00
Behdad Esfahbod fd1a6aa8d0 [coretext] Minor 2014-08-11 20:01:37 -04:00
Behdad Esfahbod 130856c705 [coretext] Remove debug printf! 2014-08-11 19:16:26 -04:00
Behdad Esfahbod b5fbc3b8f5 API: Do not clear buffer-flags in hb_buffer_clear_contents()
After 763e5466c0, 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.
2014-08-11 18:40:01 -04:00
Behdad Esfahbod 104484cefe Minor 2014-08-11 18:24:36 -04:00
Behdad Esfahbod 4acce77db7 [coretext] Pass buffer direction to CoreText
Have to use a CTTypesetter for this.
2014-08-11 17:46:50 -04:00
Behdad Esfahbod 5ec45dd37c [coretext] Minor
It's hard to handle all possible NULL returns from CoreText.  Add one
more...
2014-08-11 17:46:12 -04:00
Behdad Esfahbod 624a299b82 [coretext] Attach marks to base clusters
Fixes https://githu.com/behdad/harfbuzz/issues/49
to the extent that it can be fixed.
2014-08-11 15:29:18 -04:00
Behdad Esfahbod 3c41ccb535 [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!
2014-08-11 15:11:59 -04:00
Behdad Esfahbod a6b8dc8742 [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.
2014-08-11 15:08:53 -04:00
Behdad Esfahbod 9b3c60c88b [coretext] Always compute log_clusters
To be used soon.
2014-08-11 13:46:56 -04:00
Behdad Esfahbod 15c633dd1f Minor 2014-08-11 13:42:59 -04:00
Behdad Esfahbod 9ce067c775 [coretext] Simplify cluster mapping 2014-08-11 02:44:50 -04:00
Behdad Esfahbod 49f7fb6376 [coretext] Minor 2014-08-10 19:19:38 -04:00
Behdad Esfahbod 25f4fb9b56 [coretext] Fix fallback detection
Fixes http://github.com/behdad/harfbuzz/pull/36
2014-08-10 19:05:52 -04:00
Behdad Esfahbod 77a7a53ace [coretext] Fix last range
Test with:

hb-view /Library/Fonts/Zapfino.ttf ZapfinoZapfino --features=-dlig[7:] --shaper=coretext
2014-08-10 19:05:52 -04:00
Behdad Esfahbod c2b151d952 Fix hb_in_range() for types smaller than int
As exercised by hb-coretext .notdef code.
2014-08-10 19:05:52 -04:00
Behdad Esfahbod 26a963b9cb [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.
2014-08-10 18:05:24 -04:00
Behdad Esfahbod 92aeee3f04 Minor 2014-08-10 17:42:19 -04:00
Behdad Esfahbod b9993d8d6d [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.
2014-08-10 17:40:24 -04:00
Behdad Esfahbod 087733dd66 [coretext] Use CGFont as face_data 2014-08-10 17:33:16 -04:00
Behdad Esfahbod d277c3d7ee [arabic] Bug 82306 - Mandaic had errors in its Unicode Joining_Type
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=82306
2014-08-07 15:38:52 -04:00
Behdad Esfahbod 38fb30d742 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
2014-08-06 13:34:49 -04:00
Behdad Esfahbod d5e61470fa [arabic] Fix fallback shaping regression
Was broken in 615d00ea25.

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

Micro-test added.
2014-08-05 14:19:36 -04:00
Behdad Esfahbod d7c850f803 [uniscribe] Minor 2014-08-02 19:07:53 -04:00
Behdad Esfahbod 8f3eebf7ee Make sure gsubgpos buffer vars are available during fallback_position
Add buffer var allocation asserts to a few key places.
2014-08-02 19:07:49 -04:00
Behdad Esfahbod 2053f369f8 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.
2014-08-02 16:31:16 -04:00
Behdad Esfahbod 763e5466c0 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.
2014-08-02 16:17:44 -04:00
Behdad Esfahbod 0a5ae93362 Merge branch 'win1256' 2014-08-02 15:00:34 -04:00
Behdad Esfahbod 6ab6be32c5 [arabic/win1256] Remove unused MultipleSubst macros 2014-08-02 14:59:41 -04:00
Behdad Esfahbod abfa4252cc [arabic/win1256] Really fix lam-alef this time
https://bugzilla.mozilla.org/show_bug.cgi?id=1045139#c26
b276e897d1 (commitcomment-7243499)
2014-08-02 14:59:32 -04:00
Behdad Esfahbod 55977f2a46 [arabic/win1256] Hook up lamMedi lookup
Restructure lookup array to accommodate.

https://bugzilla.mozilla.org/show_bug.cgi?id=1045139#c18
2014-08-01 16:14:33 -04:00
Behdad Esfahbod e839e2523e [arabic/win1256] Fix TEH MARBUTA final form
https://bugzilla.mozilla.org/show_bug.cgi?id=1045139#c18
2014-08-01 16:09:44 -04:00
Behdad Esfahbod a2de193220 [arabic/win1256] Fix shaping of JEEM, HAH, and KHAH
https://bugzilla.mozilla.org/show_bug.cgi?id=1045139#c16
2014-07-31 18:58:33 -04:00
Behdad Esfahbod 1789ccb1dd [arabic/win1256] Remove GCC'ism
The table can now compile independently too.  If we cannot make it work
on MSVC, we can always generate the data and distribute it.

The code now compiles cleanly with:

gcc -c -xc -std=c99 -Werror -pedantic hb-ot-shape-complex-arabic-win1256.hh
g++ -c -xc -std=c++1x -Werror -pedantic hb-ot-shape-complex-arabic-win1256.hh

See:
a97f537cec (commitcomment-7218736)
2014-07-31 18:58:24 -04:00
Behdad Esfahbod f28b1c823d [arabic] Implement Windows-1256 private shaping
Bug 1045139 - The Arabic text with "MS Sans Serif" font is rendered bad
https://bugzilla.mozilla.org/show_bug.cgi?id=1045139

This is only enabled on Windows platforms, and requires support from
Uniscribe to work.  But for clients that do hook up to Uniscribe, this
fixes shaping of Windows-1256-encoded bitmap fonts like "MS Sans Serif".

The code and table together have just less than a 1kb footprint when
enabled.

UNTESTED.  I might even have broken regular Arabic fallback shaping.
2014-07-31 18:58:24 -04:00
Behdad Esfahbod ac53443f1c [hangul] Don't apply 'calt'
See comments.

Micro-test added.
2014-07-31 18:54:43 -04:00
Behdad Esfahbod 88911e8cc7 Minor 2014-07-29 19:47:26 -04:00
Behdad Esfahbod 9e834e29e0 [hebrew] Zero mark advance by GDEF late
Seems to be what Uniscribe does.

At this point I think it's work checking our default...

Fixes Bug 76767 - Zeroing of advance of 2nd component of multiple
substitution with SBL Hebrew
https://bugs.freedesktop.org/show_bug.cgi?id=76767

Micro-test added.
2014-07-26 20:34:01 -04:00
Behdad Esfahbod 6f2d9ba52a Add old-Myanmar shaper
Looks like Unsicribe responds to the 'mymr' tag by zeroing marks
GDEF_LATE instead of generic-shaper UNICODE_LATE.  Implement that.

Fixes
Bug 81775 - Incorrect Rendering with harfbuzz-ng myanmar unicode
https://bugs.freedesktop.org/show_bug.cgi?id=81775

Micro-test added based on Padauk.
2014-07-26 19:18:59 -04:00
Behdad Esfahbod 595d2b96c3 Minor 2014-07-26 18:44:15 -04:00
Behdad Esfahbod fe6788bc57 Typo 2014-07-25 12:40:56 -04:00
Behdad Esfahbod 6e69200a2a Fix snprintf() format
Patch from Maks Naumov.
Fixes https://github.com/behdad/harfbuzz/pull/22
2014-07-25 12:30:47 -04:00
Behdad Esfahbod 5c5cdbbdf8 Make sure broken feature strings are not partially parsed
If user doesn't check hb_feature_from_string() return value, we
don't want them to end up see the partially-parsed feature.
2014-07-25 12:21:49 -04:00
Behdad Esfahbod a795fe6378 Allow quotation marks around feature tag in hb_feature_from_string()
With this, I believe we accept CSS feature strings completely.
2014-07-25 12:15:49 -04:00
Behdad Esfahbod 3f64618474 Allow space at the end of feature string with values, eg 'dlig=1 ' 2014-07-25 12:13:19 -04:00
Behdad Esfahbod f31f7d2259 Minor 2014-07-25 12:13:19 -04:00
Behdad Esfahbod 60cb18a5de Allow on/off in hb_feature_from_string()
We now allow things like "dlig on" / "dlig=on".
2014-07-25 12:13:16 -04:00
Behdad Esfahbod d9e618eca9 Remove duplicate definition of ISALNUM
It's defined in hb-private.h already.
2014-07-25 12:02:26 -04:00
Behdad Esfahbod 2ee5f665de Fix parsing of features like "- liga" (with the space) 2014-07-25 12:02:22 -04:00
Behdad Esfahbod e15fa7a8cf Do not require the '=' in hb_feature_from_string()
Towards accepting CSS font-feature-settings strings.
2014-07-25 11:46:28 -04:00
Behdad Esfahbod f4fe9baefd Reject tags longer than 4 chars in hb_feature_from_string() 2014-07-25 11:39:55 -04:00
Behdad Esfahbod 7e8c389546 Minor warnings fixes
Some systems insist on -Wmissing-field-initializers.  We have too many,
by design.  Fix a few easy ones.
2014-07-25 11:23:17 -04:00
Behdad Esfahbod fc0daafab0 [indic] Handle old-spec Malayalam reordering with final Halant
See comment.

Micro-tests added.
2014-07-23 16:53:03 -04:00
Behdad Esfahbod d6d349d178 Give CC to gir-scanner
From:
https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-harfbuzz/0001-give-cc-to-gir-scanner.all.patch
2014-07-23 11:38:49 -04:00
Behdad Esfahbod 3f310dc0ca Disallow changing settings on immutable face
Ouch!
2014-07-22 16:26:27 -04:00
Behdad Esfahbod 0fc0a10228 [win] Fix Cygwin build
db30828048 (commitcomment-7077778)
2014-07-21 11:13:27 -04:00
Behdad Esfahbod 1132a7dd0e Add HB_TAG_MAX_SIGNED / _HB_SCRIPT_MAX_VALUE_SIGNED
To make C language police happy.
2014-07-20 01:17:40 -04:00
Behdad Esfahbod df99976398 [gobject] Skip _HB_SCRIPT_MAX_VALUE
Fixes https://github.com/behdad/harfbuzz/pull/38
2014-07-19 17:31:23 -04:00
Behdad Esfahbod f1a8d50a87 [win] Don't define visibility attribtue under Cygwin 2014-07-19 16:52:32 -04:00
Behdad Esfahbod 9c77027d64 [win] Turn STRICT on for including windows.h 2014-07-19 16:37:22 -04:00
Behdad Esfahbod db30828048 [win] Consolidate windows.h include tips and tricks 2014-07-19 16:32:04 -04:00
Behdad Esfahbod f26d59d468 More fixing MemoryBarrier() on Mingw32
Set requested windows header to Vista.  See discussion:

fbb2847f54 (commitcomment-7054700)
2014-07-19 16:10:21 -04:00
Behdad Esfahbod 385cf37cf0 Fix hb_in_range() unused-var warning on Windows 2014-07-17 18:22:07 -04:00
Behdad Esfahbod e3b42f1af4 [arabic] Disable 'cswh' again
Ouch!
2014-07-17 17:13:54 -04:00
Behdad Esfahbod 82f4d9d53f [arabic] Add note re disabled 'cswh' 2014-07-17 15:57:37 -04:00
Behdad Esfahbod 615d00ea25 [arabic] Apply init/medi/isol/fini/... in separate stages
Follows the order of the Arabic/Syriac specs.  Also don't stop
between rlig and calt in non-Arabic scripts.

Micro-tests for Arabic and Mongolian added for the latter.
2014-07-17 15:50:13 -04:00
Behdad Esfahbod 7cd33f2304 Micro optimization 2014-07-17 14:39:07 -04:00
Behdad Esfahbod 164c13d73f Another try to fix Mongolian free variation selectors
This reverts bf029281 and fixes it properly.  That commit
was not enough as it was only inheriting the shaping_action
for prev_action, but not curr_action.

Micro-test added.

https://code.google.com/p/chromium/issues/detail?id=393896
2014-07-17 14:28:04 -04:00
Behdad Esfahbod 5209c50506 Revert "Show U+FFFD REPLACEMENT CHARACTER for invalid Unicode codepoints"
We now handle U+FFFD replacement in hb_buffer_add_utf*().  Any other
manipulation can happen in user callbacks.  No need for this.

efe74214bb (commitcomment-7039404)

This reverts commit efe74214bb.

Conflicts:
	src/hb-ot-shape-normalize.cc
2014-07-17 12:23:44 -04:00
Dominik Röttsches 9e7c720100 Fix CoreText build after a8b89a09f6 2014-07-17 12:18:08 -04:00
Behdad Esfahbod a4d643755a Minor 2014-07-16 20:15:45 -04:00
Behdad Esfahbod 976c8f4552 New API: hb_buffer_[sg]et_replacement_codepoint()
With this change, we now by default replace broken UTF-8/16/32 bits
with U+FFFD.  This can be changed by calling new API on the buffer.
Previously the replacement value used to be (hb_codepoint_t)-1.

Note that hb_buffer_clear_contents() does NOT reset the replacement
character.

See discussion here:

6f13b6d62d

New API:

  hb_buffer_set_replacement_codepoint()
  hb_buffer_get_replacement_codepoint()
2014-07-16 15:34:20 -04:00
Behdad Esfahbod bcba8b4502 New API hb_buffer_add_codepoints()
Like hb_buffer_add_utf32, but doesn't do any Unicode validation.
This is like what hb_buffer_add_utf32 used to be until a couple
commits ago.
2014-07-16 14:59:04 -04:00
Behdad Esfahbod 625dbf141a [buffer] Templatize UTF-* functions 2014-07-16 14:52:59 -04:00
Behdad Esfahbod e634fed428 [buffer] Validate UTF-32 input
Same as what we do for UTF-8 and UTF-16.
2014-07-16 14:17:26 -04:00
Behdad Esfahbod b98c5db32d Minor refactoring 2014-07-16 13:44:01 -04:00
Behdad Esfahbod 3b861421a7 Fix Mongolian Variation Selectors for fonts without GDEF
Originally we fixed those in 79d1007a50.
However, fonts like MongolianWhite don't have GDEF, but have IgnoreMarks
in their LigatureSubstitute init/etc features.  We were synthesizing a
GDEF class of mark for Mongolian Variation Selectors and as such the
ligature lookups where not matching.  Uniscribe doesn't do that.

I tried with more sophisticated fixes, like, if there is no GDEF and
a lookup-flag mismatch happens, instead of rejecting a match, try
skipping that glyph.  That surely produces some interesting behavior,
but since we don't want to support fonts missing GDEF more than we have
to, I went for this simpler fix which is to always mark
default-ignorables as base when synthesizing GDEF.

Micro-test added.

Fixes rest of https://bugs.freedesktop.org/show_bug.cgi?id=65258
2014-07-16 13:30:26 -04:00
Behdad Esfahbod 878a25375b Minor 2014-07-16 13:21:59 -04:00
Behdad Esfahbod ec181e5014 Minor moving around 2014-07-16 13:10:03 -04:00
Behdad Esfahbod e7ce50d9eb [indic] Fix access past end of array 2014-07-16 12:30:39 -04:00
Behdad Esfahbod 73e23b0acf Whitespace 2014-07-15 18:43:49 -04:00
Behdad Esfahbod b7bc0b671d Simplify / speed up UTF-8 code 2014-07-11 16:22:13 -04:00
Behdad Esfahbod af2490c095 Only accept well-formed UTF-8 sequences
Enable tests that were disabled before, and adjust one test,
and add more tests.
2014-07-11 16:22:13 -04:00
Behdad Esfahbod 7323d385cc Simplify hb_utf_prev<16> to call hb_utf_next<16> 2014-07-11 16:22:13 -04:00
Behdad Esfahbod c09a607a84 Use hb_in_range() for arabic and indic tables
Though, looks like gcc was smart enough to produce the same code
before...
2014-07-11 16:22:13 -04:00
Behdad Esfahbod 7627100f42 Mark unsigned integer literals with the u suffix
Simplifies hb_in_range() calls as the type can be inferred.
The rest is obsessiveness, I admit.
2014-07-11 16:22:13 -04:00
Behdad Esfahbod a8b89a09f6 Simplify hb_in_range()
It's both faster and produces smaller code.  Now I feel stupid for
not writing it this way before.
2014-07-11 14:18:01 -04:00
Behdad Esfahbod db8934faa1 Simplify hb_utf_prev<8> to call hb_utf_next<8> 2014-07-11 13:58:36 -04:00
Behdad Esfahbod efe74214bb Show U+FFFD REPLACEMENT CHARACTER for invalid Unicode codepoints
Only if the font doesn't support it.  Ie, this gives the user to
use non-Unicode codepoints as private values and return a meaningful
glyph for them.  But if it's invalid and font callback doesn't
like it, and if font has U+FFFD, show that instead.

Font functions that do not want this automatic replacement to
happen should return true from get_glyph() if unicode > 0x10FFFF.

Replaces https://github.com/behdad/harfbuzz/pull/27
2014-07-11 11:59:48 -04:00
Behdad Esfahbod 6f13b6d62d When parsing UTF-16, generate invalid codepoint for lonely low surrogate
Test passes now.
2014-07-10 19:39:39 -04:00
Behdad Esfahbod 6334495ac1 Use zh-Hans / zh-Hant when converting OT language tag to hb_language_t 2014-07-10 19:22:07 -04:00
Behdad Esfahbod f381e320df Fix lang matching logic
Previous code was broken logically, but harmless.
2014-07-10 19:20:35 -04:00
Behdad Esfahbod ee5350d667 Accept BCP 47 zh-Hans / zh-Hant language tags 2014-07-10 19:18:56 -04:00
Behdad Esfahbod 8b16ff1259 [uniscribe] Fix build after recent changes to Offset 2014-07-09 17:41:09 -04:00
Behdad Esfahbod 73f7f8919e Define _POSIX_C_SOURCE only if it is not defined
Fixes https://github.com/behdad/harfbuzz/pull/45
2014-07-09 17:17:18 -04:00
Behdad Esfahbod 0cd94491b9 [ucdn] Update to Unicode 7.0.0 data
From http://github.com/behdad/ucdn
2014-07-09 16:53:06 -04:00
Behdad Esfahbod 68f724484b [indic] Remove some more now-unused special-cases 2014-06-30 15:46:53 -04:00
Behdad Esfahbod e79c948980 [indic] Remove special-casing of U+1CF2,1CF3
These were introduced in a498565ced,
but IndicSyllabicCategory has had the correct value already, so the
special code was never needed.
2014-06-30 15:39:39 -04:00
Behdad Esfahbod d743ce78e1 [indic-table] Update to Unicode 7.0 data
Touch code just enough to preserve previous syllable structure
and functionality as closely as possible.  Many further cleanups
coming later.
2014-06-30 15:24:45 -04:00
Behdad Esfahbod 5fa21b3ab7 [indic-table] Fix category frequency counts in comments 2014-06-30 14:30:54 -04:00
Behdad Esfahbod 5c4e3e9a57 Whitespace 2014-06-30 14:25:18 -04:00
Behdad Esfahbod af528b6674 Fix typo; ouch! 2014-06-27 18:07:00 -04:00
Behdad Esfahbod 7d4ada66c9 Mark unsed members with a "Z" suffix
There may be more.  There are members that are by definition
redundant or reserved and not needed, NOT what we *currently*
don't use.

I'm sure there's more...
2014-06-27 17:32:56 -04:00
Behdad Esfahbod 23afcff1d1 [ot-font] Implement Unicode variation selectors 2014-06-27 17:22:36 -04:00
Behdad Esfahbod a5a4736916 [cmap] Implement subtable format 14 2014-06-27 17:22:31 -04:00
Behdad Esfahbod 586b60622c Minor: final bits of cleanup 2014-06-27 15:39:47 -04:00
Behdad Esfahbod 51d9ba09bc Minor 2014-06-27 15:27:15 -04:00
Behdad Esfahbod 3084767e92 Minor: Remove LongArrayOf 2014-06-27 15:24:35 -04:00
Behdad Esfahbod 41ea594950 Minor: Remove LongSortedArrayOf 2014-06-27 15:23:18 -04:00
Behdad Esfahbod bb6ecf2ce5 Minor: Remove LongOffsetArrayOf and LongOffsetLongArrayOf 2014-06-27 15:21:08 -04:00
Behdad Esfahbod 99d2817123 Minor: Remove GenericOffset 2014-06-27 15:19:15 -04:00
Behdad Esfahbod 9da552dcc5 Minor: Remove some GenericXXX templates 2014-06-27 15:18:36 -04:00
Behdad Esfahbod 36073ede5b Minor: Reorder template parameter order 2014-06-27 15:18:26 -04:00
Behdad Esfahbod 0394ec1bfb Minor: Introduce GenericOffset 2014-06-27 15:18:08 -04:00
Behdad Esfahbod 0d1b3419a7 Minor: Use template parameter default values for OffsetTo 2014-06-27 15:17:47 -04:00
Behdad Esfahbod 546b1adcdc Minor: Use template parameter default values for hb_prealloced_array_t 2014-06-27 15:17:01 -04:00
Behdad Esfahbod 911ca38645 Add back API removed recently
Add hb_ot_layout_language_get_required_feature_index() again, which
is used in Pango.  This was removed in
da13293798 in favor of
hb_ot_layout_language_get_required_feature().

API changes:

  - Added hb_ot_layout_language_get_required_feature_index back.
2014-06-24 10:20:36 -06:00
Behdad Esfahbod 89e4946929 Add new IndicSyllabicCategory short forms for Unicode 7.0 2014-06-22 11:32:13 -06:00