Lines Matching full:shaper_item
558 HB_Bool HB_ConvertStringToGlyphIndices(HB_ShaperItem *shaper_item)
560 if (shaper_item->glyphIndicesPresent) {
561 shaper_item->num_glyphs = shaper_item->initialGlyphCount;
562 shaper_item->glyphIndicesPresent = false;
565 return shaper_item->font->klass
566 ->convertStringToGlyphIndices(shaper_item->font,
567 shaper_item->string + shaper_item->item.pos, shaper_item->item.length,
568 shaper_item->glyphs, &shaper_item->num_glyphs,
569 shaper_item->item.bidiLevel % 2);
572 HB_Bool HB_BasicShape(HB_ShaperItem *shaper_item)
575 const int availableGlyphs = shaper_item->num_glyphs;
578 if (!HB_ConvertStringToGlyphIndices(shaper_item))
581 HB_HeuristicSetGlyphAttributes(shaper_item);
584 if (HB_SelectScript(shaper_item, basic_features)) {
585 HB_OpenTypeShape(shaper_item, /*properties*/0);
586 return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters*/true);
590 HB_HeuristicPosition(shaper_item);
1050 HB_Bool HB_SelectScript(HB_ShaperItem *shaper_item, const HB_OpenTypeFeature *features)
1052 HB_Script script = shaper_item->item.script;
1054 if (!shaper_item->face->supported_scripts[script])
1057 HB_Face face = shaper_item->face;
1058 if (face->current_script == script && face->current_flags == shaper_item->shaperFlags)
1062 face->current_flags = shaper_item->shaperFlags;
1337 HB_Bool HB_ShapeItem(HB_ShaperItem *shaper_item)
1340 if (shaper_item->num_glyphs < shaper_item->item.length) {
1341 shaper_item->num_glyphs = shaper_item->item.length;
1344 assert(shaper_item->item.script < HB_ScriptCount);
1345 result = HB_ScriptEngines[shaper_item->item.script].shape(shaper_item);
1346 shaper_item->glyphIndicesPresent = false;