Ebrahim Byagowi
874421203e
[coretext] Speculative fix for CoreText nullptr access ( #288 )
2016-07-11 16:19:21 -07:00
Behdad Esfahbod
fc9de44a03
Comments
2016-06-30 09:46:52 -07:00
Dominik Röttsches
a0223274b9
Discard reconfigured CTFont if URL changes
...
Fixes https://github.com/behdad/harfbuzz/issues/267
2016-06-16 14:19:39 +02:00
Behdad Esfahbod
59089622db
[coretext] Clarify comment
2016-04-04 14:56:15 -07:00
Behdad Esfahbod
89137e325a
Minor
2016-02-22 16:00:59 +09:00
Behdad Esfahbod
15063b12f7
[coretext] Move CTFont construction to face_data
2016-02-22 15:56:29 +09:00
Behdad Esfahbod
ba3d49d9a5
[coretext] Move code around
2016-02-22 15:50:12 +09:00
Behdad Esfahbod
90194efb84
[coretext] Move code around
2016-02-22 15:42:53 +09:00
Behdad Esfahbod
238b943e85
[coretext] Fix leak!
2016-02-22 15:31:22 +09:00
Behdad Esfahbod
e561122856
[coretext] Move code around
2016-02-22 15:28:37 +09:00
Behdad Esfahbod
04c6443153
[coretext] Ignore PPEM in font size selection
2016-02-22 15:12:27 +09:00
Behdad Esfahbod
62c2711121
[coretext] Limit grapheme-cluster forming to cluster-level=0
2016-02-22 15:07:20 +09:00
Behdad Esfahbod
061105ec44
[coretext] Fix shaping with varying font size
...
Fixes https://github.com/libass/libass/issues/212
2016-02-22 14:59:39 +09:00
Behdad Esfahbod
a39ff95fce
[coretext] Speed up CoreText font fallback
...
Fixes https://code.google.com/p/chromium/issues/detail?id=547912
2016-01-11 12:28:37 +00:00
Nico Weber
a7f0e25daf
Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines.
...
The coretext_aat shaper delegates to the regular coretext_..._ensure() functions, so coretext_aat_..._ensure() functions defined by these macros are unused. The compiler warns about them, which in turn can confuse people to think that the coretext_aat_..._ensure() functions weren't called by accident.
2015-12-30 16:05:52 -05:00
Nico Weber
8b1224f0ee
Remove unused `retry:` label.
...
Fixes a -Wunused-label warning when building harfbuzz with clang -Wall.
2015-12-28 21:31:28 -05:00
Behdad Esfahbod
b8811429b6
Fix Since tags
...
Fixes https://github.com/behdad/harfbuzz/issues/103
2015-09-03 15:53:22 +04:30
Behdad Esfahbod
ed6962c795
[coretext] Use i32 instead of u32 as well
...
Shouldn't cause *any* functional changes, but is more correct.
2015-08-20 15:39:53 +01:00
Behdad Esfahbod
958c268fa3
[coretext] Add TODO item
2015-08-19 13:22:12 +01:00
Behdad Esfahbod
50ad7788ee
[coretext] Remove assert that kicks in on Mac OS 10.6
...
http://crbug.com/419769
2015-08-18 10:22:16 +01:00
Behdad Esfahbod
39851ce84e
[coretext] Oops; fix issue number for previous commit
2015-04-21 19:23:27 -07:00
Behdad Esfahbod
24f17afeaf
[coretext] Fix positioning with trailing whitespace
...
Fixes https://code.google.com/p/chromium/issues/detail?id=476913
2015-04-21 19:21:32 -07:00
Behdad Esfahbod
982d94eaa2
[coretext] Don't generate notdef glyph for default-ignorables
...
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
2015-01-28 10:51:33 -08:00
Behdad Esfahbod
6917a045fd
[coretext] Unbreak glyph positioning in presence of notdef runs
...
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
This was originally broken in:
commit 5a0eed3b50
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Mon Aug 11 23:47:16 2014 -0400
[coretext] Implement vertical shaping
2015-01-28 10:50:54 -08:00
Behdad Esfahbod
b0b38bb892
[coretext] Fix positioning of notdef
2015-01-21 19:19:33 -08:00
Behdad Esfahbod
70622e5089
[coretext] Fix scaling
...
Before we were not accounting for possible differences in x_scale and
y_scale, as well as the signs of those. All should be in good shape
now.
2015-01-21 18:51:42 -08:00
Behdad Esfahbod
221ba02b08
[coretext] Use vertical advance for notdef in vertical direction
2015-01-21 18:51:42 -08:00
Behdad Esfahbod
522b1cc526
[coretext] Hide feature_mappings
2014-08-14 13:29:30 -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
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
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
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
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
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
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
fb8cc86ff9
Rename sort() to qsort()
...
In an effort to make the algorithm used clear.
2014-06-19 15:31:09 -04:00
Behdad Esfahbod
7526373e70
[coretext] Remove unused var
2014-06-17 11:45:26 -04:00
Behdad Esfahbod
a9e25e90a4
[coretext] Add hb_coretext_face_create()
...
Not tested.
2014-03-14 19:55:46 -07:00
Behdad Esfahbod
c79865f90f
[coretext] Add coretext_aat shaper
...
This is a higher-priority shaper than default shaper ("ot"), but
only picks up fonts that have AAT "morx"/"mort" table.
Note that for this to work the font face's get_table() implementation
should know how to return the full font blob.
Based on patch from Konstantin Ritt.
2014-03-14 19:38:58 -04:00
Behdad Esfahbod
c29993a181
[coretext] Handle surrogate pairs when generating notdef glyphs
...
Fixes github.com/behdad/harfbuzz/pull/19
2014-01-28 17:29:42 -05:00
Behdad Esfahbod
748b2782e4
[coretext] Minor optimization
2014-01-28 17:10:05 -05:00
Behdad Esfahbod
aec468f01e
[coretext] Add TODO
2013-11-29 19:21:58 -05:00
Behdad Esfahbod
58cc233e8b
[coretext] Cleanup
2013-11-29 19:17:42 -05:00
Khaled Hosny
c8213c6198
[coretext] Avoid font fallback with CoreText shaper
...
CoreText does automatic font fallback (AKA "cascading") for characters
not supported by the requested font, and provides no way to turn it off,
so detect if the returned run uses a font other than the requested one
and fill in the buffer with .notdef glyphs instead of random indices
glyph from a different font.
2013-11-29 19:01:56 -05:00
Behdad Esfahbod
68c372ed2e
More scratch-buffer cleanup
2013-11-13 14:45:43 -05:00
Behdad Esfahbod
8fcadb9cf9
[coretext] More scratch buffer fixes
2013-11-13 14:33:57 -05:00
Behdad Esfahbod
16f175cb2e
Fix scratch-buffer alignment warnings
2013-11-12 17:22:49 -05:00
Behdad Esfahbod
3613696b57
[coretext] Fully support user features
...
Based on patch from Jonathan Kew and data from Apple.
It's not working correctly though, and I suspect I'm hitting a bug in
CoreText. When I do this:
hb-shape /Library/Fonts/Zapfino.ttf ZapfinoZapfino --shaper coretext \
--features=-liga
I expect both ligatures to turn off, but only the second one does:
[Z_a_p_f_i_n_o=0+2333|Z=7+395|a=8+285|p_f=9+433|i=11+181|n=12+261|o=13+250]
whereas if I disable 'dlig' instead of 'liga', both are turned off.
Smells...
Doesn't resolve conflicting feature settings.
2013-08-12 12:01:05 -04:00
Behdad Esfahbod
a782a5e9a3
[coretext] Start adding support for features
...
Unlike AAT, looks like with CoreText very few OT features can be mapped.
:(
2013-08-07 22:08:29 -04:00
Behdad Esfahbod
c461371419
[CoreText] Don't leak the CTLine object (and everything that hangs off it)
...
Patch from Jonathan Kew.
2013-07-30 14:48:23 -04:00
Behdad Esfahbod
7235f33f9e
Fix misc warnings reported by cppcheck
...
https://bugs.freedesktop.org/show_bug.cgi?id=65544
2013-06-10 15:08:49 -04:00
Behdad Esfahbod
e923e6487b
[coretext] Fixed typo
...
Oops. Thanks Khaled for catching this.
2012-12-09 19:39:40 -05:00
Behdad Esfahbod
9a8395824b
[coretext] Add hb_coretext_face_get_cg_font()
...
Not sure if it's useful, but it was missing.
2012-12-09 18:47:36 -05:00
Behdad Esfahbod
8611235688
[coretext] Remove hack around GlyphID
...
We not namespace our types, so the hack is not needed anymore.
2012-12-09 18:47:09 -05:00
Behdad Esfahbod
7d52e6601f
Whitespace
2012-11-16 18:49:54 -08:00
Behdad Esfahbod
45c1383cc7
Minor
2012-08-14 09:33:18 -04:00
Behdad Esfahbod
301168dae7
[CoreText] Port to shape_plan infrastructure
2012-07-30 17:48:04 -04:00
Behdad Esfahbod
027857d041
Start adding a unified shaper access infrastructure
...
Add global shape_plan. Unused so far.
2012-07-26 21:14:02 -04:00
Jonathan Kew
ac2085d4b3
[CoreText] Ensure cluster indices in output buffer are non-decreasing.
...
Does not provide Uniscribe-compatible results, but should at least avoid
breaking hb-view due to out-of-order cluster values.
For RTL runs, ensure cluster values are non-increasing (instead of
non-decreasing).
2012-07-26 15:58:45 -04:00
Behdad Esfahbod
441d3bb7de
Minor
2012-07-26 12:01:12 -04:00
Jonathan Kew
aa6d849838
[CoreText] Add basic Core Text backend for comparison with our native shaping
...
Does not attempt to handle clusters in a Uniscribe- or HarfBuzz-compatible way;
just returns the original string indexes that CT maintains. These may even be
out-of-order in the case of reordrant glyphs.
2012-07-24 15:52:32 -04:00