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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-fallback-shape.cc

Issue 10915172: harfbuzz-ng roll (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months 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-ng/src/hb-coretext.cc ('k') | third_party/harfbuzz-ng/src/hb-font.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright © 2011 Google, Inc. 2 * Copyright © 2011 Google, Inc.
3 * 3 *
4 * This is part of HarfBuzz, a text shaping library. 4 * This is part of HarfBuzz, a text shaping library.
5 * 5 *
6 * Permission is hereby granted, without written agreement and without 6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this 7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the 8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in 9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software. 10 * all copies of this software.
11 * 11 *
12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16 * DAMAGE. 16 * DAMAGE.
17 * 17 *
18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23 * 23 *
24 * Google Author(s): Behdad Esfahbod 24 * Google Author(s): Behdad Esfahbod
25 */ 25 */
26 26
27 #include "hb-fallback-shape-private.hh" 27 #define HB_SHAPER fallback
28 #include "hb-shaper-impl-private.hh"
28 29
29 #include "hb-buffer-private.hh" 30
31 /*
32 * shaper face data
33 */
34
35 struct hb_fallback_shaper_face_data_t {};
36
37 hb_fallback_shaper_face_data_t *
38 _hb_fallback_shaper_face_data_create (hb_face_t *face)
39 {
40 return (hb_fallback_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED;
41 }
42
43 void
44 _hb_fallback_shaper_face_data_destroy (hb_fallback_shaper_face_data_t *data)
45 {
46 }
47
48
49 /*
50 * shaper font data
51 */
52
53 struct hb_fallback_shaper_font_data_t {};
54
55 hb_fallback_shaper_font_data_t *
56 _hb_fallback_shaper_font_data_create (hb_font_t *font)
57 {
58 return (hb_fallback_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED;
59 }
60
61 void
62 _hb_fallback_shaper_font_data_destroy (hb_fallback_shaper_font_data_t *data)
63 {
64 }
65
66
67 /*
68 * shaper shape_plan data
69 */
70
71 struct hb_fallback_shaper_shape_plan_data_t {};
72
73 hb_fallback_shaper_shape_plan_data_t *
74 _hb_fallback_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UN USED,
75 » » » » » const hb_feature_t *user_features HB _UNUSED,
76 » » » » » unsigned int num_user_feature s HB_UNUSED)
77 {
78 return (hb_fallback_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED;
79 }
80
81 void
82 _hb_fallback_shaper_shape_plan_data_destroy (hb_fallback_shaper_shape_plan_data_ t *data HB_UNUSED)
83 {
84 }
85
86
87 /*
88 * shaper
89 */
30 90
31 hb_bool_t 91 hb_bool_t
32 _hb_fallback_shape (hb_font_t *font, 92 _hb_fallback_shape (hb_shape_plan_t *shape_plan,
93 » » hb_font_t *font,
33 hb_buffer_t *buffer, 94 hb_buffer_t *buffer,
34 const hb_feature_t *features HB_UNUSED, 95 const hb_feature_t *features HB_UNUSED,
35 unsigned int num_features HB_UNUSED) 96 unsigned int num_features HB_UNUSED)
36 { 97 {
98 hb_codepoint_t space;
99 font->get_glyph (' ', 0, &space);
100
37 buffer->guess_properties (); 101 buffer->guess_properties ();
102 buffer->clear_positions ();
38 103
39 unsigned int count = buffer->len; 104 unsigned int count = buffer->len;
40 105
41 for (unsigned int i = 0; i < count; i++) 106 for (unsigned int i = 0; i < count; i++)
42 hb_font_get_glyph (font, buffer->info[i].codepoint, 0, &buffer->info[i].code point); 107 {
43 108 if (buffer->unicode->is_zero_width (buffer->info[i].codepoint)) {
44 buffer->clear_positions (); 109 buffer->info[i].codepoint = space;
45 110 buffer->pos[i].x_advance = 0;
46 for (unsigned int i = 0; i < count; i++) { 111 buffer->pos[i].y_advance = 0;
47 hb_font_get_glyph_advance_for_direction (font, buffer->info[i].codepoint, 112 continue;
48 » » » » » buffer->props.direction, 113 }
49 » » » » » &buffer->pos[i].x_advance, 114 font->get_glyph (buffer->info[i].codepoint, 0, &buffer->info[i].codepoint);
50 » » » » » &buffer->pos[i].y_advance); 115 font->get_glyph_advance_for_direction (buffer->info[i].codepoint,
51 hb_font_subtract_glyph_origin_for_direction (font, buffer->info[i].codepoint , 116 » » » » » buffer->props.direction,
52 » » » » » » buffer->props.direction, 117 » » » » » &buffer->pos[i].x_advance,
53 » » » » » » &buffer->pos[i].x_offset, 118 » » » » » &buffer->pos[i].y_advance);
54 » » » » » » &buffer->pos[i].y_offset); 119 font->subtract_glyph_origin_for_direction (buffer->info[i].codepoint,
120 » » » » » buffer->props.direction,
121 » » » » » &buffer->pos[i].x_offset,
122 » » » » » &buffer->pos[i].y_offset);
55 } 123 }
56 124
57 if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) 125 if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
58 hb_buffer_reverse (buffer); 126 hb_buffer_reverse (buffer);
59 127
60 return true; 128 return true;
61 } 129 }
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-coretext.cc ('k') | third_party/harfbuzz-ng/src/hb-font.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698