Today's Carbon Toolbox addition: QDTextBounds()
diff --git a/Mac/Modules/fm/_Fmmodule.c b/Mac/Modules/fm/_Fmmodule.c
index c5ab18a..009f34d 100644
--- a/Mac/Modules/fm/_Fmmodule.c
+++ b/Mac/Modules/fm/_Fmmodule.c
@@ -293,6 +293,24 @@
 	return _res;
 }
 
+static PyObject *Fm_QDTextBounds(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	char *inText__in__;
+	int inText__len__;
+	int inText__in_len__;
+	Rect bounds;
+	if (!PyArg_ParseTuple(_args, "s#",
+	                      &inText__in__, &inText__in_len__))
+		return NULL;
+	inText__len__ = inText__in_len__;
+	QDTextBounds(inText__len__, inText__in__,
+	             &bounds);
+	_res = Py_BuildValue("O&",
+	                     PyMac_BuildRect, &bounds);
+	return _res;
+}
+
 static PyMethodDef Fm_methods[] = {
 
 #if !TARGET_API_MAC_CARBON
@@ -337,6 +355,8 @@
 	 "() -> (short _rv)"},
 	{"GetAppFont", (PyCFunction)Fm_GetAppFont, 1,
 	 "() -> (short _rv)"},
+	{"QDTextBounds", (PyCFunction)Fm_QDTextBounds, 1,
+	 "(Buffer inText) -> (Rect bounds)"},
 	{NULL, NULL, 0}
 };
 
diff --git a/Mac/Modules/fm/fmscan.py b/Mac/Modules/fm/fmscan.py
index 6ade547..7b2b142 100644
--- a/Mac/Modules/fm/fmscan.py
+++ b/Mac/Modules/fm/fmscan.py
@@ -54,7 +54,7 @@
 		return [
 			"FMInput_ptr",	# Not needed for now
 			"FMOutPtr",		# Ditto
-			"void_ptr",		# Don't know how to do this right now
+##			"void_ptr",		# Don't know how to do this right now
 			"FontInfo",		# Ditto
 			]
 
@@ -62,6 +62,8 @@
 		return [
 			([('Str255', '*', 'InMode')], [('Str255', '*', 'OutMode')]),
 			([('FMetricRecPtr', 'theMetrics', 'InMode')], [('FMetricRecPtr', 'theMetrics', 'OutMode')]),
+			([('short', 'byteCount', 'InMode'), ('void_ptr', 'textAddr', 'InMode'),],
+			 [('TextBuffer', 'inText', 'InMode')]),
 			]
 			
 	def writeinitialdefs(self):
diff --git a/Mac/Modules/fm/fmsupport.py b/Mac/Modules/fm/fmsupport.py
index 3b40716..10d3fce 100644
--- a/Mac/Modules/fm/fmsupport.py
+++ b/Mac/Modules/fm/fmsupport.py
@@ -18,6 +18,13 @@
 
 # Create the type objects
 
+class RevVarInputBufferType(VarInputBufferType):
+	def passInput(self, name):
+		return "%s__len__, %s__in__" % (name, name)
+
+TextBuffer = RevVarInputBufferType()
+
+
 includestuff = includestuff + """
 #ifdef WITHOUT_FRAMEWORKS
 #include <Fonts.h>