summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2013-11-07 15:28:00 +0100
committerHans Hagen <pragma@wxs.nl>2013-11-07 15:28:00 +0100
commit1612bb5b0ee8c774cd13ba982707834e4e6d8f42 (patch)
tree96f6045e63964617606031f1e5ea146110ac49b0
parentbb223a07b8a1d982e70a1cf3f28279fd0f2dda57 (diff)
downloadcontext-1612bb5b0ee8c774cd13ba982707834e4e6d8f42.tar.gz
beta 2013.11.07 15:28
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4117 -> 4113 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/font-hsh.lua20
-rw-r--r--tex/context/base/font-otf.lua2
-rw-r--r--tex/context/base/font-sel.lua47
-rw-r--r--tex/context/base/font-sel.mkvi2
-rw-r--r--tex/context/base/node-met.lua1
-rw-r--r--tex/context/base/status-files.pdfbin24554 -> 25437 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin225204 -> 253267 bytes
-rw-r--r--tex/context/base/task-ini.lua2
-rw-r--r--tex/context/base/typo-tal.lua31
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua4
13 files changed, 75 insertions, 38 deletions
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 3bff56b57..29db39968 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2013.11.05 09:50}
+\newcontextversion{2013.11.07 15:28}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 895eedd2e..99a25304b 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 30ccafca8..956166209 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -25,7 +25,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2013.11.05 09:50}
+\edef\contextversion{2013.11.07 15:28}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/font-hsh.lua b/tex/context/base/font-hsh.lua
index 773cc2b69..1b0dd08b8 100644
--- a/tex/context/base/font-hsh.lua
+++ b/tex/context/base/font-hsh.lua
@@ -34,6 +34,7 @@ local marks = hashes.marks or allocate()
local italics = hashes.italics or allocate()
local lastmathids = hashes.lastmathids or allocate()
local dynamics = hashes.dynamics or allocate()
+local unicodes = hashes.unicodes or allocate()
hashes.characters = characters
hashes.descriptions = descriptions
@@ -50,6 +51,7 @@ hashes.marks = marks
hashes.italics = italics
hashes.lastmathids = lastmathids
hashes.dynamics = dynamics
+hashes.unicodes = unicodes
local nodepool = nodes.pool
local dummyglyph = nodepool.register(nodepool.glyph())
@@ -259,6 +261,24 @@ setmetatableindex(dynamics, function(t,k)
end
end)
+setmetatableindex(unicodes, function(t,k)
+ if k == true then
+ return originals[currentfont()]
+ else
+ local resources = resources[k]
+ local originals = resources and resources.originals or { }
+ local characters = characters[k]
+ local unicodes = { }
+ setmetatableindex(unicodes,function(t,k)
+ local v = originals[characters[k].index] or k
+ t[k] = v
+ return v
+ end)
+ t[k] = unicodes
+ return unicodes
+ end
+end)
+
function font.getfont(id)
return identifiers[id]
end
diff --git a/tex/context/base/font-otf.lua b/tex/context/base/font-otf.lua
index 6ebcb9cf9..5b10c1181 100644
--- a/tex/context/base/font-otf.lua
+++ b/tex/context/base/font-otf.lua
@@ -464,7 +464,7 @@ function otf.load(filename,sub,featurefile) -- second argument (format) is gone
},
goodies = {
},
- helpers = {
+ helpers = { -- might go away
tounicodelist = splitter,
tounicodetable = lpeg.Ct(splitter),
},
diff --git a/tex/context/base/font-sel.lua b/tex/context/base/font-sel.lua
index 47268ade8..fff425fa1 100644
--- a/tex/context/base/font-sel.lua
+++ b/tex/context/base/font-sel.lua
@@ -6,31 +6,33 @@ if not modules then modules = { } end modules ['font-sel'] = {
license = "GNU General Public License"
}
-local context = context
-local cleanname = fonts.names.cleanname
-local gsub, splitup, find = string.gsub, string.splitup, string.find
-local formatters = string.formatters
-local settings_to_array = utilities.parsers.settings_to_array
+local context = context
+local cleanname = fonts.names.cleanname
+local gsub, splitup, find = string.gsub, string.splitup, string.find
+local splitbase, removesuffix = file.splitbase, file.removesuffix
-local v_yes = interfaces.variables.yes
-local v_simplefonts = interfaces.variables.simplefonts
-local v_selectfont = interfaces.variables.selectfont
-local v_default = interfaces.variables.default
+local formatters = string.formatters
+local settings_to_array = utilities.parsers.settings_to_array
-local selectfont = fonts.select or { }
-fonts.select = selectfont
+local v_yes = interfaces.variables.yes
+local v_simplefonts = interfaces.variables.simplefonts
+local v_selectfont = interfaces.variables.selectfont
+local v_default = interfaces.variables.default
-local data = selectfont.data or { }
-selectfont.data = data
+local selectfont = fonts.select or { }
+fonts.select = selectfont
-local fallbacks = selectfont.fallbacks or { }
-selectfont.fallbacks = fallbacks
+local data = selectfont.data or { }
+selectfont.data = data
-local methods = selectfont.methods or { }
-selectfont.methods = methods
+local fallbacks = selectfont.fallbacks or { }
+selectfont.fallbacks = fallbacks
-local getlookups = fonts.names.getlookups
-local registerdesignsizes = fonts.goodies.designsizes.register
+local methods = selectfont.methods or { }
+selectfont.methods = methods
+
+local getlookups = fonts.names.getlookups
+local registerdesignsizes = fonts.goodies.designsizes.register
local alternatives = {
["tf"] = "regular",
@@ -382,7 +384,7 @@ end
methods["file"] = function(data,alternative,filename)
local data = data
local family = data.metadata.family
- local filename = gsub(file.removesuffix(filename),"*",family)
+ local filename = gsub(removesuffix(filename),"*",family)
local filename = getlookups{ cleanfilename = cleanname(filename) }
if #filename > 0 then
savefont(data,alternative,filename)
@@ -480,15 +482,16 @@ local function definefontsynonym(data,alternative,index,fallback)
for _, entry in next, fontdata do
if entry["minsize"] and entry["maxsize"] then
if size[1] > entry["minsize"] and size[1] <= entry["maxsize"] then
- registerdesignsizes( fontfile, size[2], entry["filename"] )
+ local filepath, filename = splitbase(entry["filename"])
+ registerdesignsizes( fontfile, size[2], filename )
end
end
end
end
for _, entry in next, fontdata do
- local filename = entry["filename"]
local designsize = entry["designsize"] or 100
if designsize == 100 or designsize == 120 or designsize == 0 then
+ local filepath, filename = splitbase(entry["filename"])
registerdesignsizes( fontfile, "default", filename )
break
end
diff --git a/tex/context/base/font-sel.mkvi b/tex/context/base/font-sel.mkvi
index 2c022473b..3d4dc6807 100644
--- a/tex/context/base/font-sel.mkvi
+++ b/tex/context/base/font-sel.mkvi
@@ -364,4 +364,4 @@
\c!smallcapsfeatures=\s!smallcaps,
\c!style=\s!rm]
-\protect \ No newline at end of file
+\protect
diff --git a/tex/context/base/node-met.lua b/tex/context/base/node-met.lua
index d6b3df213..7d10ce9f8 100644
--- a/tex/context/base/node-met.lua
+++ b/tex/context/base/node-met.lua
@@ -91,6 +91,7 @@ nodes.traverse_id = node.traverse_id
nodes.slide = node.slide
nodes.vpack = node.vpack
nodes.fields = node.fields
+nodes.is_node = node.is_node
nodes.first_glyph = node.first_glyph
nodes.first_character = node.first_character
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 868cec117..83a5e5d03 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index 4fd46f9d3..73535bb60 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua
index 51aa550cb..3447214bd 100644
--- a/tex/context/base/task-ini.lua
+++ b/tex/context/base/task-ini.lua
@@ -27,7 +27,6 @@ appendaction("processors", "normalizers", "typesetters.characters.handler")
appendaction("processors", "normalizers", "fonts.collections.process") -- disabled
appendaction("processors", "normalizers", "fonts.checkers.missing") -- disabled
-appendaction("processors", "characters", "typesetters.characteralign.handler") -- disabled
appendaction("processors", "characters", "scripts.autofontfeature.handler")
appendaction("processors", "characters", "scripts.splitters.handler") -- disabled
appendaction("processors", "characters", "typesetters.cleaners.handler") -- disabled
@@ -51,6 +50,7 @@ appendaction("processors", "fonts", "builders.kernel.kerning")
appendaction("processors", "fonts", "nodes.handlers.stripping") -- disabled (might move)
------------("processors", "fonts", "typesetters.italics.handler") -- disabled (after otf/kern handling)
+appendaction("processors", "lists", "typesetters.characteralign.handler") -- disabled (we need to to this after otf appliance)
appendaction("processors", "lists", "typesetters.spacings.handler") -- disabled
appendaction("processors", "lists", "typesetters.kerns.handler") -- disabled
appendaction("processors", "lists", "typesetters.digits.handler") -- disabled (after otf handling)
diff --git a/tex/context/base/typo-tal.lua b/tex/context/base/typo-tal.lua
index 3df8dd00a..4cfd27d91 100644
--- a/tex/context/base/typo-tal.lua
+++ b/tex/context/base/typo-tal.lua
@@ -17,6 +17,7 @@ local glyph_code = nodecodes.glyph
local glue_code = nodecodes.glue
local fontcharacters = fonts.hashes.characters
+local unicodes = fonts.hashes.unicodes
local categories = characters.categories -- nd
local insert_node_before = nodes.insert_before
@@ -72,7 +73,12 @@ function characteralign.handler(head,where)
if not datasets then
return head, false
end
- local first = first_glyph(head) -- we could do that once
+ -- local first = first_glyph(head) -- we could do that once
+ local first
+ for n in traverse_list_by_id(glyhp_code,head) do
+ first = n
+ break
+ end
if not first then
return head, false
end
@@ -97,12 +103,17 @@ function characteralign.handler(head,where)
local id = current.id
if id == glyph_code then
local char = current.char
- if char == separator then
+ local font = current.font
+ local unicode = unicodes[font][char]
+ if not unicode then
+ -- no unicode so forget about it
+ elseif unicode == separator then
c = current
if trace_split then
setcolor(current,"darkred")
end
- elseif categories[char] == "nd" or validseparators[char] then
+ dataset.hasseparator = true
+ elseif categories[unicode] == "nd" or validseparators[unicode] then
if c then
if not a_start then
a_start = current
@@ -137,10 +148,10 @@ function characteralign.handler(head,where)
end
end
elseif not b_start then
- sign = validsigns[char] and current
+ sign = validsigns[unicode] and current
end
elseif (b_start or a_start) and id == glue_code then
- -- somewhat inefficient
+ -- somewhat inefficient
local next = current.next
local prev = current.prev
if next and prev and next.id == glyph_code and prev.id == glyph_code then -- too much checking
@@ -169,12 +180,12 @@ function characteralign.handler(head,where)
maxafter = after
end
end
- dataset.maxafter = maxafter
dataset.maxbefore = maxbefore
+ dataset.maxafter = maxafter
dataset.collected = true
end
- local maxafter = dataset.maxafter
local maxbefore = dataset.maxbefore
+ local maxafter = dataset.maxafter
local before = entry.before or 0
local after = entry.after or 0
local new_kern = trace_split and traced_kern or new_kern
@@ -184,8 +195,10 @@ function characteralign.handler(head,where)
end
if not c then
-- print("[before]")
- local width = fontcharacters[b_stop.font][separator].width
- insert_node_after(head,b_stop,new_kern(maxafter+width))
+ if dataset.hasseparator then
+ local width = fontcharacters[b_stop.font][separator].width
+ insert_node_after(head,b_stop,new_kern(maxafter+width))
+ end
elseif a_start then
-- print("[before] [separator] [after]")
if after < maxafter then
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 8163ae8ad..b426ce304 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 11/05/13 09:50:05
+-- merge date : 11/07/13 15:28:28
do -- begin closure to overcome local limits and interference
@@ -6725,7 +6725,7 @@ function otf.load(filename,sub,featurefile)
},
descriptions={},
goodies={},
- helpers={
+ helpers={
tounicodelist=splitter,
tounicodetable=lpeg.Ct(splitter),
},