| OLD | NEW |
| 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. |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 * | 99 * |
| 100 * - Apply fallback kern. | 100 * - Apply fallback kern. |
| 101 * - Handle Variation Selectors? | 101 * - Handle Variation Selectors? |
| 102 * - Apply normalization? | 102 * - Apply normalization? |
| 103 * | 103 * |
| 104 * This will make the fallback shaper into a dumb "TrueType" | 104 * This will make the fallback shaper into a dumb "TrueType" |
| 105 * shaper which many people unfortunately still request. | 105 * shaper which many people unfortunately still request. |
| 106 */ | 106 */ |
| 107 | 107 |
| 108 hb_codepoint_t space; | 108 hb_codepoint_t space; |
| 109 bool has_space = (bool) font->get_glyph (' ', 0, &space); | 109 bool has_space = (bool) font->get_nominal_glyph (' ', &space); |
| 110 | 110 |
| 111 buffer->clear_positions (); | 111 buffer->clear_positions (); |
| 112 | 112 |
| 113 hb_direction_t direction = buffer->props.direction; | 113 hb_direction_t direction = buffer->props.direction; |
| 114 hb_unicode_funcs_t *unicode = buffer->unicode; | 114 hb_unicode_funcs_t *unicode = buffer->unicode; |
| 115 unsigned int count = buffer->len; | 115 unsigned int count = buffer->len; |
| 116 hb_glyph_info_t *info = buffer->info; | 116 hb_glyph_info_t *info = buffer->info; |
| 117 hb_glyph_position_t *pos = buffer->pos; | 117 hb_glyph_position_t *pos = buffer->pos; |
| 118 for (unsigned int i = 0; i < count; i++) | 118 for (unsigned int i = 0; i < count; i++) |
| 119 { | 119 { |
| 120 if (has_space && unicode->is_default_ignorable (info[i].codepoint)) { | 120 if (has_space && unicode->is_default_ignorable (info[i].codepoint)) { |
| 121 info[i].codepoint = space; | 121 info[i].codepoint = space; |
| 122 pos[i].x_advance = 0; | 122 pos[i].x_advance = 0; |
| 123 pos[i].y_advance = 0; | 123 pos[i].y_advance = 0; |
| 124 continue; | 124 continue; |
| 125 } | 125 } |
| 126 font->get_glyph (info[i].codepoint, 0, &info[i].codepoint); | 126 font->get_nominal_glyph (info[i].codepoint, &info[i].codepoint); |
| 127 font->get_glyph_advance_for_direction (info[i].codepoint, | 127 font->get_glyph_advance_for_direction (info[i].codepoint, |
| 128 direction, | 128 direction, |
| 129 &pos[i].x_advance, | 129 &pos[i].x_advance, |
| 130 &pos[i].y_advance); | 130 &pos[i].y_advance); |
| 131 font->subtract_glyph_origin_for_direction (info[i].codepoint, | 131 font->subtract_glyph_origin_for_direction (info[i].codepoint, |
| 132 direction, | 132 direction, |
| 133 &pos[i].x_offset, | 133 &pos[i].x_offset, |
| 134 &pos[i].y_offset); | 134 &pos[i].y_offset); |
| 135 } | 135 } |
| 136 | 136 |
| 137 if (HB_DIRECTION_IS_BACKWARD (direction)) | 137 if (HB_DIRECTION_IS_BACKWARD (direction)) |
| 138 hb_buffer_reverse (buffer); | 138 hb_buffer_reverse (buffer); |
| 139 | 139 |
| 140 return true; | 140 return true; |
| 141 } | 141 } |
| OLD | NEW |