diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
commit | 8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch) | |
tree | 94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/scrp-eth.lua | |
parent | f5aed2e51223c36c84c5f25a6cad238b2af59087 (diff) | |
download | context-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz |
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/scrp-eth.lua')
-rw-r--r-- | tex/context/base/scrp-eth.lua | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/tex/context/base/scrp-eth.lua b/tex/context/base/scrp-eth.lua deleted file mode 100644 index 8ecbce522..000000000 --- a/tex/context/base/scrp-eth.lua +++ /dev/null @@ -1,158 +0,0 @@ -if not modules then modules = { } end modules ['scrp-eth'] = { - version = 1.001, - comment = "companion to scrp-ini.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - --- at some point I will review the script code but for the moment we --- do it this way; so space settings like with cjk yet - -local nuts = nodes.nuts - -local getnext = nuts.getnext -local getfont = nuts.getfont -local getchar = nuts.getchar -local getid = nuts.getid -local getattr = nuts.getattr - -local insert_node_before = nuts.insert_before - -local nodepool = nuts.pool - -local new_glue = nodepool.glue -local new_penalty = nodepool.penalty - -local nodecodes = nodes.nodecodes -local glyph_code = nodecodes.glyph - -local a_scriptstatus = attributes.private('scriptstatus') -local a_scriptinjection = attributes.private('scriptinjection') - -local categorytonumber = scripts.categorytonumber -local numbertocategory = scripts.numbertocategory -local hash = scripts.hash -local numbertodataset = scripts.numbertodataset - -local fonthashes = fonts.hashes -local parameters = fonthashes.parameters - -local space, stretch, shrink, lastfont - -local inter_character_space_factor = 1 -local inter_character_stretch_factor = 1 -local inter_character_shrink_factor = 1 - -local function space_glue(current) - local data = numbertodataset[getattr(current,a_scriptinjection)] - if data then - inter_character_space_factor = data.inter_character_space_factor or 1 - inter_character_stretch_factor = data.inter_character_stretch_factor or 1 - inter_character_shrink_factor = data.inter_character_shrink_factor or 1 - end - local font = getfont(current) - if lastfont ~= font then - local pf = parameters[font] - space = pf.space - stretch = pf.space_stretch - shrink = pf.space_shrink - lastfont = font - end - return new_glue( - inter_character_space_factor * space, - inter_character_stretch_factor * stretch, - inter_character_shrink_factor * shrink - ) -end - -local function insert_space(head,current) - insert_node_before(head,current,space_glue(current)) -end - -local function insert_zerowidthspace(head,current) - insert_node_before(head,current,new_glue(0)) -end - -local function insert_nobreakspace(head,current) - insert_node_before(head,current,new_penalty(10000)) - insert_node_before(head,current,space_glue(current)) -end - --- syllable [zerowidthspace] syllable --- syllable [zerowidthspace] word --- syllable [zerowidthspace] sentence --- word [nobreakspace] syllable --- word [space] word --- word [space] sentence --- sentence [nobreakspace] syllable --- sentence [space] word --- sentence [space] sentence - -local injectors = { -- [previous] [current] - ethiopic_syllable = { - ethiopic_syllable = insert_zerowidthspace, - ethiopic_word = insert_nobreakspace, - ethiopic_sentence = insert_nobreakspace, - }, - ethiopic_word = { - ethiopic_syllable = insert_space, - ethiopic_word = insert_space, - ethiopic_sentence = insert_space, - }, - ethiopic_sentence = { - ethiopic_syllable = insert_space, - ethiopic_word = insert_space, - ethiopic_sentence = insert_space, - }, -} - -local function process(head,first,last) - if first ~= last then - local injector = false - local current = first - while current do - local id = getid(current) - if id == glyph_code then - local scriptstatus = getattr(current,a_scriptstatus) - local category = numbertocategory[scriptstatus] - if injector then - local action = injector[category] - if action then - action(head,current) - end - end - injector = injectors[category] - else - -- nothing yet - end - if current == last then - break - else - current = getnext(current) - end - end - end -end - -scripts.installmethod { - name = "ethiopic", - injector = process, - datasets = { - default = { - inter_character_space_factor = 1, - inter_character_stretch_factor = 1, - inter_character_shrink_factor = 1, - }, - half = { - inter_character_space_factor = 0.5, - inter_character_stretch_factor = 0.5, - inter_character_shrink_factor = 0.5, - }, - quarter = { - inter_character_space_factor = 0.25, - inter_character_stretch_factor = 0.25, - inter_character_shrink_factor = 0.25, - }, - }, -} |