PRUint32 len = Convert(aString, aLength, p, bufLen);
gint len = mCharSetInfo->Convert(mCharSetInfo, mXFont->GetXFontStruct(), aString, aLength, p, bufLen);
nsFontGTKUserDefined::DrawString(nsRenderingContextGTK* aContext,                                nsDrawingSurfaceGTK* aSurface,                                nscoord aX, nscoord aY,                                const PRUnichar* aString, PRUint32 aLength){  char buf[1024];  char* p;  PRInt32 bufLen;  ENCODER_BUFFER_ALLOC_IF_NEEDED(p, gUserDefinedConverter,                         aString, aLength, buf, sizeof(buf), bufLen);  PRUint32 len = Convert(aString, aLength, p, bufLen);  GdkGC *gc = aContext->GetGC();  gint outWidth;  if (mXFont->IsSingleByte()) {    mXFont->DrawText8(aSurface->GetDrawable(), gc, aX,                                          aY + mBaselineAdjust, p, len);    outWidth = mXFont->TextWidth8(p, len);  }  else {    mXFont->DrawText16(aSurface->GetDrawable(), gc, aX, aY + mBaselineAdjust,                       (const XChar2b*)p, len);    outWidth = mXFont->TextWidth16((const XChar2b*)p, len/2);  }  gdk_gc_unref(gc);  ENCODER_BUFFER_FREE_IF_NEEDED(p, buf);  return outWidth;}