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 | |
61 #ifndef NO_OPENTYPE | 59 #ifndef NO_OPENTYPE |
62 if (HB_SelectScript(shaper_item, hebrew_features)) { | 60 if (HB_SelectScript(shaper_item, hebrew_features)) { |
63 | 61 |
64 const int availableGlyphs = shaper_item->num_glyphs; | 62 const int availableGlyphs = shaper_item->num_glyphs; |
65 if (!HB_ConvertStringToGlyphIndices(shaper_item)) | 63 if (!HB_ConvertStringToGlyphIndices(shaper_item)) |
66 return FALSE; | 64 return FALSE; |
67 | 65 |
68 | 66 HB_HeuristicSetGlyphAttributes(shaper_item); |
69 HB_OpenTypeShape(shaper_item, /*properties*/0); | 67 HB_OpenTypeShape(shaper_item, /*properties*/0); |
70 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters
*/TRUE); | 68 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters
*/TRUE); |
71 } | 69 } |
72 #endif | 70 #endif |
73 | 71 |
74 { | 72 { |
75 const HB_UChar16 *uc = shaper_item->string + shaper_item->item.pos; | 73 const HB_UChar16 *uc = shaper_item->string + shaper_item->item.pos; |
76 unsigned short *logClusters = shaper_item->log_clusters; | 74 unsigned short *logClusters = shaper_item->log_clusters; |
77 HB_GlyphAttributes *attributes = shaper_item->attributes; | 75 HB_GlyphAttributes *attributes = shaper_item->attributes; |
78 | 76 |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 | 178 |
181 if (!haveGlyphs) | 179 if (!haveGlyphs) |
182 return FALSE; | 180 return FALSE; |
183 | 181 |
184 HB_HeuristicPosition(shaper_item); | 182 HB_HeuristicPosition(shaper_item); |
185 } | 183 } |
186 | 184 |
187 return TRUE; | 185 return TRUE; |
188 } | 186 } |
189 | 187 |
OLD | NEW |