<div dir="ltr">Hi Dominik,<div><br></div><div>Thanks for the message. I believe this is an important and noble project to consider upstream.</div><div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">behdad<br><a href="http://behdad.org/" target="_blank">http://behdad.org/</a></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 6, 2024 at 9:11 AM Dominik Röttsches <<a href="mailto:drott@chromium.org">drott@chromium.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Akira & FontConfig community,<br>
<br>
Allow me to introduce myself, I am Dominik Röttsches, I work as an<br>
engineer on the Chrome rendering team.<br>
<br>
I am curious to hear your thoughts on accepting contributions to<br>
FontConfig that provide an alternative indexing code path and build<br>
configuration that does not require FreeType, but instead uses the<br>
Rust-based Fontations libraries [1] developed by Google Fonts.<br>
<br>
* Would you be ready to consider accepting such contributions?<br>
* Do you see dependencies other than indexing that require FreeType?<br>
(FreeType specific API functions [3] would need to be compiled out in<br>
the Fontations build).<br>
<br>
Background:<br>
<br>
In Chrome we're working on replacing FreeType with the Fontations set<br>
of Rust font libraries [1],[2]. Our main goals are improving Chrome's<br>
security and bringing Google Fonts and Chrome to a common code base<br>
for font processing, in order to accelerate future font format<br>
development work.<br>
<br>
Since we also depend on FontConfig in Chrome, we're looking into<br>
removing FontConfig's dependency on FreeType, and performing indexing<br>
using Fontations.<br>
<br>
Demo:<br>
<br>
Here's a proof of concept branch,<br>
<a href="https://gitlab.freedesktop.org/drott/fontconfig/-/commits/fontationsIndexing" rel="noreferrer" target="_blank">https://gitlab.freedesktop.org/drott/fontconfig/-/commits/fontationsIndexing</a><br>
which indexes OpenType fonts using Fontations and supports only a<br>
limited set of indexed and added pattern elements.<br>
<br>
Building with Rust support and importing crates automatically requires<br>
meson 1.5 which can be locally installed for example using:<br>
<br>
$ python3 -m venv venv<br>
$ source venv/bin/activate<br>
$ python3 -m pip install meson<br>
<br>
Then the branch is built using:<br>
$ meson setup -Dfontations=enabled build<br>
$ ninja -C build/<br>
Then a simple test like the following works:<br>
$ build/fc-scan/fc-scan /usr/share/fonts<br>
<br>
I am looking forward to hearing from you,<br>
<br>
Dominik<br>
<br>
[1] <a href="https://github.com/googlefonts/fontations/" rel="noreferrer" target="_blank">https://github.com/googlefonts/fontations/</a><br>
[2] <a href="https://issues.chromium.org/40045339" rel="noreferrer" target="_blank">https://issues.chromium.org/40045339</a><br>
[3] <a href="https://fontconfig.pages.freedesktop.org/fontconfig/fontconfig-devel/x103.html#:~:text=FreeType%20specific%20functions" rel="noreferrer" target="_blank">https://fontconfig.pages.freedesktop.org/fontconfig/fontconfig-devel/x103.html#:~:text=FreeType%20specific%20functions</a><br>
</blockquote></div>