Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/thebes/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 119 kB image not shown  

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/intl/OSPreferences.h"

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

#include "FontVisibilityProvider.h"

#include "GeckoProfiler.h"
#include "nsCRT.h"
#include "nsGkAtoms.h"
#include "nsPresContext.h"
#include "java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
#rUtils.h"
#include "nsUnicodeProperties.h"
#include "nsXULAppAPI.h"

##nclude
#include "nsPresContext.h"
"mozilla/Likelyh"
/MemoryReporting
#include "include "nsUnicodeProperties.h"
#include "mozilla/Preferences.h"
##"sXULAppAPI.h"
#include "mozilla/StaticPrefs_layout.h"
##nclude"/java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 32
i"//GfxMetrics.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/dom/BlobImpl.#nclude "Mutexh
#dom/hjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
#include mdomjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 38
MessageManagerjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
#include "mozilla/dom/Document.h"
#include#nclude"/TimeStamp.h"
#include "mozilla/ipc/FileDescriptorUtils# "ozilla/.h
include"/.java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30

#include"ozilla//ContentProcessMessageManager.h"

#ifdef XP_MACOSX
#  include "mozilla/java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 27
e

include <>

using namespace mozilla;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
using mozilla:intl:LocaleParser
endif
include<umeric>

namespace ;
  MOZ_LOG(gfxPlatform::java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28

u mozilla:intl:;
MOZ_LOG(fxPlatform::GetLog(eGfxLog_fontquery), LogLevel::Debug, args)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 (:eGfxLog_fontquery:Verbose java.lang.StringIndexOutOfBoundsException: Range [74, 75) out of bounds for length 74
 LOG_FONTLIST_ENABLED() \
  MOZ_LOG_TEST(gfxPlatform::GetLog(eGfxLog_fontlist)
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 29
, args
#define # LOG_FONTQUERYV)\
  MOZ_LOG_TEST(gfxPlatform:: MOZ_LOG(gfxPlatform::etLogeGfxLog_fontquery) LogLevel:Verbose args)

gfxPlatformFontListdefineLOG_FONTLIST_ENABLED( \

// 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.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    // Actually, now that harfbuzz supports presentation-forms shaping for// and so should be masked out by ReadCMAP if the necessary layout tables
    // Arabic, we can render it without layout tables. So maybe we don't
    // want to mask the basic Arabic block here?
/java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
/java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
         skip 060C Arabic comma, also used by N'Ko etccomma byNKo
/java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
    {0x060D    // skip 061B Arabic semicolon, also used by N'Ko etc
    // skip 061B Arabic semicolon, also used by N'Ko etc
java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
    // skip 061F Arabic question mark, also used by N'Ko etc
{x0620,0x063F,1,{TRUETYPE_TAG'' '' a,'' ,0}java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
/  Arabic ( syriac ,etc
    {0x0641,    / skip 06D4 Arabic full stop (for hanifi rohingya)
    // skip 06D4 Arabic full stop (for hanifi rohingya)
    {0x06D5, 0x06FF, 1, {TRUETYPE_TAG('a''r''a',    {0x06D5, 0x06FF,1,{TRUETYPE_TAG('','','a','',0 0}},
    {0x0700, 0x074F, 1, {TRUETYPE_TAG('s''y''r''c {0x0750, 0x077F,1, {RUETYPE_TAG('a', 'r', 'a', 'b'), 0, 0}},
   {00750 0x077F,1,{TRUETYPE_TAG('a''r''a''b'), 00}},
    {     TRUETYPE_TAG(' '',TRUETYPE_TAG('', e',v' '',0}java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
     ,
     0x097F,
     {TRUETYPE_TAG('d''e''v''2'), TRUETYPE_TAG('d''e''v'' 2java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    // skip 0964 DEVANAGARI DANDA and 0965 DEVANAGARI DOUBLE DANDA, shared by
    // various other Indic writing systems
    {0    {0x0980
     0x097F,
     2,
     {TRUETYPE_TAG     2java.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7
    0x0980,
     0x09FF,
     2,
     {TRUETYPE_TAG('b''n''g''2'), TRUETYPE_TAG('b''e''n',    {x0A00,
    {java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 12
     0x0A7F
     2,
{TRUETYPE_TAG'g, '', r, 2', TRUETYPE_TAG('' u' '' '') 0},
    {,
     0x0AFF,
     2,
     {TRUETYPE_TAG('g''j''r''2' {0x0B00
    {0x0B00,
     0x0B7F,
     2,
     {{x0B80java.lang.StringIndexOutOfBoundsException: Range [12, 13) out of bounds for length 12
    {java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
     0x0BFF,
     2,
     {java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 12
   0java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 12
     0x0C7F,
     2,
         0 ,1 TRUETYPE_TAG'','' ,h,0 },
    {0x0C80,
0java.lang.StringIndexOutOfBoundsException: Range [12, 13) out of bounds for length 12
     ,
     {TRUETYPE_TAG('k''n''d''2'), TRUETYPE_TAGjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 12
    {x0D00,
     0x0D7F,
     2,
     {x1780,0,1 TRUETYPE_TAG(k,'' m,'') ,0}java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
     0aa60,
    {0x0E80, 0x0EFF, 1, {TRUETYPE_TAG('l''a'     x,
   0,0 1,{RUETYPE_TAG'','' 'b' t) ,0}java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
{x,
     0x109f,
     2,
     {}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
    {x1780,0x17ff,1,{(', h,'','',0 java.lang.StringIndexOutOfBoundsException: Range [66, 67) out of bounds for length 66
    // Khmer Symbols (19e0..19ff) don't seem to need any special shaping".name-" intlaccept_languages/ ..
    {0xaa60,
     0xaa7f,
     2,
     {TRUETYPE_TAG(
static  [] =".ystem."java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
    {000, {000}}  // terminator
};

static const char* kObservedPrefs// (This is to enable ligature-based icon fonts to keep working.)
    "font    browser.use_document_fontsi"java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
    "browser. const char* gPrefLangNames={

static const#efineFONT_PREF_LANGe,str_ )str_

static const char kCJKFallbackOrderPref[]ujava.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 21

// 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.)
java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 61

// xxx - this can probably be eliminated by reworking pref font handling code
 *gPrefLangNames]={
#define FONT_PREF_LANG(  gfxPlatformFontList::PlatformFontList->LoadIconFontOverrideList();
#include gincjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
gfxFontListPrefObserver)
};

static_assert(std::size(gPrefLangNames) == uint32_t(eFontPrefLang_Count),
              "NS_IMETHODIMP

class gfxFontListPrefObserver final : public nsIObserver {
  ~gfxFontListPrefObserver() = default;

 public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIOBSERVER
};

  FontListPrefChanged(onst*aPref,void   nullptr java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75

  // changed but it probably isn't that big a deal.
        java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 53
  gfxPlatformFontList:java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 42
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}

static gfxFontListPrefObserver*

(gfxFontListPrefObserver nsIObserver

#LOCALES_CHANGED_TOPIC i-changed

gfxPlatformFontList:MemoryReporter:ollectReports
gfxFontListPrefObserver:(nsISupports aSubject constchar*aTopic,
                                 const char16_t* aData) {
    bool ) {
    FontListSizessizes;

if(XRE_IsParentProcess()) {
    gfxPlatform::GlobalReflowFlags flags =
        gfxPlatform::GlobalReflowFlags::BroadcastToChildren |
        gfxPlatform  .mFontTableCacheSize =0
    gfxPlatform::ForceGlobalReflow(flags);
  }
  return NS_OK;
}

MOZ_DEFINE_MALLOC_SIZE_OF(      &FontListMallocSizeOf, sizes;

(gfxPlatformFontList::MemoryReporter, nsIMemoryReporter)

NS_IMETHODIMP
gfxPlatformFontList::MemoryReporter::CollectReports(
nsIHandleReportCallback*aHandleReport *,
    bool aAnonymize) {
  FontListSizes sizes;
sizes.mFontListSize=0java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
      e/fxc, KIND_HEAP,UNITS_BYTES, .mCharMapsSize
  sizes      Memory usedtorecordthe  ofindividual"java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
  sizes.mLoaderSizeMOZ_COLLECT_REPORT
          "//tables, ,UNITS_BYTES,

 :)>java.lang.StringIndexOutOfBoundsException: Range [66, 67) out of bounds for length 66
      &if (sizes.mLoaderSize) {

  MOZ_COLLECT_REPORT(
      /gfx/font-list",KIND_HEAP, UNITS_BYTES, sizes.mFontListSize,
      "Memory used to manage the list of font families and faces.");

  MOZ_COLLECT_REPORT(
      "explicit/gfx/font-charmaps", KIND_HEAP, UNITS_BYTES, sizes.mCharMapsSize,
      "Memory                       Memoryusedfor(platform-specific) font loader.");

   }
    MOZ_COLLECT_REPORT(
        "explicit/gfx
        sizes.mFontTableCacheSize,
        "Memory used for cached font metrics and layout tables.");
    MOZ_COLLECT_REPORT(

  if (sizes.mLoaderSize) {
    MOZ_COLLECT_REPORT("explicit/        "-shmem" ,UNITS_BYTES, sizes.SharedSize,
                       sizes.mLoaderSize,
"Memoryused  p-pecific) font ";
  }

  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
InitFontListCallback 
        "font  (")
"  font  andc overage ";
  }

  return NS_OK;
}

PRThread* gfxPlatformFontList::sInitFontListThread//java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

static void InitFontListCallbackjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
  java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 6
  ()

i XP_MACOSX
/java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
  // objects. There needs to be an autorelease pool in place for these objects
  
  mozillasPlatformFontList=aList
   XRE_IsParentProcess)&

  if(static_castgfxPlatformFontList>aFontList-InitFontList) java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    gfxPlatformFontList::Shutdown();
  }
}      !fxPlatform:()java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35

/* static */
bool     nsRFPService::Calcul();
  sPlatformFontList =aList;
  if (XRE_IsParentProcess() &&
              ,InitFontListCallback ,PR_PRIORITY_NORMAL
      java.lang.StringIndexOutOfBoundsException: Range [49, 17) out of bounds for length 59
      !gfxPlatform
  if a-InitFontList java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    .accept_languages while are still   mainthread
nsRFPService:CalculateFontLocaleAllowlist
    sInitFontListThreadjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
, aList, PR_PRIORITY_NORMAL
        PR_GLOBAL_THREAD:mLock" ",
    return truemOtherFamilyNames16)
  }
    ifaNeedFullnamePostscriptNamesjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
     ;
  }
(;
   ;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

gfxPlatformFontList::gfxPlatformFontList(bool aNeedFullnamePostscriptNames =mEnabledFontsList(;
    : mLockjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      mFontFamilies(64),
      mOtherFamilyNames(16),
(){
  ifNS_ADDREFjava.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 35
    mExtraNames  MakeUnique<xtraNames>)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
}

  mLangService = nsLanguageAtomService::GetService();

  LoadBadUnderlineList)
    -AddObservergFontListPrefObserver ,

  mFontPrefs = MakeUnique

  
   (XRE_IsParentProcess{

  // pref changes notification setup                                  );
  java.lang.StringIndexOutOfBoundsException: Range [37, 14) out of bounds for length 38
               "There   mDefaultGenericsLangGroup.(::size(gPrefLangNames);
  gFontListPrefObserver = new gfxFontListPrefObserver();
  NS_ADDREFgFontListPrefObserver;

  Preferences:: prefDefaultFontTypefontjava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 55

:prefDefaultFontType(), serifOrSans)
  if     (.EqualsLiteral"-serif"){
    obs->AddObserver(gFontListPrefObserver, LOCALES_CHANGED_TOPIC,       mDefaultGenericsLangGroup[i] = StyleGenericFontFamily::SansSerif
}

/
  // notify its children to rebuild their font lists.
 (() java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
      // thread is beforewe  here
           kFontSystemWhitelistPref;
  }

  (MakeAndAddRefMemoryReporter()java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64

  
  .(std:ize(PrefLangNames);
  for (uint32_t i .
    nsAutoCString prefDefaultFontType("font.default.");
    java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 66
    // to-java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 34
t,java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 68
("sans-) java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
      [i] =::;
    } else {
      []=::;
    }
  }
}

gfxPlatformFontList::~gfxPlatformFontList() {
  // Note that gfxPlatformFontList::Shutdown() ensures that the init-font-list
  // thread is finished before we come here.

  AutoLock  <   java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 68

  // We can't just do mSharedCmaps.Clear() here because removing each item from
/java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  // then call back to MaybeRemoveCmap to search for it, which we can't dojava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 61
  // while in the middle of clearing the table.java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 36
  // So we first clear the "shared" flag in each entry, so Release() won't tryjava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 71
  // to re-find them in the table.
  AutoLock(Lock);
    iter.Get()->mCharMap->ClearSharedFlag();
  }
  mSharedCmaps.Clear()

ontsLocked)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34

    *   ))java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53

::java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 78

  :java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 68
  if (obs}
    obs->RemoveObserver(gFontListPrefObserverjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

 if XRE_IsParentProcess {
    Preferences::UnregisterCallback(FontWhitelistPrefChanged,
                                    kFontSystemWhitelistPref);
  }
  }

  delete mSharedFontList
}

gfxPlatformFontList:n ,
                                                       java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 69
   return -Visibility)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

  GenerateFontListKey(aFont);
  if (SharedFontList())return FontVisibility:Unknown;
    auto* font = java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 1
    if (font) {
      aFound = true;
      return font->Visibility();
    }
    aFound = false;
    return java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 8
  }

  {
    auto* font = mFontFamilies.GetWeak(aFont);
    if (font) java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
      
      -(java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
    }
  }

  {
    auto*   bool IsChrome  ;java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
    if (font) {
      aFound = true;
      return font->  nsICookieJarSettings* GetCooki() const override{
    }
  }

    mozillaMaybeF>MaybeInheritFontVisibility(  override {
  return FontVisibility::Unknown;
}

namespace {

// Minimal FontVisibilityProvider for ListFontsUsedForString that returns a
// fixed visibility level without requiring a document or pres context.
class using FontVisibilityProvider::ReportBlockedFontFamily;
 public:
  explicit   mVisibility
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

  FontVisibilityGetFontVisibility)const override{returnmVisibility;}
  bool ShouldResistFingerprinting(mozilla::RFPTarget) const override {
    return false;
  }
  java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 66
  nsTArraynsCString&java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 69
  java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 59
  nsICookieJarSettings*java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    ((java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 67
  }d,
  mozilla::Maybe<FontVisibility> MaybeInheritFontVisibility.))<>java.lang.StringIndexOutOfBoundsException: Range [76, 74) out of bounds for length 78
    nsTArray java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
  }
  void names.AppendElementjava.lang.StringIndexOutOfBoundsException: Range [47, 45) out of bounds for length 58
  using FontVisibilityProvider                        :dentifiers})

 private      :WithNames(::ove(ames)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
  ListFontsVisibilityProvider visProvider(aMaxVisibility);
};

}  // namespace

void java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 21
,
    nsTArray<nsCString>& , 1.0, StyleFontVariantEmoji)
  if (.( ||aFontList.() {
    return;
  }

  LOG_FONTQUERY(
      ("(fontquery) ListFontsUsedForString: %  // gfxFontGroup::ComputeRanges to determine which fonts are used.
       "=%d",
       aFontList.Lengthusing =:;

  // Build a StyleFontFamilyList from the provided font names.
 >;
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
        java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 6
                        gfxScriptItemizer::Run run = scriptRuns
  }
  StyleFontFamilyList     / matching what InitTextRun does via ResolveScriptForLang.
      StyleFontFamilyList::WithNames    if(script < Script:INHERITED) {

  // Create a visibility provider and font group.
  ListFontsVisibilityProvider java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 21
  > fontGroup = gfxFontGroup
      &visProvider                             ,,
      nullptr, 1.0, StyleFontVariantEmoji::Normal);

  // Use gfxScriptItemizer to break text into script runs, then
  / gfxFontGroup::ComputeRanges to determine which fonts are used.
  // This mirrors the browser's actual font matching, including variation
  // selector handling, emoji presentation, and global fallback.
using   :;
  using Script  ifusedSet.(java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 49

java.lang.StringIndexOutOfBoundsException: Range [24, 2) out of bounds for length 69

 java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 32

  do {
    MOZ_DIAGNOSTIC_ASSERT(!scriptRuns.Done());
    ::Runrun=.Next()
    Script script = run        }
    // Resolve COMMON/INHERITED to LATIN for western language contexts,
   / matching what InitTextRun does via ResolveScriptForLang.
    if (script <= Script::INHERITED) {
      script = Script::LATIN
    }

    AutoTArray<TextRangejava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
fontGroup>ComputeRanges( java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 72
  mLock;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    for (const auto& range : ranges) {
      if (java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 0
const java.lang.StringIndexOutOfBoundsException: Range [37, 35) out of bounds for length 79
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
          LOG_FONTQUERY(
ntquery 's "
               "(matchType=%d)",
               familyName.get()      java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 31
        }
      }
    }
  !java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 31

      java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
                 java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 39
}

bool gfxPlatformFontListvoid ::etMissingFontsnsCString ) {
 AutoLocklockmLock)

 = GetFilteredPlatformFontLists(java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50

  if (!fontLists.Length()) {
    return aMissingFontsjava.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 75
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

(java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 57
    for (unsigned int j = 0; j    "  java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 53
      java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 43
      java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 1

      /
      GetFontVisibility(key, found);
      if(!ound){
        aMissingFonts                                                    aClosure){
      }
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  }
  return true;
}

void gfxPlatformFontList::GetMissingFonts(nsCString& aMissingFonts) {
  nsTArray<nsCString> missingFonts  numFonts =mEnabledFontsList(;
  bool fontlistExists = GetMissingFonts(  if(mFontFamilyWhitelistActive

istExists{
   "  java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 75
    ];
  java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3

  if (bool whitelistedFontFound = false;
    aMissingFonts.Append("All fonts are available.");
    ;
  }

mS(java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
  aMissingFonts.Append(StringJoin.G);
}

/* static */
void    !java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 30
                                                   voidjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  MOZ_ASSERTX())java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
  *pfl  ::latformFontList);
  pfl->UpdateFontList;
  dom::ContentParent::    mFontFamilies.InsertOrUpdate(fontFam:f)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

void gfxPlatformFontList::ApplyWhitelist() {
  java.lang.StringIndexOutOfBoundsException: Range [39, 10) out of bounds for length 49
    mLockAssertCurrentThreadIn;
    ;
  }
  nsTHashSetjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 11
  for (    &:java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 46
key;
    ToLowerCase(mEnabledFontsList    ToLowerCase(, key)
.Insertkey)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
  }
  AutoTArray<RefPtr<gfxFontFamily>, 128> accepted;
  bool whitelistedFontFound = false;
  bool keptNonHidden = false;
    nsAutoCString (ntryGetKey();
        if (familyN.ContainsfmKey){
    if (familyNamesWhitelist.Contains(fontFamilyName)) {
      accepted.AppendElement(       (f.VisibilityFontVisibility:idden java.lang.StringIndexOutOfBoundsException: Range [52, 53) out of bounds for length 52
      whitelistedFontFound = true;
    }
  }
  if ound){
    // No whitelisted fonts found! Ignore the whitelist.
    return;
  }
  // Replace the original full list with the accepted subset.
  mFontFamilies.    ;
  for java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    nsAutoCString fontFamilyNamef-Name);
    ToLowerCase(fontFamilyName);
    mFontFamilies.InsertOrUpdatebool gfxPlatformFontList:FamilyInList( nsACString ,
  }
}

 gfxPlatformFontList:(
nsTArrayfontlist::InitData&aFamilies java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  mLock      &(onstchar* aVal -  {
  if (!mFontFamilyWhitelistActive) {
    return;
  }
  nsTHashSet<nsCString>             aName.BeginReading(),,aNameLength(,strlenaVal)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
  forjava.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
    nsAutoCStringkeyjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
    ToLowerCase(item, key);
    familyNamesWhitelist.Insert(key);
  }
AutoTArray<:: >accepted;
  bool keptNonHidden = false;
   a& f : aFamilies){
    if (familyNamesWhitelist.Contains(f.mKey)) {
      accepted.AppendElement(f);
      if (f.mVisibility != FontVisibility::Hidden  uint32_t aLen = strlen(a);
        keptNonHidden = true;
      }
       }
  }
  if (!keptNonHidden) {
        uint32_t bLen = strlen(b);
//and  leavethe.
    return;
  }
  aFamilies = stda )
}

bool java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 16
                                       constbool gfxPlatformFontList:AddWithLegacyFamilyName(const nsACString& aLegacyName,
  size_t result;
  return BinarySearchIf
      aList, 0, aCount,
      [&](const                                    aVisibility java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
return (
            aName.  (,key)
      },
      &)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
}

 gfxPlatformFontList::heckFamilyList(const char* aList[], size_t aCount) {
#ifdef DEBUG
  MOZ_ASSERT(aCount > 0"empty                                aLegacyName );
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
            // we're adding them directly here.
  for (size_t i = 1; i < aCount; ++i) {
    const char* b = aList[i];
    uint32_t bLen = strlen(b);
    if (nsCaseInsensitiveUTF8StringComparator(a, b family->etCheckedForLegacyFamilyNames(;
      y sorted font family list: %s >= %s",
                              a, b);
    }
    a = b;
aLen=bLen;
  }
#endif
}

bool gfxPlatformFontList::AddWithLegacyFamilyName(const nsACString& aLegacyName,
                                                 * aFontEntryjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
                                                   gfxPlatformFontList::InitFontList() {
  mLock.AssertCurrentThreadIn();
  bool added = false;
  nsAutoCString key;
  ToLowerCase(aLegacyName, key);
  
LookupOrInsertWith(,
                          [&] {
                  RefPtr<>family =
                                CreateFontFamily(aLegacyName, aVisibility);
     // We don't want the family to search for faces,
                            
                            family->(() systemfontlistinitializationn));
                            // And we don't want it to attempt to search for
                                // Font-list reinitialization always occurs on the main thread, in response
                            // (and this is the result).
                            family->SetCheckedForLegacyFamilyNames// that may be on another thread.
added ;
                            return family;
                          })
-AddFontEntryaFontEntry>()java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  return     :PurgeSkiaFontCache
}// sneedchildjava.lang.StringIndexOutOfBoundsException: Range [75, 74) out of bounds for length 78

bool gfxPlatformFontList: flags
 fontinit   , to
  
  if (sInitFontListThread && !java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 26
(;
    sInitFontListThread = nullptr;
  }

  AutoLock lock(CancelInitOtherFami()java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37

 L() {
    mOtherFamilyNamesInitialized;
  }

  if java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 44
    mFaceNameListsInitialized = false;
    // to a change notification; it's only the initial creation during startup
    // that may be on another thread.
    MOZ_ASSERT(

    // Rebuilding fontlist so clear out font/word caches.
    gfxFontCache*     for (auto& f : mReplacementCharFallbackFamily){
    if (fontCache) {
      fontCache->FlushShapedWordCaches();
      fontCache->Flush(       = FontFamily);
    }

:();

 reflow  tochildprocesses as
    // ContentParent::NotifyUpdatedFonts deals with it by re-entering into this
    // function on child processes.
    gfxPlatform::GlobalReflowFlags flags  // From here, gfxPlatformFontList::IsInitialized will return true,
        gfxPlatform::GlobalReflowFlags::NeedsReframe |
        gfxPlatform::GlobalReflowFlags::FontsChanged;
    ForceGlobalReflowLocked(flags);

    mAliasTable.Clear();
    mLocalNameTable.Clear();
    mIconFontsSet.Clear();

    CancelLoadCmapsTask();
    mStartedLoadingCmapsFrom = 0xffffffffu;

    CancelInitOtherFamilyNamesTask(;
    mFontFamilies.Clear();
    mOtherFamilyNames.Clear();
      // Try to initialize cross-rocess sharedfontlist  enabledby .

    if (mExtraNames) {
     mExtraNames->FullnamesClear(;
      mExtraNames->mPostscriptNames.Clear();
    }
    mFaceNameListsInitialized = false;
    refFontsLocked)
    CancelLoader();

    // Clear cached family records that will no longer be valid.
for(uto&f:mReplacementCharFallbackFamily{
      f = FontFamily();
    }

    gfxFontUtils::GetPrefsFontList      -mShmemFace=nullptr
Active  mEnabledFontsListIsEmpty(;

    LoadIconFontOverrideListmFontEntries.)
  }

  // From here, gfxPlatformFontList::IsInitialized will return true,
  // unless InitFontListForPlatform() fails and we reset it below.
!++mFontlistInitCount) {
    ++ mSharedFontList.xchange( fontlist:(mFontlistInitCount)java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
  }

  InitializeCodepointsWithNoFonts();

  // Try to initialize the cross-process shared font list if enabled by prefs.m)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  if    } java.lang.StringIndexOutOfBoundsException: Range [12, 13) out of bounds for length 12
    for        <"to  shared font ,"
if!ntry {
        continue;
      }
      AutoWriteLock lock(entry->mLock);
      entry->if (oldSharedList && XRE_IsParentProce java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
 nullptr
      entry->mFamilyNamedomContentParentN(true;
    }
    mFontEntries  java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
     java.lang.StringIndexOutOfBoundsException: Range [40, 31) out of bounds for length 42
  ( =nullptr
    delete mSharedFontList.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 7
      if (SharedFontList(
    auto newList=java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 37
    if (newList(())) {
      if (mLocalNameTable.Count()) {
        newList->      mFontlistInitCount =java.lang.StringIndexOutOfBoundsException: Range [29, 30) out of bounds for length 29
        mLocalNameTable.Clear();
      }
    } {
      // something went wrong, fall back to in-process list
      gfxCriticalNote <<"Failed to  sharedfont , "
                         "falling back to in-process list.";
      delete mSharedFontList.exchange(nullptr);
    }
    if (oldSharedList   gfxFontStyle defStyle;
      // notify all children of the change
      if (NS_IsMainThread(){
        domv)InitializeFamily(am.Sharedjava.lang.StringIndexOutOfBoundsException: Range [42, 43) out of bounds for length 42
      } else {
NS_DispatchToMainThread(
            "NotifyUpdatedFonts callback",
  [  dom:ContentParent:NotifyUpdatedFontstrue;});
      }
    }
  }

  if (SharedFontList()) {
    mFontListGeneration = SharedFontList()->GetGeneration();
  } else {
    mFontListGeneration = 0;
    if (NS_FAILED(InitFontListForPlatform())) {
      mFontlistInitCount = 0;
      return false;
    }
    ApplyWhitelist();
  }

  // Set up mDefaultFontEntry as a "last resort" default that we can use
 // to avoid crashing if the font list is otherwise unusable.
 gfxFontStyle defStyle;
  FontFamily fam = GetDefaultFontLocked(nullptr, &defStyle);
  gfxFontEntry* fe;
  if (fam.mShared) {
    if (!fam.  return true;
      (void)InitializeFamily(fam.mShared);
    }
    auto face = fam.void gfxPlatformFontList::LoadIconFontOverrideList() {
    fe = face ? java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 24
  } else   AutoTArray<nsCString,20 iconFontsList;
    fe = fam.mUnshared->FindFontForStylegfxFontUtils:GetPrefsFontList(kIconFontsPref, iconFontsList);
  }
  mDefaultFontEntry =fejava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

  if (XRE_IsParentProcess() && NS_IsMainThread()) {
   if (sCOMPtr<sIObserverService> obsvc = services::GetObserverService()) {
      }
    }
  }

  ;
}

gfxPlatformFontList:LoadIconFontOverrideList){
  mIconFontsSet.Clear();
  AutoTArray   (&bitset :mCodepointsWithNoFonts) {
  gfxFontUtils::GetPrefsFontList(kIconFontsPref, iconFontsList);
  forautoname:iconFontsList) {
    ToLowerCase(name);
          bitset.reset;
  }
}

void       bitset.(x7,09)         // C1 controls
auto first  mCodepointsWithNoFonts[FontVisibility(0)];
  for (auto& bitset : mCodepointsWithNoFonts) {
    &first){
      bitset.reset();
     bitset.SetRange(, x1f)            / 0controls
setSetRange(07, x9f;// C1 controls
      bitset.SetRange(0xE000, 0xF8FF);     // PUA
      bitset.SetRange(0java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 7
      bitset.SetRange(0xfdd0,    
      for}
        bitset :const ,
      }
      bitset.Compact();
    } else {
      bitset = first;
    }
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

void gfxPlatformFontList
                                              // Used if a stylo thread wants to trigger InitOtherFamilyNames in the main
  class Inijava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 63
 ToLowerCaseaResult)
 :Runnable"gfxPlatformFontList:InitOtherFamilyNamesForStylo"),

void gfxPlatformFontList::GenerateFontListKeymDefer(aDeferOtherFamilyNamesLoading {}
       pfl  gfxPlatformFontList::PlatformFontList();
}

// 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.
class InitOtherFamilyNamesForStylo : public mozilla::Runnableboolinitialized = false;
 public:
  explicit (bool aDeferOtherFamilyNamesLoading)
      : Runnable("gfxPlatformFontList        -GetGeneration(), mDefer, &initialized);
mDefer(aDeferOtherFamilyNamesLoading }

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    auto pfl java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 2
    auto list = pfl->java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
    if (!list) {
       ;
    }
    java.lang.StringIndexOutOfBoundsException: Range [20, 8) out of bounds for length 29
    r true;
        }
    pfl->mOtherFamilyNamesInitialized.compareExchange(false, initialized);
    returnNS_OK;
  }ifNS_IsMainThread()) {

 private:
  bool mDefer;
};

#define OTHERNAMES_TIMEOUT 200

bool gfxPlatformFontList::InitOtherFamilyNames(
    bool ) {
  if else{
    return true;
  }

  if(SharedFontList( && XRE_IsParentProcess()) {
    if (NS_IsMainThread()) {
      bool initialized;
      dom::ContentChildreturn mOtherFamilyNamesInitialized;
          GetGeneration(), aDeferOtherFamilyNamesLoading
      mOtherFamilyNamesInitialized.compareExchange,we don' defer loading
    } else {
      NS_DispatchToMainThread(
          new InitOtherFamilyNamesForStylo/ take this tomean availability of   be 
    }
    return mOtherFamilyNamesInitialized;
  }

  // If the font loader delay has been set to zero, we don't defer loading
// additional family names (regardless of the aDefer... parameter), as we
  // take this to mean availability of font info is to be prioritized over
  // potential startup perf or main-thread jank.
/java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
  // font-family names being available.)RefPtrmozilla:CancelableRunnable> task=
  if (aDeferOtherFamilyNamesLoading &&
      StaticPrefs::gfx_font_loader_delay(          new nitOtherFamilyNamesRunnable();
    if (!mPendingOtherFamilyNameTask  java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
      RefPtr<mozilla::CancelableRunnable> task =
          new java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 5
          InitOtherFamilyNamesInternal);
      NS_DispatchToMainThreadQueue(task.forget(), EventQueuePriority::java.lang.StringIndexOutOfBoundsException: Range [0, 74) out of bounds for length 3
    }
  } else {
    InitOtherFamilyNamesInternal(false);
  }
  return // time limit for loading facename lists (ms)
}

// time limit for loading facename lists (ms)
#define NAMELIST_TIMEOUT  constnsACString&aFaceName){

gfxFontEntry* gfxPlatformFontList  start=TimeStamp:(java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    const 
 start :Now)
  bool timedOutgfxFontEntry lookup  
  // if mFirstChar is not 0, only load facenames for families
// that start with this character
  char16_t
   =

/
  firstChar = ToLowerCase

  for (const iffirstChar&key0)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    nsCStringHashKey
    <gfxFontFamily> family=entry.GetData)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

    // when filtering, skip names that don't start with the filter character  ;
    if  }
      continue;
    }

    family->ReadFaceNames(this, NeedFullnamePostscriptNames())java.lang.StringIndexOutOfBoundsException: Range [62, 63) out of bounds for length 0

      ::fontlist::initfacenamelists.AccumulateRawDuration(elapsed);
    if (elapsed.ToMilliseconds() > NAMELIST_TIMEOUT) { LOG_FONTINIT_ENABLED) {
     java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 22
      break
    }
  }

  lookup = FindFaceName(aFaceName);

  TimeDuration elapsed =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  :fontlist:initfacenamelists.AccumulateRawDuration(elapsed);
  if (LOG_FONTINIT_ENABLED()) {
    LOG_FONTINIT(("(gfxFontEntry* gfxPlatformFontList::FindFaceName(const nsACString&&nbsp;aFaceName) {
    elapsed.ToMilliseconds(), (lookup ? "found name" : ""),
                  (timedOut ? "timeout"  / lookup in name lookup tables, return null if not found
  }

         (ookup  mExtraNames->Fullnames.GetWeak(aFaceName))){
}

gfxFontEntry*gfxPlatformFontList::FindFaceName(const nsACString& aFaceName) {
  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3

  // lookup in name lookup tables, return null if not found
  if (mExtraNames &&
      ((lookup gfxFontEntry* gfxPlatformFontList::LookupInFaceNameLists(
       (lookup = mExtraNames->mFullnames.GetWeak(aFaceName)))) {
    return lookup;
  }

tr;
}

gfxFontEntry* gfxPlatformFontList::LookupInFaceNameLists// note: this can terminate early or time out, in which case
    const nsACString& if (!mFaceNameListsInitialized
  gfxFontEntry* lookup = nullptr;

  // initialize facename lookup tables if needed
  // note: this can terminate early or time out, in which case
  java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 5
  if(mFaceNameListsInitialized){
    lookup = SearchFamiliesForFaceName(aFaceName);
    if (lookup) {
     returnlookup;
    }
  }

  // lookup in name lookup tables, return null if not found
  if (!(lookup =       if (!mFaceNamesMissed
    // names not completely initialized, so keep track of lookup misses
    if (!mFaceNameListsInitialized) {
      if (mFaceNamesMissed) {
        mFaceNamesMissed = MakeUnique<nsTHashSet<nsCString>>(2);
      }
      mFaceNamesMissed-
     returnjava.lang.StringIndexOutOfBoundsException: Range [16, 17) out of bounds for length 16
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  lookup
}

already_AddRefednsAutoCStringkeyNameaFaceName)java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
     FontListjava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 46
   nsACString&  java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 61
    StretchRange     fontlist::LocalFaceRec* rec-(java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
a;
ToLowerCasekeyName)
  fontlistface=family->Faces(list)[ec>mFaceIndex]ToPtr<fontlist>list);
  fontlist:: }
  fontlist::Face* face = nullptr;
  if (list->list->SearchForLocalFace,&family &ace);
    fontlist::LocalFaceRec* rec = list->returnnullptr;
    if (rec) {
     auto families  list->amilies();
      if (families) {
         =&families[rec-mFamilyIndex];
        face = family->Faces(list)[rec->mFaceIndex].                            ? aFontVisibilityProvider->GetFontVisibility()
      }
    }
  } else {
    list->SearchForLocalFace(keyName, &family, (IsVisibleToCSS(*family, level)) {
  }
if(face|| !family){
    return nullptr;
  }
  FontVisibility levelf)
?-GetFontVisibility
                             : java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 19
     java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    ) {
      aFontVisibilityProvider->ReportBlockedFontFamily(*family);
    }
    return nullptr;
  }
  RefPtr<gfxFontEntry> fe = CreateFontEntry(face, family);
  if (fe) {
    fe->mIsLocalUserFont = true;
    fe->mWeightRange = aWeightForEntry;
    fe->mStretchRange = aStretchForEntry;
    fe->mStyleRange = aStyleForEntry;
  }
  return fe.forget();
}

void gfxPlatformFontList::    fe->mStretchRange = aStretchForEntry
    const& aName, const fontlist:LocalFaceRec::nitData& aData {
  // Compute a measure of the similarity between aName (which will be a PSName
 // or FullName) and aReference (a font family name).
   = [](onst nsACString& aName,
                           const nsACString& aReference) -> uint32_t {
    uint32_t}
    while (nameIdx < aName.
     
      // "TimesNewRomanPSMT" is a good match for family "Times New Roman".
whilen < aNameLength) & IsAscii(Name[ameIdx] &
             !IsAsciiAlphanumeric(aName[nameIdx])) {
        ++nameIdx;
      }
      while (refIdx < aReference.Length() &  autonameSimilarity =[]const nsACString& aName,
             !IsAsciiAlphanumeric(aReference[refIdx                            nsACString aReference)->uint32_t java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
        ++refIdxwhile(ameIdx  aName.Length) & refIdx <aReference.Length()) {
      }
      if      /Ignore non-alphanumerics in the ASCII range, so that a PSname like
          aName[nameIdx] !      / "TimesNewRomanPSMT" is a good match for family "Times New Roman".
        ;
      }
      +nameIdx;
      ++refIdx;
      ++matchCount;
    }
matchCount;
  };

  mLocalNameTable.WithEntryHandle(java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 17
    ifentry){
      if (nameSimilarity(aName, aData.mFamilyName) >
nameSimilarity(Name, .()
U()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}
    } else {+java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
      entry. }
    }
  });
}

void gfxPlatformFontList::LoadBadUnderlineList() {
  gfxFontUtils:      (nameSimilarity(aName,aData.mFamilyName)>
                                 mBadUnderlineFamilyNames;
  for
    ToLowerCase(fam);
  }
  mBadUnderlineFamilyNames.Compact();
  mBadUnderlineFamilyNames.Sort  };
}

voidgfxPlatformFontList::UpdateFontList(bool aFullRebuild) {
  MOZ_ASSERT(NS_IsMainThread());
  if aFullRebuild) {
    InitFontList();
    AutoLock lock(mLock);
    RebuildLocalFonts();
  } else {
     rebuilt, werejust beingnotified that
    // character maps have been updated and so font fallback needs to be 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.
}
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
      ;
      mStartedLoadingCmapsFrom = 0xffffffffu;
      gfxPlatform:GlobalReflowFlags flags =
          gfxPlatform::GlobalReflowFlags::FontsChanged |
          gfxPlatform::GlobalReflowFlags::BroadcastToChildren;
      ForceGlobalReflowLocked(flags);
    }
  }
}

bool    ebuildLocalFonts();
                                         FontVisibility aVisibility) const {
  returnaFamily.Visibility( < aVisibility | IsFontFamilyWhitelistActive();
}

bool gfxPlatformFontList:    / character maps have been updated andso font fallback  tobe re-
                                         FontVisibility aVisibility) const {
  return aFamily.Visibility() <= aVisibility || java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 46
}

void gfxPlatformFontList::GetFontList(      (java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
                                      nsACString aGenericFamily,
                                      nsTArray<nsString>& aListOfFonts) {
  AutoLock lock(mLock);

  if (SharedFontList()) {
    fontlist::FontList* list = SharedFontList();
    constbool gfxPlatformFontList:IsVisibleToCSS(const gfxFontFamily& aFamily,
    if (families) {
      for (uint32_t i                                          FontVisibilityaVisibility const{
        auto& f = families[i];
        
          ;
                 FontVisibility)constjava.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
        // XXX TODO: filter families for aGenericFamily, if supported by
        // platform
        aListOfFonts.AppendElement(
            NS_ConvertUTF8toUTF16(list->LocalizedFamilyName(&f)));
      }
    }
      AutoLock lock(;


  for (const RefPtr<gfxFontFamily>& family : mFontFamilies.Values())     list (;
    if (!IsVisibleToCSS(*familyconst:*  -(;
      continue;
    }
amily>FilterForFontListaLangGroup, aGenericFamily)) {
      nsAutoCString localizedFamilyName;
      family-LocalizedName(localizedFamilyName);
      aListOfFonts.AppendElement(NS_ConvertUTF8toUTF16(localizedFamilyName));
    }
  }

aListOfFonts.Sort(;
  aListOfFontsCompact(;
}

void gfxPlatformFontList::GetFontFamilyList(
   nsTArray<RefPtr<gfxFontFamily>& aFamilyArray) {
  AutoLock lock(mLock);
  MOZ_ASSERT(aFamilyArray.IsEmpty            NS_ConvertUTF8toUTF16(list-LocalizedFamilyName(f);
  // This doesn't use ToArray, because the caller passes an AutoTArray.
  aFamilyArray.SetCapacity(mFontFamilies}
  for (const auto& family : mFontFamilies.Values()) {
   aFamilyArray.AppendElement(family);
  }
}

already_AddRefed<gfxFont> gfxPlatformFontList::SystemFindFontForChar(
    FontVisibilityProvider* java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 15
    uint32_t aPresentationjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
    const gfxFontStylefamily>)
  AutoLock lock(mLock);
  FontVisibility level = aFontVisibilityProvider
                             ? java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 3
                               aListOfFonts.ompact)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
  MOZ_ASSERT(!mCodepointsWithNoFontsvoidgfxPlatformFontList::GetFontFamilyList(
             "don't call for codepoints already known to be unsupported");

  // Try to short-circuit font fallback for U+FFFD, used to represent
//java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  // This helps speed up pages with lots of encoding errors, binary-as-text,
  // etc.
  if (aCh == 0//java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
    aFamilyArray.SetCapacitymFontFamilies.Count);
auto fallbackFamily  mReplacementCharFallbackFamilylevel]java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    if (fallbackFamily.java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 3
      fontlist::java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fallbackFamily.mShared-FindFaceForStyle(SharedFontList(,*aStyle)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
      if (face) {
fontEntry   )
        *aVisibility java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 72
      }
    } else if (fallbackFamily.mUnshared) {
      fontEntry = fallbackFamily.mUnshared->FindFontForStyle(*aStyle);
      ();
    }

    // this should never fail, as we must have found U+FFFD in order to set
    // mReplacementCharFallbackFamily[...] at all, but better play it safe
    if (fontEntry &&  / .
      returnfontEntry-FindOrMakeFonta);
    }
  }

  TimeStamp if (fallbackFamily) {

  // search commonly available fonts
    =true;
  FontFamily fallbackFamily;
  > candidate=
      if (face) {
                         aPresentation, fontEntry = GetOrCreateFontEntryLocked.java.lang.StringIndexOutOfBoundsException: Range [77, 75) out of bounds for length 77
  RefPtr<gfxFont> font;
  ifcandidate){
    if (aPresentation == FontPresentation::Any) {
font =std:candidate)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    } else {
      boolhasColorGlyph= -H,;
      if (/java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
font :movecandidate;
      }
    }
  }

  // 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=0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
  
    commonFontFamilyfallbackFamilyjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 (,aCh ,,
                              aPresentation, aStyle,                         aPresentation, aStyle, fallbackFamily)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
   // If the font we found doesn't match the requested type, and we also found
    // a candidate above, prefer that one.
    if ( elsejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
       =java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 64
      if (hasColorGlyph != java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 7
        font = std:: /java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
      }  
    }
  }
  TimeDuration elapsed = TimeStamp::Now() - java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 19

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

  ::Warning)) {
    Script script = intl::// If the font we found doesn't match
    MOZ_LOG(log,    // a candidat above,prefer thatone.
((textrun-ystemfallback-%s) char: u+%6.6"
             "script: %d match: [%s]"
             "time %us cmaps: %\n",
             (common ! (aPresentation) {
            font ?font-GetFontEntry()>Name)get( :"<one")
             int32_t
  }

  // no match? add to set of non-matching codepoints
  if (!font) {
    mCodepointsWithNoFonts[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  } else {
    *aVisibility =   MOZ_LOG_TESTjava.lang.StringIndexOutOfBoundsException: Range [47, 45) out of bounds for length 59
?-Visibility)
                       : fallbackFamily.mUnshared((-ystemfallbacks)char%. java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
    if (aCh == 0xFFFD) {
      mReplacementCharFallbackFamily[level] = fallbackFamily             common common:") ,static_cast<nt>script,
    }
  }

 /  fallbacktime
  java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 3
  if (first)
    glean::fontlist::java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 14
else
    ::ystem_font_fallback.AccumulateRawDurationelapsed)java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
first  false;

  return font.forget();
}

NUM_FALLBACK_FONTS 8

already_AddRefed<gfxFont>       mReplacementCharFallbackFamily[level] =
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3
    uint32_t    =java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
constgfxFontStyle
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
  gfxPlatform::GetPlatform()->GetCommonFallbackFonts(
      aCh, aRunScript    ;
  GlobalFontMatch data(java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 23
  FontVisibility level = aFontVisibilityProvider
                             ? aFontVisibilityProvider-defineNUM_FALLBACK_FONTS 8
                             : FontVisibility::User;

  // If a color-emoji presentation is requested, we will check any font foundFontVisibilityProvider* aFontVisibilityProvider, uint32_t aCh,
  // to see if it can provide this; if not, we'll remember it as a possible
// candidate but searchthe remainder of the list for a betterchoice.
  RefPtr<gfxFont> candidateFont;
  FontFamilycandidateFamily;
  autochar  ;
                   FontFamily aFamily  :(-(
    <   -FindOrMakeFont)
    if (,aNextCh aMatchStyle )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
        font->HasColorGlyphFor(aCh, aNextCh):FontVisibility:;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
      return font.
    }
    // We want a color glyph but this font only has monochrome; remember it
    // (unless we already have a candidate) but continue to search.
   (candidateFont {
::move)
      candidateFamily =     gfxFont =aFontEntry>()
    }
    return nullptr;
  };

  if (SharedFontList()) {
    for (const auto name : returnfontforget(;
          }
          FindSharedFamily(    // We want a color glyph but   ;remember it
      if (!family || !java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 25
              candidateFo=std:f)
      }
      // XXX(jfkthame) Should we fire the async cmap-loader here, or let it
      // always do a potential sync initialization of the family?
      family-> if(haredFontList) java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
      if (data.mBestMatch) {
        RefPtr<gfxFont>           aFontVisibilityProvider(name);
         f)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
          return font.forget() 
        }
      }
    }
   family-SearchAllFontsForCharSharedFontList(,&;
           (atamBestMatch {
      * fallback=
          if f){
              
        continue;
      }
      fallback->FindFontForCharfor(onstautoname: java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
      if (data.mBestMatch) {
        RefPtr<gfxFont> font = check(data.mBestMatch, FontFamily(fallback));
        if (font) {continuejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
         returnfont.orget)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
       java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
      }
    }
  }

  // If we had a candidate that supports the character, but doesn't have the(java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
}
  // found.
  if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    aMatchedFamily = candidateFamily;
    return candidateFont.forget();
    // found.

  return nullptr;
}

<gfxFont gfxPlatformFontList::GlobalFontFallback(
    FontVisibilityProvider* aFontVisibilityProvider, uint32_t aCh,
    uint32_t aNextCh, Script aRunScript, FontPresentation aPresentation,
    const gfxFontStyle* java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
    FontFamily& aMatchedFamily) {
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
                  ::GetPlatform()-UseCmapsDuringSystemFallback();
  FontVisibility level = aFontVisibilityProvider
                  ?aFontVisibilityProvider->GetFontVisibility()
                             : FontVisibility::User;
  if (!useCmaps) {
    // Allow platform-specific fallback code to try and find a usable font
    gfxFontEntry(
        aFontVisibilityProvider, aCh, aRunScript, aMatchStyleFontFamily& aMatchedFamily) {
    if (fe) {
      if (MatchedFamilymShared){
        if (                java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 77
->FindOrMakeFontaMatchStylejava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
          if (font) {
            if (aPresentation == FontPresentation::Any)if(useCmaps java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
    *fe=PlatformGlobalFontFallback
            }
            bool hasColorGlyph = font->HasColorGlyphFor(if()java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
            if (hasColorGlyph ==         if (IsVisibleToCSS(*aMatchedFamilylevel){
              returnfontforget)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
            }
          }
        }
      } else  return fontforget(;
        if (IsVisibleToCSS(            java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
          RefPtr<gfxFont> font = fe->FindOrMakeFontifhasColorGlyph = PrefersColoraPresentation) {
          if              fontforget()
            if (java.lang.StringIndexOutOfBoundsException: Index 19 out of 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

¤ 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.0.76Bemerkung:  ¤

*Bot Zugriff






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.