Commit Graph

229 Commits

Author SHA1 Message Date
Alexis Beingessner
4303ce985c Bug 1403261 - enable native webrender handling of partial ligatures. r=jrmuizel,mstange
The clipping code uses gfxContext::GetClipExtents which calls gfxContext::GetDeviceOffset
and DrawTarget::GetSize. The former was previously not being intialized, while the latter
was explicitly unimplemented. This patch fixes both of those facts.

Otherwise, enabling this functionality has been made trivial by several upstream patches
in webrender (the most recent being glenn's work on unifying shadows which eliminated
the buggy text-shadow shader code that was blocking this).

MozReview-Commit-ID: B1AlG3o4XQS

--HG--
extra : rebase_source : 2043c9c781f507c5d02041420145b1a5c59c0bb2
2018-04-16 23:05:48 -04:00
Jonathan Watt
1e7f76576a Bug 1436048 part 1 - Use a user defined type for font weight everywhere. r=jfkthame,emilio
--HG--
extra : rebase_source : 2e267ff99de6f52484e34ac15c39e5ca8b473394
2018-04-13 20:34:37 +01:00
Jonathan Watt
52623f7cef Bug 1452466 - Get rid of gfxFontStyle::ComputeWeight. r=jfkthame 2018-04-09 10:39:17 +01:00
Jonathan Kew
195f35adee Bug 253143 - Do not add letter-spacing after zero-width format controls such as ZWSP. r=jwatt 2018-03-05 21:57:57 +00:00
Jonathan Kew
cf67f1fa00 Bug 1436535 - Attempt intra-family fallback even when the first-matched face was Normal style, as other weights may have a different character repertoire. r=m_kato 2018-02-12 10:20:51 +00:00
Jonathan Kew
d477a069f3 Bug 1431305 - Handle fallback (rotated) rendering of characters with Vertical_Orientation=Tr when the font does not support them via 'vert', nor is there a vertical presentation form encoded in Unicode. r=m_kato 2018-01-19 10:46:53 +00:00
shindli
6399f1f1af Backed out changeset 33571130ef67 (bug 1431305) for failing in /text-orientation-mixed-vlr-100-ref.html on a CLOSED TREE 2018-01-19 17:56:20 +02:00
Jonathan Kew
6aa84ed3ae Bug 1431305 - Handle fallback (rotated) rendering of characters with Vertical_Orientation=Tr when the font does not support them via 'vert', nor is there a vertical presentation form encoded in Unicode. r=m_kato 2018-01-19 10:46:53 +00:00
Milan Sreckovic
099cfc4242 Bug 1423570: Use BaseRect access methods instead of member variables in gfx/ r=bas.schouten
MozReview-Commit-ID: ZGySgc9oP3

--HG--
extra : rebase_source : 23aadc10e9885002290155684b2c495780d979ce
2017-12-19 15:48:39 -05:00
Makoto Kato
153c591749 Bug 1032671 - Part 4. Font fallback should detect emoji range for color emoji font. r=jfkthame
MozReview-Commit-ID: AeqSLUU9GRH

--HG--
extra : rebase_source : 3a3d0c70072b990d83b1304eb527f30307f6e944
2017-11-12 16:36:24 +09:00
Makoto Kato
d60606ea88 Bug 1032671 - Part 2. Use font.name-list.emoji preference for emoji presenration. r=jfkthame
MozReview-Commit-ID: DbrGeXzCpNT

--HG--
extra : rebase_source : 2a824295ff9c89b243cf49675e4c5c54a7a7259d
2017-11-12 16:24:58 +09:00
Jonathan Kew
af62b14db3 Bug 1403302 - patch 3 - Remove direct cairo dependency from gfxTextRun and gfxGlyphExtents. r=bas 2017-11-23 19:40:33 +00:00
Jonathan Kew
49c97adb4e Bug 1411625 - Remove the constructor from gfxShapedText::CompressedGlyph to make it a trivial class, and provide a couple of convenience "factory" methods to create simple and complex glyph values. r=andi 2017-11-11 15:32:58 +00:00
Markus Stange
06a44912a5 Bug 1414154 - Remove gfxContext::Set/GetFontSmoothingBackgroundColor and TextRunDrawParams::fontSmoothingBGColor. r=lsalzman
MozReview-Commit-ID: BXZP3maOJRi

--HG--
extra : rebase_source : 5ba8b50835d98f78cdf854d914d61f5508edf6e3
2017-11-02 22:31:15 -04:00
Jonathan Kew
1f0b3fb8e7 Bug 1411931 - Ignore the font-size tolerance for bitmap fonts when matching font style in GetDefaultFont, as even a poor size match is better than no usable font. r=lsalzman 2017-10-31 17:33:18 +00:00
Chris Peterson
73037a0f6a Bug 1412048 - Replace NS_RUNTIMEABORT(var) with MOZ_CRASH_UNSAFE_OOL(var). r=froydnj data-review=francois
And remove unreachable code after MOZ_CRASH_UNSAFE_OOL().

MOZ_CRASH_UNSAFE_OOL causes data collection because crash strings are annotated to crash-stats and are publicly visible. Firefox data stewards must do data review on usages of this macro. However, all the crash strings this patch collects with MOZ_CRASH_UNSAFE_OOL are already collected with NS_RUNTIMEABORT.

MozReview-Commit-ID: IHmJfuxXSqw

--HG--
extra : rebase_source : 031f30934b58a7b87f960e57179641d44aefe5c5
extra : source : fe9f638a56a53c8721eecc4273dcc074c988546e
2017-10-24 23:38:38 -07:00
Jonathan Kew
0aa24e331c Bug 1412355 - Replace the mXOffset/mYOffset fields in DetailedGlyph records with a gfx::Point that stores glyph offsets in line-orientation-relative coordinates. r=jrmuizel 2017-10-30 14:55:42 +00:00
Sebastian Hengst
8968724f1a Backed out changeset 4905048de8d1 (bug 1412355) for frequently failing reftest layout/reftests/writing-mode/1248248-1-orientation-break-glyphrun.html on Linux x64 debug and asan. r=backout
--HG--
extra : amend_source : 61e56c97354c788bfd03aa551e911a1aff14006e
2017-10-28 16:39:59 +02:00
Jonathan Kew
62f09f8b17 Bug 1407114 - part 4 - Handle fallback from styled to regular face if necessary when using font-families from preferences. r=jrmuizel 2017-10-23 22:32:58 +01:00
Jonathan Kew
bbbc9da9dd Bug 1407114 - part 1 - preliminary cleanup - Remove the (unused) runScript member from the GlobalFontMatch struct, and introduce gfxFontEntry::IsNormalStyle() helper method. r=jrmuizel 2017-10-28 13:21:38 +01:00
Jonathan Kew
8397a853b8 Bug 1412355 - Replace the mXOffset/mYOffset fields in DetailedGlyph records with a gfx::Point that stores glyph offsets in line-orientation-relative coordinates. r=jrmuizel 2017-10-28 11:37:35 +01:00
Jonathan Kew
793b63713b Bug 1408612 - patch 1 - Use single-precision floats more consistently for glyph position computations when drawing text. r=jrmuizel 2017-10-24 09:59:09 +01:00
Jonathan Kew
0cac41cef7 Bug 1361631 - patch 2 - For Mongolian and Phags-pa script, always shape/render vertical text in a sideways-right mode (applying 90° rotation), even if text-orientation:upright is in effect, because fonts are designed to give the 'native' vertical rendering when used this way. r=xidorn 2017-10-20 11:20:18 +01:00
Jonathan Kew
fef1726255 Bug 1361631 - patch 1 - Rearrange handling of textrun/glyph orientation so that we pass the resolved 'orientation' value of each glyph run from gfxFontGroup::InitScriptRun through to gfxFont::SplitAndInitTextRun, rather than just a boolean 'vertical' flag. (No functional change.) r=xidorn 2017-10-20 11:20:18 +01:00
Cameron McCormack
0b7960f23a Bug 1397626 - Part 3: Use SharedFontList to store font-family specified and computed values. r=xidorn
MozReview-Commit-ID: J3MNO2un2ov

--HG--
extra : rebase_source : 737943aea3d383669a7103d4e23f109889c09034
2017-10-03 12:27:45 +08:00
Alexis Beingessner
b5bacff9f8 Bug 1404370 - TextDrawTarget: add fallbacks for remaining cases, remove some hacks. r=jrmuizel
This adds fallbacks for:
* synthetic bold
* synthetic italics
* text-writing-modes

This also removes an old hack to make synthetic italics less broken.

This also prevents special opacity handling for color fonts so that webrender
gets that information.

MozReview-Commit-ID: DKiTUBR6hzy

--HG--
extra : rebase_source : 22b445d40ee46bb09d4325828a8e959d3da7a9c7
2017-09-29 12:05:34 -04:00
Alexis Beingessner
c3525dd8e7 Bug 1403167 - TextDrawTarget: fallback on partial ligatures. r=jrmuizel
MozReview-Commit-ID: BS4dsb0ndYU

--HG--
extra : rebase_source : 048b646ade53072d9d0734fe10c09074f007a1dc
2017-09-26 13:03:10 -04:00
Alexis Beingessner
9022c22b82 Bug 1400382 - Replace explicit TextDrawTarget passing with cast-based system. r=mstange
MozReview-Commit-ID: EQtFvLQCT2U

--HG--
extra : rebase_source : 1fff1b545c18d42403cf9c30172528e553a6af48
2017-09-21 15:15:58 -04:00
Alexis Beingessner
6b38993c8b Bug 1399274 - Block invisible text optimizations when using WebRender. r=jrmuizel
Mostly just threading the TextDrawTarget deeper into the code to use a boolean.
A lot of places are trying to optimize away invisible text!

MozReview-Commit-ID: 89sDAwUv0HA

--HG--
extra : rebase_source : 8d800702232aec6626a33f2d6be893708d0bbfee
2017-09-13 14:05:51 -04:00
Jonathan Kew
6ceb7d87f9 Bug 835204 - Accept styled font-family names as used in the legacy GDI model, for compatibility with content that assumes GDI-style font naming. r=heycam 2017-08-01 11:25:35 +01:00
Jonathan Kew
4ea7df6c56 Bug 1377328 - part 1 - Annotate some font-related helper classes as MOZ_STACK_CLASS. r=milan 2017-06-29 17:52:38 -07:00
Jonathan Kew
7f081f0d06 Bug 1385462 - Ensure GlyphRunIterator::NextRun returns false immediately if the textrun's only glyphrun does not have a valid font. r=lsalzman 2017-08-07 17:26:08 +01:00
JerryShih
fcec675802 Bug 1368531 - Put the task gfxPlatformFontList::InitOtherFamilyNames() into idle queue. r=jfkthame
Add a boolean value in FindFamily() to check if gecko needs to defer the
InitOtherFamilyNames() task into idle queue.

Add a new telemetry data FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING for the
execution time of InitOtherFamilyNames() running regularly at main thread
instead of in idle queue.

MozReview-Commit-ID: A3YPDcHtXrX
2017-08-02 20:33:00 -04:00
Sebastian Hengst
c2b9c2c204 Backed out changeset e1d538cd1cf8 (bug 1368531) for bustage on Windows: 'gfxPlatformFontList::InitOtherFamilyNamesRunnable::Cancel': overriding virtual function differs from 'mozilla::CancelableRunnable::Cancel' only by calling convention. r=backout 2017-08-02 21:12:51 +02:00
JerryShih
0138441875 Bug 1368531 - Put the task gfxPlatformFontList::InitOtherFamilyNames() into idle queue. r=jfkthame
Add a boolean value in FindFamily() to check if gecko needs to defer the
InitOtherFamilyNames() task into idle queue.

Add a new telemetry data FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING for the
execution time of InitOtherFamilyNames() running regularly at main thread
instead of in idle queue.

MozReview-Commit-ID: A3YPDcHtXrX
2017-08-01 01:07:00 -04:00
Kartikaya Gupta
ba4b3b9101 Bug 1384233 - Remove SizePrintfMacros.h. r=froydnj
We have a minimum requirement of VS 2015 for Windows builds, which supports
the z length modifier for format specifiers. So we don't need SizePrintfMacros.h
any more, and can just use %zu and friends directly everywhere.

MozReview-Commit-ID: 6s78RvPFMzv

--HG--
extra : rebase_source : 009ea39eb4dac1c927aa03e4f97d8ab673de8a0e
2017-07-26 16:03:57 -04:00
cku
e9501d8277 Bug 1379404 - Part 3. Prevent using gfxContext::Save/Restore in gfxTextRun. r=mattwoodrow
MozReview-Commit-ID: 5p7vAYHGhdy

--HG--
extra : rebase_source : 76a1d48d67670f43ef7339422340e21034b34a3c
2017-07-09 00:33:54 +08:00
Jonathan Kew
c5545a71fe Bug 1369526 - Add a fast-path in gfxFontGroup::ComputeRanges to avoid calling FindFontForChar when possible. r=jrmuizel 2017-06-29 15:38:04 -07:00
Jonathan Kew
5133782794 Bug 1364224 - Reduce refcount churn on gfxFont by using raw pointers where no strong ownership is needed. r=jrmuizel 2017-06-29 15:37:52 -07:00
Jonathan Kew
982e744811 Bug 1376136 - Remove the shapedText flag TEXT_IS_PERSISTENT, as nothing depends on it any longer. r=mats 2017-06-25 09:30:28 +01:00
Jonathan Kew
b1d22b8fd2 Bug 734008 - DeCOMtaminate nsILanguageAtomService, make it a non-refcounted singleton and clean up various call sites. r=m_kato 2015-04-03 21:39:23 +02:00
Carsten "Tomcat" Book
fdc689ba16 merge mozilla-inbound to mozilla-central a=merge 2017-05-05 15:17:26 +02:00
Jonathan Kew
4b5525bbf7 Bug 1362167 - Use strongly-typed enum classes instead of generic uint16_t fields for the gfxShapedText and gfxTextRun flags. r=jrmuizel 2017-05-04 22:27:05 +01:00
Jonathan Kew
6fc5313103 Bug 1362167 - Split gfxShapedText.mFlags into two 16-bit flags fields, and arrange storage more compactly to reduce size of gfxShapedWord and gfxTextRun objects. r=jrmuizel 2017-05-04 22:25:16 +01:00
Jonathan Kew
afaf811234 Bug 1360620 - Optimize GlyphRun storage strategy in gfxTextRun, to reduce the overall size of the gfxTextRun object. r=jrmuizel 2017-05-02 11:14:53 +01:00
Cameron McCormack
756d5f5a9a Bug 1356103 - Part 9: Use a PostTraversalTask to deal with downloadable fonts in gfxUserFontSet. r=bholley,jfkthame
Here we add a new UserFontLoadState value, STATUS_LOAD_PENDING, which
represents the state just after a gfxUserFontEntry's url()-valued source
would being loading, except that we can't start the load due to being
on a Servo style worker thread.  In that case, we defer the work of
initiating the load until just after the Servo traversal is finished.

URLs that can normally be loaded synchronously, such as data: URLs
and script-implemented protocols marked as synchronous, must be
handled asynchronously when encountered during Servo traversal, since
various main-thread only work (in FontFaceSet::SyncLoadFontData) must
happen.  This is a user visible change from stock Gecko, but should
only happen when font metrics for a data: URL font are requested
due to ch/ex unit resolution when layout hasn't previously requested
the font load.  Hopefully nobody relies on synchronous resolution of
ch/ex units with data: URLs.

We unfortunately also can't pick gfxUserFontEntry objects out of the
UserFontCache during Servo traversal, since validating the cache
entry involves doing content policy checking, which is not thread-safe
(due in part to taking strong references to nsIPrincipals).

Platform fonts and ArrayBuffer-backed DOM FontFace objects continue
to be handled synchronously.

The PostTraversalTask does not take a strong reference to the
gfxUserFontEntry object, since it is held on to by the DOM FontFace
object, which itself won't go away before the PostTraversalTask
is run.

MozReview-Commit-ID: J9ODLsusrNV

--HG--
extra : rebase_source : d3e3d1dc187cb252750b57bcecd0b1ed77a15a7c
2017-04-30 14:57:25 +08:00
Iris Hsiao
0a6db9e69f Backed out 12 changesets (bug 1356103) for build bustage at PostTraversalTask.h
Backed out changeset 9fb487252c28 (bug 1356103)
Backed out changeset 301237c65945 (bug 1356103)
Backed out changeset 7bc3a4861a39 (bug 1356103)
Backed out changeset 2f383d89184b (bug 1356103)
Backed out changeset a03112e1c9d5 (bug 1356103)
Backed out changeset c60b4c9cbd83 (bug 1356103)
Backed out changeset 34280baeaabe (bug 1356103)
Backed out changeset 31a0881cfb47 (bug 1356103)
Backed out changeset 529d037f9c33 (bug 1356103)
Backed out changeset 1c7831db6b07 (bug 1356103)
Backed out changeset 559f06e32df3 (bug 1356103)
Backed out changeset 784865d234cd (bug 1356103)
2017-05-04 17:56:25 +08:00
Cameron McCormack
d3acda35aa Bug 1356103 - Part 9: Use a PostTraversalTask to deal with downloadable fonts in gfxUserFontSet. r=bholley,jfkthame
Here we add a new UserFontLoadState value, STATUS_LOAD_PENDING, which
represents the state just after a gfxUserFontEntry's url()-valued source
would being loading, except that we can't start the load due to being
on a Servo style worker thread.  In that case, we defer the work of
initiating the load until just after the Servo traversal is finished.

URLs that can normally be loaded synchronously, such as data: URLs
and script-implemented protocols marked as synchronous, must be
handled asynchronously when encountered during Servo traversal, since
various main-thread only work (in FontFaceSet::SyncLoadFontData) must
happen.  This is a user visible change from stock Gecko, but should
only happen when font metrics for a data: URL font are requested
due to ch/ex unit resolution when layout hasn't previously requested
the font load.  Hopefully nobody relies on synchronous resolution of
ch/ex units with data: URLs.

We unfortunately also can't pick gfxUserFontEntry objects out of the
UserFontCache during Servo traversal, since validating the cache
entry involves doing content policy checking, which is not thread-safe
(due in part to taking strong references to nsIPrincipals).

Platform fonts and ArrayBuffer-backed DOM FontFace objects continue
to be handled synchronously.

The PostTraversalTask does not take a strong reference to the
gfxUserFontEntry object, since it is held on to by the DOM FontFace
object, which itself won't go away before the PostTraversalTask
is run.

MozReview-Commit-ID: J9ODLsusrNV

--HG--
extra : rebase_source : 1651e2917bd31b87fc1c1be94b0eced1273df86a
2017-04-30 14:57:25 +08:00
Jonathan Kew
6f0d451756 Bug 1352528 - Hoist call to GetRoundOffsetsToPixels out of the inner loop of text shaping. r=jrmuizel 2017-04-03 17:49:17 +01:00
Manish Goregaokar
6be22491bd Bug 1341724 - Part 4: stylo: Make font metrics usage threadsafe; r=heycam
MozReview-Commit-ID: 3EqpUy09UuI
2017-04-10 17:06:19 +08:00