fontist 1.13.2 → 1.14.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/metanorma.yml +3 -1
- data/README.adoc +230 -142
- data/lib/fontist/cli.rb +14 -14
- data/lib/fontist/errors.rb +12 -0
- data/lib/fontist/font.rb +13 -1
- data/lib/fontist/fontconfig.rb +87 -0
- data/lib/fontist/fontconfig_cli.rb +29 -0
- data/lib/fontist/helpers.rb +21 -0
- data/lib/fontist/import/create_formula.rb +22 -2
- data/lib/fontist/import/files/collection_file.rb +7 -3
- data/lib/fontist/import/formula_builder.rb +23 -7
- data/lib/fontist/import/helpers/system_helper.rb +1 -9
- data/lib/fontist/import/macos/macos_license.txt +596 -0
- data/lib/fontist/import/macos.rb +25 -109
- data/lib/fontist/import/recursive_extraction.rb +11 -1
- data/lib/fontist/import/text_helper.rb +1 -1
- data/lib/fontist/import_cli.rb +17 -5
- data/lib/fontist/utils/system.rb +8 -0
- data/lib/fontist/utils.rb +0 -3
- data/lib/fontist/version.rb +1 -1
- metadata +5 -6
- data/lib/fontist/google_cli.rb +0 -21
- data/lib/fontist/utils/dsl/collection_font.rb +0 -36
- data/lib/fontist/utils/dsl/font.rb +0 -38
- data/lib/fontist/utils/dsl.rb +0 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c0b58f3af1125a6a560179502a5ce5845e76b4d4db1c466e5f63f9628203089
|
4
|
+
data.tar.gz: 2176708c4c71239768f8714cf21d393aae208b8a7757402b08ad369ec155ed25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3875e506d599cfab2e7447e7a9f24518080a02f8bce0018f386b06c13a5048a78ce2e8fa61a4109e60e7445bb10164e84d45d33bcc109b4087ca3a2eeedac49
|
7
|
+
data.tar.gz: 61747670abc9194cba651cb01d5a69d46bbdc84ed99f9de50e0057606a24f2b2efb2b2df782d6cf9b3b99d1c678e33f20d665157655de460e9227075b3a28a0b
|
@@ -13,7 +13,7 @@ jobs:
|
|
13
13
|
strategy:
|
14
14
|
fail-fast: false
|
15
15
|
matrix:
|
16
|
-
ruby: [ '2.
|
16
|
+
ruby: [ '2.6', '2.7', '3.0' ]
|
17
17
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
18
18
|
experimental: [ true ]
|
19
19
|
steps:
|
@@ -32,4 +32,6 @@ jobs:
|
|
32
32
|
ruby-version: ${{ matrix.ruby }}
|
33
33
|
bundler-cache: true
|
34
34
|
|
35
|
+
- uses: metanorma/metanorma-build-scripts/inkscape-setup-action@main
|
36
|
+
|
35
37
|
- run: bundle exec rake
|
data/README.adoc
CHANGED
@@ -51,71 +51,70 @@ has the following requirements:
|
|
51
51
|
|
52
52
|
These dependencies are generally present on all systems.
|
53
53
|
|
54
|
-
=== Upgrading Fontist
|
55
|
-
|
56
|
-
==== To v1.10+
|
57
|
-
|
58
|
-
Fontist versions beyond v1.10 utilize a new formula format.
|
59
|
-
After the upgrade, please run `fontist update` to fetch the latest formulas.
|
60
|
-
|
61
|
-
Starting from v1.10, Fontist uses the "`default family`" instead of the "`preferred family`"
|
62
|
-
when grouping styles.
|
63
|
-
|
64
|
-
For example, a request for the "`Lato`" font prior to v1.10 will return all
|
65
|
-
styles: "`Black`", "`Black Italic`", "`Bold`", and 15 other styles.
|
66
|
-
|
67
|
-
From v1.10 onwards, Fontist will return _only_ the 4 default styles:
|
68
|
-
"`Regular`", "`Italic`", "`Bold`" and "`Bold Italic`".
|
69
|
-
|
70
|
-
In order to fetch other styles, you have to specify the exact font
|
71
|
-
"`subfamily`", such as "`Lato Black`", or "`Lato Heavy`", or use
|
72
|
-
the `--preferred-family` option with CLI and `Fontist.preferred_family = true`
|
73
|
-
with the Ruby library.
|
74
54
|
|
75
|
-
|
76
|
-
allowed the font to be installed when requesting the font name "`Courier`", but
|
77
|
-
its font location was only obtainable using the full "`Courier New`" font name.
|
78
|
-
From v1.10 onwards the behavior has been made consistent -- only the proper
|
79
|
-
"`Courier New`" name should be used.
|
55
|
+
== Usage of the Fontist command-line interface
|
80
56
|
|
81
|
-
|
82
|
-
== Usage of the `fontist` command
|
83
|
-
|
84
|
-
=== Fontist command-line interface
|
57
|
+
=== The `fontist` command
|
85
58
|
|
86
59
|
These commands makes possible to operate with fonts via command line.
|
87
60
|
|
88
61
|
The CLI properly supports exit status, so in a case of error it returns a status
|
89
|
-
code higher or equal than 1
|
62
|
+
code higher or equal than `1`.
|
90
63
|
|
91
|
-
|
64
|
+
Searches are case-insensitive for ease of use.
|
92
65
|
|
93
|
-
|
66
|
+
All commands support the following global options:
|
94
67
|
|
95
|
-
|
68
|
+
`--preferred-family`:: Search using the "`preferred family`" name of a font.
|
69
|
+
(instead of the "`default family`" name, the default prior to Fontist v1.10.)
|
96
70
|
|
97
|
-
|
71
|
+
NOTE: See <<preferred-family-change>> for the differences between
|
72
|
+
"`preferred family`" and "`default family`".
|
98
73
|
|
99
|
-
|
74
|
+
|
75
|
+
=== Install fonts: `fontist install`
|
100
76
|
|
101
77
|
Fontist checks whether this font is already installed, and if not, then installs
|
102
78
|
the font and returns its installed paths.
|
103
79
|
|
104
|
-
The font name is the only argument to be supplied
|
80
|
+
The font name is the only argument to be supplied.
|
105
81
|
|
106
82
|
[source,sh]
|
107
83
|
----
|
108
84
|
$ fontist install "segoe ui"
|
109
85
|
These fonts are found or installed:
|
110
|
-
/Users/user/.fontist/fonts/SEGOEUI.TTF
|
111
|
-
/Users/user/.fontist/fonts/SEGOEUIB.TTF
|
112
|
-
/Users/user/.fontist/fonts/SEGOEUII.TTF
|
113
|
-
/Users/user/.fontist/fonts/SEGOEUIZ.TTF
|
86
|
+
- /Users/user/.fontist/fonts/SEGOEUI.TTF
|
87
|
+
- /Users/user/.fontist/fonts/SEGOEUIB.TTF
|
88
|
+
- /Users/user/.fontist/fonts/SEGOEUII.TTF
|
89
|
+
- /Users/user/.fontist/fonts/SEGOEUIZ.TTF
|
114
90
|
----
|
115
91
|
|
116
|
-
|
92
|
+
By default, all matching styles (according to the font's "`default family`" name)
|
93
|
+
are installed.
|
117
94
|
|
118
|
-
NOTE:
|
95
|
+
NOTE: Prior to v1.10, the font's "`preferred family`" name is used to match
|
96
|
+
styles for search. See <<preferred-family-change>> for details of that change.
|
97
|
+
|
98
|
+
To install all fonts specified in a Fontist formula, use the `-F, --formula`
|
99
|
+
option.
|
100
|
+
|
101
|
+
[source,sh]
|
102
|
+
----
|
103
|
+
$ fontist install --formula 'courier_prime'
|
104
|
+
Downloading font ...
|
105
|
+
Installing font "courier_prime".
|
106
|
+
Fonts installed at:
|
107
|
+
- /Users/user/.fontist/fonts/Courier Prime Bold Italic.ttf
|
108
|
+
- /Users/user/.fontist/fonts/Courier Prime Bold.ttf
|
109
|
+
- /Users/user/.fontist/fonts/Courier Prime Italic.ttf
|
110
|
+
- /Users/user/.fontist/fonts/Courier Prime.ttf
|
111
|
+
----
|
112
|
+
|
113
|
+
Here, `courier_prime` is the filename of the formula located at the public
|
114
|
+
Fontist Formula repository
|
115
|
+
(https://github.com/fontist/formulas/blob/v3/Formulas/courier_prime.yml[`courier_prime.yml`]).
|
116
|
+
|
117
|
+
NOTE: Specifying the formula's name or the font's filename is not supported.
|
119
118
|
|
120
119
|
If there are several formulas with a requested font, then `fontist` searches
|
121
120
|
for the newest version of the font among formulas with size below a limit
|
@@ -126,18 +125,23 @@ available formulas would be installed.
|
|
126
125
|
|
127
126
|
Supported options:
|
128
127
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
128
|
+
`-f, [--force]`:: Install even if already installed in system
|
129
|
+
`-F, [--formula]`:: Install whole formula instead of a font
|
130
|
+
`-a, [--accept-all-licenses]`:: Accept all license agreements
|
131
|
+
`-h, [--hide-licenses]`:: Hide license texts
|
132
|
+
`-p, [--no-progress]`:: Hide download progress
|
133
|
+
`-V, [--version=VERSION]`:: Install particular version of a font
|
134
|
+
`-s, [--smallest]`:: Install the smallest font by file size if several
|
135
|
+
`-n, [--newest]`:: Install the newest version of a font if several
|
136
|
+
`-S, [--size-limit=N]`:: Specify upper limit for file size of a formula to be installed
|
138
137
|
(default is 300 MB)
|
138
|
+
`-u, [--update-fontconfig]`:: Update Fontconfig
|
139
139
|
|
140
|
-
|
140
|
+
|
141
|
+
NOTE: The `install` command is similar to the `Font.install` library call.
|
142
|
+
|
143
|
+
|
144
|
+
=== Uninstall fonts: `fontist uninstall`
|
141
145
|
|
142
146
|
Uninstalls any font supported by Fontist.
|
143
147
|
|
@@ -154,7 +158,7 @@ These fonts are removed:
|
|
154
158
|
/Users/user/.fontist/fonts/SEGOEUI.TTF
|
155
159
|
----
|
156
160
|
|
157
|
-
=== Status
|
161
|
+
=== Status: `fontist status`
|
158
162
|
|
159
163
|
Prints installed font paths grouped by formula and font.
|
160
164
|
|
@@ -169,7 +173,7 @@ segoe_ui
|
|
169
173
|
Bold Italic (/Users/user/.fontist/fonts/SEGOEUIZ.TTF)
|
170
174
|
----
|
171
175
|
|
172
|
-
=== List
|
176
|
+
=== List: `fontist list`
|
173
177
|
|
174
178
|
Lists installation status of fonts supported by Fontist.
|
175
179
|
|
@@ -193,7 +197,7 @@ google/roboto_mono
|
|
193
197
|
Italic (uninstalled)
|
194
198
|
----
|
195
199
|
|
196
|
-
=== List installed font paths
|
200
|
+
=== List installed font paths: `fontist manifest-locations`
|
197
201
|
|
198
202
|
Returns locations of fonts specified in a YAML file as an input.
|
199
203
|
|
@@ -244,7 +248,7 @@ Roboto Mono:
|
|
244
248
|
|
245
249
|
Since "`Segoe UI`" is installed, but "`Roboto Mono`" is not.
|
246
250
|
|
247
|
-
=== Install fonts from manifest
|
251
|
+
=== Install fonts from manifest: `fontist manifest-install`
|
248
252
|
|
249
253
|
Install fonts from a YAML Fontist manifest:
|
250
254
|
|
@@ -274,7 +278,31 @@ Roboto Mono:
|
|
274
278
|
- "/Users/user/.fontist/fonts/RobotoMono-VariableFont_wght.ttf"
|
275
279
|
----
|
276
280
|
|
277
|
-
===
|
281
|
+
=== Work with Fontconfig: `fontist fontconfig`
|
282
|
+
|
283
|
+
Fontconfig is a software designed to provide fonts to other programs. It is
|
284
|
+
typically used on Linux, but also available on macOS and Windows. Fontconfig is
|
285
|
+
used by LibreOffice, GIMP, and many other programs.
|
286
|
+
|
287
|
+
It order to find fontist fonts, Fontconfig should be updated to include fontist
|
288
|
+
paths. It can be done with the `--update-fontconfig` option of the `install`
|
289
|
+
command, or by calling a special one:
|
290
|
+
|
291
|
+
[source,sh]
|
292
|
+
----
|
293
|
+
$ fontist fontconfig update
|
294
|
+
----
|
295
|
+
|
296
|
+
It would create a config in `~/.config/fontconfig/conf.d/10-fontist.conf`.
|
297
|
+
|
298
|
+
To remove it, please use:
|
299
|
+
|
300
|
+
[source,sh]
|
301
|
+
----
|
302
|
+
$ fontist fontconfig remove
|
303
|
+
----
|
304
|
+
|
305
|
+
=== Help: `fontist help`
|
278
306
|
|
279
307
|
List of all commands could be seen by:
|
280
308
|
|
@@ -372,7 +400,7 @@ Fontist::Formula.find("Calibri")
|
|
372
400
|
----
|
373
401
|
|
374
402
|
This method will search and return a Fontist formula for the provided keyword
|
375
|
-
which allows for further processing, such as
|
403
|
+
which allows for further processing, such as license checks or proceeding with
|
376
404
|
installation of the font in your system.
|
377
405
|
|
378
406
|
==== List font styles supported by a formula
|
@@ -517,7 +545,36 @@ Fontist::Manifest::Locations.from_file("manifest.yml")
|
|
517
545
|
Fontist::Manifest::Install.from_file("manifest.yml", confirmation: "yes")
|
518
546
|
----
|
519
547
|
|
520
|
-
|
548
|
+
=== `Fontist::Fontconfig`
|
549
|
+
|
550
|
+
Fontist supports work with Fontconfig via the Ruby interface:
|
551
|
+
|
552
|
+
[source,ruby]
|
553
|
+
----
|
554
|
+
Fontist::Fontconfig.update # let detect fontist fonts
|
555
|
+
Fontist::Fontconfig.remove # disable detection
|
556
|
+
Fontist::Fontconfig.remove(force: true) # do not fail if no config exists
|
557
|
+
----
|
558
|
+
|
559
|
+
=== Installing macOS-specific add-on fonts
|
560
|
+
|
561
|
+
The purpose of Fontist allowing macOS-specific add-on fonts is to allow CI jobs
|
562
|
+
on macOS environments to use these specially licensed fonts that are not
|
563
|
+
available on other platforms.
|
564
|
+
|
565
|
+
The "Canela" font is a commercial font that comes free with macOS.
|
566
|
+
|
567
|
+
Run this command to install Canela on macOS.
|
568
|
+
|
569
|
+
[source,sh]
|
570
|
+
----
|
571
|
+
$ fontist install Canela
|
572
|
+
----
|
573
|
+
|
574
|
+
WARNING: Fontist does not allow installing macOS-specific fonts on non-macOS
|
575
|
+
platforms due to font licensing of those fonts.
|
576
|
+
|
577
|
+
== Using Fontist with proxy servers
|
521
578
|
|
522
579
|
Fontist uses Git internally for fetching formulas and fonts.
|
523
580
|
|
@@ -576,7 +633,64 @@ https://github.com/evantoli[evantoli]).
|
|
576
633
|
|
577
634
|
== Authoring Fontist formulas
|
578
635
|
|
579
|
-
===
|
636
|
+
=== Private Fontist formulas and font repositories
|
637
|
+
|
638
|
+
Fontist supports installing private fonts via private Fontist repositories.
|
639
|
+
|
640
|
+
A Fontist repository is a Git repo which contains YAML Formula files.
|
641
|
+
Formulas can be created manually
|
642
|
+
(see https://github.com/fontist/formulas/tree/master/Formulas[examples]),
|
643
|
+
or <<create-formula,auto-generated from an archive>>.
|
644
|
+
|
645
|
+
A repository can be either a HTTPS or SSH Git repo. In case of SSH, a
|
646
|
+
corresponding SSH key should be setup with `ssh-agent` in order to access this
|
647
|
+
private repository.
|
648
|
+
|
649
|
+
The `fontist repo setup` command fetches a repository's formulas, and saves the
|
650
|
+
repository's name and URL for later use.
|
651
|
+
|
652
|
+
Internally, all repositories are stored at
|
653
|
+
`~/.fontist/formulas/Formulas/private`.
|
654
|
+
|
655
|
+
[source,sh]
|
656
|
+
----
|
657
|
+
fontist repo setup NAME URL
|
658
|
+
----
|
659
|
+
|
660
|
+
E.g.
|
661
|
+
|
662
|
+
[source,sh]
|
663
|
+
----
|
664
|
+
fontist repo setup acme https://example.com/acme/formulas.git
|
665
|
+
# or
|
666
|
+
fontist repo setup acme git@example.com:acme/formulas.git
|
667
|
+
----
|
668
|
+
|
669
|
+
Then you can just install fonts from this repo:
|
670
|
+
|
671
|
+
[source,sh]
|
672
|
+
----
|
673
|
+
fontist install "private font"
|
674
|
+
----
|
675
|
+
|
676
|
+
If the private Fontist formula repository is updated, you can fetch the updates
|
677
|
+
with the `repo update` command:
|
678
|
+
|
679
|
+
[source,sh]
|
680
|
+
----
|
681
|
+
fontist repo update acme
|
682
|
+
----
|
683
|
+
|
684
|
+
If there is a need to avoid using private formulas, the repo can be removed
|
685
|
+
with:
|
686
|
+
|
687
|
+
[source,sh]
|
688
|
+
----
|
689
|
+
fontist repo remove acme
|
690
|
+
----
|
691
|
+
|
692
|
+
[[create-formula]]
|
693
|
+
=== Auto-generate a Fontist formula from a font archive
|
580
694
|
|
581
695
|
A formula could be generated from a fonts archive. Just specify a URL to the
|
582
696
|
archive:
|
@@ -588,7 +702,7 @@ cp lato.yml ~/.fontist/formulas/Formulas/
|
|
588
702
|
----
|
589
703
|
|
590
704
|
Though indexes are auto-generated now, maintainers should rebuild indexes in the
|
591
|
-
main repo for backward compatibility with Fontist
|
705
|
+
main repo for backward compatibility with Fontist versions prior to v1.9.x.
|
592
706
|
|
593
707
|
A formula index should be rebuilt when a new formula is generated or an existing
|
594
708
|
one changed:
|
@@ -608,6 +722,56 @@ git add Formulas/lato.yml index.yml filename_index.yml
|
|
608
722
|
git commit -m "Add Lato formula"
|
609
723
|
----
|
610
724
|
|
725
|
+
=== Authentication for private formulas or private formula repositories
|
726
|
+
|
727
|
+
Authorization of private archives in private formulas can be implemented with
|
728
|
+
headers.
|
729
|
+
|
730
|
+
Here is an example which works with Github releases:
|
731
|
+
|
732
|
+
[source,yaml]
|
733
|
+
----
|
734
|
+
resources:
|
735
|
+
fonts.zip:
|
736
|
+
urls:
|
737
|
+
- url: https://example.com/repos/acme/formulas/releases/assets/38777461
|
738
|
+
headers:
|
739
|
+
Accept: application/octet-stream
|
740
|
+
Authorization: token ghp_1234567890abcdefghi
|
741
|
+
----
|
742
|
+
|
743
|
+
A token can be obtained on the
|
744
|
+
https://github.com/settings/tokens[GitHub Settings > Tokens page].
|
745
|
+
This token should have at least the `repo` scope for access to these assets.
|
746
|
+
|
747
|
+
|
748
|
+
=== Upgrading Fontist
|
749
|
+
|
750
|
+
[[preferred-family-change]]
|
751
|
+
==== To v1.10+
|
752
|
+
|
753
|
+
Fontist versions beyond v1.10 utilize a new formula format.
|
754
|
+
After the upgrade, please run `fontist update` to fetch the latest formulas.
|
755
|
+
|
756
|
+
Starting from v1.10, Fontist uses the "`default family`" instead of the
|
757
|
+
"`preferred family`" when grouping styles.
|
758
|
+
|
759
|
+
For example, a request for the "`Lato`" font prior to v1.10 will return all
|
760
|
+
styles: "`Black`", "`Black Italic`", "`Bold`", and 15 other styles.
|
761
|
+
|
762
|
+
From v1.10 onwards, Fontist will return _only_ the 4 default styles:
|
763
|
+
"`Regular`", "`Italic`", "`Bold`" and "`Bold Italic`".
|
764
|
+
|
765
|
+
In order to fetch other styles, you have to specify the exact font
|
766
|
+
"`subfamily`", such as "`Lato Black`", or "`Lato Heavy`", or use
|
767
|
+
the `--preferred-family` option with CLI and `Fontist.preferred_family = true`
|
768
|
+
with the Ruby library.
|
769
|
+
|
770
|
+
NOTE: Prior to v1.10 there was a bug with the "`Courier`" font formula, which
|
771
|
+
allowed the font to be installed when requesting the font name "`Courier`", but
|
772
|
+
its font location was only obtainable using the full "`Courier New`" font name.
|
773
|
+
From v1.10 onwards the behavior has been made consistent -- only the proper
|
774
|
+
"`Courier New`" name should be used.
|
611
775
|
|
612
776
|
|
613
777
|
|
@@ -630,7 +794,7 @@ In case an update is found, it could be fetched to the library by:
|
|
630
794
|
|
631
795
|
[source,sh]
|
632
796
|
----
|
633
|
-
bin/fontist google
|
797
|
+
bin/fontist import google
|
634
798
|
----
|
635
799
|
|
636
800
|
The script would update formulas which should be committed to a separate
|
@@ -659,7 +823,7 @@ They can be updated with:
|
|
659
823
|
|
660
824
|
[source,sh]
|
661
825
|
----
|
662
|
-
fontist import
|
826
|
+
fontist import sil
|
663
827
|
cd ~/.fontist/versions/{last_version}/formulas
|
664
828
|
git add Formulas/sil
|
665
829
|
git commit -m "SIL fonts update"
|
@@ -669,8 +833,8 @@ git push
|
|
669
833
|
=== Dynamically importing formulas from macOS
|
670
834
|
|
671
835
|
macOS provides https://support.apple.com/en-om/HT211240#download[fonts] which
|
672
|
-
can be manually downloaded with
|
673
|
-
|
836
|
+
can be manually downloaded with `Font Book.app`. When such font is requested,
|
837
|
+
Fontist prints information on how to install it.
|
674
838
|
|
675
839
|
In order to know which fonts are available in a current version of macOS,
|
676
840
|
for each version there is a formula containing all supported fonts.
|
@@ -687,7 +851,7 @@ git push
|
|
687
851
|
----
|
688
852
|
|
689
853
|
Here `--fonts-link` is a link to a page containing a list of available fonts
|
690
|
-
in the Font Book
|
854
|
+
in the `Font Book.app`.
|
691
855
|
|
692
856
|
If the import is run on a different version of macOS, then a proper version
|
693
857
|
should be set in the `platforms` attribute of the generated formula:
|
@@ -732,82 +896,6 @@ https://github.com/fontist/formulas[formulas] repository.
|
|
732
896
|
If you'd like to add a new formula repository or change settings for an existing
|
733
897
|
one, please refer to its documentation.
|
734
898
|
|
735
|
-
=== Private Fontist formulas and font repositories
|
736
|
-
|
737
|
-
There is an ability to use private fonts via private Fontist repositories.
|
738
|
-
|
739
|
-
A Fontist repository is a Git repo which contains YAML formula files. Formulas can be created
|
740
|
-
manually (see https://github.com/fontist/formulas/tree/master/Formulas[examples]),
|
741
|
-
or xref:Authoring Fontist formulas[auto-generated from an archive].
|
742
|
-
|
743
|
-
A repository can be either a HTTPS or SSH Git repo. In case of SSH, a
|
744
|
-
corresponding SSH key should be setup with `ssh-agent` in order to access this
|
745
|
-
private repository.
|
746
|
-
|
747
|
-
The `fontist repo setup` command fetches a repository's formulas, and saves the
|
748
|
-
repository's name and URL for later use.
|
749
|
-
|
750
|
-
Internally, all repositories are stored at
|
751
|
-
`~/.fontist/formulas/Formulas/private`.
|
752
|
-
|
753
|
-
[source,sh]
|
754
|
-
----
|
755
|
-
fontist repo setup NAME URL
|
756
|
-
----
|
757
|
-
|
758
|
-
E.g.
|
759
|
-
|
760
|
-
[source,sh]
|
761
|
-
----
|
762
|
-
fontist repo setup acme https://example.com/acme/formulas.git
|
763
|
-
# or
|
764
|
-
fontist repo setup acme git@example.com:acme/formulas.git
|
765
|
-
----
|
766
|
-
|
767
|
-
Then you can just install fonts from this repo:
|
768
|
-
|
769
|
-
[source,sh]
|
770
|
-
----
|
771
|
-
fontist install "private font"
|
772
|
-
----
|
773
|
-
|
774
|
-
If the private Fontist formula repository is updated, you can fetch the updates
|
775
|
-
with the `repo update` command:
|
776
|
-
|
777
|
-
[source,sh]
|
778
|
-
----
|
779
|
-
fontist repo update acme
|
780
|
-
----
|
781
|
-
|
782
|
-
If there is a need to avoid using private formulas, the repo can be removed
|
783
|
-
with:
|
784
|
-
|
785
|
-
[source,sh]
|
786
|
-
----
|
787
|
-
fontist repo remove acme
|
788
|
-
----
|
789
|
-
|
790
|
-
=== Private formulas
|
791
|
-
|
792
|
-
Authorization of private archives in private formulas can be implemented with
|
793
|
-
headers.
|
794
|
-
|
795
|
-
Here is an example which works with Github releases:
|
796
|
-
|
797
|
-
[source,yaml]
|
798
|
-
----
|
799
|
-
resources:
|
800
|
-
fonts.zip:
|
801
|
-
urls:
|
802
|
-
- url: https://example.com/repos/acme/formulas/releases/assets/38777461
|
803
|
-
headers:
|
804
|
-
Accept: application/octet-stream
|
805
|
-
Authorization: token ghp_1234567890abcdefghi
|
806
|
-
----
|
807
|
-
|
808
|
-
A token can be obtained on the
|
809
|
-
https://github.com/settings/tokens[GitHub Settings > Tokens page].
|
810
|
-
This token should have at least the `repo` scope for access to these assets.
|
811
899
|
|
812
900
|
=== Releasing
|
813
901
|
|
data/lib/fontist/cli.rb
CHANGED
@@ -2,7 +2,7 @@ require "thor"
|
|
2
2
|
require "fontist/cli/class_options"
|
3
3
|
require "fontist/repo_cli"
|
4
4
|
require "fontist/import_cli"
|
5
|
-
require "fontist/
|
5
|
+
require "fontist/fontconfig_cli"
|
6
6
|
|
7
7
|
module Fontist
|
8
8
|
class CLI < Thor
|
@@ -22,6 +22,8 @@ module Fontist
|
|
22
22
|
STATUS_MANUAL_FONT_ERROR = 11
|
23
23
|
STATUS_SIZE_LIMIT_ERROR = 12
|
24
24
|
STATUS_FORMULA_NOT_FOUND = 13
|
25
|
+
STATUS_FONTCONFIG_NOT_FOUND = 14
|
26
|
+
STATUS_FONTCONFIG_FILE_NOT_FOUND = 15
|
25
27
|
|
26
28
|
ERROR_TO_STATUS = {
|
27
29
|
Fontist::Errors::UnsupportedFontError => [STATUS_NON_SUPPORTED_FONT_ERROR],
|
@@ -44,6 +46,9 @@ module Fontist
|
|
44
46
|
Fontist::Errors::RepoNotFoundError => [STATUS_REPO_NOT_FOUND],
|
45
47
|
Fontist::Errors::MainRepoNotFoundError => [STATUS_MAIN_REPO_NOT_FOUND],
|
46
48
|
Fontist::Errors::FormulaNotFoundError => [STATUS_FORMULA_NOT_FOUND],
|
49
|
+
Fontist::Errors::FontconfigNotFoundError => [STATUS_FONTCONFIG_NOT_FOUND],
|
50
|
+
Fontist::Errors::FontconfigFileNotFoundError =>
|
51
|
+
[STATUS_FONTCONFIG_FILE_NOT_FOUND],
|
47
52
|
}.freeze
|
48
53
|
|
49
54
|
def self.exit_on_failure?
|
@@ -63,9 +68,9 @@ module Fontist
|
|
63
68
|
|
64
69
|
desc "install FONT", "Install font"
|
65
70
|
option :force, type: :boolean, aliases: :f,
|
66
|
-
desc: "Install even if
|
71
|
+
desc: "Install even if already installed in system"
|
67
72
|
option :formula, type: :boolean, aliases: :F,
|
68
|
-
desc: "Install
|
73
|
+
desc: "Install whole formula instead of a font"
|
69
74
|
option :accept_all_licenses, type: :boolean,
|
70
75
|
aliases: ["--confirm-license", :a],
|
71
76
|
desc: "Accept all license agreements"
|
@@ -76,13 +81,15 @@ module Fontist
|
|
76
81
|
option :version, type: :string, aliases: :V,
|
77
82
|
desc: "Specify particular version of a font"
|
78
83
|
option :smallest, type: :boolean, aliases: :s,
|
79
|
-
desc: "Install the smallest
|
84
|
+
desc: "Install the smallest font by file size if several"
|
80
85
|
option :newest, type: :boolean, aliases: :n,
|
81
86
|
desc: "Install the newest version of a font if several"
|
82
87
|
option :size_limit,
|
83
88
|
type: :numeric, aliases: :S,
|
84
|
-
desc: "Specify
|
89
|
+
desc: "Specify upper limit for file size of a formula to be installed" \
|
85
90
|
"(default is #{Fontist.formula_size_limit_in_megabytes} MB)"
|
91
|
+
option :update_fontconfig, type: :boolean, aliases: :u,
|
92
|
+
desc: "Update fontconfig"
|
86
93
|
def install(font)
|
87
94
|
handle_class_options(options)
|
88
95
|
confirmation = options[:accept_all_licenses] ? "yes" : "no"
|
@@ -196,21 +203,14 @@ module Fontist
|
|
196
203
|
STATUS_SUCCESS
|
197
204
|
end
|
198
205
|
|
199
|
-
desc "import-sil", "Import formulas from SIL"
|
200
|
-
def import_sil
|
201
|
-
handle_class_options(options)
|
202
|
-
require "fontist/import/sil_import"
|
203
|
-
Fontist::Import::SilImport.new.call
|
204
|
-
end
|
205
|
-
|
206
206
|
desc "repo SUBCOMMAND ...ARGS", "Manage custom repositories"
|
207
207
|
subcommand "repo", Fontist::RepoCLI
|
208
208
|
|
209
209
|
desc "import SUBCOMMAND ...ARGS", "Manage imports"
|
210
210
|
subcommand "import", Fontist::ImportCLI
|
211
211
|
|
212
|
-
desc "
|
213
|
-
subcommand "
|
212
|
+
desc "fontconfig SUBCOMMAND ...ARGS", "Manage fontconfig"
|
213
|
+
subcommand "fontconfig", Fontist::FontconfigCLI
|
214
214
|
|
215
215
|
private
|
216
216
|
|
data/lib/fontist/errors.rb
CHANGED
@@ -4,6 +4,18 @@ module Fontist
|
|
4
4
|
|
5
5
|
class BinaryCallError < GeneralError; end
|
6
6
|
|
7
|
+
class FontconfigNotFoundError < GeneralError
|
8
|
+
def initialize
|
9
|
+
super("Could not find fontconfig.")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class FontconfigFileNotFoundError < GeneralError
|
14
|
+
def initialize
|
15
|
+
super("Fontist file could not be found in fontconfig configuration.")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
7
19
|
class FontIndexCorrupted < GeneralError; end
|
8
20
|
|
9
21
|
class FontNotFoundError < GeneralError; end
|
data/lib/fontist/font.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "fontist/font_installer"
|
2
2
|
require "fontist/font_path"
|
3
3
|
require "fontist/formula_picker"
|
4
|
+
require "fontist/fontconfig"
|
4
5
|
|
5
6
|
module Fontist
|
6
7
|
class Font
|
@@ -15,6 +16,7 @@ module Fontist
|
|
15
16
|
@newest = options[:newest]
|
16
17
|
@size_limit = options[:size_limit]
|
17
18
|
@by_formula = options[:formula]
|
19
|
+
@update_fontconfig = options[:update_fontconfig]
|
18
20
|
|
19
21
|
check_or_create_fontist_path!
|
20
22
|
end
|
@@ -166,9 +168,13 @@ module Fontist
|
|
166
168
|
def download_font
|
167
169
|
return if sufficient_formulas.empty?
|
168
170
|
|
169
|
-
sufficient_formulas.flat_map do |formula|
|
171
|
+
paths = sufficient_formulas.flat_map do |formula|
|
170
172
|
request_formula_installation(formula)
|
171
173
|
end
|
174
|
+
|
175
|
+
update_fontconfig
|
176
|
+
|
177
|
+
paths
|
172
178
|
end
|
173
179
|
|
174
180
|
def request_formula_installation(formula)
|
@@ -220,6 +226,12 @@ module Fontist
|
|
220
226
|
MSG
|
221
227
|
end
|
222
228
|
|
229
|
+
def update_fontconfig
|
230
|
+
return unless @update_fontconfig
|
231
|
+
|
232
|
+
Fontconfig.update
|
233
|
+
end
|
234
|
+
|
223
235
|
def manual_font
|
224
236
|
return if manual_formulas.empty?
|
225
237
|
|