Add the following code to your project's shard.yml under:
dependencies
to use in production
- OR -
development_dependencies
to use in development
Shard Provides functionality to get fixed width of the unicode character or string.
For more information, refer to EAST ASIAN WIDTH Unicode Standard Annex #11 (Unicode version 13.0.0).
Add the dependency to your shard.yml
:
dependencies:
uniwidth:
github: naqvis/uni_char_width
Run shards install
Code try to identify the locale and set east_asian
property accordingly. You can enforce the code to enable CJK mode by setting EASTASIAN
environment variable to "1". strict_emoji_neutral
property is enabled by default, but this should be set to false
for broken Fonts.
Module UnicodeCharWidth
provided methods uses the default settings (stated above), if you need to tweak the settings, instantiate an instance of UnicodeCharWidth::Condition
class with respective settings.
require "uniwidth"
# String/Char width
pp UnicodeCharWidth.width("つのだ☆HIRO") # => 12 on CJK locale
# Truncate
pp UnicodeCharWidth.truncate("つのだ☆HIRO",10,"...") # => "つのだ..."
# Padding
pp UnicodeCharWidth.pad_left("あxいうえお", 15) # => " あxいうえお"
pp UnicodeCharWidth.pad_right("あxいうえお", 15) # => "あxいうえお "
...
Refer to specs
for more examples.
To run all tests:
crystal spec
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)