OSDN Git Service

Merge branch 'kitagawa_test' of git.sourceforge.jp:/gitroot/luatex-ja/luatexja into...
[luatex-ja/luatexja.git] / src / ltj-jfont.lua
index 17a2463..3e4e0b1 100644 (file)
@@ -62,7 +62,6 @@ local function norm_val(a)
    end
 end
 
-
 function define_jfm(t)
    local real_char -- Does current character class have the 'real' character?
    if t.dir~=jfm_dir then
@@ -75,16 +74,13 @@ function define_jfm(t)
       if type(i) == 'number' then -- char_type
         if not v.chars then
            if i ~= 0 then defjfm_res= nil; return  end
-           real_char = true
         else
-           real_char = false
            for j,w in pairs(v.chars) do
               if type(w) == 'number' and w~=-1 then
-                 real_char = true;
               elseif type(w) == 'string' and utf.len(w)==1 then
-                 real_char = true; w = utf.byte(w)
+                 w = utf.byte(w)
               elseif type(w) == 'string' and utf.len(w)==2 and utf.sub(w,2) == '*' then
-                 real_char = true; w = utf.byte(utf.sub(w,1,1))
+                 w = utf.byte(utf.sub(w,1,1))
               end
               if not t.chars[w] then
                  t.chars[w] = i
@@ -92,35 +88,29 @@ function define_jfm(t)
                  defjfm_res= nil; return
               end
            end
-            if type(v.align)~='string' then
-               v.align = 'left' -- left
-            end
-           if real_char then
-              if type(v.width)~='number' and v.width~='prop' then
-                 defjfm_res= nil; return
-              else
-                 if v.width=='prop' and jfm_dir=='tate' then
-                    v.width = 1.0
-                 end
-                 if type(v.height)~='number' then
-                    v.height = 0.0
-                 end
-                 if type(v.depth)~='number' then
-                    v.depth = 0.0
-                 end
-                 if type(v.italic)~='number' then
-                    v.italic = 0.0
-                 end
-                 if type(v.left)~='number' then
-                    v.left = 0.0
-                 end
-                 if type(v.down)~='number' then
-                    v.down = 0.0
-                 end
-              end
-           end
            v.chars = nil
         end
+        if type(v.align)~='string' then
+           v.align = 'left' -- left
+        end
+        if type(v.width)~='number' then
+           v.width = (jfm_dir=='tate') and  1.0
+        end
+        if type(v.height)~='number' then
+           v.height = (jfm_dir=='tate') and  0.0
+        end
+        if type(v.depth)~='number' then
+           v.depth =  (jfm_dir=='tate') and  0.0
+        end
+        if type(v.italic)~='number' then
+           v.italic = 0.0
+        end
+        if type(v.left)~='number' then
+           v.left = 0.0
+        end
+        if type(v.down)~='number' then
+           v.down = 0.0
+        end
         v.kern = v.kern or {}; v.glue = v.glue or {}
         for j,x in pairs(v.glue) do
            if v.kern[j] then defjfm_res= nil; return end
@@ -373,9 +363,11 @@ do
            name = name .. 'jfmvar=' .. jfm_var
         end
       end
-      if name:match('-ltjksp') then jfm_ksp = false end
+      for x in string.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'))
+        is_vert_enabled = (not name:match('[:;]%-vert')) and (not  name:match('[:;]%-vrt2'))
          if not name:match('vert') and not name:match('vrt2') then
             name = name .. ';vert;vrt2'
          end