A contao bundle that grants server-side hyphenation (thanks to vanderlee/phpSyllable). It does support headlines and paragraphs by default.
This module also handles line break exceptions, in order to keep words like company names together and prevent line break (see tl_page
backend entity).
To extend the functionality, all options can be adjusted within your localconfig.
Option | Type | Default | Description |
---|---|---|---|
hyphenator_tags | string | 'h1:not(:empty):not(.hyphen-none), h2:not(:empty):not(.hyphen-none), h3:not(:empty):not(.hyphen-none), h4:not(:empty):not(.hyphen-none), h5:not(:empty):not(.hyphen-none), h6:not(:empty):not(.hyphen-none), p:not(:empty):not(.hyphen-none), a:not(:empty):not(.hyphen-none), dt:not(:empty):not(.hyphen-none), dd:not(:empty):not(.hyphen-none)' | What type of selectors the hyphenator should look at. |
hyphenator_wordMin | int | 10 | Words under the given length will not be hyphenated altogether. |
hyphenator_hyphenedLeftMin | int | 6 | After hyphenation the resulting left part must have at least this many characters. |
hyphenator_hyphenedRightMin | int | 6 | After hyphenation the resulting right part must have at least this many characters. |
hyphenator_hyphen | string | | This character shall be used as Hyphen-Character. |
hyphenator_skipPages | array | empty | Array of Contao Page Ids, the Hyphenator should skip from hyphenation. |
hyphenator_enableCache | bool | true | Enable simple caching and do not hyphenate equal elements twice. |
hyphenator_locale_language_mapping | array | ['en' => 'en-us', 'cz' => 'cs'] | Map locale to hyphenator tex separation pattern dictionary |
If you want to skip several tags from hyphenation simply add hyphen-none
as css-class to the appropriate element or use the tl_page.hyphenation
field.
You also can add tags to be skipped to your project configuration. See configuration reference below
# Default configuration for extension with alias: "huh_hyphenator"
huh_hyphenator:
# Add tags you want to be skipped from hyphenating, to array (string without <>)
skip_tags: []
Hyphenator comes with line break exception handling.
Simply add lineBreakExceptions
on tl_page
and prevent line break for connected word groups like:
- Company Names (search:
Heimrich & Hannot(?:\sGmbH)|Heimrich & Hannot(?:s)?
, will be replaced to:<span class="text-nowrap">Heimrich & Hannot GmbH</span>
) - Prices and other units (search:
(\d|€)(\s)(\w)
, replace:$1[nbsp]$3
, Example:160.000 m²
->160.00<span class="text-nowrap">0 m</span>²
,167 Mio. €
->16<span class="text-nowrap">7 M</span>io. €
)
As you can see, if you provide an replace pattern, than an regular expression will handle the replacement, otherwise if only an search pattern is provided, spaces will be protected with
.