Current File : //usr/share/texlive/texmf-dist/tex/generic/babel/babel-data-cjk.lua |
--
-- This is file `babel-data-cjk.lua',
-- generated with the docstrip utility.
--
-- The original source files were:
--
-- babel.dtx (with options: `cjkdata')
--
--
-- Copyright (C) 2012-2021 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
--
-- This file is part of the Babel system.
-- --------------------------------------
--
-- It may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
-- of this license or (at your option) any later version.
-- The latest version of this license is in
-- http://www.latex-project.org/lppl.txt
-- and version 1.3 or later is part of all distributions of LaTeX
-- version 2003/12/01 or later.
--
-- This work has the LPPL maintenance status "maintained".
--
-- The Current Maintainer of this work is Javier Bezos.
--
-- The list of derived (unpacked) files belonging to the distribution
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
Babel = Babel or {}
Babel.cjk_characters = {
[0x0021]={c='ex'},
[0x0024]={c='pr'},
[0x0025]={c='po'},
[0x0028]={c='op'},
[0x0029]={c='cp'},
[0x002B]={c='pr'},
[0x002C]={c='is'},
[0x002D]={c='hy'},
[0x002E]={c='is'},
[0x002F]={c='sy'},
[0x003A]={c='is'},
[0x003B]={c='is'},
[0x003F]={c='ex'},
[0x005B]={c='op'},
[0x005C]={c='pr'},
[0x005D]={c='cp'},
[0x007B]={c='op'},
[0x007D]={c='cl'},
[0x00A1]={c='op'},
[0x00A2]={c='po'},
[0x00A3]={c='pr'},
[0x00A4]={c='pr'},
[0x00A5]={c='pr'},
[0x00B0]={c='po'},
[0x00B1]={c='pr'},
[0x201A]={c='op'},
[0x201E]={c='op'},
[0x2024]={c='in'},
[0x2025]={c='in'},
[0x2026]={c='in'},
[0x2030]={c='po'},
[0x2031]={c='po'},
[0x2032]={c='po'},
[0x2033]={c='po'},
[0x2034]={c='po'},
[0x2035]={c='po'},
[0x2036]={c='po'},
[0x2037]={c='po'},
[0x203C]={c='ns'},
[0x203D]={c='ns'},
[0x2044]={c='is'},
[0x2045]={c='op'},
[0x2046]={c='cl'},
[0x2047]={c='ns'},
[0x2048]={c='ns'},
[0x2049]={c='ns'},
[0x207D]={c='op'},
[0x207E]={c='cl'},
[0x208D]={c='op'},
[0x208E]={c='cl'},
[0x20A7]={c='po'},
[0x20B6]={c='po'},
[0x20BB]={c='po'},
[0x20BE]={c='po'},
[0x2103]={c='po'},
[0x2109]={c='po'},
[0x2116]={c='pr'},
[0x2212]={c='pr'},
[0x2213]={c='pr'},
[0x22EF]={c='in'},
[0x2308]={c='op'},
[0x2309]={c='cl'},
[0x230A]={c='op'},
[0x230B]={c='cl'},
[0x2329]={c='op'},
[0x232A]={c='cl'},
[0x2983]={c='op'},
[0x2984]={c='cl'},
[0x2985]={c='op'},
[0x2986]={c='cl'},
[0x2987]={c='op'},
[0x2988]={c='cl'},
[0x2989]={c='op'},
[0x298A]={c='cl'},
[0x298B]={c='op'},
[0x298C]={c='cl'},
[0x298D]={c='op'},
[0x298E]={c='cl'},
[0x298F]={c='op'},
[0x2990]={c='cl'},
[0x2991]={c='op'},
[0x2992]={c='cl'},
[0x2993]={c='op'},
[0x2994]={c='cl'},
[0x2995]={c='op'},
[0x2996]={c='cl'},
[0x2997]={c='op'},
[0x2998]={c='cl'},
[0x29D8]={c='op'},
[0x29D9]={c='cl'},
[0x29DA]={c='op'},
[0x29DB]={c='cl'},
[0x29FC]={c='op'},
[0x29FD]={c='cl'},
[0x2CF9]={c='ex'},
[0x2CFE]={c='ex'},
[0x2E18]={c='op'},
[0x2E22]={c='op'},
[0x2E23]={c='cl'},
[0x2E24]={c='op'},
[0x2E25]={c='cl'},
[0x2E26]={c='op'},
[0x2E27]={c='cl'},
[0x2E28]={c='op'},
[0x2E29]={c='cl'},
[0x2E2E]={c='ex'},
[0x2E42]={c='op'},
[0x3001]={c='cl'},
[0x3002]={c='cl'},
[0x3005]={c='ns'},
[0x3008]={c='op'},
[0x3009]={c='cl'},
[0x300A]={c='op'},
[0x300B]={c='cl'},
[0x300C]={c='op'},
[0x300D]={c='cl'},
[0x300E]={c='op'},
[0x300F]={c='cl'},
[0x3010]={c='op'},
[0x3011]={c='cl'},
[0x3014]={c='op'},
[0x3015]={c='cl'},
[0x3016]={c='op'},
[0x3017]={c='cl'},
[0x3018]={c='op'},
[0x3019]={c='cl'},
[0x301A]={c='op'},
[0x301B]={c='cl'},
[0x301C]={c='ns'},
[0x301D]={c='op'},
[0x301E]={c='cl'},
[0x301F]={c='cl'},
[0x303B]={c='ns'},
[0x303C]={c='ns'},
[0x309B]={c='ns'},
[0x309C]={c='ns'},
[0x309D]={c='ns'},
[0x309E]={c='ns'},
[0x30A0]={c='ns'},
[0x30FB]={c='ns'},
[0x30FD]={c='ns'},
[0x30FE]={c='ns'},
[0xA015]={c='ns'},
[0xA60E]={c='ex'},
[0xA838]={c='po'},
[0xFD3E]={c='cl'},
[0xFD3F]={c='op'},
[0xFDFC]={c='po'},
[0xFE10]={c='is'},
[0xFE11]={c='cl'},
[0xFE12]={c='cl'},
[0xFE13]={c='is'},
[0xFE14]={c='is'},
[0xFE15]={c='ex'},
[0xFE16]={c='ex'},
[0xFE17]={c='op'},
[0xFE18]={c='cl'},
[0xFE19]={c='in'},
[0xFE35]={c='op'},
[0xFE36]={c='cl'},
[0xFE37]={c='op'},
[0xFE38]={c='cl'},
[0xFE39]={c='op'},
[0xFE3A]={c='cl'},
[0xFE3B]={c='op'},
[0xFE3C]={c='cl'},
[0xFE3D]={c='op'},
[0xFE3E]={c='cl'},
[0xFE3F]={c='op'},
[0xFE40]={c='cl'},
[0xFE41]={c='op'},
[0xFE42]={c='cl'},
[0xFE43]={c='op'},
[0xFE44]={c='cl'},
[0xFE47]={c='op'},
[0xFE48]={c='cl'},
[0xFE50]={c='cl'},
[0xFE52]={c='cl'},
[0xFE54]={c='ns'},
[0xFE55]={c='ns'},
[0xFE56]={c='ex'},
[0xFE57]={c='ex'},
[0xFE59]={c='op'},
[0xFE5A]={c='cl'},
[0xFE5B]={c='op'},
[0xFE5C]={c='cl'},
[0xFE5D]={c='op'},
[0xFE5E]={c='cl'},
[0xFE69]={c='pr'},
[0xFE6A]={c='po'},
[0xFF01]={c='ex', w='f'},
[0xFF04]={c='pr', w='f'},
[0xFF05]={c='po', w='f'},
[0xFF08]={c='op', w='f'},
[0xFF09]={c='cl', w='f'},
[0xFF0C]={c='cl', w='f'},
[0xFF0E]={c='cl', w='f'},
[0xFF1A]={c='ns', w='f'},
[0xFF1B]={c='ns', w='f'},
[0xFF1F]={c='ex', w='f'},
[0xFF3B]={c='op', w='f'},
[0xFF3D]={c='cl', w='f'},
[0xFF5B]={c='op', w='f'},
[0xFF5D]={c='cl', w='f'},
[0xFF5F]={c='op', w='f'},
[0xFF60]={c='cl', w='f'},
[0xFF61]={c='cl', w='h'},
[0xFF62]={c='op', w='h'},
[0xFF63]={c='cl', w='h'},
[0xFF64]={c='cl', w='h'}
}
Babel.cjk_class = setmetatable ( Babel.cjk_characters, {
__index = function(_, k)
if (k >= 0xAC00 and k <= 0xD7A3) -- H2/H3
or (k >= 0x2E80 and k <= 0x9FFF)
or (k >= 0xA000 and k <= 0xA48F) -- Yi
or (k >= 0xA490 and k <= 0xA4CF) -- Yi
or (k >= 0xF900 and k <= 0xFAFF)
or (k >= 0xFE10 and k <= 0xFE1F)
or (k >= 0xFE30 and k <= 0xFE6F)
or (k >= 0xFF00 and k <= 0xFFEF)
or (k >= 0x1F000 and k <= 0x1FFFD)
or (k >= 0x20000 and k <= 0x2FFFD)
or (k >= 0x30000 and k <= 0x3FFFD) then
return {c='I'}
elseif (k >= 0x20A0 and k <= 0x20CF) then
return {c='pr'}
else
return {c='O'}
end
end })
-- Note ns = ex = sy = is = po = hy. Here, 'I' and 'O' are
-- pseudo-classes for ideographic-like (id, h2, h3), and 'other',
-- respectively. Jamo is not considered yet, but very likely at least
-- jl must be.
Babel.cjk_breaks = {
['op'] = { },
['cl'] = { ['op']=1, ['pr']=1, ['in']=1, ['I']=1 },
['ns'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
['ex'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
['sy'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
['is'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
['pr'] = { ['pr']=1, ['po']=1, ['in']=1 },
['po'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
['in'] = { ['op']=1, ['pr']=1, ['po']=1, ['I']=1 },
['hy'] = { ['op']=1, ['pr']=1, ['po']=1, ['in']=1, ['I']=1 },
--
['I'] = { ['op']=1, ['pr']=1, ['I']=1, ['O']=1 },
['O'] = { ['I']=1 }
}