From: Hans Hagen <pragma@wxs.nl>
To: ntg-context@ntg.nl
Subject: Re: two issues with new hyphenator
Date: Wed, 10 Dec 2014 22:58:48 +0100 [thread overview]
Message-ID: <5488C218.9030004@wxs.nl> (raw)
In-Reply-To: <54889BD4.1050608@gmx.es>
On 12/10/2014 8:15 PM, Pablo Rodriguez wrote:
> On 12/09/2014 12:07 AM, Hans Hagen wrote:
>> On 12/8/2014 5:47 PM, Pablo Rodriguez wrote:
>>> [..]
>>> 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).
>>> [...]
>>
>> just a variant of the addfunyhyphen:
>
> Many thanks for your sample, Hans.
>
> It really works great.
>
> Sorry for asking this again: would it be possible to add this feature
> also to \hyphenatedurl.
>
> I’m composing a book on A6 and it is really hard to add some urls.
some code from an upcoming manual:
\startluacode
local specials = {
["!"] = "before", ["?"] = "before",
['"'] = "before", ["'"] = "before",
["/"] = "before", ["\\"] = "before",
["#"] = "before",
["$"] = "before",
["%"] = "before",
["&"] = "before",
["*"] = "before",
["+"] = "before", ["-"] = "before",
[","] = "before", ["."] = "before",
[":"] = "before", [";"] = "before",
["<"] = "before", [">"] = "before",
["="] = "before",
["@"] = "before",
["("] = "before",
["["] = "before",
["{"] = "before",
["^"] = "before", ["_"] = "before",
["`"] = "before",
["|"] = "before",
["~"] = "before",
--
[")"] = "after",
["]"] = "after",
["}"] = "after",
}
languages.hyphenators.traditional.installmethod("url",
function(dictionary,word,n)
local t = { }
for i=1,#word do
local w = word[i]
local s = specials[w]
if s == "after" then
s = {
start = 1,
length = 1,
after = w,
left = false,
right = false,
}
specials[w] = s
elseif s == "before" then
s = {
start = 1,
length = 1,
before = w,
left = false,
-- right = false,
}
specials[w] = s
end
t[i] = s or false
end
return t
end
)
\stopluacode
\startluacode
function document.addfunnyhyphen(tfmdata)
local underscore = utf.byte("_")
local char = tfmdata.characters[underscore]
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
\definehyphenationfeatures
[url]
[characters=all,
righthyphenchar="FE000,
alternative=url]
\setuphyphenation[method=traditional]
\unexpanded\def\hyphenatedurl#1%
{\dontleavehmode
\begingroup
\tt
\sethyphenationfeatures[url]%
#1%
\endgroup}
\starttext
\hsize5mm
\hyphenatedurl{http://www.pragma-ade.nl}
\stoptext
> Many thanks for your help again,
>
>
> Pablo
>
>
>> \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)
>
>
>
>
--
-----------------------------------------------------------------
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
___________________________________________________________________________________
next prev parent reply other threads:[~2014-12-10 21:58 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
2014-12-10 19:15 ` Pablo Rodriguez
2014-12-10 21:58 ` Hans Hagen [this message]
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=5488C218.9030004@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).