font: lower and larger degree sign
[unifont.git] / README
diff --git a/README b/README
index a6148349c23c462ec94f5390a7b2e4dd97bdc13b..ed836aab3c784456d13b87ef1f95efb640e45d74 100644 (file)
--- a/README
+++ b/README
@@ -1,14 +1,15 @@
 
-Subject: Unifont archive version 6.3.20131020
-
-
 OVERVIEW
 --------
 GNU Unifont is an official GNU package.  It is a dual-width
 (8x16/16x16) bitmap font, designed to provide coverage for
 all of Unicode Plane 0, the Basic Multilingual Plane (BMP).
-This version has a glyph for each visible code point in the
-Unicode 6.3 Basic Multilingual Plane (Plane 0).
+
+GNU Unifont has a glyph for each visible code point in the
+Unicode Basic Multilingual Plane (Plane 0) and some glyphs
+in the Supplemental Multilingual Plane (Plane 1).  This version
+also includes many glyphs in Michael Everson's ConScript
+Unicode Registry (CSUR).
 
 Unifont only provides a single glyph for each character, making it
 impossible to handle any language properly that needs context-dependent
@@ -23,27 +24,58 @@ assembled by Paul Hardy with the encouragement of the font's creator,
 Roman Czyborra.  This archive contains the following directories
 and files:
 
-     font       Everything you need to build the font from scratch
+     ChangeLog  Log of changes made to each GNU release
+     COPYING    Full text of GPL version 2
+     doc        Documentation in Texinfo format
+     font       The font source file with scripts for building
      hangul     Standalone font sources to build hangul-syllables.hex
+     INSTALL    Instructions for font and software installation
      Makefile   The "make" file
      man        Unix man pages
+     NEWS       Summary of what's new with each GNU release
      README     This file
      src        Source programs, in Perl and C
-     TUTORIAL   Tutorial for using this package's utilities
 
 The "font/precompiled" directory contains prebuilt font-related files:
 
-     coverage.txt              Percentage coverage of each Plane 0 script
-     unifont-<version>.bmp     The entire Plane 0 font with combining circles
-     unifont-<version>.bdf.gz  BDF version of Unifont
-     unifont-<version>.hex     Hex string source of glyphs to build Unifont
-     unifontall-<version>.hex  Hex string source of all Plane 0 glyphs,
-                               including nonprinting and PUA glyphs
-     unifont-<version>.pcf.gz  PCF version of Unifont
-     unifont-<version>.ttf     TrueType version of Unifont
-
-The original version of this README file was written by David Starner
-and modified by Paul Hardy from 2008 to the present.
+     coverage.txt                     Percentage coverage of Plane 0 scripts
+
+     unifont-<version>.hex            Hex string source of glyphs to build
+                                      Unifont
+     unifont-<version>.bdf.gz         BDF version of Unifont
+     unifont-<version>.pcf.gz         PCF version of Unifont
+     unifont-<version>.ttf            TrueType version of Unifont
+
+     unifont_sample-<version>.hex     Hex string source of all Plane 0 glyphs
+                                      (except those for U+FFFE and U+FFFF),
+                                      including nonprinting and PUA glyphs,
+                                      with combining circles
+     unifont_sample-<version>.bdf.gz  BDF font version of the above .hex file
+     unifont_sample-<version>.ttf     SBIT font version of the above .hex file
+
+     unifont_csur-<version>.*         Fonts containing Plane 0 Unifont glyphs
+                                      plus glyphs for Michael Everson's
+                                      ConScript Unicode Registry (CSUR) for
+                                      the Plane 0 Private Use Area
+
+     unifont_upper-<version>.*        Fonts containing glyphs from Unicode
+                                      Plane 1 through Plane 14, inclusive
+
+     unifont_upper_csur-<version>.*   Fonts containing glyphs from Unifont
+                                      Upper plus glyphs from Michael Everson's
+                                      ConScript Unicode Registry (CSUR) that
+                                      are in the Private Use Area in Plane 15
+
+     unifont-<version>.bmp            The entire Plane 0 Unifont font with
+                                      combining circles, built from the files
+                                      font/plane00/*.hex, showing combining
+                                      circles
+
+The directory that was originally named "font/hexsrc" has been renamed
+to "font/plane00" now that Unifont supports glyphs beyond Plane 0.  Higher
+plane glyphs appear in "font/plane01" through "font/plane0F".  Currently
+there is no "font/plane10" directory (the highest Unicode plane is Plane 17,
+or 0x10).
 
 This release incorporates all glyph errata issued by The Unicode Consortium
 from Unicode 1.0 errata to the latest.
@@ -51,168 +83,19 @@ from Unicode 1.0 errata to the latest.
 
 BUILDING
 --------
-To make the binaries from the top directory, type
-
-     make
-
-This will create the directories "./bin", "./lib", and "./font/compiled".
-
-The compiled programs will be in the "./bin" directory.  The ./lib
-directory will contain the file wcwidth.c, to provide an implementation
-of the POSIX wcwidth() and wcswidth() functions.  The font will build,
-placing files in the "font/compiled/" subdirectory.
-
-The default settings will build Unifont with four-digit hexadecimal
-glyphs appearing for unassigned code points, and with no glyphs for
-Private Use Area code points or non-printing code points.  As an
-example, to override these defaults in this top-level directory type
-
-     make UNASSIGNED="" PUA="hexsrc/pua.hex" \
-          NONPRINTING="hexsrc/nonprinting.hex"
-
-To make certain that no unassigned, PUA, or non-printing glyphs are
-included, type
-
-     make UNASSIGNED="" PUA="" NONPRINTING=""
-
-You can similarly build Unifont with your own custom PUA glyphs.
-Just specify where the custom PUA file is, relative to the "font/"
-directory.  Note, though, that unifontpic generates its glyph
-diagram from whatever .hex files are in the "font/hexsrc" directory.
-Therefore, to have custom PUA glyphs be part of this generated
-glyph map, replace "font/hexsrc/pua.hex" with a custom pua.hex file.
-
-Other useful make variables that can be overridden on the command line
-from the top-level Makefile include:
-
-     DESTDIR   - By default, not set; set to an alternate root location
-                 such as "~/tmproot" if desired, but this directory
-                 must already exist.
-     USRDIR    - Set as typically "usr" or "usr/local" for installation
-     PREFIX    - This is just $(DESTDIR)/$(USRDIR) but can be overridden.
-     PKGDEST   - Destination for package files, by default "usr/share"
-                 so that this README file, the TUTORIAL file, etc. will
-                 be installed in "/usr/share/unifont".
-     COMPRESS  - Set to non-zero to compress installed man pages
-
-All of the .hex file names can be replaced selectively on the top-level
-"make" command line.  The list of component hex file variables is:
-
-     UNIFONTBASE - The bulk of Unifont scripts
-     CJK         - Most of the CJK Ideographs
-     HANGUL      - Hangul Syllables block
-     NONPRINTING - Glyphs for non-printing characters
-     SPACES      - Space glyphs, single- and double-width
-     UNASSIGNED  - Glyphs for unassigned code points
-     PUA         - Glyphs for the Private Use Area
-
-To install the binaries, man pages, and Unifont, review the
-destination directories in the Makefiles to verify that the files
-will be installed where you want, and then type
-
-     make install
-
-This installs programs in "/usr/bin" or "/usr/local/bin" (depending
-on the USRDIR setting in the top-level Makefile), installs PCF and
-TrueType fonts in the appropriate places, and places the following
-files in "/usr/share/unifont" or "/usr/local/share/unifont" (again
-depending on the USRDIR setting in the top-level Makefile):
-
-     combining.txt - list of Unicode Plane 0 combining characters
-     LICENSE.gz    - license information for this package
-     README.gz     - this README file
-     TUTORIAL.gz   - tutorial on using the Unifont utilities
-     unifont.hex   - composite Unifont .hex source, used by GRUB1
-     wchardata.c   - implementation of IEEE 1003.1-2008 wcswidth(), wcwidth()
-     wchardata.o   - object file from wchardata.c
-
-Typing "make install" will install font files from "font/compiled/"
-if that directory exists; otherwise it will install font files from
-the "font/precompiled/" directory.
-
-To rebuild what is in the "font/precompiled" directory (which you
-ordinarily you should never do--there would have to be a very good
-reason), remove its files, modify the DATE and VERSION information in
-the top-level Makefile and in "font/Makefile", then type
-
-     make precompiled
-
-from the top-level directory or the "font/" subdirectory.
-
-To just make the fonts, charts, etc. within the "font" directory,
-install the "bdftopcf" program and FontForge as well as performing
-a "make install" to install the Unifont binaries.  Then from the
-top-level directory type
-
-     cd font
-     make
-
-The resulting fonts will be in the "./font/compiled" directory, along
-with bitmap renderings of each glyph.
-
-WARNING: Building the TrueType version of GNU Unifont will require
-anywhere from 256 MBytes to 1 GByte of virtual memory, can require
-almost 250 Megabytes of free disk space during the build, and is best
-run on a decent processor (say 1 GHz clock rate or better).
-
-During the TrueType build, FontForge will monopolize your CPU...plan
-accordingly.
-
-There is no reason to build the font from scratch unless you modify
-the .hex font source files (or must satisfy an insatiable curiosity),
-because the "./font/precompiled" directory already contains pre-built
-BDF, PCF, and TrueType fonts.
-
-To create a custom version of the font with combining circles (such as
-was done to create the large picture of Unifont), enter these commands:
-
-     cd font/ttfsrc
-     sort ../hexsrc/*.hex | \
-          unigencircles combining.txt ../hexsrc/nonprinting.hex > unifont.hex
-     make
-
-When "make" is finished, the ttfsrc directory will contain a "unifont.ttf"
-file which includes the dashed combining circles that the unigencircles
-utility added.  Copy this "unifont.ttf" file to a safe location in a different
-directory with a more descriptive name.  This font is named "unifontcircles"
-in the font distribution.  Then type
-
-     make clean
-
-If you've made a new version of the font, hand-copy the new font file(s)
-to your desired destination.  Otherwise, precompiled PCF and TrueType
-versions of the font will be copied from "./font/precompiled/" into
-$(DESTDIR)/usr/share/fonts.
-
-After font installation, you might need to restart the X Window System
-for the new fonts to be recognized, but first try the command
-
-     xset fp rehash
-
-in a shell (terminal) window.  If that doesn't work, restart the X
-Window System.
-
-To remove intermediate files, from the top-level directory type
-
-     make clean
-
-To remove all created files and leave the directory in its pre-build
-state, from the top-level directory type
-
-     make distclean
-
-That will remove the "./bin" directory, the "./lib" directory, the
-"./font/compiled" directory, and other intermediate files.  Note that
-this command leaves the files in "./font/precompiled" intact, even
-though a prior "make precompiled" command would have rebuilt those files.
+See the "INSTALL" file in this directory for building instructions.
 
 
 src/ AUTHORS
 ------------
-Right now, all the Perl files in the src directory except "hex2sfd",
-"unifontchojung", and "unifontksx" were written by Roman Czyborra (or
-in the case of johab2ucs2, by Jungshik Shin, who then gave it to Roman).
-Roman originally named the "src/hexbraille" script as simply "braille";
+Roman Czyborra wrote all the Perl files in the src directory except
+"hex2sfd", "hexkinya", "unifontchojung", "unifontksx", "unihex2png",
+and "unipng2hex".
+
+In the case of "johab2ucs2", Jungshik Shin wrote the orignial version;
+he then gave it to Roman.  Paul Hardy made further changes to "johab2ucs2".
+
+Roman originally named the "src/hexbraille" script as simply "braille".
 Paul Hardy thought there was too great a chance of a name conflict with
 other utilities, and so renamed it.
 
@@ -220,7 +103,15 @@ Luis Alejandro Gonzalez Miranda wrote the original "hex2sfd" Perl
 script, as well as a "howto-build.sh" shell script that Paul Hardy
 converted into "./font/ttfsrc/Makefile".
 
-All the C programs were written by Paul Hardy.
+Paul Hardy wrote "unifontchojung" and "unifontksx" for extracting subsets
+of Hangul glyphs, as an aid in creating a new Hangul Syllables block.
+
+Andrew Miller wrote "hexkinya".  He also wrote "unihex2png" and "unipng2hex"
+based upon Paul Hardy's "unihex2bmp" and "unibmp2hex" programs.  Last but not
+least, he wrote the "unifont-viewer" Perl script to graphically view a Unifont
+hex file dynamically.
+
+Paul Hardy wrote all the C programs.
 
 
 Unifont AUTHORS
@@ -229,14 +120,14 @@ Roman Czyborra created the original GNU Unifont, including the
 .hex format.  For greater detail, see the HISTORY section below.
 
 David Starner aggregated many glyphs contributed by others and
-built these into pre-2004 Unifont releases.
+incorporated these into pre-2004 Unifont releases.
 
 Qianqian Fang began his Wen Quan Yi font in 2004, by which
 time work on Unifont had stopped.  Most of the almost 30,000
-CJK ideographs in the latest Unifont versions 5.1 and later
-were taken from Wen Quan Yi with permission of Qianqian Fang.
-The glyphs in "./font/hexsrc/wqy-cjk.hex" are for the most part
-Qianqian Fang's Unibit and Wen Quan Yi glyphs.
+CJK ideographs in Unifont versions 5.1 and later were taken
+from Wen Quan Yi with permission of Qianqian Fang.  The glyphs
+in "./font/plane00/wqy-cjk.hex" are for the most part Qianqian
+Fang's Unibit and Wen Quan Yi glyphs.
 
 Paul Hardy drew most of the newly-drawn glyphs added to the BMP
 from the Unifont 5.1 release to the present release.  This includes
@@ -245,6 +136,9 @@ the 11,172 glyphs in the Hangul Syllables block, plus approximately
 
 Andrew Miller drew the glyphs added to Unicode 6.3.0.
 
+For higher planes and the Private Use Area glyphs, see the ChangeLog
+file.
+
 
 LICENSE
 -------
@@ -256,6 +150,11 @@ release is licensed as follows:
      the terms of the GNU General Public License version 2,
      or (at your option) a later version.
 
+GPL version 2 is contained in the "COPYING" file in the main source
+directory for this package.  If your received this source without
+a copy of GPL version 2, you can download a copy from GNU's website
+at http://www.gnu.org/licenses/gpl-2.0.html.
+
 The license for the compiled fonts is covered by the above GPL terms
 with the GNU font embedding exception, as follows:
 
@@ -286,33 +185,20 @@ and found to be correct:
 
      Unicode 1.1: U+717F, U+773E, U+809C, U+8480, U+908E
 
-Three new utility programs have also been added:
-
-   - unifontpic - creates a bitmapped graphics (.bmp) file of the entire
-     Basic Multilingual Plane (Plane 0), by default in a 256-by-256
-     glyph grid for ease of printing, and optionally in a 16-by-4096 glyph
-     grid for easier scrolling on a screen, for software that can handle
-     a .bmp file with over 64k pixel rows (not all software can).  The
-     256-by-256 glyph grid can be scaled to print on a piece of paper
-     approximately 3 feet by 3 feet (or one meter by one meter).
+Andrew Miller drew the 5 new additions to the Unicode 6.3.0 Basic
+Multilingual Plane in the initial Unifont 6.3 release.
 
-   - unigencircles - adds dashed combining circles to unifont.hex glyphs
-     for code points that are in "font/ttfsrc/combining.txt" but not in
-     "font/hexsrc/nonprinting.hex".
+The latest Unifont 6.3 release includes these glyph changes by Paul Hardy:
 
-   - unigenwidth - creates an implementation of the POSIX functions
-     wcwidth() and wcswidth() as specified in IEEE 1003.1-2008, Vol. 2:
-     System Interfaces, Issue 7, pages 2251 and 2241, respectively.
-     Plane 0 widths are determined by reading the current Unifont glyphs.
-     All higher planes, 0x01 through 0x10, are calculated without regard
-     to Unifont glyphs.  This can be modified in the future if Unifont
-     glyphs extend beyond Plane 0.
+   - Armenian -- several glyphs were redrawn based upon feedback from
+     native speakers (U+0530..U+058F).
 
-Andrew Miller drew the 5 new additions to the Unicode 6.3.0 Basic
-Multilingual Plane in the initial Unifont 6.3 release.
+   - CJK Radicals Supplement -- several glyphs were redrawn to better match
+     their representations in The Unicode Standard code charts:
+     U+2E9F, U+2EA9, U+2EAC, U+2EAE, U+2EC0, U+2EDE, U+2EE7, and U+2EED.
 
-Paul Hardy made the following improvements for the latest Unifont 6.3
-release:
+   - Capricorn sign (U+2651) -- this was redrawn to an alternate form that
+     better fit in an 8 by 16 pixel grid.
 
    - Dashes -- changed to distguish better between different dash types
      (a two horizontal pixel difference is the minimum to easily distinguish
@@ -363,6 +249,46 @@ release:
    - hangul/ directory -- updated "hangul-generation.html" to match the
      latest version at http://unifoundry.com/hangul/hangul-generation.html
 
+Five new utility programs have also been added:
+
+   - unifontpic - creates a bitmapped graphics (.bmp) file of the entire
+     Basic Multilingual Plane (Plane 0), by default in a 256-by-256
+     glyph grid for ease of printing, and optionally in a 16-by-4096 glyph
+     grid for easier scrolling on a screen, for software that can handle
+     a .bmp file with over 64k pixel rows (not all software can).  The
+     256-by-256 glyph grid can be scaled to print on a piece of paper
+     approximately 3 feet by 3 feet (or one meter by one meter).  Written
+     by Paul Hardy.
+
+   - unigencircles - adds dashed combining circles to unifont.hex glyphs
+     for code points that are in "font/ttfsrc/combining.txt" but not in
+     "font/plane00/nonprinting.hex".  Written by Paul Hardy.
+
+   - unigenwidth - creates an implementation of the POSIX functions
+     wcwidth() and wcswidth() as specified in IEEE 1003.1-2008, Vol. 2:
+     System Interfaces, Issue 7, pages 2251 and 2241, respectively.
+     Plane 0 widths are determined by reading the current Unifont glyphs.
+     All higher planes, 0x01 through 0x10, are calculated without regard
+     to Unifont glyphs.  This can be modified in the future if Unifont
+     glyphs extend beyond Plane 0.  Written by Paul Hardy.
+
+   - unihex2png - converts a unifont.hex-format file into a Portable
+     Network Graphics (PNG) file for editing with a wider rane of graphics
+     editors than the original unihex2bmp allowed.  Written by Andrew
+     Miller, based upon the unihex2bmp source code.  Introduced in
+     Version 6.3.20131215.
+
+   - unipng2hex - converts a PNG graphics file created by unihex2png
+     back into a unifont.hex-format file.  Written by Andrew Miller,
+     based upon the unibmp2hex source code.  Introduced in Version
+     6.3.20131215.
+
+The last two program additions, unihex2png and unipng2hex, also support
+glyph heights of 24 and 32 pixels in addition to Unifont's original
+height of 16 pixels.  hex2bdf and hexdraw have also been modified to
+support these alternate glyph heights.  This capability has not been
+tested extensively, and for now is considered experimental.
+
 
 CHANGES IN VERSION 6.2
 ----------------------
@@ -465,7 +391,7 @@ release of version 5.1:
 The result is now there is just one variation of output font rather than
 four.  That one is used to generate the TrueType "unifont.ttf" font.
 
-The directory "font/hexsrc" contains the .hex input files for building
+The directory "font/plane00" contains the .hex input files for building
 Unifont, and contains these files:
 
      hangul-syllables.hex   Unicode Hangul Syllables, U+AC00..U+D7A3
@@ -619,7 +545,7 @@ Other notable additions include:
        (suggested as an acceptable rendering in the Unicode 5.0 Standard),
        now replaced with optional four-digit hexadecimal code point glyphs;
        thought not built into the final font by default, they are available
-       in "font/hexsrc/pua.hex"
+       in "font/plane00/pua.hex"
 
      - Replacement of the Unifont 5.1 gray box glyphs for unassigned
        code points with four-digit hexadecimal glyphs; these are built