Compare commits
52 Commits
Author | SHA1 | Date |
---|---|---|
capy4king | 12cbaf93b2 | |
capy4king | f49be08fd1 | |
capy4king | 4f34338926 | |
capy4king | 2eb094eccc | |
capy4king | 2cc4f3247b | |
capy4king | c2ae8d54b7 | |
capy4king | 58223e5bb4 | |
capy4king | a147c44df4 | |
capy4king | 2b940ba523 | |
cappy4king | f9849d01c8 | |
cappy4king | 8f527aa4fd | |
cappy4king | b4754eddc0 | |
cappy4king | dc1164fc79 | |
cappy4king | 0a3fae3bcd | |
cappy4king | 6477821fad | |
cappy4king | 74ec477ab1 | |
cappy4king | 34a83185d7 | |
cappy4king | 783529038f | |
cappy4king | 6bf45d8dad | |
cappy4king | cb84b3ff76 | |
cappy4king | 048bb57265 | |
cappy4king | 51fed68fdc | |
cappy4king | e91505718f | |
cappy4king | 9fb69fb61f | |
cappy4king | 58e6bff047 | |
cappy4king | 55bb9b04c8 | |
cappy4king | 2915b3a430 | |
cappy4king | b3efb0f848 | |
cappy4king | c6d14fae51 | |
cappy4king | 28bed1e67b | |
cappy4king | e55c8f8f1f | |
cappy4king | e42f555449 | |
cappy4king | b227304531 | |
cappy4king | 7120c4d9cb | |
cappy4king | 4048e49771 | |
cappy4king | dfd0af7772 | |
cappy4king | 1bc81a497b | |
Cosimo Lupo | 934a5706f1 | |
Cosimo Lupo | b55be68324 | |
Rod | 341cf6add6 | |
Rod S | dbd072ec5d | |
Rod | b312b3dea8 | |
Rod S | cfc299192e | |
Rod | 412b9edf8a | |
Rod S | db0e393433 | |
Rod S | e8f3ab2060 | |
Rod S | 9090ff0673 | |
Rod | f826707b28 | |
Rod S | c79f4f80c5 | |
Rod S | df5f8f637d | |
Rod S | c853280d92 | |
Rod S | c3acfdf12d |
13
BUILD.md
|
@ -1,5 +1,15 @@
|
|||
# Marsey instructions
|
||||
Run the script: ./marsey/marsey_replacer.sh
|
||||
|
||||
Then follow the build instructions for CBDT.
|
||||
|
||||
Despite the instructions stating it would take about 3 minutes, it took about 30 minutes on my computer. Use this snippet to track progress:
|
||||
|
||||
`echo "$(( 100 * $(ls build/compressed_pngs|wc -l) / $(ls build/quantized_pngs |wc -l) ))"'%'`
|
||||
# Build instructions
|
||||
|
||||
---
|
||||
|
||||
Typically build the CBDT then the COLRv1 as COLRv1 copies some information from CBDT.
|
||||
|
||||
## CBDT
|
||||
|
@ -9,6 +19,7 @@ rm -rf venv # in case you have an old borked venv!
|
|||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
python size_check.py
|
||||
rm -rf build/ && time make -j 48
|
||||
# Should take 2-3 minutes to create noto-emoji/NotoColorEmoji.ttf
|
||||
|
||||
|
@ -33,4 +44,4 @@ python colrv1_postproc.py
|
|||
|
||||
## Emojicompat
|
||||
|
||||
TODO detailed instructions
|
||||
TODO detailed instructions
|
||||
|
|
18
README.md
|
@ -1,4 +1,19 @@
|
|||
![Noto](https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4b4276-9bb0-42a6-a675-510fcb6055df_1940x1088.png)
|
||||
# Marsey Emoji font for rdrama
|
||||
This is a script for building noto emoji, with some emojis replaced with marseys. All credits for the original noto emoji font goes to google: https://github.com/googlefonts/noto-emoji
|
||||
|
||||
See BUILD.md for building instructions.
|
||||
|
||||
See marsey/README.md for contribution information.
|
||||
|
||||
Download: ![fonts/marseymoji.ttf](fonts/marseymoji.ttf)
|
||||
|
||||
Download (windows compatible): ![fonts/marseymoji_windows.ttf](fonts/marseymoji_windows.ttf)
|
||||
|
||||
|
||||
![](marsey/2023-07-15_21-55.png)
|
||||
|
||||
|
||||
|
||||
# Noto Emoji
|
||||
Noto Emoji (Stands for No Tofu) is an open source (Open Font License 1.1) emoji library that provides standard Unicode emoji support and tools for working with them including:
|
||||
|
||||
|
@ -14,6 +29,7 @@ The latest font file is found [here](https://github.com/googlefonts/noto-emoji/r
|
|||
|
||||
The black-and-white emoji font is back under active development and is available as a [variable font](https://fonts.google.com/noto/specimen/Noto+Emoji)
|
||||
|
||||
|
||||
## Using NotoColorEmoji
|
||||
|
||||
NotoColorEmoji uses the CBDT/CBLC color font format, which is supported by Android
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
"""Prints info about emoji fonts."""
|
||||
|
||||
from fontTools import ttLib
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
NAME_ID_VERSION = 5
|
||||
|
||||
|
||||
def name(font, name_id):
|
||||
return ",".join(n.toUnicode() for n in font["name"].names if n.isUnicode() and n.nameID == name_id)
|
||||
|
||||
|
||||
def main():
|
||||
font_files = sorted(p for p in (Path(__file__).parent / "fonts").iterdir() if p.suffix == ".ttf")
|
||||
max_name_len = max(len(p.name) for p in font_files)
|
||||
|
||||
for font_file in font_files:
|
||||
font = ttLib.TTFont(font_file)
|
||||
|
||||
font_type = []
|
||||
if "CBDT" in font:
|
||||
font_type.append("CBDT")
|
||||
if "COLR" in font:
|
||||
font_type.append("COLR")
|
||||
if "meta" in font and "Emji" in font["meta"].data:
|
||||
font_type.append("EmojiCompat")
|
||||
font_type.append(f"fontRevision:{font['head'].fontRevision:.3f}")
|
||||
font_type.append(name(font, NAME_ID_VERSION))
|
||||
font_type = ", ".join(font_type)
|
||||
|
||||
print(f"{font_file.name:{max_name_len + 1}} {font_type}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -283,6 +283,14 @@ def _add_fallback_subs_for_unknown_flags(colr_font):
|
|||
font_data.delete_from_cmap(colr_font, [UNKNOWN_FLAG_PUA])
|
||||
|
||||
|
||||
def _set_no_font_embedding_restrictions(colr_font):
|
||||
# The CBDT/CBLC NotoColorEmoji has OS/2.fsType = 0 (i.e. no embedding restrictions)
|
||||
# so the COLRv1 variant must also have no such restrictions.
|
||||
# https://github.com/notofonts/noto-fonts/issues/2408
|
||||
# https://github.com/google/fonts/issues/5729
|
||||
colr_font["OS/2"].fsType = 0
|
||||
|
||||
|
||||
def _font(path, check_fn, check_fail_str):
|
||||
assert path.is_file(), path
|
||||
font = ttLib.TTFont(path)
|
||||
|
@ -314,6 +322,8 @@ def main(_):
|
|||
|
||||
_add_fallback_subs_for_unknown_flags(colr_font)
|
||||
|
||||
_set_no_font_embedding_restrictions(colr_font)
|
||||
|
||||
print("Writing", colr_file)
|
||||
colr_font.save(colr_file)
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
"""Removes regional indicators from a font."""
|
||||
|
||||
from fontTools import subset
|
||||
from fontTools import ttLib
|
||||
import functools
|
||||
from pathlib import Path
|
||||
import sys
|
||||
from typing import Set
|
||||
|
||||
|
||||
def codepoints(font: ttLib.TTFont) -> Set[int]:
|
||||
unicode_cmaps = (t.cmap.keys() for t in font['cmap'].tables if t.isUnicode())
|
||||
return functools.reduce(lambda acc, u: acc | u, unicode_cmaps, set())
|
||||
|
||||
|
||||
def is_regional_indicator(cp: int) -> bool:
|
||||
return 0x1F1E6 <= cp <= 0x1F1FF
|
||||
|
||||
|
||||
def main(argv):
|
||||
for font_file in sorted(argv[1:]):
|
||||
font_file = Path(font_file)
|
||||
assert font_file.is_file(), font_file
|
||||
noflags_file = font_file.with_stem(font_file.stem + "-noflags")
|
||||
|
||||
if noflags_file.is_file():
|
||||
print(font_file, "already has", noflags_file, "; nop")
|
||||
continue
|
||||
|
||||
font = ttLib.TTFont(font_file)
|
||||
|
||||
cps = codepoints(font)
|
||||
cps_without_flags = {cp for cp in cps if not is_regional_indicator(cp)}
|
||||
|
||||
if cps == cps_without_flags:
|
||||
print(font_file, "has no regional indicators")
|
||||
continue
|
||||
|
||||
subsetter = subset.Subsetter()
|
||||
subsetter.populate(unicodes=cps_without_flags)
|
||||
subsetter.subset(font)
|
||||
|
||||
font.save(noflags_file)
|
||||
print(font_file, "=>" , noflags_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
|
@ -0,0 +1,36 @@
|
|||
"""Set COLRv1 fontRevision from CBDT.
|
||||
|
||||
Used for bugfix, should fix to set properly on build instead.
|
||||
"""
|
||||
|
||||
from fontTools import ttLib
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
NAME_ID_VERSION = 5
|
||||
|
||||
|
||||
def name(font, name_id):
|
||||
return ",".join(n.toUnicode() for n in font["name"].names if n.isUnicode() and n.nameID == name_id)
|
||||
|
||||
|
||||
def main():
|
||||
colr_font_files = sorted(p for p in (Path(__file__).parent / "fonts").iterdir() if p.name.startswith("Noto-COLRv1"))
|
||||
|
||||
for colr_font_file in colr_font_files:
|
||||
cbdt_font_file = colr_font_file.with_stem(colr_font_file.stem.replace("Noto-COLRv1", "NotoColorEmoji"))
|
||||
|
||||
colr_font = ttLib.TTFont(colr_font_file)
|
||||
cbdt_font = ttLib.TTFont(cbdt_font_file)
|
||||
|
||||
assert "CBDT" in cbdt_font
|
||||
assert "COLR" in colr_font
|
||||
|
||||
colr_font["head"].fontRevision = cbdt_font["head"].fontRevision
|
||||
|
||||
colr_font.save(colr_font_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
After Width: | Height: | Size: 95 KiB |
|
@ -0,0 +1,13 @@
|
|||
# Marsey font
|
||||
|
||||
marseys/ - all marsey assets
|
||||
|
||||
marseys/marsey_load.sh [name] - download a marsey by its name and automatically convert it to the right format and size. Must be used while inside the marsey directory.
|
||||
|
||||
marseys.conf - links the marseys to the corresponding
|
||||
|
||||
convert_filename.py - convert any emoji to the corresponding emoji identifier for marseys.conf. Eg, 🤓 -> emoji_u1f913.png
|
||||
|
||||
sexrace.py - generates all gender and ethnicity variations given a placeholder input for marseys.conf. Example input for thumbs up: marseythumbsup=emoji_u1f44dRACE.png. Input for cop: marseycop=emoji_u1f46eRACEGENDERADD.png
|
||||
|
||||
marsey_replacer.sh - replaces emojis by marseys, as specified in marseys.conf. Must be run from the marseymoji base directory.
|
|
@ -0,0 +1,9 @@
|
|||
def emoji_to_filename(emoji):
|
||||
code_points = [format(ord(char), 'x') for char in emoji if ord(char) != 0xfe0f]
|
||||
filename = '_'.join(code_points)
|
||||
return 'emoji_u' + filename + '.png'
|
||||
|
||||
emoji = input("copy-paste an emoji: ")
|
||||
filename = emoji_to_filename(emoji)
|
||||
print(filename)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
REPLACER_RESOLUTION="128"
|
||||
#!/bin/bash
|
||||
|
||||
# Read the marseys.conf file line by line
|
||||
while IFS='=' read -r key value; do
|
||||
# Skip lines starting with #
|
||||
if [[ $key == \#* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Extract the filenames and paths
|
||||
original_file="png/$REPLACER_RESOLUTION/$value"
|
||||
replacement_file="marsey/marseys/$key.png"
|
||||
|
||||
# Perform the replacement
|
||||
echo "Copying $replacement_file to $original_file ..."
|
||||
cp -f "$replacement_file" "$original_file"
|
||||
done < marsey/marseys.conf
|
||||
|
||||
|
|
@ -0,0 +1,233 @@
|
|||
0=emoji_u0030_20e3.png
|
||||
1=emoji_u0031_20e3.png
|
||||
2=emoji_u0032_20e3.png
|
||||
3=emoji_u0033_20e3.png
|
||||
4=emoji_u0034_20e3.png
|
||||
5=emoji_u0035_20e3.png
|
||||
6=emoji_u0036_20e3.png
|
||||
7=emoji_u0037_20e3.png
|
||||
8=emoji_u0038_20e3.png
|
||||
9=emoji_u0039_20e3.png
|
||||
a=emoji_u1f1e6.png
|
||||
b=emoji_u1f1e7.png
|
||||
c=emoji_u1f1e8.png
|
||||
d=emoji_u1f1e9.png
|
||||
e=emoji_u1f1ea.png
|
||||
f=emoji_u1f1eb.png
|
||||
g=emoji_u1f1ec.png
|
||||
h=emoji_u1f1ed.png
|
||||
i=emoji_u1f1ee.png
|
||||
j=emoji_u1f1ef.png
|
||||
k=emoji_u1f1f0.png
|
||||
l=emoji_u1f1f1.png
|
||||
m=emoji_u1f1f2.png
|
||||
n=emoji_u1f1f3.png
|
||||
o=emoji_u1f1f4.png
|
||||
p=emoji_u1f1f5.png
|
||||
q=emoji_u1f1f6.png
|
||||
r=emoji_u1f1f7.png
|
||||
s=emoji_u1f1f8.png
|
||||
t=emoji_u1f1f9.png
|
||||
u=emoji_u1f1fa.png
|
||||
v=emoji_u1f1fb.png
|
||||
w=emoji_u1f1fc.png
|
||||
x=emoji_u1f1fd.png
|
||||
y=emoji_u1f1fe.png
|
||||
z=emoji_u1f1ff.png
|
||||
marseyblowkiss=emoji_u1f617.png
|
||||
marseyblowkiss=emoji_u1f618.png
|
||||
marseyblush=emoji_u1f633.png
|
||||
marseybuff=emoji_u1f3cb_200d_2642.png
|
||||
marseybuff=emoji_u1f3cb_1f3fb_200d_2642.png
|
||||
marseybuff=emoji_u1f3cb_1f3fc_200d_2642.png
|
||||
marseybuff=emoji_u1f3cb_1f3fd_200d_2642.png
|
||||
marseybuff=emoji_u1f3cb_1f3fe_200d_2642.png
|
||||
marseybuff=emoji_u1f3cb_1f3ff_200d_2642.png
|
||||
gigachadqueen=emoji_u1f3cb_200d_2640.png
|
||||
gigachadqueen=emoji_u1f3cb_1f3fb_200d_2640.png
|
||||
gigachadqueen=emoji_u1f3cb_1f3fc_200d_2640.png
|
||||
gigachadqueen=emoji_u1f3cb_1f3fd_200d_2640.png
|
||||
gigachadqueen=emoji_u1f3cb_1f3fe_200d_2640.png
|
||||
gigachadqueen=emoji_u1f3cb_1f3ff_200d_2640.png
|
||||
marseyburn=emoji_u1f525.png
|
||||
marseycapitalistmanlet=emoji_u1f911.png
|
||||
marseycop=emoji_u1f46e.png
|
||||
marseycop=emoji_u1f46e_1f3fb.png
|
||||
marseycop=emoji_u1f46e_1f3fc.png
|
||||
marseycop=emoji_u1f46e_1f3fd.png
|
||||
marseycop=emoji_u1f46e_1f3fe.png
|
||||
marseycop=emoji_u1f46e_1f3ff.png
|
||||
marseycop=emoji_u1f46e_200d_2640.png
|
||||
marseycop=emoji_u1f46e_1f3fb_200d_2640.png
|
||||
marseycop=emoji_u1f46e_1f3fc_200d_2640.png
|
||||
marseycop=emoji_u1f46e_1f3fd_200d_2640.png
|
||||
marseycop=emoji_u1f46e_1f3fe_200d_2640.png
|
||||
marseycop=emoji_u1f46e_1f3ff_200d_2640.png
|
||||
marseycop=emoji_u1f46e_200d_2642.png
|
||||
marseycop=emoji_u1f46e_1f3fb_200d_2642.png
|
||||
marseycop=emoji_u1f46e_1f3fc_200d_2642.png
|
||||
marseycop=emoji_u1f46e_1f3fd_200d_2642.png
|
||||
marseycop=emoji_u1f46e_1f3fe_200d_2642.png
|
||||
marseycop=emoji_u1f46e_1f3ff_200d_2642.png
|
||||
marseycry=emoji_u1f62d.png
|
||||
marseyfacepalm=emoji_u1f926.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fb.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fc.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fd.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fe.png
|
||||
marseyfacepalm=emoji_u1f926_1f3ff.png
|
||||
marseyfacepalm=emoji_u1f926_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fb_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fc_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fd_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fe_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_1f3ff_200d_2640.png
|
||||
marseyfacepalm=emoji_u1f926_200d_2642.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fb_200d_2642.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fc_200d_2642.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fd_200d_2642.png
|
||||
marseyfacepalm=emoji_u1f926_1f3fe_200d_2642.png
|
||||
marseyfacepalm=emoji_u1f926_1f3ff_200d_2642.png
|
||||
marseyhacker2=emoji_u1f9d1_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f9d1_1f3fb_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f9d1_1f3fc_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f9d1_1f3fd_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f9d1_1f3fe_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f9d1_1f3ff_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_1f3fb_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_1f3fc_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_1f3fd_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_1f3fe_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f469_1f3ff_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_1f3fb_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_1f3fc_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_1f3fd_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_1f3fe_200d_1f4bb.png
|
||||
marseyhacker2=emoji_u1f468_1f3ff_200d_1f4bb.png
|
||||
marseyhearts=emoji_u1f970.png
|
||||
marseyhmm=emoji_u1f914.png
|
||||
marseyill=emoji_u1f912.png
|
||||
marseyvaxmaxx=emoji_u1f637.png
|
||||
marseylaugh=emoji_u1f602.png
|
||||
marseylenny=emoji_u1f60f.png
|
||||
marseylgbtflag4=emoji_u1f3f3_200d_1f308.png
|
||||
marseynerd=emoji_u1f913.png
|
||||
marseypleading2=emoji_u1f97a.png
|
||||
marseythumbsup=emoji_u1f44d.png
|
||||
marseythumbsup=emoji_u1f44d_1f3fb.png
|
||||
marseythumbsup=emoji_u1f44d_1f3fc.png
|
||||
marseythumbsup=emoji_u1f44d_1f3fd.png
|
||||
marseythumbsup=emoji_u1f44d_1f3fe.png
|
||||
marseythumbsup=emoji_u1f44d_1f3ff.png
|
||||
marseytrad=emoji_u1f469.png
|
||||
marseytransflag=emoji_u1f3f3_200d_26a7.png
|
||||
marseywave=emoji_u1f44b.png
|
||||
marseyworried=emoji_u1f61f.png
|
||||
marseyxd=emoji_u1f923.png
|
||||
soyjakanimeglasses=emoji_u1f60e.png
|
||||
soymad=emoji_u1f620.png
|
||||
marseyrage=emoji_u1f621.png
|
||||
marseypepe2=emoji_u1f438.png
|
||||
marseybeansick=emoji_u1f922.png
|
||||
marseypickle=emoji_u1f952.png
|
||||
marseynull=emoji_u1f436.png
|
||||
marseytrans=emoji_u1f415.png
|
||||
marseygoblin=emoji_u1f47a.png
|
||||
marseysleep=emoji_u1f634.png
|
||||
marseywords=emoji_u1f971.png
|
||||
marseydemonicgrin=emoji_u1f479.png
|
||||
marseydisguise=emoji_u1f978.png
|
||||
marseydisgust=emoji_u1f612.png
|
||||
marseysteaming=emoji_u1f624.png
|
||||
marseybeanquestion=emoji_u1f928.png
|
||||
marseybeandrool=emoji_u1f924.png
|
||||
marseybeanimp=emoji_u1f608.png
|
||||
marseybeanmonocle=emoji_u1f9d0.png
|
||||
marseybeanannoyed=emoji_u1f611.png
|
||||
marseybeanrelieved=emoji_u1f60c.png
|
||||
marppy=emoji_u1f916.png
|
||||
marseytroll=emoji_u1f9cc.png
|
||||
marseylove=emoji_u1f60d.png
|
||||
marseyoctopus2=emoji_u1f3a3.png
|
||||
bigsmilesoyjak=emoji_u1f600.png
|
||||
bigsmilesoyjak=emoji_u1f604.png
|
||||
bigsmilesoyjak=emoji_u1f603.png
|
||||
marseystar=emoji_u2b50.png
|
||||
marseysing=emoji_u1f9d1_200d_1f3a4.png
|
||||
marseysing=emoji_u1f9d1_1f3fb_200d_1f3a4.png
|
||||
marseysing=emoji_u1f9d1_1f3fc_200d_1f3a4.png
|
||||
marseysing=emoji_u1f9d1_1f3fd_200d_1f3a4.png
|
||||
marseysing=emoji_u1f9d1_1f3fe_200d_1f3a4.png
|
||||
marseysing=emoji_u1f9d1_1f3ff_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_1f3fb_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_1f3fc_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_1f3fd_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_1f3fe_200d_1f3a4.png
|
||||
marseysing=emoji_u1f469_1f3ff_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_1f3fb_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_1f3fc_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_1f3fd_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_1f3fe_200d_1f3a4.png
|
||||
marseysing=emoji_u1f468_1f3ff_200d_1f3a4.png
|
||||
marseygun=emoji_u1f52b.png
|
||||
marseycloud=emoji_u2601.png
|
||||
marseymayo=emoji_u1f468_1f3fc.png
|
||||
marseyclapping2=emoji_u1f44f.png
|
||||
marseyclapping2=emoji_u1f44f_1f3fb.png
|
||||
marseyclapping2=emoji_u1f44f_1f3fc.png
|
||||
marseyclapping2=emoji_u1f44f_1f3fd.png
|
||||
marseyclapping2=emoji_u1f44f_1f3fe.png
|
||||
marseyclapping2=emoji_u1f44f_1f3ff.png
|
||||
marseylickinglips=emoji_u1f60b.png
|
||||
marseybrofist=emoji_u1f44a.png
|
||||
marseybrofist=emoji_u1f44a_1f3fb.png
|
||||
marseybrofist=emoji_u1f44a_1f3fc.png
|
||||
marseybrofist=emoji_u1f44a_1f3fd.png
|
||||
marseybrofist=emoji_u1f44a_1f3fe.png
|
||||
marseybrofist=emoji_u1f44a_1f3ff.png
|
||||
marseydownvote=emoji_u1f44e.png
|
||||
marseydownvote=emoji_u1f44e_1f3fb.png
|
||||
marseydownvote=emoji_u1f44e_1f3fc.png
|
||||
marseydownvote=emoji_u1f44e_1f3fd.png
|
||||
marseydownvote=emoji_u1f44e_1f3fe.png
|
||||
marseydownvote=emoji_u1f44e_1f3ff.png
|
||||
marseybountyhunter=emoji_u1f920.png
|
||||
marseycheeky=emoji_u1f61b.png
|
||||
marseycheeky=emoji_u1f61c.png
|
||||
marseycheeky=emoji_u1f61d.png
|
||||
marseybattered=emoji_u1f915.png
|
||||
marseywink=emoji_u1f609.png
|
||||
marseyokay=emoji_u1f44c.png
|
||||
marseyokay=emoji_u1f44c_1f3fb.png
|
||||
marseyokay=emoji_u1f44c_1f3fc.png
|
||||
marseyokay=emoji_u1f44c_1f3fd.png
|
||||
marseyokay=emoji_u1f44c_1f3fe.png
|
||||
marseyokay=emoji_u1f44c_1f3ff.png
|
||||
marseysweating=emoji_u1f630.png
|
||||
marseysweating=emoji_u1f605.png
|
||||
marseyangel=emoji_u1f607.png
|
||||
marseyskull=emoji_u1f480.png
|
||||
marseyskull=emoji_u2620.png
|
||||
marseyezramiller=emoji_u1f9d1.png
|
||||
marseyshrug=emoji_u1f937.png
|
||||
marseyshrug=emoji_u1f937_1f3fb.png
|
||||
marseyshrug=emoji_u1f937_1f3fc.png
|
||||
marseyshrug=emoji_u1f937_1f3fd.png
|
||||
marseyshrug=emoji_u1f937_1f3fe.png
|
||||
marseyshrug=emoji_u1f937_1f3ff.png
|
||||
marseyshrug=emoji_u1f937_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_1f3fb_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_1f3fc_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_1f3fd_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_1f3fe_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_1f3ff_200d_2640.png
|
||||
marseyshrug=emoji_u1f937_200d_2642.png
|
||||
marseyshrug=emoji_u1f937_1f3fb_200d_2642.png
|
||||
marseyshrug=emoji_u1f937_1f3fc_200d_2642.png
|
||||
marseyshrug=emoji_u1f937_1f3fd_200d_2642.png
|
||||
marseyshrug=emoji_u1f937_1f3fe_200d_2642.png
|
||||
marseyshrug=emoji_u1f937_1f3ff_200d_2642.png
|
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
convert "https://rdrama.net/e/$1.webp[0]" -background none -resize "128x128>" -gravity center -extent 128x128 $1.png
|
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 21 KiB |