unifont-6.3.20131020.tar.gz
[unifont.git] / README
1
2 Subject: Unifont archive version 6.3.20131020
3
4
5 OVERVIEW
6 --------
7 GNU Unifont is an official GNU package.  It is a dual-width
8 (8x16/16x16) bitmap font, designed to provide coverage for
9 all of Unicode Plane 0, the Basic Multilingual Plane (BMP).
10 This version has a glyph for each visible code point in the
11 Unicode 6.3 Basic Multilingual Plane (Plane 0).
12
13 Unifont only provides a single glyph for each character, making it
14 impossible to handle any language properly that needs context-dependent
15 character shaping. It is supplied in the form of a hex file, with
16 a converter to convert it to BDF. See http://czyborra.com/unifont/
17 or http://unifoundry.com/unifont.html for more information.  The
18 BDF font is converted to PCF, and the hex file is converted to a
19 TrueType font.
20
21 This is the unifoundry.com collection of utilities for GNU Unifont,
22 assembled by Paul Hardy with the encouragement of the font's creator,
23 Roman Czyborra.  This archive contains the following directories
24 and files:
25
26      font       Everything you need to build the font from scratch
27      hangul     Standalone font sources to build hangul-syllables.hex
28      Makefile   The "make" file
29      man        Unix man pages
30      README     This file
31      src        Source programs, in Perl and C
32      TUTORIAL   Tutorial for using this package's utilities
33
34 The "font/precompiled" directory contains prebuilt font-related files:
35
36      coverage.txt              Percentage coverage of each Plane 0 script
37      unifont-<version>.bmp     The entire Plane 0 font with combining circles
38      unifont-<version>.bdf.gz  BDF version of Unifont
39      unifont-<version>.hex     Hex string source of glyphs to build Unifont
40      unifontall-<version>.hex  Hex string source of all Plane 0 glyphs,
41                                including nonprinting and PUA glyphs
42      unifont-<version>.pcf.gz  PCF version of Unifont
43      unifont-<version>.ttf     TrueType version of Unifont
44
45 The original version of this README file was written by David Starner
46 and modified by Paul Hardy from 2008 to the present.
47
48 This release incorporates all glyph errata issued by The Unicode Consortium
49 from Unicode 1.0 errata to the latest.
50
51
52 BUILDING
53 --------
54 To make the binaries from the top directory, type
55
56      make
57
58 This will create the directories "./bin", "./lib", and "./font/compiled".
59
60 The compiled programs will be in the "./bin" directory.  The ./lib
61 directory will contain the file wcwidth.c, to provide an implementation
62 of the POSIX wcwidth() and wcswidth() functions.  The font will build,
63 placing files in the "font/compiled/" subdirectory.
64
65 The default settings will build Unifont with four-digit hexadecimal
66 glyphs appearing for unassigned code points, and with no glyphs for
67 Private Use Area code points or non-printing code points.  As an
68 example, to override these defaults in this top-level directory type
69
70      make UNASSIGNED="" PUA="hexsrc/pua.hex" \
71           NONPRINTING="hexsrc/nonprinting.hex"
72
73 To make certain that no unassigned, PUA, or non-printing glyphs are
74 included, type
75
76      make UNASSIGNED="" PUA="" NONPRINTING=""
77
78 You can similarly build Unifont with your own custom PUA glyphs.
79 Just specify where the custom PUA file is, relative to the "font/"
80 directory.  Note, though, that unifontpic generates its glyph
81 diagram from whatever .hex files are in the "font/hexsrc" directory.
82 Therefore, to have custom PUA glyphs be part of this generated
83 glyph map, replace "font/hexsrc/pua.hex" with a custom pua.hex file.
84
85 Other useful make variables that can be overridden on the command line
86 from the top-level Makefile include:
87
88      DESTDIR   - By default, not set; set to an alternate root location
89                  such as "~/tmproot" if desired, but this directory
90                  must already exist.
91      USRDIR    - Set as typically "usr" or "usr/local" for installation
92      PREFIX    - This is just $(DESTDIR)/$(USRDIR) but can be overridden.
93      PKGDEST   - Destination for package files, by default "usr/share"
94                  so that this README file, the TUTORIAL file, etc. will
95                  be installed in "/usr/share/unifont".
96      COMPRESS  - Set to non-zero to compress installed man pages
97
98 All of the .hex file names can be replaced selectively on the top-level
99 "make" command line.  The list of component hex file variables is:
100
101      UNIFONTBASE - The bulk of Unifont scripts
102      CJK         - Most of the CJK Ideographs
103      HANGUL      - Hangul Syllables block
104      NONPRINTING - Glyphs for non-printing characters
105      SPACES      - Space glyphs, single- and double-width
106      UNASSIGNED  - Glyphs for unassigned code points
107      PUA         - Glyphs for the Private Use Area
108
109 To install the binaries, man pages, and Unifont, review the
110 destination directories in the Makefiles to verify that the files
111 will be installed where you want, and then type
112
113      make install
114
115 This installs programs in "/usr/bin" or "/usr/local/bin" (depending
116 on the USRDIR setting in the top-level Makefile), installs PCF and
117 TrueType fonts in the appropriate places, and places the following
118 files in "/usr/share/unifont" or "/usr/local/share/unifont" (again
119 depending on the USRDIR setting in the top-level Makefile):
120
121      combining.txt - list of Unicode Plane 0 combining characters
122      LICENSE.gz    - license information for this package
123      README.gz     - this README file
124      TUTORIAL.gz   - tutorial on using the Unifont utilities
125      unifont.hex   - composite Unifont .hex source, used by GRUB1
126      wchardata.c   - implementation of IEEE 1003.1-2008 wcswidth(), wcwidth()
127      wchardata.o   - object file from wchardata.c
128
129 Typing "make install" will install font files from "font/compiled/"
130 if that directory exists; otherwise it will install font files from
131 the "font/precompiled/" directory.
132
133 To rebuild what is in the "font/precompiled" directory (which you
134 ordinarily you should never do--there would have to be a very good
135 reason), remove its files, modify the DATE and VERSION information in
136 the top-level Makefile and in "font/Makefile", then type
137
138      make precompiled
139
140 from the top-level directory or the "font/" subdirectory.
141
142 To just make the fonts, charts, etc. within the "font" directory,
143 install the "bdftopcf" program and FontForge as well as performing
144 a "make install" to install the Unifont binaries.  Then from the
145 top-level directory type
146
147      cd font
148      make
149
150 The resulting fonts will be in the "./font/compiled" directory, along
151 with bitmap renderings of each glyph.
152
153 WARNING: Building the TrueType version of GNU Unifont will require
154 anywhere from 256 MBytes to 1 GByte of virtual memory, can require
155 almost 250 Megabytes of free disk space during the build, and is best
156 run on a decent processor (say 1 GHz clock rate or better).
157
158 During the TrueType build, FontForge will monopolize your CPU...plan
159 accordingly.
160
161 There is no reason to build the font from scratch unless you modify
162 the .hex font source files (or must satisfy an insatiable curiosity),
163 because the "./font/precompiled" directory already contains pre-built
164 BDF, PCF, and TrueType fonts.
165
166 To create a custom version of the font with combining circles (such as
167 was done to create the large picture of Unifont), enter these commands:
168
169      cd font/ttfsrc
170      sort ../hexsrc/*.hex | \
171           unigencircles combining.txt ../hexsrc/nonprinting.hex > unifont.hex
172      make
173
174 When "make" is finished, the ttfsrc directory will contain a "unifont.ttf"
175 file which includes the dashed combining circles that the unigencircles
176 utility added.  Copy this "unifont.ttf" file to a safe location in a different
177 directory with a more descriptive name.  This font is named "unifontcircles"
178 in the font distribution.  Then type
179
180      make clean
181
182 If you've made a new version of the font, hand-copy the new font file(s)
183 to your desired destination.  Otherwise, precompiled PCF and TrueType
184 versions of the font will be copied from "./font/precompiled/" into
185 $(DESTDIR)/usr/share/fonts.
186
187 After font installation, you might need to restart the X Window System
188 for the new fonts to be recognized, but first try the command
189
190      xset fp rehash
191
192 in a shell (terminal) window.  If that doesn't work, restart the X
193 Window System.
194
195 To remove intermediate files, from the top-level directory type
196
197      make clean
198
199 To remove all created files and leave the directory in its pre-build
200 state, from the top-level directory type
201
202      make distclean
203
204 That will remove the "./bin" directory, the "./lib" directory, the
205 "./font/compiled" directory, and other intermediate files.  Note that
206 this command leaves the files in "./font/precompiled" intact, even
207 though a prior "make precompiled" command would have rebuilt those files.
208
209
210 src/ AUTHORS
211 ------------
212 Right now, all the Perl files in the src directory except "hex2sfd",
213 "unifontchojung", and "unifontksx" were written by Roman Czyborra (or
214 in the case of johab2ucs2, by Jungshik Shin, who then gave it to Roman).
215 Roman originally named the "src/hexbraille" script as simply "braille";
216 Paul Hardy thought there was too great a chance of a name conflict with
217 other utilities, and so renamed it.
218
219 Luis Alejandro Gonzalez Miranda wrote the original "hex2sfd" Perl
220 script, as well as a "howto-build.sh" shell script that Paul Hardy
221 converted into "./font/ttfsrc/Makefile".
222
223 All the C programs were written by Paul Hardy.
224
225
226 Unifont AUTHORS
227 ---------------
228 Roman Czyborra created the original GNU Unifont, including the
229 .hex format.  For greater detail, see the HISTORY section below.
230
231 David Starner aggregated many glyphs contributed by others and
232 built these into pre-2004 Unifont releases.
233
234 Qianqian Fang began his Wen Quan Yi font in 2004, by which
235 time work on Unifont had stopped.  Most of the almost 30,000
236 CJK ideographs in the latest Unifont versions 5.1 and later
237 were taken from Wen Quan Yi with permission of Qianqian Fang.
238 The glyphs in "./font/hexsrc/wqy-cjk.hex" are for the most part
239 Qianqian Fang's Unibit and Wen Quan Yi glyphs.
240
241 Paul Hardy drew most of the newly-drawn glyphs added to the BMP
242 from the Unifont 5.1 release to the present release.  This includes
243 the 11,172 glyphs in the Hangul Syllables block, plus approximately
244 10,000 additional glyphs scattered throughout the BMP.
245
246 Andrew Miller drew the glyphs added to Unicode 6.3.0.
247
248
249 LICENSE
250 -------
251 The source code for everything except the compiled fonts in this current
252 release is licensed as follows:
253
254      License for this current distribution of program source
255      files (i.e., everything except the fonts) is released under
256      the terms of the GNU General Public License version 2,
257      or (at your option) a later version.
258
259 The license for the compiled fonts is covered by the above GPL terms
260 with the GNU font embedding exception, as follows:
261
262      As a special exception, if you create a document which uses this font,
263      and embed this font or unaltered portions of this font into the document,
264      this font does not by itself cause the resulting document to be covered
265      by the GNU General Public License. This exception does not however
266      invalidate any other reasons why the document might be covered by the
267      GNU General Public License. If you modify this font, you may extend
268      this exception to your version of the font, but you are not obligated
269      to do so. If you do not wish to do so, delete this exception statement
270      from your version. 
271
272 See "http://www.gnu.org/licenses/gpl-faq.html#FontException" for more details.
273
274
275 CHANGES IN VERSION 6.3
276 ----------------------
277 Version 6.3 reflects all glyph changes and errata published in Unicode
278 6.3.0.  In preparation for releasing this version, Paul Hardy obtained
279 a hard copy of the errata published in Unicode Version 1.1, not yet
280 available on Unicode's website.  All previously published errata have
281 been incorporated.  This is a complete replacement for all previous
282 releases.
283
284 The following code points in previously published errata were examined
285 and found to be correct:
286
287      Unicode 1.1: U+717F, U+773E, U+809C, U+8480, U+908E
288
289 Three new utility programs have also been added:
290
291    - unifontpic - creates a bitmapped graphics (.bmp) file of the entire
292      Basic Multilingual Plane (Plane 0), by default in a 256-by-256
293      glyph grid for ease of printing, and optionally in a 16-by-4096 glyph
294      grid for easier scrolling on a screen, for software that can handle
295      a .bmp file with over 64k pixel rows (not all software can).  The
296      256-by-256 glyph grid can be scaled to print on a piece of paper
297      approximately 3 feet by 3 feet (or one meter by one meter).
298
299    - unigencircles - adds dashed combining circles to unifont.hex glyphs
300      for code points that are in "font/ttfsrc/combining.txt" but not in
301      "font/hexsrc/nonprinting.hex".
302
303    - unigenwidth - creates an implementation of the POSIX functions
304      wcwidth() and wcswidth() as specified in IEEE 1003.1-2008, Vol. 2:
305      System Interfaces, Issue 7, pages 2251 and 2241, respectively.
306      Plane 0 widths are determined by reading the current Unifont glyphs.
307      All higher planes, 0x01 through 0x10, are calculated without regard
308      to Unifont glyphs.  This can be modified in the future if Unifont
309      glyphs extend beyond Plane 0.
310
311 Andrew Miller drew the 5 new additions to the Unicode 6.3.0 Basic
312 Multilingual Plane in the initial Unifont 6.3 release.
313
314 Paul Hardy made the following improvements for the latest Unifont 6.3
315 release:
316
317    - Dashes -- changed to distguish better between different dash types
318      (a two horizontal pixel difference is the minimum to easily distinguish
319      a difference between two glyphs):
320      * Hyphen (U+002D) and Soft Hyphen (U+00AD) are now 4 pixels wide
321      * En Dash (U+2012) is now 6 pixels wide
322      * Em Dash (U+2013) is now 8 pixels wide
323
324    - Control Pictures:
325      * Centered text for C1 Controls U+0089 ("HTJ"), U+0095 ("MW"),
326        and U+009E ("PM")
327      * Copied glyphs from U+0000..U+001F to U+2400..u+241F and erased
328        surrounding borders; earlier, some glyphs in U+0000..U+001F had
329        their text re-centered so this carries that change forward
330
331    - Arrows -- General Re-alignment
332      * Aligned most single vertical arrow strokes with the 5th column,
333        counting from the left, to align with the center of the "w" glyph
334        (U+0077)
335      * Aligned most single horizontal arrow strokes with the 7th row,
336        counting from the bottom, to align with the horizontal stroke in
337        the "e" glyph (U+0065); this follows the convention of Donald Knuth's
338        fonts in TeX, as illustrated in The TeXbook
339      * Modified the following ranges per the above two re-alignments:
340        o U+2190..U+21FF Arrows
341        o U+27F0..U+27FF Supplemental Arrows -- A
342        o U+2900..U+297F Supplemental Arrows -- B
343        o U+2B00..U+2BFF Miscellaneous Symbols and Arrows
344
345    - Modified the following additional Miscellaneous Technical glyphs
346      * Scan lines for old 9-line character terminals:
347        o U+23BA Line 1, horizontal line across row  1 (counting from the top)
348        o U+23BB Line 3, horizontal line across row  5 (counting from the top)
349        o U+23BC Line 7, horizontal line across row 12 (counting from the top)
350        o U+23BD Line 9, horizontal line across row 16 (counting from the top)
351      * U+23CE Return Symbol: shortened to match Latin capital height
352      * U+23AF Horizontal Line Extension: aligned on 7th row, counting
353        from the bottom
354      * U+23D0 Vertical Line Extension: aligned on 5th column, counting
355        from the left
356      * U+23DA Ground Symbol: aligned with Vertical Line Extension (U+23D0)
357      * U+23DB Fuse Symbol: algined with Horizontal Line Extension (U+23AF)
358      * U+23EC Black Down-pointing Double Triangle: moved down one row to
359        match Latin capital height
360
361    - Swapped U+FE17 and U+FE18, which had been reversed
362
363    - hangul/ directory -- updated "hangul-generation.html" to match the
364      latest version at http://unifoundry.com/hangul/hangul-generation.html
365
366
367 CHANGES IN VERSION 6.2
368 ----------------------
369 After release of version 5.1 of Unifont, it was learned that the
370 replacement glyphs used in Hangul Syllables, although free to use,
371 could never be licensed under any version of GPL.  For that reason,
372 Paul Hardy created a set of Hangul Syllables from scratch with the
373 oversight of some native Koreans.  This was done using the files that
374 appear in the "hangul/" directory.  For a detailed discussion of the
375 process, see
376
377      http://unifoundry.com/hangul/hangul-generation.html
378
379 The new font was released as Unifont 6.2, with representation of
380 all glyphs in the Unicode 6.2 BMP.  As a result of replacing the
381 Hangul Syllables block, this was the first release that provided
382 GPLv2+ coverage (with a font embedding exception) for the entire
383 package.
384
385 The Unicode Consortium released Unicode Version 6.2.0 on 22 April 2013.
386
387 This version of Unifont includes all additions to the BMP since Unicode
388 Version 5.1, and adds 1,328 more glyphs to the Basic Multilingual Plane.
389
390 It also incorporates all errata that the Unicode Consortium published
391 that apply to the BMP from Unicode 3.0 errata through Unicode 6.1 errata
392 (listed with the Unicode 6.2.0 release).  Only one erratum was left
393 unmodified: the Ogham Space glyph, U+1680, which was left as a line stroke
394 because of the rendering limitations of the bitmapped Unifont.  The errata
395 for the following glyphs were examined and if necessary corrected:
396
397      Unicode 3.1: U+066B, U+224C, U+1780..U+17E9
398      Unicode 3.2: [none]
399      Unicode 4.0: U+06DD, U+0B66
400      Unicode 4.1: U+01B3, U+031A
401      Unicode 5.0: U+0485, U+0486, U+06E1
402      Unicode 5.1: U+047C, U+047D, U+075E, U+075F,
403                   U+1031, U+1E9A, U+1460, U+147E,
404                   U+2626 
405      Unicode 5.2: U+04A8, U+04A9, U+04BE, U+04BF,
406                   U+135F, U+19D1, U+19D2, U+19D4 
407                   [U+1680 left as is]
408      Unicode 6.0: [none]
409      Unicode 6.1: U+2D7F
410
411 Note that some glyphs were assigned in earlier versions of Unicode and
412 later withdrawn, but their glyphs still appear in the code charts.
413 Therefore, they have been left in place.  The Unicode Consortium now
414 holds the position that once a glyph is assigned, it is not replaced.
415
416 Andrew Miller noted that one glyph (U+2047) was incorrect and the glyph
417 CYRILLIC CAPITAL LETTER A (U+0410) did not match LATIN CAPITAL LETTER A
418 (U+0041).  He submitted corrections and they have been incorporated.
419
420 The biggest change was a totally redrawn set of Hangul Syllables,
421 U+AC00..U+D7A3, comprising 11,172 glyphs in all.  This allowed the
422 entire font to be licensed under the GNU GPL.
423
424 Unicode 6.2 (and hence Unifont) now only has 2,330 unassigned code points
425 in the BMP for possible future assignments, and the rate at which new
426 code points are being assigned in the BMP is decreasing greatly.
427
428 The unihex2bmp program has reversed the meaning of its "-f" (flip,
429 or transpose) flag compared to Unifont Version 5.1 unihex2bmp.
430 Now the default behavior is to produce 16x16 glyph charts with
431 the same arrangement as The Unicode Standard.
432
433 The unibmp2hex program now hard-codes several scripts and code points
434 to be double-width.  This was necessary after removing the combining
435 circles from many glyphs that only occupied the left-hand side of the
436 16x16 grid, but combine with double-width glyphs from the rest of a
437 given script.
438
439 The "blanks.hex" file has been renamed to "unassigned.hex" as a more
440 accurate description of its contents.  The "substitutes.hex" file has
441 been renamed to "spaces.hex", as all it contained were single- and
442 double-width space glyphs (strings of 0s).
443
444
445 Roman Czyborra and Paul Hardy wanted to license this entire collection
446 under GPL to simplify its adoption by the GNU Project.  In the end, there
447 was just one catch: the Hangul Syllables block that appeared in Unifont 5.1,
448 although licensed for free use, could not be licensed under the GPL.
449
450 There was no suitable alternative that was covered under the GPL, so Paul
451 Hardy created a new block of Hangul Syllables.  This took a few years of
452 spare time to complete.  Native Koreans reviewed and critiqued the glyphs.
453 If anyone who is Korean would like to improve this block (U+AC00..U+D7A3),
454 please feel free to do so and submit the changes so they can be incorporated.
455
456 The font has also gone through a couple of simplifications since the
457 release of version 5.1:
458
459    - There is only one source file for CJK ideographs now, "wqy.hex",
460      acknowledging that most of these glyphs were taken from the Wen
461      Quan Yi distribution.
462
463    - There are no more combining circles; these were all removed.
464
465 The result is now there is just one variation of output font rather than
466 four.  That one is used to generate the TrueType "unifont.ttf" font.
467
468 The directory "font/hexsrc" contains the .hex input files for building
469 Unifont, and contains these files:
470
471      hangul-syllables.hex   Unicode Hangul Syllables, U+AC00..U+D7A3
472      nonprinting.hex        Format and other assigned but invisible glyphs
473      pua.hex                Private Use Area glyphs
474      README                 The README file
475      spaces.hex             Code points that are space glyphs
476      unassigned.hex         Unassigned code points in the BMP
477      unifont-base.hex       Source file with almost all BMP scripts
478      wqy.hex                Source file with Wen Quan Yi CJK ideographs
479
480 The file previously named "blanks.hex" is now named "unassigned.hex".
481 These "blank" glyphs are no longer included in the compiled font.
482 Although the Unicode Standard specifically allows a visual rendering
483 of unassigned code points, doing so would prevent a display engine
484 finding a glyph in another font.  In fact, the original "blanks.hex"
485 pattern was modeled after the proposed representation of unassigned
486 code points depicted in The Unicode Standard, Version 5.0, Section 5.3,
487 Unknown and Missing Characters (p. 155).
488
489 Incorporating "blanks.hex" (now "unassigned.hex") was invaluable in
490 spotting assigned code points with glyphs that had not yet been drawn.
491 However, now there is complete coverage of the entire BMP, with only
492 about 2,300 BMP code points remaining out of 65,536 that could potentially
493 be given assignments in the future, so the great bulk of work on the
494 BMP is done.
495
496 The "pua.hex" file contains a four-digit hexadecimal representation of
497 each code point, rendered as white on black.  The new program "hexgen.c"
498 generated these glyphs.  A four-digit hexadecimal code point is suggested
499 as one possible rendering of PUA glyphs in The Unicode Standard, Version
500 5.0, Section 5.3.  Another possible rendering suggested in that same
501 section is a pencil glyph.  A pencil glyph was used originally in Unifont
502 Version 5.1.
503
504 The glyphs in "pua.hex" are not compiled into the final font.  To do
505 so, modify font/Makefile by adding "pua.hex" to the list of hex source
506 files.  Alternatively, someone could use their own pua.hex file for
507 various Private Use Area assignments.
508
509
510 UNIFONT VERSION 5.1
511 -------------------
512 Paul Hardy's first release of Unifont and associated graphics utilities
513 was Version 5.1.  This corresponded to Unicode Version 5.1 (the current
514 version at the time), with a glyph for every visible character in the
515 Unicode 5.1 Basic Multilingual Plane.
516
517 For the Unifont 5.1 release, Paul Hardy replaced the 11,172
518 thick-stroke Hangul Syllables glyphs with thin-stroke glyphs
519 (a desire expressed by Roman Czyborra for years), merged Qianqian
520 Fang's unibit and Wen Quan Yi glyphs into GNU Unifont (with lots
521 of help and enthusiasm from Qianqian Fang), drew about 8,500 more
522 glyphs to provide complete coerage of the BMP, and replaced the
523 existing Tibetan glyphs with new ones contributed by Rich Felker.
524
525 There was a bug in the johab2ucs2 Perl Script that formed one range
526 of Hangul Syllables incorrectly in previous releases.  Paul Hardy
527 noticed and fixed the bug for the Unifont 5.1 release.  All previous
528 releases of Unifont have an incorrectly formed Hangul Syllables block.
529
530 Earlier releases also had an incorrectly formed Braille glyph block.
531 There was a bug in the Perl script that drew the Braille glyphs in
532 earlier releases.  Roman Czyborra made a fix to that Perl script,
533 named "braille" at his website (http://czyborra.com).  The revised
534 script ("hexbraille") was included in the Unifont 5.1 release, and
535 used to generate the Unifont 5.1 Braille glyphs.
536
537
538 HISTORY
539 -------
540 Roman Czyborra <roman@czybora.com> began GNU Unifont in 1998 as a low
541 quality font to provide a glyph for every Unicode character in the
542 Basic Multilingual Plane.  He realized that no one font at the time
543 had complete coverage of the Unicode BMP.  http://czyborra.com still
544 has several cool tools for Unifont not included here.
545
546 Since Roman Czyborra was unable to maintain the Unifont for a while,
547 and many patches existed on gnu-unifont@groups.yahoo.com
548 (http://groups.yahoo.com/group/gnu-unifont), David Starner
549 <dstarner98@aasaa.ofe.org> decided to make a new release extending
550 Unifont with many characters in 1999.  That was the foundation of earlier
551 GNU Unifont compilations from 1999 to 2004.
552
553 By 2004, work on Unifont had stopped.  Qianqian Fang wanted to create
554 a high-quality Chinese Unicode font in 2004.  He began by copying the
555 GNU Unifont glyphs.  He replaced its Latin glyphs with those of another
556 X11 font.  He replaced the existing main CJK ideographs with a higher
557 quality font that the People's Republic of China had placed in the public
558 domain.  Qianqian named this new font "unibit", and released it under
559 the terms of the GNU General Public License (GPL) version 2, with the
560 exception that embedding his font in a document did not by itself bind
561 that document to the terms of the GNU GPL.
562
563 See http://wqy.sourceforge.net/cgi-bin/enindex.cgi (English) or
564 http://wenq.org (Chinese) for more information on Wen Quan Yi.
565
566 In late 2007, Paul Hardy became interested in adding to GNU Unifont.
567 He wrote a couple of programs to convert GNU Unifont .hex files to and
568 from bitmap images for easy editing with any graphics software.  He began
569 by combining the latest glyphs available for GNU Unifont.  This starting
570 point was posted at http://czyborra.com as the 2007-12-31 version of
571 unifont.hex.  Shortly after that, Roman Czyborra's website went down.
572 Paul Hardy then started posting complete copies of GNU Unifont on his
573 website, at "http://unifoundry.com/unifont.html".
574
575 Roman Czyborra encouraged Paul Hardy to continue this work on GNU Unifont.
576
577 In early 2008, Paul Hardy learned of Qianqian Fang's work.  Qianqian
578 encouraged a combining of effort, and Paul Hardy at that point created
579 two versions of GNU Unifont: one with the original Chinese ideographs
580 (which Roman Czyborra copied from a Japanese font in the public domain),
581 and one with Qianqian Fang's Wen Quan Yi (Spring of Letters) ideographs.
582 The Wen Quan Yi font provides far more coverage of CJK ideographs than
583 the original Japanese font did, and is of higher quality.
584
585 Paul Hardy created a version of both the font with the original CJK
586 ideographs from Japan and with CJK ideographs from Wen Quan Yi that
587 contained combining circles.  He then wrote a post-processing program
588 to remove the combining circles from the final font.
589
590 In 2005, Luis Alejandro Gonzalez Miranda (http://www.lgm.cl) created
591 a set of Fontforge scripts and Perl programs to build a TrueType font
592 from unifont.hex.  Paul Hardy modified Luis' software in 2008 to cover
593 the full Unicode 5.1 Basic Multilingual Plane range.  Luis gave Paul
594 Hardy permission to release this modified version under the terms of
595 "the GNU General Public License, version 2 or (at your option) a later
596 version."
597
598 On 4 July 2008, Paul Hardy was looking through all of Roman Czyborra's
599 Perl scripts.  One of these, "braille", contained a comment from 2003
600 that the original GNU Unifont did not generate its Braille patterns
601 (U+2800..U+28FF) correctly.  The modified script fixed that bug.  Paul
602 Hardy incorporated the corrected Braille glyphs into the 6 July 2008
603 release of GNU Unifont.
604
605 All previous versions probably contain this Braille bug and should be
606 replaced.
607
608 Other notable additions include:
609
610      - Incorporation of CJK glyphs from Qianqian Fang's fonts
611
612      - Incorporation of Rich Felker's Tibetan glyphs
613
614      - Replacement of the Hangul Syllables block with a thin stroke font
615        (Roman had mentioned wanting to do this someday on his website),
616        the current version being created from scratch by Paul Hardy
617
618      - Addition of circled pencil glyphs for the Private Use Area
619        (suggested as an acceptable rendering in the Unicode 5.0 Standard),
620        now replaced with optional four-digit hexadecimal code point glyphs;
621        thought not built into the final font by default, they are available
622        in "font/hexsrc/pua.hex"
623
624      - Replacement of the Unifont 5.1 gray box glyphs for unassigned
625        code points with four-digit hexadecimal glyphs; these are built
626        into the final font by default
627
628      - Proper handling of combining characters in the TrueType version
629
630      - Proper handling of space glyphs in the TrueType version
631
632 The hex2bdf script in this release is Roman's original script, not the
633 modified version that produced two BDF files (one for 8 pixel wide glyphs
634 and another for 16 pixel wide glyphs).  The TrueType font should be used
635 in preference to the BDF font, so this is probably a moot point.
636
637 For the Unifont 6.2 release, Qianqian Fang gave Paul Hardy permission
638 to release the subset of Wen Quan Yi glyphs included in Unifont under
639 GPLv2+, with a font embedding exception.  With the newly-drawn Hangul
640 Syllables block, this allowed the entire font to be released under
641 GPLv2+ with a font embedding exception.
642
643
644 OPEN ISSUES
645 -----------
646 * Some CJK ideographs use an entire 16x16 pixel grid.  This leaves
647 insufficient space between lines.  However, changing to a non-square
648 grid would distort the block drawing glyphs.  The best solution is
649 probably to use GNU Unifont for mostly non-CJK glyph rendering, and
650 to use Qianqian Fang's Wen Quan Yi fonts (http://wenq.org) for
651 predominately CJK glyph rendering.  The Wen Quan Yi fonts use extra
652 leading (blank space) between lines.
653
654 * There are still some Control and Format glyphs in "unifont-base.hex";
655 these might be more appropriate for "nonprinting.hex".
656