Index: tools/generate/OpenType
===================================================================
--- tools/generate/OpenType	(revision 2910)
+++ tools/generate/OpenType	(working copy)
@@ -33,6 +33,7 @@
 import fontforge
 from sys import argv
 from buildutils import *
+import os
 #import uglify
 
 scriptname = argv[0];
@@ -39,8 +40,20 @@
 argc = len( argv )
 
 if argc > 1:
+	if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+		repover = get_repo_version()
+
 	for i in range( 1, argc ):
 		f = fontforge.open( argv[i] )
+		extra_name = ""
+		if os.getenv( "FF_GENERATE_SEPARATE_NAMES", None ):
+			extra_name += " OTF"
+		if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+			extra_name += " r" + repover
+		if len( extra_name ) > 0:
+			f.fontname = split_name_style (f.fontname)[0] + extra_name + split_name_style (f.fontname)[1]
+			f.fullname = split_name_style (f.fullname)[0] + extra_name + split_name_style (f.fullname)[1]
+			f.familyname = split_name_style (f.familyname)[0] + extra_name + split_name_style (f.familyname)[1]
 		otfile = f.fontname + ".otf"
 		vstr = trim_version_str( f )
 		print "Generating OpenType file ", otfile, ' ', vstr
Index: tools/generate/TrueType
===================================================================
--- tools/generate/TrueType	(revision 2910)
+++ tools/generate/TrueType	(working copy)
@@ -32,6 +32,7 @@
 
 import fontforge
 import sys
+import os
 from buildutils import *
 
 scriptname = sys.argv[0];
@@ -38,8 +39,20 @@
 argc = len( sys.argv )
 
 if argc > 1:
+	if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+		repover = get_repo_version()
+
 	for i in range( 1, argc ):
 		f = fontforge.open( sys.argv[i] )
+		extra_name = ""
+		if os.getenv( "FF_GENERATE_SEPARATE_NAMES", None ):
+			extra_name += " TTF"
+		if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+			extra_name += " r" + repover
+		if len( extra_name ) > 0:
+			f.fontname = split_name_style (f.fontname)[0] + extra_name + split_name_style (f.fontname)[1]
+			f.fullname = split_name_style (f.fullname)[0] + extra_name + split_name_style (f.fullname)[1]
+			f.familyname = split_name_style (f.familyname)[0] + extra_name + split_name_style (f.familyname)[1]
 		ttfile = f.fontname + ".ttf"
 		vstr = trim_version_str( f )
 		print "Generating TrueType file ", ttfile, ' ', vstr
Index: tools/generate/WOFF
===================================================================
--- tools/generate/WOFF	(revision 2910)
+++ tools/generate/WOFF	(working copy)
@@ -33,6 +33,7 @@
 
 import fontforge
 import sys
+import os
 import xml.dom.minidom
 from buildutils import *
 
@@ -149,10 +150,23 @@
 	return stripmeta( strrep )
 
 if argc > 1:
+	if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+		repover = get_repo_version()
+
 	for i in range( 1, argc ):
 		f = fontforge.open( sys.argv[i] )
+		extra_name = ""
+		if os.getenv( "FF_GENERATE_SEPARATE_NAMES", None ):
+			extra_name += " OTF"
+		if os.getenv( "FF_GENERATE_SEPARATE_VERSIONS", None ):
+			extra_name += " r" + repover
+		if len( extra_name ) > 0:
+			f.fontname = split_name_style (f.fontname)[0] + extra_name + split_name_style (f.fontname)[1]
+			f.fullname = split_name_style (f.fullname)[0] + extra_name + split_name_style (f.fullname)[1]
+			f.familyname = split_name_style (f.familyname)[0] + extra_name + split_name_style (f.familyname)[1]
 		woff_file = f.fontname + ".woff"
-		print "Generating WOFF file ", woff_file
+		vstr = trim_version_str( f )
+		print "Generating WOFF file ", woff_file, ' ', vstr
 		# Wanted to set to 'UniocdeBmp' if there were no high unicodes
 		# but all attemtps to determine that from Python failed.
 		f.encoding = 'UnicodeFull'
Index: tools/generate/buildutils.py
===================================================================
--- tools/generate/buildutils.py	(revision 2910)
+++ tools/generate/buildutils.py	(working copy)
@@ -23,6 +23,7 @@
 """
 
 import re
+import subprocess
 
 _re_vstr = re.compile( '\$Revision: (\d*)\s*\$(.*)' )
 
@@ -44,3 +45,18 @@
 		return trimmed
 	return otstdized
 
+def get_repo_version():
+	p = subprocess.Popen (['svn', 'info'], stdout=subprocess.PIPE)
+	o, e = p.communicate ()
+	for l in o.splitlines ():
+		m = re.match (r'Revision: ([0-9]+)', l)
+		if m:
+			return m.group (1)
+	return "Unknown"
+
+def split_name_style( name ):
+	styles = [" Bold Oblique", " Bold Italic", " Bold", " Oblique", " Italic"]
+	for s in styles:
+		if s in name:
+			return ( name.replace( s, "" ), s )
+	return ( name, "" )
