On 4/24/2020 7:44 PM, Ao Shen wrote:
Thanks for your timely reply!

Hans Hagen <j.ha...@xs4all.nl> 于2020年4月24日周五 下午11:38写道:

no, but i must admit that it's kind of a border case ... i'll fix it but
also wonder if *no* visual rule showing up is intended (i would then
also expect an engine to show a rule .. could be an interesting new
(luametatex) option as it saves kerns in some cases)

My use cases of negative vrule is a little tricky. I'm trying to comply with
W3C's [Requirements for Japanese Text Layout](https://www.w3.org/TR/jlreq/).
It states that

   In principle, closing brackets (cl-02), commas (cl-07) or full stops (cl-06)
   at the line end have a half em space after them (see Fig. 3.20). This half em
   space can be deleted for line adjustment. However, the possibilities are only
   half em space or solid. Other spaces, such as a quarter em space should not 
be
   used.

The tricky part is that I also want the opening fullwidth bracket at the
beginning of the line to be solid, i.e., without half em sidebearing on the left
to make the left margin visually more aligned (this is one but not the only way
of line begining handling shown in jlreq).

To achieve this, in the scripts handler I use the following injector between
'full_width_close' and 'full_width_open':

\hskip -0.5em \penalty 100 \hskip 0.5em minus 0.5em \vrule width
-0.5em height 0pt
^^^(a)        ^^^(b)

If line is broken here, the only broken points are (a) before the glue or (b) at
the penalty point. With the vrule the sidebearing of the opening bracket at
beginning of next line is eliminated.

In this particular case, a kern is not applicable because it won't survive the
line break. And here a vrule showing nothing is intended.
How about something ...

\startluacode

local classes = fonts.protrusions.classes
local vectors = fonts.protrusions.vectors

classes.myown = {
    vector = 'myown',
    factor = 1,
}

vectors.myown = table.merged (vectors.quality, {

    [0x0028] = { 1, 0 }, -- (
    [0x0029] = { 0, 1 }, -- )

})

\stopluacode

\starttext

\showframe

\definefontfeature[whatever][default][protrusion=myown]

\definedfont[Serif*whatever] \setupalign[hanging]

\dorecurse{100}{(#1) }

\stoptext

of course you need to define the cjk fences etc.

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to