Граф коммитов

158 Коммитов

Автор SHA1 Сообщение Дата
Sylvestre Ledru 34acbb653a Bug 1619165 - Reformat recent changes to the Google coding style r=andi
First reformat with clang-format 10

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D68802
2020-04-25 09:40:08 +00:00
Jonathan Kew 715e096b9a Bug 1550037 - patch 1 - Migrate shared font-list code from mozilla::ipc::SharedMemoryBasic to base::SharedMemory APIs. r=jwatt
The base::SharedMemory class provides APIs to create a "read-only" copy of a shared memory block,
which means it can be shared to a child process without the risk that the child might map it as
writable and corrupt the contents. We want to use this facility for the font list, hence switching
the shared-memory APIs used.

Differential Revision: https://phabricator.services.mozilla.com/D68778

--HG--
extra : moz-landing-system : lando
2020-04-07 12:30:17 +00:00
Mihai Alexandru Michis 5da80eeda9 Backed out 3 changesets (bug 1550037) for causing bustages in SharedFontList-impl.h
CLOSED TREE

Backed out changeset 34ebd6260867 (bug 1550037)
Backed out changeset 7571e5bc19e7 (bug 1550037)
Backed out changeset 71fdead8eecb (bug 1550037)
2020-04-07 13:11:17 +03:00
Jonathan Kew 1bf1c749a5 Bug 1550037 - patch 1 - Migrate shared font-list code from mozilla::ipc::SharedMemoryBasic to base::SharedMemory APIs. r=jwatt
The base::SharedMemory class provides APIs to create a "read-only" copy of a shared memory block,
which means it can be shared to a child process without the risk that the child might map it as
writable and corrupt the contents. We want to use this facility for the font list, hence switching
the shared-memory APIs used.

Differential Revision: https://phabricator.services.mozilla.com/D68778

--HG--
extra : moz-landing-system : lando
2020-04-07 09:23:24 +00:00
Jonathan Kew 9ae6c0bed1 Bug 1619349 - patch 1 - Record statistics about font-matching behavior in the presContext. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D67787

--HG--
extra : moz-landing-system : lando
2020-04-02 01:38:18 +00:00
Jonathan Kew 1ab7bd6878 Bug 1619350 - patch 2 - Add lists of standard Mac and Windows fonts, and set font-family visibility attributes accordingly in those platform font lists. r=jwatt
These two platforms are the easiest to get started with - as well as accounting for the great majority
of desktop Firefox users.

This patch is based on the OS vendors' lists of fonts shipped with the current version of each OS.

Differential Revision: https://phabricator.services.mozilla.com/D66125

--HG--
extra : moz-landing-system : lando
2020-04-02 01:38:21 +00:00
Jonathan Kew 1e295dc3cc Bug 1619350 - patch 1 - Add a FontVisibility enumeration to determine whether fonts should be visible by name to CSS, and provide a visibility field in font family records. r=jwatt
This replaces and extends the "hidden" flag we currently use on macOS to mark internal system fonts
like .LastResort and .Keyboard that should not be exposed; rather than just a boolean "hidden" flag
we'll have several levels of visibility, some of which the user may opt in to exposing (at the cost
of potentially becoming more fingerprintable).

The current patch assumes three levels besides always-hidden:

  Base     - fonts that are part of the base OS install and always available
  LangPack - fonts that are provided by the OS subject to user's chosen language options
  User     - user-installed fonts that were not provided by the OS

(This categorization may be subject to revision as we learn more about real-world needs and
configurations.)

Differential Revision: https://phabricator.services.mozilla.com/D66124

--HG--
extra : moz-landing-system : lando
2020-04-02 12:36:24 +00:00
Ciure Andrei e1cb0f1e21 Backed out 4 changesets (bug 1619349, bug 1619350) for causing test_font_whitelist.html to fail CLOSED TREE
Backed out changeset ba16b09b5da0 (bug 1619349)
Backed out changeset f8ca02252dfc (bug 1619349)
Backed out changeset 01a2a527aa1a (bug 1619350)
Backed out changeset 67ee13868a44 (bug 1619350)
2020-04-02 04:34:31 +03:00
Jonathan Kew 82984492e6 Bug 1619349 - patch 1 - Record statistics about font-matching behavior in the presContext. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D67787

--HG--
extra : moz-landing-system : lando
2020-04-01 21:42:36 +00:00
Jonathan Kew 2fe7f23db5 Bug 1619350 - patch 2 - Add lists of standard Mac and Windows fonts, and set font-family visibility attributes accordingly in those platform font lists. r=jwatt
These two platforms are the easiest to get started with - as well as accounting for the great majority
of desktop Firefox users.

This patch is based on the OS vendors' lists of fonts shipped with the current version of each OS.

Differential Revision: https://phabricator.services.mozilla.com/D66125

--HG--
extra : moz-landing-system : lando
2020-04-01 21:42:11 +00:00
Jonathan Kew 503dffb1e0 Bug 1619350 - patch 1 - Add a FontVisibility enumeration to determine whether fonts should be visible by name to CSS, and provide a visibility field in font family records. r=jwatt
This replaces and extends the "hidden" flag we currently use on macOS to mark internal system fonts
like .LastResort and .Keyboard that should not be exposed; rather than just a boolean "hidden" flag
we'll have several levels of visibility, some of which the user may opt in to exposing (at the cost
of potentially becoming more fingerprintable).

The current patch assumes three levels besides always-hidden:

  Base     - fonts that are part of the base OS install and always available
  LangPack - fonts that are provided by the OS subject to user's chosen language options
  User     - user-installed fonts that were not provided by the OS

(This categorization may be subject to revision as we learn more about real-world needs and
configurations.)

Differential Revision: https://phabricator.services.mozilla.com/D66124

--HG--
extra : moz-landing-system : lando
2020-03-26 18:39:43 +00:00
Simon Giesecke 5fbc9ca531 Bug 1626563 - Remove redundant user-provided copy constructors in gfx/thebes. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D69177

--HG--
extra : moz-landing-system : lando
2020-04-01 13:45:40 +00:00
Chris Peterson b994ab8896 Bug 1624789 - Replace MOZ_MUST_USE with [[nodiscard]] in gfx. r=gfx-reviewers,nical
Also move MOZ_MUST_USE before function declarations' specifiers and return type. While clang and gcc's __attribute__((warn_unused_result)) can appear before, between, or after function specifiers and return types, the [[nodiscard]] attribute must precede the function specifiers.

Differential Revision: https://phabricator.services.mozilla.com/D68152

--HG--
extra : moz-landing-system : lando
2020-03-25 10:35:04 +00:00
Simon Giesecke dce1e48caf Bug 1613985 - Use default for equivalent-to-default constructors/destructors in gfx. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D65288

--HG--
extra : moz-landing-system : lando
2020-03-04 15:39:20 +00:00
Simon Giesecke 9350e6b741 Bug 1613985 - Use MOZ_COUNTED_DEFAULT_CTOR_*/MOZ_COUNTED_DTOR_* macros. r=froydnj
This removes the need for explicit #ifdef NS_BUILD_REFCNT_LOGGING without
introducing user-defined destructors when it is not defined.

Also, some uses of virtual for declaring destructors are replaced by the
appropriate override declaration through these changes.

Differential Revision: https://phabricator.services.mozilla.com/D62604

--HG--
extra : moz-landing-system : lando
2020-02-20 11:40:14 +00:00
Dorel Luca d5f9df8ee1 Backed out 2 changesets (bug 1613985) for Build bustage on Windows2012. CLOSED TREE
Backed out changeset fd177b40b561 (bug 1613985)
Backed out changeset fb6d62b7f28d (bug 1613985)
2020-02-19 22:22:41 +02:00
Simon Giesecke 59b23375c0 Bug 1613985 - Use MOZ_COUNTED_DEFAULT_CTOR_*/MOZ_COUNTED_DTOR_* macros. r=froydnj
This removes the need for explicit #ifdef NS_BUILD_REFCNT_LOGGING without
introducing user-defined destructors when it is not defined.

Also, some uses of virtual for declaring destructors are replaced by the
appropriate override declaration through these changes.

Differential Revision: https://phabricator.services.mozilla.com/D62604

--HG--
extra : moz-landing-system : lando
2020-02-19 18:05:38 +00:00
Jonathan Kew 13eb9e858a Bug 1608124 - Skip hidden macOS font families in FontList::FindFamily, except when resolving system fonts. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D59358

--HG--
extra : moz-landing-system : lando
2020-01-10 08:58:47 +00:00
Narcis Beleuzu 1e5d31d0d9 Backed out changeset aea131093cd1 (bug 1608124) for assertion failures on StaticPrefList_gfx.h. CLOSED TREE 2020-01-10 03:19:43 +02:00
Jonathan Kew 976c9365de Bug 1608124 - Skip hidden macOS font families in FontList::FindFamily, except when resolving system fonts. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D59358

--HG--
extra : moz-landing-system : lando
2020-01-09 19:11:10 +00:00
Jonathan Kew e317a07882 Bug 1554819 - Ensure fontgroups attached to CanvasRenderingContext2D get reset after a shared-fontlist rebuild. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D53264

--HG--
extra : moz-landing-system : lando
2019-11-17 11:49:20 +00:00
Jonathan Kew 97acebe64f Bug 1588993 - Don't send InitOtherFamilyNames IPC message from a stylo thread; post a runnable to the main thread instead. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D50745

--HG--
extra : moz-landing-system : lando
2019-10-31 14:41:15 +00:00
Jonathan Kew 02d0612b29 Bug 1584143 - Don't try to reinitialize platform font list from GetDefaultFont() if we're not on the main thread. r=jwatt
This can happen if we need to use gfxFontGroup::GetDefaultFont() during stylo traversal,
but we initially failed to create the required font because the font list is stale.
In this case, use a "last-resort" default font entry as a stopgap until the font list
update is completed.

Differential Revision: https://phabricator.services.mozilla.com/D47637

--HG--
extra : moz-landing-system : lando
2019-10-03 09:49:04 +00:00
Jonathan Kew 19da5d26be Bug 1575315 - Add noncharacter codepoints to those for which we never attempt font fallback. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D42730

--HG--
extra : moz-landing-system : lando
2019-08-22 20:59:57 +00:00
Jonathan Kew 135c7c99a8 Bug 1565966 - part 2 - Include Family attributes in mAliasTable when collecting font-name aliases, so that fontEntry instantiation on Windows can work correctly for the Aliases eventually stored in the font-list. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D41243

--HG--
extra : moz-landing-system : lando
2019-08-12 17:49:28 +00:00
Jonathan Kew 83fc5b8ada Bug 1565234 - Remove redundant override that exactly matches the base class implementation, and make GetFontFamilyList non-virtual. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D37731

--HG--
extra : moz-landing-system : lando
2019-07-11 15:28:22 +00:00
Jonathan Kew 30d216df2a Bug 1514869 - patch 6 - Hook up SetupFamilyCharMap for shared font-list Family records, to accelerate last-ditch fallback searches. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D23355

--HG--
extra : moz-landing-system : lando
2019-04-27 15:39:26 +00:00
Jonathan Kew 300d6b5a42 Bug 1514869 - patch 2 - Adapt platform-font-list code to work with either the existing in-process font list or cross-process shared font list. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D22938

--HG--
extra : moz-landing-system : lando
2019-04-27 15:37:58 +00:00
Jonathan Kew 9811ca8336 Bug 1514869 - patch 1 - Basic implementation of a cross-process sharable font list, using shared memory to store the list of families & faces, and per-font character maps. r=jwatt,jld
Differential Revision: https://phabricator.services.mozilla.com/D22937

--HG--
extra : moz-landing-system : lando
2019-04-27 15:37:29 +00:00
Jean-Yves Avenard 11ac9e9cf8 Bug 1540581 - P6. Tidy some C++ declarations in gfx/. r=gerald,jrmuizel
* Remove redundant virtual keywords
* Mark all destructors of inheriting classes as virtual for clarity
* Mark all classes without virtual destructor as final (exposed errors)
* Make destructor virtual where it needed to be (some were missing)
* Replace empty ({}) code declaration in header with = default
* Remove virtual unused methods

I probably missed some, it quickly became a rabbit hole.

Differential Revision: https://phabricator.services.mozilla.com/D26060

--HG--
extra : moz-landing-system : lando
2019-04-11 12:36:51 +00:00
Jonathan Kew 8f7eaa249c Bug 1465771 - Avoid possibly treating a quoted font-family name as a CSS generic in the fontconfig-based backend. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D26916

--HG--
extra : moz-landing-system : lando
2019-04-10 21:42:26 +00:00
Jonathan Kew 9c39f45719 Bug 723045 - Remove nsUnicodeRange and instead use ICU to look up Unicode blocks. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D25377

--HG--
extra : moz-landing-system : lando
2019-04-10 21:43:22 +00:00
Emilio Cobos Álvarez 19c116ce06 Bug 1537575 - Cleanup generic font-family handling. r=jfkthame
To be more similar between Rust and C++. This introduces GenericFontFamily and
exposes that plus FontFamilyNameSyntax to C++, using that where appropriate
instead of plain uint8_t as we were doing.

As a follow-up, as discussed on IRC with Jonathan, we can remove the -moz-fixed
family, and turn it just into an alias of Monospace.

The only non-trivial change is the MatchType changes, but they're ok I think.
The code already assumed at most one CSS generic, and the struct still takes 8
bits. I've verified that the relevant tests are passing (though try is closed).

Differential Revision: https://phabricator.services.mozilla.com/D24272

--HG--
extra : moz-landing-system : lando
2019-04-01 21:47:59 +00:00
arthur.iakab cd473e09f4 Backed out 3 changesets (bug 1537594, bug 1537575) for causing build bustages on mathml/nsMathMLChar.cpp CLOSED TREE
Backed out changeset 7375a830b5ef (bug 1537594)
Backed out changeset 0cd1411e2fb3 (bug 1537575)
Backed out changeset c7565f50239a (bug 1537575)
2019-04-01 23:41:04 +03:00
Emilio Cobos Álvarez 2188b25101 Bug 1537575 - Cleanup generic font-family handling. r=jfkthame
To be more similar between Rust and C++. This introduces GenericFontFamily and
exposes that plus FontFamilyNameSyntax to C++, using that where appropriate
instead of plain uint8_t as we were doing.

As a follow-up, as discussed on IRC with Jonathan, we can remove the -moz-fixed
family, and turn it just into an alias of Monospace.

The only non-trivial change is the MatchType changes, but they're ok I think.
The code already assumed at most one CSS generic, and the struct still takes 8
bits. I've verified that the relevant tests are passing (though try is closed).

Differential Revision: https://phabricator.services.mozilla.com/D24272

--HG--
extra : moz-landing-system : lando
2019-04-01 18:48:10 +00:00
Jonathan Kew d2a3361fa4 Bug 1533428 - patch 7 - Create a FontFamily type that wraps either a gfxFontFamily pointer or a mozilla::fontlist::Family pointer (to be used by the shared font list), and use this in various places where we need to pass families around. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D22934

--HG--
extra : moz-landing-system : lando
2019-04-01 14:33:34 +00:00
Jonathan Kew 5f45afb7ec Bug 1533428 - patch 6 - Consistently use the gfxPlatformFontList::PrefFontList type instead of repeatedly spelling out the array declaration. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D22930

--HG--
extra : moz-landing-system : lando
2019-04-01 14:33:16 +00:00
Tooru Fujisawa 7983faeb5d Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Jonathan Kew fb4f42f9a7 Bug 1507506 - Use a sorted array rather than a hashtable for the short list of bad-underline font families. r=jwatt 2018-11-15 16:11:45 +00:00
Jonathan Kew 1b456cbb54 Bug 1492518 - Remove 16-bit version of GenerateFontListKey, no longer used anywhere. r=lsalzman 2018-09-20 14:23:26 +01:00
Jonathan Kew ec73ee3318 Bug 1491860 - Use utf-8 rather than utf-16 strings to read/store font family names from preferences, as they're almost entirely ASCII. r=lsalzman 2018-09-18 09:34:24 +01:00
Jonathan Kew 6f42f167fb Bug 1490402 - Use UTF-8 strings (in place of UTF-16) for font family/face names in the system font list, to reduce memory footprint. r=lsalzman 2018-09-12 20:34:57 +01:00
Mike Hommey 117e48720c Bug 1489363 - Replace some string.Assign* with AssignLiteral. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D5224

--HG--
extra : moz-landing-system : lando
2018-09-07 22:12:01 +00:00
Jonathan Kew d4b7d95206 Bug 1464400 - Keep track of CSS generics when resolving to actual font families and faces, and expose as a new CSSGeneric attribute on InspectorFontFace. r=jwatt 2018-05-25 14:07:57 +01:00
Brindusan Cristian 2c5b7db570 Backed out changeset f8dbb1d2d07c (bug 1464400) for mochitest failures on test_font_whitelist.html. CLOSED TREE 2018-06-01 19:07:24 +03:00
Jonathan Kew 0cc7412d4f Bug 1464400 - Keep track of CSS generics when resolving to actual font families and faces, and expose as a new CSSGeneric attribute on InspectorFontFace. r=jwatt 2018-05-25 14:07:57 +01:00
Jonathan Kew 95a7a2628a Bug 1463884 - patch 1 - Move methods only used by fontconfig backend from gfxPlatformFontList to the fontconfig subclass. (No functional change.) r=emilio 2018-05-25 21:18:54 +01:00
Jonathan Kew e92b9e44cf Bug 1449605 - part 1 - Rearrange thebes font code so that the decision whether to apply synthetic-bold is deferred until actually instantiating a font, not made during the font-matching process. r=jwatt
This rearranges how synthetic-bold use is determined in the font selection
& rendering code. Previously, we would decide during the font-selection
algorithm whether we need to apply synthetic-bold to the chosen face, and
then pass that decision through the fontgroup (storing it in the FamilyFace
entries of the mFonts array there) down to the actual rendering code that
instantiates fonts from the faces (font entries) we've selected.

That became a problem for variation fonts because in the case of a user
font, we may not have downloaded the resource yet, so we just have a "user
font container" entry, which carries the descriptors from the @font-face
rule and will fetch the actual resource when needed. But in the case of a
@font-face rule without a weight descriptor, we don't actually know at
font-selection time whether the face will support "true" bold (via a
variation axis) or not, so we can't reliably make the right decision about
applying synthetic bold.

So we now defer that decision until we actually instantiate a platform font
object to shape/measure/draw text. At that point, we have the requested
style and we also have the real font resource, so we can easily determine
whether fake-bold is required.

(This patch should not result in any visible behavior change; that will
come in a second patch now that the architecture supports it.)
2018-05-01 10:30:50 +01:00
Jonathan Kew c57f185cd9 Bug 1454598 - part 3 - Use WeightRange more extensively in place of FontWeight throughout user-font handling and font-entry creation, and handle Stretch and SlantStyle similarly. r=jwatt 2018-04-25 07:18:23 +01:00