unicode-tricks: Functions to work with unicode blocks more convenient.

[ bsd3, library, utils ] [ Propose Tags ]

A package that makes rendering of frames, blocks, subscript and superscript more convenient.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,,,,,,,,,,
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), containers (>=, data-default (>=0.2), deepseq (>=, hashable (>=, QuickCheck (>=2.10.0 && <2.14.3), text (>= && <1.3) [details]
License BSD-3-Clause
Copyright 2020 Willem Van Onsem
Author Willem Van Onsem
Maintainer hapytexeu+gh@gmail.com
Category utils
Home page https://github.com/hapytex/unicode-tricks#readme
Source repo head: git clone https://github.com/hapytex/unicode-tricks
Uploaded by wvanonsem90 at 2023-01-05T02:39:35Z
Distributions NixOS:
Downloads 2456 total (5 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-01-05 [all 1 reports]

Readme for unicode-tricks-

[back to package description]


Build Status of the package by GitHub actions Build Status of the package by Hackage Hackage version badge

Based on the unicode package by Henning Thielemann.

This library aims to provide functionality to make working with certain blocks of unicode characters more effective.

Currently the package contains the following modules:

  • Data.Char.Core: a module that defines common data structures;
  • Data.Char.BallotBox: rendering boxes that are empty, with a checkmark, or a cross;
  • Data.Char.Block: rendering a 2-by-2 block by a matrix of Bools;
  • Data.Char.Block.Sextant: render blocks that consists out of a 3 × 2 raster;
  • Data.Char.Brackets: determine if a character is a bracket, and find the corresponding bracket;
  • Data.Char.Braille: a module to render Braille characters with six or eight dot cells;
  • Data.Char.Card: a module to work with playing cards;
  • Data.Char.Chess: a module to render chess pieces (and some variants) in unicode;
  • Data.Char.Control: a module that visualizes control characters;
  • Data.Char.Combining: combine a character with a (sequence of) combining characters (diacritics, geometrical shapes, etc.);
  • Data.Char.Currency: translate currencies to Unicode characters and vice versa;
  • Data.Char.Dice: a module to render die unicode characters;
  • Data.Char.Domino: a module to render domino unicode characters;
  • Data.Char.Egyptian: a module that defines pattern synonyms for ancient Egyptian hieroglyphs;
  • Data.Char.Emoji.*: modules that provide functions to render emoji characters (flags, objects, persons, etc.);
  • Data.Char.Enclosed: functions to convert alphanumerical characters to characters where these are enclosed by circles, squares, parenthesis, etc.;
  • Data.Char.Frame: typesetting frame elements. Lines of the frames can be Light or Heavy, and there are additional options to use arcs for corners;
  • Data.Char.Math.*: a set of modules to render mathematical symbols and text, for example in Fraktur, Blackboard bold, etc.
  • Data.Char.Number.Duodecimal: a module to work with duodecimal numbers;
  • Data.Char.Number.Egyptian: a module to render ancient Egyptian numerals;
  • Data.Char.Number.Mayan: a module to render Mayan numerals;
  • Data.Char.Number.Roman: a module to render Roman numerals;
  • Data.Char.Number.Segmented: a module to render numbers on a seven-segment display;
  • Data.Char.Number.VulgarFraction: a module to use vulgar fractions defined in the Unicode standard;
  • Data.Char.Private: characters belonging to the private usage area;
  • Data.Char.Private.Klingon: Klingon script characters;
  • Data.Char.Small: making use of subscript and superscript in unicode, and for example formatting Ratio objects; and
  • Data.Char.Tag: a unicode block that is used as emoji modifiers for regional flags.

unicode-tricks is safe Haskell

The modules are marked with the {-# LANGUAGE Safe #-} pragma, it thus provides guarantees, for example about not using unsafePerformIO.


You can contribute by making a pull request on the GitHub repository.

You can contact the package maintainer by sending a mail to hapytexeu+gh@gmail.com.


  • @wismill found a bug and added tests for the Data.Char.Math as well as the Data.Char.Number.Segmented module.