Lines Matching defs:shaper_item

349 HB_Bool HB_ConvertStringToGlyphIndices(HB_ShaperItem *shaper_item)
351 if (shaper_item->glyphIndicesPresent) {
352 shaper_item->num_glyphs = shaper_item->initialGlyphCount;
353 shaper_item->glyphIndicesPresent = false;
356 return shaper_item->font->klass
357 ->convertStringToGlyphIndices(shaper_item->font,
358 shaper_item->string + shaper_item->item.pos, shaper_item->item.length,
359 shaper_item->glyphs, &shaper_item->num_glyphs,
360 shaper_item->item.bidiLevel % 2);
363 HB_Bool HB_BasicShape(HB_ShaperItem *shaper_item)
366 const int availableGlyphs = shaper_item->num_glyphs;
369 if (!HB_ConvertStringToGlyphIndices(shaper_item))
372 HB_HeuristicSetGlyphAttributes(shaper_item);
375 if (HB_SelectScript(shaper_item, basic_features)) {
376 HB_OpenTypeShape(shaper_item, /*properties*/0);
377 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters*/true);
381 HB_HeuristicPosition(shaper_item);
696 HB_Bool HB_SelectScript(HB_ShaperItem *shaper_item, const HB_OpenTypeFeature *features)
698 HB_Script script = shaper_item->item.script;
700 if (!shaper_item->face->supported_scripts[script])
703 HB_Face face = shaper_item->face;
704 if (face->current_script == script && face->current_flags == shaper_item->shaperFlags)
708 face->current_flags = shaper_item->shaperFlags;
983 HB_Bool HB_ShapeItem(HB_ShaperItem *shaper_item)
986 if (shaper_item->num_glyphs < shaper_item->item.length) {
987 shaper_item->num_glyphs = shaper_item->item.length;
990 assert(shaper_item->item.script < HB_ScriptCount);
991 result = HB_ScriptEngines[shaper_item->item.script].shape(shaper_item);
992 shaper_item->glyphIndicesPresent = false;