-2014-10-17 Paul Hardy <unifoundry@unifoundry.com>
+2014-10-23 Paul Hardy <unifoundry@unifoundry.com>
+
+ * Version: 7.0.06.
+ * Makefiles:
+ - Updated version to 7.0.06.
+ - Added "GZFLAGS = -f -9 -n" to use with gzip in all cases.
+ - Changed ';' to "&&" for multiple shell commands, to fail if
+ a preceding step caused an error.
+ - Use "install -s" instead of "install" on C binaries.
+ * Makefile: regenerated .PHONY: target entries.
+ * font/Makefile:
+ - Added GRAPHICS declaration, settable to "png" or "bmp" depending
+ on the type of Unifont font pages desired. The default is set
+ to "png".
+ - Added bmp: target to create bitmapped graphics (.bmp) images of
+ Unifont.
+ - Create font/compiled/plane00.html along with
+ font/compiled/plane01.html in "png" and "bmp" targets.
+ * font/plane01/plane01.hex:
+ - Added one glyph inadvertently omitted from Old Italic:
+ U+01031F (Paul Hardy).
+ - Improved animals in U+01F400..U+01F43F (Nils Dagsson Moskopp).
+ - Added more scripts:
+ U+010350..U+01037F Old Permic (Paul Hardy)
+ U+01F650..U+01F67F Ornamental Dingbats (Paul Hardy)
+ U+01F780..U+01F7FF Geometric Shapes Extended (Paul Hardy)
+ U+01F800..U+01F8FF Supplemental Arrows-C (Paul Hardy)
+ - Emoticons (Paul Hardy)
+ U+01F608: made horns look more like horns
+ * src/: in all Perl scripts, added "or die" for open, close, and
+ print system calls. Made some error messages more descriptive.
+ * src/Makefile: Changed CFLAGS parameter "-O" to explicitly be "-O2".
+ * src/unihexfill: added "set -e" at beginning of bash script.
+
+2014-10-17 Paul Hardy <unifoundry@unifoundry.com>
* Version: 7.0.05.
* ChangeLog: updated list of Plane 1 scripts added in 7.0.04 entry.
#
SHELL = /bin/sh
INSTALL = install
+GZFLAGS = -f -9 -n
PACKAGE = "unifont"
UNICODE_VERSION = 7.0
-PKG_REV = 05
+PKG_REV = 06
VERSION = $(UNICODE_VERSION).$(PKG_REV)
#
# Build a distribution tarball.
#
dist: distclean
- (cd .. ; tar cf $(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION) && \
- gzip -f -9 $(PACKAGE)-$(VERSION).tar)
+ (cd .. && tar cf $(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION) && \
+ gzip $(GZFLAGS) $(PACKAGE)-$(VERSION).tar)
bindir:
- set -e ; $(MAKE) -C src
+ set -e && $(MAKE) -C src
#
# Conditionally build the font, depending on the value of BUILDFONT.
buildfont:
if [ x$(BUILDFONT) != x ] ; \
then \
- set -e ; $(MAKE) -C font ; \
+ set -e && $(MAKE) -C font ; \
fi
#
# font/precompiled by default.
#
fontdir:
- set -e ; $(MAKE) -C font
+ set -e && $(MAKE) -C font
libdir: lib/wchardata.c
docdir:
- set -e ; $(MAKE) -C doc
+ set -e && $(MAKE) -C doc
mandir:
- set -e ; $(MAKE) -C man
+ set -e && $(MAKE) -C man
precompiled:
- set -e ; $(MAKE) precompiled -C font
+ set -e && $(MAKE) precompiled -C font
#
# Create lib/wchardata.c. If you want to also build the object file
$(INSTALL) -m0755 -d $(PKGDEST)
$(INSTALL) -m0644 -p $(TEXTFILES) doc/unifont.txt doc/unifont.info $(PKGDEST)
for i in $(TEXTFILES) unifont.txt unifont.info ; do \
- gzip -f -9 $(PKGDEST)/$$i ; \
+ gzip $(GZFLAGS) $(PKGDEST)/$$i ; \
done
$(INSTALL) -m0644 -p lib/wchardata.c $(PKGDEST)
$(INSTALL) -m0644 -p font/plane00/bmp-combining.txt $(PKGDEST)
# If "make" wasn't run before, font/compiled won't exist.
if [ ! -d font/compiled ] ; then \
- $(INSTALL) -m0644 -p font/precompiled/unifont-$(VERSION).hex $(PKGDEST)/unifont.hex ; \
+ $(INSTALL) -m0644 -p font/precompiled/unifont-$(VERSION).hex $(PKGDEST)/unifont.hex && \
$(INSTALL) -m0644 -p font/precompiled/unifont-$(VERSION).bmp $(PKGDEST)/unifont.bmp ; \
else \
- $(INSTALL) -m0644 -p font/compiled/unifont-$(VERSION).hex $(PKGDEST)/unifont.hex ; \
+ $(INSTALL) -m0644 -p font/compiled/unifont-$(VERSION).hex $(PKGDEST)/unifont.hex && \
$(INSTALL) -m0644 -p font/compiled/unifont-$(VERSION).bmp $(PKGDEST)/unifont.bmp ; \
fi
\rm -rf *~
\rm -rf .DS* ._.DS*
-.PHONY: all bindir docdir mandir fontdir precompiled install clean distclean
+.PHONY: all dist bindir buildfont fontdir libdir docdir mandir precompiled install clean distclean
+2014-10-23: Release 7.0.06
+
+ A few new scripts were added:
+ U+010350..U+01037F Old Permic
+ U+01F650..U+01F67F Ornamental Dingbats
+ U+01F780..U+01F7FF Geometrical Shapes Extended
+ U+01F800..U+01F8FF Supplemental Arrows-C
+
+ Various changes were made to Makefiles, Perl scripts, and one bash
+ shell script to conform to Debian Policy Manual version 3.9.6.
+
+ Several changes were made to Makefiles:
+ * Use "set -e" at the start of multi-command shell invocations,
+ to trap errors.
+ * Use "&&" rather than ";" in multi-command shell invocations,
+ to fail on errors.
+ * install now uses "-s" flag for C program binaries.
+
+ Other minor changes were made to scripts; see ChangeLog
+ for details.
+
2014-10-17: Release 7.0.05
Modified ASCII letter 'l' so it would have the same height as
#
SHELL = /bin/sh
INSTALL = install
+GZFLAGS = -f -9 -n
FONTFORGE = fontforge
#
# assembly date of this version
#
UNICODE_VERSION = 7.0
-PKG_REV = 05
+PKG_REV = 06
VERSION = $(UNICODE_VERSION).$(PKG_REV)
COPYRIGHT = "Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, \
#
COMPILED_DIR = compiled
#
-# destination directory for .png representation of font
+# destination directory for .bmp or .png representation of font
#
+BMPDIR = $(COMPILED_DIR)/bmp
PNGDIR = $(COMPILED_DIR)/png
+
+# Choose one graphics format or neither.
+GRAPHICS=png
+# GRAPHICS=bmp
#
# Directory with original unifont-$(VERSION).hex files
#
compiled: $(UNIFILES) $(COMBINING) $(UPPER_FILES) $(UPPER_COMBINING)
$(MAKE) compiled-files
-compiled-files: pcf psf png ttf csurttf upperttf uppercsurttf bigpic coverage
+compiled-files: pcf psf $(GRAPHICS) ttf csurttf upperttf uppercsurttf bigpic coverage
install -p index.html $(COMPILED_DIR)/index.html
#
mkdir -p $(COMPILED_DIR) ; \
fi
sort $(UNIFILES) > $(COMPILED_DIR)/unifont-$(VERSION).hex
- (cd $(HEXDIR) ; sort *.hex) | \
+ (cd $(HEXDIR) && sort *.hex) | \
egrep -v "^FFF[EF]" | \
$(BINDIR)/unigencircles $(COMBINING) plane00/nonprinting.hex \
> $(COMPILED_DIR)/unifont_sample-$(VERSION).hex
$(BINDIR)/hex2bdf --version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont-$(VERSION).hex \
>$(COMPILED_DIR)/unifont-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont-$(VERSION).bdf.gz
# Now make a version with combining circles. The font name
# will be "unifont_sample" instead of "unifont" to distinguish
--version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont_sample-$(VERSION).hex \
> $(COMPILED_DIR)/unifont_sample-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont_sample-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont_sample-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_sample-$(VERSION).bdf.gz
# Font with ConScript Unicode Registry (CSUR) glyphs added
$(BINDIR)/hex2bdf --font "Unifont CSUR" \
--version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont_csur-$(VERSION).hex \
> $(COMPILED_DIR)/unifont_csur-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont_csur-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont_csur-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_csur-$(VERSION).bdf.gz
# Font with glyphs above Plane 0
$(BINDIR)/hex2bdf --font "Unifont Upper" \
--version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont_upper-$(VERSION).hex \
> $(COMPILED_DIR)/unifont_upper-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont_upper-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont_upper-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper-$(VERSION).bdf.gz
# Font with glyphs above Plane 0 with CSUR glyphs above Plane 0
$(BINDIR)/hex2bdf --font "Unifont Upper CSUR" \
--version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).hex \
> $(COMPILED_DIR)/unifont_upper_csur-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).bdf.gz
# Font with glyphs above Plane 0 with combining circles added
$(BINDIR)/hex2bdf --font "Unifont Upper Sample" \
--version "$(VERSION)" --copyright $(COPYRIGHT) \
$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).hex \
> $(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf
- gzip -f -9 <$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf \
+ gzip $(GZFLAGS) <$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf.gz
#
pcf: bdf
bdftopcf <$(COMPILED_DIR)/unifont-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont-$(VERSION).pcf
bdftopcf <$(COMPILED_DIR)/unifont_sample-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_sample-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont_sample-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_sample-$(VERSION).pcf
bdftopcf <$(COMPILED_DIR)/unifont_csur-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_csur-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont_csur-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_csur-$(VERSION).pcf
bdftopcf <$(COMPILED_DIR)/unifont_upper-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont_upper-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_upper-$(VERSION).pcf
bdftopcf <$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont_upper_sample-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_upper_sample-$(VERSION).pcf
bdftopcf <$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).bdf \
>$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).pcf
- gzip -f -9 $(COMPILED_DIR)/unifont_upper_csur-$(VERSION).pcf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_upper_csur-$(VERSION).pcf
#
# Make the PSF (console) font for APL (A Programming Language).
psf/unifont-apl.txt \
512 \
$(COMPILED_DIR)/Unifont-APL8x16-$(VERSION).psf
- gzip -f -9 $(COMPILED_DIR)/Unifont-APL8x16-$(VERSION).psf
+ gzip $(GZFLAGS) $(COMPILED_DIR)/Unifont-APL8x16-$(VERSION).psf
#
# Print coverage of scripts in Basic Multilingual Plane in .txt file.
pagecount: $(COMPILED_DIR)/unifont-$(VERSION).hex $(BINDIR)/unipagecount
$(BINDIR)/unipagecount -l < $(COMPILED_DIR)/unifont-$(VERSION).hex \
> $(COMPILED_DIR)/pagecount.html
+ if [ x$(GRAPHICS) = xbmp ] ; then \
+ sed -i 's/png/bmp/g' $(COMPILED_DIR)/plane00.html ; \
+ fi
#
# Create the .png (Portable Network Graphics) versions of the glyphs.
mkdir -p $(PNGDIR)/plane01 ; \
fi
# Generate files in plane01/all directory to create PNG files.
- (cd plane01 ; make)
+ (cd plane01 && make)
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
for j in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
$(BINDIR)/unihex2png -p 01$$i$$j \
-o $(PNGDIR)/csur/uni0F$$i$$j.png ; \
done ; \
done
- # Create HTML table showing color-coded percent coverage in Plane 01.
+ # Create HTML table showing color-coded percent coverage in Plane 0.
+ $(BINDIR)/unipagecount -h < $(COMPILED_DIR)/unifont-$(VERSION).hex \
+ > $(COMPILED_DIR)/plane00.html
+ # Create HTML table showing color-coded percent coverage in Plane 1.
../bin/unipagecount -P1 -h < plane01/all/plane01-all.hex \
> compiled/plane01.html
echo "Done creating $(PNGDIR)"
+
+#
+# Create the .bmp (Bitmap Graphics) versions of the glyphs.
+#
+bmp: hex $(BINDIR)/unihex2bmp
+ if [ ! -d $(BMPDIR) ] ; then \
+ mkdir -p $(BMPDIR) ; \
+ fi
+ if [ ! -d $(BMPDIR)/plane00 ] ; then \
+ mkdir -p $(BMPDIR)/plane00 ; \
+ fi
+ for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ for j in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ $(BINDIR)/unihex2bmp -p00$$i$$j \
+ < $(COMPILED_DIR)/unifont_sample-$(VERSION).hex \
+ > $(BMPDIR)/plane00/uni00$$i$$j.bmp ; \
+ done ; \
+ done
+ if [ ! -d $(BMPDIR)/plane01 ] ; then \
+ mkdir -p $(BMPDIR)/plane01 ; \
+ fi
+ # Generate files in plane01/all directory to create PNG files.
+ (cd plane01 && make)
+ for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ for j in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ $(BINDIR)/unihex2bmp -p01$$i$$j \
+ < plane01/all/plane01-all.hex \
+ > $(BMPDIR)/plane01/uni01$$i$$j.bmp ; \
+ done ; \
+ done
+ if [ ! -d $(BMPDIR)/plane0E ] ; then \
+ mkdir -p $(BMPDIR)/plane0E ; \
+ fi
+ for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ for j in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ $(BINDIR)/unihex2bmp -p0E$$i$$j \
+ < $(COMPILED_DIR)/unifont_upper_sample-$(VERSION).hex \
+ > $(BMPDIR)/plane0E/uni0E$$i$$j.bmp ; \
+ done ; \
+ done
+ if [ ! -d $(BMPDIR)/csur ] ; then \
+ mkdir -p $(BMPDIR)/csur ; \
+ fi
+ for i in E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF \
+ F0 F1 F2 F3 F4 F5 F6 F7 F8 ; do \
+ $(BINDIR)/unihex2bmp -p00$$i \
+ < $(COMPILED_DIR)/unifont_csur_sample-$(VERSION).hex \
+ > $(BMPDIR)/csur/uni00$$i.bmp ; \
+ done
+ for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ for j in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do \
+ $(BINDIR)/unihex2bmp -p0F$$i$$j \
+ < $(COMPILED_DIR)/unifont_csur_sample-$(VERSION).hex \
+ > $(BMPDIR)/csur/uni0F$$i$$j.bmp ; \
+ done ; \
+ done
+ # Create HTML table showing color-coded percent coverage in Plane 0.
+ $(BINDIR)/unipagecount -h < $(COMPILED_DIR)/unifont-$(VERSION).hex \
+ > $(COMPILED_DIR)/plane00.html
+ sed -i 's/png/bmp/g' $(COMPILED_DIR)/plane00.html ; \
+ # Create HTML table showing color-coded percent coverage in Plane 01.
+ ../bin/unipagecount -P1 -h < plane01/all/plane01-all.hex \
+ > $(COMPILED_DIR)/plane01.html
+ sed -i 's/png/bmp/g' $(COMPILED_DIR)/plane01.html ; \
+ echo "Done creating $(BMPDIR)"
+
+
#
# Build one bitmap of the entire Unifont as a 4096 x 16 grid.
# Use all the .hex files in $(HEXDIR) so we add the contents of
install -p \
$(HEXDIR)/bmp-combining.txt \
$(TTFSRC)/combining.txt
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) FONTFILE="unifont" COMBINING="combining" \
FONTNAME="Unifont" PSNAME="Unifont"
mv $(TTFSRC)/unifont.sfd $(COMPILED_DIR)/unifont-$(VERSION).sfd
install -p \
$(COMPILED_DIR)/unifont_sample-$(VERSION).bdf \
$(TTFSRC)/unifont_sample.bdf
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) sbit FONTFILE="unifont_sample" COMBINING="" \
FONTNAME="Unifont Sample" PSNAME="UnifontSample"
mv $(TTFSRC)/unifont_sample.ttf \
$(TTFSRC)/unifont_csur.hex
sort -u plane00csur/csur-combining.txt $(HEXDIR)/bmp-combining.txt \
> $(TTFSRC)/combining_csur.txt
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) outline FONTFILE="unifont_csur" COMBINING="combining_csur" \
FONTNAME="Unifont CSUR" PSNAME="UnifontCSUR"
mv $(TTFSRC)/unifont_csur.sfd \
$(COMPILED_DIR)/unifont_csur-$(VERSION).sfd
mv $(TTFSRC)/unifont_csur.ttf \
$(COMPILED_DIR)/unifont_csur-$(VERSION).ttf
- gzip -f -9 $(COMPILED_DIR)/unifont_csur-$(VERSION).sfd
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_csur-$(VERSION).sfd
#
# Now build the ConScript Unicode Registry PUA font.
$(COMPILED_DIR)/unifont_upper-$(VERSION).hex \
$(TTFSRC)/unifont_upper.hex
sort -u $(UPPER_COMBINING) > $(TTFSRC)/combining_upper.txt
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) outline FONTFILE="unifont_upper" COMBINING="combining_upper" \
FONTNAME="Unifont Upper" PSNAME="UnifontUpper"
mv $(TTFSRC)/unifont_upper.sfd \
$(COMPILED_DIR)/unifont_upper-$(VERSION).sfd
mv $(TTFSRC)/unifont_upper.ttf \
$(COMPILED_DIR)/unifont_upper-$(VERSION).ttf
- gzip -f -9 $(COMPILED_DIR)/unifont_upper-$(VERSION).sfd
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_upper-$(VERSION).sfd
# Second, copy unifont_upper_sample.bdf, to make an SBIT font.
install -p \
$(COMPILED_DIR)/unifont_upper_sample-$(VERSION).bdf \
$(TTFSRC)/unifont_upper_sample.bdf
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) sbit FONTFILE="unifont_upper_sample" COMBINING="" \
FONTNAME="Unifont Upper Sample" PSNAME="UnifontUpperSample"
mv $(TTFSRC)/unifont_upper_sample.ttf \
$(TTFSRC)/unifont_upper_csur.hex
sort -u plane0[1-F]/*combining*.txt plane0[1-F]csur/*combining*.txt \
> $(TTFSRC)/combining_upper_csur.txt
- cd $(TTFSRC) ; \
+ cd $(TTFSRC) && \
$(MAKE) outline FONTFILE="unifont_upper_csur" COMBINING="combining_upper_csur" \
FONTNAME="Unifont Upper CSUR" PSNAME="UnifontUpperCSUR"
mv $(TTFSRC)/unifont_upper_csur.sfd \
$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).sfd
mv $(TTFSRC)/unifont_upper_csur.ttf \
$(COMPILED_DIR)/unifont_upper_csur-$(VERSION).ttf
- gzip -f -9 $(COMPILED_DIR)/unifont_upper_csur-$(VERSION).sfd
+ gzip $(GZFLAGS) $(COMPILED_DIR)/unifont_upper_csur-$(VERSION).sfd
#
#
.PHONY: all hex bdf pcf coverage pagecount png bigpic csurttf upper ttf \
precompiled install clean distclean
+
if [ ! -d all ]; then \
mkdir all; \
fi
- grep "^[0-9A-Fa-f]" unassigned-ranges.txt | \
+ set -e && \
+ grep "^[0-9A-Fa-f]" unassigned-ranges.txt | \
awk 'NF == 1 {print "../../bin/unihexgen " $$1 " " $$1;} \
NF == 2 {print "../../bin/unihexgen " $$1 " " $$2;}' | \
/bin/sh -s > plane01-unassigned.hex
- grep "^[0-9A-Fa-f]" noscript-ranges.txt | \
+ set -e && \
+ grep "^[0-9A-Fa-f]" noscript-ranges.txt | \
awk 'NF == 1 {print "../../bin/unihexgen " $$1 " " $$1;} \
NF == 2 {print "../../bin/unihexgen " $$1 " " $$2;}' | \
/bin/sh -s > all/noscript.hex
01031C:0000000020202020302C22222C300000
01031D:00000000040404043C04040404040000
01031E:00000000414949222222141408080000
+01031F:000000000808492A1C081C2A49080000
010320:00000000080808080808080808080000
010321:00000000080814142222224141410000
010322:00000000004122140814224100000000
010348:0000000000000C12212D2D21120C0000
010349:000000000000001C2222221408360000
01034A:00000000081C2A490808080808080000
+010350:000000007E424404090A1C1830200000
+010351:0000000008080808083E494949360000
+010352:000000003F4949280808080808080000
+010353:00000000040404081028444241210000
+010354:00000000020202444448704040400000
+010355:00000000FE9292929292929291910000
+010356:00000000FE929292929292919FF00000
+010357:00000000063A2222224242425A660000
+010358:00000000001008080810101010080000
+010359:000000007E4242420404040404020000
+01035A:00000000040A08081010107E42420000
+01035B:00000000404022221214080804040000
+01035C:00000000000000008E8A525222210000
+01035D:0000000000000042A222141408080000
+01035E:0000000040404C724240404040400000
+01035F:000000004040405E6202040408080000
+010360:000000007F4141424222241414080000
+010361:00000000605040404020201214080000
+010362:000000003F41492808080808493E0000
+010363:00000000444A4A525060404040400000
+010364:000000000201010101120A0418E08000
+010365:0000000C12122C282844444482820000
+010366:00000000919192929292929292FE0000
+010367:00000000F090909010101010101E0000
+010368:00000000BEA292929292929292F10000
+010369:000000000F1112222222222222210000
+01036A:0000000092929292929292AAAA440000
+01036B:0000004E50205C82829292AAAA440000
+01036C:000000000404080810FC202040C00000
+01036D:00000000101010101010101010100000
+01036E:00000000FC44282810102828407E0000
+01036F:00000000F090909010141212121E0000
+010370:000000004040404040404042427E0000
+010371:000000003F49494808080E09090E0000
+010372:00000000221C6191910A0A0A04040000
+010373:000000009B6D49494A4848484A4C0000
+010374:000000004CB4A4A42424242425260000
+010375:000000008282546C4428282810100000
+010376:3C240E10000000000000000000000000
+010377:10384444000000000000000000000000
+010378:38282838000000000000000000000000
+010379:C2242810000000000000000000000000
+01037A:18101418000000000000000000000000
010380:00000000000000000000440066007FFE66004400000000000000000000000000
010381:00003EF81C700820082008200820082008200000440066007FFE660044000000
010382:000007C003800100010001000100010001000100010001000100010001000000
01F402:00000000500050003C006F007FF83FFC0FFE0FFD0FFC0A140A140A1400000000
01F403:0000000000000000500057003FF86FFC7FFE0FFD0FFC0A140A140A1400000000
01F404:000000000000100078005E00FFF8FFFC1FFE1FFD1FFC15D41414141400000000
-01F405:00000000000000000000000000003FF06D587D5C0FFA142A2628200400000000
-01F406:00000000000000000000000000003FF06D787FDC0F7A142A2628200400000000
+01F405:00000C001E00258050784526852299426654021401200148009200620016001A
+01F406:00000C001E00258050784006803099B665860200013000B00046002600120012
01F407:0000000006000E000E003C006DF07FF87FFC3FFC3FFE1F9E1F7C18F800000000
01F408:0000000044046C047C0255F27FFA3FFC0FF80FF80FE80A280A28124800000000
01F409:2B0011C007601BD8799E7DBEF7EFF3CFF99FA9958301032006300610073003E0
01F40C:000000004400280028F029F83BF83BF83FF83FF03FE03FF83FFC1FFE00000000
01F40D:000000003C006E007E003E000E000E080CCC1DE619F61B361F3E0E1C00000000
01F40E:0000000004001C002E007E007FEC2FFE0FF60FF60FF20C300A28124800000000
-01F40F:000001E0021004080408021007800FC01BE01FF81FF803F00070004000000000
+01F40F:000001E003F007980708071003800FC01BE01FF81FF803F00070004000000000
01F410:000000000000030004E0050007800FC01BE01FF81FF80BF01070004000000000
01F411:0000000078007C00DC00FE00FFFE1FFF07FF07FF03FE02FA028A048804080000
01F412:00000000000C001218112C0D7FE17FFA0FFC0FF807F0055005280A5000000000
01F42C:00000000000001C007801F802FC03FE07FF006F0023C001E1998665200000000
01F42D:00003018482487C2844280024444C006600CC106238810100C60038000000000
01F42E:000000000000C386E7CEFFFE7FFC1BB01FF01FF01FF00FE00FE0044003800000
-01F42F:00003018482487C2844280024444701C610C438438381BB00C60038000000000
+01F42F:00003018482487C2844280024444701C610C4BA438381BB00C60038000000000
01F430:00000C30142812481248124813C808100A501008124811880C3003C000000000
01F431:0000000010102BA82448400440044444C006600CC5462288183007C000000000
01F432:000000E00180030003C007C00DF03FF05FFCFFFCFFFE073E0E3E1E3C38380000
01F437:0000783C47C44004400444442008238844444AA4482447C42388183007C00000
01F438:00000000183024483FF83FF87FFC7FFC7FFC600C38381C700440044003800000
01F439:0000000010102BA8244840044C644C64E00E410453942008D456082077DC0000
-01F43A:0000200830182BA8244820082448101011101390082008200BA0044003800000
-01F43B:00000000600C93929C72600C4444800281028382800244442388183007C00000
+01F43A:000000001008281445A24662800180018C198C198001800183C163C6199807E0
+01F43B:0000180C25D24221441148092A2A12A411C411C409C808880550022001C00000
01F43C:0000000067CCF83EE00E4EE45AB45EF44C644384292827C8183007C000000000
01F43D:000000000180066008101008200446624E724C3240022004181807E000000000
01F43E:00000000140040001C00BE003E501804007000FA00F800300000000000000000
01F605:000003E00C981244200226324949400140014FF9280A241213E40C1803E00000
01F606:000003E00C181004241222224411400140014FF9280A241213E40C1803E00000
01F607:0FF8100423E22C1A1C1C23E22002463146314001280A241213E40C1803E00000
-01F608:200433CC3C3C300C242422444662466240024812242423C410080C3003C00000
+01F608:400263C66C36700E642622444662466240024812242423C410080C3003C00000
01F609:000003E00C181004201226224611400140014FF9280A241213E40C1803E00000
01F60A:000003E00C181004200226324949400140014809241223E210040C1803E00000
01F60B:000003E00C181004200226324949400140014809241223E211240CD803E00000
01F636:000003E00C1810042002263246314001400140012002200210040C1803E00000
01F637:000003E00C181224241227725005480967F354152C1A27F210040C1803E00000
01F638:0000000010102BA82448400444444AA4C0066FECCAA627C8183007C000000000
-01F639:0000000010102BA82448400444445AB4C0066FECCAA627C8183007C000000000
+01F639:0000000010102BA8244840044C645014C0166FECCAA627C8183007C000000000
01F63A:0000000010102BA82448400440044444C0066FECC82627C8183007C000000000
01F63B:0000000010102BA8244840044AA44EE4C446600CC5462288183007C000000000
01F63C:0000000010102BA82448400440044444C006600CC0462188183007C000000000
01F63D:0000000010102BA8244840044AA44444C006608CC0462088183007C000000000
01F63E:0000000010102BA82448400440044444C006638CC4462108183007C000000000
-01F63F:0000000010102BA82448400440044444C826628CC5462008183007C000000000
+01F63F:0000000010102BA82448400444444024C026628CC5462008183007C000000000
01F640:0000000010102BA82448400442844444C006638CC44627C8183007C000000000
01F641:000003E00C18100420022632463140014001400121C2222210040C1803E00000
01F642:000003E00C181004200226324631400140014001222221C210040C1803E00000
01F64D:0000000003C0042008101008366C500A500A499244224BD24812481200000000
01F64E:0000000003C004200A5014281668100810080990342C43C24812481200000000
01F64F:000000000000000007C00820101016D018302BA845449D728102FFFE00000000
+01F650:0000000000001800180018000870148822042104209820C011200E1800000000
+01F651:0000000000C0012402240208021001300048008401041E041D0800F000000000
+01F652:000000000780085C103C10401080090006400420082012201240018000000000
+01F653:00000000000018700488030419042084204411280E1000180018001800000000
+01F654:0000000001E03A103C0802080108009002600420041004480248018000000000
+01F655:0000000000000E18112020C02098210422041488087018001800180000000000
+01F656:0000000000000018001800180E10112820442084190403040488187000000000
+01F657:00000000030024802440104008400C80120021002080207810B80F0000000000
+01F658:00000000000000700088010001F0360848443424032400C80000000000000000
+01F659:000000000000000000C8032434244844360801F0010000880070000000000000
+01F65A:0000000000001C00220001001F0020D844244858498026000000000000000000
+01F65B:0000000000000000260049804858442420D81F00010022001C00000000000000
+01F65C:00000000001C006C0080010039F03E7C4C063646032601E600CC001000000000
+01F65D:00000000001000CC01E6032636464C063E7C39F001000080006C001C00000000
+01F65E:00000000001000CC01E6032636464C063E7C39F001000080006C001C00000000
+01F65F:00000000001C006C0080010039F03E7C4C063646032601E600CC001000000000
+01F660:00000000000038002400223012080B841C422402420241024484387800000000
+01F661:000000000000387844844102420224021C420B84120822302400380000000000
+01F662:000000000000001C00240C44104821D0423840244042408221221E1C00000000
+01F663:0000000000001E1C2122408240424024423821D010480C440024001C00000000
+01F664:00000000000078006400623032181B8C1DC634266206618E7CFC387800000000
+01F665:00000000000038787CFC618E620634261DC61B8C321862306400780000000000
+01F666:000000000000001E00260C46184C31D863B8642C604671863F3E1E1C00000000
+01F667:0000000000001E1C3F3E71866046642C63B831D8184C0C460026001E00000000
+01F668:00000000701C48244444228812900D6003800D601290228844444824701C0000
+01F669:0000FFFE8FE2A7CA9392CBA6E38EFD7EFEFEFD7EE38ECBA69392A7CA8FE2FFFE
+01F66A:00000000783C4C6446C4628C32981EF002801EF03298628C46C44C64783C0000
+01F66B:0000FFFE87C2A38A91128922C106E10EFFFEE10EC10689229112A38A87C2FFFE
+01F66C:000000000010000800C401441FE42838483C28381FE4014400C4000800100000
+01F66D:0000000001000280044007C0044004400C6014501C7007C0438423881D700000
+01F66E:0000000010002000460045004FF03828782438284FF045004600200010000000
+01F66F:000000001D702388438407C01C7014500C600440044007C00440028001000000
+01F670:000000000000000000000CC21332212C412042207C6040A023201C2000000000
+01F671:000000000000000001E00EF2173A233C43304E307C7040B063B03F301C000000
+01F672:000000001E0020002000200010000FFC10602060206020A011200E2000000000
+01F673:000000001E0030006000600070003FFC10602060606060E071603F601E600000
+01F674:0000000007000D800D800D8007000F1C1B8839C838F03C781FDC0F8000000000
+01F675:000000001C0022042202140218FC25104210411040A2404220A21F1C00000000
+01F676:00003366CCEEEEEE0000000000000000
+01F677:00007777773366CC0000000000000000
+01F678:000000000000000000007777773366CC
+01F679:0000000003000FE01370233823380338037003E0038003000300000003000300
+01F67A:0000000002000F80124022202220022002400280030002000200000002000000
+01F67B:00000000018007F01FF8399C318C019C01B801F001E001C00180000001800180
+01F67C:0000000001F801F803F003F007E007E00FC00FC01F801F803F003F0000000000
+01F67D:000000003F003F001F801F800FC00FC007E007E003F003F001F801F800000000
+01F67E:00FF00FF00FF00FF00FF00FF00FF00FFFF00FF00FF00FF00FF00FF00FF00FF00
+01F67F:00FF00FF00FF00FF00FF00FF00FF00FFFF00FF00FF00FF00FF00FF00FF00FF00
01F680:000078004600413040C820442026113808A00C4813A411030948062402120010
01F681:00000000000000007FC004001F0C2392419241FA7FFA3F921F12090C7FE00000
01F682:0000000018003C003C3F183C19BC3FFF7FFF7FF32DAD525EBFFE124C00000000
01F771:00000000000000001FF8181814281248118811881248142818181FF800000000
01F772:00000000000000003F180224042408481C7002480188418822B01D0001000000
01F773:000000000000000000303C48084810903CE0091012103C900A6012000C000000
+01F780:000000000000004000C001C003C007C00FC007C003C001C000C0004000000000
+01F781:0000000000000100038007C00FE01FF03FF80000000000000000000000000000
+01F782:00000000000008000C000E000F000F800FC00F800F000E000C00080000000000
+01F783:000000000000000000000000000000003FF81FF00FE007C00380010000000000
+01F784:000000000000183C3C18000000000000
+01F785:000003C00C3010082004200440024002400240022004200410080C3003C00000
+01F786:000003C00FF01838300C30046006600660066006200C300C1C180FF003C00000
+01F787:000003C00FF01FF83C3C381C700E700E700E700E381C3C3C1FF80FF003C00000
+01F788:000003C00FF01FF83FFC3E7C7C3E781E781E7C3E3E7C3FFC1FF80FF003C00000
+01F789:000003C00FF01FF83FFC3FFC7E7E7C3E7C3E7E7E3FFC3FFC1FF80FF003C00000
+01F78A:000003C00C30100820042004418243C243C241822004200410080C3003C00000
+01F78B:000003C00C30100823C4242449924A524A524992242423C410080C3003C00000
+01F78C:00000000000000303000000000000000
+01F78D:00000000000000383838000000000000
+01F78E:00007FFE4002400240024002400240024002400240024002400240027FFE0000
+01F78F:00007FFE7FFE60066006600660066006600660066006600660067FFE7FFE0000
+01F790:00007FFE7FFE7FFE700E700E700E700E700E700E700E700E7FFE7FFE7FFE0000
+01F791:00007FFE7FFE7FFE7FFE781E781E781E781E781E781E7FFE7FFE7FFE7FFE0000
+01F792:00007FFE7FFE7FFE7FFE7FFE7C3E7C3E7C3E7C3E7FFE7FFE7FFE7FFE7FFE0000
+01F793:00007FFE7FFE7FFE7FFE7FFE7FFE7E7E7E7E7FFE7FFE7FFE7FFE7FFE7FFE0000
+01F794:00007FFE4002400240024002400241824182400240024002400240027FFE0000
+01F795:00007FFE40024002400247E247E247E247E247E247E24002400240027FFE0000
+01F796:00007FFE400240024FF24812481249924992481248124FF2400240027FFE0000
+01F797:00000000000000103810000000000000
+01F798:00000000000010387C38100000000000
+01F799:000000000010387CFE7C381000000000
+01F79A:0000000001000280044008201110238847C42388111008200440028001000000
+01F79B:000000000100028004400920139027C84FE427C8139009200440028001000000
+01F79C:0000000001000280044008201110228844442288111008200440028001000000
+01F79D:00000000000010103810100000000000
+01F79E:00000000001010387C38101000000000
+01F79F:000000101038387CFE7C383810100000
+01F7A0:000002000200050008800A80124027204F90272012400A800880050002000200
+01F7A1:000000000100010001000100010001007FFC0100010001000100010001000000
+01F7A2:00000000030003000300030003007FF87FF80300030003000300030000000000
+01F7A3:00000000038003800380038003807FFC7FFC7FFC038003800380038003800000
+01F7A4:0000000007800780078007807FF87FF87FF87FF8078007800780078000000000
+01F7A5:0000000007C007C007C007C07FFC7FFC7FFC7FFC7FFC07C007C007C007C00000
+01F7A6:000000000FC00FC00FC07FF87FF87FF87FF87FF87FF80FC00FC00FC000000000
+01F7A7:000000000FE00FE00FE07FFC7FFC7FFC7FFC7FFC7FFC7FFC0FE00FE00FE00000
+01F7A8:0000000040042008101008200440028001000280044008201010200840040000
+01F7A9:00006006300C18180C30066003C0018003C006600C301818300C600640020000
+01F7AA:00000000600C701C38381C700EE007C0038007C00EE01C703838701C600C0000
+01F7AB:0000700E781E3C3C1E780FF007E003C007E00FF01E783C3C781E700E60060000
+01F7AC:00000000701C783C7C7C3EF81FF00FE007C00FE01FF03EF87C7C783C701C0000
+01F7AD:0000781E7C3E7E7E3FFC1FF80FF007E00FF01FF83FFC7E7E7C3E781E700E0000
+01F7AE:00000000783C7C7C7EFC7FFC3FF81FF00FE01FF03FF87FFC7EFC7C7C783C0000
+01F7AF:000000000100010001000100610C1D7003800280044004400820101020080000
+01F7B0:0000000001800180018061867DBE1FF803C003C0066006600C301818300C6006
+01F7B1:0000000003800380C386E38E7FFC7FFC1FF007C00EE00EE01C703838701CE00E
+01F7B2:0000000003C0C3C7E3CFFFFF7FFE3FF81FF007E007E00FF01E783C3C781EF00F
+01F7B3:0000038007C0C7C6E7CEFFFE7FFC7FFC3FF81FF01EF03C787C7CF83EF01FE00F
+01F7B4:000003C0C7E3E7EFFFFFFFFFFFFF7FFC3FF80FF00FF01FF83FFC7E7EFC3FF81F
+01F7B5:0000010001008102610C193007C0038007C01930610C81020100010001000000
+01F7B6:000001808181E187799E1FF807E003C007E01FF8799EE1878181018001800000
+01F7B7:000003808382E38EFBBE7FFC1FF007C01FF07BFCFBBEE38E8382038003800000
+01F7B8:000083C1E3C3FBCFFFFF7FFC1FF007E01FF87FFEFFFFFBDFE3C783C103C00000
+01F7B9:000087C2E7CEFFFEFFFEFFFE7FFC1FF07FFCFFFEFFFEFFFEE7CE87C207C00000
+01F7BA:8001E7E3FFEFFFFFFFFFFFFF7FFC1FF87FFEFFFFFFFFFFFFFFFFE7E787E10000
+01F7BB:000000004104210811100920054003807FFC0380054009201110210841040000
+01F7BC:000000006186318C19980DB007E07FFE7FFE07E00DB01998318C618641820000
+01F7BD:00000000638C739C3BB81FF00FE07FFC7FFC7FFC0FE01FF03BB8739C638C0000
+01F7BE:0000000073CE7BDE3FFC1FF87FFE7FFE7FFE7FFE1FF83FFC7BDE73CE63C60000
+01F7BF:0000E7CEF7DEFFFE7FFC3FF8FFFEFFFEFFFEFFFEFFFE3FF87FFCFFFEF7DEE7CE
+01F7C0:0000000001000100010001000380038007C00EE01C7030184004000000000000
+01F7C1:00000000018001800180018003C003C007E00E70381C700E4002000000000000
+01F7C2:00000100038003800380038007C00FE01FF07FFCFC7EE00E8002000000000000
+01F7C3:000001000300058005C009E009E005C003F01EC83EE43AF4727C641C78000000
+01F7C4:00000000010001000100038003800FE07FFC0FE0038003800100010001000000
+01F7C5:00000000010001000380038007C01FF07FFC1FF007C003800380010001000000
+01F7C6:000000000100038003C007C01FF03FF87FFC3FF81FF007C007C0038001000000
+01F7C7:000000000100038002C006C018B03F887FFC23F81B3007400740038001000000
+01F7C8:00000100038005C004E004E018B83F84FFFF21FC1D180720072003A001C00080
+01F7C9:00000000000001000100038003807FFC1FF0038006C006C00C60183030180000
+01F7CA:000000000180018003C063C67FFE1FF80FF007E007E00E701C38381C700E0000
+01F7CB:0000000001000100038067CC3FF81FF00FE01FF03FF867CC0380010001000000
+01F7CC:000000000100038007C07FFC3FF81FF00FE01FF03FF87FFC07C0038001000000
+01F7CD:000000000100028006C07CFC3FD811100DE0171031D87E7C06C0028001000000
+01F7CE:00000000410421081BB01FF00FE01FF07FFC1FF00FE01FF01BB0210841040000
+01F7CF:00000000610C739C3FF81FF01FF03FF87FFC3FF81FF01FF03FF8739C610C0000
+01F7D0:00000100038007C01FF01FF03FF87FFCFFFE7FFC3FF81FF01FF007C003800100
+01F7D1:00000100028006C01EF016D03BB87D7C87C27D7C3BB816D01EF006C002800100
+01F7D2:0000000001001110092027C81FF00FE07FFC0FE01FF027C80920111001000000
+01F7D3:0000000001001BB01FF02FE81FF03FF87FFC3FF81FF02FE81FF01BB001000000
+01F7D4:0000000001001AB016D03AB817D0393847C4393817D03AB816D01AB001000000
+01F800:000000000000000000000000100030007FFE3000100000000000000000000000
+01F801:00000100038007C0010001000100010001000100010001000100010000000000
+01F802:0000000000000000000000000008000C7FFE000C000800000000000000000000
+01F803:0000010001000100010001000100010001000100010007C00380010000000000
+01F804:00000000000004000C001C003C007FFE7FFE3C001C000C000400000000000000
+01F805:0000018003C007E00FF01FF80180018001800180018001800180018000000000
+01F806:000000000000002000300038003C7FFE7FFE003C003800300020000000000000
+01F807:0000018001800180018001800180018001801FF80FF007E003C0018000000000
+01F808:0000000000000100030007000F001FFC3FFC1FFC0F0007000300010000000000
+01F809:000000000100038007C00FE01FF03FF803800380038003800380038000000000
+01F80A:000000000000008000C000E000F03FF83FFC3FF800F000E000C0008000000000
+01F80B:000000000380038003800380038003803FF81FF00FE007C00380010000000000
+01F810:000000000000000000000800180038007FFE3800180008000000000000000000
+01F811:00000100038007C00FE001000100010001000100010001000100010000000000
+01F812:0000000000000000000000100018001C7FFE001C001800100000000000000000
+01F813:00000100010001000100010001000100010001000FE007C00380010000000000
+01F814:00000000000000000000100030007FFE7FFE3000100000000000000000000000
+01F815:0000018003C007E0018001800180018001800180018001800180018000000000
+01F816:000000000000000000000008000C7FFE7FFE000C000800000000000000000000
+01F817:0000018001800180018001800180018001800180018007E003C0018000000000
+01F818:0000000000000000020006000E001FFC3FFC1FFC0E0006000200000000000000
+01F819:000000000100038007C00FE01FF0038003800380038003800380038000000000
+01F81A:00000000000000000040006000703FF83FFC3FF8007000600040000000000000
+01F81B:0000000003800380038003800380038003801FF00FE007C00380010000000000
+01F81C:00000000000000800180038007800FF81FF80FF8078003800180008000000000
+01F81D:000000000100038007C00FE01FF03FF803800380038003800000000000000000
+01F81E:0000000000000100018001C001E01FF01FF81FF001E001C00180010000000000
+01F81F:000000000000000003800380038003803FF81FF00FE007C00380010000000000
+01F820:000000000000000004000C001C003C007FFE3C001C000C000400000000000000
+01F821:00000100038007C00FE01FF00100010001000100010001000100010000000000
+01F822:0000000000000000002000300038003C7FFE003C003800300020000000000000
+01F823:0000010001000100010001000100010001001FF00FE007C00380010000000000
+01F824:00000000000000000800180038007FFE7FFE3800180008000000000000000000
+01F825:0000018003C007E00FF001800180018001800180018001800180018000000000
+01F826:000000000000000000100018001C7FFE7FFE001C001800100000000000000000
+01F827:00000180018001800180018001800180018001800FF007E003C0018000000000
+01F828:0000000000000000000004000C001FFC3FFC1FFC0C0004000000000000000000
+01F829:000000000100038007C00FE00380038003800380038003800380038000000000
+01F82A:00000000000000000000002000303FF83FFC3FF8003000200000000000000000
+01F82B:00000000038003800380038003800380038003800FE007C00380010000000000
+01F82C:0000000000000000000004000FFC1FFC3FFC1FFC0FFC04000000000000000000
+01F82D:000000000100038007C00FE007C007C007C007C007C007C007C007C000000000
+01F82E:0000000000000000000000203FF03FF83FFC3FF83FF000200000000000000000
+01F82F:0000000007C007C007C007C007C007C007C007C00FE007C00380010000000000
+01F830:000000000000020006000E001FFE3FFE7FFE7FFE3FFE1FFE0E00060002000000
+01F831:0000018003C007E00FF01FF83FFC07E007E007E007E007E007E007E000000000
+01F832:0000000000000040006000707FF87FFC7FFE7FFE7FFC7FF80070006000400000
+01F833:000007E007E007E007E007E007E007E03FFC1FF80FF007E003C0018000000000
+01F834:000000000000000000000FFE1FFE3FFE7FFE3FFE1FFE0FFE0000000000000000
+01F835:00000100038007C00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE000000000
+01F836:000000000000000000007FF07FF87FFC7FFE7FFC7FF87FF00000000000000000
+01F837:00000FE00FE00FE00FE00FE00FE00FE00FE00FE00FE007C00380010000000000
+01F838:000000000008183E7E3E180800000000
+01F839:0000000000081C3E7F1C1C0000000000
+01F83A:000000000010187C7E7C181000000000
+01F83B:0000000000001C1C7F3E1C0800000000
+01F83C:000000000008183C7C3C180800000000
+01F83D:0000000000081C3E7F1C000000000000
+01F83E:000000000010183C3E3C181000000000
+01F83F:000000000000001C7F3E1C0800000000
+01F840:000000000080018003E007E00FE01FE03FE01FE00FE007E003E0018000800000
+01F841:0000000000000100038007C00FE01FF03FF80FE00FE000000000000000000000
+01F842:000000000100018007C007E007F007F807FC07F807F007E007C0018001000000
+01F843:000000000000000000000FE00FE03FF81FF00FE007C003800100000000000000
+01F844:000000000000020006000FFE1FFE3FFE7FFE3FFE1FFE0FFE0600020000000000
+01F845:00000100038007C00FE01FF03FF80FE00FE00FE00FE00FE00FE00FE000000000
+01F846:000000000000004000607FF07FF87FFC7FFE7FFC7FF87FF00060004000000000
+01F847:00000FE00FE00FE00FE00FE00FE00FE03FF81FF00FE007C00380010000000000
+01F850:000000000000000000000800100020007FFE2000100008000000000000000000
+01F851:0000010003800540092001000100010001000100010001000100010000000000
+01F852:000000000000000000000010000800047FFE0004000800100000000000000000
+01F853:0000010001000100010001000100010001000100092005400380010000000000
+01F854:000000003E003000280024002200010000800040002000100008000400000000
+01F855:00000000007C000C001400240044008001000200040008001000200000000000
+01F856:000000002000100008000400020001000080004400240014000C007C00000000
+01F857:00000000000400080010002000400080010022002400280030003E0000000000
+01F858:000000000000000000000810100820047FFE2004100808100000000000000000
+01F859:0000010003800540092001000100010001000100092005400380010000000000
+01F860:000000000000020004000800100020007FFE2000100008000400020000000000
+01F861:0000010003800540092011102108010001000100010001000100010000000000
+01F862:000000000000004000200010000800047FFE0004000800100020004000000000
+01F863:0000010001000100010001000100010021081110092005400380010000000000
+01F864:000000003FC03000280024002200210020802040002000100008000400000000
+01F865:0000000003FC000C001400240044008401040204040008001000200000000000
+01F866:000000002000100008000400020401040084004400240014000C03FC00000000
+01F867:00000000000400080010002020402080210022002400280030003FC000000000
+01F868:000000000000038007000E001C003FFE7FFE3FFE1C000E000700038000000000
+01F869:00000100038007C00FE01FF03BB8339823880380038003800380038000000000
+01F86A:00000000000001C000E0007000387FFC7FFE7FFC0038007000E001C000000000
+01F86B:000003800380038003800380238833983BB81FF00FE007C00380010000000000
+01F86C:000000003FC03FE03C003E003700338031C030E010700038001C000800000000
+01F86D:0000000003FC07FC003C007C00EC01CC038C070C0E081C003800100000000000
+01F86E:00000000100038001C000E08070C038C01CC00EC007C003C07FC03FC00000000
+01F86F:000000000008001C0038107030E031C0338037003E003C003FE03FC000000000
+01F870:00000000038007000E001C003FFE7FFE7FFE3FFE1C000E000700038000000000
+01F871:0000018003C007E00FF01FF83BDC33CC23C403C003C003C003C003C000000000
+01F872:0000000001C000E0007000387FFC7FFE7FFE7FFC0038007000E001C000000000
+01F873:000003C003C003C003C003C023C433CC3BDC1FF80FF007E003C0018000000000
+01F874:00003F807FC07FE07E007F00778073C071E030F01078003C001E000C00080000
+01F875:000001FC03FE07FE007E00FE01EE03CE078E0F0C1E083C007800300010000000
+01F876:00001000300078003C001E080F0C078E03CE01EE00FE007E07FE03FE01FC0000
+01F877:00000008000C001E003C107830F071E073C077807F007E007FE07FC03F800000
+01F878:0000000001E003C007800F001FFE3FFE7FFE3FFE1FFE0F00078003C001E00000
+01F879:00000100038007C00FE01FF03FF87FFC77DC67CC47C407C007C007C000000000
+01F87A:00000000078003C001E000F07FF87FFC7FFE7FFC7FF800F001E003C007800000
+01F87B:000007C007C007C047C467CC77DC7FFC3FF81FF00FE007C00380010000000000
+01F87C:00003F807FC07FE07E007F007F8077C073E031F010F8007C003E001C00080000
+01F87D:000001FC03FE07FE007E00FE01FE03EE07CE0F8C1F083E007C00380010000000
+01F87E:0000100038007C003E001F080F8C07CE03EE01FE00FE007E07FE03FE01FC0000
+01F87F:00000008001C003E007C10F831F073E077C07F807F007E007FE07FC03F800000
+01F880:000000F001E003C007800FFE1FFE3FFE7FFE3FFE1FFE0FFE078003C001E000F0
+01F881:00000100038007C00FE01FF03FF87FFCFFFEEFEECFE68FE20FE00FE000000000
+01F882:00000F00078003C001E07FF07FF87FFC7FFE7FFC7FF87FF001E003C007800F00
+01F883:00000FE00FE08FE2CFE6EFEEFFFE7FFC3FF81FF00FE007C00380010000000000
+01F884:00007FC07FE07FF07FF87FC07FE07FF07FF87FFC3BFE19FC08F8007000200000
+01F885:000003FE07FE0FFE1FFE03FE07FE0FFE1FFE3FFE7FDC3F981F100E0004000000
+01F886:000004000E001F103F987FDC3FFE1FFE0FFE07FE03FE1FFE0FFE07FE03FE0000
+01F887:00000020007008F819FC3BFE7FFC7FF87FF07FE07FC07FF87FF07FE07FC00000
+01F890:00000000000002060E06020000000000
+01F891:000000000000000000000010387C0000
+01F892:00000000000040607060400000000000
+01F893:0000007C381000000000000000000000
+01F894:000000000000000800180038006800C8018000C8006800380018000800000000
+01F895:000000000000000000000000000000000100038006C00C6018303EF800000000
+01F896:000000000000100018001C00160013000180130016001C001800100000000000
+01F897:000000003EF818300C6006C00380010000000000000000000000000000000000
+01F898:000000000000020006000E001FFE3FFC7FF83FFC1FFE0E000600020000000000
+01F899:00000100038007C00FE01FF03FF807C007C007C007C007C006C0044000000000
+01F89A:0000000000000040006000707FF83FFC1FFE3FFC7FF800700060004000000000
+01F89B:0000044006C007C007C007C007C007C03FF81FF00FE007C00380010000000000
+01F89C:00000000000000FFFFFF000000000000
+01F89D:000000000000007E7E7E000000000000
+01F89E:000000000000003C3C3C000000000000
+01F89F:00000000000000181818000000000000
+01F8A0:000000000000020006000BFE10022002700238021FFE0FFE0600020000000000
+01F8A1:000000000000004000607FD040084004400E401C7FF87FF00060004000000000
+01F8A2:000000000000020006000FFE1FFE38027002200210020BFE0600020000000000
+01F8A3:000000000000004000607FF07FF8401C400E400440087FD00060004000000000
+01F8A4:000000000000020006000FFE1C023802700238021C020FFE0600020000000000
+01F8A5:000000000000004000607FF04038401C400E401C40387FF00060004000000000
+01F8A6:000000000000020006000FFE1BFE3006600630061BFE0FFE0600020000000000
+01F8A7:000000000000004000607FF07FD8600C6006600C7FD87FF00060004000000000
+01F8A8:000000000000000004000A0011F02008700439FC1FFE0E000600020000000000
+01F8A9:0000000000000000002000500F881004200E3F9C7FF800700060004000000000
+01F8AA:0000000000000000020006000E001FFE39FC7004200811F00A00040000000000
+01F8AB:00000000000000000040006000707FF83F9C200E10040F880050002000000000
+01F8AC:0000000000FF8181818181FF00000000
+01F8AD:00000000007E42424242427E00000000
(at your option) a later version, with the GNU Font Embedding Exception."
UNICODE_VERSION = 7.0
-PKG_REV = 05
+PKG_REV = 06
VERSION = $(UNICODE_VERSION).$(PKG_REV)
#
SHELL = /bin/sh
BINDIR = ../bin
+GZFLAGS = -f -9 -n
#
# assembly date of this version
#
UNICODE_VERSION = 7.0
-PKG_REV = 05
+PKG_REV = 06
VERSION = $(UNICODE_VERSION).$(PKG_REV)
COPYRIGHT = "Copyright (C) 2013 Paul Hardy. \
< hangul-base.hex | \
sed -e "s/[Ii][Ss][Oo]10646/Johab/g" >hangul-base.bdf
bdftopcf < hangul-base.bdf > hangul-base.pcf
- gzip -f -9 hangul-base.pcf
+ gzip $(GZFLAGS) hangul-base.pcf
$(BINDIR)/johab2ucs2 < hangul-base.bdf > hangul-syllables.hex
# Convert the .hex file containing all Unicode Hangul Syllables
SHELL = /bin/sh
+GZFLAGS = -f -9 -n
MAN1PAGES = bdfimplode.1 hex2bdf.1 hex2sfd.1 \
hexbraille.1 hexdraw.1 hexmerge.1 hexkinya.1 johab2ucs2.1 \
unibdf2hex.1 unibmp2hex.1 unicoverage.1 unidup.1 \
- unifontpic.1 unifontchojung.1 unifontksx.1 unifont-viewer.1 \
- unigencircles.1 unigenwidth.1 unihex2bmp.1 unihex2png.1 unihexgen.1 \
- unihexfill.1 unipagecount.1 unipng2hex.1
+ unifontpic.1 unifontchojung.1 unifontksx.1 unigencircles.1 \
+ unigenwidth.1 unihex2bmp.1 unihex2png.1 unihexgen.1 \
+ unihexfill.1 unipagecount.1 unipng2hex.1 unifont-viewer.1
MAN5PAGES = unifont.5
if [ $(COMPRESS) = 0 ] ; then \
install -m0644 $(MAN1PAGES) $(INSTALLDIR)/man1 ; \
else \
- gzip -f -9 < $$i >$$i.gz ; \
- chmod 644 $$i.gz ; \
+ gzip $(GZFLAGS) < $$i >$$i.gz && \
+ chmod 644 $$i.gz && \
mv $$i.gz $(INSTALLDIR)/man1 ; \
fi \
done
if [ $(COMPRESS) = 0 ] ; then \
install -m0644 $(MAN5PAGES) $(INSTALLDIR)/man5 ; \
else \
- gzip -f -9 < $$i >$$i.gz ; \
- chmod 644 $$i.gz ; \
+ gzip $(GZFLAGS) < $$i >$$i.gz && \
+ chmod 644 $$i.gz && \
mv $$i.gz $(INSTALLDIR)/man5 ; \
fi \
done
SHELL = /bin/sh
-CFLAGS = -g -O -Wall
+CFLAGS = -g -O2 -Wall
LOCALBINDIR = ../bin
# only used for generation of Hangul syllables.
#
PPROGS = bdfimplode hex2bdf hex2sfd hexbraille hexdraw hexkinya hexmerge \
- johab2ucs2 unifont-viewer unifontchojung unifontksx unihex2png \
- unihexfill unipng2hex
+ johab2ucs2 unifontchojung unifontksx unihex2png unihexfill \
+ unipng2hex unifont-viewer
PROGS = $(CPROGS) $(PPROGS)
bin: bin-stamp
-bin-stamp: $(CPROGS) $(PPROGS)
+bin-stamp: $(CPROGS) $(PPROGS) $(PNGPROGS)
install -m0755 -d $(LOCALBINDIR)
- install -m0755 $? $(LOCALBINDIR)
+# install -m0755 $? $(LOCALBINDIR)
+ install -s -m0755 $(CPROGS) $(LOCALBINDIR)
+ install -m0755 $(PPROGS) $(LOCALBINDIR)
\rm -f $(CPROGS)
touch $@
-# install -s -m0755 $(CPROGS) $(LOCALBINDIR)
-# install -m0755 $(PPROGS) $(LOCALBINDIR)
install:
if [ x$(PREFIX) = x ] ; \
then \
- echo "Fatal error: PREFIX directory is not defined." ; \
- echo "Run 'make install' from top-level directory" ; \
+ echo "Fatal error: PREFIX directory is not defined." && \
+ echo "Run 'make install' from top-level directory" && \
exit 1 ; \
fi
install -m0755 -d $(INSTALLDIR)
- set -e ; \
- cd $(LOCALBINDIR) ; \
+ set -e && \
+ cd $(LOCALBINDIR) && \
install -s -m0755 $(CPROGS) $(INSTALLDIR)
- set -e ; \
- cd ../bin ; \
+ set -e && \
+ cd ../bin && \
install -m0755 $(PPROGS) $(INSTALLDIR)
#
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-if (/^ENCODING\s+(\d+)/) { printf ("%04X:", $1); }
+if (/^ENCODING\s+(\d+)/) { printf ("%04X:", $1) or die ("Cannot print to stdout.\n"); }
elsif (/^BITMAP/) { $BITMAP=1; }
-elsif (/^ENDCHAR/) { $BITMAP=0; print "\n"; }
-elsif ($BITMAP) { y/a-f/A-F/; s/\n$//; print; }
+elsif (/^ENDCHAR/) { $BITMAP=0; print "\n" or die ("Cannot print to stdout.\n"); }
+elsif ($BITMAP) { y/a-f/A-F/; s/\n$//; print or die ("Cannot print to stdout.\n"); }
FONT_DESCENT 2
DEFAULT_CHAR 65533
ENDPROPERTIES
-CHARS $nchars\n";
+CHARS $nchars\n" or die ("Cannot print to stdout.\n");
# TODO: $swidth needs to be modified to accomodate different widths better
# for glyphs with height different than 16 pixels.
DWIDTH $dwidth 0
BBX $dwidth $vpixels 0 -2
BITMAP $glyph
-ENDCHAR\n";
+ENDCHAR\n" or die ("Cannot print to stdout.\n");
}
-print "ENDFONT\n";
+print "ENDFONT\n" or die ("Cannot print to stdout.\n");
push (@combining, 0);
}
if ($#ARGV < 0) {
- open (A, "<", "combining.txt");
+ open (A, "<", "combining.txt") or die ("Cannot open combining.txt.\n");
}
else {
- open (A, "<", $ARGV[0]);
+ open (A, "<", $ARGV[0]) or die ("Cannot open specified combining file for input.\n");
}
$maxcombining = 0;
while (<A>) {
$maxcombining = $codepoint;
}
}
-close (A);
+close (A) or die ("Cannot properly close combining input file.\n");
$nglyphs = 0; # number of glyphs in font (none defined yet)
@codepoints = (); # code points of hex bitmaps
$ascent = 16 * $pixel - $descent;
$bitmask = 25; # round in x (doesn't really work), corner point selected
-print << "END";
+print << "END" or die ("Cannot print to stdout.\n");
SplineFontDB: 1.0
FontName: unifont
FullName: GNU Unifont
# $count++;
# }
-print << "END";
+print << "END" or die ("Cannot print to stdout.\n");
EndChars
EndSplineFont
END
$cn = -1;
}
# Changed "Flags: H" to "Flags: HW" to fix spaces - Paul Hardy, 2008
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
StartChar: $charname
Encoding: $cn $cn $count
Width: $ptwidth
} else {
if($prev) {
$x2=$x * $pixel + $pixel;
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
$x1 $y1 m $bitmask
$x1 $y2 l $bitmask
$x2 $y2 l $bitmask
}
if($prev) {
$x2=0;
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
$x1 $y1 m $bitmask
$x1 $y2 l $bitmask
$x2 $y2 l $bitmask
END
}
}
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
EndSplineSet
EndChar
END
$c & 64 ? 3 : 2, $c & 128 ? 6 : 2,
$c & 64 ? 3 : 0, $c & 128 ? 6 : 0
- );
+ ) or die ("Cannot print to stdout.\n");
}
for ($m = 0; $m < 8 ; $m++) {
for ($f = 0; $f < 22 ; $f++) {
$c = ($i * 176) + ($m * 22) + $f + 0xF0000;
- printf ("%06X:%s%s%s\n", $c, substr ($init[$i], 0, 10), substr ($medi[$m], 10, 10), substr ($fina[$f], 20, 12));
+ printf ("%06X:%s%s%s\n", $c, substr ($init[$i], 0, 10), substr ($medi[$m], 10, 10), substr ($fina[$f], 20, 12)) or die ("Cannot print to stdout.\n");
}
}
}
for (sort keys %G)
{
- print "$_:$G{$_}\n";
+ print "$_:$G{$_}\n" or die ("Cannot print to stdout.\n");
}
# hexmerge taipei16.hex cns-2-16.hex jisksp16.hex jiskan16.hex
$medial = int($j / 28 ) % 21+1 ;
$final = $j % 28;
- printf ("%04X:%64s\n", $j+0xAC00, &compose_hangul($init,$medial,$final));
+ printf ("%04X:%64s\n", $j+0xAC00, &compose_hangul($init,$medial,$final)) or die ("Cannot print to stdout.\n");
}
for ( $i = 0; $i < 32; $i++) {
$bit[$i]=sprintf("%02X",
- hex($l_bit[$i]) | hex($m_bit[$i]) | hex($f_bit[$i]) );
+ hex($l_bit[$i]) | hex($m_bit[$i]) | hex($f_bit[$i]) ) or die ("Cannot print to stdout.\n");
}
return pack("a2" x 32, @bit );
my ($input) = @_;
my %hexlist = ();
- open (HEXFILE, "$input") or die ("Cannot open file\n");
+ open (HEXFILE, "$input") or die ("Cannot open hex file for input\n");
while (<HEXFILE>) {
chomp;
my %hexlist = %$hexlist_ref;
if ($pagenum > 0x10FF) {
- die ("Invalid page\n");
+ die ("Invalid page.\n");
}
my $charxoffset = 4;
$ymax = 3;
$charmaxwidth = 8;
} else {
- die ("Invalid height\n");
+ die ("Invalid height.\n");
}
# Create box and set as tile pattern
my ($self, $gd) = @_;
my $png = $gd->png;
- open my $fh, '<', \$png;
+ open my $fh, '<', \$png or die ("Cannot create PNG file for viewing.\n");
my $handler = Wx::PNGHandler->new ();
my $image = Wx::Image->new ();
my $bitmap;
$handler->LoadFile ($image, $fh);
- close $fh;
+ close $fh or die ("Cannot properly close output file.\n");
$bitmap = Wx::Bitmap->new ($image);
if ($bitmap->Ok ()) {
$self->{filename} = $dlg->GetPath ();
$self->SetTitle ("Unifont Viewer - " . $dlg->GetFilename ());
- open HEXFILE, "<$self->{filename}" || die "Cannot open $self->{filename}\n";
+ open HEXFILE, "<$self->{filename}" || die "Cannot open $self->{filename}.\n";
while (<HEXFILE>) {
chomp;
$self->{imagepanel}->load_gd ($im);
- open (PICTURE, ">$filename") or die ("Cannot save image\n");
+ open (PICTURE, ">$filename") or die ("Cannot save image.\n");
binmode PICTURE;
- print PICTURE $im->png;
- close PICTURE;
+ print PICTURE $im->png or die;
+ close PICTURE or die ("Cannot properly close output file.\n");
}
}
}
while (<>) {
if (substr($nextchojung, 0, 5) eq substr($_, 0, 5)) {
- print; # this is one of the syllables we're seeking; print it
+ print or die ("Cannot print to stdout.\n"); # this is one of the syllables we're seeking; print it
# Now get next Hangul Syllable to find; if no more, exit.
if ($#chojung < 0) {
exit;
while (<>) {
if (substr($nextksx, 0, 5) eq substr($_, 0, 5)) {
- print; # this is one of the syllables we're seeking; print it
+ print or die ("Cannot print to stdout.\n"); # this is one of the syllables we're seeking; print it
# Now get next Hangul Syllable to find; if no more, exit.
if ($#ksx < 0) {
exit;
);
if ($opt_help) {
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
Turn a GNU Unifont hex glyph page of 256 code points into a PNG file
}
if ($input) {
- open (HEXFILE, "$input") or die ('Cannot open file\n');
+ open (HEXFILE, "$input") or die ('Cannot open hex file for input.\n');
} else {
*HEXFILE = *STDIN;
}
}
# Only close input file handler if it isn't STDIN.
if ($input) {
- close HEXFILE;
+ close HEXFILE or die ("Cannot properly close input file.\n");
}
# Save image
-open (PICTURE, ">$output") or die ("Cannot save image\n");
+open (PICTURE, ">$output") or die ("Cannot save image.\n");
binmode PICTURE;
-print PICTURE $im->png;
-close PICTURE;
+print PICTURE $im->png or die ("Cannot write to picture file.\n");
+close PICTURE or die ("Cannot properly close output file.\n");
# input is a start, stop range pair
# output is a list of code points with hexadecimal filler glyphs
+set -e
grep "^[0-9A-Fa-f]" $1 | \
awk 'NF == 1 {print "unihexgen " $1 " " $1;} \
NF == 2 {print "unihexgen " $1 " " $2;}' | \
);
if ($opt_help) {
- print << "END";
+ print << "END" or die ("Cannot print to stdout.\n");
Turn a .png glyph matrix into a GNU Unifont hex glyph set of 256 characters
#}
GD::Image->trueColor (1);
-$im = new GD::Image ("$input") or die ("Cannot open image\n");
+$im = new GD::Image ("$input") or die ("Cannot open image.\n");
if ($im->isTrueColor ()) {
$im->trueColorToPalette ();
$display_width = $codepoint > 0xFFFF ? 6 : 4;
if ($output) {
- open (HEXFILE, ">$output") or die ("Cannot save file\n");
+ open (HEXFILE, ">$output") or die ("Cannot save hex file.\n");
} else {
*HEXFILE = *STDOUT;
}
$char = $char . sprintf ("%0*X", $charwidth * 2, $line);
}
- print HEXFILE "$char\n";
+ print HEXFILE "$char\n" or die ("Cannot print to hex file.\n");
}
$codepoint += 1;
# Only close HEXFILE if it isn't mapped to STDOUT.
if ($output) {
- close HEXFILE;
+ close HEXFILE or die ("Cannot properly close hex file.\n");
}