+local ltjr_cidfont_data = ltjr.cidfont_data
+
+local OTF = luatexja.userid_table.OTF
+
+local function get_ucs_from_rmlgbm(c)
+ local v = ltjr_cidfont_data["Adobe-Japan1"].resources.unicodes["Japan1." .. tostring(c)]
+ if not v then -- AJ1 範囲外
+ return 0
+ elseif v<0xF0000 then -- 素直に Unicode にマップ可能
+ return v
+ else
+ local w = ltjr_cidfont_data["Adobe-Japan1"].characters[v]. tounicode
+ -- must be non-nil!
+ local i = string.len(w)
+ if i==4 then -- UCS2
+ return tonumber(w,16)
+ elseif i==8 then
+ i,w = tonumber(string.sub(w,1,4),16), tonumber(string.sub(w,-4),16)
+ if (w>=0xD800) and (w<=0xDB7F) and (i>=0xDC00) and (i<=0xDFFF) then -- Surrogate pair
+ return (w-0xD800)*0x400 + (i-0xDC00)
+ else
+ return 0
+ end
+ end
+ end
+end