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 -----------------------------------------------------------------