mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-24 10:02:29 +01:00
system/noto-emoji: Added (Noto Emoji fonts).
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
This commit is contained in:
parent
7a337808e8
commit
50bfa12c57
7 changed files with 401 additions and 0 deletions
9
system/noto-emoji/README
Normal file
9
system/noto-emoji/README
Normal file
|
@ -0,0 +1,9 @@
|
|||
noto-emoji - Color and Black-and-White Noto emoji fonts
|
||||
|
||||
I haven't included a font config in this package since I am still
|
||||
experimenting with the best configuration. Currently, I am using this
|
||||
|
||||
https://gist.github.com/hexchain/47f550472e79d0805060
|
||||
|
||||
in /etc/fonts/conf.avail/ and symlinking it to /etc/fonts/conf.d/
|
||||
It seems to work well with chromium, somewhat less so with firefox.
|
11
system/noto-emoji/doinst.sh
Normal file
11
system/noto-emoji/doinst.sh
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Update the X font indexes:
|
||||
if [ -x /usr/bin/mkfontdir ]; then
|
||||
( cd /usr/share/fonts/TTF
|
||||
mkfontscale .
|
||||
mkfontdir .
|
||||
)
|
||||
fi
|
||||
|
||||
if [ -x /usr/bin/fc-cache ]; then
|
||||
/usr/bin/fc-cache -f
|
||||
fi
|
104
system/noto-emoji/noto-emoji.SlackBuild
Normal file
104
system/noto-emoji/noto-emoji.SlackBuild
Normal file
|
@ -0,0 +1,104 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for noto-emoji
|
||||
|
||||
# Copyright 2017 Andrew Clemons, Wellington New Zealand
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
PRGNAM=noto-emoji
|
||||
GITREV=${GITREV:-732cb454ac854efe6ce00630fee9ae5499062056}
|
||||
NOTOTOOLSGITREV=${NOTOTOOLSGITREV:-4bcd7d5bc55963c30cceaadf637836446662fec3}
|
||||
VERSION=${VERSION:-git$(echo "$GITREV" | sed 's/^\(.\{7\}\).*$/\1/')}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
CWD=$(pwd)
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM-$GITREV
|
||||
tar xvf $CWD/$PRGNAM-$GITREV.tar.gz
|
||||
cd $PRGNAM-$GITREV
|
||||
tar xvf $CWD/nototools-$NOTOTOOLSGITREV.tar.gz
|
||||
chown -R root:root .
|
||||
find -L . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
|
||||
-o -perm 511 \) -exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||
|
||||
cd nototools-$NOTOTOOLSGITREV
|
||||
export PATH=$PATH:$(pwd)/nototools
|
||||
export PYTHONPATH=$(pwd)
|
||||
cd ..
|
||||
|
||||
# Slackware's Python is a narrow-build - workaround
|
||||
for sha in d34c13fb99f07d09c0c98192e7998186a622e28c 1e8488167c26ac1e780e374961d08f1fb1d1e880 ; do
|
||||
patch -p1 < $CWD/patches/$sha.patch
|
||||
done
|
||||
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
CXXFLAGS="$SLKCFLAGS" \
|
||||
make VERBOSE=true
|
||||
|
||||
install -d $PKG/usr/share/fonts/TTF/
|
||||
install -m644 *Emoji.ttf $PKG/usr/share/fonts/TTF/
|
||||
install -m644 fonts/*.ttf $PKG/usr/share/fonts/TTF/
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp -a \
|
||||
AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE README.md \
|
||||
$PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
|
12
system/noto-emoji/noto-emoji.info
Normal file
12
system/noto-emoji/noto-emoji.info
Normal file
|
@ -0,0 +1,12 @@
|
|||
PRGNAM="noto-emoji"
|
||||
VERSION="git732cb45"
|
||||
HOMEPAGE="https://www.google.com/get/noto/help/emoji/"
|
||||
DOWNLOAD="https://github.com/googlei18n/noto-emoji/archive/732cb454ac854efe6ce00630fee9ae5499062056/noto-emoji-732cb454ac854efe6ce00630fee9ae5499062056.tar.gz \
|
||||
https://github.com/googlei18n/nototools/archive/4bcd7d5bc55963c30cceaadf637836446662fec3/nototools-4bcd7d5bc55963c30cceaadf637836446662fec3.tar.gz"
|
||||
MD5SUM="760193841db3b502fbb3462384eca64b \
|
||||
40d0a5ac9d5ad1aeb9e9be43017828f3"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES="optipng python-fonttools"
|
||||
MAINTAINER="Andrew Clemons"
|
||||
EMAIL="andrew.clemons@gmail.com"
|
|
@ -0,0 +1,84 @@
|
|||
From 1e8488167c26ac1e780e374961d08f1fb1d1e880 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Clemons <andrew.clemons@gmail.com>
|
||||
Date: Thu, 9 Mar 2017 21:48:18 +1300
|
||||
Subject: [PATCH] Add support for "narrow" python to emoji_builder.py
|
||||
|
||||
The code currently only works with wide builds since it does not take
|
||||
UTF-16 surrogate pairs into account.
|
||||
---
|
||||
third_party/color_emoji/emoji_builder.py | 41 ++++++++++++++++++++++++++++----
|
||||
1 file changed, 37 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/third_party/color_emoji/emoji_builder.py b/third_party/color_emoji/emoji_builder.py
|
||||
index c118e83..3d3e0c8 100644
|
||||
--- a/third_party/color_emoji/emoji_builder.py
|
||||
+++ b/third_party/color_emoji/emoji_builder.py
|
||||
@@ -25,10 +25,36 @@
|
||||
|
||||
from nototools import font_data
|
||||
|
||||
+def myunichr(cp):
|
||||
+ if sys.maxunicode < 0x10FFFF and cp > 0xFFFF:
|
||||
+ return ("\\U" + hex(cp)[2:].zfill(8)).decode("unicode-escape")
|
||||
+ return unichr(cp)
|
||||
+
|
||||
+def myord(high, low):
|
||||
+ return (ord(high) - 0xD800) * 0x400 + (ord(low) - 0xDC00) + 0x10000
|
||||
+
|
||||
+def begins_with_surrogate(string):
|
||||
+ return sys.maxunicode < 0x10FFFF and len(string) > 1 and (0xD800 <= ord(string[0]) <= 0xDBFF) and (0xDC00 <= ord(string[1]) <= 0xDFFF)
|
||||
+
|
||||
def get_glyph_name_from_gsub (string, font, cmap_dict):
|
||||
ligatures = font['GSUB'].table.LookupList.Lookup[0].SubTable[0].ligatures
|
||||
- first_glyph = cmap_dict[ord (string[0])]
|
||||
- rest_of_glyphs = [cmap_dict[ord (ch)] for ch in string[1:]]
|
||||
+
|
||||
+ if begins_with_surrogate(string):
|
||||
+ first_glyph = cmap_dict[myord(string[0], string[1])]
|
||||
+ string = string[2:]
|
||||
+ else:
|
||||
+ first_glyph = cmap_dict[ord (string[0])]
|
||||
+ string = string[1:]
|
||||
+
|
||||
+ rest_of_glyphs = []
|
||||
+ while (len(string) > 0):
|
||||
+ if begins_with_surrogate(string):
|
||||
+ rest_of_glyphs.append(cmap_dict[myord(string[0], string[1])])
|
||||
+ string = string[2:]
|
||||
+ else:
|
||||
+ rest_of_glyphs.append(cmap_dict[ord (string[0])])
|
||||
+ string = string[1:]
|
||||
+
|
||||
for ligature in ligatures[first_glyph]:
|
||||
if ligature.Component == rest_of_glyphs:
|
||||
return ligature.LigGlyph
|
||||
@@ -462,13 +488,13 @@ def is_vs(cp):
|
||||
if "_" in codes:
|
||||
pieces = codes.split ("_")
|
||||
cps = [int(code, 16) for code in pieces]
|
||||
- uchars = "".join ([unichr(cp) for cp in cps if not is_vs(cp)])
|
||||
+ uchars = "".join ([myunichr(cp) for cp in cps if not is_vs(cp)])
|
||||
else:
|
||||
cp = int(codes, 16)
|
||||
if is_vs(cp):
|
||||
print "ignoring unexpected vs input %04x" % cp
|
||||
continue
|
||||
- uchars = unichr(cp)
|
||||
+ uchars = myunichr(cp)
|
||||
img_files[uchars] = img_file
|
||||
if not img_files:
|
||||
raise Exception ("No image files found in '%s'." % glb)
|
||||
@@ -483,6 +509,13 @@ def is_vs(cp):
|
||||
except:
|
||||
print "no cmap entry for %x" % ord(uchars)
|
||||
raise ValueError("%x" % ord(uchars))
|
||||
+ elif len (uchars) == 2 and begins_with_surrogate(uchars):
|
||||
+ cp = myord(uchars[0], uchars[1])
|
||||
+ try:
|
||||
+ glyph_name = unicode_cmap.cmap[cp]
|
||||
+ except:
|
||||
+ print "no cmap entry for %x" % cp
|
||||
+ raise ValueError("%x" % ord(uchars))
|
||||
else:
|
||||
glyph_name = get_glyph_name_from_gsub (uchars, font, unicode_cmap.cmap)
|
||||
glyph_id = font.getGlyphID (glyph_name)
|
|
@ -0,0 +1,162 @@
|
|||
From d34c13fb99f07d09c0c98192e7998186a622e28c Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Clemons <andrew.clemons@gmail.com>
|
||||
Date: Tue, 7 Mar 2017 18:13:40 +1300
|
||||
Subject: [PATCH] Tidy mixed tabs and spaces
|
||||
|
||||
---
|
||||
third_party/color_emoji/emoji_builder.py | 76 ++++++++++++++++----------------
|
||||
1 file changed, 37 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/third_party/color_emoji/emoji_builder.py b/third_party/color_emoji/emoji_builder.py
|
||||
index c847fdb..c118e83 100644
|
||||
--- a/third_party/color_emoji/emoji_builder.py
|
||||
+++ b/third_party/color_emoji/emoji_builder.py
|
||||
@@ -33,7 +33,6 @@ def get_glyph_name_from_gsub (string, font, cmap_dict):
|
||||
if ligature.Component == rest_of_glyphs:
|
||||
return ligature.LigGlyph
|
||||
|
||||
-
|
||||
def div (a, b):
|
||||
return int (round (a / float (b)))
|
||||
|
||||
@@ -111,11 +110,11 @@ def write_smallGlyphMetrics (self, width, height):
|
||||
line_height = (ascent + descent) * y_ppem / float (upem)
|
||||
line_ascent = ascent * y_ppem / float (upem)
|
||||
y_bearing = int (round (line_ascent - .5 * (line_height - height)))
|
||||
- # fudge y_bearing if calculations are a bit off
|
||||
- if y_bearing == 128:
|
||||
- y_bearing = 127
|
||||
+ # fudge y_bearing if calculations are a bit off
|
||||
+ if y_bearing == 128:
|
||||
+ y_bearing = 127
|
||||
advance = width
|
||||
- # print "small glyph metrics h: %d w: %d" % (height, width)
|
||||
+ # print "small glyph metrics h: %d w: %d" % (height, width)
|
||||
# smallGlyphMetrics
|
||||
# Type Name
|
||||
# BYTE height
|
||||
@@ -123,14 +122,14 @@ def write_smallGlyphMetrics (self, width, height):
|
||||
# CHAR BearingX
|
||||
# CHAR BearingY
|
||||
# BYTE Advance
|
||||
- try:
|
||||
- self.write (struct.pack ("BBbbB",
|
||||
- height, width,
|
||||
- x_bearing, y_bearing,
|
||||
- advance))
|
||||
- except Exception as e:
|
||||
- raise ValueError("%s, h: %d w: %d x: %d y: %d %d a:" % (
|
||||
- e, height, width, x_bearing, y_bearing, advance))
|
||||
+ try:
|
||||
+ self.write (struct.pack ("BBbbB",
|
||||
+ height, width,
|
||||
+ x_bearing, y_bearing,
|
||||
+ advance))
|
||||
+ except Exception as e:
|
||||
+ raise ValueError("%s, h: %d w: %d x: %d y: %d %d a:" % (
|
||||
+ e, height, width, x_bearing, y_bearing, advance))
|
||||
|
||||
def write_format1 (self, png):
|
||||
|
||||
@@ -253,11 +252,11 @@ def write_sbitLineMetrics_hori (self):
|
||||
ascent = div (ascent * y_ppem, upem)
|
||||
descent = - (line_height - ascent)
|
||||
self.write (struct.pack ("bbBbbbbbbbbb",
|
||||
- ascent, descent,
|
||||
- self.strike_metrics.width,
|
||||
- 0, 0, 0,
|
||||
- 0, 0, 0, 0, # TODO
|
||||
- 0, 0))
|
||||
+ ascent, descent,
|
||||
+ self.strike_metrics.width,
|
||||
+ 0, 0, 0,
|
||||
+ 0, 0, 0, 0, # TODO
|
||||
+ 0, 0))
|
||||
|
||||
def write_sbitLineMetrics_vert (self):
|
||||
self.write_sbitLineMetrics_hori () # XXX
|
||||
@@ -430,10 +429,10 @@ def drop_outline_tables (font):
|
||||
print "Loaded font '%s'." % font_file
|
||||
|
||||
font_metrics = FontMetrics (font['head'].unitsPerEm,
|
||||
- font['hhea'].ascent,
|
||||
- -font['hhea'].descent)
|
||||
+ font['hhea'].ascent,
|
||||
+ -font['hhea'].descent)
|
||||
print "Font metrics: upem=%d ascent=%d descent=%d." % \
|
||||
- (font_metrics.upem, font_metrics.ascent, font_metrics.descent)
|
||||
+ (font_metrics.upem, font_metrics.ascent, font_metrics.descent)
|
||||
glyph_metrics = font['hmtx'].metrics
|
||||
unicode_cmap = font['cmap'].getcmap (3, 10)
|
||||
if not unicode_cmap:
|
||||
@@ -449,8 +448,8 @@ def drop_outline_tables (font):
|
||||
eblc.write_header ()
|
||||
eblc.start_strikes (len (img_prefixes))
|
||||
|
||||
- def is_vs(cp):
|
||||
- return cp >= 0xfe00 and cp <= 0xfe0f
|
||||
+ def is_vs(cp):
|
||||
+ return cp >= 0xfe00 and cp <= 0xfe0f
|
||||
|
||||
for img_prefix in img_prefixes:
|
||||
print
|
||||
@@ -462,13 +461,13 @@ def is_vs(cp):
|
||||
codes = img_file[len (img_prefix):-4]
|
||||
if "_" in codes:
|
||||
pieces = codes.split ("_")
|
||||
- cps = [int(code, 16) for code in pieces]
|
||||
+ cps = [int(code, 16) for code in pieces]
|
||||
uchars = "".join ([unichr(cp) for cp in cps if not is_vs(cp)])
|
||||
else:
|
||||
- cp = int(codes, 16)
|
||||
- if is_vs(cp):
|
||||
- print "ignoring unexpected vs input %04x" % cp
|
||||
- continue
|
||||
+ cp = int(codes, 16)
|
||||
+ if is_vs(cp):
|
||||
+ print "ignoring unexpected vs input %04x" % cp
|
||||
+ continue
|
||||
uchars = unichr(cp)
|
||||
img_files[uchars] = img_file
|
||||
if not img_files:
|
||||
@@ -479,19 +478,18 @@ def is_vs(cp):
|
||||
advance = width = height = 0
|
||||
for uchars, img_file in img_files.items ():
|
||||
if len (uchars) == 1:
|
||||
- try:
|
||||
- glyph_name = unicode_cmap.cmap[ord (uchars)]
|
||||
- except:
|
||||
- print "no cmap entry for %x" % ord(uchars)
|
||||
- raise ValueError("%x" % ord(uchars))
|
||||
+ try:
|
||||
+ glyph_name = unicode_cmap.cmap[ord (uchars)]
|
||||
+ except:
|
||||
+ print "no cmap entry for %x" % ord(uchars)
|
||||
+ raise ValueError("%x" % ord(uchars))
|
||||
else:
|
||||
glyph_name = get_glyph_name_from_gsub (uchars, font, unicode_cmap.cmap)
|
||||
glyph_id = font.getGlyphID (glyph_name)
|
||||
glyph_imgs[glyph_id] = img_file
|
||||
if "verbose" in options:
|
||||
uchars_name = ",".join (["%04X" % ord (char) for char in uchars])
|
||||
- # print "Matched U+%s: id=%d name=%s image=%s" % (
|
||||
- # uchars_name, glyph_id, glyph_name, img_file)
|
||||
+ # print "Matched U+%s: id=%d name=%s image=%s" % (uchars_name, glyph_id, glyph_name, img_file)
|
||||
|
||||
advance += glyph_metrics[glyph_name][0]
|
||||
w, h = PNG (img_file).get_size ()
|
||||
@@ -529,10 +527,10 @@ def is_vs(cp):
|
||||
drop_outline_tables (font)
|
||||
print "Dropped outline ('glyf', 'CFF ') and related tables."
|
||||
|
||||
- # hack removal of cmap pua entry for unknown flag glyph. If we try to
|
||||
- # remove it earlier, getGlyphID dies. Need to restructure all of this
|
||||
- # code.
|
||||
- font_data.delete_from_cmap(font, [0xfe82b])
|
||||
+ # hack removal of cmap pua entry for unknown flag glyph. If we try to
|
||||
+ # remove it earlier, getGlyphID dies. Need to restructure all of this
|
||||
+ # code.
|
||||
+ font_data.delete_from_cmap(font, [0xfe82b])
|
||||
|
||||
font.save (out_file)
|
||||
print "Output font '%s' generated." % out_file
|
19
system/noto-emoji/slack-desc
Normal file
19
system/noto-emoji/slack-desc
Normal file
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
noto-emoji: noto-emoji (Noto Emoji fonts)
|
||||
noto-emoji:
|
||||
noto-emoji: Color and Black-and-White Noto emoji fonts, and tools for working
|
||||
noto-emoji: with them.
|
||||
noto-emoji:
|
||||
noto-emoji: https://github.com/googlei18n/noto-emoji
|
||||
noto-emoji:
|
||||
noto-emoji:
|
||||
noto-emoji:
|
||||
noto-emoji:
|
||||
noto-emoji:
|
Loading…
Reference in a new issue