Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: third_party/harfbuzz/chromium.patch

Issue 8895014: Fix two truncation bugs in harfbuzz-indic shaper. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/harfbuzz/README.chromium ('k') | third_party/harfbuzz/contrib/harfbuzz-unicode.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 diff --git a/contrib/harfbuzz-unicode.c b/contrib/harfbuzz-unicode.c 1 diff --git a/contrib/harfbuzz-unicode.c b/contrib/harfbuzz-unicode.c
2 index 049e0ca..86458d0 100644 2 index 049e0ca..86458d0 100644
3 --- a/contrib/harfbuzz-unicode.c 3 --- a/contrib/harfbuzz-unicode.c
4 +++ b/contrib/harfbuzz-unicode.c 4 +++ b/contrib/harfbuzz-unicode.c
5 @@ -120,7 +120,6 @@ hb_utf16_script_run_next(unsigned *num_code_points, HB_Scrip tItem *output, 5 @@ -120,7 +120,6 @@ hb_utf16_script_run_next(unsigned *num_code_points, HB_Scrip tItem *output,
6 current_script = script; 6 current_script = script;
7 continue; 7 continue;
8 } else if (script == HB_Script_Inherited) { 8 } else if (script == HB_Script_Inherited) {
9 - current_script = script; 9 - current_script = script;
10 continue; 10 continue;
(...skipping 16 matching lines...) Expand all
27 --- a/src/harfbuzz-arabic.c 27 --- a/src/harfbuzz-arabic.c
28 +++ b/src/harfbuzz-arabic.c 28 +++ b/src/harfbuzz-arabic.c
29 @@ -1107,6 +1107,7 @@ HB_Bool HB_ArabicShape(HB_ShaperItem *item) 29 @@ -1107,6 +1107,7 @@ HB_Bool HB_ArabicShape(HB_ShaperItem *item)
30 assert(item->item.script == HB_Script_Arabic || item->item.script == HB_Scr ipt_Syriac 30 assert(item->item.script == HB_Script_Arabic || item->item.script == HB_Scr ipt_Syriac
31 || item->item.script == HB_Script_Nko); 31 || item->item.script == HB_Script_Nko);
32 32
33 + item->shaperFlags |= HB_ShaperFlag_ForceMarksToZeroWidth; 33 + item->shaperFlags |= HB_ShaperFlag_ForceMarksToZeroWidth;
34 #ifndef NO_OPENTYPE 34 #ifndef NO_OPENTYPE
35 35
36 if (HB_SelectScript(item, item->item.script == HB_Script_Arabic ? arabic_fe atures : syriac_features)) { 36 if (HB_SelectScript(item, item->item.script == HB_Script_Arabic ? arabic_fe atures : syriac_features)) {
37 diff --git a/src/harfbuzz-gpos.c b/src/harfbuzz-gpos.c
38 index a216005..7bd3b3b 100644
39 --- a/src/harfbuzz-gpos.c
40 +++ b/src/harfbuzz-gpos.c
41 @@ -3012,6 +3012,9 @@ static HB_Error Lookup_MarkMarkPos( GPOS_Instance* gpi ,
42 j--;
43 }
44
45 + if ( i > buffer->in_pos )
46 + return HB_Err_Not_Covered;
47 +
48 error = _HB_OPEN_Coverage_Index( &mmp->Mark2Coverage, IN_GLYPH( j ),
49 &mark2_index );
50 if ( error )
51 diff --git a/src/harfbuzz-shaper.cpp b/src/harfbuzz-shaper.cpp 37 diff --git a/src/harfbuzz-shaper.cpp b/src/harfbuzz-shaper.cpp
52 index ce4d4ac..5999e08 100644 38 index ce4d4ac..5999e08 100644
53 --- a/src/harfbuzz-shaper.cpp 39 --- a/src/harfbuzz-shaper.cpp
54 +++ b/src/harfbuzz-shaper.cpp 40 +++ b/src/harfbuzz-shaper.cpp
55 @@ -430,8 +430,6 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item) 41 @@ -430,8 +430,6 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item)
56 42
57 // ### zeroWidth and justification are missing here!!!!! 43 // ### zeroWidth and justification are missing here!!!!!
58 44
59 - assert(item->num_glyphs <= length); 45 - assert(item->num_glyphs <= length);
60 - 46 -
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 HB_ShaperFlag_NoKerning = 1, 113 HB_ShaperFlag_NoKerning = 1,
128 - HB_ShaperFlag_UseDesignMetrics = 2 114 - HB_ShaperFlag_UseDesignMetrics = 2
129 + HB_ShaperFlag_UseDesignMetrics = 1 << 1, 115 + HB_ShaperFlag_UseDesignMetrics = 1 << 1,
130 + /* Arabic vowels in some fonts (Times New Roman, at least) have 116 + /* Arabic vowels in some fonts (Times New Roman, at least) have
131 + non-zero advances, when they should be zero. Setting this shaper 117 + non-zero advances, when they should be zero. Setting this shaper
132 + flag causes us to zero out the advances for mark glyphs. */ 118 + flag causes us to zero out the advances for mark glyphs. */
133 + HB_ShaperFlag_ForceMarksToZeroWidth = 1 << 2 119 + HB_ShaperFlag_ForceMarksToZeroWidth = 1 << 2
134 } HB_ShaperFlag; 120 } HB_ShaperFlag;
135 121
136 /* 122 /*
137 diff --git a/src/harfbuzz-tibetan.c b/src/harfbuzz-tibetan.c
138 index bfa31b1..847ac52 100644
139 --- a/src/harfbuzz-tibetan.c
140 +++ b/src/harfbuzz-tibetan.c
141 @@ -90,7 +90,7 @@ static const unsigned char tibetanForm[0x80] = {
142
143
144 #define tibetan_form(c) \
145 - (TibetanForm)tibetanForm[c - 0x0f40]
146 + ((c) >= 0x0f40 && (c) <= 0x0fc0 ? (TibetanForm)tibetanForm[(c) - 0x0f40] : TibetanOther)
147
148 static const HB_OpenTypeFeature tibetan_features[] = {
149 { HB_MAKE_TAG('c', 'c', 'm', 'p'), CcmpProperty },
OLDNEW
« no previous file with comments | « third_party/harfbuzz/README.chromium ('k') | third_party/harfbuzz/contrib/harfbuzz-unicode.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698