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 leng th 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'), 0, 0}},
{ 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
{0, 0, 0, {0, 0, 0}} // 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& 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.6x "
"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 | |