Commit Graph

166 Commits

Author SHA1 Message Date
Behdad Esfahbod dc8ed45292 [morx] Implement forward/backward processing
We reverse too many times. Can be optimized. But I doubt many fonts
use reverse lookups, so doesn't matter.

Other than not applying user features, this completes morx table
implementation.
2018-09-19 16:47:25 -04:00
Behdad Esfahbod 3bccd62196 [morx] Implement horiz-only/vert-only subtables 2018-09-19 16:24:34 -04:00
Behdad Esfahbod 041a08de3d [morx] Improve buffer position in Insertion w DontAdvance and wo
Just speculation. Needs tests to determine which is correct behavior.
2018-09-19 16:02:56 -04:00
Behdad Esfahbod 388ab91642 [morx] Implement InsertionChain 2018-09-17 20:28:32 +02:00
Behdad Esfahbod 89dd4b9597 Fix bots
"Unused private member" warning turned error.  ugh.
2018-09-16 18:11:46 +02:00
Behdad Esfahbod 10642b3fbf Disallow null-enabled offsets to unsized structures...
...like UnsizedArrayOf<>.

This fixes a class of crasher bugs, mostly with color and AAT tables.  We
cannot use nullable offsets to varsized data that does not declare min_size,
because it's nost safe to use our fixed-size null pool for types that have
their size external.  So, use non_null'able offsets for these.

A further enhancement would be to make use of min_size in Null<> itself.
Will try that after.
2018-09-15 19:43:33 +02:00
Behdad Esfahbod 9ff76c6025 [morx] Respect default feature settings
Does NOT apply user-selected features.  But at least now enables
correct subtables.
2018-09-15 18:31:14 +02:00
Behdad Esfahbod 2f97da6e2d [aat] Change version field 2018-09-15 14:51:50 +02:00
Behdad Esfahbod 29c2bd1795 [morx] Add stub for InsertionChain 2018-09-15 14:47:18 +02:00
Behdad Esfahbod dff2c45f1e Port rest from VAR to UnsizedArrayOf<> 2018-09-11 01:01:08 +02:00
Behdad Esfahbod 9507b05a7a Simplify sanitize->check_array()
Fix a bug in CBDT sanitize, and redundant check in avar.
2018-09-10 23:18:23 +02:00
Behdad Esfahbod c77ae40852 Rename hb-*private.hh to hb-*.hh
Sorry for the noise, downstream custom builders.  Please adjust.
2018-08-25 22:36:36 -07:00
Behdad Esfahbod 63f57f4dab Mark more unsized array's as arrayZ 2018-05-08 16:56:11 -07:00
Behdad Esfahbod 5b93f69169 Rename some X-terminated members to Z-terminated
X-terminated means don't access this, it's not located correctly.
Z-terminated means this is a C array with no bound checking.
2018-05-02 14:59:14 -04:00
Ebrahim Byagowi 277e328986
Make some of implicit header uses explicit (#989)
Splitted from #950 and #986 IIRC Chromium had a policy about this encouraging it,
not sure about automated way to detect and add them but for now lets have the needed
ones of them.
2018-04-17 09:13:35 +04:30
Ebrahim Byagowi a02c3ee70f Add or update tables specifications links 2018-04-12 13:44:32 +04:30
Ebrahim Byagowi b799fc8077
minor, use LOffsetTo and LArrayOf whenever possible (#966) 2018-04-11 18:36:09 +04:30
Ebrahim Byagowi 211da5efdc
[aat] Cosmetic changes (#964) 2018-04-11 17:41:24 +04:30
Ebrahim Byagowi 158f2810b2
[aat/ltag] Implement the table parsing (#911) 2018-03-26 12:04:30 +04:30
Behdad Esfahbod c7d7c9898e [aat] Minor 2018-02-13 14:00:14 -08:00
Behdad Esfahbod 2dbfeecf96 Minor 2018-02-13 13:59:39 -08:00
Behdad Esfahbod 91519c6a5b [aat] Add buffer messages 2018-02-10 13:35:17 -06:00
Behdad Esfahbod 5021ba2a21 [aat] Minor 2018-02-08 15:11:28 -06:00
Behdad Esfahbod ee433d36fa [aat] Set debug lookup_index 2018-02-07 12:41:21 -05:00
Behdad Esfahbod 126ffdbe95 [aat] Fix debug compile 2018-02-07 12:26:57 -05:00
Behdad Esfahbod 54e6efadd6 [aat] Fix unsafe-to-break
At any position, if state is not zero, mark unsafe-to-break before,
unless we can reason it safe.

At any position, if there's an action entry for end-of-text, mark
unsafe to break.

Also changes buffer diff impl to allow for flag differences as long
as the buffer glyph flags are superset of reference glyph flags.

With this, all MORX tests pass.
2018-02-04 17:18:54 -05:00
Behdad Esfahbod 89b1906d99 [aat] More adjustment to ContextualSubtable
See comment.

With this, MORX-20 passes if I turn --verify off.  Our unsafe-to-break
logic is currently broken in presence of end-of-text actions.  That's,
ugh, extra work to fix.  Let me try...
2018-02-04 14:45:02 -05:00
Behdad Esfahbod 8be596f0b7 [aat] In ContextualSubstitute, apply end-of-text action to last glyph 2018-02-04 14:40:17 -05:00
Behdad Esfahbod c0b1c7eb2e [aat] Remove unneeded check 2018-02-04 14:19:41 -05:00
Behdad Esfahbod aed32589af [aat] In ContextualSubtable, mark mark after substituting mark
Fixes MORX-21.
2018-02-04 12:36:54 -05:00
Behdad Esfahbod fe5f9b1ae3 [aat] Fix ContextualSubtable sanitization
Fixes MORX-18, MORX-19, and MORX-22.
2018-02-04 12:36:54 -05:00
Behdad Esfahbod 51ce3828e6 [aat] Fix Ligature matching
I hope... Makes "ffi" work with Zapfino. I'm not sure if doing it correctly though...
2018-01-19 18:37:58 -08:00
Behdad Esfahbod bef509855c [aat] Add TODO 2018-01-19 18:24:00 -08:00
Behdad Esfahbod e6f283ed7d [aat] Implement LigatureSubtable
We form the Zapfino ligature now. Yay! No further testing done.
2018-01-19 18:09:48 -08:00
Behdad Esfahbod 046690a4df [aat] Add hb_aat_apply_context_t 2018-01-19 16:40:13 -08:00
Behdad Esfahbod fd03449094 Rename hb_apply_context_t to hb_ot_apply_context_t 2018-01-19 16:40:13 -08:00
Behdad Esfahbod e6263c7142 [aat] Wire up table length to apply() 2018-01-15 15:37:55 -05:00
Behdad Esfahbod 679ae744d0 [aat] Towards implementing LigatureSubtable 2018-01-14 15:03:31 -05:00
Behdad Esfahbod 9009b341c4 [aat] Fix some struct sizes
I hate it that with my compiler at least, it doesn't catch totally uncompilable
statements in templates if they are not used...
2018-01-12 12:04:53 +01:00
Behdad Esfahbod 57051b4f67 [aat] Flush rest of buffer if state machine failed 2018-01-12 11:42:25 +01:00
Behdad Esfahbod 25364c4f00 [aat] Fix symbol visibility
Not sure why only one of the bots sees this as visible...
2018-01-12 11:31:20 +01:00
Behdad Esfahbod dd38db523a [aat] Fix more builds
Maybe I should disable C++11 detection such that my compiler also catches
these.  Doesn't look like we can switch to it for a while anyway...
2018-01-12 09:45:42 +01:00
Behdad Esfahbod 72cb2b1f57 [aat] Fix builds 2018-01-12 09:38:55 +01:00
Behdad Esfahbod c70d58f97d [aat] Port RearrangementSubtable to StateTableDriver 2018-01-12 00:08:22 +01:00
Behdad Esfahbod 117cfe7bb7 [aat] Add StateTableDriver and convert ContextualSubtable to it 2018-01-12 00:01:36 +01:00
Behdad Esfahbod 1f1c85a54a [aat] Remove 'mort' support
It's dead, Jim!
2018-01-11 22:43:57 +01:00
Behdad Esfahbod 7e2fed6d73 [aat] Allow DontAdvance
Apparently CoreText does allow these.  To be done: detect infinite
loops.

Fixes MORX-12 test.
2018-01-11 19:25:21 +01:00
Behdad Esfahbod 17f01aff91 [aat] Sanitize ContextualSubtable 2018-01-11 18:54:49 +01:00
Behdad Esfahbod 0e3b3379a0 [aat] Actually fix d887f93148 2018-01-11 18:01:10 +01:00
Behdad Esfahbod d887f93148 [aat] Make bots happy
Don't know why this is not caught by my compiler.  Looks like clang catches it
while gcc doesn't.

In file included from ../src/hb-aat-layout-morx-table.hh:31:
../src/hb-aat-layout-common-private.hh:523:30: error: no member named 'static_size' in 'AAT::ContextualSubtable<AAT::MorxTypes>::EntryData'
  DEFINE_SIZE_STATIC (4 + T::static_size);
                            ~~~^
2018-01-11 17:41:34 +01:00
Behdad Esfahbod f6be730994 [aat] In NoncontextualSubtable, handle MarkLast with end-of-line transition
Fixes MORX-11 test.
2018-01-11 15:23:24 +01:00
Behdad Esfahbod f9be673814 [aat] Implement ContextualSubtable
Tested with Zapfino and text "2nd". Sascha will create tests later.
2018-01-11 15:15:36 +01:00
Behdad Esfahbod 335a9c1fe4 [aat] Towards implementing ContextualSubtable 2018-01-11 15:15:36 +01:00
Behdad Esfahbod 62348f647f [aat] Implement end-of-text in state machine
Passes MORX-10 test now.
2018-01-11 15:15:36 +01:00
Behdad Esfahbod 9adbd938fa Minor 2018-01-11 15:15:36 +01:00
Behdad Esfahbod 94644d7ea4 [aat] Generate finegrained unsafe-to-break in state-machine!
Neato.
2018-01-11 11:49:07 +01:00
Behdad Esfahbod 14b4d84eef [aat] Fix RearrangementSubtable action 2018-01-11 10:43:30 +01:00
Behdad Esfahbod 800e4ae802 [aat] Mark state-machine-based lookup as completely unsafe-to-break
To be improved later.
2018-01-11 10:43:30 +01:00
Behdad Esfahbod ca42d96129 [aat] Implement RearrangementSubtable 2018-01-11 10:43:30 +01:00
Behdad Esfahbod 6b19178ee3 Prefix int types with HB
Such a headache that Windows defines UINT8, ...; Just prefix it.
2018-01-10 03:07:30 +01:00
Behdad Esfahbod 81e321c802 [aat] Try fixing VC bots
c:\projects\harfbuzz\src\hb-aat-layout-common-private.hh(51): error C2872: 'UINT16': ambiguous symbol [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\basetsd.h(80): note: could be 'unsigned short UINT16'
c:\projects\harfbuzz\src\hb-open-type-private.hh(648): note: or       'OT::UINT16'
2018-01-10 02:56:29 +01:00
Behdad Esfahbod 748b989a1f [aat/morx] Implement NoncontextualSubtables
Also makes hb-ot-shape call morx for now instead of GSUB... Just for testing.
2018-01-10 02:50:49 +01:00
Behdad Esfahbod 470fe5b603 [aat] Implement Lookup table
Untested, but compiles.
2018-01-10 02:50:49 +01:00
Behdad Esfahbod 7c7cb42d81 [aat] Update previous commits for rebase on master 2018-01-10 02:50:49 +01:00
Behdad Esfahbod a0175e75bc [aat] Start implementing common table formats 2018-01-10 02:50:49 +01:00
Behdad Esfahbod c71b55a223 [aat] Start implementing Apple AAT morx table 2018-01-10 02:50:49 +01:00