CTAN Comprehensive TeX Archive Network

Directory macros/luatex/latex/uninormalize


The uninormalize package

The purpose of this package is to provide Unicode normalization for Lua. It is based on Arthur Reutenauer's code for GSOC 2008, which was adapted a little bit to work with current Luaotfload. For more information, see this question on .sx.

What does that mean?

Citing Wikipedia:

Unicode equivalence is the specification by the Unicode character encoding
standard that some sequences of code points represent essentially the same
character. This feature was introduced in the standard to allow compatibility
with preexisting standard character sets, which often included similar or
identical characters.


Unicode provides two such notions, canonical equivalence and compatibility.
Code point sequences that are defined as canonically equivalent are assumed to
have the same appearance and meaning when printed or displayed. For example,
the code point U+006E (the Latin lowercase "n") followed by U+0303 (the
combining tilde) is defined by Unicode to be canonically equivalent to the
single code point U+00F1 (the lowercase letter "ñ" of the Spanish alphabet).

Basic usage

\setmainfont{Linux Libertine O}

Some tests:
  \item combined letter ᾳ %GREEK SMALL LETTER ALPHA (U+03B1) 
                          % + COMBINING GREEK YPOGEGRAMMENI 
                          % (U+0345)
  \item normal letter ᾳ   % GREEK SMALL LETTER ALPHA WITH 
                          %YPOGEGRAMMENI (U+1FB3)

Some more combined and normal letters: 

Linux Libertine does support some combined chars: \parbox{4em}{příliš}
Using the \verb|^^^^| syntax: ^^^^0061^^^^0301 ^^^^0041^^^^0301

Package options

This package has three options:

  • buffer – normalize processed document at the moment when it's source file is read, before processing by starts. This is the default option, it seems to work better than the next one.
  • nodes – normalize Lua nodes. Normalization happens after the full processiny by .
  • debug – print debug messages to the terminal output

Both buffer and nodes options are enabled by default, you can disable any of them by using:


Download the contents of this package in one zip archive (68.7k).

uninormalize – Unicode normalization support

This package provides Unicode normalization (useful for composed characters) for Lua.

Home pagehttps://github.com/michal-h21/uninormalize
Bug trackerhttps://github.com/michal-h21/uninormalize/issues
LicensesThe Project Public License 1.3
Copyright2020 Michal Hoftich
MaintainerMichal Hoftich
Contained inTeX Live as uninormalize
MiKTeX as uninormalize
Guest Book Sitemap Contact Contact Author