foundrytools-cli 1.1.15__tar.gz → 1.1.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. {foundrytools_cli-1.1.15/foundrytools_cli.egg-info → foundrytools_cli-1.1.17}/PKG-INFO +1 -1
  2. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_hhea.py +7 -7
  3. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_utils.py +80 -2
  4. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/Font.py +4 -1
  5. foundrytools_cli-1.1.17/foundryToolsCLI/__init__.py +3 -0
  6. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17/foundrytools_cli.egg-info}/PKG-INFO +1 -1
  7. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/setup.py +1 -1
  8. foundrytools_cli-1.1.15/foundryToolsCLI/__init__.py +0 -3
  9. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/LICENSE +0 -0
  10. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/MANIFEST.in +0 -0
  11. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/README.md +0 -0
  12. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/__init__.py +0 -0
  13. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_assistant.py +0 -0
  14. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_cff.py +0 -0
  15. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_converter.py +0 -0
  16. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_fix.py +0 -0
  17. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_metrics.py +0 -0
  18. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_name.py +0 -0
  19. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_os2.py +0 -0
  20. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_otf.py +0 -0
  21. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_post.py +0 -0
  22. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_print.py +0 -0
  23. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/CLI/ftcli_ttf.py +0 -0
  24. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/VFont.py +0 -0
  25. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/__init__.py +0 -0
  26. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/assistant/UI.py +0 -0
  27. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/assistant/__init__.py +0 -0
  28. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/assistant/fonts_data.py +0 -0
  29. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/assistant/styles_mapping.py +0 -0
  30. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/constants.py +0 -0
  31. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/__init__.py +0 -0
  32. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/options.py +0 -0
  33. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/otf_to_ttf.py +0 -0
  34. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/sfnt_to_web.py +0 -0
  35. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/ttc_to_sfnt.py +0 -0
  36. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/ttf_to_otf.py +0 -0
  37. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/variable_to_static.py +0 -0
  38. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/converters/web_to_sfnt.py +0 -0
  39. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/printer/UI.py +0 -0
  40. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/printer/__init__.py +0 -0
  41. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/CFF_.py +0 -0
  42. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/OS_2.py +0 -0
  43. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/__init__.py +0 -0
  44. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/head.py +0 -0
  45. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/hhea.py +0 -0
  46. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/name.py +0 -0
  47. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/tables/post.py +0 -0
  48. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/__init__.py +0 -0
  49. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/bits_tools.py +0 -0
  50. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/cli_tools.py +0 -0
  51. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/click_tools.py +0 -0
  52. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/logger.py +0 -0
  53. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/otf_tools.py +0 -0
  54. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/ps_recalc_stems.py +0 -0
  55. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/ps_recalc_zones.py +0 -0
  56. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/skia_tools.py +0 -0
  57. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/text_tools.py +0 -0
  58. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/timer.py +0 -0
  59. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/Lib/utils/ttf_tools.py +0 -0
  60. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundryToolsCLI/__main__.py +0 -0
  61. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/SOURCES.txt +0 -0
  62. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/dependency_links.txt +0 -0
  63. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/entry_points.txt +0 -0
  64. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/not-zip-safe +0 -0
  65. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/requires.txt +0 -0
  66. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/foundrytools_cli.egg-info/top_level.txt +0 -0
  67. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/requirements.txt +0 -0
  68. {foundrytools_cli-1.1.15 → foundrytools_cli-1.1.17}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foundrytools-cli
3
- Version: 1.1.15
3
+ Version: 1.1.17
4
4
  Summary: A set of command line tools to inspect, manipulate and convert font files
5
5
  Home-page: https://github.com/ftCLI/FoundryTools-CLI
6
6
  Author: ftCLI
@@ -48,7 +48,7 @@ def cli(
48
48
  ):
49
49
  """A command line tool to manipulate the ``hhea`` table."""
50
50
 
51
- if not any([rise, run, offset, ascent, descent, linegap, recalc_offset]):
51
+ if not any([rise, run, offset, ascent, descent, linegap, recalc_offset]) is not None:
52
52
  logger.error(Logs.no_parameter)
53
53
  return
54
54
 
@@ -67,22 +67,22 @@ def cli(
67
67
  hhea_table: TableHhea = font["hhea"]
68
68
  hhea_table_copy = copy(hhea_table)
69
69
 
70
- if rise:
70
+ if rise is not None:
71
71
  hhea_table.set_caret_slope_rise(rise)
72
72
 
73
- if run:
73
+ if run is not None:
74
74
  hhea_table.set_caret_slope_run(run)
75
75
 
76
- if offset:
76
+ if offset is not None:
77
77
  hhea_table.set_caret_offset(offset)
78
78
 
79
- if ascent:
79
+ if ascent is not None:
80
80
  hhea_table.set_ascent(ascent)
81
81
 
82
- if descent:
82
+ if descent is not None:
83
83
  hhea_table.set_descent(descent)
84
84
 
85
- if linegap:
85
+ if linegap is not None:
86
86
  hhea_table.set_linegap(linegap)
87
87
 
88
88
  if recalc_offset:
@@ -5,6 +5,7 @@ from copy import deepcopy
5
5
  from pathlib import Path
6
6
 
7
7
  import click
8
+ from afdko.fdkutils import run_shell_command
8
9
  from fontTools.misc.cliTools import makeOutputFileName
9
10
  from fontTools.ttLib import TTFont
10
11
  from pathvalidate import sanitize_filename, sanitize_filepath
@@ -254,8 +255,18 @@ def font_organizer(
254
255
  """,
255
256
  )
256
257
  @add_recursive_option()
258
+ @click.option(
259
+ "-o",
260
+ "--overwrite",
261
+ "overwrite",
262
+ is_flag=True,
263
+ help="""
264
+ Allow overwriting output files. THIS MIGHT POTENTIALLY RESULT IN LOSS OF FILES.
265
+ USE WITH CARE. This might result in a loss of files.
266
+ """,
267
+ )
257
268
  @Timer(logger=logger.info)
258
- def font_renamer(input_path: Path, source: str, recursive: bool = False):
269
+ def font_renamer(input_path: Path, source: str, recursive: bool = False, overwrite: bool = False):
259
270
  """
260
271
  Rename font files according to the provided source string.
261
272
  """
@@ -283,7 +294,7 @@ def font_renamer(input_path: Path, source: str, recursive: bool = False):
283
294
  new_file_name,
284
295
  extension=new_file_extension,
285
296
  outputDir=file.parent,
286
- overWrite=False,
297
+ overWrite=overwrite,
287
298
  )
288
299
  )
289
300
  file.rename(output_file)
@@ -347,6 +358,73 @@ def rebuild(
347
358
  font.close()
348
359
 
349
360
 
361
+ @utils.command()
362
+ @add_file_or_path_argument()
363
+ @add_recursive_option()
364
+ @add_common_options()
365
+ @Timer(logger=logger.info)
366
+ def remove_unreachable_glyphs(
367
+ input_path: Path,
368
+ recursive: bool = False,
369
+ output_dir: t.Optional[Path] = None,
370
+ recalc_timestamp: bool = False,
371
+ overwrite: bool = True,
372
+ ):
373
+ """
374
+ Subsets a font file by removing unreachable glyphs.
375
+ """
376
+
377
+ fonts = get_fonts_in_path(
378
+ input_path=input_path, recursive=recursive, recalc_timestamp=recalc_timestamp
379
+ )
380
+ if not initial_check_pass(fonts=fonts, output_dir=output_dir):
381
+ return
382
+
383
+ for font in fonts:
384
+ try:
385
+ in_file = Path(font.reader.file.name)
386
+ out_file = Path(makeOutputFileName(in_file, outputDir=output_dir, overWrite=overwrite))
387
+ logger.opt(colors=True).info(Logs.current_file, file=in_file)
388
+
389
+ command = [
390
+ "fonttools",
391
+ "subset",
392
+ in_file,
393
+ f"--output-file={out_file}",
394
+ "--unicodes=*",
395
+ "--notdef-glyph",
396
+ "--notdef-outline",
397
+ "--layout-features=*",
398
+ "--layout-scripts=*",
399
+ "--drop-tables=",
400
+ "--passthrough-tables",
401
+ "--legacy-kern",
402
+ "--name-IDs=*",
403
+ "--name-legacy",
404
+ "--name-languages=*",
405
+ "--glyph-names",
406
+ "--legacy-cmap",
407
+ "--symbol-cmap",
408
+ "--recalc-bounds",
409
+ "--recalc-average-width",
410
+ "--recalc-max-context",
411
+ ]
412
+
413
+ if recalc_timestamp:
414
+ command.append("--recalc-timestamp")
415
+ else:
416
+ command.append("--no-recalc-timestamp")
417
+
418
+ run_shell_command(command)
419
+
420
+ logger.success(Logs.file_saved, file=out_file)
421
+
422
+ except Exception as e:
423
+ logger.exception(e)
424
+ finally:
425
+ font.close()
426
+
427
+
350
428
  @utils.command()
351
429
  @add_file_or_path_argument()
352
430
  @click.option("-major", type=click.IntRange(0, 999), help="Major version")
@@ -629,7 +629,10 @@ class Font(TTFont):
629
629
  source = 1
630
630
 
631
631
  if source == 1:
632
- return f"{self.guess_family_name()}-{self.guess_subfamily_name()}".replace(" ", "")
632
+ return (
633
+ f"{self.guess_family_name()}-{self.guess_subfamily_name()}"
634
+ .replace(" ", "").replace(".", "")
635
+ )
633
636
  elif source == 2:
634
637
  return self["name"].getDebugName(6)
635
638
  elif source == 3:
@@ -0,0 +1,3 @@
1
+ VERSION = __version__ = "1.1.17"
2
+
3
+ __all__ = ["VERSION"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foundrytools-cli
3
- Version: 1.1.15
3
+ Version: 1.1.17
4
4
  Summary: A set of command line tools to inspect, manipulate and convert font files
5
5
  Home-page: https://github.com/ftCLI/FoundryTools-CLI
6
6
  Author: ftCLI
@@ -18,7 +18,7 @@ def _get_requirements():
18
18
 
19
19
  setuptools.setup(
20
20
  name="foundrytools-cli",
21
- version="1.1.15",
21
+ version="1.1.17",
22
22
  description="A set of command line tools to inspect, manipulate and convert font files",
23
23
  long_description=long_description,
24
24
  long_description_content_type="text/markdown",
@@ -1,3 +0,0 @@
1
- VERSION = __version__ = "1.1.15"
2
-
3
- __all__ = ["VERSION"]