You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
7.4 KiB
200 lines
7.4 KiB
-----------------------------------------------------------------------
|
|
-- FILE: luaotfload-tounicode.lua
|
|
-- DESCRIPTION: part of luaotfload / tounicode overwrites
|
|
-----------------------------------------------------------------------
|
|
|
|
local ProvidesLuaModule = {
|
|
name = "luaotfload-tounicode",
|
|
version = "3.14", --TAGVERSION
|
|
date = "2020-05-06", --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
|
|
|