ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <pragma@wxs.nl>
To: ntg-context@ntg.nl
Subject: Re: two issues with new hyphenator
Date: Tue, 09 Dec 2014 00:07:11 +0100	[thread overview]
Message-ID: <54862F1F.3060100@wxs.nl> (raw)
In-Reply-To: <5485D614.3050504@gmx.es>

On 12/8/2014 5:47 PM, Pablo Rodriguez wrote:
> On 12/06/2014 01:09 PM, Hans Hagen wrote:
>> On 12/6/2014 12:40 PM, Pablo Rodriguez wrote:
>>> On 12/06/2014 12:20 AM, Hans Hagen wrote:
>>>> On 12/5/2014 8:11 PM, Pablo Rodriguez wrote:
>>>>> [...]
>>>>> BTW, in your sample below, how can I get the underscore under the
>>>>> previous character? (Otherwise, the underscore has no use.)
>>>>
>>>> Hm, that was the idea of the example i sent earlier.
>> [...]
>
> Hans,
>
> many thanks for having fixed the issue with zeros and the new hyphenator.
>
> I have discovered that \registerhyphenationexception doesn’t allow names
> with first letter in capitals (only
> \registerhyphenationexception[Nietz-sche] will work).
>
> This differs from the \hyphenation command. Is this intended?
>
> And sorry for asking this again, but I need underscore hyphenation with
> the underscore character from the font and only for the \tex and
> \hyphenatedurl commands (not for the rest of the text).
>
> How could it be implemented in the following sample?
>
> \setupcolor[state=start]
> \setuplayout[backspace=95mm, width=middle]
> \definetype[TeXcode][option=TEX, compact=absolute]
> \unexpanded\def\tex#1{\normalexpanded{\TeXcode{\letterbackslash#1}}}
> \starttext
> \tex{thisisaverylongcommand}
> \hyphenatedurl{http://optimisticwayofthinking.optimist}
> \input knuth
> \stoptext
>
> Many thanks for your help again,

just a variant of the addfunyhyphen:

\startluacode

      function document.addfunnyhyphen(tfmdata)
          local underscore = utf.byte("_")
          local char       = tfmdata.characters[underscore]
       -- logs.report("fonts","adding funny hyphen to font 
%a",tfmdata.properties.fontname)
          tfmdata.characters[0xFE000]   = {
              width    = 0,
              height   = 0,
              depth    = 0,
              commands = {
                  { "right", -char.width },
                  { "down", char.depth },
                  { "slot", 1, underscore },
              }
          }
      end

 
utilities.sequencers.appendaction("aftercopyingcharacters","after","document.addfunnyhyphen")

\stopluacode

\definefontfeature[default][default][funnyhyphen=yes]
\definefontfeature[always] [always] [funnyhyphen=yes]
\definefontfeature[none]   [none]   [funnyhyphen=yes]

\definetype
      [TeXcode]
      [option=TEX,
       compact=absolute,
       lines=hyphenated]

\definehyphenationfeatures
      [whatever]
      [righthyphenchar="FE000]

\setuphyphenation
      [method=traditional]

\unexpanded\def\TexC#1%
      {\dontleavehmode\begingroup
       \sethyphenationfeatures[whatever]%
     % \prehyphenchar"FE000
       \normalexpanded{\TeXcode{\letterbackslash#1}}%
       \endgroup}

\starttext
        \input tufte
        \dorecurse{100}{\TexC{definebodyfont} }
        \input tufte
\stoptext

we can add some of them but first i need to think about what slots to 
use (shouldn't conflict with other private slots)

> Pablo
>
>> \startluacode
>>
>>       local function addfunnyhyphen(tfmdata)
>>           local exheight = tfmdata.parameters.xheight
>>           local emwidth  = tfmdata.parameters.quad
>>           local width    = emwidth
>>           local height   = exheight / 10
>>           local depth    = exheight / 2
>>           tfmdata.characters[0xFE000]   = {
>>               width    = 0,
>>               height   = 0,
>>               depth    = 0,
>>               commands = {
>>                   { "right", -width },
>>                   { "down", depth },
>>                   { "rule", height, width },
>>               }
>>           }
>>       end
>>
>>       fonts.constructors.newfeatures("otf").register {
>>           name        = "funnyhyphen",
>>           description = "funny hyphen",
>>           manipulators = {
>>               base = addfunnyhyphen,
>>               node = addfunnyhyphen,
>>           }
>>       }
>>
>> \stopluacode
>>
>> \definefontfeature[default][default][funnyhyphen=yes]
>>
>> \starttext
>>
>>       \prehyphenchar"FE000
>>
>>       \hsize 1mm
>>
>>       averylongword
>>
>> \stoptext
>>
>>> Many thanks for your help,
>>>
>>>
>>> Pablo
>>>
>>>
>>>>>> \definetype
>>>>>>       [TeXcode]
>>>>>>       [option=TEX,
>>>>>>        compact=absolute,
>>>>>>        lines=hyphenated]
>>>>>>
>>>>>> \definehyphenationfeatures
>>>>>>       [whatever]
>>>>>>       [righthyphenchar=_]
>>>>>>
>>>>>> \setuphyphenation
>>>>>>       [method=traditional]
>>>>>>
>>>>>> \unexpanded\def\TexC#1%
>>>>>>       {\dontleavehmode\begingroup
>>>>>>        \sethyphenationfeatures[whatever]%
>>>>>>        \normalexpanded{\TeXcode{\letterbackslash#1}}%
>>>>>>        \endgroup}
>>>>>>
>>>>>> \starttext
>>>>>>         \input tufte
>>>>>>         \dorecurse{100}{\TexC{definebodyfont} }
>>>>>>         \input tufte
>>>>>> \stoptext


-- 

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | 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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2014-12-08 23:07 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-03 18:48 Pablo Rodriguez
2014-12-03 19:30 ` Hans Hagen
2014-12-04 19:21   ` Pablo Rodriguez
2014-12-04 21:00     ` Hans Hagen
2014-12-05 19:11       ` Pablo Rodriguez
2014-12-05 23:20         ` Hans Hagen
2014-12-06 11:40           ` Pablo Rodriguez
2014-12-06 12:09             ` Hans Hagen
2014-12-08 16:47               ` Pablo Rodriguez
2014-12-08 23:07                 ` Hans Hagen [this message]
2014-12-10 19:15                   ` Pablo Rodriguez
2014-12-10 21:58                     ` Hans Hagen
2014-12-11 17:47                       ` Pablo Rodriguez
2014-12-03 20:36 ` Hans Hagen
2014-12-05 18:59   ` Pablo Rodriguez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54862F1F.3060100@wxs.nl \
    --to=pragma@wxs.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).