117 TypesettingFeatures typesettingFeatures() const
118 {
119 TextRenderingMode textRenderingMode = m_fontDescription.textRenderingMode();
120 return textRenderingMode == OptimizeLegibility || textRenderingMode == GeometricPrecision ? Kerning | Ligatures : 0;
121 }
273 Font::CodePath Font::codePath(const TextRun& run) const
274 {
275 if (s_codePath != Auto)
276 return s_codePath;
277
278 #if PLATFORM(QT)
279 if (run.expansion() || run.rtl() || isSmallCaps() || wordSpacing() || letterSpacing())
280 return Complex;
281 #endif
282
283 CodePath result = Simple; <===========
284
285
286 for (int i = 0; i < run.length(); i++) {
287 const UChar c = run[i];
288 if (c < 0x300)
289 continue; <===========
290 if (c <= 0x36F)
291 return Complex;
292
293 if (c < 0x0591 || c == 0x05BE)
294 continue;
295 if (c <= 0x05CF)
296 return Complex;
297
298 if (c < 0x0600)
299 continue;
300 if (c <= 0x1059)
301 return Complex;
302
303 if (c < 0x1100)
304 continue;
305 if (c <= 0x11FF)
306 return Complex;
307
308 if (c < 0x1780)
309 continue;
310 if (c <= 0x18AF)
311 return Complex;
312
313 if (c < 0x1900)
314 continue;
315 if (c <= 0x194F)
316 return Complex;
317
318 if (c < 0x1E00)
319 continue; <===========
320 if (c <= 0x2000) {
321 result = SimpleWithGlyphOverflow;
322 continue; <===========
323 }
324
325 if (c < 0x20D0)
326 continue; <===========
327 if (c <= 0x20FF)
328 return Complex;
329
330 if (c < 0xFE20)
331 continue; <===========
332 if (c <= 0xFE2F)
333 return Complex;
334 }
335
336 if (typesettingFeatures())
337 return Complex;
338
339 return result; <===========
340 }