From 9b70f2ee9e20830cfb39ca3b139e6f3aa04be1f1 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Mon, 6 Feb 2017 21:21:48 +0100 Subject: Revert "[features] remove unneeded tlig features" This reverts commit 7250ac958d842f45d28220db87203506d3ae65c0. As per issue #405. --- src/luaotfload-features.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/luaotfload-features.lua b/src/luaotfload-features.lua index 5c35031..a57aac3 100644 --- a/src/luaotfload-features.lua +++ b/src/luaotfload-features.lua @@ -1288,6 +1288,10 @@ local tlig_specification = { data = { [0x2013] = {0x002D, 0x002D}, -- endash [0x2014] = {0x002D, 0x002D, 0x002D}, -- emdash + [0x201C] = {0x2018, 0x2018}, -- quotedblleft + [0x201D] = {0x2019, 0x2019}, -- quotedblright + [0x00A1] = {0x0021, 0x2018}, -- exclamdown + [0x00BF] = {0x003F, 0x2018}, -- questiondown --- next three originate in T1 encoding; Xetex applies --- them too [0x201E] = {0x002C, 0x002C}, -- quotedblbase @@ -1298,6 +1302,19 @@ local tlig_specification = { order = { "tlig" }, prepend = true, }, + { + type = "ligature", + features = everywhere, + data = { + [0x201C] = {0x0060, 0x0060}, -- quotedblleft + [0x201D] = {0x0027, 0x0027}, -- quotedblright + [0x00A1] = {0x0021, 0x0060}, -- exclamdown + [0x00BF] = {0x003F, 0x0060}, -- questiondown + }, + flags = noflags, + order = { "tlig" }, + prepend = true, + }, } local rot13_specification = { -- cgit v1.2.3 From 94649446c7d25187901b396845067dc7d8b7d61d Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Mon, 6 Feb 2017 21:24:03 +0100 Subject: [fontloader] informal patch by Hans --- src/fontloader/misc/fontloader-font-gbn.lua | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/fontloader/misc/fontloader-font-gbn.lua b/src/fontloader/misc/fontloader-font-gbn.lua index 1f8df64..21c6061 100644 --- a/src/fontloader/misc/fontloader-font-gbn.lua +++ b/src/fontloader/misc/fontloader-font-gbn.lua @@ -37,6 +37,7 @@ local getdisc = nuts.getdisc local setchar = nuts.setchar local setlink = nuts.setlink local setprev = nuts.setprev +local nodetail = nuts.tail -- from now on we apply ligaturing and kerning here because it might interfere with complex -- opentype discretionary handling where the base ligature pass expect some weird extra @@ -200,21 +201,15 @@ function nodes.handlers.nodepass(head) local stop = range[2] if start then local front = nuthead == start - local prev, next + if not stop then + stop = nodetail(start) + end if stop then - next = getnext(stop) start, stop = ligaturing(start,stop) start, stop = kerning(start,stop) - else - prev = getprev(start) - start = ligaturing(start) - start = kerning(start) - end - if prev then - setlink(prev,start) - end - if next then - setlink(stop,next) + elseif start then -- safeguard + start, stop = ligaturing(start,stop) + start, stop = kerning(start,stop) end if front and nuthead ~= start then head = tonode(start) -- cgit v1.2.3 From 8f001b0979b8b05079f4df00f174f40ed6badee1 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 7 Feb 2017 07:47:28 +0100 Subject: =?UTF-8?q?[features]=20elucidate=20default=20=E2=80=9Cligatures?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/luaotfload-features.lua | 87 +++++++++++++++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/src/luaotfload-features.lua b/src/luaotfload-features.lua index a57aac3..8068f4f 100644 --- a/src/luaotfload-features.lua +++ b/src/luaotfload-features.lua @@ -1274,9 +1274,17 @@ local tlig_specification = { type = "substitution", features = everywhere, data = { - [0x0022] = 0x201D, -- quotedblright - [0x0027] = 0x2019, -- quoteleft - [0x0060] = 0x2018, -- quoteright + --- quotedblright: + --- " (QUOTATION MARK) → ” (RIGHT DOUBLE QUOTATION MARK) + [0x0022] = 0x201D, + + --- quoteleft: + --- ' (APOSTROPHE) → ’ (RIGHT SINGLE QUOTATION MARK) + [0x0027] = 0x2019, + + --- quoteright: + --- ` (GRAVE ACCENT) → ‘ (LEFT SINGLE QUOTATION MARK) + [0x0060] = 0x2018, }, flags = noflags, order = { "tlig" }, @@ -1286,30 +1294,55 @@ local tlig_specification = { type = "ligature", features = everywhere, data = { - [0x2013] = {0x002D, 0x002D}, -- endash - [0x2014] = {0x002D, 0x002D, 0x002D}, -- emdash - [0x201C] = {0x2018, 0x2018}, -- quotedblleft - [0x201D] = {0x2019, 0x2019}, -- quotedblright - [0x00A1] = {0x0021, 0x2018}, -- exclamdown - [0x00BF] = {0x003F, 0x2018}, -- questiondown - --- next three originate in T1 encoding; Xetex applies - --- them too - [0x201E] = {0x002C, 0x002C}, -- quotedblbase - [0x00AB] = {0x003C, 0x003C}, -- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - [0x00BB] = {0x003E, 0x003E}, -- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - }, - flags = noflags, - order = { "tlig" }, - prepend = true, - }, - { - type = "ligature", - features = everywhere, - data = { - [0x201C] = {0x0060, 0x0060}, -- quotedblleft - [0x201D] = {0x0027, 0x0027}, -- quotedblright - [0x00A1] = {0x0021, 0x0060}, -- exclamdown - [0x00BF] = {0x003F, 0x0060}, -- questiondown + + --- endash: + --- [--] (HYPHEN-MINUS, HYPHEN-MINUS) → – (EN DASH) + [0x2013] = {0x002D, 0x002D}, + + --- emdash: + --- [---] (HYPHEN-MINUS, HYPHEN-MINUS, HYPHEN-MINUS) → — (EM DASH) + [0x2014] = {0x002D, 0x002D, 0x002D}, + + --- quotedblleft: + --- [''] (GRAVE ACCENT, GRAVE ACCENT) → “ (LEFT DOUBLE QUOTATION MARK) + [0x201C] = {0x0060, 0x0060}, + --- quotedblleft: + --- [‘‘] (LEFT SINGLE QUOTATION MARK, LEFT SINGLE QUOTATION MARK) → “ (LEFT DOUBLE QUOTATION MARK) + [0x201C] = {0x2018, 0x2018}, + + --- quotedblright: + --- [``] (APOSTROPHE, APOSTROPHE) → ” (RIGHT DOUBLE QUOTATION MARK) + [0x201D] = {0x0027, 0x0027}, + --- quotedblright: + --- [’’] (RIGHT SINGLE QUOTATION MARK, RIGHT SINGLE QUOTATION MARK) → ” (RIGHT DOUBLE QUOTATION MARK) + [0x201D] = {0x2019, 0x2019}, + + --- exclamdown: + --- [!'] (EXCLAMATION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK) + [0x00A1] = {0x0021, 0x0060}, + --- exclamdown: + --- [!‘] (EXCLAMATION MARK, LEFT SINGLE QUOTATION MARK) → ¡ (INVERTED EXCLAMATION MARK) + [0x00A1] = {0x0021, 0x2018}, + + --- questiondown: + --- [?'] (QUESTION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK) + [0x00BF] = {0x003F, 0x0060}, + --- questiondown: + --- [?'] (QUESTION MARK, LEFT SINGLE QUOTATION MARK) → ¡ (INVERTED EXCLAMATION MARK) + [0x00BF] = {0x003F, 0x2018}, + + --- next three originate in T1 encoding (Xetex applies them too) + --- quotedblbase: + --- [,,] (COMMA, COMMA) → ¡ (DOUBLE LOW-9 QUOTATION MARK) + [0x201E] = {0x002C, 0x002C}, + + --- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK: + --- [,,] (LESS-THAN SIGN, LESS-THAN SIGN) → ¡ (LEFT-POINTING ANGLE QUOTATION MARK) + [0x00AB] = {0x003C, 0x003C}, + + --- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK: + --- [,,] (GREATER-THAN SIGN, GREATER-THAN SIGN) → ¡ (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK) + [0x00BB] = {0x003E, 0x003E}, }, flags = noflags, order = { "tlig" }, -- cgit v1.2.3 From 46b9e82b9ec5f02db1fd326115a337142e97fed0 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 7 Feb 2017 07:53:54 +0100 Subject: [features] v2: remove unneeded ligatures V2 of 7250ac958d842f45d28220db87203506d3ae65c0 commit 7250ac958d842f45d28220db87203506d3ae65c0 Author: Philipp Gesang Date: Thu Feb 2 07:38:03 2017 +0100 [features] remove unneeded tlig features Fix #397 These four features should not be inserted automatically. which was reverted in commit 9b70f2ee9e20830cfb39ca3b139e6f3aa04be1f1 Author: Philipp Gesang Date: Mon Feb 6 21:21:48 2017 +0100 Revert "[features] remove unneeded tlig features" addressing issues #397, #405. --- src/luaotfload-features.lua | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/luaotfload-features.lua b/src/luaotfload-features.lua index 8068f4f..f11f05b 100644 --- a/src/luaotfload-features.lua +++ b/src/luaotfload-features.lua @@ -1306,30 +1306,18 @@ local tlig_specification = { --- quotedblleft: --- [''] (GRAVE ACCENT, GRAVE ACCENT) → “ (LEFT DOUBLE QUOTATION MARK) [0x201C] = {0x0060, 0x0060}, - --- quotedblleft: - --- [‘‘] (LEFT SINGLE QUOTATION MARK, LEFT SINGLE QUOTATION MARK) → “ (LEFT DOUBLE QUOTATION MARK) - [0x201C] = {0x2018, 0x2018}, --- quotedblright: --- [``] (APOSTROPHE, APOSTROPHE) → ” (RIGHT DOUBLE QUOTATION MARK) [0x201D] = {0x0027, 0x0027}, - --- quotedblright: - --- [’’] (RIGHT SINGLE QUOTATION MARK, RIGHT SINGLE QUOTATION MARK) → ” (RIGHT DOUBLE QUOTATION MARK) - [0x201D] = {0x2019, 0x2019}, --- exclamdown: --- [!'] (EXCLAMATION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK) [0x00A1] = {0x0021, 0x0060}, - --- exclamdown: - --- [!‘] (EXCLAMATION MARK, LEFT SINGLE QUOTATION MARK) → ¡ (INVERTED EXCLAMATION MARK) - [0x00A1] = {0x0021, 0x2018}, --- questiondown: --- [?'] (QUESTION MARK, GRAVE ACCENT) → ¡ (INVERTED EXCLAMATION MARK) [0x00BF] = {0x003F, 0x0060}, - --- questiondown: - --- [?'] (QUESTION MARK, LEFT SINGLE QUOTATION MARK) → ¡ (INVERTED EXCLAMATION MARK) - [0x00BF] = {0x003F, 0x2018}, --- next three originate in T1 encoding (Xetex applies them too) --- quotedblbase: -- cgit v1.2.3 From 5711c3b96a11549233afd9bfcbfea16189321525 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Fri, 10 Feb 2017 22:33:27 +0100 Subject: [parsers] extend definition grammar to allow for subfonts in path lookups --- src/luaotfload-parsers.lua | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/luaotfload-parsers.lua b/src/luaotfload-parsers.lua index c2b4f2e..8c297ac 100644 --- a/src/luaotfload-parsers.lua +++ b/src/luaotfload-parsers.lua @@ -602,6 +602,22 @@ local combodef1 = Ct(comboidx * combomapsep * comboid) --> no chars local combodef = Ct(comboidx * combomapsep * comboidchars) local combolist = Ct(combodef1 * (comborowsep * combodef)^1) +--- subfonts ---------------------------------------------------------- +--- This rule is present in the original parser. It sets the “sub” +--- field of the specification which allows addressing a specific +--- font inside a TTC container. Neither in Luatex-Fonts nor in +--- Luaotfload is this documented, so we might as well silently drop +--- it. However, as backward compatibility is one of our prime goals we +--- just insert it here and leave it undocumented until someone cares +--- to ask. (Note: afair subfonts are numbered, but this rule matches a +--- string; I won’t mess with it though until someone reports a +--- problem.) +--- local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim +--- Note to self: subfonts apparently start at index 0. Tested with +--- Cambria.ttc that includes “Cambria Math” at 0 and “Cambria” at 1. +--- Other values cause luatex to segfault. +local subfont = P"(" * Cg((1 - S"()")^1, "sub") * P")" + --- lookups ----------------------------------------------------------- local fontname = C((1-S":(/")^1) --- like luatex-fonts local unsupported = Cmt((1-S":(")^1, check_garbage) @@ -619,6 +635,7 @@ local prefixed = P"name:" * ws * Cg(fontname, "name") + P"my:" * ws * Cg(fontname, "my") local unprefixed = Cg(fontname, "anon") local path_lookup = lbrk * Cg(C((1-rbrk)^1), "path") * rbrk + * subfont^-1 --- features ---------------------------------------------------------- local field_char = anum + S"+-.!?" --- sic! @@ -644,22 +661,6 @@ local feature_list = Cf(Ct"" * (featuresep * option^-1)^0 , rawset) * featuresep^-1 - ---- other ------------------------------------------------------------- ---- This rule is present in the original parser. It sets the “sub” ---- field of the specification which allows addressing a specific ---- font inside a TTC container. Neither in Luatex-Fonts nor in ---- Luaotfload is this documented, so we might as well silently drop ---- it. However, as backward compatibility is one of our prime goals we ---- just insert it here and leave it undocumented until someone cares ---- to ask. (Note: afair subfonts are numbered, but this rule matches a ---- string; I won’t mess with it though until someone reports a ---- problem.) ---- local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim ---- Note to self: subfonts apparently start at index 0. Tested with ---- Cambria.ttc that includes “Cambria Math” at 0 and “Cambria” at 1. ---- Other values cause luatex to segfault. -local subfont = P"(" * Cg((1 - S"()")^1, "sub") * P")" --- top-level rules --------------------------------------------------- --- \font\foo=: local features = Cg(feature_list, "features") -- cgit v1.2.3 From 7672c73027c722849e9beeaab1f3e95351fd6b25 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Fri, 10 Feb 2017 23:33:18 +0100 Subject: [parsers] allow escapes and balanced brackets in path lookups With that, the definition parser will accept anything except for unbalanced brackets -- unless backslash escaped -- as part of the font definition. --- src/luaotfload-parsers.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/luaotfload-parsers.lua b/src/luaotfload-parsers.lua index 8c297ac..b188bb0 100644 --- a/src/luaotfload-parsers.lua +++ b/src/luaotfload-parsers.lua @@ -12,7 +12,8 @@ local traversal_maxdepth = 42 --- prevent stack overflows local rawset = rawset local lpeg = require "lpeg" -local P, R, S = lpeg.P, lpeg.R, lpeg.S +local patterns = lpeg.patterns +local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V local lpegmatch = lpeg.match local C, Cc, Cf = lpeg.C, lpeg.Cc, lpeg.Cf local Cg, Cmt, Cs, Ct = lpeg.Cg, lpeg.Cmt, lpeg.Cs, lpeg.Ct @@ -57,6 +58,7 @@ local equals = P"=" local dash = P"-" local gartenzaun = P"#" local lbrk, rbrk = P"[", P"]" +local brackets = lbrk + rbrk local squote = P"'" local dquote = P"\"" @@ -634,7 +636,18 @@ local prefixed = P"name:" * ws * Cg(fontname, "name") + P"kpse:" * ws * Cg(fontname, "kpse") + P"my:" * ws * Cg(fontname, "my") local unprefixed = Cg(fontname, "anon") -local path_lookup = lbrk * Cg(C((1-rbrk)^1), "path") * rbrk +--- Bracketed “path” lookups: These may contain any character except +--- for unbalanced brackets. A backslash escapes any following +--- character. Everything inside the outermost brackets is treated as +--- part of the filename or path to look up. Subfonts may be specified +--- in parens *after* the closing bracket. Note that this differs from +--- Xetex whose syntax expects the subfont passed inside the brackets, +--- separated by a colon. +local path_escape = backslash / "" * patterns.utf8char +local path_content = path_escape + (1 - brackets) +local path_balanced = { (path_content + V(2))^1 + , lbrk * V(1)^-1 * rbrk } +local path_lookup = lbrk * Cg(Cs(path_balanced), "path") * rbrk * subfont^-1 --- features ---------------------------------------------------------- -- cgit v1.2.3 From f4a719d2a4d302e4cb6014a518b2ceb0729b172f Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Fri, 10 Feb 2017 23:41:52 +0100 Subject: [loaders] include file and subfont in diagnostics --- src/luaotfload-loaders.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/luaotfload-loaders.lua b/src/luaotfload-loaders.lua index 87275ef..802776c 100644 --- a/src/luaotfload-loaders.lua +++ b/src/luaotfload-loaders.lua @@ -151,6 +151,11 @@ do logreport ("both", 0, "loaders", " > fontname %q", result.fontname or "") logreport ("both", 0, "loaders", " > fullname %q", result.fullname or "") logreport ("both", 0, "loaders", " > type %s", result.type or "") + local spec = result.specification + if spec then + logreport ("both", 0, "loaders", " > file %q", spec.filename or "") + logreport ("both", 0, "loaders", " > subfont %s", spec.sub or "") + end return result end end -- cgit v1.2.3 From 894e27119cba0a294f8e1f5c6e9a70055f4e1ba1 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Sat, 11 Feb 2017 00:00:29 +0100 Subject: [doc] document syntax for path lookup --- doc/luaotfload-main.tex | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/luaotfload-main.tex b/doc/luaotfload-main.tex index c26235e..b82c8d9 100644 --- a/doc/luaotfload-main.tex +++ b/doc/luaotfload-main.tex @@ -183,7 +183,7 @@ for a more formal description see figure \ref{font-syntax}. \alt ; ::= , [`:', ] - \alt `[', `]', [ [`:'], ] ; + \alt , [ [`:'], ] ; ::= , [ ], \{ \} \alt , \{ \} ; @@ -218,7 +218,13 @@ for a more formal description see figure \ref{font-syntax}. ::= {\sc tfmname} | ; - ::= \{ {\sc all_characters} - `]' \} ; + ::= `[', \{ \}, `]', [ ] ; + + ::= + \alt `\\', {\sc all_characters} + \alt {\sc all_characters} - `]' + + ::= `[', [ ], `]' ::= `/', (`I' | `B' | `BI' | `IB' | `S=', \{ {\sc digit} \} ) ; @@ -608,7 +614,7 @@ obviously, \inlinecode{random}. For scripts derived from the Latin alphabet the value \inlinecode{latn} is good choice. } - the default value is \inlinecode{dlft}. + the default value is \inlinecode{dflt}. % Some fonts, including very popular ones by foundries like Adobe, do not assign features to the \inlinecode{dflt} script, in -- cgit v1.2.3 From ad480924393fffa2896156e1a32c22f5c61120dd Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Sat, 11 Feb 2017 00:21:52 +0100 Subject: [doc] extend documentation of path lookups --- doc/luaotfload-main.tex | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/doc/luaotfload-main.tex b/doc/luaotfload-main.tex index b82c8d9..21e001b 100644 --- a/doc/luaotfload-main.tex +++ b/doc/luaotfload-main.tex @@ -240,6 +240,7 @@ for a more formal description see figure \ref{font-syntax}. ::= {\sc all_characters} - ( `(' | `/' | `:' ) ; \endsyntaxfloat +%% Below guarded space gets borked in index; why‽ \beginsubsection{Prefix -- the \identifier{luaotfload}{ }Way} In \identifier{luaotfload}, the canonical syntax for font requests @@ -335,13 +336,12 @@ The file names corresponding to the example font names above are \endsubsection -\beginsubsection {Compatibility Layer} - -In addition to the regular prefixed requests, \identifier{luaotfload} -accepts loading fonts the \XETEX way. +\beginsubsection {Bracketed Lookups} +\label{sec:conf} +Bracketed lookups allow for arbitrary character content to be used in a +definition. % -There are again two modes: bracketed and unbracketed. -A bracketed request looks as follows. +A simple bracketed request looks follows the scheme \beginnarrower \nonproportional{\string\font\string\fontname\space = [}% @@ -350,21 +350,41 @@ A bracketed request looks as follows. \endnarrower \noindent -Inside the square brackets, every character except for a closing -bracket is permitted, allowing for specifying paths to a font file. +Inside the square brackets, every character except for a closing bracket is +permitted, allowing for arbitrary paths to a font file -- including Windows +style paths with UNC or drive letter prepended -- to be specified. % +The \identifier{Luaotfload} syntax differs from \XETEX in that the subfont +selector goes \emphasis{after} the closing bracket: + +\beginnarrower + \nonproportional{\string\font\string\fontname\space = [}% + \meta{/path/to/file}% + \nonproportional{]} + \nonproportional{(}n\nonproportional{)} +\endnarrower + Naturally, path-less file names are equally valid and processed the same way as an ordinary \inlinecode {file:} lookup. +\beginsubsection {Compatibility} + +In addition to the regular prefixed requests, \identifier{luaotfload} +accepts loading fonts the \XETEX way. +% +There are again two modes: bracketed and unbracketed. +For the bracketed variety, see above, \ref{sec:conf}. + +Unbracketed (or, for lack of a better word: \emphasis{anonymous}) +font requests resemble the conventional \TEX syntax. + \beginnarrower \nonproportional{\string\font\string\fontname\space= }% \meta{font name} \dots \endnarrower +\endsubsection -Unbracketed (or, for lack of a better word: \emphasis{anonymous}) -font requests resemble the conventional \TEX syntax. -% However, they have a broader spectrum of possible interpretations: before anything else, \identifier{luaotfload} attempts to load a traditional \TEX Font Metric (\abbrev{tfm} or \abbrev{ofm}). @@ -443,6 +463,13 @@ name.\footnote{% \font \cambriamath = "file:cambria.ttc(1)" at 10pt \endlisting +and likewise, requesting subfont inside a TTC container by path: + +\beginlisting + \font \asanamain = "[/home/typesetter/.fonts/math/asana.ttc](0):mode=node;+tlig" at 10pt + \font \asanamath = "[/home/typesetter/.fonts/math/asana.ttc](1):mode=base" at 10pt +\endlisting + \endsubsubsection \beginsubsubsection{Loading by Font Name} -- cgit v1.2.3