| OLD | NEW |
| 1 /** | 1 /** |
| 2 * Copyright (C) 2003, 2006 Apple Computer, Inc. | 2 * Copyright (C) 2003, 2006 Apple Computer, Inc. |
| 3 * Copyright (C) 2008 Holger Hans Peter Freyther | 3 * Copyright (C) 2008 Holger Hans Peter Freyther |
| 4 * Copyright (C) 2009 Torch Mobile, Inc. | 4 * Copyright (C) 2009 Torch Mobile, Inc. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 { | 189 { |
| 190 return s_codePath; | 190 return s_codePath; |
| 191 } | 191 } |
| 192 | 192 |
| 193 Font::CodePath Font::codePath(const TextRun& run) const | 193 Font::CodePath Font::codePath(const TextRun& run) const |
| 194 { | 194 { |
| 195 if (s_codePath != Auto) | 195 if (s_codePath != Auto) |
| 196 return s_codePath; | 196 return s_codePath; |
| 197 | 197 |
| 198 // Start from 0 since drawing and highlighting also measure the characters b
efore run->from | 198 // Start from 0 since drawing and highlighting also measure the characters b
efore run->from |
| 199 // FIXME: Should use a UnicodeSet in ports where ICU is used. Note that we |
| 200 // can't simply use UnicodeCharacter Property/class because some characters |
| 201 // are not 'combining', but still need to go to the complex path. |
| 199 for (int i = 0; i < run.length(); i++) { | 202 for (int i = 0; i < run.length(); i++) { |
| 200 const UChar c = run[i]; | 203 const UChar c = run[i]; |
| 204 if (c < 0x02E5) // U+02E5 through U+02E9 (Modifier Letters : Tone le
tters) |
| 205 continue; |
| 206 if (c <= 0x02E9) |
| 207 return Complex; |
| 201 if (c < 0x300) // U+0300 through U+036F Combining diacritical marks | 208 if (c < 0x300) // U+0300 through U+036F Combining diacritical marks |
| 202 continue; | 209 continue; |
| 203 if (c <= 0x36F) | 210 if (c <= 0x36F) |
| 204 return Complex; | 211 return Complex; |
| 205 | 212 |
| 206 if (c < 0x0591 || c == 0x05BE) // U+0591 through U+05CF excluding U+
05BE Hebrew combining marks, Hebrew punctuation Paseq, Sof Pasuq and Nun Hafukha | 213 if (c < 0x0591 || c == 0x05BE) // U+0591 through U+05CF excluding U+
05BE Hebrew combining marks, Hebrew punctuation Paseq, Sof Pasuq and Nun Hafukha |
| 207 continue; | 214 continue; |
| 208 if (c <= 0x05CF) | 215 if (c <= 0x05CF) |
| 209 return Complex; | 216 return Complex; |
| 210 | 217 |
| 211 if (c < 0x0600) // U+0600 through U+1059 Arabic, Syriac, Thaana, Dev
anagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam,
Sinhala, Thai, Lao, Tibetan, Myanmar | 218 if (c < 0x0600) // U+0600 through U+1059 Arabic, Syriac, Thaana, Dev
anagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam,
Sinhala, Thai, Lao, Tibetan, Myanmar |
| 212 continue; | 219 continue; |
| 213 if (c <= 0x1059) | 220 if (c <= 0x1059) |
| 214 return Complex; | 221 return Complex; |
| 215 | 222 |
| 216 if (c < 0x1100) // U+1100 through U+11FF Hangul Jamo (only Ancient K
orean should be left here if you precompose; Modern Korean will be precomposed a
s a result of step A) | 223 if (c < 0x1100) // U+1100 through U+11FF Hangul Jamo (only Ancient K
orean should be left here if you precompose; Modern Korean will be precomposed a
s a result of step A) |
| 217 continue; | 224 continue; |
| 218 if (c <= 0x11FF) | 225 if (c <= 0x11FF) |
| 219 return Complex; | 226 return Complex; |
| 220 | 227 |
| 221 if (c < 0x1780) // U+1780 through U+18AF Khmer, Mongolian | 228 if (c < 0x1700) // U+1700 through U+18AF Tagalog, Hanunoo, Buhid, Ta
gbanwa, Khmer, Mongolian |
| 222 continue; | 229 continue; |
| 223 if (c <= 0x18AF) | 230 if (c <= 0x18AF) |
| 224 return Complex; | 231 return Complex; |
| 225 | 232 |
| 226 if (c < 0x1900) // U+1900 through U+194F Limbu (Unicode 4.0) | 233 if (c < 0x1900) // U+1900 through U+194F Limbu (Unicode 4.0) |
| 227 continue; | 234 continue; |
| 228 if (c <= 0x194F) | 235 if (c <= 0x194F) |
| 229 return Complex; | 236 return Complex; |
| 230 | 237 |
| 238 if (c < 0x1980) // U+1980 through U+19DF New Tai Lue |
| 239 continue; |
| 240 if (c <= 0x19DF) |
| 241 return Complex; |
| 242 |
| 243 if (c < 0x1A00) // U+1A00 through U+1C4F Buginese, Balinese, Lepcha |
| 244 continue; |
| 245 if (c <= 0x1C4F) |
| 246 return Complex; |
| 247 |
| 248 if (c < 0x1DC0) // U+1DC0 through U+1DFF Comining diacritical mark s
upplement |
| 249 continue; |
| 250 if (c <= 0x1DFF) |
| 251 return Complex; |
| 252 |
| 231 if (c < 0x1E00) // U+1E00 through U+2000 characters with diacritics
and stacked diacritics | 253 if (c < 0x1E00) // U+1E00 through U+2000 characters with diacritics
and stacked diacritics |
| 232 continue; | 254 continue; |
| 233 if (c <= 0x2000) | 255 if (c <= 0x2000) |
| 234 return SimpleWithGlyphOverflow; | 256 return SimpleWithGlyphOverflow; |
| 235 | 257 |
| 236 if (c < 0x20D0) // U+20D0 through U+20FF Combining marks for symbols | 258 if (c < 0x20D0) // U+20D0 through U+20FF Combining marks for symbols |
| 237 continue; | 259 continue; |
| 238 if (c <= 0x20FF) | 260 if (c <= 0x20FF) |
| 239 return Complex; | 261 return Complex; |
| 240 | 262 |
| 263 if (c < 0xA800) // U+A800 through U+ABFF : Nagri, Phags-pa, Saurasht
ra, Hangul Jamo Ext. A, Meetei Mayek |
| 264 continue; |
| 265 if (c <= 0xABFF) |
| 266 return Complex; |
| 267 if (c < 0xD7B0) // U+D7B0 through U+D7FF : Hangul Jamo Ext. B |
| 268 continue; |
| 269 if (c <= 0xD7FF) |
| 270 return Complex; |
| 241 if (c < 0xFE20) // U+FE20 through U+FE2F Combining half marks | 271 if (c < 0xFE20) // U+FE20 through U+FE2F Combining half marks |
| 242 continue; | 272 continue; |
| 243 if (c <= 0xFE2F) | 273 if (c <= 0xFE2F) |
| 244 return Complex; | 274 return Complex; |
| 245 } | 275 } |
| 246 | 276 |
| 247 if (typesettingFeatures()) | 277 if (typesettingFeatures()) |
| 248 return Complex; | 278 return Complex; |
| 249 | 279 |
| 250 return Simple; | 280 return Simple; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 if (delta <= 0) | 412 if (delta <= 0) |
| 383 break; | 413 break; |
| 384 } | 414 } |
| 385 } | 415 } |
| 386 } | 416 } |
| 387 | 417 |
| 388 return offset; | 418 return offset; |
| 389 } | 419 } |
| 390 | 420 |
| 391 } | 421 } |
| OLD | NEW |