Browse Source

Updated IconFontCppHeaders.

Branimir Karadžić 8 years ago
parent
commit
c8b434cfbd

+ 298 - 130
3rdparty/iconfontheaders/GenerateIconFontCppHeaders.py

@@ -1,13 +1,18 @@
-#!/usr/bin/python
 # Convert Font Awesome, Google Material Design and Kenney Game icon font
 # Convert Font Awesome, Google Material Design and Kenney Game icon font
-# parameters to C++11 and C89 compatible formats.
+# parameters to C++11, C89 and None compatible formats.
 #
 #
 #------------------------------------------------------------------------------
 #------------------------------------------------------------------------------
 # 1 - Source material
 # 1 - Source material
 #
 #
-#   1.1 - Font Awesome - https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml
-#   1.2 - Material Design - https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints
-#   1.3 - Kenney icons - https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css
+#   1.1 - Font Awesome
+#			https://github.com/FortAwesome/Font-Awesome/blob/master/fonts/fontawesome-webfont.ttf
+# 			https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml
+#   1.2 - Material Design
+#			https://github.com/google/material-design-icons/blob/master/iconfont/MaterialIcons-Regular.ttf
+# 			https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints
+#   1.3 - Kenney icons
+#			https://github.com/SamBrishes/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
+# 			https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css
 #
 #
 #------------------------------------------------------------------------------
 #------------------------------------------------------------------------------
 # 2 - Data samples
 # 2 - Data samples
@@ -24,21 +29,26 @@
 #                                 - Web Application Icons
 #                                 - Web Application Icons
 #           - output C++11:     #define ICON_FA_MUSIC u8"\uf001"
 #           - output C++11:     #define ICON_FA_MUSIC u8"\uf001"
 #           - output C89:       #define ICON_FA_MUSIC "\xEF\x80\x81"
 #           - output C89:       #define ICON_FA_MUSIC "\xEF\x80\x81"
+#			- output None:		    var icon-fa-music ""
 #
 #
 #   2.2 - Google Material Design icons
 #   2.2 - Google Material Design icons
 #           - input:            3d_rotation e84d
 #           - input:            3d_rotation e84d
 #           - output C++11:     #define ICON_MD_3D_ROTATION u8"\ue84d"
 #           - output C++11:     #define ICON_MD_3D_ROTATION u8"\ue84d"
 #           - output C89:       #define ICON_MD_3D_ROTATION "\xEE\xA1\x8D"
 #           - output C89:       #define ICON_MD_3D_ROTATION "\xEE\xA1\x8D"
+#			- output None:		    var icon-md-3d_rotation ""
 #
 #
 #   2.3 - Kenney Game icons
 #   2.3 - Kenney Game icons
 #           - input:            .ki-home:before{ content: "\e900"; }
 #           - input:            .ki-home:before{ content: "\e900"; }
 #           - output C++11:     #define ICON_KI_HOME u8"\ue900"
 #           - output C++11:     #define ICON_KI_HOME u8"\ue900"
 #           - output C89:       #define ICON_KI_HOME "\xEE\xA4\x80"
 #           - output C89:       #define ICON_KI_HOME "\xEE\xA4\x80"
+#			- output None:		    var icon-ki-home ""
 #
 #
 #   2.4 - All fonts
 #   2.4 - All fonts
 #           - computed min and max unicode fonts ICON_MIN and ICON_MAX
 #           - computed min and max unicode fonts ICON_MIN and ICON_MAX
-#           - output:           #define ICON_MIN_FA 0xf000
-#                               #define ICON_MAX_FA 0xf295
+#           - output C89, C++11:	#define ICON_MIN_FA 0xf000
+#                               	#define ICON_MAX_FA 0xf295
+#			- output None:			    var icon-min-fa 0xf000
+#									    var icon-max-fa 0xf2b2
 #
 #
 #------------------------------------------------------------------------------
 #------------------------------------------------------------------------------
 # 3 - Script dependencies
 # 3 - Script dependencies
@@ -48,136 +58,294 @@
 #   3.3 - PyYAML - http://pyyaml.org/
 #   3.3 - PyYAML - http://pyyaml.org/
 #
 #
 #------------------------------------------------------------------------------
 #------------------------------------------------------------------------------
+# 4 - References
+#
+# None language: https://bitbucket.org/duangle/nonelang/src
+#
+#------------------------------------------------------------------------------
 
 
 
 
 import requests
 import requests
 import yaml
 import yaml
 
 
 
 
-LINE_FORMAT_MINMAX = '#define ICON_{!s}_{!s} 0x{!s}\n'
-
-UNICODE_MIN = 'ffff'
-UNICODE_MAX = '0'
-TIMEOUT = 2
-
-MESSAGE_SUCCESS = '{!s} fonts - conversion success: {!s}'
-MESSAGE_ERROR = '{!s} fonts - error \n\t{!s}'
-
-
-def get_prelude( url ):
-	prelude = '// Generated by GenerateIconFontCppHeaders.py \n// from {!s}\n#pragma once\n\n'.format( url )
-	return prelude
-
-
-def line_format( font_abbr, font, unicode, cpp11 = True ):
-	if cpp11:
-		result = '#define ICON_{!s}_{!s} u8"\u{!s}"\n'.format( font_abbr, font, unicode )
-	else:
-		unicode_base = ''.join([ '{0:x}'.format( ord( x )) for x in unichr( int( unicode, 16 )).encode( 'utf-8' )]).upper()
-		unicode = '\\x' + unicode_base[ :2 ] + '\\x' + unicode_base[ 2:4 ] + '\\x' + unicode_base[ 4: ]
-		result = '#define ICON_{!s}_{!s} "{!s}"\n'.format( font_abbr, font, unicode )
-	return result
-
-
-def convert_font_awesome( font_name, font_abbr, source_url, output_file, cpp11 ):
-	try:
-		response = requests.get( source_url, timeout = TIMEOUT )
-		if response.status_code == 200:
-			input = yaml.safe_load( response.content )
-			min = UNICODE_MIN
-			max = UNICODE_MAX
-			output_fonts = ''
-			for item in input[ 'icons' ]:
-				font = ''
-				for char in item[ 'id' ]:
-					font += '_' if ( char == '-' ) else str.upper( char )
-				unicode = item[ 'unicode' ]
-				if unicode < min:
-					min = unicode
-				elif unicode >= max:
-					max = unicode
-				output_fonts += line_format( font_abbr, font, unicode, cpp11 )
-			output = get_prelude( source_url ) + \
-						LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \
-						LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \
-						output_fonts
-			with open( output_file, 'w' ) as f:
-				f.write( output )
-			print( MESSAGE_SUCCESS.format( font_name, output_file ))
-	except Exception as e:
-		print( MESSAGE_ERROR.format( font_name, e ))
-
-
-def convert_material_design( font_name, font_abbr, source_url, output_file, cpp11 ):
-	try:
-		response = requests.get( source_url, timeout = TIMEOUT )
-		if response.status_code == 200:
-			input = str.split( response.content, '\n' )
-			min = UNICODE_MIN
-			max = UNICODE_MAX
-			output_fonts = ''
-			for line in input:
-				words = str.split( line )
-				if words:
-					font = ''
-					for char in words[ 0 ]:
-						font += '_' if ( char == '-' ) else str.upper( char )
-					unicode = words[ 1 ]
-					if unicode < min:
-						min = unicode
-					elif unicode >= max:
-						max = unicode
-					output_fonts += line_format( font_abbr, font, unicode, cpp11 )
-			output = get_prelude( source_url ) + \
-						LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \
-						LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \
-						output_fonts
-			with open( output_file, 'w' ) as f:
-				f.write( output )
-			print( MESSAGE_SUCCESS.format( font_name, output_file ))
-	except Exception as e:
-		print( MESSAGE_ERROR.format( font_name, e ))
-
-
-def convert_kenney( font_name, font_abbr, source_url, output_file, cpp11 ):
-	try:
-		response = requests.get( source_url, timeout = TIMEOUT )
-		if response.status_code == 200:
-			input = str.split( response.content, '\n' )
-			min = UNICODE_MIN
-			max = UNICODE_MAX
-			output_fonts = ''
-			font_begin= '.ki-'
-			font_end = ':before'
-			unicode_begin = '"\\'
-			unicode_end = '";'
-			for line in input:
-				words = str.split( line )
-				if words:
-					if font_begin in words[ 0 ]:
-						font = ''
-						word = words[ 0 ][( words[ 0 ].find( font_begin ) + len( font_begin )) : ( words[ 0 ].find( font_end ))]
-						for char in word:
-							font += '_' if ( char == '-' ) else str.upper( char )
-						unicode = str( words[ 2 ][( words[ 2 ].find( unicode_begin ) + len( unicode_begin )) : words[ 2 ].find( unicode_end )])
-						if unicode < min:
-							min = unicode
-						elif unicode >= max:
-							max = unicode
-						output_fonts += line_format( font_abbr, font, unicode, cpp11 )
-			output = get_prelude( source_url ) + \
-						LINE_FORMAT_MINMAX.format( 'MIN', font_abbr, min ) + \
-						LINE_FORMAT_MINMAX.format( 'MAX', font_abbr, max ) + \
-						output_fonts
-			with open( output_file, 'w' ) as f:
-				f.write( output )
-			print( MESSAGE_SUCCESS.format( font_name, output_file ))
-	except Exception as e:
-		print( MESSAGE_ERROR.format( font_name, e ))
+# Fonts
+
+class Font:
+	font_tff = '[ ERROR - missing tff file info ]'
+	font_url = '[ ERROR - missing font data url ]'
+	font_name = '[ ERROR - missing font name ]'
+	font_abbr = '[ ERROR - missing font abbreviation ]'
+
+	@classmethod
+	def get_icons( cls, input ):
+		# intermediate representation of the fonts data, identify the min and max
+		print( '[ ERROR - missing implementation of class method get_icons for {!s} ]'.format( cls.font_name ))
+		icons_data = {}
+		icons_data.update({ 'font_min' : '[ ERROR - missing font min ]',
+							'font_max' : '[ ERROR - missing font max ]',
+							'icons' : '[ ERROR - missing list of pairs [ font icon name, code ]]' })
+		return icons_data
+
+	@classmethod
+	def download( cls ):
+		input_raw = ''
+		try :
+			response = requests.get( cls.font_url, timeout = 2 )
+			if response.status_code == 200:
+				input_raw = response.content
+				print( 'Downloaded - ' + cls.font_name )
+		except Exception as e :
+			print( '[ ERROR - {!s}: {!s} ]'.format( cls.font_name, e ))
+		return input_raw
+
+	@classmethod
+	def get_intermediate_representation( cls ):
+		font_ir = {}
+		input_raw = cls.download()
+		if input_raw:
+			icons_data = cls.get_icons( input_raw )
+			font_ir.update( icons_data )
+			font_ir.update({ 'font_tff' : cls.font_tff,
+							 'font_url' : cls.font_url,
+							 'font_name' : cls.font_name,
+							 'font_abbr' : cls.font_abbr })
+			print( 'Generated intermediate data - ' + cls.font_name )
+		return font_ir
+
+
+class FontFA( Font ):
+	font_tff = 'https://github.com/FortAwesome/Font-Awesome/blob/master/fonts/fontawesome-webfont.ttf'
+	font_url = 'https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml'
+	font_name = 'font_awesome'
+	font_abbr = 'FA'
+
+	@classmethod
+	def get_icons( self, input ):
+		icons_data = {}
+		data = yaml.safe_load( input )
+		if data:
+			font_min = 'ffff'
+			font_max = '0'
+			icons = []
+			for item in data[ 'icons' ]:
+				if item[ 'unicode' ] < font_min:
+					font_min = item[ 'unicode' ]
+				if item[ 'unicode' ] >= font_max:
+					font_max = item[ 'unicode' ]
+				icons.append([ item[ 'id' ], item[ 'unicode' ]])
+			icons_data.update({ 'font_min' : font_min,
+								'font_max' : font_max,
+								'icons' : icons })
+		return icons_data
+
+
+class FontMD( Font ):
+	font_tff = 'https://github.com/google/material-design-icons/blob/master/iconfont/MaterialIcons-Regular.ttf'
+	font_url = 'https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints'
+	font_name = 'material_design'
+	font_abbr = 'MD'
+
+	@classmethod
+	def get_icons( self, input ):
+		icons_data = {}
+		lines = str.split( input, '\n' )
+		if lines:
+			font_min = 'ffff'
+			font_max = '0'
+			icons = []
+			for line in lines :
+				words = str.split(line)
+				if words and len( words ) >= 2:
+					if words[ 1 ] < font_min:
+						font_min = words[ 1 ]
+					if words[ 1 ] >= font_max:
+						font_max = words[ 1 ]
+					icons.append( words )
+			icons_data.update({ 'font_min' : font_min,
+								'font_max' : font_max,
+								'icons' : icons  })
+		return icons_data
+
+
+class FontKI( Font ):
+	font_tff = 'https://github.com/SamBrishes/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf'
+	font_url = 'https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css'
+	font_name = 'kenney'
+	font_abbr = 'KI'
+
+	@classmethod
+	def get_icons( self, input ):
+		icons_data = {}
+		lines = str.split( input, '\n' )
+		if lines:
+			font_min = 'ffff'
+			font_max = '0'
+			icons = []
+			for line in lines :
+				if '.ki-' in line:
+					words = str.split(line)
+					if words and '.ki-' in words[ 0 ]:
+						font_id = words[ 0 ].partition( '.ki-' )[2].partition( ':before' )[0]
+						font_code = words[ 2 ].partition( '"\\' )[2].partition( '";' )[0]
+						if font_code < font_min:
+							font_min = font_code
+						if font_code >= font_max:
+							font_max = font_code
+						icons.append([ font_id, font_code ])
+			icons_data.update({ 'font_min' : font_min,
+								'font_max' : font_max,
+								'icons' : icons  })
+		return icons_data
+
+
+# Languages
+
+
+class Language:
+	language_name = '[ ERROR - missing language name ]'
+	file_name = '[ ERROR - missing file name ]'
+	intermediate = {}
+
+	def __init__( self, intermediate ):
+		self.intermediate = intermediate
+
+	@classmethod
+	def prelude( cls ):
+		print('[ ERROR - missing implementation of class method prelude for {!s} ]'.format(cls.language_name))
+		result = '[ ERROR - missing prelude ]'
+		return result
+
+	@classmethod
+	def lines_minmax( cls ):
+		print('[ ERROR - missing implementation of class method lines_minmax for {!s} ]'.format(cls.language_name))
+		result = '[ ERROR - missing min and max ]'
+		return result
+
+	@classmethod
+	def line_icon( cls, icon ):
+		print('[ ERROR - missing implementation of class method line_icon for {!s} ]'.format( cls.language_name ))
+		result = '[ ERROR - missing icon line ]'
+		return result
+
+	@classmethod
+	def convert( cls ):
+		result = cls.prelude() + cls.lines_minmax()
+		for icon in cls.intermediate.get( 'icons' ):
+			line_icon = cls.line_icon( icon )
+			result += line_icon
+		print ( 'Converted - {!s} for {!s}' ).format( cls.intermediate.get( 'font_name' ), cls.language_name)
+		return result
+
+	@classmethod
+	def save_to_file( cls ):
+		filename = cls.file_name.format( name = str(cls.intermediate.get( 'font_name' )).replace( ' ', '' ))
+		converted = cls.convert()
+		with open( filename, 'w' ) as f:
+			f.write( converted )
+		print( 'Saved - {!s}' ).format( filename )
+
+
+class LanguageC89( Language ):
+	language_name = 'C89'
+	file_name = 'icons_{name}.h'
+
+	@classmethod
+	def prelude( cls ):
+		tmpl_prelude = '// Generated by GenerateIconFontCppHeaders.py for language {lang}\n' + \
+					   '// from {url}\n' + \
+					   '// for use with {tff}\n' + \
+					   '#pragma once\n\n'
+		result = tmpl_prelude.format(lang = cls.language_name,
+									 url = cls.intermediate.get('font_url'),
+									 tff = cls.intermediate.get('font_tff'))
+		return result
+
+	@classmethod
+	def lines_minmax( cls ):
+		tmpl_line_minmax = '#define ICON_{minmax}_{abbr} 0x{val}\n'
+		result = tmpl_line_minmax.format(minmax = 'MIN',
+										 abbr = cls.intermediate.get('font_abbr'),
+										 val = cls.intermediate.get('font_min')) + \
+				 tmpl_line_minmax.format(minmax = 'MAX',
+										 abbr = cls.intermediate.get('font_abbr'),
+										 val = cls.intermediate.get('font_max'))
+		return result
+
+	@classmethod
+	def line_icon( cls, icon ):
+		tmpl_line_icon = '#define ICON_{abbr}_{icon} "{code}"\n'
+		icon_name = str.upper( icon[ 0 ]).replace( '-', '_' )
+		code_base = ''.join([ '{0:x}'.format( ord( x )) for x in unichr( int( icon[ 1 ], 16 )).encode( 'utf-8' )]).upper()
+		icon_code = '\\x' + code_base[ :2 ] + '\\x' + code_base[ 2:4 ] + '\\x' + code_base[ 4: ]
+		result = tmpl_line_icon.format( abbr = cls.intermediate.get( 'font_abbr' ),
+										icon = icon_name,
+										code = icon_code )
+		return result
+
+
+class LanguageCpp11( LanguageC89 ):
+	language_name = 'C++11'
+	file_name = 'Icons{name}.h'
+
+	@classmethod
+	def line_icon( cls, icon ):
+		tmpl_line_icon = '#define ICON_{abbr}_{icon} u8"\u{code}"\n'
+		icon_name = str.upper( icon[ 0 ]).replace( '-', '_' )
+		icon_code = icon[ 1 ]
+		result = tmpl_line_icon.format( abbr = cls.intermediate.get('font_abbr'),
+										icon = icon_name,
+										code = icon_code)
+		return result
+
+
+class LanguageNone( Language ):
+	language_name = 'None'
+	file_name = 'Icons{name}.n'
+
+	@classmethod
+	def prelude( cls ):
+		tmpl_prelude = 'none\n' + \
+					   '; Generated by GenerateIconFontCppHeaders.py for language {lang}\n' + \
+					   '; from {url}\n' + \
+					   '; for use with {tff}\n' + \
+					   '\n$\n'
+		result = tmpl_prelude.format( lang = cls.language_name,
+									  url = cls.intermediate.get( 'font_url' ),
+									  tff = cls.intermediate.get( 'font_tff' ))
+		return result
+
+	@classmethod
+	def lines_minmax( cls ):
+		tmpl_line_minmax = '    var icon-{minmax}-{abbr} 0x{val}\n'
+		result = tmpl_line_minmax.format( minmax = 'min',
+										  abbr = cls.intermediate.get( 'font_abbr' ).lower(),
+										  val = cls.intermediate.get( 'font_min' )) + \
+				 tmpl_line_minmax.format( minmax = 'max',
+										  abbr = cls.intermediate.get( 'font_abbr' ).lower(),
+										  val = cls.intermediate.get( 'font_max' ))
+		return result
+
+	@classmethod
+	def line_icon( cls, icon ):
+		tmpl_line_icon = '    var icon-{abbr}-{icon} "{code}"\n'
+		icon_name = str.upper( icon[ 0 ]).replace( '-', '_' ).lower()
+		icon_code = unichr( int( icon[ 1 ], 16 )).encode( 'utf-8' )
+		result = tmpl_line_icon.format( abbr = cls.intermediate.get( 'font_abbr' ).lower(),
+									    icon = icon_name,
+									    code = icon_code )
+		return result
 
 
 
 
 # Main
 # Main
 
 
-convert_font_awesome( 'Font Awesome', 'FA', 'https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml', 'icons_font_awesome.h', False )
-convert_material_design( 'Material Design', 'MD', 'https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints', 'icons_material_design.h', False )
-convert_kenney( 'Kenney', 'KI', 'https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css', 'icons_kenney.h', False )
+fonts = [ FontKI , FontMD, FontFA ]
+languages = [ LanguageC89 ]
+
+intermediates = []
+for font in fonts:
+	intermediates.append( font.get_intermediate_representation())
+for interm in intermediates:
+	Language.intermediate = interm
+	for lang in languages:
+		lang.save_to_file()

+ 74 - 3
3rdparty/iconfontheaders/icons_font_awesome.h

@@ -1,9 +1,10 @@
-// Generated by GenerateIconFontCppHeaders.py 
+// Generated by GenerateIconFontCppHeaders.py for language C89
 // from https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml
 // from https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml
+// for use with https://github.com/FortAwesome/Font-Awesome/blob/master/fonts/fontawesome-webfont.ttf
 #pragma once
 #pragma once
 
 
 #define ICON_MIN_FA 0xf000
 #define ICON_MIN_FA 0xf000
-#define ICON_MAX_FA 0xf295
+#define ICON_MAX_FA 0xf2e0
 #define ICON_FA_GLASS "\xEF\x80\x80"
 #define ICON_FA_GLASS "\xEF\x80\x80"
 #define ICON_FA_MUSIC "\xEF\x80\x81"
 #define ICON_FA_MUSIC "\xEF\x80\x81"
 #define ICON_FA_SEARCH "\xEF\x80\x82"
 #define ICON_FA_SEARCH "\xEF\x80\x82"
@@ -387,7 +388,7 @@
 #define ICON_FA_STUMBLEUPON "\xEF\x86\xA4"
 #define ICON_FA_STUMBLEUPON "\xEF\x86\xA4"
 #define ICON_FA_DELICIOUS "\xEF\x86\xA5"
 #define ICON_FA_DELICIOUS "\xEF\x86\xA5"
 #define ICON_FA_DIGG "\xEF\x86\xA6"
 #define ICON_FA_DIGG "\xEF\x86\xA6"
-#define ICON_FA_PIED_PIPER "\xEF\x86\xA7"
+#define ICON_FA_PIED_PIPER_PP "\xEF\x86\xA7"
 #define ICON_FA_PIED_PIPER_ALT "\xEF\x86\xA8"
 #define ICON_FA_PIED_PIPER_ALT "\xEF\x86\xA8"
 #define ICON_FA_DRUPAL "\xEF\x86\xA9"
 #define ICON_FA_DRUPAL "\xEF\x86\xA9"
 #define ICON_FA_JOOMLA "\xEF\x86\xAA"
 #define ICON_FA_JOOMLA "\xEF\x86\xAA"
@@ -609,3 +610,73 @@
 #define ICON_FA_BLUETOOTH "\xEF\x8A\x93"
 #define ICON_FA_BLUETOOTH "\xEF\x8A\x93"
 #define ICON_FA_BLUETOOTH_B "\xEF\x8A\x94"
 #define ICON_FA_BLUETOOTH_B "\xEF\x8A\x94"
 #define ICON_FA_PERCENT "\xEF\x8A\x95"
 #define ICON_FA_PERCENT "\xEF\x8A\x95"
+#define ICON_FA_GITLAB "\xEF\x8A\x96"
+#define ICON_FA_WPBEGINNER "\xEF\x8A\x97"
+#define ICON_FA_WPFORMS "\xEF\x8A\x98"
+#define ICON_FA_ENVIRA "\xEF\x8A\x99"
+#define ICON_FA_UNIVERSAL_ACCESS "\xEF\x8A\x9A"
+#define ICON_FA_WHEELCHAIR_ALT "\xEF\x8A\x9B"
+#define ICON_FA_QUESTION_CIRCLE_O "\xEF\x8A\x9C"
+#define ICON_FA_BLIND "\xEF\x8A\x9D"
+#define ICON_FA_AUDIO_DESCRIPTION "\xEF\x8A\x9E"
+#define ICON_FA_VOLUME_CONTROL_PHONE "\xEF\x8A\xA0"
+#define ICON_FA_BRAILLE "\xEF\x8A\xA1"
+#define ICON_FA_ASSISTIVE_LISTENING_SYSTEMS "\xEF\x8A\xA2"
+#define ICON_FA_AMERICAN_SIGN_LANGUAGE_INTERPRETING "\xEF\x8A\xA3"
+#define ICON_FA_DEAF "\xEF\x8A\xA4"
+#define ICON_FA_GLIDE "\xEF\x8A\xA5"
+#define ICON_FA_GLIDE_G "\xEF\x8A\xA6"
+#define ICON_FA_SIGN_LANGUAGE "\xEF\x8A\xA7"
+#define ICON_FA_LOW_VISION "\xEF\x8A\xA8"
+#define ICON_FA_VIADEO "\xEF\x8A\xA9"
+#define ICON_FA_VIADEO_SQUARE "\xEF\x8A\xAA"
+#define ICON_FA_SNAPCHAT "\xEF\x8A\xAB"
+#define ICON_FA_SNAPCHAT_GHOST "\xEF\x8A\xAC"
+#define ICON_FA_SNAPCHAT_SQUARE "\xEF\x8A\xAD"
+#define ICON_FA_PIED_PIPER "\xEF\x8A\xAE"
+#define ICON_FA_FIRST_ORDER "\xEF\x8A\xB0"
+#define ICON_FA_YOAST "\xEF\x8A\xB1"
+#define ICON_FA_THEMEISLE "\xEF\x8A\xB2"
+#define ICON_FA_GOOGLE_PLUS_OFFICIAL "\xEF\x8A\xB3"
+#define ICON_FA_FONT_AWESOME "\xEF\x8A\xB4"
+#define ICON_FA_HANDSHAKE_O "\xEF\x8A\xB5"
+#define ICON_FA_ENVELOPE_OPEN "\xEF\x8A\xB6"
+#define ICON_FA_ENVELOPE_OPEN_O "\xEF\x8A\xB7"
+#define ICON_FA_LINODE "\xEF\x8A\xB8"
+#define ICON_FA_ADDRESS_BOOK "\xEF\x8A\xB9"
+#define ICON_FA_ADDRESS_BOOK_O "\xEF\x8A\xBA"
+#define ICON_FA_ADDRESS_CARD "\xEF\x8A\xBB"
+#define ICON_FA_ADDRESS_CARD_O "\xEF\x8A\xBC"
+#define ICON_FA_USER_CIRCLE "\xEF\x8A\xBD"
+#define ICON_FA_USER_CIRCLE_O "\xEF\x8A\xBE"
+#define ICON_FA_USER_O "\xEF\x8B\x80"
+#define ICON_FA_ID_BADGE "\xEF\x8B\x81"
+#define ICON_FA_ID_CARD "\xEF\x8B\x82"
+#define ICON_FA_ID_CARD_O "\xEF\x8B\x83"
+#define ICON_FA_QUORA "\xEF\x8B\x84"
+#define ICON_FA_FREE_CODE_CAMP "\xEF\x8B\x85"
+#define ICON_FA_TELEGRAM "\xEF\x8B\x86"
+#define ICON_FA_THERMOMETER_FULL "\xEF\x8B\x87"
+#define ICON_FA_THERMOMETER_THREE_QUARTERS "\xEF\x8B\x88"
+#define ICON_FA_THERMOMETER_HALF "\xEF\x8B\x89"
+#define ICON_FA_THERMOMETER_QUARTER "\xEF\x8B\x8A"
+#define ICON_FA_THERMOMETER_EMPTY "\xEF\x8B\x8B"
+#define ICON_FA_SHOWER "\xEF\x8B\x8C"
+#define ICON_FA_BATH "\xEF\x8B\x8D"
+#define ICON_FA_PODCAST "\xEF\x8B\x8E"
+#define ICON_FA_WINDOW_MAXIMIZE "\xEF\x8B\x90"
+#define ICON_FA_WINDOW_MINIMIZE "\xEF\x8B\x91"
+#define ICON_FA_WINDOW_RESTORE "\xEF\x8B\x92"
+#define ICON_FA_WINDOW_CLOSE "\xEF\x8B\x93"
+#define ICON_FA_WINDOW_CLOSE_O "\xEF\x8B\x94"
+#define ICON_FA_BANDCAMP "\xEF\x8B\x95"
+#define ICON_FA_GRAV "\xEF\x8B\x96"
+#define ICON_FA_ETSY "\xEF\x8B\x97"
+#define ICON_FA_IMDB "\xEF\x8B\x98"
+#define ICON_FA_RAVELRY "\xEF\x8B\x99"
+#define ICON_FA_EERCAST "\xEF\x8B\x9A"
+#define ICON_FA_MICROCHIP "\xEF\x8B\x9B"
+#define ICON_FA_SNOWFLAKE_O "\xEF\x8B\x9C"
+#define ICON_FA_SUPERPOWERS "\xEF\x8B\x9D"
+#define ICON_FA_WPEXPLORER "\xEF\x8B\x9E"
+#define ICON_FA_MEETUP "\xEF\x8B\xA0"

+ 2 - 1
3rdparty/iconfontheaders/icons_kenney.h

@@ -1,5 +1,6 @@
-// Generated by GenerateIconFontCppHeaders.py 
+// Generated by GenerateIconFontCppHeaders.py for language C89
 // from https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css
 // from https://raw.githubusercontent.com/SamBrishes/kenney-icon-font/master/css/kenney-icons.css
+// for use with https://github.com/SamBrishes/kenney-icon-font/blob/master/fonts/kenney-icon-font.ttf
 #pragma once
 #pragma once
 
 
 #define ICON_MIN_KI 0xe900
 #define ICON_MIN_KI 0xe900

+ 2 - 1
3rdparty/iconfontheaders/icons_material_design.h

@@ -1,5 +1,6 @@
-// Generated by GenerateIconFontCppHeaders.py 
+// Generated by GenerateIconFontCppHeaders.py for language C89
 // from https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints
 // from https://raw.githubusercontent.com/google/material-design-icons/master/iconfont/codepoints
+// for use with https://github.com/google/material-design-icons/blob/master/iconfont/MaterialIcons-Regular.ttf
 #pragma once
 #pragma once
 
 
 #define ICON_MIN_MD 0xe000
 #define ICON_MIN_MD 0xe000