hyphen 0.1.4
hyphen: ^0.1.4 copied to clipboard
A cross-platform Flutter plugin that provides high-quality word hyphenation.
Hyphen #
Hyphen is a cross-platform Flutter plugin that provides high-quality word hyphenation.
It uses the hunspell/hyphen C library under the hood (via FFI) on native platforms, and a WebAssembly/JS runtime on the Web.
With Hyphen
, you can automatically insert hyphenation marks into words based on language-specific rules.
By default, the plugin uses "=" as the separator, but you can configure it to use any custom separator you want.
✨ Features #
- Works on all Flutter platforms: Android, iOS, macOS, Windows, Linux, Web
- Uses battle-tested hyphen dictionaries
- Two hyphenation APIs available:
hnjHyphenate2
– classic hyphenationhnjHyphenate3
– extended API with additional options
- Unified API – always use the same
Hyphen
class, no matter the platform
📦 Installing #
Add to your pubspec.yaml
:
dependencies:
hyphen: ^0.1.4
Then run:
flutter pub get
📚 Dictionaries #
Hyphen
requires a .dic
file for the language you want to hyphenate.
These are not bundled due to licensing reasons.
👉 You need to generate or obtain these .dic
files yourself.
Where to get dictionary files #
Hyphenation dictionaries are created from TeX hyphenation pattern files (commonly available on CTAN and other TeX distribution sources).
🔨 Step-by-step Example: English (US) #
-
Download the pattern file
hyphen-en-us.tex
-
Run the
substrings.pl
script (from hunspell/hyphen):perl substrings.pl hyphen-en-us.tex hyph_en_US.dic UTF-8
This generates a file called
hyph_en_US.dic
. -
Add the file to your Flutter project:
assets/hyph_en_US.dic
-
Declare it in
pubspec.yaml
:flutter: assets: - assets/hyph_en_US.dic
🚀 Usage #
import 'package:hyphen/hyphen.dart';
Future<void> main() async {
// Load a dictionary from assets
final hyphen = await Hyphen.fromDictionaryPath('assets/hyph_en_US.dic');
// Hyphenate a word
final result = hyphen.hnjHyphenate2('hyphenation', separator: '-');
print(result); // "hy-phen-ation"
// Using the extended API
final result2 = hyphen.hnjHyphenate3(
'hyphenation',
separator: '=',
lhmin: 3,
rhmin: 3,
);
print(result2); // "hyphen=ation"
}
🖥 Platform Notes #
- Android/iOS/macOS/Linux/Windows: Uses the native hyphen lib via FFI.
- Web: Uses a WASM build of the hyphen lib via
hyphen.js
. - On all platforms, you must provide your own
.dic
file.
⚠️ License #
This package is dual-licensed:
- Plugin code (Dart, FFI bindings and wrappers): licensed under MIT.
- Hyphenation engine: incorporates code from Hunspell/Hyphen,
which is licensed under the Mozilla Public License (MPL).
Hyphenation dictionaries come with their own licenses – check the
hunspell/hyphen repo before redistributing.
🤝 Contributing #
Issues and pull requests are welcome!