googlefonts / noto-emoji

Noto Emoji fonts
SIL Open Font License 1.1
3.74k stars 451 forks source link

Use Google Noto Emoji as PNG files #316

Closed nunoperalta closed 4 years ago

nunoperalta commented 4 years ago

Hello,

I am looking into converting my website's Emoji characters into the PNGs used by Google Noto Emoji. (I don't want to use the Font, as it would be an extra ~10MB to load on the webpage, for every user)

I have, however, some questions:

'1) Is there a way I can generate a "regex" that is compatible with your codepoints?

Something similar to this Twemoji's regex: https://github.com/twitter/twemoji-parser/blob/master/src/lib/regex.js

'2) I was attempting to use Twemoji's regex to convert. It DOES work for 95% of the emoji.

However,

2.1) None of the flags work. That's because the PNG of your flags don't have the codepoints in their file names: https://github.com/googlefonts/noto-emoji/tree/master/third_party/region-flags/png

Any way I can convert the file names into the proper codepoints? (other than manually!)

2.2) Some codepoints seem to be inconsistent. For example, this emoji:

https://github.com/googlefonts/noto-emoji/blob/master/png/128/emoji_u1f937_1f3fb_200d_2640.png 1f937_1f3fb_200d_2640.png

Seems to be missing "_fe0f" at the end of the file name.

In Emojipedia's list, the Emoji file name seems to have that suffix: https://emojipedia.org/google/

https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/google/241/woman-shrugging-light-skin-tone_1f937-1f3fb-200d-2640-fe0f.png 1f937-1f3fb-200d-2640-fe0f.png

--

In summary, what I'm asking is:

1) a way to convert Emoji characters into codepoints

2) a list of PNG files with filenames compatible with those codepoints

Please let me know if it's possible to reach this.

Thank you very much.

rsheeter commented 4 years ago

In addition to the file size issue color fonts and browser support is not a fun game to play right now. https://www.colorfonts.wtf/#section4, Noto Emoji currently builds to CBDT.

I believe you can accomplish what you want by doing something like:

Depending on your use case it might make sense to use the svgs instead of the pngs.

nunoperalta commented 4 years ago

Thank you very much. I'm trying to build, but stuck with the requirements. Note I'm not an expert in dealing with Python/pip, but this is what I got so far:

$ python3 -m pip install pkgconfig zopfli $ git clone --recursive https://github.com/kornelski/pngquant.git $ cd pngquant && make && make install

$ cd .. $ wget https://github.com/googlefonts/noto-emoji/archive/v2020-07-22-unicode13_0.zip $ unzip v2020-07-22-unicode13_0.zip $ cd noto-emoji-2020-07-22-unicode13_0 $ python3 -m venv venv $ source venv/bin/activate $ python3 -m pip install -r requirements.txt

Collecting fonttools>=4.7.0 (from -r requirements.txt (line 1)) Downloading https://files.pythonhosted.org/packages/ec/92/77b9011f8f818c6a1b338e157c3fb86d27907b02dfc3d7f30334e2129cc7/fonttools-4.13.0-py3-none-any.whl (810kB) Collecting notofonttools>=0.2.4 (from -r requirements.txt (line 2)) Could not find a version that satisfies the requirement notofonttools>=0.2.4 (from -r requirements.txt (line 2)) (from versions: ) No matching distribution found for notofonttools>=0.2.4 (from -r requirements.txt (line 2))

Any ideas? :)

guidotheelen commented 4 years ago

Is your pip up to date? Try running: pip install --upgrade pip

nunoperalta commented 4 years ago

Thank you. I'm actually using CentOS 7 on a Docker container, to test this.

I've just added "python3 -m pip install --upgrade pip" just after the "yum update", rebuilt from scratch, but I'm getting the same error, unfortunately:

Collecting fonttools>=4.7.0 Downloading fonttools-4.13.0-py3-none-any.whl (810 kB) ERROR: Could not find a version that satisfies the requirement notofonttools>=0.2.4 (from -r requirements.txt (line 2)) (from versions: none) ERROR: No matching distribution found for notofonttools>=0.2.4 (from -r requirements.txt (line 2))

Even if I try:

$ python3 -m pip install notofonttools

I get:

ERROR: Could not find a version that satisfies the requirement notofonttools (from versions: none) ERROR: No matching distribution found for notofonttools

nunoperalta commented 4 years ago

Verbose helped me:

Updating cache with response from "https://pypi.org/simple/notofonttools/" Caching due to etag Link requires a different Python (3.6.8 not in: '>=3.7'):

I had to compile Python 3.7 from sources, and now it works.

nunoperalta commented 4 years ago

I had to install Noto Tools:

$ git clone --recursive https://github.com/googlefonts/nototools.git $ cd nototools $ python3.7 -m venv venv $ source venv/bin/activate $ python3.7 -m pip install -r requirements.txt $ python3.7 -m pip install -e . $ python3.7 setup.py install

Things are put in /usr/local/bin, but no "nototools" executable.

But then, when I run "time make -j" for Noto Emoji,

I get:

No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right No module named 'nototools' Python environment is not setup right python3 check_emoji_sequences.py -d png/128 -c mkdir -p "build/emoji" mkdir -p "build/quantized_pngs" Makefile:142: "Please start your virtual environment, and run: "'pip install -r requirements.txt'". Stop. make: Waiting for unfinished jobs.... Traceback (most recent call last): File "check_emoji_sequences.py", line 32, in from nototools import unicode_data ModuleNotFoundError: No module named 'nototools' make: *** [check_sequence] Error 1

Any ideas how I can get nototools to work? Thank you very much.

nunoperalta commented 4 years ago

Well, I assume the problem is that they changed the package name from "nototools" to "notofonttools", causing this mismatch/conflict...

https://github.com/googlefonts/nototools/commit/71a62b1b01db08d3e3a9a962278328a807a041f2#diff-2eeaed663bd0d25b7e608891384b7298

I'm already for HOURS trying to get this done, as I keep getting several barriers to deal with. Every little step has some stopper.

I reverted the last commit of "setup.py", and was able to get the package installed named "nototools"

$ python3.7 -m pip list -v

notofonttools     0.2.11                         /usr/local/lib/python3.7/site-packages
nototools         0.2.12.dev0+ge8844bd.d20200813 /usr/local/lib/python3.7/site-packages

But still continue to get No module named 'nototools' for some reason...

nunoperalta commented 4 years ago

Alright... got around it.

If I run "make -j",

Checking files with prefix "emoji_u" and suffix ".png" in: ['png/128'] checking 3103 names checking 3103 sequences cannot process alias fe82b -> unknown_flag cannot process alias fe82b -> unknown_flag coverage: alias 1f1e7_1f1fb missing target 1f1f3_1f1f4 coverage: alias 1f1e8_1f1f5 missing target 1f1eb_1f1f7 coverage: alias 1f1e9_1f1ec missing target 1f1ee_1f1f4 coverage: alias 1f1ea_1f1e6 missing target 1f1ea_1f1f8 coverage: alias 1f1ed_1f1f2 missing target 1f1e6_1f1fa coverage: alias 1f1f2_1f1eb missing target 1f1eb_1f1f7 coverage: alias 1f1f8_1f1ef missing target 1f1f3_1f1f4 coverage: alias 1f1fa_1f1f2 missing target 1f1fa_1f1f8 coverage: missing combining sequence 1f1e6_1f1e8 (('flag: Ascension Island', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1e9 (('flag: Andorra', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1ea (('flag: United Arab Emirates', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1eb (('flag: Afghanistan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1ec (('flag: Antigua & Barbuda', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1ee (('flag: Anguilla', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f1 (('flag: Albania', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f2 (('flag: Armenia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f4 (('flag: Angola', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f6 (('flag: Antarctica', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f7 (('flag: Argentina', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f8 (('flag: American Samoa', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1f9 (('flag: Austria', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1fa (('flag: Australia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1fc (('flag: Aruba', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1fd (('flag: Åland Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e6_1f1ff (('flag: Azerbaijan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1e6 (('flag: Bosnia & Herzegovina', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1e7 (('flag: Barbados', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1e9 (('flag: Bangladesh', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ea (('flag: Belgium', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1eb (('flag: Burkina Faso', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ec (('flag: Bulgaria', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ed (('flag: Bahrain', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ee (('flag: Burundi', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ef (('flag: Benin', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f1 (('flag: St. Barthélemy', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f2 (('flag: Bermuda', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f3 (('flag: Brunei', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f4 (('flag: Bolivia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f6 (('flag: Caribbean Netherlands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f7 (('flag: Brazil', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f8 (('flag: Bahamas', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1f9 (('flag: Bhutan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1fb (('flag: Bouvet Island', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1fc (('flag: Botswana', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1fe (('flag: Belarus', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e7_1f1ff (('flag: Belize', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1e6 (('flag: Canada', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1e8 (('flag: Cocos (Keeling) Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1e9 (('flag: Congo - Kinshasa', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1eb (('flag: Central African Republic', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1ec (('flag: Congo - Brazzaville', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1ed (('flag: Switzerland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1ee (('flag: Côte d’Ivoire', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f0 (('flag: Cook Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f1 (('flag: Chile', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f2 (('flag: Cameroon', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f3 (('flag: China', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f4 (('flag: Colombia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f5 (('flag: Clipperton Island', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1f7 (('flag: Costa Rica', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1fa (('flag: Cuba', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1fb (('flag: Cape Verde', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1fc (('flag: Curaçao', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1fd (('flag: Christmas Island', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1fe (('flag: Cyprus', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e8_1f1ff (('flag: Czechia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1ea (('flag: Germany', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1ec (('flag: Diego Garcia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1ef (('flag: Djibouti', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1f0 (('flag: Denmark', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1f2 (('flag: Dominica', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1f4 (('flag: Dominican Republic', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1e9_1f1ff (('flag: Algeria', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1e6 (('flag: Ceuta & Melilla', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1e8 (('flag: Ecuador', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1ea (('flag: Estonia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1ec (('flag: Egypt', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1ed (('flag: Western Sahara', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1f7 (('flag: Eritrea', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1f8 (('flag: Spain', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1f9 (('flag: Ethiopia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ea_1f1fa (('flag: European Union', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1ee (('flag: Finland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1ef (('flag: Fiji', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1f0 (('flag: Falkland Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1f2 (('flag: Micronesia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1f4 (('flag: Faroe Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1eb_1f1f7 (('flag: France', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1e6 (('flag: Gabon', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1e7 (('flag: United Kingdom', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1e9 (('flag: Grenada', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1ea (('flag: Georgia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1eb (('flag: French Guiana', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1ec (('flag: Guernsey', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1ed (('flag: Ghana', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1ee (('flag: Gibraltar', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f1 (('flag: Greenland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f2 (('flag: Gambia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f3 (('flag: Guinea', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f5 (('flag: Guadeloupe', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f6 (('flag: Equatorial Guinea', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f7 (('flag: Greece', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f8 (('flag: South Georgia & South Sandwich Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1f9 (('flag: Guatemala', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1fa (('flag: Guam', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1fc (('flag: Guinea-Bissau', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ec_1f1fe (('flag: Guyana', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1f0 (('flag: Hong Kong SAR China', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1f2 (('flag: Heard & McDonald Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1f3 (('flag: Honduras', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1f7 (('flag: Croatia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1f9 (('flag: Haiti', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ed_1f1fa (('flag: Hungary', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1e8 (('flag: Canary Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1e9 (('flag: Indonesia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1ea (('flag: Ireland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f1 (('flag: Israel', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f2 (('flag: Isle of Man', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f3 (('flag: India', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f4 (('flag: British Indian Ocean Territory', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f6 (('flag: Iraq', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f7 (('flag: Iran', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f8 (('flag: Iceland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ee_1f1f9 (('flag: Italy', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ef_1f1ea (('flag: Jersey', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ef_1f1f2 (('flag: Jamaica', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ef_1f1f4 (('flag: Jordan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ef_1f1f5 (('flag: Japan', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1ea (('flag: Kenya', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1ec (('flag: Kyrgyzstan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1ed (('flag: Cambodia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1ee (('flag: Kiribati', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1f2 (('flag: Comoros', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1f3 (('flag: St. Kitts & Nevis', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1f5 (('flag: North Korea', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1f7 (('flag: South Korea', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1fc (('flag: Kuwait', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1fe (('flag: Cayman Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f0_1f1ff (('flag: Kazakhstan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1e6 (('flag: Laos', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1e7 (('flag: Lebanon', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1e8 (('flag: St. Lucia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1ee (('flag: Liechtenstein', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1f0 (('flag: Sri Lanka', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1f7 (('flag: Liberia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1f8 (('flag: Lesotho', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1f9 (('flag: Lithuania', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1fa (('flag: Luxembourg', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1fb (('flag: Latvia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f1_1f1fe (('flag: Libya', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1e6 (('flag: Morocco', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1e8 (('flag: Monaco', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1e9 (('flag: Moldova', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1ea (('flag: Montenegro', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1eb (('flag: St. Martin', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1ec (('flag: Madagascar', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1ed (('flag: Marshall Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f0 (('flag: North Macedonia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f1 (('flag: Mali', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f2 (('flag: Myanmar (Burma)', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f3 (('flag: Mongolia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f4 (('flag: Macao SAR China', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f5 (('flag: Northern Mariana Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f6 (('flag: Martinique', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f7 (('flag: Mauritania', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f8 (('flag: Montserrat', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1f9 (('flag: Malta', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1fa (('flag: Mauritius', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1fb (('flag: Maldives', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1fc (('flag: Malawi', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1fd (('flag: Mexico', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1fe (('flag: Malaysia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f2_1f1ff (('flag: Mozambique', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1e6 (('flag: Namibia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1e8 (('flag: New Caledonia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1ea (('flag: Niger', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1eb (('flag: Norfolk Island', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1ec (('flag: Nigeria', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1ee (('flag: Nicaragua', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1f1 (('flag: Netherlands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1f4 (('flag: Norway', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1f5 (('flag: Nepal', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1f7 (('flag: Nauru', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1fa (('flag: Niue', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f3_1f1ff (('flag: New Zealand', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f4_1f1f2 (('flag: Oman', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1e6 (('flag: Panama', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1ea (('flag: Peru', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1eb (('flag: French Polynesia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1ec (('flag: Papua New Guinea', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1ed (('flag: Philippines', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f0 (('flag: Pakistan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f1 (('flag: Poland', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f2 (('flag: St. Pierre & Miquelon', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f3 (('flag: Pitcairn Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f7 (('flag: Puerto Rico', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f8 (('flag: Palestinian Territories', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1f9 (('flag: Portugal', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1fc (('flag: Palau', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f5_1f1fe (('flag: Paraguay', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f6_1f1e6 (('flag: Qatar', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f7_1f1ea (('flag: Réunion', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f7_1f1f4 (('flag: Romania', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f7_1f1f8 (('flag: Serbia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f7_1f1fa (('flag: Russia', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f7_1f1fc (('flag: Rwanda', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1e6 (('flag: Saudi Arabia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1e7 (('flag: Solomon Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1e8 (('flag: Seychelles', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1e9 (('flag: Sudan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ea (('flag: Sweden', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ec (('flag: Singapore', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ed (('flag: St. Helena', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ee (('flag: Slovenia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ef (('flag: Svalbard & Jan Mayen', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f0 (('flag: Slovakia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f1 (('flag: Sierra Leone', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f2 (('flag: San Marino', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f3 (('flag: Senegal', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f4 (('flag: Somalia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f7 (('flag: Suriname', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f8 (('flag: South Sudan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1f9 (('flag: São Tomé & Príncipe', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1fb (('flag: El Salvador', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1fd (('flag: Sint Maarten', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1fe (('flag: Syria', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f8_1f1ff (('flag: Eswatini', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1e6 (('flag: Tristan da Cunha', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1e8 (('flag: Turks & Caicos Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1e9 (('flag: Chad', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1eb (('flag: French Southern Territories', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1ec (('flag: Togo', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1ed (('flag: Thailand', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1ef (('flag: Tajikistan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f0 (('flag: Tokelau', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f1 (('flag: Timor-Leste', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f2 (('flag: Turkmenistan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f3 (('flag: Tunisia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f4 (('flag: Tonga', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f7 (('flag: Turkey', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1f9 (('flag: Trinidad & Tobago', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1fb (('flag: Tuvalu', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1fc (('flag: Taiwan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1f9_1f1ff (('flag: Tanzania', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1e6 (('flag: Ukraine', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1ec (('flag: Uganda', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1f2 (('flag: U.S. Outlying Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1f3 (('flag: United Nations', 4.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1f8 (('flag: United States', 0.6, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1fe (('flag: Uruguay', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fa_1f1ff (('flag: Uzbekistan', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1e6 (('flag: Vatican City', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1e8 (('flag: St. Vincent & Grenadines', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1ea (('flag: Venezuela', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1ec (('flag: British Virgin Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1ee (('flag: U.S. Virgin Islands', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1f3 (('flag: Vietnam', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fb_1f1fa (('flag: Vanuatu', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fc_1f1eb (('flag: Wallis & Futuna', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fc_1f1f8 (('flag: Samoa', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fd_1f1f0 (('flag: Kosovo', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fe_1f1ea (('flag: Yemen', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1fe_1f1f9 (('flag: Mayotte', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ff_1f1e6 (('flag: South Africa', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ff_1f1f2 (('flag: Zambia', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f1ff_1f1fc (('flag: Zimbabwe', 2.0, b'RGI_Emoji_Flag_Sequence')) coverage: missing combining sequence 1f3f4_e0067_e0062_e0065_e006e_e0067_e007f (('flag: England', 5.0, b'RGI_Emoji_Tag_Sequence')) coverage: missing combining sequence 1f3f4_e0067_e0062_e0073_e0063_e0074_e007f (('flag: Scotland', 5.0, b'RGI_Emoji_Tag_Sequence')) coverage: missing combining sequence 1f3f4_e0067_e0062_e0077_e006c_e0073_e007f (('flag: Wales', 5.0, b'RGI_Emoji_Tag_Sequence')) Please fix the problems metioned above or run: make BYPASS_SEQUENCE_CHECK='True' make: [check_sequence] Error 1 make: Waiting for unfinished jobs....

And if I run "make BYPASS_SEQUENCE_CHECK='True' -j",

mkdir -p "build/emoji" mkdir -p "build/quantized_pngs" mkdir -p "build/compressed_pngs" cc waveflag.c -o waveflag -std=c99 -Wall -Wextra pkg-config --cflags --libs cairo -lm pkg-config --libs cairo mkdir -p "build/flags" mkdir -p "build/resized_flags" Package cairo was not found in the pkg-config search path. Perhaps you should add the directory containing cairo.pc' to the PKG_CONFIG_PATH environment variable No package 'cairo' found Package cairo was not found in the pkg-config search path. Perhaps you should add the directory containingcairo.pc' to the PKG_CONFIG_PATH environment variable No package 'cairo' found waveflag.c:19:19: fatal error: cairo.h: No such file or directory

include

               ^

compilation terminated. make: [waveflag] Error 1 make: Waiting for unfinished jobs....

nunoperalta commented 4 years ago

Had to install the "-devel" versions of cairo, pango, etc.

I got some success (fixing whatever problems I went through).

I can see 3103 files under "emoji", 253 files under "flags", 2474 files in quantized_pngs, 0 in all other folders.

For about 1h30 that this is running, and seems to be hanging completely:

installemoji | Bypassing the emoji sequence checks installemoji | mkdir -p "build/emoji" installemoji | mkdir -p "build/quantized_pngs" installemoji | mkdir -p "build/compressed_pngs" installemoji | cc waveflag.c -o waveflag -std=c99 -Wall -Wextra pkg-config --cflags --libs cairo -lm pkg-config --libs cairo installemoji | mkdir -p "build/flags" installemoji | mkdir -p "build/resized_flags" installemoji | mkdir -p "build/renamed_flags" installemoji | reuse build/emoji/emoji_u1f3fb.png installemoji | reuse build/emoji/emoji_u1f7e9.png installemoji | reuse build/emoji/emoji_u1f3fc.png installemoji | reuse build/emoji/emoji_u1f7e6.png installemoji | reuse build/emoji/emoji_u1fa82.png installemoji | reuse build/emoji/emoji_u1f3fd.png installemoji | reuse build/emoji/emoji_u1fa85.png installemoji | reuse build/emoji/emoji_u1f7ea.png

Instead of having to go through all this, it would be nice if you could provide this work already done, in the Releases. I spent all day trying to produce what you've already produced, for the Font file...

nunoperalta commented 4 years ago

In the Makefile:

Make 3.81 can endless loop here if the target is missing but no prerequisite is updated and make has been invoked with -j, e.g.:

... -_-"

Restarted it without the "-j" flag, now I'm seeing files under "compressed_pngs"...

rsheeter commented 4 years ago

Fair point about release content but I fear we may not have time to fix it in the near future.

I have now realized I may have two easier options you could consider:

  1. ttx the font and specify you want bitmap export (https://rsms.me/fonttools-docs/ttx.html). I don't recall how it names the files; you might have to write a script to get them into the desired naming scheme.
  2. If a remote request is acceptable, use a copy we host alongside the Google Fonts collection. URL pattern is https://fonts.gstatic.com/s/e/notoemoji/latest/codepoint1_codepoint2_etc/128.png (or /emoji.svg).

Example of the hosted urls:

https://fonts.gstatic.com/s/e/notoemoji/latest/1f3f3_200d_26a7/128.png https://fonts.gstatic.com/s/e/notoemoji/latest/1f977_1f3fe/emoji.svg

Hope that helps.

nunoperalta commented 4 years ago

Thank you very much.

Yeah - I do have preference in direct link to a remote location / CDN.

Meanwhile, left the process running all night, and I got 3356 files under "compressed_pngs". Seems to include flags as well. I'll keep this local copy in case something happens to the files hosted remotely, while direct linking to them.

Thanks once more! Have a great day.