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.
|