src/hb-ot-kern-table.hh

Branch


Log

Author Commit Date CI Message
Behdad Esfahbod 41c8b99b 2025-10-22T18:47:07 Remove unused var
Behdad Esfahbod 653b7722 2025-08-25T20:15:43 [kern] Simplify Format3 collect_glyphs() (#5505) No idea why I wrote it that way initially.
Behdad Esfahbod 7b8ae3d0 2025-03-13T10:44:40 [kern/kerx] Make zero-malloc
Behdad Esfahbod 9a4601b0 2025-02-04T13:14:04 [kern/kerx] Use hb-set-t for left/right, to guard bsearch Use a set of all left glyphs participating in kerning, and all right glyphs participating in kerning, and use these two to weed out non-kerning pairs before bsearching into the kerns. Speeds up shaping of HelveticaNeue by ~10%.
Behdad Esfahbod 7a890c2e 2024-09-22T13:19:02 Add hb_barrier() to switches of unions https://github.com/harfbuzz/harfbuzz/pull/4864#issuecomment-2366923736
Behdad Esfahbod 3d3c6db4 2024-05-13T11:00:21 [kern] Allow format 1 / 3 in OT-style kern table Otherwise we were failing to sanitize them, and Bad Things were happening after.
Behdad Esfahbod e2ab6c7b 2024-05-12T15:25:13 [kern/kerx] Add accelerator and set-digest filtering
Behdad Esfahbod 7ee7e2e3 2023-11-04T15:02:28 [sanitize] Add remaining hb_barrier() annotations I'm sure I've forgot some. But this is a good start.
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Ebrahim Byagowi 08428a15 2020-04-24T23:45:17 minor, spacing
Ebrahim Byagowi 0558413f 2019-10-01T13:49:55 Minor, tweak spaces
Behdad Esfahbod 12092a46 2019-06-26T13:31:01 [config] Rename HB_NO_SHAPE_AAT to HB_NO_AAT_SHAPE
Behdad Esfahbod 799c6a50 2019-05-10T23:55:22 [config] Add some
Behdad Esfahbod 2c93f0de 2019-05-10T23:31:05 Add HB_NO_AAT Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod 83e3eabd 2019-05-07T20:58:43 Whitespace
Behdad Esfahbod 36bb24f7 2019-05-05T10:14:17 [dispatch] Forward arguments in all dispatch multiplexers
Ebrahim Byagowi 92588782 2019-04-30T13:05:10 Remove space between right angle brackets now that we have C++11 (#1689)
Behdad Esfahbod 5d4b0377 2019-01-22T12:11:24 Convert unsigned enum class consts to static constexpr Part of https://github.com/harfbuzz/harfbuzz/issues/1553
Behdad Esfahbod ef006549 2019-01-22T12:08:57 Convert tag enum class consts to static constexpr Part of https://github.com/harfbuzz/harfbuzz/issues/1553
Behdad Esfahbod 39e1b6d0 2019-01-22T12:07:43 Convert boolean enum class consts to static constexpr Part of https://github.com/harfbuzz/harfbuzz/issues/1553
Ebrahim Byagowi e4120085 2018-12-17T21:31:01 Remove redundant void from C++ sources (#1486)
Ebrahim Byagowi b2ebaa9a 2018-12-16T22:38:10 Remove redundant 'inline' from methods (#1483)
Behdad Esfahbod fb059082 2018-11-30T20:45:40 Revert ugly fixes Now that we have 6daf45e0, revert cryptic hacks... This reverts commit abd81ed4f5cbc5a94171747909bc6b77551cb929. This reverts commit 9c6921c08c905a0cf45ba0182134e6ff910fac51. This reverts commit d39760cabfe4007cefdfc45231e85e93fababac2. This reverts commit fedd8e6c176dea85194693399e50243eb1c117c4. Fixes https://github.com/harfbuzz/harfbuzz/issues/1374
Behdad Esfahbod d39760ca 2018-11-30T15:55:30 One more... Sigh. hb-ot-kern-table.hh: In member function 'int OT::KernSubTableFormat3<KernSubTableHeader>::get_kerning(hb_codepoint_t, hb_codepoint_t) const': hb-ot-kern-table.hh:59: error: ambiguous overload for 'operator[]' in 'kernValue[kernIndex[i]]' hb-ot-kern-table.hh:59: note: candidates are: operator[](T*, int) <built-in> hb-dsalgs.hh:574: note: Type& hb_array_t<Type>::operator[](unsigned int) const [with Type = const OT::IntType<short int, 2u>]
Behdad Esfahbod 5c4fead7 2018-11-29T15:04:34 Convert "static const hb_tag_t" constants to enum
Behdad Esfahbod 9e4138c8 2018-11-29T15:01:10 Convert misc "static const" constants to enum
Behdad Esfahbod 44cbd2ea 2018-11-29T14:53:43 Convert "static const bool" constants to anonymous enum
Behdad Esfahbod 74896226 2018-11-23T11:10:17 [aat] Disable mark advance zeroing if kern table has state-machines Geeza Pro for example, relies on that for fancy mark positioning. Fixes https://github.com/harfbuzz/harfbuzz/issues/1405
Behdad Esfahbod 209b58ef 2018-11-22T01:22:33 Minor
Behdad Esfahbod 3b9fd176 2018-11-22T01:18:55 Disallow taking Null() of unbounded structs Not sure I've marked all such structs. To be done as we discover. Fixes https://github.com/harfbuzz/harfbuzz/issues/1300
Behdad Esfahbod 9af983af 2018-11-07T16:03:09 [kern] Switch to dispatch
Behdad Esfahbod bc06e280 2018-11-07T16:02:40 [kerx/kern] Add has_cross_stream()
Behdad Esfahbod 7a9629f2 2018-11-07T14:52:36 [kerx] Implement CrossStream kerning for non-state-machine subtables Untested.
Behdad Esfahbod 0eb41570 2018-11-07T14:42:15 [kerx] Disable backwards-kerning for non-state-machine tables That's what the spec says for Backwards flag, only applicable to formats 1 and 4.
Behdad Esfahbod 14772da0 2018-11-07T13:40:22 [kern/kerx] Share KernTable, renamed to KerxTable
Behdad Esfahbod db6e658e 2018-11-07T13:33:23 [kern/kerx] More towards sharing KernTable
Behdad Esfahbod 89ec0959 2018-11-07T13:10:05 [kern] Disable Format1 and Format3 for OT-style tables
Behdad Esfahbod ab57bcae 2018-11-07T13:04:21 [kern] Minor
Behdad Esfahbod 30af5b4a 2018-11-07T12:57:10 [kern] Move code
Behdad Esfahbod 1ff30046 2018-11-07T12:51:49 [kern] Massage more
Behdad Esfahbod f8c3df7d 2018-11-07T12:48:06 [kern/kerx] Minor
Behdad Esfahbod f5e0a63a 2018-11-07T12:32:39 [kern/kerx] Towards sharing KernTable
Behdad Esfahbod 33050849 2018-11-07T12:27:44 [kern/kerx] Minor
Behdad Esfahbod 1a5ef849 2018-11-07T12:19:52 [kern/kerx] Share Format2 This, enables Format2 for kern table, which was disabled before.
Behdad Esfahbod d5c0ca21 2018-11-07T12:08:44 [aat] Minor
Behdad Esfahbod 241ba7da 2018-11-07T11:51:40 [morx/kerx] Rename types
Behdad Esfahbod c808e444 2018-11-07T11:28:36 [kern/kerx] Share Format1 subtable
Behdad Esfahbod f5f4ca78 2018-11-07T11:21:09 [kern/kerx] Enable crossStream kerning in vertical CoreText doesn't, but no reason we shouldn't do.
Behdad Esfahbod 5b178535 2018-11-07T10:45:25 [kern/kerx] Share Format0
Behdad Esfahbod c97dde5d 2018-11-07T10:39:39 [kern/kerx] Towards merge more
Behdad Esfahbod 540ccc38 2018-11-07T10:33:46 [kern/kerx] More towards sharing
Behdad Esfahbod d0f8f4c2 2018-11-07T10:25:25 [kern] Move kern machine to hb-kern.hh
Behdad Esfahbod befac337 2018-11-07T09:53:02 [kern] Remove Override business Not used in any fonts. Not well-specified when mixing kerning with Cross-Stream positioning.
Behdad Esfahbod 59e04e42 2018-11-07T00:25:48 [kern/kerx] Fix cursive joining Tested with Waseem TTC: $ hb-shape Waseem.ttc جحخج [F1Jeem_R2=3@0,180+479|M1Khah_L2_R2=2@0,682+403|M1Hah_L2_R2=1@0,1184+403|I1Jeem_L2=0@0,1184+744]
Behdad Esfahbod 8d0f7971 2018-11-07T00:04:40 [kern/kerx] Fix "reset" magic value
Behdad Esfahbod 80a33b9a 2018-11-06T21:41:28 [kern] More tweaks Solves a mystery or two. I'm fairly confident this is what CoreText does now.
Behdad Esfahbod 564e8ac0 2018-11-06T21:04:40 [kern] Adjust some more Getting closer. So many open questions still...
Behdad Esfahbod 9810f0b8 2018-11-06T19:24:04 [kern] Minor
Behdad Esfahbod 9c04b605 2018-11-06T18:35:58 [kern] In Format1, adjust how kerning is done In a series of kerns in one action, kern all but last glyph forward, and the last one backward. Seems to better match what CoreText is doing. Test cases, with GeezaPro Arabic: $ ./hb-shape GeezaPro_10_10.ttc -u U+0631,U+0628 [u0628.beh=1+1415|u0631.reh=0@-202,0+700] $ ./hb-shape GeezaPro_10_10.ttc -u U+0628,U+064F [u064f.damma=0@0,-250+-250|u0628.beh=0@250,0+1665] In a later change, I'll make kern machine avoid producing negative kerns.
Behdad Esfahbod e8c47724 2018-11-06T17:16:04 [kern] XXX Negate CrossKerning sign Not sure why, but seems to better match GeezaPro Arabic w CoreText. Quite possibly I'm doing something very wrong...
Behdad Esfahbod 4d003b85 2018-11-06T21:04:02 [kern] Add TODO
Behdad Esfahbod 01bf43ac 2018-11-06T14:48:42 [kern] Implement CrossStream kerning
Behdad Esfahbod b11830c0 2018-11-06T15:23:18 [kern] Improve Format 2 Still disabled.
Behdad Esfahbod 10e6f708 2018-11-06T13:32:13 [kern] Minor
Behdad Esfahbod 220a5991 2018-11-06T13:51:39 [kern/kerx] Fix trace numbering
Behdad Esfahbod 164eedd9 2018-11-06T13:18:27 [kern] Minor
Behdad Esfahbod 213fa3bf 2018-11-06T12:07:15 [kern] Refactor to include header in each subtable type
Behdad Esfahbod b0da2cd0 2018-11-06T11:16:45 [kern] Some more
Behdad Esfahbod 75b00b51 2018-11-06T11:13:40 [kern] Renames
Behdad Esfahbod bfafe208 2018-11-06T12:11:45 [kern] Switch to dispatch
Behdad Esfahbod b605db2f 2018-11-04T12:58:02 [aat] Clean up ankr table include mess
Behdad Esfahbod 8d98c51d 2018-11-03T15:14:57 [kern] Third try fix access violation in Format3 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11245
Behdad Esfahbod f074da8c 2018-11-03T15:06:45 [kern] Really fix access violation in Format3 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11245
Behdad Esfahbod 0589787f 2018-11-03T14:58:54 [kern] Fix access violation in Format3 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11245
Behdad Esfahbod 8034d1dd 2018-11-02T14:47:42 [kern] Implement Format1 Also, implement backwards kerning for Format1 in kern and kerx. Fixes https://github.com/harfbuzz/harfbuzz/issues/1350
Behdad Esfahbod 46b3885c 2018-11-02T14:43:38 [kern] Set subtable on sanitizer
Behdad Esfahbod 74c7a2c6 2018-11-02T14:26:04 [kern] Respect more flags
Behdad Esfahbod 9f880bad 2018-11-02T13:57:41 [kern] Minor We like check_struct() more.
Behdad Esfahbod f1df441b 2018-11-02T13:26:15 [kern] Comment
Behdad Esfahbod 095f5add 2018-11-02T13:23:54 [kern] Push apply loop to each subtable
Behdad Esfahbod 949dad89 2018-11-02T12:47:55 [kern] Remove accelerator It wasn't doing anything.
Behdad Esfahbod 6e06fe16 2018-11-02T11:56:55 [kern] Implement Format3 Untested.
Behdad Esfahbod a4a7a623 2018-11-02T11:16:43 [kern] Add buffer message
Behdad Esfahbod 661340c4 2018-10-16T13:24:29 [kern] Scale kern pairs before applying Fixes https://github.com/harfbuzz/harfbuzz/issues/1255 Fixes https://github.com/harfbuzz/harfbuzz/issues/1252
Behdad Esfahbod 62376a7d 2018-10-14T15:20:50 Ignore signed-integer-overflow while kerning Fixes https://github.com/harfbuzz/harfbuzz/issues/1247
Behdad Esfahbod 5d34164d 2018-10-10T18:14:41 [kern/kerx] Fix offset base Disable kern Format2. Fix kerx Format2. Manually tested this with Tamil MN font and it works: $ HB_OPTIONS=aat ./hb-shape Tamil\ MN.ttc -u 0B94,0B95 [tgv_au=0+3435|tgc_ka=1@-75,0+1517] HB_OPTIONS=aat ./hb-shape Tamil\ MN.ttc -u 0B94,0B95 --features=-kern [tgv_au=0+3510|tgc_ka=1+1592]
Behdad Esfahbod 0537a401 2018-10-09T23:35:07 [kerx] Comment
Behdad Esfahbod 27db8594 2018-10-09T22:52:41 [kern/kerx] Adjust bounds check
Behdad Esfahbod 4df8eb20 2018-10-09T22:46:12 [kern] Use kern subtable length for sanitizing in the accelerator
Behdad Esfahbod 8bff1d29 2018-10-09T22:39:31 [kern] Minor
Behdad Esfahbod 210f899a 2018-10-09T21:56:37 [kern] Sanitize 4 bytes, not 2
Behdad Esfahbod 977c8a8e 2018-10-09T00:22:08 [kern] Minor
Behdad Esfahbod a5195881 2018-10-08T23:57:45 Apply TrueType/OpenType kern table when GPOS kern feature is not available Fixes https://github.com/harfbuzz/harfbuzz/issues/250
Behdad Esfahbod 3c23ff9b 2018-10-08T23:26:26 [kern] Add kerning driver to TT kern table
Behdad Esfahbod 683c3a95 2018-10-08T23:09:48 [kern] Abstract away kerning machine
Behdad Esfahbod d62b4011 2018-10-07T22:58:06 [kern] Shout less
Behdad Esfahbod 8aa83d97 2018-10-07T22:43:59 [kern/kerx] Fix Format2 offsetting "The values in the right class table are stored pre-multiplied by the number of bytes in a single kerning value, and the values in the left class table are stored pre-multiplied by the number of bytes in one row. This eliminates needing to multiply the row and column values together to determine the location of the kerning value. The array can be indexed by doing the right- and left-hand class mappings, adding the class values to the address of the array, and fetching the kerning value to which the new address points."
Behdad Esfahbod dff2c45f 2018-09-10T23:29:26 Port rest from VAR to UnsizedArrayOf<>
Behdad Esfahbod 9507b05a 2018-09-10T23:18:07 Simplify sanitize->check_array() Fix a bug in CBDT sanitize, and redundant check in avar.
Behdad Esfahbod 3a0b3a29 2018-08-26T15:11:24 Free up hb-ot-face.hh from includes There might be a better way to do this, but I couldn't find...