OSDN Git Service

Fix errors: ltjb.package_error() is called with a table argument in ltj-charrange...
[luatex-ja/luatexja.git] / src / ltj-rmlgbm.lua
index 388577e..5ee567b 100644 (file)
@@ -10,12 +10,10 @@ luatexbase.provides_module({
 module('luatexja.rmlgbm', package.seeall)
 local err, warn, info, log = luatexbase.errwarinf(_NAME)
 
-require('luatexja.base');      local ltjb = luatexja.base
+luatexja.load_module('base');      local ltjb = luatexja.base
 
-local round = tex.round
 local cidfont_data = {}
 local cache_chars = {}
-local taux_dir = 'luatex-cache/luatexja'
 local path           = {
     localdir  = file.join(kpse.expand_var("$TEXMFVAR"), aux_dir),
     systemdir = file.join(kpse.expand_var("$TEXMFSYSVAR"), aux_dir),
@@ -30,17 +28,19 @@ local function read_cid_font(cid_name)
    if kpsefound and file.isreadable(kpsefound) then
       cidfont_data[cid_name] = require(kpsefound)
       cache_chars[cid_name]  = { [655360] = cidfont_data[cid_name].characters }
-      return
    elseif file.isreadable(localpath)  then
       cidfont_data[cid_name] = require(localpath)
       cache_chars[cid_name]  = { [655360] = cidfont_data[cid_name].characters }
-      return
    elseif file.isreadable(systempath) then
       cidfont_data[cid_name] = require(systempath)
       cache_chars[cid_name]  = { [655360] = cidfont_data[cid_name].characters }
-      return
    end
-   --
+   if cidfont_data[cid_name] then
+      for i,v in pairs(cidfont_data[cid_name].characters) do
+         if not v.width then v.width = 655360 end
+        v.height, v.depth = 576716.8, 78643.2 -- optimized for jfm-ujis.lua
+      end
+   end
 end
 
 -- High-level
@@ -75,13 +75,13 @@ local function mk_rml(name, size, id, cid_name)
    -- characters & scaling
    if size < 0 then size = -size * 655.36 end
    local scale = size / 655360
-   local def_height =  round(0.88 * size) -- character's default height (optimized for jfm-ujis.lua)
-   local def_depth =  round(0.12 * size)  -- and depth.
+   local def_height =  0.88 * size -- character's default height (optimized for jfm-ujis.lua)
+   local def_depth =  0.12 * size  -- and depth.
    if not cache_chars[cid_name][size] then
       cache_chars[cid_name][size]  = {}
       for k, v in pairs(cache_chars[cid_name][655360]) do
          cache_chars[cid_name][size][k] = { 
-           index = v.index, width = round(v.width * scale)
+           index = v.index, width = v.width * scale
            height = def_height, depth = def_depth, tounicode = v.tounicode,
         }
       end
@@ -140,19 +140,19 @@ function fonts.define.read(name, size, id)
       end
       cid_reg, cid_order = string.match(s, "^(.-)%-(.-)%-(%d-)$")
       if not cid_reg then 
-        cid_reg, cid_order = string.match(s, "^(.-)%-(.-)$")
+         cid_reg, cid_order = string.match(s, "^(.-)%-(.-)$")
       end
       cid_name = cid_reg .. '-' .. cid_order
       if not cidfont_data[cid_name] then 
-        read_cid_font(cid_name) 
-        if not cidfont_data[cid_name] then 
-           ltjb.package_error('luatexja',
-                        "bad cid key `" .. s .. "'",
-                        "I couldn't find any non-embedded font information for the CID\n" ..
-                                 '`' .. s .. "'. For now, I'll use `Adobe-Japan1-6'.\n"..
-                                 'Please contact the LuaTeX-ja project team.')
-           cid_name = "Adobe-Japan1"
-        end
+         read_cid_font(cid_name)
+         if not cidfont_data[cid_name] then 
+            ltjb.package_error('luatexja',
+                               "bad cid key `" .. s .. "'",
+                               "I couldn't find any non-embedded font information for the CID\n" ..
+                                  '`' .. s .. "'. For now, I'll use `Adobe-Japan1-6'.\n"..
+                                  'Please contact the LuaTeX-ja project team.')
+            cid_name = "Adobe-Japan1"
+         end
       end
       return mk_rml(basename, size, id, cid_name)
    else 
@@ -161,6 +161,4 @@ function fonts.define.read(name, size, id)
 end
 
 
-read_cid_font("Adobe-Japan1") 
-
-
+read_cid_font("Adobe-Japan1")
\ No newline at end of file