code: public void registerFont(Typeface face, String name, Font.Style style, String... ligatureGlyphs) {
      Pair<String,Font.Style> key = Pair.create(name, style);
      fonts.put(key, face);
      ligatureHacks.put(key, ligatureGlyphs);
    }
docs: Registers a font with the graphics system.
  
  @param face the typeface to be registered. It can be loaded via
  {@link AndroidAssets#getTypeface}.
  @param name the name under which to register the font.
  @param style the style variant of the specified name provided by the font file. For example
  one might {@code registerFont("myfont.ttf", "My Font", Font.Style.PLAIN)} and
  {@code registerFont("myfontb.ttf", "My Font", Font.Style.BOLD)} to provide both the plain and
  bold variants of a particular font.
  @param ligatureGlyphs any known text sequences that are converted into a single ligature
  character in this font. This works around an Android bug where measuring text for wrapping
  that contains character sequences that are converted into ligatures (e.g. "fi" or "ae")
  incorrectly reports the number of characters "consumed" from the to-be-wrapped string.