aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
Diffstat (limited to 'system')
-rw-r--r--system/noto-emoji/README9
-rw-r--r--system/noto-emoji/doinst.sh11
-rw-r--r--system/noto-emoji/noto-emoji.SlackBuild104
-rw-r--r--system/noto-emoji/noto-emoji.info12
-rw-r--r--system/noto-emoji/patches/1e8488167c26ac1e780e374961d08f1fb1d1e880.patch84
-rw-r--r--system/noto-emoji/patches/d34c13fb99f07d09c0c98192e7998186a622e28c.patch162
-rw-r--r--system/noto-emoji/slack-desc19
7 files changed, 401 insertions, 0 deletions
diff --git a/system/noto-emoji/README b/system/noto-emoji/README
new file mode 100644
index 000000000000..92cb692808a8
--- /dev/null
+++ b/system/noto-emoji/README
@@ -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.
diff --git a/system/noto-emoji/doinst.sh b/system/noto-emoji/doinst.sh
new file mode 100644
index 000000000000..8fec9f534006
--- /dev/null
+++ b/system/noto-emoji/doinst.sh
@@ -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
diff --git a/system/noto-emoji/noto-emoji.SlackBuild b/system/noto-emoji/noto-emoji.SlackBuild
new file mode 100644
index 000000000000..d1103d25df47
--- /dev/null
+++ b/system/noto-emoji/noto-emoji.SlackBuild
@@ -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}
diff --git a/system/noto-emoji/noto-emoji.info b/system/noto-emoji/noto-emoji.info
new file mode 100644
index 000000000000..4339049cfcac
--- /dev/null
+++ b/system/noto-emoji/noto-emoji.info
@@ -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"
diff --git a/system/noto-emoji/patches/1e8488167c26ac1e780e374961d08f1fb1d1e880.patch b/system/noto-emoji/patches/1e8488167c26ac1e780e374961d08f1fb1d1e880.patch
new file mode 100644
index 000000000000..35bdd3d6616c
--- /dev/null
+++ b/system/noto-emoji/patches/1e8488167c26ac1e780e374961d08f1fb1d1e880.patch
@@ -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)
diff --git a/system/noto-emoji/patches/d34c13fb99f07d09c0c98192e7998186a622e28c.patch b/system/noto-emoji/patches/d34c13fb99f07d09c0c98192e7998186a622e28c.patch
new file mode 100644
index 000000000000..6b7b93f5fb9c
--- /dev/null
+++ b/system/noto-emoji/patches/d34c13fb99f07d09c0c98192e7998186a622e28c.patch
@@ -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
diff --git a/system/noto-emoji/slack-desc b/system/noto-emoji/slack-desc
new file mode 100644
index 000000000000..f8a4cce6a283
--- /dev/null
+++ b/system/noto-emoji/slack-desc
@@ -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: