|
6c222764
|
2018-05-25T16:21:27
|
|
Add HB_DISALLOW_COPY_AND_ASSIGN
|
|
f673cfbd
|
2018-05-07T13:58:32
|
|
Support scripts that are written both LTR and RTL
Right now only Old Italic is marked as such.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1000
|
|
a60ba796
|
2018-05-01T19:01:25
|
|
s/finish/fini
For consistency.
|
|
ac2ece3e
|
2018-03-07T15:52:42
|
|
[ot] Comment out AAT include
|
|
1ab16f45
|
2018-02-24T12:49:42
|
|
[aat] Implement trak logic (#816)
|
|
eada749e
|
2018-02-21T00:35:23
|
|
Use HB_SET_VALUE_INVALID consistently
|
|
046690a4
|
2018-01-17T16:59:55
|
|
[aat] Add hb_aat_apply_context_t
|
|
fd034490
|
2018-01-17T16:46:51
|
|
Rename hb_apply_context_t to hb_ot_apply_context_t
|
|
ee16b9d8
|
2018-01-12T11:28:09
|
|
Revert accidental morx enablement
|
|
cdfa801f
|
2018-01-12T11:12:20
|
|
[aat] Tweak previous commit
|
|
3b1e97f3
|
2018-01-10T03:35:20
|
|
Add HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES
New API:
HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES
hb-shape / hb-view --remove-default-ignorables
One more text-rendering-tests test passing. Eleven failing.
|
|
0ed69c94
|
2018-01-10T02:49:36
|
|
Disable processing of morx table in ot shaper
So I can merge this to master...
|
|
748b989a
|
2018-01-09T17:55:17
|
|
[aat/morx] Implement NoncontextualSubtables
Also makes hb-ot-shape call morx for now instead of GSUB... Just for testing.
|
|
4cf3ab1d
|
2018-01-09T16:32:58
|
|
Minor
|
|
7c6937e7
|
2017-11-20T14:49:22
|
|
Move all references of old url to the new address (#622)
|
|
baf7779d
|
2017-11-14T21:53:48
|
|
Limit how much recursion GSUB/GPOS does
This only counts recursions right now. Good start.
Hopefully...
Fixes https://github.com/behdad/harfbuzz/issues/429
|
|
8b9d9b71
|
2017-10-22T17:48:06
|
|
Fix set initialization issues
|
|
dbdbfe3d
|
2017-10-15T12:11:08
|
|
Use nullptr instead of NULL
|
|
9786fcd8
|
2017-10-03T17:22:43
|
|
Fix GPOS v_origin ordering
This should affect mark attachment in vertical text. I have no font to test,
but this sounds the right order.
Noticed while debugging https://github.com/behdad/harfbuzz/issues/532
|
|
7cc34804
|
2017-09-04T20:04:59
|
|
[unsafe-to-break] Fix unsafe-to-break for cluster-level=1
Fixes tests/shaping/tests/cluster.tests
|
|
c449d2d8
|
2017-08-30T17:28:22
|
|
[unsafe-to-break] Mark during fraction-slash formation
Fixes tests/automatic-fractions.tests
|
|
1c17c2bd
|
2017-08-11T19:06:07
|
|
[unsafe-to-break] Copy flag to all glyphs in a cluster
Makes consumption easier.
|
|
e2a2b5b2
|
2017-08-10T20:10:12
|
|
[unsafe-to-break] Be careful with flag propagation when merging clusters
|
|
5aec2fb8
|
2017-03-02T11:46:33
|
|
Remove TODO item that is not going to happen
|
|
466b3e58
|
2017-02-03T16:43:25
|
|
Shuffle things around a bit
|
|
2452543f
|
2017-01-18T22:48:13
|
|
[ot] Fix automatic fraction for RTL scripts (#405)
The numbers for right-to-left scripts are processed also from right to
left, so the order of applying “numr” and “dnom” features should be
reversed in such case.
Fixes https://github.com/behdad/harfbuzz/issues/395
|
|
e2b87805
|
2016-12-22T14:40:19
|
|
Disable OTL processing for Hebrew if GPOS doesn't have Hebrew subtable
New approach to fix this:
https://github.com/behdad/harfbuzz/commit/69f9fbc4200442a35484d3c790ae8f4979be5d60
Previous approach was reverted as it was too broad. See context:
https://github.com/behdad/harfbuzz/issues/347#issuecomment-267838368
With U+05E9,U+05B8,U+05C1,U+05DC and Arial Unicode, we now (correctly) disable
GDEF and GPOS, so we get results very close to Uniscribe, but slightly different
since our fallback position logic is not exactly the same:
Before: [gid1166=3+991|gid1142=0+737|gid5798=0+1434]
After: [gid1166=3+991|gid1142=0@402,-26+0|gid5798=0+1434]
Uniscribe: [gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434]
|
|
1a0f4aa6
|
2016-12-22T13:33:54
|
|
Revert "Synthesize GDEF glyph class for any glyph that does not have one in GDEF"
This reverts commit 69f9fbc4200442a35484d3c790ae8f4979be5d60.
See https://github.com/behdad/harfbuzz/issues/347#issuecomment-268873401
Fixes https://github.com/behdad/harfbuzz/issues/347
|
|
0aedfd59
|
2016-09-28T17:05:43
|
|
[GX] Apply 'rvrn' feature before any other feature
|
|
72ada4f0
|
2016-09-10T03:57:24
|
|
[GX] Hook up feature variations
Shape-plan caching is not implemented.
|
|
69f9fbc4
|
2016-03-17T11:59:43
|
|
Synthesize GDEF glyph class for any glyph that does not have one in GDEF
Previously we only synthesized GDEF glyph classes if the glyphClassDef
array in GDEF was null. This worked well enough, and is indeed what
OpenType requires: "If the font does not include a GlyphClassDef table,
the client must define and maintain this information when using the
GSUB and GPOS tables." That sentence does not quite make sense since
one needs Unicode properties as well, but is close enough.
However, looks like Arial Unicode as shipped on WinXP, does have GDEF
glyph class array, but defines no classes for Hebrew. This results
in Hebrew marks not getting their widths zeroed. So, with this change,
we synthesize glyph class for any glyph that is not specified in the
GDEF glyph class table. Since, from our point of view, a glyph not
being listed in that table is a font bug, any unwanted consequence of
this change is a font bug :).
Note that we still don't get the same rendering as Uniscribe, since
Uniscribe seems to do fallback positioning as well, even though the
font does have a GPOS table (which does NOT cover Hebrew!). We are
not going to try to match that though.
Test string for Arial Unicode:
U+05E9,U+05B8,U+05C1,U+05DC
Before: [gid1166=3+991|gid1142=0+737|gid5798=0+1434]
After: [gid1166=3+991|gid1142=0+0|gid5798=0+1434]
Uniscribe: [gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434]
Note that our new output matches what we were generating until July
2014, because the Hebrew shaper used to zero mark advances based on
Unicode, NOT GDEF. That's 9e834e29e0b657f0555df1ab9cea79ff7abcf08d.
Reported by Greg Douglas.
|
|
8b5bc141
|
2016-02-24T19:05:23
|
|
Add get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
New API:
- hb_font_get_nominal_glyph_func_t
- hb_font_get_variation_glyph_func_t
- hb_font_funcs_set_nominal_glyph_func()
- hb_font_funcs_set_variation_glyph_func()
- hb_font_get_nominal_glyph()
- hb_font_get_variation_glyph()
Deprecated API:
- hb_font_get_glyph_func_t
- hb_font_funcs_set_glyph_func()
Clients that implement their own font-funcs are encouraged to replace
their get_glyph() implementation with a get_nominal_glyph() and
get_variation_glyph() pair. The variation version can assume that
variation_selector argument is not zero.
|
|
815bdd77
|
2016-02-22T18:22:44
|
|
In cluster-level=0, group ZWJ/ZWNJ with previous cluster
This better emulates Unicode grapheme clusters.
Note that Uniscribe does NOT do this, but should be harmless with most clients,
and improve fallback with clients that use HarfBuzz cluster as unit of fallback.
Fixes https://github.com/behdad/harfbuzz/issues/217
|
|
89137e32
|
2016-02-22T16:00:59
|
|
Minor
|
|
62c27111
|
2016-02-22T15:07:20
|
|
[coretext] Limit grapheme-cluster forming to cluster-level=0
|
|
7d8d58ac
|
2016-02-11T16:34:28
|
|
[GPOS] Divide position_finish() into two phases, for advances and offsets
Right now the position_finish_advances() is empty. To be used for
spacing attachments proposal later.
|
|
84742315
|
2016-02-11T16:27:41
|
|
[ot] Minor shuffling code around
|
|
660c9d3f
|
2016-02-11T12:14:27
|
|
Remove font-dependent ASCII-only perf hack
Is confusing. I already hit it myself. Remove. We can optimize
ASCII based on Unicode properties. But should not do based on
assumptions on the font.
|
|
eaadcbbc
|
2016-02-10T18:29:54
|
|
Remove now-unused mark zeroing BY_UNICODE
|
|
35d18585
|
2015-11-26T19:30:37
|
|
Fix a few docs blocks
|
|
ea512f71
|
2015-11-26T19:22:22
|
|
Use C-style casts instead of compare to 0, to convert hb_bool_t to bool
|
|
67a36a72
|
2015-11-26T18:48:42
|
|
Fix vertical GPOS
This was brorken earlier, though, it's really hard to notice it.
Unlike the glyph_h_origin(), an unset glyph_v_origin() does NOT
mean that the vertical origin is at 0,0.
Related to https://github.com/behdad/harfbuzz/issues/187
|
|
766963ad
|
2015-11-24T15:38:43
|
|
Merge pull request #114 from ThePhD/vc++-fixes
Fix all VC++ warnings and errors
|
|
abadc171
|
2015-11-18T17:52:08
|
|
Try to better handle OOM situations
Fixes assert fail in https://github.com/behdad/harfbuzz/issues/161
with libharfbuzz-fuzzing.
|
|
4301703b
|
2015-11-05T23:44:59
|
|
Limit buffer max size growth
https://github.com/behdad/harfbuzz/issues/161
|
|
13686337
|
2015-11-05T13:24:15
|
|
Add new shaper method postprocess_glyphs()
Unused currently. To be used for Syriac stretch implementation.
https://github.com/behdad/harfbuzz/issues/141
|
|
e95eb23a
|
2015-11-04T22:55:11
|
|
Don't try zeroing marks by GDEF if there are no non-ASCII
This one is a hack, but should be ok.
|
|
7fa54ed7
|
2015-11-04T22:54:49
|
|
Don't try zeroing mark attachments by Unicode if there's no non-ASCII
|
|
0f407325
|
2015-11-04T22:28:44
|
|
Minor
|
|
497a6c20
|
2015-11-04T22:24:19
|
|
Skip forming clusters if text is all ASCII
|
|
5bc28b5f
|
2015-11-04T21:53:16
|
|
Optimize positioning for when h_origin is nil
|
|
bee901b3
|
2015-11-04T19:28:17
|
|
Optimize positioning direction calculations
It makes the binary smaller AND faster. Yumm!
|
|
e3e4bb01
|
2015-11-04T18:58:02
|
|
Don't do fractions if buffer is ASCII-only
|
|
6986208b
|
2015-11-04T18:46:22
|
|
Optimize runs without Default_Ignorable's
Now that we have a buffer-wide scratch flags facility, use it to
optimize away a few passes.
|
|
49ef6309
|
2015-11-04T17:27:07
|
|
Adjust the width of various spaces if font does not cover them
See discussion here:
https://github.com/behdad/harfbuzz/commit/81ef4f407d9c7bd98cf62cef951dc538b13442eb
There's no way to disable this fallback, but I don't think it would
be needed. Let's hope for the best!
Fixes https://github.com/behdad/harfbuzz/issues/153
|
|
aa7044de
|
2015-11-04T16:25:57
|
|
Generalize flags types
|
|
f883de66
|
2015-09-01T16:23:40
|
|
[OT] Merge /before/ reordering
|
|
e47b772a
|
2015-08-18T18:42:47
|
|
[ot] Change buffer content type right after we map to glyphs
Needed for upcoming debug output changes.
|
|
5c99cf93
|
2015-08-14T01:02:00
|
|
Merge branch 'master' into vc++-fixes
|
|
0f98fe88
|
2015-07-23T11:52:11
|
|
[ot] Search globally for 'vert' feature if not found in specified script/lang
Fixes https://github.com/behdad/harfbuzz/issues/63
|
|
f327aacf
|
2015-07-23T11:32:59
|
|
[ot] Minor
|
|
8cfbc304
|
2015-07-22T18:41:10
|
|
Fix hide-default-ignorables after f0010dfd01ef4a927b0bdc175dd4e343a8637174
We can't delete things before hb_ot_layout_position_finish(). So,
just zero the advance before it, and remove later.
|
|
2dbd3d29
|
2015-07-22T18:28:39
|
|
Fix hide-ignorables if font doesn't have space glyph
Was broken by 82b521aeb7cc73879b44ca4278d6fa8b4347527f, as we have
positioning data by then and can't use the output buffer. Ouch!
|
|
4ba796b2
|
2015-07-22T17:41:31
|
|
Refactor _hb_glyph_info_is_default_ignorable()
|
|
f0010dfd
|
2015-07-22T17:36:23
|
|
[ot] Hide default-ignorables before finishing off positioning
For example, fixes the following sequence with Arial XP:
628 25cc 651 25cc 64e 3a 20 628 651 34f 64e
628 25cc 64e 25cc 651 3a 20 628 64e 34f 651
Discovered as part of:
https://bugs.freedesktop.org/show_bug.cgi?id=85873
|
|
376d587f
|
2015-07-22T16:51:12
|
|
Implement more granular cluster-merging
TODO: Documentation.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445
|
|
a60e2cfa
|
2015-07-22T15:49:08
|
|
[ot] Don't rely on cluster numbers for ensure_native_direction()
|
|
701112da
|
2015-07-22T15:42:20
|
|
[ot] Simplify form_clusters()
|
|
7b8b63ad
|
2015-07-22T15:24:26
|
|
[ot] Don't mirror character if font doesn't support mirrored character!
|
|
8e545d59
|
2015-06-22T22:29:04
|
|
Fix all VC++ warnings and errors in the current commit's builds.
|
|
5f13bbd9
|
2015-06-19T13:31:49
|
|
When removing default-ignorables, merge clusters
Fixes test-shape, and:
https://code.google.com/p/chromium/issues/detail?id=497578
|
|
82b521ae
|
2015-06-19T11:57:57
|
|
Rewrite hide_default_ignorables
Separate the loops for the two cases of replacing with space
and deleting. For deleting, use the out-buffer machinery.
Needed for upcoming cluster merge fix.
|
|
01c3a885
|
2015-06-01T13:22:01
|
|
Fix "Since:" tags
Based on data from http://upstream-tracker.org/versions/harfbuzz.html
Resolves #103
|
|
982d94ea
|
2015-01-28T10:51:33
|
|
[coretext] Don't generate notdef glyph for default-ignorables
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
|
|
8f3eebf7
|
2014-08-02T17:18:46
|
|
Make sure gsubgpos buffer vars are available during fallback_position
Add buffer var allocation asserts to a few key places.
|
|
2053f369
|
2014-08-02T16:31:16
|
|
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.
|
|
763e5466
|
2014-08-02T16:17:44
|
|
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.
|
|
595d2b96
|
2014-07-26T18:44:15
|
|
Minor
|
|
7cd33f23
|
2014-07-17T14:22:11
|
|
Micro optimization
|
|
3b861421
|
2014-07-16T13:22:05
|
|
Fix Mongolian Variation Selectors for fonts without GDEF
Originally we fixed those in 79d1007a501fd63c0ba4d51038c513e6b8b94740.
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
|
|
878a2537
|
2014-07-16T13:21:26
|
|
Minor
|
|
ec181e50
|
2014-07-16T13:10:03
|
|
Minor moving around
|
|
7627100f
|
2014-07-11T14:54:42
|
|
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.
|
|
798e4185
|
2014-06-10T13:10:30
|
|
When zeroing mark widths for LTR, also adjust offset...
...so that they overstrike preceding glyph.
https://github.com/behdad/harfbuzz/pull/43
|
|
8de20b1e
|
2014-01-02T14:30:45
|
|
Add font->has_glyph()
|
|
5497a8a2
|
2013-12-22T20:48:53
|
|
Cache various masks on the shape plan
|
|
a7e8bbb0
|
2013-12-22T19:33:35
|
|
Minor fraction mask setting improvement
|
|
76fff252
|
2013-12-22T17:55:59
|
|
Don't form fractions if only one of numr/dnom exist
|
|
3aeee519
|
2013-12-22T16:17:54
|
|
Bug 72698 - Automatically support frac / numr / dnom
When seeing U+2044 FRACTION SLASH in the text, find decimal
digits (Unicode General Category Decimal_Number) around it,
and mark the pre-slash digits with 'numr' feature, the post-slash
digits with 'dnom' feature, and the whole sequence with 'frac'
feature.
This beautifully renders fractions with major Windows fonts,
and any other font that implements those features (numr/dnom is
enough for most fonts.)
Not the fastest way to do this, but good enough for a start.
|
|
73932517
|
2013-12-21T00:18:18
|
|
Initialize masks before mirroring
We were throwing away the rtlm feature mask set during
mirroring...
|
|
71b4c999
|
2013-10-28T00:20:59
|
|
Revert "Zero marks by GDEF for Tibetan"
This reverts commit d5bd0590ae2fbc7b0dee86385a565aef00ffb835.
The reasoning behind that logic was flawed and made under
a misunderstanding of the original problem, and caused
regressions as reported by Jonathan Kew in thread titled
"tibetan marks" in Oct 2013. Apparently I have had fixed
the original problem with this commit:
7e08f1258da229dfaf7e1c4b5c41e5bb83906cb0
So, revert the faulty commit and everything seems to be in good
shape.
|
|
ac8cd511
|
2013-10-18T19:33:09
|
|
Refactor
|
|
d5bd0590
|
2013-10-18T16:44:54
|
|
Zero marks by GDEF for Tibetan
See:
http://lists.freedesktop.org/archives/harfbuzz/2013-April/003101.html
|
|
a1f7b285
|
2013-10-18T01:09:08
|
|
[otlayout] Switch over from old is_a_ligature() to IS_LIGATED
Impact should be minimal and positive.
|
|
101303db
|
2013-10-18T00:42:39
|
|
[otlayout] More shuffling around
|
|
91689de2
|
2013-10-18T00:21:59
|
|
[otlayout] Add _hb_glyph_info_set_glyph_props()
No functional change.
|
|
3ddf892b
|
2013-10-18T00:02:43
|
|
[otlayout] Renaming
|
|
3d2c4f0c
|
2013-09-27T17:06:29
|
|
Fix hiding of default_ignorables if font doesn't have space glyph
Based on patch from Jonathan Kew. See discussion on the list.
|
|
4b011094
|
2013-09-13T20:17:42
|
|
Move code around
I believe I didn't break anything...
|
|
d71c0df2
|
2013-08-09T09:28:32
|
|
Remove vrt2, vkrn, vpal, and valt from default vertical features
See thread by John Dagget on the list.
|