Skip to content

Commit

Permalink
Fix for Fira >= 4 version, convert ttf to otf
Browse files Browse the repository at this point in the history
  • Loading branch information
gaplo917 committed Jun 16, 2020
1 parent 487c3b0 commit 5469804
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 9 deletions.
4 changes: 2 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
fonts/**/*
images/*
.git
!fonts/fira/distr/otf/*
!fonts/fira/distr/ttf/*
!fonts/hack/build/ttf/*
!fonts/jetbrainsmono/ttf/*
!fonts/fira/showcases/*
!fonts/fira/extras/*
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ COPY . ./

RUN mkdir -p fonts/output

ENV PYTHONFAULTHANDLER=1

ENTRYPOINT ["make"]
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
all:
fontforge -lang=py -script build.py 2>&1 \
| fgrep -v 'This contextual rule applies no lookups.' \
| fgrep -v 'Bad device table'
| fgrep -v 'Bad device table'
20 changes: 16 additions & 4 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import sys
from glob import glob
from ligaturize import ligaturize_font
import fontforge

# Rebuild script for ligaturized fonts.
# Uses ligaturize.py to do the heavy lifting; this file basically just contains
Expand All @@ -23,6 +24,17 @@
# effectively disable this feature.
SCALE_LIGATURE_THRESHOLD = 0.044

# Generate fira otf from ttf files
fira_ttf_list = glob('fonts/fira/distr/ttf/*')

if not fira_ttf_list:
print("Error: pattern '%s' didn't match any fira fonts." % fira_ttf_list)
sys.exit(1)

for fira_ttf in fira_ttf_list:
font = fontforge.open(fira_ttf)
print(fira_ttf.replace('.ttf', '.otf'))
font.generate(fira_ttf.replace('.ttf', '.otf'))

# Fonts that will be ligaturized. ####
# Don't put fonts licensed under UFL here, and don't put fonts licensed under
Expand All @@ -32,28 +44,28 @@
{
'input': 'fonts/hack/build/ttf/Hack-Regular.ttf',
'ligatures': [
'fonts/fira/distr/otf/FiraCode-Regular.otf',
'fonts/fira/distr/ttf/FiraCode-Regular.otf',
'fonts/jetbrainsmono/ttf/JetBrainsMono-Regular.ttf'
]
},
{
'input': 'fonts/hack/build/ttf/Hack-Bold.ttf',
'ligatures': [
'fonts/fira/distr/otf/FiraCode-Bold.otf',
'fonts/fira/distr/ttf/FiraCode-Bold.otf',
'fonts/jetbrainsmono/ttf/JetBrainsMono-Bold.ttf'
]
},
{
'input': 'fonts/hack/build/ttf/Hack-BoldItalic.ttf',
'ligatures': [
'fonts/fira/distr/otf/FiraCode-Bold.otf',
'fonts/fira/distr/ttf/FiraCode-Bold.otf',
'fonts/jetbrainsmono/ttf/JetBrainsMono-Bold-Italic.ttf'
]
},
{
'input': 'fonts/hack/build/ttf/Hack-Italic.ttf',
'ligatures': [
'fonts/fira/distr/otf/FiraCode-Regular.otf',
'fonts/fira/distr/ttf/FiraCode-Regular.otf',
'fonts/jetbrainsmono/ttf/JetBrainsMono-Italic.ttf'
]
},
Expand Down
4 changes: 2 additions & 2 deletions ligatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def get_ligatures_from_files(files):
with open(file, 'r') as f:
for line in f:
lines.append(line.strip().split(' '))
return reduce(list.__add__, lines)
return reduce(list.__add__, lines, [])

def is_valid_ligature(ligature):
# not empty and all chars exist in the dictionary
Expand All @@ -40,6 +40,6 @@ def ligature_to_def(ligature):

# 'COPY_CHARACTER_GLYPHS' feature required to prepend the punctuations characters
ligatures = [{'chars': chars, 'ligature_name': None}] \
+ create_ligatures_def(pattern ='fonts/fira/showcases/**/showcases.txt')
+ create_ligatures_def(pattern ='fonts/fira/extras/showcases.txt')

print("Definitions:", ligatures)
2 changes: 2 additions & 0 deletions ligaturize.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
def get_copyright(liga_font_family_name):
switcher = {
'fira code': 'Programming ligatures added by gaplo917 from FiraCode. Copyright (c) 2015 by Nikita Prokopov',
'fira code semibold': 'Programming ligatures added by gaplo917 from FiraCode. Copyright (c) 2015 by Nikita Prokopov',
'fira code bold': 'Programming ligatures added by gaplo917 from FiraCode. Copyright (c) 2015 by Nikita Prokopov',
'jetbrains mono': 'Programming ligatures added by gaplo917 from JetBrains Mono. Copyright (c) 2020 by JetBrains',
}
return switcher.get(liga_font_family_name.lower())
Expand Down

0 comments on commit 5469804

Please sign in to comment.