sig
  type 'a drawer = '-> int -> 'a
  val func_darken_only : Color.rgb Fttext.drawer
  val func_red_only : Color.rgb Fttext.drawer
  val unicode_of_latin : string -> int array
  val unicode_of_euc_japan : string -> int array
  val draw_rotated_text :
    float ->
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> int array -> unit
  val draw_rotated_glyphs :
    float ->
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> Freetype.char_index array -> unit
  val draw_text :
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> int array -> unit
  val draw_glyphs :
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> Freetype.char_index array -> unit
  val draw_mono_rotated_text :
    float ->
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> int array -> unit
  val draw_mono_rotated_glyphs :
    float ->
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> Freetype.char_index array -> unit
  val draw_mono_text :
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> int array -> unit
  val draw_mono_glyphs :
    (int -> int -> int -> unit) ->
    Freetype.face -> int -> int -> Freetype.char_index array -> unit
  module type T =
    sig
      type t
      type elt
      val create : int -> int -> Fttext.T.t
      val destroy : Fttext.T.t -> unit
      val get : Fttext.T.t -> int -> int -> Fttext.T.elt
      val set : Fttext.T.t -> int -> int -> Fttext.T.elt -> unit
      val unsafe_get : Fttext.T.t -> int -> int -> Fttext.T.elt
      val unsafe_set : Fttext.T.t -> int -> int -> Fttext.T.elt -> unit
    end
  module Make :
    functor (T : T->
      sig
        val draw_text :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> int array -> unit
        val draw_rotated_text :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> float -> int array -> unit
        val draw_glyphs :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> Freetype.char_index array -> unit
        val draw_rotated_glyphs :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t ->
          int -> int -> float -> Freetype.char_index array -> unit
        val draw_mono_text :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> int array -> unit
        val draw_mono_rotated_text :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> float -> int array -> unit
        val draw_mono_glyphs :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t -> int -> int -> Freetype.char_index array -> unit
        val draw_mono_rotated_glyphs :
          Freetype.face ->
          Fttext.T.elt Fttext.drawer ->
          Fttext.T.t ->
          int -> int -> float -> Freetype.char_index array -> unit
      end
  val size : Freetype.face -> int array -> float * float * float * float
  val size_of_glyphs :
    Freetype.face ->
    Freetype.char_index array -> float * float * float * float
  val vector_gen :
    (Freetype.face -> '-> 'b list -> float * float) ->
    bool ->
    float ->
    (Freetype.outline_contents -> 'c) ->
    Freetype.face -> float -> float -> 'a array -> unit
  val vector_text :
    bool ->
    (Freetype.outline_contents -> 'a) ->
    Freetype.face -> float -> float -> float -> int array -> unit
  val vector_glyphs :
    bool ->
    (Freetype.outline_contents -> 'a) ->
    Freetype.face ->
    float -> float -> float -> Freetype.char_index array -> unit
end