[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [RFC] Stripping Latin range in fonts used by g-i installer?



Quoting Davide Viti (zinosat@tiscali.it):

> I was about to propose the same: start with one package and see how it goes.
> I can prepare screenshots to see how it looks like in the next few days


Here's the patch I currently come up with, against ttf-sil-abyssinica
to produce a stripped udeb.

Nothing is hardcoded anymore in the strip scripts, except the stripped
ranges.

The patch however assumes that the TTF files to strip are located at
the top of the package source tree.



diff -Nru ttf-sil-abyssinica-1.0/debian/rules ttf-sil-abyssinica-1.0.new/debian/rules
--- ttf-sil-abyssinica-1.0/debian/rules	2008-01-08 18:46:45.299346188 +0100
+++ ttf-sil-abyssinica-1.0.new/debian/rules	2008-01-08 18:53:18.790315687 +0100
@@ -3,11 +3,17 @@
 build: build-stamp
 build-stamp:
 	touch build-stamp
+	chmod u+x debian/scripts/strip
+	chmod u+x debian/scripts/strip_glyphs.pe
+	# Strip the fonts for the udeb
+	mkdir TTF-stripped
+	debian/scripts/strip Abyssinica_SIL.ttf TTF-stripped/Abyssinica_SIL.ttf
 
 clean:
 	dh_testdir
 	dh_testroot
 	rm -f build-stamp
+	-rm -rf TTF-stripped
 	dh_clean
 
 install: build
diff -Nru ttf-sil-abyssinica-1.0/debian/scripts/README.strip_glyphs ttf-sil-abyssinica-1.0.new/debian/scripts/README.strip_glyphs
--- ttf-sil-abyssinica-1.0/debian/scripts/README.strip_glyphs	1970-01-01 01:00:00.000000000 +0100
+++ ttf-sil-abyssinica-1.0.new/debian/scripts/README.strip_glyphs	2008-01-07 18:47:41.145527589 +0100
@@ -0,0 +1,18 @@
+strip_glyphs.pe is a fontforge script (syntax is documented at
+http://fontforge.sourceforge.net/scripting.html)
+
+Usage: "strip_glyphs.pe in out glyphs"
+
+It strips glyphs out of a font file; glyphs can be ranges
+or single code points.
+Code points can be expressed as integers or in unicode notation (i.e
+"u215") and ranges are separated by ":".
+
+As a practical example, this commands were used to eliminate
+Arabic glyphs from the freefont package:
+
+./strip_glyphs.pe FreeSerif.ttf FreeSerif_strip.ttf u60c:u6d4 ufb50:ufefe
+./strip_glyphs.pe FreeSansBold.ttf FreeSansBold_strip.ttf u617:u633
+
+Note that "in" and "out" can be the same file; in that case, obviously,
+"in" gets overwritten.
diff -Nru ttf-sil-abyssinica-1.0/debian/scripts/strip ttf-sil-abyssinica-1.0.new/debian/scripts/strip
--- ttf-sil-abyssinica-1.0/debian/scripts/strip	1970-01-01 01:00:00.000000000 +0100
+++ ttf-sil-abyssinica-1.0.new/debian/scripts/strip	2008-01-08 07:21:35.559513778 +0100
@@ -0,0 +1,54 @@
+#! /bin/bash
+
+exepath=$(dirname $0)
+strip=$exepath/strip_glyphs.pe
+
+if [ $# -ne 2 ] ; then
+	echo "Usage: $(basename $0) fontfile_in fontfile_out"
+	exit 0
+fi
+
+if [ ! -x "$strip" ] ; then
+	echo "Script not found: $strip"
+	exit 1
+fi
+
+if [ ! -f "$1" ] ; then
+	echo "File does not exist: $1"
+	exit 1
+fi
+if [ -z "$2" ] ; then
+	echo "You need to specify the output file"
+	exit 1
+fi
+
+ranges=""
+ranges="$ranges u0021:u02AF" # latin
+ranges="$ranges u0370:u03FF" # Greek and Coptic
+ranges="$ranges u0400:u052F" # Cyrilic
+ranges="$ranges u0530:u058F" # Armenian
+ranges="$ranges u0590:u05FF" # Hebrew
+ranges="$ranges uFB1D:uFB4F" # Hebrew 2
+ranges="$ranges u0600:u06FF" # Arabic
+ranges="$ranges u0700:u077F" # Syriac
+ranges="$ranges u0b00:u0b7f" # Oriya
+ranges="$ranges u0b80:u0bff" # Tamil
+#ranges="$ranges u0900:u097F" # Hindi
+#ranges="$ranges u0980:u099F" # Bengali
+#ranges="$ranges u0A00:u0CFF" # Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada
+ranges="$ranges u0D00:u0FFF" # Malayalam, Sinhala, Thai, Lao, Tibetan
+ranges="$ranges u10A0:u10FF" # Georgian
+ranges="$ranges u1EA0:u1EFF" # Vietnamese
+ranges="$ranges u1F00:u1FFF" # Greek Extended
+ranges="$ranges u2070:u209F" # Superscripts and Subscripts
+ranges="$ranges u2100:u21FF" # Letterlike, Number forms, Arrows
+ranges="$ranges u2200:u24FF" # Mathematical, Techical, Control, OCR
+ranges="$ranges u2580:u259F" # Block elements
+ranges="$ranges u2600:u26FF" # Miscellaneous Symbols
+ranges="$ranges u2700:u27BF" # Dingbats
+ranges="$ranges u3000:u30FF" # CJK Symbols and Punctuation
+#if ! echo $1 | grep -q Bold; then
+#      ranges="$ranges 65536:66002"   # Bengali conjuncts
+#fi
+
+$strip $1 $2 $ranges
diff -Nru ttf-sil-abyssinica-1.0/debian/scripts/strip_glyphs.pe ttf-sil-abyssinica-1.0.new/debian/scripts/strip_glyphs.pe
--- ttf-sil-abyssinica-1.0/debian/scripts/strip_glyphs.pe	1970-01-01 01:00:00.000000000 +0100
+++ ttf-sil-abyssinica-1.0.new/debian/scripts/strip_glyphs.pe	2008-01-07 18:47:41.145527589 +0100
@@ -0,0 +1,81 @@
+#! /usr/bin/fontforge 
+#
+#     Copyright (C) 2005 Davide Viti <zinosat@tiscali.it>
+#
+#     This program is free software; you can redistribute it and/or modify
+#     it under the terms of the GNU General Public License as published by
+#     the Free Software Foundation; either version 2 of the License, or
+#     (at your option) any later version.
+#
+#     This program is distributed in the hope that it will be useful,
+#     but WITHOUT ANY WARRANTY; without even the implied warranty of
+#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public
+#     License along with this program; if not, write to the Free
+#     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+#     MA 02111-1307 USA
+#
+# "glyphs_to_remove" argument can be a single code point
+# or a range of codepoints separated by ":"
+#
+# code points can be specified both as integers and as unicode
+# you can also mix the two formats (i.e "48:u54")
+#
+# example: 
+#
+#      "strip_glyphs in.ttf out.ttf 12 u20 100:150 u200:u230 u300:65000"
+
+if ($argc < 4)
+   Print( "Usage: strip_glyphs in out glyphs_to_remove..." )
+   Quit()
+endif
+
+
+Open($1); shift
+Reencode("unicode")
+out = $1; shift
+
+#
+# Loop through the arguments and select the glyphs
+# which need to be cleared
+#
+while ($argc > 1)
+  len = Strlen($1)
+  colon_idx = Strstr($1, ":")
+
+  #  
+  # argument is a single glyph
+  #
+  if (colon_idx == -1)
+    if(Strstr($1, "u") == -1)
+       SelectMore(Strtol($1)) ## Integer
+    else
+       SelectMore($1) ## Unicode code point (i.e "u0027")
+    endif
+
+  #  
+  # argument is a range low:high
+  #
+  else      
+     low = Strsub($1, 0, colon_idx)
+     if(Strstr($1, "u") == -1)
+        low = Strtol(low) ## Integer
+     endif
+
+     high = Strsub($1, colon_idx+1, len)
+     if(Strstr($1, "u") == -1)
+        high = Strtol(high) ## Integer
+     endif
+   
+     SelectMore(low, high);
+  endif
+
+  shift
+endloop
+
+Clear()
+
+Generate(out, "")
+Quit()
diff -Nru ttf-sil-abyssinica-1.0/debian/ttf-sil-abyssinica-udeb.install ttf-sil-abyssinica-1.0.new/debian/ttf-sil-abyssinica-udeb.install
--- ttf-sil-abyssinica-1.0/debian/ttf-sil-abyssinica-udeb.install	2008-01-08 18:46:45.299346188 +0100
+++ ttf-sil-abyssinica-1.0.new/debian/ttf-sil-abyssinica-udeb.install	2008-01-08 07:19:38.065666900 +0100
@@ -1 +1 @@
-Abyssinica_SIL.ttf usr/share/fonts/truetype/ttf-sil-abyssinica
+TTF-stripped/Abyssinica_SIL.ttf usr/share/fonts/truetype/ttf-sil-abyssinica

Attachment: signature.asc
Description: Digital signature


Reply to: