mirror of
https://github.com/ryanoasis/nerd-fonts.git
synced 2024-12-25 20:18:01 +02:00
Refactored to use patch table
This commit is contained in:
parent
55395910bd
commit
8ddf5376ac
146
font-patcher
146
font-patcher
@ -186,108 +186,32 @@ sourceFont.fontlog = projectInfo + "\n\n" + changelog.read()
|
|||||||
sourceFont.version += ";" + projectName + " " + version
|
sourceFont.version += ";" + projectName + " " + version
|
||||||
#print "Version now is " + sourceFont.version
|
#print "Version now is " + sourceFont.version
|
||||||
|
|
||||||
# Open fonts and force the em size to be equal
|
|
||||||
|
|
||||||
symbols = fontforge.open("glyph-source-fonts/original-source.otf")
|
|
||||||
powerlineSymbols = fontforge.open("glyph-source-fonts/PowerlineSymbols.otf")
|
|
||||||
powerlineExtraSymbols = fontforge.open("glyph-source-fonts/PowerlineExtraSymbols.otf")
|
|
||||||
symbolsDevicons = fontforge.open("glyph-source-fonts/devicons.ttf")
|
|
||||||
|
|
||||||
symbols.em = sourceFont.em
|
|
||||||
symbolsDevicons.em = sourceFont.em
|
|
||||||
powerlineSymbols.em = sourceFont.em
|
|
||||||
powerlineExtraSymbols.em = sourceFont.em
|
|
||||||
|
|
||||||
if args.fontawesome:
|
|
||||||
fontawesome = fontforge.open("glyph-source-fonts/FontAwesome.otf")
|
|
||||||
fontawesome.em = sourceFont.em
|
|
||||||
|
|
||||||
if args.octicons:
|
|
||||||
octicons = fontforge.open("glyph-source-fonts/octicons.ttf")
|
|
||||||
octicons.em = sourceFont.em
|
|
||||||
octiconsExactEncodingPosition = True
|
|
||||||
|
|
||||||
if args.pomicons:
|
|
||||||
pomicons = fontforge.open("glyph-source-fonts/Pomicons.otf")
|
|
||||||
pomicons.em = sourceFont.em
|
|
||||||
|
|
||||||
if args.fontlinux:
|
|
||||||
fontlinux = fontforge.open("glyph-source-fonts/font-linux.ttf")
|
|
||||||
fontlinux.em = sourceFont.em
|
|
||||||
fontlinuxExactEncodingPosition = True
|
|
||||||
|
|
||||||
# Prevent glyph encoding position conflicts between glyph sets
|
# Prevent glyph encoding position conflicts between glyph sets
|
||||||
|
|
||||||
|
octiconsExactEncodingPosition = True
|
||||||
if args.fontawesome and args.octicons:
|
if args.fontawesome and args.octicons:
|
||||||
octiconsExactEncodingPosition = False
|
octiconsExactEncodingPosition = False
|
||||||
|
|
||||||
|
fontlinuxExactEncodingPosition = True
|
||||||
if args.fontawesome or args.octicons:
|
if args.fontawesome or args.octicons:
|
||||||
fontlinuxExactEncodingPosition = False
|
fontlinuxExactEncodingPosition = False
|
||||||
|
|
||||||
# Define the character ranges
|
# Define the character ranges
|
||||||
# Symbol font ranges
|
# Symbol font ranges
|
||||||
|
|
||||||
symbolsPomiconsRangeStart = 0xE000
|
PATCH_SET = [
|
||||||
symbolsPomiconsRangeEnd = 0xE00A
|
{ 'Enabled': True, 'Filename': "original-source.otf", 'Exact': True, 'SymStart': 0xE4FA, 'SymEnd': 0xE52A, 'SrcStart': 0xE5FA, 'SrcEnd': 0xE62A, 'ScaleGlyph': None }, # Windows logo
|
||||||
|
{ 'Enabled': True, 'Filename': "devicons.ttf", 'Exact': True, 'SymStart': 0xE600, 'SymEnd': 0xE6C5, 'SrcStart': 0xE700, 'SrcEnd': 0xE7C5, 'ScaleGlyph': 0xE60E }, # Android logo
|
||||||
symbolsPowerlineRange1Start = 0xE0A0
|
{ 'Enabled': args.powerline, 'Filename': "PowerlineSymbols.otf", 'Exact': True, 'SymStart': 0xE0A0, 'SymEnd': 0xE0A2, 'SrcStart': 0xE0A0, 'SrcEnd': 0xF295, 'ScaleGlyph': None }, # Windows logo
|
||||||
symbolsPowerlineRange1End = 0xE0A2
|
{ 'Enabled': args.powerline, 'Filename': "PowerlineSymbols.otf", 'Exact': True, 'SymStart': 0xE0B0, 'SymEnd': 0xE0B3, 'SrcStart': 0xE0B0, 'SrcEnd': 0xE0B3, 'ScaleGlyph': None }, # Windows logo
|
||||||
|
{ 'Enabled': args.powerlineextra, 'Filename': "PowerlineExtraSymbols.otf",'Exact': True, 'SymStart': 0xE0A3, 'SymEnd': 0xE0A3, 'SrcStart': 0xE0A3, 'SrcEnd': 0xE0A3, 'ScaleGlyph': None }, # Windows logo
|
||||||
symbolsPowerlineRange2Start = 0xE0B0
|
{ 'Enabled': args.powerlineextra, 'Filename': "PowerlineExtraSymbols.otf",'Exact': True, 'SymStart': 0xE0B4, 'SymEnd': 0xE0C8, 'SrcStart': 0xE0B4, 'SrcEnd': 0xE0C8, 'ScaleGlyph': None }, # Windows logo
|
||||||
symbolsPowerlineRange2End = 0xE0B3
|
{ 'Enabled': args.powerlineextra, 'Filename': "PowerlineExtraSymbols.otf",'Exact': True, 'SymStart': 0xE0CC, 'SymEnd': 0xE0D4, 'SrcStart': 0xE0CC, 'SrcEnd': 0xE0D4, 'ScaleGlyph': None }, # Windows logo
|
||||||
|
{ 'Enabled': args.pomicons, 'Filename': "Pomicons.otf", 'Exact': True, 'SymStart': 0xE000, 'SymEnd': 0xE00A, 'SrcStart': 0xE000, 'SrcEnd': 0xE00A, 'ScaleGlyph': None },
|
||||||
symbolsPowerlineExtraRange1Start = 0xE0A3
|
{ 'Enabled': args.fontawesome, 'Filename': "FontAwesome.otf", 'Exact': True, 'SymStart': 0xF000, 'SymEnd': 0xF295, 'SrcStart': 0xF000, 'SrcEnd': 0xF295, 'ScaleGlyph': 0xF17A }, # Windows logo
|
||||||
symbolsPowerlineExtraRange1End = 0xE0A3
|
{ 'Enabled': args.fontlinux, 'Filename': "font-linux.ttf", 'Exact': fontlinuxExactEncodingPosition, 'SymStart': 0xF100, 'SymEnd': 0xF115, 'SrcStart': 0xF300, 'SrcEnd': 0xF315, 'ScaleGlyph': 0xF10E }, # Ubuntu logo
|
||||||
|
{ 'Enabled': args.octicons, 'Filename': "octicons.ttf", 'Exact': octiconsExactEncodingPosition, 'SymStart': 0xF000, 'SymEnd': 0xF0DB, 'SrcStart': 0xF400, 'SrcEnd': 0xF4DB, 'ScaleGlyph': 0xF02E }, # Magnifying glass
|
||||||
symbolsPowerlineExtraRange2Start = 0xE0B4
|
]
|
||||||
symbolsPowerlineExtraRange2End = 0xE0C8
|
|
||||||
|
|
||||||
symbolsPowerlineExtraRange3Start = 0xE0CC
|
|
||||||
symbolsPowerlineExtraRange3End = 0xE0D4
|
|
||||||
|
|
||||||
symbolsOriginalRangeStart = 0xE4FA
|
|
||||||
symbolsOriginalRangeEnd = 0xE52A
|
|
||||||
|
|
||||||
symbolsDeviconsRangeStart = 0xE600
|
|
||||||
symbolsDeviconsRangeEnd = 0xE6C5
|
|
||||||
|
|
||||||
symbolsFontAwesomeRangeStart = 0xF000
|
|
||||||
symbolsFontAwesomeRangeEnd = 0xF295
|
|
||||||
|
|
||||||
symbolsOcticonsRangeStart = 0xF000
|
|
||||||
symbolsOcticonsRangeEnd = 0xF0DB
|
|
||||||
|
|
||||||
symbolsFontLinuxRangeStart = 0xF100
|
|
||||||
symbolsFontLinuxRangeEnd = 0xF115
|
|
||||||
|
|
||||||
# Destination font ranges
|
|
||||||
sourceFontPomiconsStart = 0xE000
|
|
||||||
sourceFontPomiconsEnd = 0xE00A
|
|
||||||
|
|
||||||
sourceFontOriginalStart = 0xE5FA
|
|
||||||
sourceFontOriginalEnd = 0xE62A
|
|
||||||
|
|
||||||
sourceFontDeviconsStart = 0xE700
|
|
||||||
sourceFontDeviconsEnd = 0xE7C5
|
|
||||||
|
|
||||||
sourceFontFontAwesomeStart = 0xF000
|
|
||||||
sourceFontFontAwesomeEnd = 0xF295
|
|
||||||
|
|
||||||
sourceFontOcticonsStart = 0xF400
|
|
||||||
sourceFontOcticonsEnd = 0xF4DB
|
|
||||||
|
|
||||||
sourceFontFontLinuxStart = 0xF300
|
|
||||||
sourceFontFontLinuxEnd = 0xF315
|
|
||||||
|
|
||||||
# To keep the size of glyphs constant when scaling, choose a larger
|
|
||||||
# sized glyph from each symbol font to set the scaling amount
|
|
||||||
symbolsPomiconsScaleGlyph = None # 0xE000 # first symbol
|
|
||||||
symbolsPowerlineScaleGlyph = None # 0xE0A0 # scm branch symbol
|
|
||||||
symbolsPowerlineExtraScaleGlyph = None # 0xE70E # Android logo
|
|
||||||
symbolsDeviconsScaleGlyph = 0xE60E # Android logo
|
|
||||||
symbolsFontAwesomeScaleGlyph = 0xF17A # Windows logo
|
|
||||||
symbolsOcticonsScaleGlyph = 0xF02E # magnifying glass
|
|
||||||
symbolsFontLinuxScaleGlyph = 0xF10E # Ubuntu logo
|
|
||||||
|
|
||||||
SYM_ATTR = {
|
SYM_ATTR = {
|
||||||
# Right/left-aligned glyphs will have their advance width reduced in order to overlap the next glyph slightly
|
# Right/left-aligned glyphs will have their advance width reduced in order to overlap the next glyph slightly
|
||||||
@ -598,29 +522,25 @@ if args.single and extension == '.ttf':
|
|||||||
# This is only a problem with ttf files, otf files seem to be okay.
|
# This is only a problem with ttf files, otf files seem to be okay.
|
||||||
set_width(sourceFont, font_dim['width'])
|
set_width(sourceFont, font_dim['width'])
|
||||||
|
|
||||||
copy_glyphs(sourceFont, sourceFontOriginalStart, sourceFontOriginalEnd, symbols, symbolsOriginalRangeStart, symbolsOriginalRangeEnd)
|
# Prevent opening and closing the fontforge font. Makes things faster when patching
|
||||||
copy_glyphs(sourceFont, sourceFontDeviconsStart, sourceFontDeviconsEnd, symbolsDevicons, symbolsDeviconsRangeStart, symbolsDeviconsRangeEnd, scaleGlyph=symbolsDeviconsScaleGlyph)
|
# multiple ranges using the same symbol font.
|
||||||
|
PreviousSymbolFilename = ""
|
||||||
|
symfont = None
|
||||||
|
for patch in PATCH_SET:
|
||||||
|
if patch['Enabled']:
|
||||||
|
if PreviousSymbolFilename != patch['Filename']:
|
||||||
|
# We have a new symbol font, so close the previous one if it exists
|
||||||
|
if symfont:
|
||||||
|
symfont.close()
|
||||||
|
symfont = None
|
||||||
|
symfont = fontforge.open("glyph-source-fonts/"+patch['Filename'])
|
||||||
|
# Match the symbol font size to the source font size
|
||||||
|
symfont.em = sourceFont.em
|
||||||
|
PreviousSymbolFilename = patch['Filename']
|
||||||
|
copy_glyphs(sourceFont, patch['SrcStart'], patch['SrcEnd'], symfont, patch['SymStart'], patch['SymEnd'], patch['Exact'], patch['ScaleGlyph'])
|
||||||
|
|
||||||
if args.powerline:
|
if symfont:
|
||||||
copy_glyphs(sourceFont, symbolsPowerlineRange1Start, symbolsPowerlineRange1End, powerlineSymbols, symbolsPowerlineRange1Start, symbolsPowerlineRange1End, scaleGlyph=symbolsPowerlineScaleGlyph)
|
symfont.close()
|
||||||
copy_glyphs(sourceFont, symbolsPowerlineRange2Start, symbolsPowerlineRange2End, powerlineSymbols, symbolsPowerlineRange2Start, symbolsPowerlineRange2End, scaleGlyph=symbolsPowerlineScaleGlyph)
|
|
||||||
|
|
||||||
if args.powerlineextra:
|
|
||||||
copy_glyphs(sourceFont, symbolsPowerlineExtraRange1Start, symbolsPowerlineExtraRange1End, powerlineExtraSymbols, symbolsPowerlineExtraRange1Start, symbolsPowerlineExtraRange1End, True, scaleGlyph=symbolsPowerlineExtraScaleGlyph)
|
|
||||||
copy_glyphs(sourceFont, symbolsPowerlineExtraRange2Start, symbolsPowerlineExtraRange2End, powerlineExtraSymbols, symbolsPowerlineExtraRange2Start, symbolsPowerlineExtraRange2End, True, scaleGlyph=symbolsPowerlineExtraScaleGlyph)
|
|
||||||
copy_glyphs(sourceFont, symbolsPowerlineExtraRange3Start, symbolsPowerlineExtraRange3End, powerlineExtraSymbols, symbolsPowerlineExtraRange3Start, symbolsPowerlineExtraRange3End, True, scaleGlyph=symbolsPowerlineExtraScaleGlyph)
|
|
||||||
|
|
||||||
if args.fontawesome:
|
|
||||||
copy_glyphs(sourceFont, sourceFontFontAwesomeStart, sourceFontFontAwesomeEnd, fontawesome, symbolsFontAwesomeRangeStart, symbolsFontAwesomeRangeEnd, True, scaleGlyph=symbolsFontAwesomeScaleGlyph)
|
|
||||||
|
|
||||||
if args.octicons:
|
|
||||||
copy_glyphs(sourceFont, sourceFontOcticonsStart, sourceFontOcticonsEnd, octicons, symbolsOcticonsRangeStart, symbolsOcticonsRangeEnd, octiconsExactEncodingPosition, scaleGlyph=symbolsOcticonsScaleGlyph)
|
|
||||||
|
|
||||||
if args.pomicons:
|
|
||||||
copy_glyphs(sourceFont, sourceFontPomiconsStart, sourceFontPomiconsEnd, pomicons, symbolsPomiconsRangeStart, symbolsPomiconsRangeEnd, scaleGlyph=symbolsPomiconsScaleGlyph)
|
|
||||||
|
|
||||||
if args.fontlinux:
|
|
||||||
copy_glyphs(sourceFont, sourceFontFontLinuxStart, sourceFontFontLinuxEnd, fontlinux, symbolsFontLinuxRangeStart, symbolsFontLinuxRangeEnd, fontlinuxExactEncodingPosition, scaleGlyph=symbolsFontLinuxScaleGlyph)
|
|
||||||
|
|
||||||
# the `PfEd-comments` flag is required for Fontforge to save
|
# the `PfEd-comments` flag is required for Fontforge to save
|
||||||
# '.comment' and '.fontlog'.
|
# '.comment' and '.fontlog'.
|
||||||
|
Loading…
Reference in New Issue
Block a user