summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-01-10 21:56:45 +0000
committerKarl Berry <karl@freefriends.org>2021-01-10 21:56:45 +0000
commitda5e5327ee2b5e772987c7938a951d277cc98645 (patch)
tree4fc12654d318e2cd04c3a6298fb2e9f7a93326e3 /Master/texmf-dist/tex/luatex
parent1aaf52882505ab718ede93473aaf667281ae9ebd (diff)
luavlna (10jan21)
git-svn-id: svn://tug.org/texlive/trunk@57379 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex')
-rw-r--r--Master/texmf-dist/tex/luatex/luavlna/luavlna.lua28
-rw-r--r--Master/texmf-dist/tex/luatex/luavlna/luavlna.sty4
-rw-r--r--Master/texmf-dist/tex/luatex/luavlna/luavlna.tex12
3 files changed, 33 insertions, 11 deletions
diff --git a/Master/texmf-dist/tex/luatex/luavlna/luavlna.lua b/Master/texmf-dist/tex/luatex/luavlna/luavlna.lua
index 511ee859a1b..be833905f22 100644
--- a/Master/texmf-dist/tex/luatex/luavlna/luavlna.lua
+++ b/Master/texmf-dist/tex/luatex/luavlna/luavlna.lua
@@ -166,6 +166,20 @@ end
local init_buffer = ""
local is_initial = function(c, lang)
+ -- space is not initial
+ if c == " " then
+ init_buffer = ""
+ return false
+ end
+ -- look in the initals table
+ if lang then
+ -- insert the current character to the init_buffer
+ -- and try to find the string in the initial table
+ -- for the current language
+ init_buffer = init_buffer .. c
+ local tbl = initials[lang] or {}
+ if tbl[init_buffer] then return true end
+ end
return is_uppercase(c)
end
@@ -295,7 +309,7 @@ local function prevent_single_letter (head)
space = false
-- handle initials
-- uppercase letter followed by period (code 46)
- elseif no_initials~=true and init and head.id == glyph_id and head.char == period_char and nextn.id == glue_id and utf_len(word) == 1 then
+ elseif no_initials~=true and init and head.id == glyph_id and head.char == period_char and nextn.id == glue_id then
head = insert_penalty(head)
elseif head.id == glyph_id then
local char = getchar(head)
@@ -334,7 +348,7 @@ end
-- detect if the current character is a hyphen
local function is_breakable_hyphen(n)
- return n.id == glyph_id and hyphenate_langs[n.lang] and n.char == hyphenchar
+ return n.id == glyph_id and hyphenate_langs[n.lang] and n.char == hyphenchar and n.next
end
-- don't process hyphens if the next node is penalty
@@ -346,6 +360,14 @@ local function is_next_penalty(n)
end
end
+-- split hyphens should be active only inside words, there is no need to break
+-- standalone hyphens
+local function is_next_glyph(n)
+ local next_node = n.next
+ return next_node and next_node.id == glyph_id
+end
+
+
-- Enable hyphenation of words that contain hyphens
-- and repeating of the explicit hyphen on a new line when
-- the hyphen is hyphenated
@@ -357,7 +379,7 @@ local break_hyphens = function(head, tail)
local n = head
while n do
local skip = node.has_attribute(n, M.preventsingleid)
- if skip ~= 1 and is_breakable_hyphen(n) and not is_next_penalty(n) and not is_hyphen_ligature(n) then
+ if skip ~= 1 and is_breakable_hyphen(n) and not is_next_penalty(n) and is_next_glyph(n) and not is_hyphen_ligature(n) then
-- Insert an infinite penalty before, and a zero-width glue node after, the hyphen.
-- Like writing "\nobreak-\hspace{0pt}" or equivalently "\penalty10000-\hskip0pt"
local p = node.new(node.id('penalty'))
diff --git a/Master/texmf-dist/tex/luatex/luavlna/luavlna.sty b/Master/texmf-dist/tex/luatex/luavlna/luavlna.sty
index aa6f623aa9c..89e6d475435 100644
--- a/Master/texmf-dist/tex/luatex/luavlna/luavlna.sty
+++ b/Master/texmf-dist/tex/luatex/luavlna/luavlna.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{luavlna}[2019/10/30 luavlna]
+\ProvidesPackage{luavlna}[2021-01-08 luavlna]
\RequirePackage{kvoptions}
@@ -23,7 +23,7 @@
\def\enablesplithyphens#1{%
\ifcsname l@#1\endcsname%
- \typeout{set lang #1, \the\csname l@#1\endcsname}%
+ \typeout{set lang #1, \the\csname l@#1\endcsname}
\directlua{enable_split_hyphens("\the\csname l@#1\endcsname")}%
\fi%
}
diff --git a/Master/texmf-dist/tex/luatex/luavlna/luavlna.tex b/Master/texmf-dist/tex/luatex/luavlna/luavlna.tex
index 0b6540a5cc6..ab47b8d6fcf 100644
--- a/Master/texmf-dist/tex/luatex/luavlna/luavlna.tex
+++ b/Master/texmf-dist/tex/luatex/luavlna/luavlna.tex
@@ -71,20 +71,20 @@ end
% Set letters which are prevented from breaking
\def\singlechars#1#2{%
-\directlua{set_singlechars("#1","#2")}%
+\directlua{set_singlechars("#1","#2")}
}
% Define compound initials
\def\compoundinitials#1#2{%
-\directlua{set_compounds("#1","#2")}%
+\directlua{set_compounds("#1","#2")}
}
% Enable inserting of visual marks for debugging
\def\preventsingledebugon{%
-\directlua{luavlna.debug(true)}%
+\directlua{luavlna.debug(true)}
}
\def\preventsinglelang#1{%
- \directlua{set_main_language("#1")}%
+ \directlua{set_main_language("#1")}
}
%\newluatexattribute\preventsinglestatus
@@ -94,12 +94,12 @@ end
\preventsinglestatus=2
}
-\def\preventsingleoff{%
+\def\preventsingleoff{
\preventsinglestatus=1
}
% Disable inserting of visual marks for dewbugging
\def\preventsingledebugoff{%
-\directlua{luavlna.debug(false)}%
+\directlua{luavlna.debug(false)}
}
% enable/disable split hyphens for a language