nsTransformedTextRun*
nsTransformingTextRunFactory::MakeTextRun(const uint8_t* aString, uint32_t aLength,
                                          const gfxTextRunFactory::Parameters* aParams,
                                          gfxFontGroup* aFontGroup, uint32_t aFlags,
                                          nsStyleContext** aStyles, bool aOwnsFactory)
{
  // We'll only have a Unicode code path to minimize the amount of code needed
  // for these rarely used features
  NS_ConvertASCIItoUTF16 unicodeString(reinterpret_cast<const char*>(aString), aLength);
  return MakeTextRun(unicodeString.get(), aLength, aParams, aFontGroup,
                     aFlags & ~(gfxFontGroup::TEXT_IS_PERSISTENT | gfxFontGroup::TEXT_IS_8BIT),
                     aStyles, aOwnsFactory);
}
Пример #2
0
int CountCompositeCharacters( UChar const* pwz, int const cch ) {
	icu::UnicodeString unicodeString( icu::UnicodeString( pwz, cch ) );
	UErrorCode error = U_ZERO_ERROR;
	icu::BreakIterator* pbi = icu::BreakIterator::createCharacterInstance( icu::Locale::getDefault( ), error );
	pbi->setText( unicodeString );

	int cComposites = 0;
	int32_t p = pbi->first( );
	while ( icu::BreakIterator::DONE != p ) {
		cComposites++;
		p = pbi->next( );
	}

	delete pbi;
	return cComposites - 1;
}