Hyphenopoly
Questions answered by this recipe
I want text on my wiki to be hyphenated, but some browsers/platforms do not support hyphenation; and those that do, use inferior hyphenation algorithms. I want good hyphenation on all (modern) browsers and platforms!
Description
This recipe explains how to use the Hyphenopoly package to add JavaScript-based client-side hyphenation to your wiki.
Installation
- Go to https://github.com/mnater/Hyphenopoly; download and unzip the files.
- In your
pub/
directory create a directory calledhyphenopoly
. - Into
pub/hyphenopoly/
upload the filesHyphenopoly_Loader.js
,Hyphenopoly.js
, and thepatterns
directory.
You should now have:
pub/ |---hyphenopoly/ |---Hyphenopoly_Loader.js |---Hyphenopoly.js |---patterns/ |---en-us.wasm |---(... more .wasm files for other languages ...)
- To your
config.php
add the following:
if ($action == 'browse' || $action == 'print') { global $HTMLHeaderFmt; $HTMLHeaderFmt[] = " <script> var Hyphenopoly = { require: { 'en-us': 'FORCEHYPHENOPOLY' }, setup: { selectors: { '#wikitext': {} } } }; </script> <script src='$FarmPubDirUrl/hyphenopoly/Hyphenopoly_Loader.js'></script> "; global $HTMLStylesFmt; $HTMLStylesFmt[] = " p, ul, ol { -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto; } "; }
Configuration
Support for languages other than English
The code block given above adds hyphenation for English only. See the instructions at https://github.com/mnater/Hyphenopoly for adding support for other languages.
Hyphenating other HTML elements
The code block given above specifies hyphenation only for p
, ul
, and ol
elements. To add hyphenation for more elements (e.g. blockquotes, etc.), modify the CSS snippet appropriately. Example:
$HTMLStylesFmt[] = " p, ul, ol, blockquote { -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto; }
(The rest of the code should be unchanged.)
Hyphenation for other wiki actions
The code block given above will automatically hyphenate text when viewing a page (the browse
action) or using the print view (the print
action). If you want to enable hyphenation for other actions, modify the if
statement appropriately. Example:
if ($action == 'browse' || $action == 'print' || $action == 'discuss') {
(The rest of the code should be unchanged.)
Usage
Hyphenation is automatic once configured as described above. No editing of wiki markup is needed.
Notes
To do / some day / maybe
- Add some of the configuration options and features provided by JustHyp.
Change log / Release notes
- 2020-08-21 - Initial release.
See also
JustHyp provided similar functionality. However, the recipe is currently broken on recent versions of PHP, and has other problems; it also requires the use of jQuery, and is thus relatively ‘heavyweight’, as well as having many different configuration options and features. In contrast, this recipe is very ‘lightweight’ and simple to use.
Contributors
Comments
See discussion at Hyphenopoly-Talk?
User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.