by fourlastor

fourlastor / dante

A sane rich text parsing and styling library.

455 Stars 32 Forks Last release: over 3 years ago (v0.1.0) MIT License 46 Commits 4 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


Dante is a text parser to easily generate a

from a raw input, right now it supports only HTML but the idea is to be able to support multiple input types (e.g., MarkDown).

Originally I authored Dante in Pause, the project is now dead and I decided to open source it.

This is the very first release of Dante, the api will (most likely) change for the better with successive iterations.


Simply add the following to your

repositories {

dependencies { compile 'com.fourlastor:dante:1.0.1' }

Usage with HTML

FlavoredHtml flavoredHtml = new FlavoredHtml.Builder(context)
  .newLine("p", "h1", "h2", "h3", "h4", "h5", "h6", "li")
  .textAppearance(R.style.headline, "h1")
  .textAppearance(R.style.title, "h2")
  .textAppearance(R.style.subhead, "h3")
  .textAppearance(R.style.body, "p", "li")
  .style(Typeface.BOLD, "b", "strong")
  .style(Typeface.ITALIC, "i", "em")
  .bullet(15, "li")

Spanned styledHtml = flavoredHtml.parse(htmlString);

Keep in mind that this will be executed on the same thread on which

is executed. Since loading images might entail executing network requests, make sure you invoke
outside of the main thread if you are also loading images.

Loading images

You'll have to implement either

to load images, if you need to load bitmaps (e.g., from the network) you can use
FlavoredHtml flavoredHtml = new FlavoredHtml.Builder(context)
  .img(new ImgListener.BitmapImgGetter(getResources()) {
                      protected Bitmap getBitmap(String src) {
                          try {
                              return Picasso.with(MainActivity.this)
                          } catch (IOException e) {
                              throw new RuntimeException("Whoops!");

Keep in mind that this will be executed in the same thread in which

is executed, if you wish to execute network requests, do so invoking
outside of the main thread.

Different input types

As long as you implement

, it shouldn't be hard to support a different text style, see
's implementation as a reference.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.