OSDN Git Service

luatexja-core.sty: insert \leavevmode in the def. of \ltjjachar and \ltjalchar
[luatex-ja/luatexja.git] / src / jfm-ujis.lua
index d2cd13b..08f567d 100644 (file)
 -- jfm-ujis.lua: LuaTeX-ja 標準 JFM
 -- based on upnmlminr-h.tfm (a metric in UTF/OTF package used by upTeX).
 
-luatexja.jfont.define_jfm {
+-- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う
+-- kanjiskip:    0pt plus .25zw minus 0pt
+-- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw
+
+local t = {
+   version = 3,
    dir = 'yoko',
    zw = 1.0, zh = 1.0,
-
+   kanjiskip =  { 0.0, 0.25, 0 },
+   xkanjiskip = { 0.25, 0.25, .125 },
    [0] = {
       align = 'left', left = 0.0, down = 0.0,
       width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 }
-      }
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [007] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [107] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [207] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [8] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = { [307] = 0 },     
+      round_threshold = 0.01,
    },
 
    [1] = { -- 開き括弧類
       chars = {
-        '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', 
+        '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖',
         '〘', '〝', '(', '[', '{', '⦅'
       },
       align = 'right', left = 0.0, down = 0.0,
       width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [3] = { 0.25, 0.0, 0.25 }
+-- 3 のみ四分,あとは0
+         [0] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [1] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1, kanjiskip_stretch=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [5] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [105] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [205] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [305] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [405] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [007] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [107] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [207] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [8] = { 0, 0, 0, kanjiskip_shrink=1 },
       }
    },
 
    [2] = { -- 閉じ括弧類
       chars = {
-        'â\80\99', 'â\80\9d', 'ã\80\81', 'ã\80\89', 'ã\80\8b', 'ã\80\8d', 'ã\80\8f', 'ã\80\91', 'ã\80\95', 
-        'ã\80\97', 'ã\80\99', 'ã\80\9f', 'ï¼\89', 'ï¼\8c*', 'ï¼½', 'ï½\9d', 'ï½ ', 
+        'â\80\99', 'â\80\9d', 'ã\80\89', 'ã\80\8b', 'ã\80\8d', 'ã\80\8f', 'ã\80\91', 'ã\80\95',
+        'ã\80\97', 'ã\80\99', 'ã\80\9f', 'ï¼\89', 'ï¼½', 'ï½\9d', 'ï½ ', 'ã\80\81', 'ï¼\8c*'
       },
       align = 'left', left = 0.0, down = 0.0,
       width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [0] = { 0.5 , 0.0, 0.5  },
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 },
-        [5] = { 0.5 , 0.0, 0.5  },
-        [6] = { 0.5 , 0.0, 0.5  },
-        [7] = { 0.5 , 0.0, 0.5  },
-        [8] = { 0.5 , 0.0, 0.5  },
+-- 3 は四分, 2, 4, 9 は0, あとは0.5
+        [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+         [2] = { 0, 0, 0, kanjiskip_shrink=1},
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+         [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [205] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [305] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [405] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
       }
    },
 
    [3] = { -- 中点類
-      chars = {'・', ':', ';'},
+      chars = {'・', ':', ';', '·'},
       align = 'middle', left = 0.0, down = 0.0,
       width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+      --end_stretch = 0.25,
       glue = {
-        [0] = { 0.25, 0.0, 0.25 },
-        [1] = { 0.25, 0.0, 0.25 },
-        [2] = { 0.25, 0.0, 0.25 },
-        [3] = { 0.5 , 0.0, 0.5  },
-        [4] = { 0.25, 0.0, 0.25 },
-        [5] = { 0.25, 0.0, 0.25 },
-        [6] = { 0.25, 0.0, 0.25 },
-        [7] = { 0.25, 0.0, 0.25 },
-        [8] = { 0.25, 0.0, 0.25 },
+-- 3 のみ 0.5,あとは0.25
+        [0] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [1] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [2] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [3] = { 0.5 , 0.0, 0.5 , priority=1 },
+        [4] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [5] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [105] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [205] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [305] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [405] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [6] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [007] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [107] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [207] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [8] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
       }
    },
 
@@ -67,72 +114,187 @@ luatexja.jfont.define_jfm {
       align = 'left', left = 0.0, down = 0.0,
       width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [0] = { 0.5 , 0.0, 0.0  },
-        [1] = { 0.5 , 0.0, 0.0  },
-        [3] = { 0.75, 0.0, 0.25 },
-        [5] = { 0.5 , 0.0, 0.0  },
-        [6] = { 0.5 , 0.0, 0.0  },
-        [7] = { 0.5 , 0.0, 0.0  },
-        [8] = { 0.5 , 0.0, 0.0  },
+         -- 3 は.75, 2, 4 は0, あとは0.5
+        [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1./3, kanjiskip_stretch=1 },
+        [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [205] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [305] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [405] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
+        [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
       }
    },
 
-   [5] = { -- ダッシュ
-      chars = { 'â\80\94', 'â\80\95', 'â\80¥', 'â\80¦' },
+   [5] = { -- 分離禁止文字
+      chars = { 'â\80\95', 'â\80¥', 'â\80¦', 'ã\80³', 'ã\80´', 'ã\80µ', },
       align = 'left', left = 0.0, down = 0.0,
       width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 }
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = {
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
+      }
+   },
+
+   [105] = { -- 二分(二重)ダッシュ
+      chars = { '゠', '–' },
+      align = 'middle', left = 0.0, down = 0.0,
+      width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = {
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
+      }
+   },
+
+   [205] = { -- em-dash
+      chars = { 0x2014 },
+      align = 'middle', left = 0.0, down = 0.0,
+      width = 1, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = {
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
+      }
+   },
+   [305] = { -- two-em dash
+      chars = { 0x2E3A },
+      align = 'middle', left = 0.0, down = 0.0,
+      width = 2, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = {
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
+      }
+   },
+   [405] = { -- three-em dash
+      chars = { 0x2E3B },
+      align = 'middle', left = 0.0, down = 0.0,
+      width = 3, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
       },
       kern = {
-        [5] = 0.0
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
       }
    },
 
    [6] = { -- 感嘆符・疑問符
-      chars = { '?', '!' },
+      chars = { '?', '!', '‼', '⁇', '⁈', '⁉', },
       align = 'left', left = 0.0, down = 0.0,
       width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [0] = { 0.5 , 0.0, 0.5  },
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 },
-        [7] = { 0.5 , 0.0, 0.5  },
+         [0] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [007] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [107] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [207] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [8] = { 0, 0, 0, kanjiskip_shrink=1 },
       },
       kern = {
-        [5] = 0.0,
-        [8] = 0.0
+        [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0,
       }
    },
 
-   [7] = { -- 半角カナ
+   [007] = { -- 半角カナ,その他半角CID
       chars = {
-        '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', 
-        'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', 
-        'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 
-        'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 
-        'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 
-        'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 
+        '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ',
+        'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ',
+        'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ',
+        'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト',
+        'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ',
+        'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ',
         'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚',
-        "AJ1-516", "AJ1-517", "AJ1-518", "AJ1-519", "AJ1-520", "AJ1-521", "AJ1-522", 
-        "AJ1-523", "AJ1-524", "AJ1-525", "AJ1-526", "AJ1-527", "AJ1-528", "AJ1-529", 
-        "AJ1-530", "AJ1-531", "AJ1-532", "AJ1-533", "AJ1-534", "AJ1-535", "AJ1-536", 
-        "AJ1-537", "AJ1-538", "AJ1-539", "AJ1-540", "AJ1-541", "AJ1-542", "AJ1-543", 
-        "AJ1-544", "AJ1-545", "AJ1-546", "AJ1-547", "AJ1-548", "AJ1-549", "AJ1-550", 
-        "AJ1-551", "AJ1-552", "AJ1-553", "AJ1-554", "AJ1-555", "AJ1-556", "AJ1-557", 
-        "AJ1-558", "AJ1-559", "AJ1-560", "AJ1-561", "AJ1-562", "AJ1-563", "AJ1-564", 
-        "AJ1-565", "AJ1-566", "AJ1-567", "AJ1-568", "AJ1-569", "AJ1-570", "AJ1-571", 
-        "AJ1-572", "AJ1-573", "AJ1-574", "AJ1-575", "AJ1-576", "AJ1-577", "AJ1-578", 
-        "AJ1-579", "AJ1-580", "AJ1-581", "AJ1-582", "AJ1-583", "AJ1-584", "AJ1-585", 
-        "AJ1-586", "AJ1-587", "AJ1-588", "AJ1-589", "AJ1-590", "AJ1-591", "AJ1-592", 
-        "AJ1-593", "AJ1-594", "AJ1-595", "AJ1-596", "AJ1-597", "AJ1-598",
       },
       align = 'left', left = 0.0, down = 0.0,
-      width = 0.5, height = 0.88, depth = 0.12, italic=0.0,      
+      width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [8] = { 0, 0, 0, kanjiskip_shrink=1 },
+      },
+      kern = { [307] = 0 },     
+   },
+
+   [107] = { -- 1/3 角
+      chars = {},
+      align = 'left', left = 0.0, down = 0.0,
+      width = 1/3, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 }
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [107] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [8] = { 0, 0, 0, kanjiskip_shrink=1 },
+      }
+   },
+
+   [207] = { -- 1/4 角
+      chars = {},
+      align = 'left', left = 0.0, down = 0.0,
+      width = 0.25, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [207] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [8] = { 0, 0, 0, kanjiskip_shrink=1 },
+      }
+   },
+
+   [307] = { -- 合成用(半)濁点
+      chars = { 0x3099, 0x309A },
+      align = 'right', left = 0.0, down = 0.0,
+      width = 0, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [207] = { 0, 0, 0, kanjiskip_shrink=1 },
+         [8] = { 0, 0, 0, kanjiskip_shrink=1 },
       }
    },
 
@@ -146,7 +308,7 @@ luatexja.jfont.define_jfm {
         '┨', '┩', '┪', '┫', '┬', '┭', '┮', '┯',
         '┰', '┱', '┲', '┳', '┴', '┵', '┶', '┷',
         '┸', '┹', '┺', '┻', '┼', '┽', '┾', '┿',
-        '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇', 
+        '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇',
         '╈', '╉', '╊', '╋', '╌', '╍', '╎', '╏',
         '═', '║', '╒', '╓', '╔', '╕', '╖', '╗',
         '╘', '╙', '╚', '╛', '╜', '╝', '╞', '╟',
@@ -158,8 +320,11 @@ luatexja.jfont.define_jfm {
       align = 'left', left = 0.0, down = 0.0,
       width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
       glue = {
-        [1] = { 0.5 , 0.0, 0.5  },
-        [3] = { 0.25, 0.0, 0.25 }
+        [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
+        [2] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
+        [4] = { 0, 0, 0, kanjiskip_shrink=1 },
+        [6] = { 0, 0, 0, kanjiskip_shrink=1 },
       },
       kern = {
         [8] = 0.0
@@ -167,10 +332,43 @@ luatexja.jfont.define_jfm {
    },
 
    [99] = { -- box末尾
-      chars = {'boxbdd', 'parbdd'},
-      glue = {
-        [3] = { 0.25, 0.0, 0.25 },
-      }
+      chars = {'boxbdd', 'glue'},
+   },
+   [199] = { -- box末尾
+      chars = {'parbdd'},
    },
+}
+
+local ht = t[007].chars
+for i=231,632 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
+for i=8718,8719 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
+for i=12063,12087 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
+local ht = t[107].chars
+for i=9758,9778 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
+local ht = t[207].chars
+for i=9738,9757 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
+
+t[100]=table.fastcopy(t[0])
+t[100].chars={'nox_alchar'}
+for i,v in pairs(t) do
+  if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外
+    if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end
+    if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end
+  end
+end
+t[200]=table.fastcopy(t[0])
+t[200].chars={ 0x3031,0x3032 }
+t[200].height=1.38; t[200].depth=0.62
+for i,v in pairs(t) do
+  if type(i)=='number' and type(v)=='table' then
+    if v.glue and v.glue[0] then v.glue[200] = v.glue[0] end
+    if v.kern and v.kern[0] then v.kern[200] = v.kern[0] end
+  end
+end
+
+local jf = luatexja.jfont.jfm_feature
+if jf and jf.beginpar_middledot_zw==true then
+    t[199].kern = { [3] = 0.25 }
+end
 
-}
\ No newline at end of file
+luatexja.jfont.define_jfm(t)