///|
/// Return a human-readable encoding label.
pub fn PdfEncoding::debug_name(self : PdfEncoding) -> String {
  match self {
    PdfImplicitInFontFile => "ImplicitInFontFile"
    PdfStandardEncoding => "StandardEncoding"
    PdfMacRomanEncoding => "MacRomanEncoding"
    PdfWinAnsiEncoding => "WinAnsiEncoding"
    PdfMacExpertEncoding => "MacExpertEncoding"
    PdfCustomEncoding(base, differences) => {
      let mut text = "CustomEncoding with base " +
        base.debug_name() +
        " and differences "
      for difference in differences {
        text = text +
          difference.code.to_string() +
          " -> " +
          pdf_text_string_of_name(difference.name) +
          ", "
      }
      text
    }
    PdfFillUndefinedWithStandard(base) =>
      "FillUndefinedWithStandard " + base.debug_name()
  }
}

///|
/// Return the PDF name for a built-in simple-font encoding.
///
/// Custom, implicit, and fallback encodings do not have a direct PDF name and
/// return `None`.
pub fn PdfEncoding::pdf_name(self : PdfEncoding) -> @core.PdfName? {
  match self {
    PdfStandardEncoding => Some(pdf_text_standard_encoding_name)
    PdfMacRomanEncoding => Some(pdf_text_mac_roman_encoding_name)
    PdfWinAnsiEncoding => Some(pdf_text_win_ansi_encoding_name)
    PdfMacExpertEncoding => Some(pdf_text_mac_expert_encoding_name)
    _ => None
  }
}

///|
/// Recognize a built-in simple-font encoding name.
pub fn pdf_encoding_of_name(name : @core.PdfName) -> PdfEncoding? {
  match name {
    name if name == pdf_text_standard_encoding_name => Some(PdfStandardEncoding)
    name if name == pdf_text_mac_roman_encoding_name =>
      Some(PdfMacRomanEncoding)
    name if name == pdf_text_win_ansi_encoding_name => Some(PdfWinAnsiEncoding)
    name if name == pdf_text_mac_expert_encoding_name =>
      Some(PdfMacExpertEncoding)
    _ => None
  }
}