Re: Extensions for hyphenation

Jorge Arellano Cid <[email protected]>
Newsgroups gmane.comp.web.dillo.devel
Message-ID <[email protected]>
Hi Sebastian,

On Sun, Nov 18, 2012 at 02:29:32PM +0100, Sebastian Geerken wrote:
> Hi!
> 
> At http://flpsed.org/hgweb/dillo_hyphen, you'll find some extensions
> for hyphenation I've not yet merged into the main repository. Still
> needs some documentation, but here is an overview:
> 
> There are now configuration variables for dillorc (see source):
> penalties for hyphens, as well as the left and right side of an
> em-dash. The suffix "_2" means that this value is used for lines
> following a line which ends already with a hyphen. When this value is
> larger, two adjacent lines ending with a hyphen are avoided.
> 
> For values, see the definition of the "badness". Typical values:
> 
> 0 = Penalty used for normal spaces.
> 1 = A justified line with spaces having 150% or 67% of the ideal space
>     width has this as badness.
> 8 = A justified line with spaces twice as wide as ideally has this as
>     badness.
> 
> "inf" may be used (preventing a break in any case); also "-inf"
> (forcing a break), although the latter makes no sense and may lead to
> strange results.
> 
> There is a text page, test/hyphens-etc.html, to play around.

  I  wonder how breaking a single word in a line can be penalized
with these controls.

  For  instance  [1],  with  both main dillo and dillo_hyphen the
word "hyphenation" is broken twice:

     hy-
     phen-
     ation

  With the new controls, it could become:

     hyphen-
     ation

  but, in this particular case it should have been:

     hyphenation


  In  the  same  page, there're several cases of the same problem
(one  line  above,  a 1 row x 8 col table) where words are broken
into a maximum of 4 times!

  In  the web case, it's common to use the longest word in a line
as  minimal  width.  OTOH  there's  also  the problem of too long
"word" strings.

  In [1] clearly the browser tries to optimize for a minimal page
width.  Which is not the case, but that could perfectly have been
as  an  external  constraint  to the algoritm (by means of screen
size,  TABLE  element  directives,  floats,  etc).  So  it is non
trivial.

  I've  worked  enough  on  table rendering to know that making a
decision  based  on  the  current textblock's min/max width would
introduce  too  much  complexity.  e.g.  in [1], just imagine the
problem  of deciding which words to break and where for a dynamic
optimum of the table width. :-P

  A  much  simpler  approach  would be to introduce a penalty for
breaking  single  words in a line, above a certain threshold that
could be relative to the browser window's width.

  For instance:

    penalty_one_word_line=5
    /* Penalty = (word_length > 1/4 window width)  ? 0 : 5 */
  
  or even simpler, in characters:

    penalty_one_word_line=18
    /* Don't try to break words shorter than 18 chars, when
       alone in a single line */


  The advantage I see to a penalty that handles this case is that
it  can  help a lot with web rendering and also with more precise
book rendering with a simple dillorc option.

  These are just ideas, not meant to be *the* solution. They have
relatively simple implementations that could be field tested.

  HTH.


[1]  http://www.thefreedictionary.com/hyphenation


-- 
  Cheers
  Jorge.-
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.