OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 2 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
3 * | 3 * |
4 * This is part of HarfBuzz, an OpenType Layout engine library. | 4 * This is part of HarfBuzz, an OpenType Layout engine 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 ShinDot = 0x5c1, | 49 ShinDot = 0x5c1, |
50 SinDot = 0x5c2, | 50 SinDot = 0x5c2, |
51 Patah = 0x5b7, | 51 Patah = 0x5b7, |
52 Qamats = 0x5b8, | 52 Qamats = 0x5b8, |
53 Holam = 0x5b9, | 53 Holam = 0x5b9, |
54 Rafe = 0x5bf | 54 Rafe = 0x5bf |
55 }; | 55 }; |
56 | 56 |
57 assert(shaper_item->item.script == HB_Script_Hebrew); | 57 assert(shaper_item->item.script == HB_Script_Hebrew); |
58 | 58 |
| 59 HB_HeuristicSetGlyphAttributes(shaper_item); |
| 60 |
59 #ifndef NO_OPENTYPE | 61 #ifndef NO_OPENTYPE |
60 if (HB_SelectScript(shaper_item, hebrew_features)) { | 62 if (HB_SelectScript(shaper_item, hebrew_features)) { |
61 | 63 |
62 const int availableGlyphs = shaper_item->num_glyphs; | 64 const int availableGlyphs = shaper_item->num_glyphs; |
63 if (!HB_ConvertStringToGlyphIndices(shaper_item)) | 65 if (!HB_ConvertStringToGlyphIndices(shaper_item)) |
64 return FALSE; | 66 return FALSE; |
65 | 67 |
66 | 68 |
67 HB_HeuristicSetGlyphAttributes(shaper_item); | |
68 HB_OpenTypeShape(shaper_item, /*properties*/0); | 69 HB_OpenTypeShape(shaper_item, /*properties*/0); |
69 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters
*/TRUE); | 70 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters
*/TRUE); |
70 } | 71 } |
71 #endif | 72 #endif |
72 | 73 |
73 { | 74 { |
74 const HB_UChar16 *uc = shaper_item->string + shaper_item->item.pos; | 75 const HB_UChar16 *uc = shaper_item->string + shaper_item->item.pos; |
75 unsigned short *logClusters = shaper_item->log_clusters; | 76 unsigned short *logClusters = shaper_item->log_clusters; |
76 HB_GlyphAttributes *attributes = shaper_item->attributes; | 77 HB_GlyphAttributes *attributes = shaper_item->attributes; |
77 | 78 |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 180 |
180 if (!haveGlyphs) | 181 if (!haveGlyphs) |
181 return FALSE; | 182 return FALSE; |
182 | 183 |
183 HB_HeuristicPosition(shaper_item); | 184 HB_HeuristicPosition(shaper_item); |
184 } | 185 } |
185 | 186 |
186 return TRUE; | 187 return TRUE; |
187 } | 188 } |
188 | 189 |
OLD | NEW |