summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/luaotfload/luaotfload-tounicode.lua')
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tounicode.lua200
1 files changed, 200 insertions, 0 deletions
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
new file mode 100644
index 0000000000..3636f79220
--- /dev/null
+++ b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
@@ -0,0 +1,200 @@
+-----------------------------------------------------------------------
+-- FILE: luaotfload-tounicode.lua
+-- DESCRIPTION: part of luaotfload / tounicode overwrites
+-----------------------------------------------------------------------
+
+local ProvidesLuaModule = {
+ name = "luaotfload-tounicode",
+ version = "3.1", --TAGVERSION
+ date = "2019-11-04", --TAGDATE
+ description = "luaotfload submodule / tounicode",
+ license = "GPL v2.0",
+ author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+}
+
+if luatexbase and luatexbase.provides_module then
+ luatexbase.provides_module (ProvidesLuaModule)
+end
+
+local overloads = {
+ -- rougly based on texglyphlist-g2u.txt
+
+ -- ff = { unicode = {0x0066, 0x0066} },
+ -- ffi = { unicode = {0x0066, 0x0066, 0x0069} },
+ -- ffl = { unicode = {0x0066, 0x0066, 0x006C} },
+ -- fi = { unicode = {0x0066, 0x0069} },
+ -- fl = { unicode = {0x0066, 0x006C} },
+ longst = { unicode = {0x017F, 0x0074} },
+ st = { unicode = {0x0073, 0x0074} },
+ AEsmall = { unicode = 0x00E6 },
+ Aacutesmall = { unicode = 0x00E1 },
+ Acircumflexsmall = { unicode = 0x00E2 },
+ Acute = { unicode = 0x00B4 },
+ Acutesmall = { unicode = 0x00B4 },
+ Adieresissmall = { unicode = 0x00E4 },
+ Agravesmall = { unicode = 0x00E0 },
+ Aringsmall = { unicode = 0x00E5 },
+ Asmall = { unicode = 0x0061 },
+ Atildesmall = { unicode = 0x00E3 },
+ Brevesmall = { unicode = 0x02D8 },
+ Bsmall = { unicode = 0x0062 },
+ Caron = { unicode = 0x02C7 },
+ Caronsmall = { unicode = 0x02C7 },
+ Ccedillasmall = { unicode = 0x00E7 },
+ Cedillasmall = { unicode = 0x00B8 },
+ Circumflexsmall = { unicode = 0x02C6 },
+ Csmall = { unicode = 0x0063 },
+ Dieresis = { unicode = 0x00A8 },
+ DieresisAcute = { unicode = 0xF6CC },
+ DieresisGrave = { unicode = 0xF6CD },
+ Dieresissmall = { unicode = 0x00A8 },
+ Dotaccentsmall = { unicode = 0x02D9 },
+ Dsmall = { unicode = 0x0064 },
+ Eacutesmall = { unicode = 0x00E9 },
+ Ecircumflexsmall = { unicode = 0x00EA },
+ Edieresissmall = { unicode = 0x00EB },
+ Egravesmall = { unicode = 0x00E8 },
+ Esmall = { unicode = 0x0065 },
+ Ethsmall = { unicode = 0x00F0 },
+ Fsmall = { unicode = 0x0066 },
+ Grave = { unicode = 0x0060 },
+ Gravesmall = { unicode = 0x0060 },
+ Gsmall = { unicode = 0x0067 },
+ Hsmall = { unicode = 0x0068 },
+ Hungarumlaut = { unicode = 0x02DD },
+ Hungarumlautsmall = { unicode = 0x02DD },
+ Iacutesmall = { unicode = 0x00ED },
+ Icircumflexsmall = { unicode = 0x00EE },
+ Idieresissmall = { unicode = 0x00EF },
+ Igravesmall = { unicode = 0x00EC },
+ Ismall = { unicode = 0x0069 },
+ Jsmall = { unicode = 0x006A },
+ Ksmall = { unicode = 0x006B },
+ LL = { unicode = {0x004C, 0x004C} },
+ Lslashsmall = { unicode = 0x0142 },
+ Lsmall = { unicode = 0x006C },
+ Macron = { unicode = 0x00AF },
+ Macronsmall = { unicode = 0x00AF },
+ Msmall = { unicode = 0x006D },
+ Nsmall = { unicode = 0x006E },
+ Ntildesmall = { unicode = 0x00F1 },
+ OEsmall = { unicode = 0x0153 },
+ Oacutesmall = { unicode = 0x00F3 },
+ Ocircumflexsmall = { unicode = 0x00F4 },
+ Odieresissmall = { unicode = 0x00F6 },
+ Ogoneksmall = { unicode = 0x02DB },
+ Ogravesmall = { unicode = 0x00F2 },
+ Oslashsmall = { unicode = 0x00F8 },
+ Osmall = { unicode = 0x006F },
+ Otildesmall = { unicode = 0x00F5 },
+ Psmall = { unicode = 0x0070 },
+ Qsmall = { unicode = 0x0071 },
+ Ringsmall = { unicode = 0x02DA },
+ Rsmall = { unicode = 0x0072 },
+ Scaronsmall = { unicode = 0x0161 },
+ Ssmall = { unicode = 0x0073 },
+ Thornsmall = { unicode = 0x00FE },
+ Tildesmall = { unicode = 0x02DC },
+ Tsmall = { unicode = 0x0074 },
+ Uacutesmall = { unicode = 0x00FA },
+ Ucircumflexsmall = { unicode = 0x00FB },
+ Udieresissmall = { unicode = 0x00FC },
+ Ugravesmall = { unicode = 0x00F9 },
+ Usmall = { unicode = 0x0075 },
+ Vsmall = { unicode = 0x0076 },
+ Wsmall = { unicode = 0x0077 },
+ Xsmall = { unicode = 0x0078 },
+ Yacutesmall = { unicode = 0x00FD },
+ Ydieresissmall = { unicode = 0x00FF },
+ Ysmall = { unicode = 0x0079 },
+ Zcaronsmall = { unicode = 0x017E },
+ Zsmall = { unicode = 0x007A },
+ ampersandsmall = { unicode = 0x0026 },
+ asuperior = { unicode = 0x0061 },
+ bsuperior = { unicode = 0x0062 },
+ centinferior = { unicode = 0x00A2 },
+ centoldstyle = { unicode = 0x00A2 },
+ centsuperior = { unicode = 0x00A2 },
+ commainferior = { unicode = 0x002C },
+ commasuperior = { unicode = 0x002C },
+ copyrightsans = { unicode = 0x00A9 },
+ copyrightserif = { unicode = 0x00A9 },
+ cyrBreve = { unicode = 0x02D8 },
+ cyrFlex = { unicode = {0x00A0, 0x0311} },
+ cyrbreve = { unicode = 0x02D8 },
+ cyrflex = { unicode = {0x00A0, 0x0311} },
+ dblGrave = { unicode = {0x00A0, 0x030F} },
+ dblgrave = { unicode = {0x00A0, 0x030F} },
+ dieresisacute = { unicode = {0x00A0, 0x0308, 0x0301} },
+ dieresisgrave = { unicode = {0x00A0, 0x0308, 0x0300} },
+ dollarinferior = { unicode = 0x0024 },
+ dollaroldstyle = { unicode = 0x0024 },
+ dollarsuperior = { unicode = 0x0024 },
+ dotlessj = { unicode = 0x0237 },
+ dsuperior = { unicode = 0x0064 },
+ eightoldstyle = { unicode = 0x0038 },
+ esuperior = { unicode = 0x0065 },
+ exclamdownsmall = { unicode = 0x00A1 },
+ exclamsmall = { unicode = 0x0021 },
+ fiveoldstyle = { unicode = 0x0035 },
+ fouroldstyle = { unicode = 0x0034 },
+ hypheninferior = { unicode = 0x002D },
+ hyphensuperior = { unicode = 0x002D },
+ isuperior = { unicode = 0x0069 },
+ ll = { unicode = {0x006C, 0x006C} },
+ lsuperior = { unicode = 0x006C },
+ msuperior = { unicode = 0x006D },
+ nineoldstyle = { unicode = 0x0039 },
+ onefitted = { unicode = 0x0031 },
+ oneoldstyle = { unicode = 0x0031 },
+ osuperior = { unicode = 0x006F },
+ periodinferior = { unicode = 0x002E },
+ periodsuperior = { unicode = 0x002E },
+ questiondownsmall = { unicode = 0x00BF },
+ questionsmall = { unicode = 0x003F },
+ registersans = { unicode = 0x00AE },
+ registerserif = { unicode = 0x00AE },
+ rsuperior = { unicode = 0x0072 },
+ rupiah = { unicode = 0x20A8 },
+ sevenoldstyle = { unicode = 0x0037 },
+ sixoldstyle = { unicode = 0x0036 },
+ ssuperior = { unicode = 0x0073 },
+ threeoldstyle = { unicode = 0x0033 },
+ trademarksans = { unicode = 0x2122 },
+ trademarkserif = { unicode = 0x2122 },
+ tsuperior = { unicode = 0x0074 },
+ twooldstyle = { unicode = 0x0032 },
+ zerooldstyle = { unicode = 0x0030 },
+ FFsmall = { unicode = {0x0066, 0x0066} },
+ FFIsmall = { unicode = {0x0066, 0x0066, 0x0069} },
+ FFLsmall = { unicode = {0x0066, 0x0066, 0x006C} },
+ FIsmall = { unicode = {0x0066, 0x0069} },
+ FLsmall = { unicode = {0x0066, 0x006C} },
+ Germandblssmall = { unicode = {0x0073, 0x0073} },
+ SSsmall = { unicode = {0x0073, 0x0073} },
+}
+-- For values that are used multiple times
+local function registeroverload(mapped)
+ mapped = {unicode = mapped}
+ local function multiset(first, ...)
+ if first then
+ rawset(overloads, first, mapped)
+ return multiset(...)
+ end
+ end
+ return multiset
+end
+
+-- These come from ConTeXt
+registeroverload { 0x49, 0x4A } ("IJ", "I_J", 0x0132)
+registeroverload { 0x69, 0x6A } ("ij", "i_j", 0x0133)
+registeroverload { 0x66, 0x66 } ("ff", "f_f", 0xFB00)
+registeroverload { 0x66, 0x69 } ("fi", "f_i", 0xFB01)
+registeroverload { 0x66, 0x6C } ("fl", "f_l", 0xFB02)
+registeroverload { 0x66, 0x66, 0x69 } ("ffi", "f_f_i", 0xFB03)
+registeroverload { 0x66, 0x66, 0x6C } ("ffl", "f_f_l", 0xFB04)
+registeroverload { 0x66, 0x6A } ("fj", "f_j")
+registeroverload { 0x66, 0x6B } ("fk", "f_k")
+
+fonts.mappings.overloads = overloads