------------------------------------------------------------------------
*From: *"Vivien Nicolas" <vnico...@mozilla.com>
*To: *"Wilson Page" <wilsonp...@mozilla.com>, "Jonathan Kew"
<j...@mozilla.com>
*Cc: *"Jet Villegas" <j...@mozilla.com>, "Patryk Adamczyk"
<padamc...@mozilla.com>, "John Daggett" <jdagg...@mozilla.com>,
"b2g-internal" <b2g-inter...@mozilla.org>, "Cameron McCormack"
<hey...@gmail.com>, "Jonathan Watt" <jw...@mozilla.com>, "L. David
Baron" <dba...@mozilla.com>, "Jaime Chen" <jac...@mozilla.com>,
"sicking" <sick...@mozilla.com>, "Robert O'Callahan"
<rocalla...@mozilla.com>, "mozilla.dev.platform group"
<dev-platform@lists.mozilla.org>
*Sent: *Tuesday, June 17, 2014 4:48:19 PM
*Subject: *Re: Icon fonts in FxOS
Just want to make sure that there is no misunderstanding here: based
on the data from
https://bugzilla.mozilla.org/show_bug.cgi?id=948856#c37, some
experience with loading icon fonts versus images versus svg that has
been described on dev-gaia, *preloading the font is needed*.
On 06/17/2014 12:52 PM, Wilson Page wrote:
I'm inlining to minimise cross-origin issues and to reduce
requests. The entire asset is <12k so I'm really not concerned
with performance here, especially considering the number of PNG
assets this replaces. We've been using a similar approach in
Camera for quite some time and all has been well. I think there
are better areas we can focus performance efforts.
Performance is not always related to the size of the asset. For
example last time I found that we consume 2.4mb of memory all the
time in the System app because we were loading 4 times an image asset
of 3k. Every time this asset was rendered it was consuming 600k of
memory. This asset was a gradient and it was expensive to render it.
When you consider the size of the asset in this case, you should also
consider at which time it is read, if is it going to trigger some
invalidations because the image will arrive after the app is
rendered, how long will it take for the font subsystem to render
those glyphs, can we save some memory by using some system features,
instead of having a local copy in all apps, etc...
I'm not exactly sure if glyphs are still assigned to code points
within the generated font, is that an issue?
IMO we should just treat icon assets in the same way we do images
assets.
Image assets may be slow. We run into this issue multiple times in
the Settings app. Replacing our current image assets icons with an
icon font baked into the platform shave ~300ms of load time.
Baking them into the platform seems like it could cause
unnecessary complications further down the line, for negligible
perf gains.
Obviously 300ms is not negligible :)
Also in terms of memory there is an impact too, and since we're
targeting very low end devices, I expect this to be useful too.
The current mechanism used by Gecko to discard images help us to
reduce the memory overhead here for background apps, but it has the
side effect that the image needs to be re-decoded when the app goes
to foreground and it takes time (you see images flashes when the
images are re-decoded / repainted).
So icon font would make some apps to load faster, consume less
memory, and avoid some glitches when the app goes from background to
foreground. Definitively not negligible.
At the end of the day we're a collection of web-apps, the more we
exploit our platform power, the further we distance ourselves
from the real web platform.
What you say here is true. And we would all like to use only simple
web features, and that's definitively the goal.
But while we are heading up to this goal, we sometimes needs to do
some trade-offs, and using icon fonts is one of them. It does not
mean there is more distance from the real web platform, as I believe
that while Gaia use icon fonts, a lot of efforts will be done on the
svg side in order to replace the icon font with SVG when it will be
time to do so.
So you should see that as: it makes us more competitive in this
extremely competitive area, and offers us a bit more time to fix the
real issue, which is that SVG does not fit yet, and beside that, to
fix the web platform to make it becomes reals on mobile.
Vivien.
W.
------------------------------------------------------------------------
*From: *"Jonathan Kew" <j...@mozilla.com>
*To: *"Wilson Page" <wilsonp...@mozilla.com>, "Jet Villegas"
<j...@mozilla.com>
*Cc: *"Patryk Adamczyk" <padamc...@mozilla.com>, "John Daggett"
<jdagg...@mozilla.com>, "b2g-internal"
<b2g-inter...@mozilla.org>, "Cameron McCormack"
<hey...@gmail.com>, "Jonathan Watt" <jw...@mozilla.com>, "L.
David Baron" <dba...@mozilla.com>, "Jaime Chen"
<jac...@mozilla.com>, "Vivien" <vnico...@mozilla.com>, "sicking"
<sick...@mozilla.com>, "Robert O'Callahan"
<rocalla...@mozilla.com>, "mozilla.dev.platform group"
<dev-platform@lists.mozilla.org>
*Sent: *Tuesday, June 17, 2014 11:31:18 AM
*Subject: *Re: Icon fonts in FxOS
On 17/6/14 11:10, Wilson Page wrote:
The gaia-icons font currently uses ligatures to place icons,
see here
<https://github.com/gaia-components/gaia-icons/blob/master/style.css#L32>.
The ligature character sequence is derived from the original
filename of the SVG source file in `images/`.
Is this what you were referring to?
OK, so if you're using ligatures to access the icon glyphs, can
you modify the script that generates this font so that it does
NOT assign PUA codepoints to the glyphs at all? It should be
possible to leave them unencoded (i.e. with no entry in the
font's cmap), so that the only way they can be accessed is via
the ligature sequence.
I see you're embedding the generated font directly in a CSS file
as a data-URL. How's the performance of this approach? It won't
be quite as efficient as installing the font in the base OS,
because each app that uses it will be instantiating its own
separate copy, so there must be a memory and perf cost. But maybe
it's good enough?
JK
------------------------------------------------------------------------
*From: *"Jet Villegas" <j...@mozilla.com>
*To: *"Wilson Page" <wilsonp...@mozilla.com>
*Cc: *"Patryk Adamczyk" <padamc...@mozilla.com>, "John
Daggett" <jdagg...@mozilla.com>, "b2g-internal"
<b2g-inter...@mozilla.org>, "Cameron McCormack"
<hey...@gmail.com>, "Jonathan Watt" <jw...@mozilla.com>, "L.
David Baron" <dba...@mozilla.com>, "Jaime Chen"
<jac...@mozilla.com>, "Vivien" <vnico...@mozilla.com>,
"sicking" <sick...@mozilla.com>, "Robert O'Callahan"
<rocalla...@mozilla.com>, "Jonathan Kew" <j...@mozilla.com>,
"mozilla.dev.platform group" <dev-platform@lists.mozilla.org>
*Sent: *Tuesday, June 17, 2014 12:54:57 AM
*Subject: *Re: Icon fonts in FxOS
Wilson:
How difficult would it be to have your grunt script add a
dlig table to your font?
https://www.microsoft.com/typography/otspec/features_ae.htm#dlig
https://bugzilla.mozilla.org/show_bug.cgi?id=1008458#c22
--Jet
----- Original Message -----
From: "Wilson Page" <wilsonp...@mozilla.com>
We are using icon-fonts in some of the new web-component
based building-blocks examples. I have created a gaia-icons
repo so that our components can explicitly depend on these
icons. Inside this repo we have all the source SVGs inside
`images/`. A grunt task called grunt-webfont converts all
these SVGs into a single icon-font. To add new icons, you
simple have to drop new SVGs into the `images/` directory.