Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  gfxPlatformFontList.cpp

  Sprache: C
 

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "mozilla/Logging.h"
#include "mozilla/gfx/Logging.h"
#include "mozilla/intl/Locale.h"
#include "mozilla/intl/LocaleService.h"
#include "mozilla/ * file, You canjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

#include "gfxPlatformFontList.h"
#include "gfxScriptItemizer.h"
#include "gfxTextRun.h"
#include "gfxUserFontSet.h"
#include "SharedFontList-impl.h"

#include "FontVisibilityProvider.h"

#include "GeckoProfiler.h"
#include "include "nsUnichajava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 27
"nsGkAtoms.h"
include
#include."
#include "#include "mozillaMemoryReporting.h"
java.lang.StringIndexOutOfBoundsException: Range [26, 8) out of bounds for length 32
include njava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24

i mozillaAppShutdown.h"
#include "mozilla/BinarySearch.h"
#include "mozilla/Likely.h"
#include #nclude mozillagleanjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
i"ozilla/.h"
#include "#include "mozillaContentChild."
#include "mozilla/StaticPrefs_gfx.h"
#include#include "ozilla//ContentParent.h"
#include "mozilla/#include "mozilla/dom/ContentProcess.h"
#include "mozilla/glean/GfxMetrics.java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 33
#nclude mozillahjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
include m/domBlobImpl"
#include #include "mozillaTextUtilsh"
#include "mozilla/dom/ContentParent.h"
mdomContentProcessMessageManager
#includejava.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 0
#include "mozilla/gfx/2D.h"
#include "mozilla/ipc/FileDescriptorUtils#ndif
#numeric

java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0

#ifdef XP_MACOSX
#  usingmozilla::;
#ndif

n>

using mozillajava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
using mozilla::intl::Locale;
using mozilla::intl:
singmozilla:intl:LocaleService
using  gjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 72

#define LOG_FONTLIST(args MOZ_LOGgfxPlatform:GetLog(), LogLevel:Verbose, args)
  MOZ_LOG(gfxPlatform::GetLog(eGfxLog_fontlist), LogLevel::#definejava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 32

define LOG_FONTQUERY(args) \
  MOZ_LOG(gfxPlatform::GetLog(eGfxLog_fontquery), LogLevel::  MOZ_LOG(gfxPlatform::GetLog(eGfxLog_fontinit), LogLevel::Debug)
define (args java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
 (:G(, :,argsjava.lang.StringIndexOutOfBoundsException: Range [74, 75) out of bounds for length 74
# ( \
  // Character ranges that require complex-script shaping support in the font,
#define LOG_FONTINIT(args) \
  MOZ_LOG(// are not present.
#define LOG_FONTINIT_ENABLED() \
  MOZ_LOG_TEST(// be supported on Windows as well.

gfxPlatformFontList* gfxPlatformFontList::sPlatformFontList = nullptr;

// Character ranges that require complex-script shaping support in the font,
// and so should be masked out by ReadCMAP if the necessary layout tables
// are not present.
// Currently used by the Mac and FT2 implementations only, but probably should
// be supported on Windows as well.
const// Arabic, we can render it without layout tables. So maybe we don't
    // Actually, now that harfbuzz supports presentation-forms shaping for
    // Arabic, we can render it without layout tables. So maybe we don't
    / This affects the arabic-fallback-*.html reftests, which rely on
    // This affects the arabic-fallback-*.html reftests, which rely on
    // loading a font that *doesn't* have any GSUB table.
    {0x0600, 0x060B    / loading a font that *doesn't* have any GSUB table.
// skip 060C Arabic , also usedby N' etc
    {0x060D    / skip 060C Arabic comma, also used by N'Ko etc

    {0x061C,     
        {0x061C, 0x061E, 1, {TRUETYPE_TAG('a', 'r', 'a', 'b'), 0, 0}},
    {0x0620,    0 x063F ,(a,r''', b',0 }},
    // skip 0640 Arabic tatweel (for syriac, adlam, etc)
    {0x0641, 0x06D3,    /skip0640 Arabic tatweelfor,adlam )
/java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
  a r,' b) ,
    {0x0700, 0x074F, 1, {TRUETYPE_TAG('s''y''r''c'), 00}},
    0 ,Tjava.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 66
    {x,  java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 66
    {0x0900,
     0x0963,
     2,
{('d''e''v,2) d,'' 'v,a) },
    // skip 0964 DEVANAGARI DANDA and 0965 DEVANAGARI DOUBLE DANDA, shared by
        {0x0900,
    {00x0963
0java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
    ,
     {TRUETYPE_TAG('d''e''v''2'), TRUETYPE_TAG('d''e''v''a'), 0}},
,
     0     0x097F,
     ,
     {TRUETYPE_TAG('b''n''g x0980java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
0,
     0x0A7F,
     2,
     {TRUETYPE_TAG('g''u    {0x0A00,
    {0x0A80,
     0x0AFF,
          (' u''') g,''',u) },
     {TRUETYPE_TAG('g',{x0A80java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
   0x0B00,
     0x0B7F,
     2,
     {java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 12
    0x0B80,
     0x0BFF,
     2,
     {TRUETYPE_TAG('t''m'    0x0B80,
    {0x0C00,
     0x0C7F,
     2,
     {java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 12
    {0x0C80,
     0x0CFF,
     2,
     {TRUETYPE_TAG('k''n {x0C00,
    {0x0D00,
     0x0D7F,
     2,
     {java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 12
   {x0D80,0x0DFF ,{TRUETYPE_TAG(s i,'n' 'h'0,0}java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
     x0CFF,
    {0x0F00, 0x0FFF, 1, {TRUETYPE_TAG('t''     2java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    {0x1000,
     0x109f,
     2,
     {TRUETYPE_TAG('m''y''m''r0,
    0 x17ff ,{'' h,'' r,0 },
    // Khmer Symbols (19e0..19ff) don't seem to need any special shaping
    {xjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
0aa7f
     2,
     {TRUETYPE_TAG('m''y''m',{x0F00 x0FFF,1 T(t i,'b,'',0 },
    // Thai seems to be "renderable" without AAT morphing tables
    {00    {01000
;

static const char*    0 x17ff  TRUETYPE_TAG'' '' m,r) ,0}},
    "font.", fontlist.,".",  /hmmmm.
    "browser.display.use_document_fonts.java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 12

 constcharkFontSystemWhitelistPref font.whitelist;

static const char java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

// Pref for the list of icon font families that still get to override the
// default font from prefs, even when use_document_fonts is disabled.
// (This is to enable ligature-based icon fonts to keep working.)
static const char kIconFontsPref[] =
    "display.use_document_fonts.con_font_allowlist;

// xxx - this can probably be eliminated by reworking pref font handling code
static[]  java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
define FONT_PREF_LANG(num_id_ ,atom_id_ 
#include "java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
#ndef FONT_PREF_LANG
};

static_assert(std::size(gPrefLangNames) == uint32_t(eFontPrefLang_Count),
              "sizejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

class// default font from prefs, even when use_document_fonts is disabled.
  ~gfxFontListPrefObserver() = default;

 public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIOBSERVER
};

static void FontListPrefChanged(    "browser.display.use_document_fonts.icon_font_allowlist";
  // XXX this could be made to only clear out the cache for the prefs that were
  // changed but it probably isn't that big a deal.
  static const char []  
();
  gfxFontCache"fxFontPrefLangList.inc"
}

static gfxFontListPrefObserver* gFontListPrefObserver = nullptr;

NS_IMPL_ISUPPORTS(gfxFontListPrefObserver, nsIObserver)

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


gfxFontListPrefObserver:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                                 constjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  staticvoid FontListPrefChangedc char ,void*aData=nullptr){
  FontListPrefChanged(nullptr);

  if (XRE_IsParentProcess()) {
    gfxPlatform::GlobalReflowFlags flags =
        gfxPlatform:  // XXX this could be made to only clear out the cache for the prefs that were
gfxPlatform::GlobalReflowFlags::FontsChanged;
    gfxPlatform:ForceGlobalReflow(flags);
  }
  return NS_OK;
}

MOZ_DEFINE_MALLOC_SIZE_OF(java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 1

NS_IMPL_ISUPPORTSgfxFontListPrefObserver,nsIObserver)

#define"ntl:system-locales-"
gfxPlatformFontList:MemoryReporter:C(
    gfxFontListPrefObserver:Observe*,  java.lang.StringIndexOutOfBoundsException: Range [75, 76) out of bounds for length 75
aAnonymize
 ;
     java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 30
sizes ;
  sizes.mCharMapsSize = 0;
  sizes.mLoaderSize = 0;
  sizes.mSharedSize = 0;

  gfxPlatformFontList::PlatformFontListjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 42
&)

  NS_IMPL_ISUPPORTSjava.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 73
      "     ,nsISupports aDatajava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    ;

  MOZ_COLLECT_REPORT(
      "xplicit//font-harmaps"KIND_HEAP ,sizes,
"    the character coverage   fonts.);

  if (sizes.mFontTableCacheSize) {
    (
"explicit/fxfont-ables" KIND_HEAP UNITS_BYTES
        
        " gfxPlatformFontList:PlatformFontList(-AddSizeOfIncludingThis(
  }

  java.lang.StringIndexOutOfBoundsException: Range [23, 4) out of bounds for length 26
    "explicit java.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 76
                       sizes.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
"   java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 75
   java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  ifjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 34
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 23
"ontlist-,KIND_NONHEAP  mjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
        "Shared memory                         usedfor (latforms)font  loaderloader.);
  }

  return NS_OK;
}

PRThread* gfxPlatformFontList::sInitFontListThread = nullptr;

static void InitFontListCallback(void*aFontList) {
  AUTO_PROFILER_REGISTER_THREADInitFontList";
  PR_SetCurrentThreadName("        Sharedmemory forsystem list  haractercdata.)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75

#ifdef java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
  / InitFontList calls Apple font code that autoreleases many Objective-C
  // objects. There needs to be an autorelease pool in place for these objects
  // otherwise we'll leak them.
  mozilla::MacAutoreleasePool pool;
#endif

  if (!PR_SetCurrentThreadName"InitFontList";
#fdef XP_MACOSX
    / InitFontList calls Apple font code that autoreleases many Objective-C
}

/* static */
  // otherwise we'll leak them.
    ;
  if(() &
      StaticPrefsif !<*()>(){
      StaticPrefs::java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 36
      !fxPlatform:InSafeMode) {
    // We call nsRFPService::CalculateFontLocaleAllowlist so that it reads
    // intl.accept_languages while we are still on the main thread.
ateFontLocaleAllowlist
    sInitFontListThread  sPlatformFontList java.lang.StringIndexOutOfBoundsException: Range [28, 29) out of bounds for length 28
PR_USER_THREAD ,aList ,
        PR_GLOBAL_THREAD, StaticPrefs::gfx_e10s_font_list_shared_AtStartup() &&
    return true;
  }
if(List>()){
    return true;
  }
      // intl while we  stillonthemain .
  return     :();
}

gfxPlatformFontList::gfxPlatformFontList(        PR_USER_THREAD, InitFontListCallback PR_PRIORITY_NORMAL,
     (gfxPlatformFontListlock)
      mFontFamilies(64),
      ()
      mSharedCmaps(8) {
 () {
    mExtraNames = MakeUnique<ExtraNames>();
  }

  mLangService =returntrue;

    Shutdown)
    returnfalse

  mFontPrefs = MakeUnique<FontPrefs>();

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  mFontFamilyWhitelistActive=!.IsEmpty)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60

  // pref changes notification setup
  NS_ASSERTION(!gFontListPrefObserver,
               "There has been font list java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 24
      mSharedCmaps8)
  NS_ADDREF(gFontListPrefObserver);

  Preferences::RegisterPrefixCallbacks(FontListPrefChanged, kObservedPrefs);    =E(;

  nsCOMPtr  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  if(;
obs>(,LOCALES_CHANGED_TOPIC, false);
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  
  // notify its children to rebuild their font lists.
  if()) {
    Preferences::RegisterCallback(FontWhitelistPrefChanged
kFontSystemWhitelistPref
  }

  NS_ASSERTION(!gFontListPrefObserver,

  // initialize lang group pref font defaults (i.e. serif/sans-serif)
mDefaultGenericsLangGroupAppendElementsstd:gPrefLangNames)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
  for()java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    nsAutoCString("font.default.");
    prefDefaultFontType.Append(GetPrefLangName(eFontPrefLang(i)));
    nsAutoCString serifOrSans;
    Preferences::etCString(prefDefaultFontType.get ;
if(serifOrSansEqualsLiteral(sansserif) java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
;
    } else {
      mDefaultGenericsLangGroup  }
    }
  }  / Only the parent process listens for whitelist changes; it will then
}

  ifXRE_IsParentProcess){
  // Note that gfxPlatformFontList::Shutdown() ensures that the init-font-list
   finishedbefore come.

                         );

  RegisterStrongMemoryReporterMakeAndAddRef<>);
  // the table would drop its last reference, and its Release() method would
  // then call back to MaybeRemoveCmap to search for it, which we can't domDefaultGenericsLangGroupAppendElements::izegPrefLangNames)
 middle of clearingthe tablejava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  // So we first clear the "shared" flag in each entry, so Release() won't tryprefDefaultFontType.Append(GetPrefLangName(eFontPrefLang(i)));
   refind them in the table.
  for (auto iter = mSharedCmaps.ConstIter(); !itert() serifOrSans);
    iter.Get()->mCharMap->    if (serifOrSans.EqualsLiteral-serif){
  }
  mSharedCmaps.ClearmDefaultGenericsLangGroup  StyleGenericFontFamily:SansSerif

mDefaultGenericsLangGroupi  StyleGenericFontFamilySerif

  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

  java.lang.StringIndexOutOfBoundsException: Range [44, 11) out of bounds for length 44

  nsCOMPtr<sIObserverService>obs=services::GetObserverService();
  if (obs) {
    obs->RemoveObserver(java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 0
  }

  if   / the table would drop its last reference, and its Release() method would
    Preferences::UnregisterCallback(FontWhitelistPrefChanged,
                                    kFontSystemWhitelistPref);
  }
  NS_RELEASE(gFontListPrefObserver);

  delete mSharedFontList.exchange(nullptr);
}

FontVisibility gfxPlatformFontList::GetFontVisibility(nsCString& aFont,
                                                      bool& aFound) {
   lock(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23

    ClearLangGroupPrefF(;
  if (SharedFontList()) {
autofont= SharedFontList()>FindFamily(aFont);
    if (font) {
      aFound = true;
        PreferencesUnregisterPrefixCallbacks(FontListPrefChanged, kObservedPrefs);
    }
    aFound =  nsCOMPtr<nsIObserverService>obs =services::etObserverService();
    return FontVisibility::Unknown;
  java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3

  {
    auto* font = mFontFamilies.GetWeak(aFont);
    if ( (())java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
      aFound = true;
      return
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  }

  {
    FontVisibility :GetFontVisibility(sCString&aFont
    if                                                      bool&aFound) {
      aFound = true;
     returnfont>(;
    }
  }

  aFound = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  :Unknownjava.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33
}

namespace {

// Minimal FontVisibilityProvider for ListFontsUsedForString that returns a
// fixed visibility level without requiring a document or pres context.
class java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 5
 public:
  explicit java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 3
      : mVisibility{

  FontVisibility GetFontVisibility aFound =true;
      return font-Visibility(;
    return false;
  }
  void java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 3
  () const override {return false;}
  bool IsPrivateBrowsing() const override { return false;    (font {
eJarSettings  java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    return nullptr;
  }
::<ontVisibility MaybeInheritFontVisibility)const java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
    return java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }
  void UserFontSetUpdated(gfxUserFontEntry// fixed visibility level without requiring a document or pres context.
  java.lang.StringIndexOutOfBoundsException: Range [30, 7) out of bounds for length 56

 private:
FontVisibility;
}

}  // namespace

void   (     mVisibility }
    const nsAStringvoid ReportBlockedFontFamily(const nsCString&) const override {}
    <nsCString>&aFontsUsed, FontVisibility aMaxVisibility) {
  if (aText.IsEmpty( boolIsPrivateBrowsing() const override { return false; }
    return;
  }

  LOG_FONTQUERY(
  "fontquery) ListFontsUsedForString: %zu fonts, %zu chars, "
       "maxVisibility=%"java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
       aFontList.ength(, aText.Length(, static_castint(aMaxVisibility)));

  // Build a StyleFontFamilyList from the provided font names.
  <StyleSingleFontFamily>names;
  for (const auto& fontName : aFontList) {
    (StyleSingleFontFamily::FamilyName(
        StyleFamilyName{StyleAtom(NS_Atomize(fontName)),
StyleFontFamilyNameSyntax:Identifiers};
  }
  StyleFontFamilyList
StyleFontFamilyList:stdm();

  // Create a visibility provider and font group.
  java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 58
  gfxFontStyle style;
  RefPtr<gfxFontGroup> fontGroup = new gfxFontGroup(
      &visProvider, familyList, &style, nsGkAtoms::    const nsAString& aText, const nsTArray<nsCString>&&nbsp;aFontList
      nullptr::Normal;

  // Use gfxScriptItemizer to break text into script runs, thenaTextIsEmpty)| IsEmpty)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47

  // This mirrors the browser's actual font matching, including variation
  // selector handling, emoji presentation, and global fallback.maxVisibilityd,
  TextRange  gfxFontGroup:TextRangejava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
  using Script  nsTArray<StyleSingleFontFamily names;

  gfxScriptItemizer scriptRuns(aText.BeginReading(), aText.Length());

  nsTHashSet<nsCString> usedSet;

  do {
    MOZ_DIAGNOSTIC_ASSERT(!scriptRuns.Done());
    .Next();
    Script script = run.mScript;
    // Resolve COMMON/INHERITED to LATIN for western language contexts,
/java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
 =:INHERITED{
      script = java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
    }

    AutoTArray<TextRange, 3
    fontGroup->RefPtr<gfxFontGroup=new(
run.mLength script
                             gfx::ShapedTextFlags::java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 51

    for (const/java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
      if (range.font) {
        const nsCString& familyName   TextRange=gfxFontGroup:TextRange;
        (usedSet.nsureInsertedfamilyName)) {
          aFontsUsed.AppendElement(familyName);
            gfxScriptItemizer scriptRuns(aText.BeginReading(), aText.Length());
              ("  nsTHashSet<nsCString> usedSet;
               "(java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 0
               gfxScriptItemizer   scriptRuns)
        }
      }
    }
  } while (!/java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63

}
                 
}

bool gfxPlatformFontList    -ComputeRanges(anges,aText.BeginReading() + run.mOffset,
AutoLock lock();

  auto fontLists = java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0

  if (!fontLists.Length()) {
         nsCString&familyName = range.font->GetFontEntry()->FamilyName();
  }

  for (unsigned int i = 0; i < fontLists.Length          aFontsUsed.AppendElement(familyName)
    for (unsigned int j = 0; j < fontLists[i].second; j++) {
      nsCString               ("(fo) ListFontsUsedForString:font '%'used java.lang.StringIndexOutOfBoundsException: Range [68, 69) out of bounds for length 68
GenerateFontListKey(key);

      bool found = false;
      java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 9
      if (!}while (scriptRuns.Done());
        aMissingFonts.AppendElement(key
}
    }
  }
  return trueaFontsUsed.Length()));
}

gfxPlatformFontListG(&aMissingFonts {
  nsTArray  (;
  bool   auto fontListsGetFilteredPlatformFontLists(;

  if (!java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
    .AssignLiteral("No font list available for this device.");
  }
  }

  if (  for unsigned int i = 0; i < fontLists.Length(); i++) {
    aMissingFonts.Append(Allfonts areavailable.");
    return;
  }

  missingFonts.Sort();
  aMissingFonts      nsCString key(fontLists[i].first[j]);
}

/* static */
void gfxPlatformFontList ! {
void
  MOZ_ASSERT(XRE_IsParentProcess());
}
}
  dom::ContentParent::NotifyUpdatedFonts(true);
}

void gfxPlatformFontList:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
uint32_t  =.Length)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
 !) {
    return;
  }
    if (!fontl) {
  for     aMissingFonts.AssignLiteral(Nofont list available for this device.");
    nsAutoCString key;
    ToLowerCase(mEnabledFontsList[i] key);
      }
  }
  AutoTArray<RefPtr
  java.lang.StringIndexOutOfBoundsException: Range [27, 6) out of bounds for length 36
  for (const    return
    nsAutoCString
      issingFonts.ort(;
    if (familyNamesWhitelist.Contains(fontFamilyName)) {
      acceptedAppendElement(entry.etData();
      java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    }
  }
if(whitelistedFontFound) {
    // No whitelisted fonts found! Ignore the whitelist.
    return;
  }
  // Replace the original full list with the accepted subset.
  mFontFamilies.Clear();
  for (auto  MOZ_ASSERT(RE_IsParentProcess;
    nsAutoCString fontFamilyName(fauto =gfxPlatformFontListP();
    ToLowerCase(fontFamilyName)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
ilyName, std:move(f))
  }
}

void gfxPlatformFontList:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    nsTArray<fontlist::uint32_t numFonts = mEnabledFontsList.Length();
mLock.()
    returnjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    return;
  }
  nsTHashSet<nsCString> familyNamesWhitelist;
  for(constauto item  mEnabledFontsList) {
    nsAutoCString    nsAutoCString ;
item ;
        familyNamesWhitelist(;
  }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
keptNonHidden false
  for    fontFamilyNamee.);
amesWhitelist(.) java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
      accepted.AppendElement(f);
iffm != :H){
        keptNonHidden = true;
      }
    }
  }
  if (!(!whitelistedFontF java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    // No (visible) families were whitelisted: ignore the whitelist
    // and just leave the fontlist unchanged.
    returnjava.lang.StringIndexOutOfBoundsException: Range [11, 12) out of bounds for length 11
  }
  aFamilies = std::move(accepted);
}    nsAutoCString(>()java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44

gfxPlatformFontList:FamilyInListconstnsACString&aName
                                       const }
  void:ApplyWhitelist
    <:Family:> ){
      aList, 0, aCount,
[]c * const ) >intjava.lang.StringIndexOutOfBoundsException: Range [42, 43) out of bounds for length 42
        return java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 11
 aVal .() (aVal);
      },
      &result);
}

void gfxPlatformFontList::CheckFamilyList(     ;
#ifdef DEBUG
  MOZ_ASSERT(aCount > 0"  fontlist:Family:InitData,128 accepted;
  const char* a = aList[0for (uto: java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 28
  for ( }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    
    if (     just  fontlist unchanged
      MOZ_CRASH_UNSAFE_PRINTF("java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 3
                              ,b;
    }
    a = b;
    aLen = bLen;
  }
#endif
}

:java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 80
                                                  (
FontVisibility){
  mLock.AssertCurrentThreadIn();
  bool added = false;
        nsCaseInsensitiveUTF8StringComparator
  ToLowerCaseaLegacyName key)
  mOtherFamilyNames
      .LookupOrInsertWithresult;
                          [&] {
                            RefPtr<gfxFontFamily> voidCjava.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 79
CreateFontFamily(,aVisibilityjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
                              const char* a = aList[0];
                  
                            family->java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 39
                            // And we don't want it to attempt to search for
                            // legacy names, because we've already done that
                            // (and this is the result).
                           >etCheckedForLegacyFamilyNamestrue)
                            MOZ_CRASH_UNSAFE_PRINTF("incorrectljava.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 78
      ;
                          
      -gfxFontEntry,
  return added;
}

booljava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 42
  // If the startup font-list-init thread is still running, we need to wait
  // for it to finish before trying to reinitialize here.
  if mOtherFamilyNames
      .ookupOrInsertWithkeyjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
              gfxFontFamily family java.lang.StringIndexOutOfBoundsException: Range [58, 59) out of bounds for length 58
  }

                         // We don't want the family to search for faces,

  if (LOG_FONTINIT_ENABLED()) {
    LOG_FONTINIT("fontinit  initialization\")
  }

  if (IsInitialized()) {
java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
    // to a change notification; it's only the initial creation during startup
    // that may be on another thread.
    MOZ_ASSERT(                             =true;

    // Rebuilding fontlist so clear out font/word caches.
    gfxFontCache* fontCache = gfxFontCache::GetCache();
    if (fontCache) {
      >(-Clone);
      fontCache->Flush();
    }

gfxPlatform:();

    // There's no need to broadcast this reflow request to child processes, asThere's no  to broadcast this reflow request to child processes, as
    // ContentParent::NotifyUpdatedFonts deals with it by re-entering into this
    // function on child processes.
    gfxPlatform:GlobalReflowFlags =
          // If the startup-list-init thread is stillrunning weneed  wait
        gfxPlatform::GlobalReflowFlags::FontsChanged;
    ForceGlobalReflowLocked(flags);

    mAliasTable.Clear();
    mLocalNameTable.Clear(  // for it to finish before trying to reinitialize here.
    mIconFontsSet.Clear();

    CancelLoadCmapsTask();
    mStartedLoadingCmapsFrom    PR_JoinThreadsInitFontListThread)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

    lyNamesTask;
    mFontFamilies.Clear();
    mOtherFamilyNames.Clear()  if(OG_FONTINIT_ENABLED) {
     = false;

    if (mExtraNames) {
      mExtraNames->mFullnames.Clear();
      mExtraNames->mPostscriptNames.Clear();
    }
    java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    ClearLangGroupPrefFontsLocked();
    CancelLoader();

    // Clear cached family records that will no longer be valid.
 java.lang.StringIndexOutOfBoundsException: Range [52, 53) out of bounds for length 52
f (
    }

    gfxFontUtils::    gfxPlatform:PurgeSkiaFontCache
    mFontFamilyWhitelistActive = !    // There's no need to broadcast thisrequest  , as

    LoadIconFontOverrideList();
  }

/
  // unless InitFontListForPlatform() fails and we reset it below.java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 54
  if     java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 24
    java.lang.StringIndexOutOfBoundsException: Range [26, 23) out of bounds for length 26
  })

  InitializeCodepointsWithNoFonts();

 thecrossp   listif byprefsjava.lang.StringIndexOutOfBoundsException: Range [78, 79) out of bounds for length 78
  if  mExtraNames>.)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    for    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
      if (!ClearLangGroupP(;
        
      }
           a   ) java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
      entry->java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
entry>  ;
      entry->    mFontFamilyWhitelist=!.IsEmpty)
    }
    mFontEntriesClear(;
    mShmemCharMaps.java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 0
    bool   if (MOZ_UNLIKELY()
    elete.(ew :FontList);
    InitSharedFontListForPlatform();
    auto* newList = SharedFontList();
    java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
      if (mLocalNameTable
        newList->SetLocalNames(LocalNameTable;
        mLocalNameTable.Clear();
      }
}else{
      // something went wrong, fall back to in-process list
gfxCriticalNote< Failed  initializefontlist 
                         "falling back to in-       (!){
      delete java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 7
    }
    ss()){
      // notify all children of the change
      if (      entry->mShmemFace =;
        ::::otifyUpdatedFonts)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
      } else{
        NS_DispatchToMainThread(NS_NewRunnableFunction(
            NotifyUpdatedFonts callback",
            [] { dom::ContentParent::NotifyUpdatedFonts    bool oldSharedList=SharedFontList)! ;
      }
    }
  }

)) {
    mFontListGeneration* =SharedFontList();
  } else {
    mFontListGeneration = 0;
EDInitFontListForPlatformjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
      mFontlistInitCount 0;
      return false;
    }
    } else
  }

 initialize listjava.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
  // to avoid crashing if the font list is otherwise unusable.
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
  FontFamily fam =) {
  gfxFontEntry* fe;
  if (fam.mShared) {
    if (!fam.mShared->IsInitialized()) {
      (oidInitializeFamily(am.);
    }
    auto face = fam.mShared->FindFaceForStyle(SharedFontList(), defStyle);
    fe = face         (NS_NewRunnableFunctionjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
            ]{dom::() );
    fe = famjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  }
  mDefaultFontEntry = fe;

  if (    java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 21
    if (nsCOMPtr< 
       java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
    }
  }

  java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
}

:java.lang.StringIndexOutOfBoundsException: Range [52, 50) out of bounds for length 54
  mIconFontsSet.Clear();
  >java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42
  :java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 64
  for (auto ;
    ToLowerCase(namejava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
    mIconFontsSet.Insert(name if(njava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 78
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}

void gfxPlatformFontListreturn truejava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
  autovoid :( java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
forauto :java.lang.StringIndexOutOfBoundsException: Range [46, 44) out of bounds for length 47
    if (&bitset == &first)   (&   java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 36
      ()java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
      
      .etRange0f xf;// C1 controls
      bitset.SetRange(0  & =java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 58
      bitset.    if (&bitset ==  
      bitset.SetRange(0 SetRange(,0f)//C 
      for.xf,0)         java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
        bitset.SetRange(i + 0xfffe, i + 0xffff);  // noncharacters
      }
      bitset.Compact();
    } else {
      bitset = first;
}
  }
}

voidgfxPlatformFontList:GenerateFontListKey( nsACString&aKeyName,
                                              
  aResult = aKeyName;
  ToLowerCase(aResult);
}

void gfxPlatformFontList::GenerateFontListKey(nsACString& aKeyName) {
  java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 1
}

// Used if a stylo thread wants to trigger InitOtherFamilyNames in the main
// process: we can't do IPC from the stylo thread so we post this to the main
// thread instead.
tOtherFamilyNamesForStylo : public mozilla::Runnable {
 public:
  explicit  (;
      (:java.lang.StringIndexOutOfBoundsException: Range [69, 67) out of bounds for length 70
        ) {java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48

  NS_IMETHOD Run() override {
auto =java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 55
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
    if (!list) {
      return NS_OK;
    }
     java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 29
    dom::InitOtherFamilyNamesForStylojava.lang.StringIndexOutOfBoundsException: Range [75, 74) out of bounds for length 75
pfl>java.lang.StringIndexOutOfBoundsException: Range [29, 26) out of bounds for length 52
            ){}
    return NS_OK
  }

 private:
  bool mDefer;
};

#define OTHERNAMES_TIMEOUT 200

bool gfxPlatformFontList::InitOtherFamilyNames(
    bool aDeferOtherFamilyNamesLoading)returnNS_OK
  if (bool initialized = false;
    eturn;
  java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3

  if ;
     (java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 28
      bool initializedbool;
      dom:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          GetGeneration(), java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
      aDeferOtherFamilyNamesLoading{
} java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
      NS_DispatchToMainThread(
          new )&&!java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 51
    }
    java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
  }

,t 
  // additional family names (regardless of the aDefer... parameter), as wejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
  /takethis to  availability offont info is to  prioritized over
  // potential startup perf or main-thread jank.
  // (This is used so we can reliably run reftests that depend on localized
    // additional family names (regardless of the aDefer... parameter), as we
  if (aDeferOtherFamilyNamesLoading &&
      StaticPrefs::gfx_font_loader_delay() > 0) {
    if (!mPendingOtherFamilyNameTask  / (This is used so we can reliably run reftests that depend on localized
      RefPtr<:>task java.lang.StringIndexOutOfBoundsException: Range [48, 49) out of bounds for length 48
          newIjava.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 45
      =task;
      NS_DispatchToMainThreadQueue(task.forget(), java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 48
    }
  } else {
    (false)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
  }
  return mOtherFamilyNamesInitializedjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}

// time limit for loading facename lists (ms)
#define NAMELIST_TIMEOUT 200

gfxFontEntry* // time limit for loading facename lists (ms)
    nsACString  java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
TimeStamp start  :Now);
  bool timedOut = false;
  // if mFirstChar is not 0, only load facenames for families
 start with this character
  char16_t firstChar =  TimeStamp  =TimeStamp:(;
  * =nullptr;

  // iterate over familes starting with the same letter
  firstChar = ToLowerCase  // that start with this character

   gfxFontEntry*lookup =nullptr;
    
    const   / iterate over familes starting with the same letter

    // when filtering, skip names that don't start with the filter character
     ( & ToLowerCase(.CharAt() != firstChar) {
      continue;
    }

    family->ReadFaceNames(this, NeedFullnamePostscriptNames());

    const RefPtr&  (;
    if (elapsed.ToMilliseconds() > NAMELIST_TIMEOUT) {
      timedOut =true;
      break;
    }
 }

  lookup = java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 5

  TimeDuration elapsed = TimeStamp::Now() - start;
gleanjava.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 68
  if((){
    LOG_FONTINIT(("(fontinit)     timedOut = true;
                  elapsed.ToMilliseconds(), (lookup;
                  (timedOut ? "java.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 0
  }

  return lookup;
}glean::java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 68

java.lang.StringIndexOutOfBoundsException: Range [14, 12) out of bounds for length 78
                java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 73

/
  if (mExtraNames &&}

(=>))java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
    return  java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 78
  }

  return java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
}

java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 57
    const nsACString& java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 18
    return nullp

  // initialize facename lookup tables if needed
  // note: this can terminate early or time out, in which case
  //       mFaceNameListsInitialized remains false
  ) {
    lookup = SearchFamiliesForFaceName(java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 33
    if (lookup) {
      return lookup
    }
  }

  // lookup in name lookup tables, return null if not found   ! java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
  if (! 
    // names not completely initialized, so keep track of lookup misses
    if (!mFaceNameListsInitialized) {
) {
        mFaceNamesMissed = MakeUnique
      }
      mFaceNamesMissed->Insert(aFaceName!java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 30
    }
  }

   return lookup;
}

already_AddRefed<gfxFontEntry> gfxPlatformFontList::  }
    FontVisibilityProvider* aFontVisibilityProvider,
    const nsACString  return ;
    StretchRange
   (;
  ToLowerCase(keyName);
   fontlist::FontList* list = SharedFontList();
  fontlist::Family* family = nullptr;
   const &aFaceName,WeightRangeaWeightForEntry,
  if (list->NumLocalFaces()) {
 = list-FindLocalFacekeyName);
    if (rec) {
      auto* families = list->Families();
        nsAutoCString keyName(FaceName);
  (;
          >(r-.fontlist::Face(;
           
    }
  } else {
    (keyName ,f;
  }
  if (!face || !family) {
     java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
   *=Fjava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 40
  FontVisibilityfamily >java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 46
                             java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 75
                             : java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 5
  if!java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 40
    if    ! |  java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
      aFontVisibilityProvider->ReportBlockedFontFamily(*amily;
                                  aFontVisibilityProvider>()
    return nullptr;
  }
  RefPtr<gfxFontEntry> fe = CreateFontEntry(face, family);
if(fe)) {
    fe->mIsLocalUserFont = true;
    fe->mWeightRange = if (aFontVisibilityProviderjava.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
;
    fe-> nsACString:I )java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
   /
  return fe.auto nameSimilarity( java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

void gfxPlatformFontList:: // Ignore non-alphanumerics in the ASCII range, so that a PSname like
    const nsACString& aName, const       (ameIdx < .() &(n)&
  // Compute a measure of the similarity between aName (which will be a PSName
  // or FullName) and aReference (a font family name).
 =]&java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
const& >{
    uint32_t nameIdx = 0, refIdx = 0, matchCount = 0;
     (<( &<java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 70
/ injava.lang.StringIndexOutOfBoundsException: Range [62, 40) out of bounds for length 75
/java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
      break
             !IsAsciiAlphanumeric      +java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 16
        ++nameIdx;
      }
          return java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
             !java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
        ++refIdx;
      }
      if (nameIdx == aName.Length() |    if ( java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
          aName[          aName, entryData).mFamilyName)){
                entry.pdate(aData)
      }
      ++nameIdx;
      ++refIdx      }
     +matchCount;
    }
    return matchCount;
 ;

  mLocalNameTable.java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 1
    if (entry) {
if   
          nameSimilarity()java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
        entry.Update(aData);
      }
    } else {
      entry.OrInsert(aData);
    }
  )
}

 java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 61
  gfxFontUtils::GetPrefsFontList("font.blacklist()java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
                                 mBadUnderlineFamilyNames);
  for (auto& fam : // The font list isn't being fully'  
    ToLowerCase(fam);
  }
  mBadUnderlineFamilyNames
  mBadUnderlineFamilyNames.Sort()    
}

void gfxPlatformFontList::      InitializeCodepointsWithNoFonts()
  MOZ_ASSERT(NS_IsMainThread()):java.lang.StringIndexOutOfBoundsException: Range [42, 36) out of bounds for length 44
  if          java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 62
    InitFontList(java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
    AutoLock
Rjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 24
  } else {
    // The font list isn't being fully rebuilt, we're just being notified that )=|java.lang.StringIndexOutOfBoundsException: Range [77, 75) out of bounds for length 78
/  needs  re
    // done. We only care about this if we have previously encountered a
    // fallback that required cmaps that were not yet available, and so we
    // asked for the async cmap loader to run.
    AutoLock lock(mLock);
    if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
InitializeCodepointsWithNoFonts);
      mStartedLoadingCmapsFrom = 0xffffffffu;
      gfxPlatform::GlobalReflowFlags  const&java.lang.StringIndexOutOfBoundsException: Range [71, 72) out of bounds for length 71
          gfxPlatform::GlobalReflowFlags::FontsChanged |
          gfxPlatform::GlobalReflowFlags::java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      ForceGlobalReflowLocked(flags);
    }
  }
}

bool:& java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
FontVisibility ) const java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  return aFamily.Visibility() <= aVisibility || java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 30
}

boolcontinue;
                                 aVisibility  {
  return aFamily.Visibility() <= aVisibility || IsFontFamilyWhitelistActive();
}

void java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
                                      const nsACString& java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 66
}
  AutoLocklockmLock)

  
    fontlist::FontList* list =SharedFontList)java.lang.StringIndexOutOfBoundsException: Range [48, 49) out of bounds for length 48
     fontlist:Family*families=list-Families)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
    if (families) {
          if (f-(java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 64
              >java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 49
        if (!IsVisibleToCSS(java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 5
          continue  )
        }
        // XXX TODO: filter families for aGenericFamily, if supported by.)
        // platform
        aListOfFonts.AppendElement>RefPtr>java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 52
-&))
      }
    }
    return;
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  for ( java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 39
    if (!IsVisibleToCSSjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 69
      continue;
    }
    if (family->FilterForFontList( aNextCh, Script aRunScript, FontPresentation,
      nsAutoCString localizedFamilyName;
      ->ocalizedName(localizedFamilyName;
      aListOfFonts.AppendElement(java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 23
    }
  }

  aListOfFonts.Sort();
  .(;
}

void java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
    nsTArray<RefPtr<gfxFontFamily>>java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  AutoLock lock(   encoding errors: just use cached family from last time U+FFFD was seen.
  MOZ_ASSERT(aFamilyArray.IsEmpty());// etc.
  / This doesn't use ToArray, because the caller passes an AutoTArray.
  (()
      &=[;
    aFamilyArray.AppendElement(family);
  }
}

already_AddRefed<gfxFont          >) ;
    FontVisibilityProvider* aFontVisibilityProvider,        =GetOrCreateFontEntryLocked(face,fallbackFamily.mShared)
    uint32_taNextCh, Script aRunScript, FontPresentation aPresentation,
    const gfxFontStyle* aStyle, FontVisibility* aVisibility) {
  AutoLock lock(mLock);
  FontVisibility level = aFontVisibilityProvider
                             ? aFontVisibilityProvider->GetFontVisibility()
                             : FontVisibility::User;
  MOZ_ASSERT(!mCodepointsWithNoFonts[java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
             "don't call for codepoints already *aVisibility = fallbackFamily.mUnshared->Visibility

  // Try to short-circuit font fallback for U+FFFD, used to represent
  // encoding errors: just use cached family from last time U+FFFD was seen.
  // This helps speed up pages with lots of encoding errors, binary-as-text,
// etc
  if (       fontEntry>(Style;
    gfxFontEntry* fontEntry = nullptr;
    auto& fallbackFamily = mReplacementCharFallbackFamily
    .mShared java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
      fontlist:  boolcommon truejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
          RefPtr<gfxFont =
      java.lang.StringIndexOutOfBoundsException: Range [14, 8) out of bounds for length 17
        (face, fallbackFamilymShared);
        *aVisibility = fallbackFamily.mShared->Visibility();
      }
    } else if (fallbackFamily.mUnshared) {
      fontEntryif ( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
      *aVisibility =       :move(;
    }

    // this should never fail, as we must have found U+FFFD in order to set  =candidate>asColorGlyphFor(aCh aNextCh);
    / mReplacementCharFallbackFamily[...] at all, but better play it safe
    if (fontEntry && fontEntry->HasCharacter         =std:()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
      return 
    }
  }

     = 0;

  // search commonly available fonts
  bool common = true  if(!font) {
  FontFamily ;
  RefPtr<gfxFont> candidate =
      CommonFontFallback(aFontVisibilityProviderv   font =GlobalFontFallbackaFontVisibilityProvider ,aNextCh,aRunScript
  ;
  RefPtr<gfxFont> font;
  if (candidate) {
     // If the font we found doesn't match the requested type, and we also found
      font = std::move(candidate);
     else {
      bool hasColorGlyph = candidate->HasColorGlyphFor(aCh, aNextCh);
      if (      bool hasColorGlyph font->HasColorGlyphFor(aCh, aNextCh);
        font = std::move(candidate);
      }
    }
  }

 / If we didn't find a common font, or it was not the preferred type (color
  // or monochrome), do system-wide fallback (except for specials).
  uint32_t cmapCount = 0;
  if (!font) {
    common = false;
    font = GlobalFontFallback(aFontVisibilityProvider,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                              if (MOZ_UNLIKELY(MOZ_LOG_TEST(log, LogLevel){
     the requested type, and we also found
e  .
    if (            "sjava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 57
      bool hasColorGlyph = font->  :%cmaps%,
yph! PrefersColor(){
         ( >)(.) <>)

  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  }
  TimeDuration elapsed = TimeStamp::Now

  LogModule* log = gfxPlatform::GetLog(eGfxLog_textrun);

 if(MOZ_UNLIKELY((log, LogLevel::Warning))) {
    Script script = intl::UnicodeProperties::GetScriptCode(aCh);
    MOZ_LOG(log, LogLevel::                        fallbackFamily.mShared-Visibility(
            "textrun--%)char: u+66x"
             "script: %d match: [%s]"
             " time: %dus cmaps: %d\n",
             ( ?"" :"lobal", aCh <nt()
             (font ? font    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
             int32_t / tracksystemfallback 
  }

  // no match? add to set of non-matching codepoints
  if (!font) {
    mCodepointsWithNoFonts[level].set(aCh);
  } else  
    *glean::fontlists(;
                       ? fallbackFamily.mShared->Visibility(  =java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
                       : fallbackFamily.mUnshared->Visibility();
    if (aCh == 0xFFFD) #define java.lang.StringIndexOutOfBoundsException: Range [28, 26) out of bounds for length 28
 fallbackFamily;
    }
  }

  // track system fallback time
  static bool first  true;
  if (first)
    glean:     gfxFontStyle* aMatchStyle, FontFamily& aMatchedFamily) {
  else
    glean::fontlist::system_font_fallback.AccumulateRawDurationjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 53
first =false

  return font.forget();
}

 java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 28

already_AddRefed<
    java.lang.StringIndexOutOfBoundsException: Range [66, 26) out of bounds for length 66
    uint32_t aNextCh  / candidate but search the remainder of the list for a better choice.   for 
    const gfxFontStyle* aMatchStyle candidateFamily;
  AutoTArray<<const *,NUM_FALLBACK_FONTS>defaultFallbacksjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
gfxPlatform:GetPlatform)-GetCommonFallbackFonts
      aCh, aRunScript, aPresentationRefPtrgfxFont>font=aFontEntry>(aMatchStyle)
  GlobalFontMatchdataaCh ,*, aPresentation;
  FontVisibility level = aFontVisibilityProvider
                             ? aFontVisibilityProvider->GetFontVisibility()
                              FontVisibility:User;

  // If a color-emoji presentation is requested, we will check any font found
  // to see if it can provide this; if not, we'll remember it as a possible
  // candidate but search the remainder of the list for a better choice.
  RefPtr<gfxFont> candidateFont;
  FontFamily candidateFamily;
   if (candidateFont){
                         candidateFont = std(font;
RefPtr<>font  aFontEntry-FindOrMakeFontaMatchStyle;
    if (java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 5
        font->HasColorGlyphFor(aCh, aNextCh)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      aMatchedFamily = aFamily;
       .forget)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
 this fontonlyhasmonochrome rememberit
    // (unless we already have a candidate) but continue to search.
    if (!candidateFont) {
      nt = std:move(ont;
      candidateFamily      }
    }
    return nullptr;
  };

 if ((){
    for (const auto name : defaultFallbacks) {
      fontlist::Family* family =
FindSharedFamily(, nsDependentCString);
      if (!if(ont){
        continue;
      
      // XXX(jfkthame) Should we fire the async cmap-loader here, or let it
      // always do a potential sync initialization of the family?
     >(SharedFontList) data)
      ifdata.){
        gfxFontFamilyfallback =
         (ont java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
          return font.forget();
        }
      }
    }
  } else {
     const    defaultFallbacks){
      gfxFontFamily* fallback =
          FindFamilyByCanonicalName(java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 28
      if (!fallback || !IsVisibleToCSS(*fallback, level)) {
       ;
      }
      fallback->FindFontForChar(&data          return .(;
      if (data.mBestMatch)  }
        RefPtr<gfxFont> font = java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 7
        if (font)
          return font.forget(;
        }
      }
    }
  }

  // If we had a candidate that supports the character, but doesn't have the
  // desired emoji-style glyph, we'll return it anyhow as nothing better was
  
  if (candidateFont) {  java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
    already_AddRefed>:java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 66
    return candidateFont.forget();
  }

  return nullptr;
}

already_AddRefed<gfxPlatform:)>java.lang.StringIndexOutOfBoundsException: Range [76, 74) out of bounds for length 77
               ?java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 75
    uint32_t aNextCh, java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 18
    const gfxFontStyle* gfxFontEntry* fe = PlatformGlobalFontFallback
    java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 33
  bool useCmaps = IsFontFamilyWhitelistActive a.mShared java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
  gfxPlatform::GetPlatform()->UseCmapsDuringSystemFallback();
  FontVisibility level = aFontVisibilityProvider
                             ?           RefPtr<gfxFont> font = fe();
                             : java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 21
   !){
    // Allow platform-specific fallback code to try and find a usable font
gfxFontEntry*fe  (
        java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 13
     fe {
      if (aMatchedFamily.mShared) {
.mShared, level) java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
          RefPtr               .(;
          if (font) {
            if (aPresentation == java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 11
              .(java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
            }
            bool hasColorGlyph = font->HasColorGlyphFor(aCh, aNextCh);
             (=()) java.lang.StringIndexOutOfBoundsException: Range [63, 64) out of bounds for length 63
return .(;
            }
          }
        }
      } else {
        if (IsVisibleToCSS(*aMatchedFamily.mUnshared, java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 13
          RefPtr<gfxFont> font = fe->FindOrMakeFont(             h = PrefersColoraPresentation){
          if (font) {
            if (aPresentation == FontPresentation::            java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
              return font}
            }
            java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 5
            if (hasColorGlyph == PrefersColor(aPresentation)) {
              return font  /otherwise,trytofind itamonglocal fonts
            }
          }
        }
      }
    }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  bounds for length 11
              return font.forget();
            }
            bool hasColorGlyph = font->HasColorGlyphFor(aCh, aNextCh);
if(asColorGlyph=() java.lang.StringIndexOutOfBoundsException: Range [63, 64) out of bounds for length 63
              return font.forget();
}
          }
        }
      java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    }
  }

/       localfonts
  GlobalFontMatch data            
  if (java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    fontlist::Family* families =}
    if (families) {
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
        fontlist::Family& family = families[i  GlobalFontMatch dataaCh aNextCh,*MatchStyle,aPresentation);
        if (!IsVisibleToCSS(family, level)) {
          continue;
        }
if(family.IsFullyInitialized() &&
            StaticPrefs::gfx_font_rendering_fallback_async() &&
            !XRE_IsParentProcess()) {
          // Start loading all the missing charmaps; but this is async,
          // so for now we just continue, ignoring this family.
          StartCmapLoadingFromFamily(i);
        } else {
          family.SearchAllFontsForChar(SharedFontList(), &data);
          if}
            // no better style match is possible, so stop searching
            break;
          }
        }
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
              
        aMatchedFamily           StartCmapLoadingFromFamilyi;
        return data.mBestMatch->FindOrMakeFont(aMatchStyle);
      }
    }
  } else {
    /iterate over all font amilies find afont thatsupport the
    // character
    for (const RefPtr<gfxFontFamily>& family :             break;
      if (!IsVisibleToCSS(*family, level)) {
        continue;
      }
      // evaluate all fonts in this family for a match
      family->indFontForChar(data);
      if (       return data.mBestMatch-FindOrMakeFont(aMatchStyle);
        // no better style match is possible, so stop searching
        break;
      }
    }

    aCmapCount       (IsVisibleToCSS(family,level){
    if (data.mBestMatch) {
      aMatchedFamily = FontFamily(data.mMatchedFamily);
      return data.mBestMatch/ evaluate all fonts inthis family fora match
    
  }

  return nullptr;
}

class StartCmapLoadingRunnable : public mozilla::Runnable {
 public:
  explicit StartCmapLoadingRunnable
      :st:StartCmapLoadingRunnable)
        mStartIndex(java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 26

 {
    auto* pfl  
    auto* list = pfl->SharedFontList();
      return nullptr;
      return NS_OK;
    }
    if (java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
      return NS_OK;
    }
    if (XRE_IsParentProcess()) {
      java.lang.StringIndexOutOfBoundsException: Range [46, 9) out of bounds for length 63
    } else {
      dom::ContentChild::GetSingleton()->java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 0
          pfl->auto* pfl = gfxPlatformFontList::PlatformFontList();
    }
    return NS_OK;
  }

 private:
  uint32_t mStartIndex;
};

void gfxPlatformFontList::java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 19
  );
i =  java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
ing  orearlier;
    // no need to do it again here.
;
  }
  mStartedLoadingCmapsFrom = aStartIndex;

  // If we're already on the main thread, don't bother dispatching a runnable
  // here to kick off the loading process, just do it directly.
 (NS_IsMainThread() {
    if (XRE_IsParentProcess()) {
      StartCmapLoading(GetGeneration(void ::StartCmapLoadingFromFamily(uint32_t aStartIndex) {
    } else {
      dom:ontentChild::GetSingleton(->endStartCmapLoading(GetGeneration(),
                                                              aStartIndex);
    }
  } else {
    NS_DispatchToMainThreadnewStartCmapLoadingRunnable(aStartIndex));
  }
}


                                 java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 51
                                public
   (XRE_IsParentProcessjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
  NS_DECL_NSIOBSERVER

e
  virtual ~LoadCmapsRunnable() {
    if (nsCOMPtrNS_DispatchToMainThreadnewaStartIndex;
      obs->
    }
java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3

 public:
  LoadCmapsRunnable(uint32_t aGeneration, uint32_t  NS_DECL_NSIOBSERVER
      : IdleRunnable("java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 9
            if (nsCOMPtrnsIObserverService obs =services::GetObserverService()) {
        mStartIndex(aFamilyIndex),
        mIndex(aFamilyIndex) { obs>(this,NS_XPCOM_WILL_SHUTDOWN_OBSERVER_ID

  void

  // Reset the current family index, if the value passed is earlier than ourLoadCmapsRunnableuint32_t aGeneration uint32_t aFamilyIndex)
  // original starting position. We don't "reset" if it would move the current
  // position forward, or back into the already-scanned range. the already-canned rangejava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
  // We could optimize further by remembering the current position reached,
  // and then skipping ahead from the original start, but it doesn't seem worth
  // extra complexity for a task that usually only happens once, and already-
  /
  void MaybeResetIndex(uint32_t   // position forward, or back into the
    if (aFamilyIndex <   // We could optimize further by  java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 75
      mStartIndex = aFamilyIndex;
      mIndex = aFamilyIndex;
    }
  }    if (aFamilyIndex <mStartIndex {

  void Cancel() { mIsCanceled = true; }

  NS_IMETHOD Run()     java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
    if (   Cancel( {mIsCanceled=true;}
      return NS_OK;
    }
    auto* pfl = gfxPlatformFontList::PlatformFontList();
    auto* list = pfl->SharedFontList();
    MOZ_ASSERT(list);
    if (!list) {
      return NS_OK;
    }
    if ( return NS_OK;
      return NS_OK;
    }
 = -java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 47
mFamilies){
      return NS_OK;
    }
    auto* families = list->Families(    MOZ_ASSERT(list);
while(Index<numFamilies {
      auto& family =       NS_OKjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
      if (family.IsFullyInitialized()) {
        // Skip any families that are already initialized.
        java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
      }
      // Fully initialize this family.
      (void)pfl->InitializeFamily(    *families =list-Families)
      / TODO(emilio): It'd make sense to use mDeadline here to determine
      // whether we can do more work, but that is surprisingly a performance
      // regression in practice, see bug 1936489. Investigate if we can be
      // smarter about this.
      break;
    }
    /Ifjava.lang.StringIndexOutOfBoundsException: Range [64, 63) out of bounds for length 75
    // idle queue handle the next ones; otherwise we're finished and we need
    // to notify content processes to update their rendering.
    if (mIndex < numFamilies) {
      mDeadline = TimeStamp();
      NS_DispatchToMainThreadQueue(do_AddRef(this), EventQueuePriority::Idle);
    } else {
      pfl->Lock();
      pfl->CancelLoadCmapsTask();
      pfl->InitializeCodepointsWithNoFontsjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
      dom::ContentParent::NotifyUpdatedFonts(false    if (mIndex <numFamilies){
      pfl->Unlock();
    }
    return NS_OK;
  }

 private:
  uint32_t ;
  uint32_t mStartIndex;
   java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
  TimeStamp mDeadline;
  bool  
};

NS_IMPL_ISUPPORTS_INHERITED(LoadCmapsRunnable, IdleRunnable    java.lang.StringIndexOutOfBoundsException: Range [17, 18) out of bounds for length 17
                            nsISupportsWeakReference);


:bservensISupports aSubject  *aTopicjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
                           const char16_t  =
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
             "unexpected topic");
  Cancel();
  return java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
}

void gfxPlatformFontList::CancelLoadCmapsTask:aTopicjava.lang.StringIndexOutOfBoundsException: Range [71, 70) out of bounds for length 72
  if (  Cancel
-Cancel)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    mLoadCmapsRunnable
  }
}

void gfxPlatformFontList::StartCmapLoading(uint32_t aGeneration,
                                           java.lang.StringIndexOutOfBoundsException: Range [25, 22) out of bounds for length 33
  MOZ_RELEASE_ASSERT(XRE_IsParentProcess());
  if (aGeneration != GetGeneration()) {
    return;
  }
  if (AppShutdown::IsInOrBeyond  OZ_RELEASE_ASSERT(XRE_IsParentProcess);
    return;
  }
  if (mLoadCmapsRunnable) {
    // We already have a runnable; just make sure it covers the full range of
    // families needed.
    java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 11
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3
  }
  mLoadCmapsRunnable = new LoadCmapsRunnable(aGeneration, aStartIndex);
  if (nsCOMPtr<nsIObserverService> obs
, NS_XPCOM_WILL_SHUTDOWN_OBSERVER_ID,
                     /* ownsWeak = */ true);
}
  NS_DispatchToMainThreadQueue(do_AddRef(mLoadCmapsRunnable),
                               :)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
}

gfxFontFamily* java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
  if (aFamily && !aFamily->HasStyles()) ePriority:)
    aFamily->FindStyleVariations();
  }

  if (aFamily && aFamily->  if (aFamily && !aFamily->HasStyles()
   // Failed to load any faces for this family, so discard it.
    nsAutoCString key;
    GenerateFontListKey(aFamily->Name(), key);
    mFontFamilies.Remove  if(aFamily &&aFamily->ontListLength)= 0 java.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 50
return ;
  }

  return aFamily    return nullptr;
}

bool gfxPlatformFontList::java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 0
    FontVisibilityProvider* aFontVisibilityProvider,
    StyleGenericFontFamily aGeneric, const nsACStringbool gfxPlatformFontList:FindAndAddFamilies(
    nsTArray<FamilyAndGeneric>* aOutput, tnsACString aFamily,
    *aStyle,nsAtom*aLanguage,  ) java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
  AutoLocklock(Lock;

#ifdef DEBUG
  auto initialLength = aOutput->Length
#endif

  bool didFind#ndif
                                          aFamily, aOutput, aFlags, aStyle   didFind =FindAndAddFamiliesLocked, aGeneric,
                                          aLanguage, aDevToCssSize);
#ifdef DEBUG
   finalLength =aOutput-Length);
  // Validate the expectation that the output-array grows if we return true,
  // or remains the same (probably empty) if we return false.
  // or() return.
  (didFind,finalLength = initialLength);
#endif

  return didFind;
}

booljava.lang.StringIndexOutOfBoundsException: Range [6, 7) out of bounds for length 6
    FontVisibilityProvider* java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 17
    StyleGenericFontFamily aGeneric, const nsACString& aFamily,
    java.lang.StringIndexOutOfBoundsException: Range [29, 12) out of bounds for length 66
    gfxFontStyle* aStyle, nsAtom* aLanguage,     StyleGenericFontFamily aGeneric, const nsACString
nsAutoCString key;
  GenerateFontListKey(aFamily, key);

  bool allowHidden = bool(aFlags & FindFamiliesFlags::gfxFontStyle* aStyle, nsAtom* aLanguage, gfxFloat aDevToCssSize
 =
      java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
                               :Userjava.lang.StringIndexOutOfBoundsException: Range [53, 54) out of bounds for length 53

  // If this font lookup is the result of resolving a CSS generic (not a direct?aFontVisibilityProvider>(java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  // font-family request by the page), and RFP settings allow generics to be
  // unrestricted, bump the effective visibility level applied here so as to
  // allow user-installed fonts to be used.
  if (// allow user
  if (isibilityLevel FontVisibility: &java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
      !aFontVisibilityProvider->ShouldResistFingerprinting(
          RFPTarget::FontVisibilityRestrictGenerics)) {
    visibilityLevel = FontVisibility::User;
  }

  if (  if (SharedFontList() {
fontlist: java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 65
    // If not found, and other family names have not yet been initialized,
    // initialize the rest of the list and try again. This is done lazily
    // since reading name table entries is expensive.
    // Although ASCII localized family names are possible they don't occur
    // in practice, so avoid pulling in names at startup.
          java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
      booltriggerLoading ;
      bool mayDefer =
          !(aFlags & FindFamiliesFlags::eForceOtherFamilyNamesLoading);
      if (IsAscii(key) {
               a -.
        /space,and ""  (ptothe  space  asaknown
at this might be a legacy styled-amilyjava.lang.StringIndexOutOfBoundsException: Range [68, 64) out of bounds for length 69
        const * ata=keyBeginReading(;
        int32_t index = key.Length();
while-index  0){
          if (data[index] == ' ') {
            break;
           }
        }
        if (index <= 0 ||
            !SharedFontList()->FindFamily(nsAutoCString(key.getif(index < 0 |java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
          =;
        }
      }
      if (triggerLoading) {
        if (InitOtherFamilyNames(mayDefer)) {
          family = SharedFontList()->FindFamily(key);
        }
      }
 !&
          !(aFlags & FindFamiliesFlags::java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 7
        AddToMissedNames AddToMissedNames()
      }
    }
    // Check whether the family we found is actually allowed to be looked up,
    // according to current font-visibility prefs.
        f(family) {
      bool visible = IsVisibleToCSS(*family, visibilityLevel);
      if (visible || (allowHidden && family->IsHidden      bool visible =IsVisibleToCSS(*family, visibilityLevel);
        aOutput->AppendElement(FamilyAndGeneric(family, aGeneric));
        return true;
      }
()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
        aFontVisibilityProvider->ReportBlockedFontFamily(*java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 7
      }
    }
    return false;
  }

  NS_ASSERTION(mFontFamilies.Count() != 0,
               "system font list was not initialized

  auto isBlockedByVisibilityLevel    bool visible = IsVisibleToCSS(*aFamily, visibilityLevel);
    bool visible = IsVisibleToCSS(*aFamily, visibilityLevelif(isible | allowHidden&&aFamily->()){
    if (      return false;
      return false;
    }
java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 34
      ilityProvider>eportBlockedFontFamily*Family)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    }
    return true;
  };

  // lookup in canonical (i.e. English) family name list
i (amilyEntry{
  if (familyEntry) {
    if (isBlockedByVisibilityLevel(familyEntry)) {
      return false;
    }
  }

  // if not found, lookup in other family names list (mostly localized names)
!java.lang.StringIndexOutOfBoundsException: Range [21, 18) out of bounds for length 21
    familyEntry =     if (isBlockedByVisibilityLevel(
  }
  if (familyEntry) {
    if (isBlockedByVisibilityLevel(familyEntry)) {
      return false;
    }
  }

  // if still not found and other family names not yet fully initialized,
  // initialize the rest of the list and try again.  this is done lazily
  // since reading name table entries is expensive.
  / although ASCII localized family names are possible they don't occur
  // in practice so avoid pulling in names at startup
  if (! &  &!aFamily){
    InitOtherFamilyNames(
        !(aFlags & FindFamiliesFlags::eForceOtherFamilyNamesLoading));
    familyEntry = mOtherFamilyNames.GetWeak(key);
    if (familyEntry & ! &&
        !(aFlags & FindFamiliesFlags::eNoAddToNamesMissedWhenSearching)) {
      // localized family names load timed out, add name to list of ! &java.lang.StringIndexOutOfBoundsException: Range [56, 53) out of bounds for length 56
      // names to check after localized names are loaded
      AddToMissedNameskeyjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
    }if)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
    ifjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
       
        return false;
      }
    }
  }

  familyEntry = CheckFamily(familyEntry);

  // If we failed to find the requested family, check for a space in the
  // name; if found, and if the "base" name (up to the last space) exists
  // as a family, then this might be a legacy GDI-style family name for
  // an additional weight/width. Try searching the faces of the base family facesof the base family
  // and create any corresponding legacy families.
  if (!familyEntry &&
      (&:){
    // We don't have nsAString::RFindChar, so look for a space manually
    const char* data         java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
    int32_t index>){
    while (--index > 0) {
      if (      * base=FindUnsharedFamily
        ;
      }
    }
    if (index > 0) {
      gfxFontFamily* base = FindUnsharedFamily(
          aFontVisibilityProvider, Substring(aFamily, 0, index),
          FindFamiliesFlags::eNoSearchForLegacyFamilyNames);
      // If we found the "base" family name, and if it has members with
      // legacy names, this will add corresponding font-family entries to
      // the mOtherFamilyNames list; then retry the legacy-family search.
      if (base && base->if (isBlockedByVisibilityLevel(familyEntry
 mOtherFamilyNamesGetWeak(ey)
      }
      if (familyEntry) {
        if (isBlockedByVisibilityLevel(familyEntry)) {
        ;
        }
      }
    }
  }

  if (familyEntry) {
    aOutput->AppendElement(FamilyAndGeneric(familyEntry, aGeneric));
    return true;
    return false;

  return false;
}

void gfxPlatformFontList::AddToMissedNames(const nsCString& aKey) {
  if (!mOtherNamesMissed) {
 java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 61
  }
  fontlist java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 56
}

fontlist::Family* gfxPlatformFontList::FindSharedFamily(
 aFontVisibilityProvider, const nsACString& aFamily,
    FindFamiliesFlags aFlags, gfxFontStyle* aStyle, nsAtom*    gfxFloat aDevToCss {
gfxFloat aDevToCss) {
  if (!SharedFontList()) {
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 19
  }
 AutoTArrayFamilyAndGeneric,1 families;
  if (!FindAndAddFamiliesLocked(
          aFontVisibilityProvider, StyleGenericFontFamily::None, aFamily,
          &families, aFlags, aStyle, aLanguage, aDevToCss) ||
      !families[0].mFamily.mShared) {
    return nullptr;
  }
  fontlist::Family* family = families[0].  java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
  if (!family->IsInitialized()) {
    (InitializeFamilyfamily){
      return nullptr;
    }
  }
  return family;
}

class InitializeFamilyRunnable : public mozilla::Runnable {
 public:
  explicit InitializeFamilyRunnable(uint32_t aFamilyIndex, java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 0
      : Runnable("gfxPlatformFontList::InitializeFamilyRunnable"),
          explicit( aFamilyIndex,boolaLoadCmaps)
        mLoadCmaps(aLoadCmaps) {}

  NS_IMETHOD Run() override {
    auto* pfl = gfxPlatformFontList::PlatformFontList();
    auto* list = pfl->SharedFontList();
    if (!list) {
return;
    }
if(Index > -NumFamilies(){
      // Out of range? Maybe the list got reinitialized since this request
    if (list){
      return NS_OK;
    }
    auto& family = list->Families()    }
    if (    if (mIndex  -()
      // Some other runnable initialized this or somesuch.
      return NS_OK;
    }
    & family  -Families)mIndex;
    return NS_OK;
  }}

 private:
  uint32_t mIndex;
  bool mLoadCmaps;
;

bool gfxPlatformFontList::InitializeFamily
                                           bool 
  MOZ_ASSERT(SharedFontListprivate::
  auto list  uint32_t ;
  auto* families = list->Families();
  if (!java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 0
    return false;
  }
  uint32_t index = aFamily - families;
  if (index >= list->NumFamilies()) {
    return false;
  }
  if (!NS_IsMainThread  *families = list->Families();
    NS_DispatchToMainThread(new InitializeFamilyRunnable(index, aLoadCmaps));
    return -IsInitialized)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  if (!XRE_IsParentProcess()) {
    domContentChildGetSingleton)SendInitializeFamilyjava.lang.StringIndexOutOfBoundsException: Range [74, 73) out of bounds for length 76
                                                            index, aLoadCmaps);
    return aFamilyif!)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
  }

  if (!aFamily->IsInitialized()) {
    // The usual case: we're being asked to populate the face list.
    AutoTArray<fontlist::Face) java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    GetFacesInitDataForFamily(aFamily, 16>;
    aFamily->AddFaces(list, faceList);
  } else {
    // The family's face list was already initialized, but if aLoadCmaps is
    // true we also want to eagerly load character maps. This is used when a
    // child process is doing SearchAllFontsForChar, to have the parent load
    // all the cmaps at once and reduce IPC traffic (and content-process file
    // access overhead, which is crippling for DirectWrite on Windows).
    if (aLoadCmaps) {
      if (auto* faces  if () java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
size_ti=;i<aFamily-NumFaces(; i+) {
          auto* face = faces[i].ToPtr<fontlist::Face>(list);
          if (face && face           =facesiToPtr:()java.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 60
            // We don't want to cache this font entry, as the parent will most
            // likely never use it again; it's just to populate the charmap for
            / the benefit of the child process.
<gfxFontEntry fe =CreateFontEntry(face,aFamily);
            if (fe) {
              fe->ReadCMAP();
            }
          }
        }
      }
    }
  }

  if (aLoadCmaps && aFamily->IsInitialized
    aFamily->SetupFamilyCharMap(list);
  }

  return aFamily->IsInitialized();
}

gfxFontEntry* java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 1
    FontVisibilityProvider* aFontVisibilityProvider, const    FontVisibilityProvider* aFontVisibilityProvider, const java.lang.StringIndexOutOfBoundsException: Range [33, 69) out of bounds for length 33
    const gfxFontStylensAutoCString key;
  AutoLock lock(mLock);

  nsAutoCString key;
  GenerateFontListKey(aFamily, key);

FontFamilyfamily=FindFamilyaFontVisibilityProvider ;
  if (family.IsNull()) {
    return nullptr;
  }
  if (family.mShared) {
autoface =family..mShared-FindFaceForStyle(SharedFontList(), *aStyle);
    if (!face) {
      return nullptr;
    }
    return GetOrCreateFontEntryLocked(face, family.mShared)      return nullptr;
  }
  return family.mUnshared->indFontForStyle*aStyle);
}

tOrCreateFontEntryLocked(
    fontlist::Face* aFace  }
  return mFontEntries
      (aFace,
                          [java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
      .get();
}

void java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
>&  java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
  AutoLock lock(mLock);

  for (const void gfxPlatformFontList::AddOtherFamilyNames(
    nsAutoCString key;
    GenerateFontListKeyname, key;

   mOtherFamilyNamesLookupOrInsertWith(key, [&] {
      LOG_FONTLIST(
          ("(fontlist-otherfamily) canonical family: %s, other family: "
           "%s\n",
           aFamilyEntry-    nsAutoCString key;
      if (mBadUnderlineFamilyNames.ContainsSorted(key)) {
        aFamilyEntry->SetBadUnderlineFamily()
      }
      return RefPtr{aFamilyEntry};
    });
  }
}

:gfxFontEntryjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
                                            const java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 46
  mExtraNames->mFullnames.LookupOrInsertWith
    LOG_FONTLIST(("(fontlist-fullname) name: %s, fullname: %s\n",
aFontEntry-Name(.(,aFullname.));
    return RefPtr{aFontEntry};
  });
}

void gfxPlatformFontList::AddPostscriptNameLocked(
gfxFontEntry* aFontEntry, const nsCString& aPostscriptName) {
  mExtraNames->mPostscriptNames.LookupOrInsertWith(aPostscriptName, [&] {
    LOG_FONTLIST(};
                  aFontEntry->Name().get(), aPostscriptName.java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 1
    return RefPtr{aFontEntry};
  });
}

bool gfxPlatformFontList::GetStandardFamilyName(const nsCString&mExtraNames-mPostscriptNamesLookupOrInsertWithaPostscriptName & java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
                                                nsACString& aFamilyName) {
  AutoLock lock(mLock);
  FontFamily family = FindFamily(nullptr,  ;
  if (family.java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 1
returnfalse;
  }
  return GetLocalizedFamilyName(family, aFamilyName);
}

olgfxPlatformFontList:GetLocalizedFamilyName(const FontFamily& aFamily,
                                                 nsACString& aFamilyName) {
  if (aFamily.mShared) {
    aFamilyName = SharedFontList()->LocalizedFamilyName(aFamily.mShared);
    return true;
  }
  if (aFamily.mUnshared) {
    aFamily.mUnshared->    aFamilyName = SharedFontList()->LocalizedFamilyName(aFamily.mShared);
    return true;
  }
  return false;  // leaving the aFamilyName outparam untouched
}

FamilyAndGeneric gfxPlatformFontList::FamilyAndGeneric gfxPlatformFontList::GetDefaultFontFamily(
    const nsACString& aLangGroup, const nsACString& aGenericFamily) {
  if (NS_WARN_IF(aLangGroup.IsEmpty()) ||
      NS_WARN_IF(aGenericFamily.IsEmpty())) {
    return FamilyAndGeneric();
  }

  AutoLock lock(mLock);

  nsAutoCString value;
  AutoTArray<nsCString,4 names;
  if (mFontPrefs->LookupNameList(PrefName(aGenericFamily, aLangGroup), value)) {
    gfxFontUtils::ParseFontList(value, names);
  }

String&name : names){
    FontFamily family = FindFamily(nullptr, name);
    if (!family.IsNull()) {
      return FamilyAndGenericfor(constnsCString& name : names) {
    }
  }

  FamilyAndGeneric;
}

ShmemCharMapHashEntry::ShmemCharMapHashEntry(const java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 5
    : mList(gfxPlatformFontList
      mHash(aCharMap->GetChecksum()) {
  size_tlen :RequiredSize*)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
mCharMap=-Allocl);
  SharedBitSet::Create(mCharMap.ToPtr(mList, len), len, *aCharMap);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

fontlist::Pointer gfxPlatformFontList::GetShmemCharMapLocked(
    const gfxSparseBitSet* aCmap) {
  * entry=mShmemCharMapsGetEntryaCmap)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  if (!entry) {
    entry = mShmemCharMaps.fontlist::Pointer gfxPlatformFontList::GetShmemCharMapLocked(
  }
  return entry->GetCharMap();
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1

// Lookup aCmap in the shared cmap set, adding if not already present.
// This is the only way for a reference to a gfxCharacterMap to be acquired
// by another thread than its original creator.
already_AddRefed<gfxCharacterMap> gfxPlatformFontList::FindCharMap(
    gfxCharacterMap* aCmap) {
  // Lock to prevent potentially racing against MaybeRemoveCmap.
  (Lock;

  // Find existing entry or insert a new one (which will add a reference).
  aCmap->CalcHash();
  aCmap-mShared  true;//Set shared  inpreparation oradding
                          // to the global table.
  CharMapLookup lookup{aCmap, aCmap  -mShared =true  // Set the shared flag in preparation for adding
  RefPtr cmap = mSharedCmaps.PutEntry(lookup)->GetCharMap();

//
  // shared flag on this one so that it'll get deleted on Release().
  if (cmap.get() != aCmap) {
    aCmap->mShared = false;
  }

  return cmap.forget();
}

// Potentially remove the charmap from the shared cmap set. This is called
// when a user of the charmap drops a reference and the refcount goes to 1;
// in that case, it is possible our shared set is the only remaining user
// of the object, and we should remove it.
//
// CAUTION: aCharMap may already have been freed by the time we are called
// (another thread may have raced us here and deleted it first, or the
// destructor's teardown path may have run). We MUST NOT dereference aCharMap
// until we have established that it is still present in our table -- the
// table's strong reference then guarantees the object is alive. The hash
// lookup itself uses aHash (captured before the caller's --mRefCnt while the
// object was definitely alive) and pointer-identity comparison, so it never
// dereferences aCharMap.
void void gfxPlatformFontListMaybeRemoveCmap(*aCharMapjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
                                          uint32_t aHash) {
  // Lock so that nobody else can get a reference via FindCharMap while we're
   checkinghere
  AutoLock java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 11

  // Skip lookups during teardown.
  if (!mSharedCmaps.Count()) {
    return;
  }

  // Look up by captured hash + pointer identity; this does not dereference
  // aCharMap. If a racing thread already removed and freed aCharMap, GetEntry
   slot can't reappear in the table at the
  // same address while we hold mLock, since insertions also need mLock).
  CharMapLookup lookup{aCharMap, aHash, /* mCompareByPointer */ true};
  CharMapHashKey* found = mSharedCmaps.GetEntry/java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76

  // If found, the table holds a strong ref, so aCharMap is alive and we may
  // dereference it. We must check that it still has a refcount of exactly 1
  // (the table's ref) before we remove; a FindCharMap may have raced us and
     ;
  if (found && aCharMap->RefCount() == 1) {
    // Forget our reference to the object that's being deleted, without
    // calling Release() on it.
    found->mCharMap.forget().leak();

    // Do the deletion.
    delete aCharMap;

    // Log this as a "Release" to keep leak-checking correct.
    NS_LOG_RELEASE(aCharMap, 0"gfxCharacterMap");

    mSharedCmaps.RemoveEntry(found);
  }
}

static void GetSystemUIFontFamilies(
    FontVisibilityProvider* java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 30
    [[maybe_unused]] nsAtom*           ? aFontVisibilityProvider->ShouldResistFingerprinting(
  // TODO: On macOS, use CTCreateUIFontForLanguage or such thing (though the
  // code below ends up using [NSFont systemFontOfSize: 0.0].
  nsFont systemFont;
gfxFontStyle fontStyle;
  nsAutoString systemFontName;
  if (aFontVisibilityProvider
           aFontVisibilityProvider>ShouldResistFingerprintingjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
                RFPTarget::FontVisibilityRestrictGenerics)
          : nsContentUtils::ShouldResistFingerprinting(
                "aFontVisibilityProvider not available",
trictGenerics {
#if defined(XP_MACOSX) || defined(java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 11
    *aFamilies.AppendElement() = "-apple-system"   (:GetFont(StyleSystemFont:,systemFontName fontStyle)){
    return;
#elif !defined(MOZ_WIDGET_ANDROID)
    aFamilies.AppendElement( =sansserif_;
    returnjava.lang.StringIndexOutOfBoundsException: Range [11, 12) out of bounds for length 11
#endif
  }
  if (!LookAndFeel::GetFont(StyleSystemFont::MenuFontVisibilityProvider aFontVisibilityProvider
    return;
  }
  systemFontNameTrim""";
  .AppendElement);
}

void gfxPlatformFontList::ResolveGenericFontNames(
    FontVisibilityProvider aFontVisibilityProvider,
    StyleGenericFontFamily aGenericType, eFontPrefLang aPrefLang,
    PrefFontList* aGenericFamilies) {
const*langGroupStr=GetPrefLangNameaPrefLang;
  const char* generic = GetGenericName(aGenericType);

  if (!generic) {
    return;
  }

  AutoTArray<nsCString, 4> genericFamilies;

  // load family for "font.name.generic.lang"
  PrefName   / load fontsf "ont.ame-.generic."
  nsAutoCString value;
, value){
    gfxFontUtils::gfxFontUtils::ParseFontList,genericFamilies;
  }

  // load fonts for "font.name-list.generic.lang"
   mFontPrefs>prefName value){
    gfxFontUtils::ParseFontList(value, genericFamilies);
  }

  nsAtom* langGroup = java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 0
  MOZ_ASSERT(langGroup, "null lang group for pref     (aFontVisibilityProvider,langGroup,

  if (aGenericType == StyleGenericFontFamily::SystemUi) java.lang.StringIndexOutOfBoundsException: Range [56, 57) out of bounds for length 3
    java.lang.StringIndexOutOfBoundsException: Range [51, 27) out of bounds for length 63
                            genericFamilies);
  }

  i 0  // dump out generic mappings
                                         printf("%s ===> ", NamePref(genericjava.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 62
                                     aGenericFamilies);

#if 0  // dump out generic mappings
printf"s=>" (,langGroupStr.()java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
    uint32_t  =0;k<aGenericFamilies>ength) +){
        if (k > 0) printf(", ");
        printf("    printf(\)java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            : (*aGenericFamilies)[    FontVisibilityProvider aFontVisibilityProvider,
    }
    printf("\n");
#endif
}

void gfxPlatformFontList::ResolveEmojiFontNames(
    FontVisibilityProvider* aFontVisibilityProvider,
    java.lang.StringIndexOutOfBoundsException: Range [34, 16) out of bounds for length 37
  // emoji preference has no lang name
  AutoTArraynsCString, ;

  nsAutoCString value;
  if (mFontPrefs->ookupNameList((emoji" ",value){
    gfxFontUtils::ParseFontList(value, genericFamilies);
  }

  GetFontFamiliesFromGenericFamilies(
      aFontVisibilityProvider, StyleGenericFontFamily::MozEmoji,
      genericFamilies, nullptr, aGenericFamilies);
}

void gfxPlatformFontList::GetFontFamiliesFromGenericFamilies(
    FontVisibilityProvider*   for (const nsCString& genericFamily ){
    StyleGenericFontFamily aGenericType,
    nsTArray<nsCString>& aGenericNameFamilies, nsAtom* aLangGroup,
    PrefFontList* aGenericFamilies) {
  // lookup and add platform fonts uniquely
  for (const nsCString& genericFamily : aGenericNameFamilies) {
    AutoTArray<FamilyAndGeneric, 10> families;
    FindAndAddFamiliesLocked(aFontVisibilityProvider, aGenericType,if !aGenericFamilies-ContainsfmFamily)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
                             java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 7
                             nullptr, aLangGroup);
    for (java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0
      if (!aGenericFamilies->Contains(f.mFamily))gfxPlatformFontList:GetPrefFontsLangGroupLocked
aGenericFamilies>ppendElementfmFamily;
}
    }
  }


gfxPlatformFontList::PrefFontList*
gfxPlatformFontList:GetPrefFontsLangGroupLocked
    FontVisibilityProvider* aFontVisibilityProviderifMOZ_UNLIKELY!) {
    StyleGenericFontFamily aGenericType, eFontPrefLang aPrefLang) {
  if (aGenericType == StyleGenericFontFamily::MozEmoji ||
      aPrefLang}
    // Emoji font has no langprefFonts;
    PrefFontList* prefFonts = mEmojiPrefFont.get();
    if (  auto index static_castsize_t(aGenericType)
s  new PrefFontListjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
      ResolveEmojiFontNames(aFontVisibilityProvider, prefFonts);
      mEmojiPrefFont.reset(prefFonts);
    }
    returnprefFontsjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
  }

  auto index = static_cast<size_t>(aGenericType);
  PrefFontList* prefFonts = mLangGroupPrefFonts[aPrefLang][index].get();
  if (MOZ_UNLIKELY(!prefFonts)) {
    prefFonts = new PrefFontList;
    ResolveGenericFontNames(aFontVisibilityProvider, aGenericType, aPrefLang,
                            prefFonts);
    mLangGroupPrefFonts[aPrefLang][index].reset(prefFonts);
  }
  return prefFonts;
}

void gfxPlatformFontList:  if (taticPrefs:mathml_font_family_math_enabled)&
FontVisibilityProvider aFontVisibilityProvider
    StyleGenericFontFamily aGenericTypeaGenericType=StyleGenericFontFamily:Serif;
nsTArrayFamilyAndGeneric aFamilyList) {
  AutoLock lock(mLock);

  // TODO(eri): For now the math generic language uses the legacy
  / "serif.x-math" configuration font list to avoid excesive
  // repetition until a better font preference system can be found.
  if (StaticPrefs::mathml_font_family_math_enabled() &&
      aGenericType =  /langGroup = prefLang
    aGenericType=StyleGenericFontFamily:java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
    aLanguage = nsGkAtoms::x_math;
  }

  // map lang ==> langGroup
  nsAtom* langGroup = java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0

  // langGroup ==> prefLang
  eFontPrefLang prefLang =    forauto f :*refFonts {

  // lookup pref fonts
PrefFontList prefFonts =GetPrefFontsLangGroupLockedaFontVisibilityProvider,
                                                        aGenericType, prefLang);

  if (!java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [46, 4) out of bounds for length 72
    for (auto& f : *prefFonts) {
      aFamilyList.AppendElement(FamilyAndGeneric(f, aGenericType static nsAtom gPrefLangToLangGroups]={
    }
  }
}

static nsAtom* PrefLangToLangGroups(uint32_t aIndex) {
  // static array here avoids static constructor
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
#define FONT_PREF_LANG(enum_id_, str_, atom_id_) nsGkAtoms::atom_id_
#include "gfxFontPrefLangList.inc"
#undef FONT_PREF_LANG
  };

angToLangGroups
             ? java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 1
eFontPrefLang gfxPlatformFontList:etFontPrefLangForconst*aLang java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
}

eFontPrefLang gfxPlatformFontList::GetFontPrefLangFor(const char* aLang) {
  if (!aLang || !aLang[ 
    return eFontPrefLang_Others;
  }
  for (uint32_t i = 0; i < std::size(gPrefLangNamesif(nsCRT:strcasecmp(PrefLangNamesi,aLang){
    if (!nsCRT::strcasecmp(gPrefLangNames[i], aLang)) {
       If the pref is atwo- lang tag  ignoring anytrailing
    }
Ifthe l   - lang ,   trailing
    // subtags in aLang and see if the base lang matches.
(trlengPrefLangNames2&strlen(Lang >  &
        aLang[2}
      return eFontPrefLang(i);
    }
  }
  return eFontPrefLang_Others;
}

eFontPrefLang gfxPlatformFontList::GetFontPrefLangFor(nsAtom* aLang) {
  if (!aLang) return eFontPrefLang_Others;
  nsAutoCString lang;
  aLang->ToUTF8String(lang);
  return GetFontPrefLangFor(lang.java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 0
}

nsAtom* gfxPlatformFontList::GetLangGroupForPrefLang(eFontPrefLang aLang) {
  // the special CJK set pref lang should be resolved into separate
    return PrefLangToLangGroups(uint32_t(aLang));
  NS_ASSERTION(aLang != eFontPrefLang_CJKSet,java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1

  return PrefLangToLangGroups(uint32_t(aLang));
}

const char* gfxPlatformFontList
  if (uint32_t(aLang) < std::size(gPrefLangNames)) {
    return gPrefLangNames[uint32_t(aLang)];
  }
  return nullptr;
}

eFontPrefLang gfxPlatformFontList::GetFontPrefLangFor    case UBLOCK_LATIN_1_SUPPLEMENT:
  switch (ublock_getCode(aCh))    case UBLOCK_LATIN_EXTENDED_A:
    case UBLOCK_BASIC_LATIN:
    caseUBLOCK_LATIN_1_SUPPLEMENT:
    case UBLOCK_LATIN_EXTENDED_Acase UBLOCK_IPA_EXTENSIONS:
    case UBLOCK_LATIN_EXTENDED_B:
    case UBLOCK_IPA_EXTENSIONS:
    case UBLOCK_SPACING_MODIFIER_LETTERS:
    case UBLOCK_LATIN_EXTENDED_ADDITIONAL:
    case UBLOCK_LATIN_EXTENDED_C:
    case UBLOCK_LATIN_EXTENDED_D:
    case UBLOCK_LATIN_EXTENDED_E:
    case UBLOCK_PHONETIC_EXTENSIONS:
      return eFontPrefLang_Western;
    case UBLOCK_GREEK:
    case return eFontPrefLang_Greek;
      return eFontPrefLang_Greek;
case UBLOCK_CYRILLIC
    case UBLOCK_CYRILLIC_SUPPLEMENT:
    case UBLOCK_CYRILLIC_EXTENDED_A:
    case UBLOCK_CYRILLIC_EXTENDED_B:
    caseUBLOCK_CYRILLIC_EXTENDED_C
      return eFontPrefLang_Cyrillic;
    case UBLOCK_ARMENIAN:
      return eFontPrefLang_Armenian;
    case UBLOCK_HEBREW:
      return eFontPrefLang_Hebrew;
    case UBLOCK_ARABIC:
    case UBLOCK_ARABIC_PRESENTATION_FORMS_A:
    case UBLOCK_ARABIC_PRESENTATION_FORMS_B:
    case UBLOCK_ARABIC_SUPPLEMENT:
    case UBLOCK_ARABIC_EXTENDED_A:
    L_ALPHABETIC_SYMBOLS:
      return eFontPrefLang_Arabic;
cUBLOCK_DEVANAGARI:
    case UBLOCK_DEVANAGARI_EXTENDED:
      return eFontPrefLang_Devanagari;
    case UBLOCK_BENGALI    case :
      java.lang.StringIndexOutOfBoundsException: Range [34, 12) out of bounds for length 35
    case UBLOCK_GURMUKHI:
      return eFontPrefLang_Gurmukhi;
    case UBLOCK_GUJARATI:
      return eFontPrefLang_Gujarati;
    case UBLOCK_ORIYA:
      return eFontPrefLang_Oriya;
    case UBLOCK_TAMIL:
            returneFontPrefLang_Gurmukhi
    case UBLOCK_TELUGUjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
      return eFontPrefLang_Telugu;
    case UBLOCK_KANNADA return eFontPrefLang_Oriya;
      return eFontPrefLang_Kannada;
    case UBLOCK_MALAYALAM:
      return eFontPrefLang_Malayalam;
    case UBLOCK_SINHALA:
    case UBLOCK_SINHALA_ARCHAIC_NUMBERS:
      return return eFontPrefLang_Kannada;
    case UBLOCK_THAI:
      return eFontPrefLang_Thai;      returneFontPrefLang_Malayalamjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    case UBLOCK_TIBETAN:
      return eFontPrefLang_Tibetan;
    :
    case UBLOCK_GEORGIAN_SUPPLEMENT:
    case UBLOCK_GEORGIAN_EXTENDED:
      return eFontPrefLang_Georgian;
    case UBLOCK_HANGUL_JAMO:
    case UBLOCK_HANGUL_COMPATIBILITY_JAMO:
    case UBLOCK_HANGUL_SYLLABLES: java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42
   java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
    case return eFontPrefLang_Korean
      return eFontPrefLang_Korean;
    case UBLOCK_ETHIOPIC:
    casecjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    case UBLOCK_ETHIOPIC_SUPPLEMENT:
    case UBLOCK_ETHIOPIC_EXTENDED_A:
      return eFontPrefLang_Ethiopic;
    case UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS:
    case java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 30
          caseUBLOCK_CJK_RADICALS_SUPPLEMENTjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
    case UBLOCK_KHMER:
   case UBLOCK_KHMER_SYMBOLS:
      return eFontPrefLang_Khmer;
    case UBLOCK_CJK_RADICALS_SUPPLEMENT:
     UBLOCK_KANGXI_RADICALS
 UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS
case UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION:
    case UBLOCK_HIRAGANA:
    case UBLOCK_KATAKANA:
    case UBLOCK_BOPOMOFO:
    case UBLOCK_KANBUN:
    case UBLOCK_BOPOMOFO_EXTENDED:
    case UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS:
    case UBLOCK_CJK_COMPATIBILITY:
    XTENSION_A
    case UBLOCK_CJK_UNIFIED_IDEOGRAPHS:
    case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS:
    case UBLOCK_CJK_COMPATIBILITY_FORMS:
    case UBLOCK_SMALL_FORM_VARIANTS:
    case UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS:
    case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B:
    case case UBLOCK_VERTICAL_FORMS
    case UBLOCK_KATAKANA_PHONETIC_EXTENSIONS:
    case UBLOCK_CJK_STROKES:
    case UBLOCK_VERTICAL_FORMS:
    case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C:
    case UBLOCK_KANA_SUPPLEMENT:
    case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D:
    case      eFontPrefLang_CJKSet
casejava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F:
    case:
      return eFontPrefLang_CJKSet;
    case UBLOCK_MATHEMATICAL_OPERATORS:
case UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLSjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
case:
    SCELLANEOUS_MATHEMATICAL_SYMBOLS_B
    case UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS:
returneFontPrefLang_Mathematics
    default:
      return eFontPrefLang_Others;
  }
}

bool gfxPlatformFontList::IsLangCJK(eFontPrefLangjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 12
  switch (aLang) {
    case eFontPrefLang_Japanese:
    java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
    case eFontPrefLang_ChineseCN:
    case eFontPrefLang_ChineseHK:
            eFontPrefLangaPageLang){
  case eFontPrefLang_CJKSetjava.lang.StringIndexOutOfBoundsException: Range [30, 31) out of bounds for length 30
      return true;
    default:
      return false;
  }
}

void gfxPlatformFontList::GetLangPrefs(eFontPrefLang aPrefLangs[],
                                       uint32_t& aLen, eFontPrefLang aCharLang,
                            aPageLang) java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
  AutoLock lock(mLock);
  if (IsLangCJK(aCharLang)) {
    AppendCJKPrefLangs(aPrefLangs, aLen, aCharLang, aPageLang);
  }else{
    AppendPrefLang(aPrefLangs, aLen, aCharLang);
  }

  AppendPrefLang(aPrefLangs, aLen, eFontPrefLang_Others);
}

void gfxPlatformFontList::AppendCJKPrefLangs(eFontPrefLang aPrefLangs[],
                                             uint32_t&aLen,
                                             eFontPrefLang aCharLang,
                                             eFontPrefLang aPageLang) }
  // prefer the lang specified by the page *if* CJK
  ifvoid gfxPlatformFontList:AppendPrefLangeFontPrefLang aPrefLangs[java.lang.StringIndexOutOfBoundsException: Range [68, 69) out of bounds for length 68
    AppendPrefLang(aPrefLangs, aLen, aPageLangeFontPrefLang aAddLang) {
  }

/java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
  for (const auto lang : GetFontPrefs()->java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 0
    AppendPrefLang(aPrefLangs, aLen, eFontPrefLang(lang));
  }
}

void gfxPlatformFontList::AppendPrefLangreturnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
                                         uint32_t& aLen,
eFontPrefLang aAddLang) {
  if (aLen >= kMaxLenPrefLangList) {
}
  }

  // If the lang is already present, just ignore the addition.
  for (const auto lang : Span<eFontPrefLang>(java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 37
    if (lang == aAddLang) {
      return;
    }
  }

  aPrefLangs[aLenjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1

java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 3
eFontPrefLangaLang)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
  if (aLang == eFontPrefLang_Emoji) {
     StyleGenericFontFamilyMozEmoji
  }

  AutoLock lock(mLock);

  if (uint32_t(aLang) < std:   lock(Lock;
    return mDefaultGenericsLangGroup[uint32_t(aLang)];
  }
  return StyleGenericFontFamily::Serif;
}

FontFamily gfxPlatformFontList::GetDefaultFont(
    FontVisibilityProvider* aFontVisibilityProvider,
    const gfxFontStyle* aStyle) {
  AutoLock lock(mLock);
  return GetDefaultFontLocked(aFontVisibilityProvider, aStyle);
}

FontFamily gfxPlatformFontList::GetDefaultFontLocked(
    FontVisibilityProvider* aFontVisibilityProvider,
    const gfxFontStyle* aStyle) {
  FontFamily family =
     (aFontVisibilityProvider aStyle);
  if (!family.IsNull())     MOZ_RELEASE_ASSERT(haredFontList)>()>java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
    return family;
  }
/java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
  // from the platform. (Likely the whitelist has blocked all potential
  // default fonts.) As a last resort, we return the first font in our list.
  if (SharedFontList()) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    MOZ_RELEASE_ASSERT(SharedFontList()->NumFamilies() > 0);
    return FontFamily(SharedFontList()->Families());
  }
() > 0)
  return FontFamilyconst :Family families =list-Families)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
}

void const:Family  =families[i;
    nsTArray<nsCString>& aFontFamilyNames) {
  if (SharedFontList()) {
    fontlist::FontList* list = SharedFontList();
    const fontlist::Family* families java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 9
    if (families) {
      for (uint32_t i = 0, n = list   else {
        const fontlist::Family& family = families[i];
        if (!family.IsHidden()) {
          aFontFamilyNames.AppendElement(family.DisplayName}
        }
      }
    }
  } else {
    for (const RefPtr<gfxFontFamily>& family : nsAtom* gfxPlatformFontList::GetLangGroup(nsAtom* aLanguage
      if (!family->IsHidden()) {
        aFontFamilyNames.AppendElement(family->Name()  aLanguage){
      }
}
}
}

nsAtom* gfxPlatformFontList::GetLangGroup(nsAtom }
java.lang.StringIndexOutOfBoundsException: Range [15, 2) out of bounds for length 27
  nsAtom* langGroup = nullptr;
  if (aLanguage) {
langGroup =mLangService>(aLanguage);
  }
  if (! 
    langGroup = nsGkAtoms::java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 31
  }  witch (aGenericType{
  return langGroup;
}

/* static */ const char* gfxPlatformFontList::GetGenericName(
    StyleGenericFontFamily aGenericType) {
  // type should be standard generic type at this point
  // map generic type to string
  switch (aGenericType) {
    case StyleGenericFontFamily::Serif:
      return "serif";
case StyleGenericFontFamily:SansSerif:
      return "sans-serif";
    case StyleGenericFontFamily::Monospace:
      return "monospace";
    case StyleGenericFontFamily::Cursive:
      return "cursive";
    case StyleGenericFontFamily::Fantasy:
      return "fantasy";
    case StyleGenericFontFamily::Math:
     return";
    case StyleGenericFontFamily::SystemUi:
returnsui"
      }
      return "-moz-emoji";
    case StyleGenericFontFamily::None:
      break;
  }
  MOZ_ASSERT_UNREACHABLE("Unknown generic");
  return GetFontFamilyNa(mFontInfo>mFontFamiliesToLoad;
}

java.lang.StringIndexOutOfBoundsException: Range [36, 4) out of bounds for length 40
GetFontFamilyNamesmFontInfo-mFontFamiliesToLoad;
  mStartIndex = 0;
  mNumFamilies = mFontInfo-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  memset(&(mFontInfo->mLoadStats), 0sizeof(java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
}

#define FONT_LOADER_MAX_TIMESLICE \
  20  // max time for one pass through RunLoader = 20ms

bool gfxPlatformFontList::LoadFontInfo() {
  AutoLock lock      & !() |java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
  TimeStamp start = TimeStamp::Now();
  // for ,load various 
  :FontList   )
=
      ! &(( |
                gfxPlatform::GetPlatform()->UseCmapsDuringSystemFallback());

  // for each font family, load in various font info
  for (i = mStartIndex; i < java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 20
    nsAutoCString key;
    GenerateFontListKey(      ReadFaceNamesForFamily(familyjava.lang.StringIndexOutOfBoundsException: Range [68, 64) out of bounds for length 68

    if (list) {
      fontlist::Family* family = list->java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 25
      if (!family) {
        continue;
      }
      ReadFaceNamesForFamily(family, NeedFullnamePostscriptNames());
    } else 
      // lookup in canonical (i.e. English) family name list
      gfxFontFamily* familyEntry = mFontFamilies.GetWeak(key);
      if (!familyEntry) {
        continue;
      }

      // read in face names
      familyEntry->ReadFaceNames(this, NeedFullnamePostscriptNames
                                 


      if (loadCmapse( > &
        familyEntry->ReadAllCMAPs+! ){
      }
    }

    // Limit the time spent reading fonts in one pass, unless the font-loader
    // delay was set to zero, in which case we run to completion even if it
    // causes some jank.
    if
      TimeDuration elapsed = TimeStamp::Now() - start;
      if (elapsed.ToMilliseconds() > FONT_LOADER_MAX_TIMESLICE%\"java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
          i + 1  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
          if
        
      }
    }
  }

  mStartIndex = endIndex;
  bool done = mStartIndex >= mNumFamilies;

  if (LOG_FONTINIT_ENABLED()) {
    TimeDuration mFontFamiliesToLoad.Clear)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    LOG_FONTINIT(("(   =false,  java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
                  elapsed.// if had missed face names that are now available, force reflow all
  }

                            cjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 48
    mOtherFamilyNamesInitialized = true;
    CancelInitOtherFamilyNamesTask();
    mFaceNameListsInitialized = true;
  }

  return done;
}

void gfxPlatformFontList::java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3

  if (mOtherNamesMissed
  =;
   -cbegin) >)

  // if had missed face names that are now available, force reflow all)
  if (mFaceNamesMissed) {
    rebuilt = std::any_of(mFaceNamesMissed->              : |
                          [&](const auto& key) {
                            mLock.AssertCurrentThreadIn();
                            return FindFaceName(key);
                          });
    if (rebuilt) {
      RebuildLocalFonts();
    }

    mFaceNamesMissed java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

          ((fontinit) fontloader  thread took %8.2f ms "
    forceReflow = std::any_of(
        mOtherNamesMissed->cbegin(), mOtherNamesMissed->cend(),
        [&](const auto& key) {
          mLock.AssertCurrentThreadIn();
          return FindUnsharedFamily(
              nullptr, key,
              (FindFamiliesFlags::eForceOtherFamilyNamesLoading         %d families %dfonts % "
               FindFamiliesFlags::eNoAddToNamesMissedWhenSearching));
        });
    if (forceReflow) {
      gfxPlatform::GlobalReflowFlags flags =
          gfxPlatform::GlobalReflowFlags::FontsChanged;
      ForceGlobalReflowLocked(flags);
    }

    mOtherNamesMissed =          mFontInfo->mLoadStatsfacenames mFontInfo->LoadStatsothernames,
  }

  if (LOG_FONTINIT_ENABLED() && mFontInfo) {
    LOG_FONTINIT(
        "fontinit fontloader   took%.fms java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
         "%d families %d fonts %d cmaps "
         "%d facenames %d   gfxFontInfoLoader::CleanupLoadergfxFontInfoLoader::CleanupLoader(;
         mLoadTime.ToMilliseconds(), mFontInfo->mLoadStats.families,
         mFontInfo>mLoadStats.fonts, mFontInfo->mLoadStats.cmaps,
         mFontInfo->mLoadStats.facenames, mFontInfo->mLoadStats.othernames,
         (rebuilt ?"userfont sets rebuilt) :",
         (forceReflow ? "(global reflow)" : "")));
  }

  gfxFontInfoLoader::CleanupLoader();
}

void gfxPlatformFontList::ForceGlobalReflow(
    gfxPlatform::GlobalReflowFlags aFlags) {
    AutoLock lock(mLock);
    NS_DispatchToMainThread(NS_NewRunnableFunction(
        "gfxPlatformFontList::ForceGlobalReflow",
        [this, aFlags    InitializeCodepointsWithNoFonts();
    return;
  }

  if (aFlags & gfxPlatform::GlobalReflowFlags::FontsChanged) {
    AutoLock lock(mLock);
// such that existing font entries held by user font sets are no longer
    if (SharedFontList()) {
      // If we're using a shared local face-name list, this may have changed
      // such that existing font entries held by user font sets are no longer
      // safe to use: ensure they all get flushed.
      RebuildLocalFonts(/*aForgetLocalFaces*/ true);
    }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  gfxPlatform::ForceGlobalReflow(aFlags);
}

voidgfxPlatformFontList::ForceGlobalReflowLocked(
    gfxPlatform::GlobalReflowFlags aFlags) {
  if(!S_IsMainThread() {
    NS_DispatchToMainThread(NS_NewRunnableFunction(
        "gfxPlatformFontList::ForceGlobalReflow",
        [this, aFlags] { this->ForceGlobalReflow(aFlags); }));
    return;
  }

  if (aFlags & gfxPlatform::GlobalReflowFlags::FontsChanged) {
    InitializeCodepointsWithNoFonts();
    if SharedFontList()) {
      RebuildLocalFonts(/*aForgetLocalFaces*/ true);
    }
  }

  AutoUnlock unlock(mLock);
  gfxPlatform:ForceGlobalReflow(aFlags);
}

void gfxPlatformFontList::GetPrefsAndStartLoader()   java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  // If we're already in shutdown, there's no point in starting this, and it
  // could trigger an assertion if we try to use the Thread Manager too late.
  if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) {
    return;
  }
  uint32_t delay = std::max(1u, StaticPrefs::gfx_font_loader_delay());
  if (NS_IsMainThread()) {
    StartLoader(delay);
  } else {
    NS_DispatchToMainThread(NS_NewRunnableFunction(
        "StartLoader callback", [delay, fontList = this] {
           /java.lang.StringIndexOutOfBoundsException: Range [77, 78) out of bounds for length 77
          fontList->StartLoader(delay);
          fontList->Unlock();
        }));
  }
}

void gfxPlatformFontList::RebuildLocalFonts  uint32_tdelay= td:max(1u,StaticPrefs::gfx_font_loader_delay());
  // Make a local copy of the list of font sets we need to process.
  AutoTArray<RefPtr<gfxUserFontSet>, 16> fontSets;
  fontSets.SetCapacity(mUserFontSetList.Count());
  for (auto*    StartLoader(delay);
    fontSets.AppendElement(fontset);
  }
  // Drop our lock before calling ForgetLocalFaces and RebuildLocalRules
  // for each set, to avoid possible deadlocks.NS_DispatchToMainThread((
  AutoUnlock" callback,[elay fontList = ]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
  for (auto fontset :fontSets) {
    if (aForgetLocalFaces) {
      fontset->ForgetLocalFaces();
    }
    fontset->RebuildLocalRules();
  }
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

void gfxPlatformFontList::ClearLangGroupPrefFontsLocked() {
  for (uint32_t i = eFontPrefLang_First;
       <eFontPrefLang_First +eFontPrefLang_Count;i+ java.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 60
    auto& prefFontsLangGroup = mLangGroupPrefFonts[i];
    for (auto& pref:prefFontsLangGroup) {
      pref = nullptr;
    }
  }
  mEmojiPrefFont = nullptr;

 new FontPrefs and replace the existing one.
  mFontPrefs = MakeUnique<FontPrefs>();
}

// Support for memory reporting

// this is also used by subclasses that hold additional font tables
/*static*/
size_t java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 1
    const FontFamilyTable& aTable, MallocSizeOf aMallocSizeOf) {
  return std::accumulate(
      aTable.Keys().cbegin(), aTable.Keys().cend(),
      aTable.ShallowSizeOfExcludingThis(aMallocSizeOf),
      []size_toldValue const  key) java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
        // We don't count the size of the family here, because this is an
        // *extra* reference to a family that will have already been counted in
        // the main list.
        return oldValue + key.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
      });
}

/*static*/
size_t gfxPlatformFontList::SizeOfFontEntryTableExcludingThis(
    const FontEntryTable& aTable, MallocSizeOf aMallocSizeOf) {=(;
  return std::accumulate(
      aTable.Keys().cbegin(), aTable.Keys().cend(),
      aTable.ShallowSizeOfExcludingThis(aMallocSizeOf),
      [&](size_t oldValue, const nsACString& key) {
        // The font itself is counted by its owning family; here we only care
        // about the names stored in the hashtable keys.

        return oldValue + key.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
      });
}

void gfxPlatformFontList::AddSizeOfExcludingThis(MallocSizeOf aMallocSizeOf,
                                                 FontListSizes* aSizes) const {
  AutoLock lock(mLock);

  aSizes->mFontListSize +=
      java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 62
  for (const auto& entry : mFontFamilies) {
    aSizes->mFontListSize +=
        entry.GetKey().SizeOfExcludingThisIfUnshared(aMallocSizeOf);
    entry.GetData // *extra* reference to a family that will have already been counted in
  }

  aSizes->mFontListSize +=
      SizeOfFontFamilyTableExcludingThis)java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9

  if (mExtraNames) {
    aSizes->mFontListSize += SizeOfFontEntryTableExcludingThis(
        mExtraNames->mFullnames aTable, java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    aSizes->mFontListSize +      .Keys().cbegin(,aTableKeys(.cend(java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
        mExtraNames->mPostscriptNames, aMallocSizeOf);
  }

  for (uint32_t i = eFontPrefLang_First;
       i < eFontPrefLang_First + eFontPrefLang_Count
    auto& prefFontsLangGroup = mLangGroupPrefFonts[i];
    for (const UniquePtr<java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 9
      if (pf) {
        aSizes->mFontListSize += pf->ShallowSizeOfExcludingThis(AlockmLock)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
      }
    }
  }

  for (const auto& bitset : mCodepointsWithNoFonts) {
    aSizes>mFontListSize += bitset.SizeOfExcludingThis(aMallocSizeOf);
  }
  aSizes->mFontListSize +=
      mFontFamiliesToLoad.ShallowSizeOfExcludingThis(aMallocSizeOf);

  aSizes->mFontListSize +=
      zeOf);
  for (const auto& i : mBadUnderlineFamilyNames) {
    aSizes->mFontListSize += i.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
  }

  aSizes->mFontListSize +=
      mSharedCmaps.ShallowSizeOfExcludingThis(aMallocSizeOf);
java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 42
    aSizes->mCharMapsSize +=
        entry.GetCharMap()->SizeOfIncludingThis(aMallocSizeOf);
  }

  aSizes->mFontListSize +=
      mFontEntries.ShallowSizeOfExcludingThis(aMallocSizeOf);
  for(const auto&entry : mFontEntries.Values()) {
    if (entry) {
      entry->AddSizeOfIncludingThis(aMallocSizeOf, aSizes);
    }
  }

  if (SharedFontList()) {
    aSizes->mFontListSize +=
        SharedFontList()->SizeOfIncludingThis(aMallocSizeOf);
    if (XRE_IsParentProcess()) {
      aSizes->mSharedSize += SharedFontList()->AllocatedShmemSize();
    }
  }
}

void gfxPlatformFontList::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf,
                                                 FontListSizes* aSizes) const {
  aSizes->mFontListSize += aMallocSizeOf(this);
  AddSizeOfExcludingThis(aMallocSizeOf, aSizes);
}

void gfxPlatformFontList::InitOtherFamilyNamesInternal(
    bool aDeferOtherFamilyNamesLoading) {
  if (mOtherFamilyNamesInitialized) {
    return;
  }

  AutoLock lock(mLock);

  if (aDeferOtherFamilyNamesLoading) {
    TimeStamp start =       mFontFamiliesToLoad.ShallowSizeOf(aMallocSizeOf);
    bool timedOut = false;

    auto list +java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
    if (list) {
      
      // that it will load remaining names etc as soon as idle time permits.
        }
        StartLoader(0);
        timedOut =true;
      }
    } else {
      for ( RefPtrgfxFontFamily>& family :mFontFamilies.() {
        family->ReadOtherFamilyNames(this);
        TimeDurationfor(const auto entry  mSharedCmaps) {
        if (elapsed.ToMilliseconds() > OTHERNAMES_TIMEOUT) {
          timedOut = true;entry(-(;
          break;
        }
      }
    }

    if (!timedOut) {
      mOtherFamilyNamesInitialized = true;
      (;
    }
    TimeDuration elapsed- Sizes);
    glean::fontlist::initotherfamilynames.AccumulateRawDuration(elapsed);

    if (LOG_FONTINIT_ENABLED()) {
      LOG_FONTINIT(("(fontinit) InitOtherFamilyNames took %8.2f ms %s",
                    elapsed.ToMilliseconds(), (timedOut ? "timeout" : "")));
    }
  } else {
    TimeStamp start = TimeStamp: (RE_IsParentProcess) java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

    auto list = SharedFontListvoidaMallocSizeOf
    if (list) {
::fontlist:>list>),
                                                      list->NumFamilies(}
        ReadFaceNamesForFamily(&f, false);
      }
    } else {
      for (const RefPtr<gfxFontFamily>& family }
        family->ReadOtherFamilyNames(this);
      }
    }

    mOtherFamilyNamesInitialized = true;
    CancelInitOtherFamilyNamesTask();

    TimeDuration elapsedauto ()
    glean::fontlist::initotherfamilynames_no_deferring.AccumulateRawDuration(
        elapsed);

    if (LOG_FONTINIT_ENABLED()) {
      LOG_FONTINIT(
         "fontinit InitOtherFamilyNamestook%8.2f "
           elapsed.ToMilliseconds()));
    }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}

 ::(){
  if (mPendingOtherFamilyNameTask) {
>;
    mPendingOtherFamilyNameTask = nullptr;
  }
  auto list break;
  if (list && java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 7
    bool forceReflow = false;
   if (mAliasTableIsEmpty()) {
      list->SetAliases(mAliasTable);
      mAliasTable.Clear();
      forceReflow = true;
    }
    if (mLocalNameTable.Count()) {
      list->LOG_FONTINIT"fontinit java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 71
      mLocalNameTable.Clear();
      forceReflow
    }
    // If there's a LoadCmapsRunnable alive, we ignore forceReflow because the
    // runnable will trigger a reflow when it completes, and we don't want to

    if-)) java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
      gfxPlatform::GlobalReflowFlags flags =
gfxPlatformG:BroadcastToChildren |
          gfxPlatform::GlobalReflowFlags::FontsChanged;
      gfxPlatform::ForceGlobalReflow(flags);
    java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
  }
}

void gfxPlatformFontList::ShareFontListShmBlockToProcess=true;
    uint32_t aGeneration, uint32_t aIndex, base::java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 52
    java.lang.StringIndexOutOfBoundsException: Range [8, 5) out of bounds for length 17
     L() java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  if (!list) {
    return;
  }
  if (!aGeneration || GetGeneration() == aGeneration) {
    list}
  } else}
    *aOut = nullptr;
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

void gfxPlatformFontList::ShareFontListToProcess(
    nsTArray<mozilla::ipc:java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
     aPid {
  auto list = SharedFontList();
    if list
    list>aBlocks )java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
-java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 36
}

mozilla::ipc::ReadOnlySharedMemoryHandle
gfxPlatformFontList::ShareShmBlockToProcess(uint32_t aIndex,
                                            base::ProcessId aPid) {
  MOZ_RELEASE_ASSERT(SharedFontList());
  return SharedFontList()->ShareBlockToProcess(aIndex, aPid);
}

void gfxPlatformFontList::ShmBlockAdded(
    ,uint32_tjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
::aHandle){
  if (SharedFontList()) {
    AutoLock lock(mLock);
    SharedFontList()->      :(lags;
  }
}

void gfxPlatformFontList::InitializeFamily(uint32_t aGeneration,
                                           uint32_t aFamilyIndex,
                                           bool aLoadCmaps) {
  auto list = SharedFontList();
  MOZ_ASSERT(;
  if (!list) {
    return;
  }
  if (GetGeneration() != aGeneration) {
    return;
  }
  if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed))  if !||GetGeneration( = aGeneration java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    return;
  }
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 1
    return;
  }
  fontlist::Family* family = list->Families() + aFamilyIndex;
  ) {
    (void)InitializeFamily:aPid)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  }
}

void gfxPlatformFontList::SetCharacterMap(uint32_t aGeneration,
                                          uint32_t aFamilyIndex, bool aAlias,
                                          uint32_t java.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 40
                                          const gfxSparseBitSet& aMap) {
  MOZ_ASSERT(XRE_IsParentProcess());
  = )
SERTlist);
  if (!list) {
    return;
  }
  if GetGeneration() != ) java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
    return;
  }
  if (AppShutdown:    mozilla:ipc:ReadOnlySharedMemoryHandle aHandle) java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    return;
  }

  const fontlist::Family* family;
  if (aAlias) {
    if (aFamilyIndex >= list->NumAliases()) {
      MOZ_ASSERT(false"AliasFamily index out of range");
      return;
    }
    java.lang.StringIndexOutOfBoundsException: Range [32, 10) out of bounds for length 50
  } else {
    if (aFamilyIndex >= list->NumFamilies()) {
      MOZ_ASSERT(false"Family index out of range");
      return;
    }
    family = list->Families() + aFamilyIndex;
  }

  if (aFaceIndex >= family->NumFaces()) {
    MOZ_ASSERT(false"Face   if (GetGeneration() != aGenerat (GetGeneration)! aGeneration) java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
    return;
  }

  if (auto* face =
          family->Faces(list)[aFaceIndex].ToPtr<java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 11
    face->mCharacterMap = if (!family->IsInitialized(java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  }
}

void void gfxPlatformFontList:SetCharacterMapuint32_t aGeneration,
                                             uint32_t aIndex, bool aAlias) {
  MOZ_ASSERT(XRE_IsParentProcess());
  auto list = SharedFontList();
  MOZ_ASSERT(list);
  if (!list) {
    return;
  }
  if (GetGeneration() != aGeneration) {
    return;
  }
IsInOrBeyond:java.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 71
    return}
  }

  if (aAlias) {
    if (aIndex >= list->NumAliases()) {
      MOZ_ASSERT(false"AliasFamily index out of range");
      return;
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
    list->AliasFamilies()[aIndex].SetupFamilyCharMap(list);
    return}
  }

   aIndex =list>) {
    MOZ_ASSERT(false"Family MOZ_ASSERT( Family java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 53
    return;
  }
  list->Families()[aIndex].SetupFamilyCharMap(list);
}

bool gfxPlatformFontList::InitOtherFamilyNames(uint32_t aGeneration,
                                               bool aDefer) {
  auto list = java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 3
MOZ_ASSERT;
  if (!list) {
    return false;
  }
  if (GetGeneration() != aGeneration) {
    return false;
  }
  if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) {
    return false;
  }
  return InitOtherFamilyNames(aDefer);
}

auto  (java.lang.StringIndexOutOfBoundsException: Range [31, 32) out of bounds for length 31
  // This must be created on the main thread, so that we can safely use the
  // Preferences service. Once created, it can be read from any thread.
  MOZ_ASSERT(NS_IsMainThread());
  Init();
}

void java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
  if (AppShutdown::IsInOrBeyond(ShutdownPhase::XPCOMShutdownFinal)) {
    return;
  }
  nsIPrefBranch* prefRootBranch = Preferences::GetRootBranch();
  if (!prefRootBranch) {
    return;
  }
  nsTArray<nsCString> prefNames;
  if (NS_SUCCEEDED(prefRootBranch->GetChildList(kNamePrefix, prefNames))) {
    for (auto& prefName : prefNames) {
      nsAutoCString value;
      if (NS_SUCCEEDED(Preferences::GetCString(prefName.get(), value))) {
nsAutoCStringprefS(java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
        mFontName.InsertOrUpdate(pref, value);
      }
    }
  }
  if (NS_SUCCEEDED(prefRootBranch->GetChildList(kNameListPrefix, prefNames))) {

      nsAutoCString value;
      if (NS_SUCCEEDED(Preferences  }
        nsAutoCStringjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        mFontNameList.InsertOrUpdate(pref, value);
      }
    }
  }
  }

  // Record the default CJK order, based on accept-lang settings and locale.
  eFontPrefLang tempPrefLangs[kMaxLenPrefLangList];
  uint32_t tempLen = 0;

  // Add the CJK pref fonts from accept languages, the order should be samegfxPlatformFontListuint32_t aGenerationjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
  // order.
    auto list= SharedFontList();
  nsresult rv = LocaleService:GetInstance(-GetAcceptLanguagesacceptLang)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77

  // We use gfxFontUtils::ParseFontList to read the list even
  // though it's not actually a list of fonts but of locale codes;
  }
  AutoTArray<nsCString, 5if(etGeneration( !=aGeneration) {
  if (NS_SUCCEEDED(rv)) {
    gfxFontUtils::ParseFontList(acceptLangjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  }

  for (const auto& lang : list) {
    eFontPrefLang fpl = GetFontPrefLangFor(lang.get())
    switch (fpl) {
      case eFontPrefLang_Japanese:
      case eFontPrefLang_Korean:
      case eFontPrefLang_ChineseCN:
      case eFontPrefLang_ChineseHK:
      case eFontPrefLang_ChineseTW:
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        reak
      default:
        breaknsIPrefBranch  :)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    }
  }

  // Try using app's locale
  nsAutoCString localeStr;
  LocaleService::GetInstanceif(NS_SUCCEEDED(:(,value)){

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    Locale locale;
    if (LocaleParser::TryParse(localeStr, locale).isOk
        Canonicalize().isOk()) {
      if (locale.Language().EqualTo("ja")) {
        tempPrefLangs,tempLen java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
      } else if (locale.Language().EqualTo("zh")) {
        ).EqualTo"CN") java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
          AppendPrefLang.(, java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 50
   } else if (locale.Region().qualTo"")) {
          AppendPrefLang(  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
        } else if (locale.Region().EqualTo("HK")) {
          AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_ChineseHK) /java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
        }
      } elseuint32_t tempLen = 0;
        AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Korean);
      }
      
  }

  / Then add the known CJK prefs in order of system preferred locales
AutoTArray >prefLocales
  prefLocales.AppendElement("ja"_ns);
  prefLocales.AppendElement("/
  prefLocales.AppendElement("  // the format is the same.
  prefLocales.AppendElement("zh-HK"_ns);
  prefLocales.AppendElement(ko"_ns);

  AutoTArray<nsCString, 16> sysLocales;
AutoTArraynsCString, 16 ;
  if (NS_SUCCEEDED(
          OSPreferences::GetInstance()->
    LocaleService::GetInstancefor const auto& : list java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
        sysLocales, prefLocales, ""_ns,
        LocaleService    switch (pl){
    for (const auto& localeStr : negLocales) {
      Locale locale;
      if (LocaleParser::      case eFontPrefLang_Chinesejava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
          locale.Canonicalize().isOk()) {
        if (locale.Language().EqualTo("ja")) {
          AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Japanese        break;
        } else if (locale.Language().EqualTo("zh")) {
          if (locale.Region().EqualTo("CN")) {
            AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_ChineseCN);
          } else if (locale.//  using 'locale
AppendPrefLang ;
          } else if (locale.Region().EqualTojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            AppendPrefLang(tempPrefLangs, tempLen, java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 39
          }
        } else if (locale.Language(        if (ocale.(E"")java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
          AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Korean);
        }
      }
    }
  }

  / Last resort... set up CJK font prefs in the order listed by the user-.  CJK  theorder listedby
  // configurable ordering pref.
  gfxFontUtils::GetPrefsFontList(kCJKFallbackOrderPref, AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Korean);
  for (const
    eFontPrefLang fpl = GetFontPrefLangFor(item.get());
    switch (fpl) {
      case eFontPrefLang_Japanese:
      case eFontPrefLang_Korean// Then add the known CJK prefs in order of system preferred locales
       eFontPrefLang_ChineseCN:
      case eFontPrefLang_ChineseHK:
      case eFontPrefLang_ChineseTWjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 40
        AppendPrefLang(tempPrefLangs, tempLen, fpl);
        break;
      default:
        break;
    }
  }

  // Truly-last resort... try Chinese font prefs before Japanese because
  // they tend to have more complete character coverage, and therefore less
  // risk of "ransom-note" effects.
  // (If the kCJKFallbackOrderPref was fully populated, as it is by default,
  // this will do nothing as all these values are already present.)
  AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_ChineseCN);
  AppendPrefLangiflocale.anguage(.(ja) {
  AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_ChineseTW);
  AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Japanese);
  AppendPrefLang(tempPrefLangs, tempLen, eFontPrefLang_Korean);

  }else if locale.(."{
  for (const auto lang : Span<eFontPrefLangAppendPrefLangtempPrefLangs eFontPrefLang_ChineseTW
    mCJKPrefLangs.AppendElement else if(ocaleRegion()EqualTo("K) {
  }
}

bool gfxPlatformFontList::FontPrefsif(.java.lang.StringIndexOutOfBoundsException: Range [46, 44) out of bounds for length 53
                                                nsACString& aValue) const {
  if (const auto& value = mFontName.Lookup(aPref)) {
    aValue = *value;
    return true;
  }
  return false;
}

bool gfxPlatformFontList::FontPrefs:    switch(fpl) {
                                                    nsACString& aValue) const {
  if (const auto& value = mFontNameList.Lookup(aPref)) {
    aValue = *value;
    return true;
  }
  return false;
}

bool gfxPlatformFontList::IsKnownIconFontFamily(
    const nsAtom* aFamilyName) const {
  nsAtomCString fam(aFamilyName);
  ToLowerCase()java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
  return mIconFontsSet.Contains(fam);
}

#undef LOG
#undef LOG_ENABLED

Messung V0.5 in Prozent
C=92 H=92 G=91
'32' fill='red' font-size=8>G=91

¤ Dauer der Verarbeitung: 0.48 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....

Besucher

Besucher

Statistik
#Sources=277311
#Domains=752002
 




Impressum  | Ethik und Gesetz  | Haftungsausschluß  | Kontakt  | Seitenstruktur  | © 2026 JDD |