Home | History | Annotate | Download | only in chromium

Lines Matching refs:shaping

159     // memory will be several times the input length. Plus shaping such a large
209 const Shaping& shaping = m_shapes[runIndex];
211 for (int i = 0; i < shaping.glyphLength(); i++, destIndex++) {
212 memcpy(&visualAttributes[destIndex], &shaping.m_visualAttributes[i],
214 advances[destIndex] = shaping.m_advance[i];
236 Shaping& shaping = m_shapes[runIndex];
238 shaping.m_justify.resize(shaping.glyphLength());
239 for (int i = 0; i < shaping.glyphLength(); i++, globalGlyphIndex++)
240 shaping.m_justify[i] = justify[globalGlyphIndex];
257 const Shaping& shaping = m_shapes[itemIndex];
258 int itemLength = shaping.charLength();
266 shaping.glyphLength(),
267 &shaping.m_logs[0], &shaping.m_visualAttributes[0],
268 shaping.effectiveAdvances(), &item.a, &curX);
272 width += curX + shaping.m_prePadding;
294 // Note that the run may be empty if shaping failed, so we want to skip
296 const Shaping& shaping = m_shapes[itemIndex];
297 int itemLength = shaping.charLength();
304 x -= shaping.m_prePadding;
308 hr = ScriptXtoCP(x, itemLength, shaping.glyphLength(),
309 &shaping.m_logs[0], &shaping.m_visualAttributes[0],
310 shaping.effectiveAdvances(), &item.a, &charX,
339 const Shaping& shaping = m_shapes[itemIndex];
347 if (shaping.charLength() == 0 ||
348 fromChar >= shaping.charLength() || toChar <= 0) {
359 if (toChar >= shaping.charLength())
366 fromGlyph = shaping.m_logs[toChar - 1];
373 afterGlyph = shaping.glyphLength();
379 afterGlyph = shaping.m_logs[fromChar - 1];
386 fromGlyph = shaping.m_logs[fromChar < 0 ? 0 : fromChar];
387 if (toChar >= shaping.charLength())
388 afterGlyph = shaping.glyphLength();
390 afterGlyph = shaping.m_logs[toChar];
397 const int* effectiveAdvances = shaping.effectiveAdvances();
408 innerOffset += shaping.m_prePadding;
411 const int* justify = shaping.m_justify.size() == 0 ? 0 : &shaping.m_justify[fromGlyph];
413 const int* advances = shaping.m_justify.size() ?
414 &shaping.m_justify[fromGlyph]
415 : &shaping.m_advance[fromGlyph];
426 shaping.m_hfont,
428 &shaping.m_glyphs[fromGlyph],
430 &shaping.m_offsets[fromGlyph],
441 tryToPreloadFont(shaping.m_hfont);
460 const Shaping& shaping = m_shapes[i];
462 if (localOffset >= 0 && localOffset < shaping.charLength()) {
467 size_t glyphIndex = shaping.m_logs[localOffset];
468 if (glyphIndex >= shaping.m_glyphs.size()) {
470 // actual characters. This can happen when shaping the run
473 ASSERT(shaping.m_glyphs.size() == 0);
476 return shaping.m_glyphs[glyphIndex];
595 Shaping& shaping)
619 shaping.m_logs.resize(itemLength);
620 shaping.m_glyphs.resize(numGlyphs);
621 shaping.m_visualAttributes.resize(numGlyphs);
629 // shaping.m_glyphs. Consequently, any bytes with value 0xCD that it
639 // &shaping.m_glyphs[0],
640 // sizeof(shaping.m_glyphs[0] * generatedGlyphs);
642 ZeroMemory(&shaping.m_glyphs[0],
643 sizeof(shaping.m_glyphs[0]) * shaping.m_glyphs.size());
658 &shaping.m_logs[0], &charProps[0],
659 &shaping.m_glyphs[0], &glyphProps[0],
666 memcpy(&shaping.m_visualAttributes[i], &glyphProps[i].sva, sizeof(SCRIPT_VISATTR));
671 &shaping.m_glyphs[0], &shaping.m_logs[0],
672 &shaping.m_visualAttributes[0], &generatedGlyphs);
684 if (SUCCEEDED(hr) && (lastFallbackTried || !containsMissingGlyphs(shaping, run, fontProperties) && canUseGlyphIndex(run)))
740 shaping.
750 shaping.m_hfont = hfont;
751 shaping.m_scriptCache = scriptCache;
752 shaping.m_spaceGlyph = spaceGlyph;
759 shaping.m_ascentOffset = m_ascent ? ascent - m_ascent : 0;
763 shaping.m_glyphs.resize(generatedGlyphs);
764 shaping.m_visualAttributes.resize(generatedGlyphs);
765 shaping.m_advance.resize(generatedGlyphs);
766 shaping.m_offsets.resize(generatedGlyphs);
770 shaping.m_logs.clear();
813 Shaping& shaping = m_shapes[i];
814 if (!shape(&m_input[startItem], itemLength, numGlyphs, m_runs[i], m_scriptTags[i], shaping))
827 SelectObject(m_cachedDC, shaping.m_hfont);
828 shaping.m_prePadding = 0;
829 if (FAILED(ScriptPlace(m_cachedDC, shaping.m_scriptCache,
830 &shaping.m_glyphs[0],
831 static_cast<int>(shaping.m_glyphs.size()),
832 &shaping.m_visualAttributes[0], &m_runs[i].a,
833 &shaping.m_advance[0], &shaping.m_offsets[0],
834 &shaping.m_abc))) {
874 Shaping& shaping = m_shapes[run];
878 for (int i = 0; i < shaping.charLength(); i++) {
884 int glyphIndex = shaping.m_logs[i];
885 int currentAdvance = shaping.m_advance[glyphIndex];
887 shaping.m_glyphs[glyphIndex] = shaping.m_spaceGlyph;
895 // The shaping can consist of a run of text, so only subtract
897 shaping.m_advance[glyphIndex] -= diff;
898 shaping.m_abc.abcB -= diff;
906 shaping.m_advance[glyphIndex] = 0;
907 shaping.m_abc.abcB -= currentAdvance;
908 shaping.m_offsets[glyphIndex].du = 0;
909 shaping.m_offsets[glyphIndex].dv = 0;
917 Shaping& shaping = m_shapes[run];
925 shaping.m_prePadding += m_letterSpacing;
934 for (int i = 0; i < shaping.glyphLength(); i++) {
935 if (shaping.m_visualAttributes[i].fClusterStart) {
940 if (i != shaping.glyphLength() - 1) {
944 shaping.m_advance[i] += m_letterSpacing;
945 shaping.m_abc.abcB += m_letterSpacing;
949 shaping.m_advance[i] += m_letterSpacing;
950 shaping.m_abc.abcB += m_letterSpacing;
959 for (int i = 0; i < shaping.charLength(); i++) {
964 int glyphIndex = shaping.m_logs[i];
974 shaping.m_advance[glyphIndex] += m_wordSpacing;
975 shaping.m_abc.abcB += m_wordSpacing;
981 shaping.m_prePadding += m_wordSpacing;
983 shaping.m_advance[glyphIndex - 1] += m_wordSpacing;
984 shaping.m_abc.abcB += m_wordSpacing;
998 const Shaping& shaping = m_shapes[itemIndex];
1000 if (shaping.m_justify.size() == 0) {
1003 return shaping.m_abc.abcA + shaping.m_abc.abcB +
1004 shaping.m_abc.abcC + shaping.m_prePadding;
1011 for (size_t i = 0; i < shaping.m_justify.size(); i++)
1012 justification += shaping.m_justify[i];
1014 return shaping.m_prePadding + justification;
1025 bool UniscribeHelper::containsMissingGlyphs(const Shaping& shaping,
1029 for (int i = 0; i < shaping.charLength(); i++) {
1035 int glyphIndex = shaping.m_logs[i];
1036 WORD glyph = shaping.m_glyphs[glyphIndex];
1043 || (glyph == properties->wgBlank && shaping.m_visualAttributes[glyphIndex].fZeroWidth && !Font::treatAsZeroWidthSpace(c)))