summaryrefslogtreecommitdiff
path: root/README
blob: 19fc037815a7f27bb4dded20758691ee8967674a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
= mmap-unifont - Memory-mapped GNU-Unifont =

GNU-Unifont is a bitmap Unicode font with almost complete Unicode coverage. It
is perfectly suited for low-level system binaries, as fallback font, in
emergency situations, and more.

mmap-unifont compiles a binary font format based on GNU-Unifont. This compiled
file can be memory-mapped by applications to get direct font-access. This
extremely simplifies font-usage for system-applications. Advantages over using
the original BDF font are:

	* On-demand glyph loading: The whole font is pre-compiled with fixed
	  offsets. The header includes offsets and limits. Hence, an application
	  can directly access the memory-location of a glyph on-demand. The
	  operating-system can load the required memory-pages on first-access,
	  thus reducing the memory footprint considerably.
	  With BDF fonts, the application has to scan the whole BDF file to find
	  a given glyph. This requires loading 9MB of font-data just to display
	  the U+FFFD glyph.

	* No need to write a BDF-format parser: While BDF is a quite simple
	  format, it still requires a parser. This is tedious and overkill, if
	  you don't intend to use other fonts than GNU-Unifont.

	* Stronger guarantees: GNU-Unifont has some very handy features, which
	  cannot be expressed in most font-formats. While it is possible to rely
	  on them using any font-format, you usually violate the rules of the
	  font-format and thus make your application dependent on GNU-Unifont
	  (questioning why you wrote a BDF-parser in the first place).
	  Those features include:
	    * fixed size for all glyphs
	    * fixed underline position and thickness
	    * fixed horizontal/vertical advancement
	    * ...

	* Additional annotations: Given the very precice use-case of
	  mmap-unifont, we can add additional glyph-annotations that simplify
	  rendering. For instance, combining-characters require you to draw
	  multiple glyphs on top of each other. The mmap-unifont package
	  provides annotations that describe the relative positioning of the
	  glyphs when drawn together.

mmap-unifont is strongly targetted at system-applications. It has no external
dependencies, is very memory-friendly, but still provides a font with full
Unicode-coverage. However, please note that it does not provide any advanced
layout-features (like RTL/LTR annotations). To render fully-internationalized
text, a layout-engine like HarfBuzz/Pango is required.

Website:
  http://www.freedesktop.org/wiki/Software/mmap-unifont

== Requirements ==

  mmap-unifont has no requirements other than a ISO-C compatible C library.

== Download ==

Released tarballs can be found at:
  http://www.freedesktop.org/software/kmscon/releases

== Install ==

  To compile mmap-unifont, run the standard autotools commands:
    $ test -f ./configure || NOCONFIGURE=1 ./autogen.sh
    $ ./configure
    $ make
    $ make install
  To compile the test applications, run:
    $ make check

== Documentation ==

  Please see ./DOCUMENTATION for information on the mmap-unifont format.

== License ==

  This software is licensed under the terms of the GNU-GPL. Please see
  ./COPYING for further information.

== Contact ==

  This software is maintained by:
    David Herrmann <dh.herrmann@gmail.com>
  If you have any questions, do not hesitate to contact one of the maintainers.