OSDN Git Service
(root)
/
luatex-ja
/
luatexja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'kitagawa_test' into cjascale
[luatex-ja/luatexja.git]
/
src
/
ltj-jfont.lua
diff --git
a/src/ltj-jfont.lua
b/src/ltj-jfont.lua
index
3b217a6
..
e18fece
100644
(file)
--- a/
src/ltj-jfont.lua
+++ b/
src/ltj-jfont.lua
@@
-3,7
+3,7
@@
--
luatexbase.provides_module({
name = 'luatexja.jfont',
--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2017/0
8/09
',
+ date = '2017/0
9/04
',
description = 'Loader for Japanese fonts',
})
module('luatexja.jfont', package.seeall)
description = 'Loader for Japanese fonts',
})
module('luatexja.jfont', package.seeall)
@@
-365,11
+365,19
@@
do
end
do
end
do
+ local gmatch = string.gmatch
-- extract jfm_file_name and jfm_var
-- normalize position of 'jfm=' and 'jfmvar=' keys
local function extract_metric(name)
-- extract jfm_file_name and jfm_var
-- normalize position of 'jfm=' and 'jfmvar=' keys
local function extract_metric(name)
- local is_braced = name:match('^{(.*)}$')
- name= is_braced or name
+ do
+ local nametemp
+ nametemp = name:match('^{(.*)}$')
+ if nametemp then name = nametemp
+ else
+ nametemp = name:match('^"(.*)"$')
+ name = nametemp or name
+ end
+ end
jfm_file_name = ''; jfm_var = ''; jfm_ksp = true
local tmp, index = name:sub(1, 5), 1
if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then
jfm_file_name = ''; jfm_var = ''; jfm_ksp = true
local tmp, index = name:sub(1, 5), 1
if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then
@@
-378,7
+386,7
@@
do
local p = name:find(":", index); index = p and (p+1) or index
while index do
local l = name:len()+1
local p = name:find(":", index); index = p and (p+1) or index
while index do
local l = name:len()+1
- local q = name:find(";", index
+1
) or l
+ local q = name:find(";", index) or l
if name:sub(index, index+3)=='jfm=' and q>index+4 then
jfm_file_name = name:sub(index+4, q-1)
if l~=q then
if name:sub(index, index+3)=='jfm=' and q>index+4 then
jfm_file_name = name:sub(index+4, q-1)
if l~=q then
@@
-408,16
+416,17
@@
do
name = name .. 'jfmvar=' .. jfm_var
end
end
name = name .. 'jfmvar=' .. jfm_var
end
end
- for x in
string.
gmatch (name, "[:;]([+%%-]?)ltjks") do
+ for x in gmatch (name, "[:;]([+%%-]?)ltjks") do
jfm_ksp = not (x=='-')
end
if jfm_dir == 'tate' then
is_vert_enabled = (not name:match('[:;]%-vert')) and (not name:match('[:;]%-vrt2'))
jfm_ksp = not (x=='-')
end
if jfm_dir == 'tate' then
is_vert_enabled = (not name:match('[:;]%-vert')) and (not name:match('[:;]%-vrt2'))
- auto_enable_vrt2 = (not name:match('vert') and not name:match('vrt2'))
+ auto_enable_vrt2
+ = (not name:match('[:;][+%-]?vert')) and (not name:match('[:;][+%-]?vrt2'))
else
is_vert_enabled, auto_enable_vrt2 = nil, nil
end
else
is_vert_enabled, auto_enable_vrt2 = nil, nil
end
- return
is_braced and ('{' .. name .. '}') or
name
+ return name
end
-- define_font callback
end
-- define_font callback
@@
-744,7
+753,7
@@
do
if i.order[1]== 'vert' and i.type == 'gsub_single' and i.steps then
for _,j in pairs(i.steps) do
if type(j)=='table' then
if i.order[1]== 'vert' and i.type == 'gsub_single' and i.steps then
for _,j in pairs(i.steps) do
if type(j)=='table' then
- if type(j
,
coverage)=='table' then
+ if type(j
.
coverage)=='table' then
for i,_ in pairs(j.coverage) do rot[i]=nil end
end
end
for i,_ in pairs(j.coverage) do rot[i]=nil end
end
end
@@
-850,12
+859,21
@@
do
end
prepare_fl_data = function (dest, id)
local t = fontloader.info(id.filename)
end
prepare_fl_data = function (dest, id)
local t = fontloader.info(id.filename)
+ if not t then return dest end
local fl
local fl
- if t.f
ile
name then
+ if t.f
ont
name then
fl = fontloader.open(id.filename)
else
fl = fontloader.open(id.filename)
else
- fl = fontloader.open(id.filename, id.fullname)
+ fl = fontloader.open(id.filename, id.fontname) -- マニュアルにはこっちで書いてあるが?
+ if not fl then
+ local index
+ for i,v in ipairs(t) do
+ if v.fontname == id.fontname then index=i; break end
+ end
+ fl = fontloader.open(id.filename, index)
+ end
end
end
+ if not fl then fontloader.close(fl); return dest end
local ind_to_uni, unicodes = {}, {}
for i,v in pairs(id.characters) do
ind_to_uni[v.index] = i
local ind_to_uni, unicodes = {}, {}
for i,v in pairs(id.characters) do
ind_to_uni[v.index] = i
@@
-931,7
+949,7
@@
do
font_extra_basename[bname] = dat or {}
ltjb.save_cache( v,
{
font_extra_basename[bname] = dat or {}
ltjb.save_cache( v,
{
- chksum =
checksum(id.filename)
,
+ chksum =
newsum
,
version = cache_ver,
dat,
})
version = cache_ver,
dat,
})