Contact emails
dhn...@chromium.com, owe...@chromium.com
Spec
https://github.com/DHNishi/LocalFontAccess
Summary
A Local Font Access API would give access to local fonts installed on a user's device. This enables the development of web apps for designers that need to access and manipulate the glyphs inside of fonts.
Motivation
In order to create apps for designers, developers need access to the raw font information to render fonts properly across all platforms and to manipulate the glyphs and their spacings inside. Most designers have fonts on their system which are not web fonts and are unlikely to become web fonts any time soon, due to licensing issues. As a result, these designers can only use native applications for their work, and the web is an unsuitable platform. By granting access to the font information directly, we resolve this issue while also avoiding situations like the faux bold controversy workarounds that the browsers use today.
Compatibility Risk
None of the other vendors have public signals for this new API. Some web developers have given positive feedback. Due to the small footprint of this API, risk should be low.
Ongoing technical constraints
Currently, this feature will be supported on Windows/Mac/Linux. Chrome OS is designed to make it very difficult to install custom fonts and requires that the user place their Chrome OS device into Developer mode to do so. The Android platform is currently not a target for these apps for designers with regards to typefaces, so we are not including it in the initial pass.
If a breaking changes between OS versions fundamentally changes how font access works, the implementation could need to change correspondingly. We expect the risk of this constraint to be low.
OWP launch tracking bug
https://code.google.com/p/chromium/issues/detail?id=535764
Link to entry on the feature dashboard
https://www.chromestatus.com/features/6173242628767744To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
☆PhistucK
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
☆PhistucK
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
☆PhistucK
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Motivation
In order to create apps for designers, developers need access to the raw font information to render fonts properly across all platforms and to manipulate the glyphs and their spacings inside. Most designers have fonts on their system which are not web fonts and are unlikely to become web fonts any time soon, due to licensing issues. As a result, these designers can only use native applications for their work, and the web is an unsuitable platform. By granting access to the font information directly, we resolve this issue while also avoiding situations like the faux bold controversy workarounds that the browsers use today.
"By granting access to the font information directly, we resolve this issue while also avoiding situations like the faux bold controversy workarounds that the browsers use today."
"Several solutions for handling the font blob exist today for web. We can use a JS library like FontKit or OpenType.js or C libraries (such as FreeType2) through Emscripten to inspect and rasterize the glyphs contained in the font."
Seems like this falls into the Houdini umbrella of primitives. This also seems like it should be owned by them and part of the CSS font loading API, not a new FontAccess object.
I don't think this is really ready to give a positive or negative signal to without more details on what kind of API this will implement. The explainer is vague, and it seems this should be socialized with other browser vendors too.
The broader goal of exposing more font data is great though. :)
One approach would be to support all of these advanced typographical features. Due to the complexity of fonts, a spec for supporting everything needed would be huge. Even if there was a spec, inconsistencies between the implementations between different platforms would be unacceptable for certain layout apps.
In practice, companies like Prezi have ported the parts they've needed to make their product consistent using Emscripten to fill the gaps (this also has the side effect of making their web product consistent with the native offerings which use the same libraries). Others have begun porting OpenType to JS. In order for these solutions to work, they need access to the binary font blob.As far as I can see, having access to the binary font blob is the only solution which would provide the required consistency to avoid situations like this and to support existing users.
Why do you feel that this solution will not allow web devs to "resolve the issue"?
Concretely, here are a subset of the features that are required to bring the layout applications to the web:A list of all fonts with their family name, style, and postscript name.
This should come with their standard metrics (i.e. height, ascender, descender, etc), as well as their underline location and thickness values
The actual glyph paths, rather than just an SVG. Also, the glyph advance widths, kerning values, and a way of getting the supported glyph ranges for any local font.
Lastly, we'd need to provide access to the advanced font features such as the hinting in the fonts (if provided), the ligatures, small caps (http://designforhackers.com/blog/small-caps-fake-vs-real/), colored glyphs (http://typography.guru/journal/windows-color-fonts/), and contextual alternatives (http://ilovetypography.com/2011/04/01/engaging-contextuality/).Due to the large surface of required features and the depth of the font file types, I feel giving access to the font file blob is the path of least resistance.
Why do you feel that this solution will not allow web devs to "resolve the issue"?
On Thu, Oct 1, 2015 at 12:40 AM, Dominik Röttsches <dr...@google.com> wrote:Hi Daniel,it'd be great if we could work on concrete issues instead of vague claims of "web rendering is inconsistent across platforms". Similar to Elliot who mentioned the Houdini initiative and exposing more font data, I'd suggest to identify a minimal set of primitives/APIs that are missing to achieve bringing layout applications with a high typography fidelity to the web.In terms of breakages: So far, we've talked about the issue of synthetic bold, and - from the video, an issue with unsharp font selection, leading to differences in line breaking. These can be addressed without rewriting and porting the whole font and layout stack to JavaScript.Such a migration to JS is highly inefficient: Loading and decompressing fonts into each renderer, redudant caches for layout, rendered glyphs, etc., potentially slow and memory-intense text processing in JS, etc. - a very heavy CPU and memory load for a mobile device.Manipulating glyph shapes, one of the requirements you brought up, could probably be achieved by an API that returns an SVG path for a glyph for example.One approach would be to support all of these advanced typographical features. Due to the complexity of fonts, a spec for supporting everything needed would be huge. Even if there was a spec, inconsistencies between the implementations between different platforms would be unacceptable for certain layout apps.Which features, concretely, do you see missing in the CSS3 Fonts Module?In practice, companies like Prezi have ported the parts they've needed to make their product consistent using Emscripten to fill the gaps (this also has the side effect of making their web product consistent with the native offerings which use the same libraries). Others have begun porting OpenType to JS. In order for these solutions to work, they need access to the binary font blob.As far as I can see, having access to the binary font blob is the only solution which would provide the required consistency to avoid situations like this and to support existing users.I still don't think this will reliably and efficiently address the requirements presented.Dominik
Thanks for the thoughts!I unfortunately don't know enough to chime in on the alternate proposal, but wanted to comment on "It will be unrealistic to believe that a couple wiz JS developers can implement / port it all to JS / Coffee / whatever in their spare time in a few months / even years".Implementing or porting does indeed sound totally unrealistic, but I understand it could be realistic to compile to something like Web Assembly, at which point a JS-accessible version of HarfBuzz shares all of your work and fixes etc?
I'm also curious what you were thinking of by "a native font chooser widget accessible to web apps", once the user chooses a font would that expose a blob or something else?