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); }
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; }