summaryrefslogtreecommitdiffstats
path: root/source/x/noto-fonts-ttf/package-source.sh
blob: 2e11c8724086f167a6a71d49f344442d9b118e60 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash

# Copyright 2020  Patrick J. Volkerding, Sebeka, Minnesota, USA
# 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.

# This pulls down the full noto-font archive from github and then packages
# the languages and weights that are most commonly used as well as the
# documentation into a "source" tarball. Note that since 100% of the contents
# of this are placed into the package .txz, there's not really any reason to
# keep the source archive after packaging it.

cd $(dirname $0) ; CWD=$(pwd)

VERSION=${VERSION:-v2017-10-24-phase3-second-cleanup}
PKGVER=${PKGVER:-$(echo $VERSION | cut -d v -f 2- | cut -d - -f 1-3 | tr -d -)}

# If both .ttc and .ttf formats exist, which to prefer:
GOOD_FORMAT=${GOOD_FORMAT:-ttf}

# Take non-Noto fonts?
PACKAGE_NON_NOTO=${PACKAGE_NON_NOTO:-NO}

# Package uncommonly used weights?
PACKAGE_UNCOMMON_WEIGHTS=${PACKAGE_UNCOMMON_WEIGHTS:-NO}

# Package unique unhinted fonts? This used to be needed solely for the symbol
# font, but there are hinted versions now. Suggest NO.
PACKAGE_UNHINTED_FONTS=${PACKAGE_UNHINTED_FONTS:-NO}

# Create a temporary extraction directory:
EXTRACT_DIR=$(mktemp -d)

( cd $EXTRACT_DIR
  # Does the source exist in $CWD? If so, just copy it here:
  if [ -r $CWD/${VERSION}.tar.gz ]; then
    cp -a $CWD/${VERSION}.tar.gz .
  else
    # Fetch the source:
    lftpget https://github.com/googlefonts/noto-fonts/archive/${VERSION}.tar.gz
  fi
  OUTPUT_TIMESTAMP=$(tar tvvf ${VERSION}.tar.gz | head -n 1 | tr -d / | rev | cut -f 2,3 -d ' ' | rev)
  tar xf ${VERSION}.tar.gz
  rm ${VERSION}.tar.gz
  mv *oto* noto-fonts
  # Remove the fonts listed in fonts-to-skip.txt:
  cat $CWD/fonts-to-skip.txt | while read line ; do
    if [ ! "$(echo $line | cut -b 1)" = "#" ]; then
      RMFONT="$(echo $line | tr -d " ")"
      rm -f --verbose noto-fonts/*hinted/NotoSans${RMFONT}-*.*
      rm -f --verbose noto-fonts/*hinted/NotoSerif${RMFONT}-*.*
    fi
  done
  # Remove UI fonts:
  rm -f --verbose noto-fonts/*hinted/Noto{Sans,Serif}*UI-*.{ttc,ttf}
  # Remove the unhinted font if a hinted version exists:
  for hintedfont in noto-fonts/hinted/* ; do
    rm -f --verbose noto-fonts/unhinted/$(basename $hintedfont)
  done
  # Remove duplicates:
  if [ "$GOOD_FORMAT" = "ttc" ]; then
    BAD_FORMAT="ttf"
  else
    BAD_FORMAT="ttc"
  fi 
  for file in noto-fonts/*hinted/*.${GOOD_FORMAT} ; do
    rm -f --verbose noto-fonts/*hinted/$(basename $file .${GOOD_FORMAT}).${BAD_FORMAT}
  done
  if [ "$PACKAGE_UNHINTED_FONTS" = "NO" ]; then
    rm -f --verbose noto-fonts/unhinted/*
  fi
  mkdir fonts
  mv noto-fonts/*hinted/* fonts
  # Unless we selected to take non-Noto fonts (these are usually the ChromeOS
  # fonts), eliminate any fonts that do not begin with Noto:
  if [ "$PACKAGE_NON_NOTO" = "NO" ]; then
    mkdir fonts-tmp
    mv fonts/Noto* fonts-tmp
    rm -rf --verbose fonts
    mv fonts-tmp fonts
  fi
  if [ "$PACKAGE_UNCOMMON_WEIGHTS" = "NO" ]; then
    rm -f --verbose fonts/*{Condensed,SemiBold,Extra}*.{ttc,ttf}
  fi
  mkdir docs
  mv noto-fonts/{FAQ*,LICENSE*,NEWS*,README*,issue_*} docs
  rm -r noto-fonts
  # Fix permissions:
  find . -type f -exec chmod 644 {} \;
  # Create source archive:
  rm -f $CWD/noto-fonts-subset-${PKGVER}.tar*
  tar cvf $CWD/noto-fonts-subset-${PKGVER}.tar .
  plzip -9 -v $CWD/noto-fonts-subset-${PKGVER}.tar
  touch -d "$OUTPUT_TIMESTAMP" $CWD/noto-fonts-subset-${PKGVER}.tar.lz
)
  
# Cleanup:
rm -rf $EXTRACT_DIR