diff --git a/.dockerignore b/.dockerignore index faa1253..9e12941 100644 --- a/.dockerignore +++ b/.dockerignore @@ -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/* diff --git a/Dockerfile b/Dockerfile index 82acc0a..2b8dfe7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,4 +6,6 @@ COPY . ./ RUN mkdir -p fonts/output +ENV PYTHONFAULTHANDLER=1 + ENTRYPOINT ["make"] diff --git a/Makefile b/Makefile index c820bca..d134294 100644 --- a/Makefile +++ b/Makefile @@ -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' \ No newline at end of file diff --git a/build.py b/build.py index 3fe0cce..d56cb44 100644 --- a/build.py +++ b/build.py @@ -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 @@ -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 @@ -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' ] }, diff --git a/ligatures.py b/ligatures.py index cac9b83..f89dfc2 100644 --- a/ligatures.py +++ b/ligatures.py @@ -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 @@ -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) diff --git a/ligaturize.py b/ligaturize.py index 69a0d62..193d17c 100644 --- a/ligaturize.py +++ b/ligaturize.py @@ -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())