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 
     | 
    
         |