Blob Blame History Raw
LibUniNamesList
***************

LibUniNamesList holds www.unicode.org Nameslist.txt data which can be useful
for programs that need Unicode "Names", "Annotations" and block definitions.

Accessing LibUniNamesList Information
*************************************

Older versions of LibUniNamesList consisted of static data arrays which can
be accessed simply as arrays. This access still exists for compatibility
with older programs that use this method. One example program using this
older method is FontForge 20120731-b. The latest version of LibUniNamesList
contains functions which help simplify access to the same data.

Functions to access data in LibUniNamesList is listed here with the oldest
listed first, and latest added function listed last. If more functions are
added, they will be added to the bottom of this list.

1) const char *uniNamesList_name(unsigned long uni);
2) const char *uniNamesList_annot(unsigned long uni);
3) const char *uniNamesList_NamesListVersion(void);
4) int uniNamesList_blockCount(void);
5) int uniNamesList_blockNumber(unsigned long uni);
6) long uniNamesList_blockStart(int uniBlock);
7) long uniNamesList_blockEnd(int uniBlock);
8) const char *uniNamesList_blockName(int uniBlock);

For a better description of each function, check "uninameslist.h", and see
an example of how to use these funtions in FontForge ~ 20140101 or later.

Building and Installing LibUniNamesList
***************************************

Read the file INSTALLATION for details on building LibUniNamesList using this
package. This package contains 2 libraries, but only 1 is built by default:
	1) libuninameslist - holds NamesList.txt data from www.unicode.org
	2) libuninameslist-fr - currently holds French 7.0 NamesList.txt
If you need the libuninameslist-fr library then you will also need to enable
building it since the current default is to not build it since this library
was not maintained for a while (prior version was still at 5.0 for a while).
	configure --enable-frenchlib
(Also note, that other libraries may not necessarily be at the same version,
so you will want to make use of "nameslist-fr.h" since some information and
dimensions are different)

The build process can be summarized quickly like this:

	Download LibUniNamesList*.tar.gz
	Move it somewhere appropriate (temp perhaps?) and type:
	$ tar -xzf libuninameslist*.tar.gz
	$ cd libuninameslist????????
	$ autoreconf -i
	$ automake
	$ ./configure
	$ make
	$ su
	# make install
	# exit
	$

NOTE: Some Distros and Operating Systems may require you to run 'ldconfig' to
recognize LibUniNamesList if you are not rebooting your computer first before
loading another program that depends on LibUniNamesList. To do this, you may
need to run 'ldconfig' in 'su -' mode after you have done 'make install':

	$ su -
	# ldconfig
	# exit
	$


How to Update LibUniNamesList (for maintainers)
***********************************************

The main purpose for LibUniNamesList is to contain a current copy of the
latest updated version of Nameslist.txt as published by www.unicode.org
which can then be accessed by users needing this information.

This means every now and then, LibUniNamesList needs to be updated with new
information. To do this, you will need to get the latest NamesList.txt file
from www.unicode.org which will then be used to build a new namelist.c file.

Let's say the next version of NamesList is version 8.0.
1) Update configure.ac with the new timestamp:
	uninameslist_package_stamp [20150701]	<-"YYYYMMDD" format
2) Update configure.ac with the new NamesList version:
	uninameslist_nameslist_ver [8.0]
3) Increment the point release, was 0.4, now becomes 0.5. NOTE: This minor
   point number may get large since LibUniNamesList is backwards compatible.
	uninameslist_major_version [0]
	uninameslist_minor_version [5]
   (if a future update of ListeDesNoms.txt >7.0 appears, then update this;
	fr_major_version [0]
	fr_minor_version [4] )
4) Update the config system, and create a versioned buildnameslist.h:
	autoreconf -i -Wall
	automake --foreign
	./configure
5) Build the buildnameslist program:
	make
6) Import "NamesList.txt" and "ListeDesNoms.txt" into the same directory:
	make NamesList.txt
	make ListeDesNoms.txt
7) Create new updated {nameslist*.c, uninameslist*.h} files:
	./buildnameslist
	make clean
	make

Added note: Going from Unicode 8.0 to 9.0, both of these libraries listed are
now bumped to 1.0 since this can be seen as a large change due to the library
compilation of the CRA being confused with Major Minor versioning.
Backwards compatibility to accessing data still remains intact for programs
that require access using older methods.

Please report any bugs, patches and/or improvements to:
	fontforge-devel@lists.sourceforge.net

This file was last updated:
	2017-Jul-01, by Joe Da Silva