uniseg2 0.8.0
Determine Unicode text segmentations
License: MIT
Requires Python: >=3.6

# uniseq2

## Introduction

A Python package to determine Unicode text segmentations.

You can see the full documentation including the package reference on
http://uniseg-python.readthedocs.io.


## Features

This package provides:

- Functions to get Unicode Character Database (UCD) properties concerned with
  text segmentations.
- Functions to determine segmentation boundaries of Unicode strings.
- Classes that help implement Unicode-aware text wrapping on both console
  (monospace) and graphical (monospace / proportional) font environments.

Supporting segmentations are:

- code point
    `Code point <http://www.unicode.org/glossary/#code_point>`_ is *"any value
    in the Unicode codespace."* It is the basic unit for processing Unicode
    strings.
- grapheme cluster
    `Grapheme cluster <http://www.unicode.org/glossary/#grapheme_cluster>`_
    approximately represents *"user-perceived character."* They may be made
    up of single or multiple Unicode code points. e.g. "G" + *acute-accent* is
    a *user-perceived character*.
- word break
    Word boundaries are familiar segmentation in many common text operations.
    e.g. Unit for text highlighting, cursor jumping etc. Note that *words* are
    not determinable only by spaces or punctuations in text in some languages.
    Such languages like Thai or Japanese require dictionaries to determine
    appropriate word boundaries. Though the package only provides simple word
    breaking implementation which is based on the scripts and doesn't use any
    dictionaries, it also provides ways to customize its default behavior.
- sentence break
    Sentence breaks are also common in text processing but they are more
    contextual and less formal. The sentence breaking implementation (which is
    specified in UAX: Unicode Standard Annex) in the package is simple and
    formal too. But it must be still useful in some usages.
- line break
    Implementing line breaking algorithm is one of the key features of this
    package. The feature is important in many general text presentations in
    both CLI and GUI applications.


## Requirements

- Python >= 3.6


## Download

Source / binary distributions (PyPI)
    https://pypi.python.org/pypi/uniseg
All sources and build tools etc. (Bitbucket)
    https://bitbucket.org/emptypage/uniseg-py


## Install

Just type: `pip install uniseg`
or download the archive and: `pip install .`

## References

*UAX #14: Unicode Line Breaking Algorithm* (6.2.0)
    http://www.unicode.org/reports/tr14/tr14-30.html
*UAX #29 Unicode Text Segmentation* (6.2.0)
    http://www.unicode.org/reports/tr29/tr29-21.html


## Related / Similar Projects

`PyICU <https://pypi.python.org/pypi/PyICU>`_ - Python extension wrapping the ICU C++ API
    *PyICU* is a Python extension wrapping International Components for
    Unicode library (ICU). It also provides text segmentation supports and
    they just perform richer and faster than those of ours. PyICU is an
    extension library so it requires ICU dynamic library (binary files) and
    compiler to build the extension. Our package is written in pure Python;
    it runs slower but is more portable.
`pytextseg <https://pypi.python.org/pypi/pytextseg>`_ - Python module for text segmentation
    *pytextseg* package focuses very similar goal to ours; it provides
    Unicode-aware text wrapping features. They designed and uses their
    original string class (not built-in ``unicode`` / ``str`` classes) for the
    purpose. We use strings as just ordinary built-in ``unicode`` / ``str``
    objects for text processing in our modules.