|
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.
|
|
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!
|
|
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.
|
|
d785fa0c
|
2013-05-20T09:18:52
|
|
Minor refactoring
|
|
127daf15
|
2013-05-20T09:11:35
|
|
Arabic mark width-zeroing regression
Mozilla Bug 873902 - Display Arabic text with diacritics is bad
https://bugzilla.mozilla.org/show_bug.cgi?id=873902
|
|
ba87b8fc
|
2013-02-21T15:23:39
|
|
Move code around
|
|
c462b32d
|
2013-02-15T07:51:47
|
|
Disable automatic segment properties guessing
Before, if one called hb_shape() without setting script, language, and
direction on the buffer, hb_shape() was calling
hb_buffer_guess_segment_properties() on the user's behalf to guess
these.
This is very dangerous, since any serious user of HarfBuzz must set
these properly (specially important is direction). So now, we don't
guess properties by default. People not setting direction will get
an abort() now. If the old behavior is desired (fragile, good for
simple testing only), users can call
hb_buffer_guess_segment_properties() on the buffer just before calling
hb_shape().
|
|
038c98f6
|
2013-02-15T07:41:07
|
|
Allow disabling of TrueType kerning
Responds to the same feature tag that GPOS kerning does:
'kern' for horizontal and 'vkrn' for vertical.
|
|
ee9c3a17
|
2013-02-15T06:22:26
|
|
Minor refactoring
|
|
ec544866
|
2013-02-14T11:25:10
|
|
Add hb_ot_map_feature_flags_t
Code cleanup. No (intended) functional change.
|
|
e7ffcfaf
|
2013-02-14T11:05:56
|
|
Clean-up add_bool_feature
|
|
0291a652
|
2013-02-13T05:57:24
|
|
Further adjust mark advance zeroing
This is a followup to 568000274c8edb5f41bc4f876ce21fcc8bdaeed8.
Looks like in the Latin shaper, Uniscribe zeroes all Unicode NSM
advances *after* GPOS, not before. Match that.
Can be tested using DejaVu Sans Mono, since that font has GPOS
rules to zero the mark advances on its own.
|
|
56800027
|
2013-02-12T09:44:57
|
|
Adjust mark advance-width zeroing logic for Myanmar
Before, we were zeroing advance width of attached marks for
non-Indic scripts, and not doing it for Indic.
We have now three different behaviors, which seem to better
reflect what Uniscribe is doing:
- For Indic, no explicit zeroing happens whatsoever, which
is the same as before,
- For Myanmar, zero advance width of glyphs marked as marks
*in GDEF*, and do that *before* applying GPOS. This seems
to be what the new Win8 Myanmar shaper does,
- For everything else, zero advance width of glyphs that are
from General_Category=Mn Unicode characters, and do so
before applying GPOS. This seems to be what Uniscribe does
for Latin at least.
With these changes, positioning of all tests matches for Myanmar,
except for the glitch in Uniscribe not applying 'mark'. See preivous
commit.
|
|
51bb498b
|
2012-11-16T14:08:05
|
|
Minor
|
|
5a08ecf9
|
2012-11-16T13:34:29
|
|
Implement hb_ot_layout_get_glyph_class()
|
|
eba312c8
|
2012-11-16T12:39:23
|
|
Plumbing to get shape plan and font into complex decompose function
So we can handle Sinhala split matras smartly... Coming soon.
|
|
3f82f8ff
|
2012-11-15T18:45:31
|
|
Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties()
|
|
f3064103
|
2012-11-15T18:39:46
|
|
Bunch of independent changes (ouch)
API additions:
hb_segment_properties_t
HB_SEGMENT_PROPERTIES_DEFAULT
hb_segment_properties_equal()
hb_segment_properties_hash()
hb_buffer_set_segment_properties()
hb_buffer_get_segment_properties()
hb_ot_layout_glyph_class_t
hb_shape_plan_t
hb_shape_plan_create()
hb_shape_plan_create_cached()
hb_shape_plan_get_empty()
hb_shape_plan_reference()
hb_shape_plan_destroy()
hb_shape_plan_set_user_data()
hb_shape_plan_get_user_data()
hb_shape_plan_execute()
hb_ot_shape_plan_collect_lookups()
API changes:
Rename hb_ot_layout_feature_get_lookup_indexes() to
hb_ot_layout_feature_get_lookups().
New header file:
hb-shape-plan.h
And a bunch of prototyped but not implemented stuff. Coming soon.
(Tests fail because of the prototypes right now.)
|
|
aec89de5
|
2012-11-15T16:15:42
|
|
Add / modify set API a bit
|
|
865745b5
|
2012-11-14T13:48:26
|
|
Don't do fallback positioning for Indic and Thai shapers
|
|
0c7df222
|
2012-11-13T14:42:35
|
|
Add buffer flags
New API:
hb_buffer_flags_t
HB_BUFFER_FLAGS_DEFAULT
HB_BUFFER_FLAG_BOT
HB_BUFFER_FLAG_EOT
HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
hb_buffer_set_flags()
hb_buffer_get_flags()
We use the BOT flag to decide whether to insert dottedcircle if the
first char in the buffer is a combining mark.
The PRESERVE_DEFAULT_IGNORABLES flag prevents removal of characters like
ZWNJ/ZWJ/...
|
|
0736915b
|
2012-11-13T12:35:35
|
|
[Indic] Decompose Sinhala split matras the way old HarfBuzz / Pango did
Had to do some refactoring to make this happen...
Under uniscribe bug compatibility mode, we still plit them
Uniscrie-style, but Jonathan and I convinced ourselves that there is no
harm doing this the Unicode way. This change makes that happen, and
unbreaks free Sinhala fonts.
|
|
9b37b4c5
|
2012-11-12T18:23:38
|
|
Make planner available to complex shaper choosing logic
|
|
cf3afd89
|
2012-10-25T16:32:54
|
|
Rename and revamp is_zero_width() to be is_default_ignorable()
That's really the logic desired. Except that MONGOLIAN VOWEL SEPARATOR
is not default_ignorable but it really should be. Reported to Unicode.
Based on suggestion from Konstantin Ritt.
|
|
fecdfa95
|
2012-10-07T17:19:58
|
|
Fixup hb_ot_shape_closure()
Broke it when merged cmap mapping and normalizer. Ouch!
|
|
f2eb3fa9
|
2012-09-25T21:35:35
|
|
[OT] Only insert dottedcircle if at the beginning of paragraph
If the first char in the run is a combining mark, but there is text
before the run, don't insert dottedcircle.
Part of addressing:
https://bugzilla.redhat.com/show_bug.cgi?id=858736
|
|
028a1706
|
2012-09-06T14:25:48
|
|
Refactor common macro
|
|
fabd3113
|
2012-09-05T22:19:28
|
|
[OT] Port Arabic fallback shaping to synthetic GSUB
All of init/medi/fina/isol and rlig implemented.
Let there be dragons... ⻯
|
|
6912e476
|
2012-09-01T20:38:45
|
|
[OT] Insert dotted-circle for run-initial marks
Unfortunately if the font has GPOS and 'mark' feature does
not position mark on dotted-circle, our inserted dotted-circle
will not get the mark repositioned to itself. Uniscribe cheats
here.
If there is no GPOS however, the fallback positioning kicks in
and sorts this out.
I'm not willing to address the first case.
|
|
3992b5ec
|
2012-09-01T19:20:41
|
|
Move code around
|
|
784f29d0
|
2012-08-31T14:06:26
|
|
Minor
|
|
0ccf9b64
|
2012-08-29T11:53:26
|
|
Move code around
|
|
2fcbbdb4
|
2012-08-29T11:11:54
|
|
Port Arabic fallback ligating to share code with GSUB
This will eventually allow us to skip marks, as well as (fallback)
attach marks to ligature components of fallback-shaped Arabic.
That would be pretty cool. I kludged GDEF props in, so mark-skipping
works, but the produced ligature id/components will be cleared later
by substitute_start() et al.
Perhaps using a synthetic table for Arabic fallback shaping was a better
idea. The current approach has way too many layering violations...
|
|
9f9f04c2
|
2012-08-11T18:34:13
|
|
[OT] Unbreak Thai shaping and fallback Arabic shaping
The merger of normalizer and glyph-mapping broke shapers that
modified text stream. Unbreak them by adding a new preprocess_text
shaping stage that happens before normalizing/cmap and disallow
setup_mask modification of actual text.
|
|
07d68280
|
2012-08-10T03:28:50
|
|
Minor
|
|
b00321ea
|
2012-08-09T22:33:32
|
|
[OT] Avoid calling get_glyph() twice
Essentially move the glyph mapping to normalization process.
The effect on Devanagari is small (but observable). Should be more
observable in simple text, like ASCII.
|
|
12c0875e
|
2012-08-09T22:00:53
|
|
[OT] Remove redundant check
|
|
5c60b70c
|
2012-08-09T21:58:07
|
|
[OT] More code shuffling around
Preparing for merging map_glyphs() and normalize().
|
|
a02d8648
|
2012-08-08T18:04:29
|
|
Add check-exported-symbols.sh
And misc linking fixes.
|
|
4c8ac4f4
|
2012-08-08T17:44:19
|
|
Misc minor fixes
|
|
9c929abd
|
2012-08-08T14:33:37
|
|
Minor renaming
|
|
affaf8a0
|
2012-08-07T22:41:38
|
|
[OT] Start adding fallback positioning
Used when there is no GPOS.
|
|
7e4920fd
|
2012-08-07T22:32:23
|
|
Minor
|
|
f4e48adc
|
2012-08-07T21:12:49
|
|
[OT] Apply 'rclt' feature in horizontal mode
'rclt' is "Required Contextual Forms" being proposed by Microsoft.
It's like 'calt', but supposedly always on. We apply 'calt' anyway,
and now apply this too.
|
|
71baea00
|
2012-08-03T17:40:07
|
|
[OT] Use general-category, not GDEF class, to decide to zero mark advances
At this point, the GDEF glyph synthesis looks pointless. Not that I
have many fonts without GDEF lying around.
As for mark advance zeroing when GPOS not available, that also is being
replaced by proper fallback mark positioning soon.
|
|
a8c6da90
|
2012-08-02T10:46:34
|
|
[OT] Add per-complex-shaper shape_plan data
Hookup some Indic data to it. More to come.
|
|
8bb5deba
|
2012-08-02T10:07:58
|
|
[OT] Pipe shape_plan down to pause_callbacks
|
|
16c6a27b
|
2012-08-02T09:38:28
|
|
[OT] Port complex_shaper to planner/plan
|
|
5393e3a6
|
2012-08-02T09:24:35
|
|
[OT] Minor refactoring
|