Crates.io | arabic-script |
lib.rs | arabic-script |
version | 0.1.0 |
source | src |
created_at | 2023-02-26 16:34:03.885837 |
updated_at | 2023-02-26 16:34:03.885837 |
description | An expressive API for the characters of the Arabic script. |
homepage | https://github.com/tamerudition/arabic-script |
repository | https://github.com/tamerudition/arabic-script |
max_upload_size | |
id | 795291 |
size | 156,577 |
An expressive API for the characters of the Arabic script.
The Arabic Script Library provides a clear, legible, and universally usable representation of all the standard characters of the Arabic script.
Each letter, diacritical mark, numerical digit, and additional symbol is available under its standardized Unicode name, providing easy access to all Arabic characters, with none of the hassle of manipulating primitive Rust characters or Unicode code points.
The Arabic script has special orthographic rules and ligature forms. Many letters have a variety of letter-forms. Diacritics are often necessary to disambiguate the pronunciation of some letters, depending on their position in a word. Many non-standard symbols have been added over the years to the Arabic script to represents entire phrases and expressions.
The sheer number of these variations makes it impractical to type those glyphs directly on any regular keyboard. Moreover, not many typefaces contain all the characters in the various Arabic Unicode blocks. The very names of these glyphs can be quite lengthy and confusing. This becomes even more problematic when attempting to communicate the name of these glyphs across teams in a predictable and consistent manner.
The Arabic Script Library addresses these issues by introducing the ArabicCharacter
type,
whose function is to encapsulate Arabic characters, assign to them clean and standardized names, and
provide simple methods for converting to and from Rust-native textual types.
The advantages of this API are...
ArabicCharacter
are guaranteed to represent only Arabic characters.ArabicCharacter
in any place where other textual types are used.All the things you can do with this abstraction are things you can do, albeit with non-trivial
effort and mental gymnastics, using the Rust-native char
. What this library provides are
clarity, consistency, and ease-of-use.
This project is licensed under the Apache License, Version 2.0.