一个简单的库,可查找Windows,Linux和Mac的字体。
将其直接安装为:
gem install fontist或通过将此行添加到应用程序的Gemfile中:将其用作捆绑包的一部分:
gem "fontist"然后执行:
bundle install安装后,请通过fontist命令获取公式:
fontist update取决于具有以下要求的FFI-Libarchive二进制文件:
Zlib
外籍
OpenSSL(仅适用于Linux)
这些依赖性通常都存在于所有系统上。
fontist命令这些命令可以通过命令行使用字体操作。
CLI适当支持退出状态,因此在错误的情况下,它将状态代码更高或等于1 。
搜索对易于使用的案例不敏感。
所有命令都支持以下全局选项:
--preferred-family使用字体的“首选家庭”名称搜索。 (而不是字体v1.10之前的“默认家庭”名称。)
笔记 | 有关“首选家庭”和“默认家庭”之间的差异,请参见v1.10+。 |
-q, --quiet打印尽可能少的信息,主要是关键错误。
-v, --verbose将日志级别设置为调试。它打印在安装过程中排除的公式,并为Fontist的开发人员提供信息。
-c, --no-cache即使文件已经在系统中缓存,也希望直接下载。
fontist installFontist检查该字体是否已经安装,如果没有安装,则安装字体并返回其已安装的路径。
字体名称是唯一提供的参数。
$ fontist install " segoe ui "
These fonts are found or installed:
- /Users/user/.fontist/fonts/SEGOEUI.TTF
- /Users/user/.fontist/fonts/SEGOEUIB.TTF
- /Users/user/.fontist/fonts/SEGOEUII.TTF
- /Users/user/.fontist/fonts/SEGOEUIZ.TTF默认情况下,安装了所有匹配样式(根据字体的“默认家庭”名称)。
笔记 | 在V1.10之前,该字体的“首选家庭”名称用于匹配搜索样式。有关此更改的详细信息,请参见v1.10+。 |
要安装在字体公式中指定的所有字体,请使用-F, --formula选项。
$ fontist install --formula ' courier_prime '
Downloading font ...
Installing font " courier_prime " .
Fonts installed at:
- /Users/user/.fontist/fonts/Courier Prime Bold Italic.ttf
- /Users/user/.fontist/fonts/Courier Prime Bold.ttf
- /Users/user/.fontist/fonts/Courier Prime Italic.ttf
- /Users/user/.fontist/fonts/Courier Prime.ttf在这里, courier_prime是位于公共字体公式存储库( courier_prime.yml )的公式的文件名。
您还可以指定公式的人类可读名称。此名称源自文件名,下划线被空间取代。这不是针对大小写的,这意味着您可以使用大写字母。
$ fontist install --formula " Courier Prime "
$ fontist install --formula " Google/Noto Sans "当输入部分时,公式名称安装公式名称支持CLI中的建议:
$ fontist install --formula ' noto s '
Formula ' noto s ' not found. Did you mean ?
[0] Google/Noto Sans
[1] Google/Noto Serif
Please type number or press ENTER to skip installation:笔记 | 尚不支持指定字体的文件名。 |
如果有几种带有请求的字体的公式,则fontist搜索在公式中的最新版本,大小低于极限(300 MB)。可以通过选项更改此行为。
笔记 | 如果字体的样式分布在几个公式之间,则将安装所有配方中的所有可用样式。 |
笔记 | 某些公式可能具有min_fontist属性,该属性定义了可以安装它们的最小版本。如果fontist为较旧的版本,则可以避免使用公式。为了查看搜索中排除哪些公式,可以指定-v, --verbose选项。 |
支持的选项:
-f, [--force]即使已经安装在系统中
-F, [--formula]安装整个公式而不是字体
-a, [--accept-all-licenses]接受所有许可协议
-h, [--hide-licenses]隐藏许可证文本
-p, [--no-progress]隐藏下载进度
-V, [--version=VERSION]安装字体的特定版本
-s, [--smallest]如果多个,请按文件大小安装最小的字体
-n, [--newest]如果多个,请安装字体的最新版本
-S, [--size-limit=N]指定要安装公式的文件大小的上限(默认为300 MB)
-u, [--update-fontconfig]更新fontconfig
笔记 | install命令类似于Font.install库调用。 |
fontist uninstall卸载字体支持的任何字体。
返回卸载字体的路径,或打印出错误,告诉字体未安装或在字体公式中找不到。将其删除为remove 。
$ fontist uninstall " segoe ui "
These fonts are removed:
/Users/user/.fontist/fonts/SEGOEUII.TTF
/Users/user/.fontist/fonts/SEGOEUIZ.TTF
/Users/user/.fontist/fonts/SEGOEUIB.TTF
/Users/user/.fontist/fonts/SEGOEUI.TTFfontist status打印安装了具有相应公式的字体路径。
$ fontist status " segoe ui "
Fonts found at:
- /Users/user/.fontist/fonts/SEGOEUII.TTF (from segoe_ui formula)
- /Users/user/.fontist/fonts/SEGOEUIZ.TTF (from segoe_ui formula)
- /Users/user/.fontist/fonts/SEGOEUIB.TTF (from segoe_ui formula)
- /Users/user/.fontist/fonts/SEGOEUI.TTF (from segoe_ui formula)fontist list列表字体的安装状态由字体支持。
$ fontist list " segoe ui "
segoe_ui
Segoe UI
Regular (installed)
Bold (installed)
Italic (installed)
Bold Italic (installed)$ fontist list " roboto mono "
google/roboto_mono
Roboto Mono
Regular (not installed)
Italic (not installed)fontist manifest-locations返回YAML文件中指定的字体的位置作为输入。
$ fontist manifest-locations MANIFEST_FILE MANIFEST_FILE是清单文件的位置,其中包含一种或多个字体和字体样式的规范。
清单文件manifest.yml看起来像:
Segoe UI :
- Regular
- Bold
Roboto Mono :
- Regular以下命令将返回以下YAML输出:
$ fontist manifest-locations manifest.yml---
Segoe UI :
Regular :
full_name : Segoe UI
paths :
- " /Users/user/.fontist/fonts/SEGOEUI.TTF "
Bold :
full_name : Segoe UI Bold
paths :
- " /Users/user/.fontist/fonts/SEGOEUIB.TTF "
Roboto Mono :
Regular :
full_name : Roboto Mono Regular
paths :
- " /Users/user/.fontist/fonts/RobotoMono-VariableFont_wght.ttf "如果缺少一个或多个请求的字体,则将返回“ 3”错误代码,并打印一条消息:
$ fontist manifest-locations manifest.yml
' Roboto Mono ' ' Regular ' font is missing, please run ` fontist install ' Roboto Mono ' ` to download the font.
$ echo $?
3fontist manifest-install从YAML字体清单中安装字体:
$ fontist manifest-install --confirm-license manifest.yml manifest.yaml是:
---
Segoe UI :
Regular :
full_name : Segoe UI
paths :
- " /Users/user/.fontist/fonts/SEGOEUI.TTF "
Bold :
full_name : Segoe UI Bold
paths :
- " /Users/user/.fontist/fonts/SEGOEUIB.TTF "
Roboto Mono :
Regular :
full_name : Roboto Mono Regular
paths :
- " /Users/user/.fontist/fonts/RobotoMono-VariableFont_wght.ttf "fontist config字体支持以下参数的全系统设置:
fonts_path设置要安装字体的路径(默认: ~/.fontist/fonts )
open_timeout设置下载过程中打开连接的超时(默认: 10 )
read_timeout设置下载过程中读取打开连接的超时(默认: 10 )
在配置中显示当前属性:
$ fontist config show
Current config:
read_timeout: 5将值分配给属性:
$ fontist config set read_timeout 60还原属性的默认值:
$ fontist config delete read_timeoutfontist fontconfigFontConfig是一种旨在为其他程序提供字体的软件。它通常在Linux上使用,但也可在MacOS和Windows上使用。 FontConfig由Libreoffice,GIMP和许多其他程序使用。
它是为了找到字体字体,应更新fontconfig,以包含字体路径。可以使用install命令的--update-fontconfig选项完成,也可以通过调用特殊命令来完成:
$ fontist fontconfig update它将在~/.config/fontconfig/conf.d/10-fontist.conf中创建一个配置。
要删除它,请使用:
$ fontist fontconfig remove$ fontist cache clear上面的命令将清除字体的下载缓存
fontist help所有命令列表可以通过:
fontist help默认情况下,通俗使用~/.fontist目录来存储字体及其文件。可以通过FONTIST_PATH环境变量更改它。
FONTIST_PATH= ~ /.fontist_new fontist updateFontist::Font Fontist::Font是您使用字体处理任何字体的选择。
该接口允许您找到字体或安装字体。
Fontist::Font.find接口可以使用系统中的字体。
它将查看操作系统特定的字体目录,以及字体特定的~/.fontist目录。
Fontist :: Font . find ( name )如果字体找到了字体,则它将返回路径。
否则,它将提出不支持的字体错误,或者触发该特定字体的安装说明。
Fontist::Font.install接口可用于安装任何受支持的字体。
该接口首先检查您是否已经安装了该字体,如果您这样做,它将返回路径。
如果您没有字体,但是该字体得到了字体的支持,则它将下载字体并将其复制到~/.fontist目录并返回路径。
Fontist :: Font . install ( name , confirmation : "no" )如果提供的字体检测到问题,例如不支持字体,则会提出这些错误。
Fontist::Font接口公开了一个接口,以列出所有受支持的字体。
如果想知道字体或可用样式的名称,这可能很有用。您可以使用以下方法来做到这一点:
Fontist :: Font . all返回值是OpenStruct对象,因此您可以轻松执行任何在任何Ruby对象中执行的操作。
Fontist::Formula fontist符在内部使用Fontist::Formula接口,以找到任何公式支持的注册公式或字体。除非您需要做任何事情,否则您不需要直接使用此接口。但是,如果这样做,则这些是它提供的公共界面。
Fontist::Formula.find接口允许您找到任何注册公式。该界面以字体名称作为参数,并通过提供此字体安装的每个注册公式查看。用法:
Fontist :: Formula . find ( "Calibri" )此方法将搜索并返回通用公式为提供的关键字,该公式允许进一步处理,例如许可证检查或在系统中安装字体。
通常,每个字体名称可以与多种样式或集合相关联,例如, Calibri字体可能包含regular , bold或italic样式字体,如果您想要一个可以返回完整列表的界面,则这是您的朋友。
您可以按照以下方式使用它:
Fontist :: Formula . find_fonts ( "Calibri" ) Fontist::Formula接口公开了一个接口,以列出所有已注册的字体公式。如果想知道公式的名称或使用该公式可以安装哪种类型字体,这可能会很有用。用法:
Fontist :: Formula . all返回值是OpenStruct对象,因此您可以轻松执行任何在任何Ruby对象中执行的操作。
Fontist::Manifest 可以切换说明书以使用首选的姓氏。该格式在v1.10之前使用。
Fontist . preferred_family = true Fontist::Manifest::Locations字体可让您以以下格式从定义的清单哈希找到字体位置:
{
"Segoe UI" => [ "Regular" , "Bold" ] ,
"Roboto Mono" => [ "Regular" ]
}调用以下代码返回带有字体路径和名称的嵌套哈希。字体名称对于在字体集合文件(TTC)中选择特定字体很有用。
Fontist :: Manifest :: Locations . from_hash ( manifest ) {
"Segoe UI" => {
"Regular" => {
"full_name" => "Segoe UI" ,
"paths" => [ "/Users/user/.fontist/fonts/SEGOEUI.TTF" ]
} ,
"Bold" => {
"full_name" => "Segoe UI Bold" ,
"paths" => [ "/Users/user/.fontist/fonts/SEGOEUIB.TTF" ]
}
} ,
"Roboto Mono" => {
"Regular" => {
"full_name" => nil ,
"paths" => [ ]
}
}
} Fontist::Manifest::Install通话师不仅可以获取字体位置,还可以从清单中安装字体:
Fontist :: Manifest :: Install . from_hash ( manifest , confirmation : "yes" )它将安装字体并返回其位置:
{
"Segoe UI" => {
"Regular" => {
"full_name" => "Segoe UI" ,
"paths" => [ "/Users/user/.fontist/fonts/SEGOEUI.TTF" ] } ,
"Bold" => {
"full_name" => "Segoe UI Bold" ,
"paths" => [ "/Users/user/.fontist/fonts/SEGOEUIB.TTF" ]
}
} ,
"Roboto Mono" => {
"Regular" => {
"full_name" => "Roboto Mono Regular" ,
"paths" => [ "/Users/user/.fontist/fonts/RobotoMono-VariableFont_wght.ttf" ]
}
}
} 这两个命令都支持yaml文件作为使用from_file方法的输入。例如,如果有一个manifest.yml 。
---
Segoe UI :
- Regular
- Bold
Roboto Mono :
- Regular然后,以下呼叫将返回字体名称和路径,如从from_hash方法(请参阅Fontist::Manifest::Install and install and Fontist::Manifest::Locations )。
Fontist :: Manifest :: Locations . from_file ( "manifest.yml" )
Fontist :: Manifest :: Install . from_file ( "manifest.yml" , confirmation : "yes" )Fontist::FontconfigFontist支持通过Ruby接口与FontConfig合作:
Fontist :: Fontconfig . update # let detect fontist fonts
Fontist :: Fontconfig . remove # disable detection
Fontist :: Fontconfig . remove ( force : true ) # do not fail if no config exists MACOS的新版本提供了各种许可字体的按需安装。这些特定于MACOS的附加字体可以通过字体安装。
安装MACOS附加字体的典型用途是允许MacOS环境上的CI作业使用其他平台上没有这些特殊许可的字体。
这篇博客文章描述了这是如何工作的:
字体博客:安装特定于MACOS的附加字体
例如,“ Canela”字体是一种带有MacOS免费的商业字体。
运行此命令以在MacOS上安装Canela。
$ fontist install Canela可以在Apple支持网站上找到各种MacOS版本上可用字体的完整列表:
Macos的字体13 Ventura
Macos 12蒙特雷的字体
Macos 11 Big Sur中的字体
警告 | 字体由于字体许可限制了这些字体,因此不允许在非MACOS平台上安装MACOS特定字体。 |
NISC18030.TTF(GB18030位图) - MacOS,NISC18030中的更多信息
已知有问题字体的完整列表:
用法排除字体列表
Fontist在内部使用git来获取公式和字体。
为了使用代理后面的Git功能,您需要通过git config命令或~/.gitconfig偏好文件更新自己的git配置。
有很多方法可以配置您的本地git安装以使用代理。
为GIT设置代理的最简单,全局的方式是以下内容。
对于http
git config --global http.proxy http://{user}:{pass}@{proxyhost}:{port}对于HTTPS,您可能需要在设置代理后处理SSL/TLS验证错误,因为加密端位于您的HTTPS代理端点上:
git config --global http.proxy https://{user}:{pass}@{proxyhost}:{port}
git config --global https.proxy https://{user}:{pass}@{proxyhost}:{port}对于袜子,您需要决定袜子协议
git config --global http.proxy ' {protocol}://{user}:{pass}@{proxyhost}:{port} '
git config --global https.proxy ' {protocol}://{user}:{pass}@{proxyhost}:{port} '例如,
git config --global http.proxy ' socks5h://user:[email protected] '
git config --global https.proxy ' socks5h://user:[email protected] ' {protocol}字段的支持的袜子协议列表:
socks:// :对于V5以下的袜子
socks5:// :对于袜子V5
socks5h:// :对于V5 +主机通过袜子分辨率下方的袜子
实际上,您可以为单个GIT存储库设置不同的代理行为 - 请参阅有关如何使用Git代理的精彩指南(感谢Github用户Evantoli)。
通话库存储库是一个包含yaml公式文件的git回购。可以在字体存储库中手动创建Fontist公式(请参见示例),也可以从字体存档自动生成。
可以通过HTTPS或SSH访问Fontist存储库。如果SSH,则应使用ssh-agent设置相应的SSH键,以访问此自定义存储库。
fontist repo setup命令获取自定义存储库的公式,并存储存储库的名称和URL以供以后使用。
fontist repo setup命令使用以下语法。
fontist repo setup NAME URL在内部,所有自定义的字体存储库信息都存储在~/.fontist/formulas/Formulas/private 。
例如,给定一个名为“ ACME”的通用存储库可以通过URL或SSH地址访问:
fontist repo setup acme https://example.com/acme/formulas.git
# or
fontist repo setup acme [email protected]:acme/formulas.gitfontist repo list设置自定义字体存储库后,可以通过其公式从存储库中安装字体:
fontist install " custom font "如果更新了自定义字体公式存储库,则使用repo update命令来进行最新的更改:
fontist repo update NAME例如,给定一个名为“ ACME”的通用存储库,使用以下命令。
fontist repo update acme如果需要删除已注册的字体存储库,则可以将存储库删除:
fontist repo remove acme可以将自定义的字体公式和字体存储库私有化以需要身份验证。
用于HTTPS和SSH GIT Fontist存储库
可以通过标题实施私人公式的私人档案授权。
这是一个与GitHub版本一起使用的示例:
resources :
fonts.zip :
urls :
- url : https://example.com/repos/acme/formulas/releases/assets/38777461
headers :
Accept : application/octet-stream
Authorization : token ghp_1234567890abcdefghi如果字体公式存储库是github存储库,则可以在github设置>“令牌”页面上获得令牌。这个令牌至少应该具有访问这些资产的repo范围。
可以轻松地用YAML手工制作Fontist公式。但是,建议使用自动生成方法以进行数据准确性和便利性。
可以从字体存档生成公式。
fontist create-formula命令允许以多种格式(包括ZIP,7Z,GZIP,GZIP,TAR,CAB,EXE)从字体存档中检测所有字体文件。
fontist create-formula命令支持位于远程URL或本地文件路径的档案。
对于文件路径,将文件路径指定为参数:
wget https://www.latofonts.com/files/Lato2OFL.zip
fontist create-formula lato.zip对于URL,只需将URL指定为参数:
fontist create-formula https://www.latofonts.com/files/Lato2OFL.zip
# > file created at lato.yml because the file downloaded is lato.zip为了测试创建的公式,可以将公式复制到用户的私人公式存储库位置。
fontist create-formula https://www.latofonts.com/files/Lato2OFL.zip
cp lato.yml ~ /.fontist/formulas/Formulas/fontist create-formula命令使用OTF元数据部分中嵌入的信息创建字体公式。
但是,某些字体(例如较旧的字体)通常包含不一致或不完美的元数据信息。例如,某些字体为不同的字体样式应用了不同的OTF Family值。这将导致所有字体样式未在同一家庭中注册。
Fontist公式的作者可以使用override:键纠正这种情况,该键允许公式从字体元数据获得覆盖元数据信息。
笔记 | override密钥不会引起字体文件的任何更改,仅用于更新Fontist在内部使用的信息。 |
在单个字体样式的定义下, override密钥存在:
resources :
...
fonts :
- name : Original font name
styles :
- family_name : Original family name
type : Original style
override :
family_name : Overridden family name
type : Overridden style
preferred_family_name : Overridden preferred family name例如,Adobe在1994年发表的“ Frutiger”字体使用数字来表示单个字体样式,并将这些名称嵌入OTF Family领域,例如“ Frutiger 45 Light”。这些字体也不使用OTF Preferred Family领域,因为它们的年龄,这是OTF的最新添加。
这是override属性如何执行以同一姓名注册的所有相关样式(通过覆盖preferred_family_name值):
...
resources :
...
fonts :
- name : Frutiger 45 Light
styles :
- family_name : Frutiger 45 Light
type : Regular
full_name : Frutiger-Light
post_script_name : Frutiger-Light
override :
preferred_family_name : Frutiger
- ...上面的片段将允许字体生成正确的索引,并允许使用一个命令安装所有Frutiger字体:
$ fontist install " Frutiger " --preferred-family v1.10以外的字体版本使用新的公式格式。升级后,请运行fontist update以获取最新的公式。
从v1.10开始,fontist在分组样式时使用“默认家庭”而不是“首选家庭”。
例如,在v1.10之前对“ LATO”字体的请求将返回所有样式:“黑色”,“黑色斜体”,“粗体”和其他15种样式。
从v1.10开始,字体将仅返回4种默认样式:“常规”,“斜体”,“大胆”和“大胆的斜体”。
为了获取其他样式,您必须指定确切的字体“亚家族”,例如“ lato black”或“ lato heavy”,或使用cli and --preferred-family Fontist.preferred_family = true the the ruby库中。
笔记 | 在v1.10之前,有一个“快递”字体公式的错误,在请求字体名称“ courier”时允许安装字体,但仅使用完整的“快递新”字体名称获得其字体位置。从v1.10开始,行为已经保持一致 - 只能使用适当的“快递新名称”。 |
v1.16以外的字体版本以不同的方式对待install命令的font参数。升级后,请确保在使用fontist install时指定所有必需的字体, fontist manifest-install (及其相应的Ruby Interface Font.install and Manifest::Install ),或使用-F, --formula选项。
从v1.16开始,Fontist仅安装请求的字体,而不是整个公式,除非明确指定。现在改变了。
例如,在v1.16之前对“ arial”字体的安装请求将设置“ ms_truetype”公式中的所有字体:“ arial”,“ arial”,“ trebuchet MS”,“ verdana”和“ times new new Roman”。
从v1.16开始,字体将仅安装请求的“ arial”字体。
要从公式中安装所有字体,可以使用-F, --formula选项:
$ fontist install --formula ms_truetype警告 | 本节仅适用于主体维护者。 |
要添加一个新属性,请更改公式的处理方式或完全替换结构,有两种更改公式格式的方法:
使用公式中的min_fontist属性。它设置了仅当Fontist的版本相等或超过指定版本时,才能安装公式。
在公式存储库中使用新分支,例如“ V2”,“ V3”,“ V4”等。创建新分支后,应在Fontist.formulas_version中定义它
笔记 | 使用新分支将要求所有用户重新下载整个公式存储库。由于此方法具有明显的开销,因此应尽可能使用前一个( min_fontist )。 |
Google字体可能提供了广泛使用,自由和公开许可的字体的最大收藏。
Fontist的公式库包括对通过Google字体提供的所有公开许可的字体的支持,并维护所有此类字体的字体公式。
GHA工作流程每天在Google字体上检查更新字体。如果发现更新,则通过工作流程将其添加到存储库中。
SIL International是一个国际公认的基于信仰的非营利组织,为全球语言社区提供服务。
SIL提供了许多独特的字体,这些字体支持较小的语言社区,这些语言社区通常没有(尚未)(尚未)由主流字体支持。
Fontist旨在支持所有SIL字体,并在默认的Fontist公式存储库中提供其公式。
它们可以更新:
fontist import sil
cd ~ /.fontist/versions/{last_version}/formulas
git add Formulas/sil
git commit -m " SIL fonts update "
git pushMacOS提供可以通过Font Book.app手动下载的字体。
更新MacOS公式:
fontist import macos
cd ~ /.fontist/versions/{last_version}/formulas
git add Formulas/macos
git commit -m " Update macOS formulas "
git push克隆存储库。
git clone https://github.com/fontist/fontist设置您的环境。
bin/setup运行测试套件
bin/rspec所有官方的fontist公式都保存在公式存储库中。
如果您想添加一个新的公式存储库或更改现有的设置,请参考其文档。
释放是通过GitHub操作自动完成的。只是用gem-release颠簸和标签。
对于补丁发布(0.0.x),请使用:
gem bump --version patch --tag --push对于次要版本(0.x.0)使用:
gem bump --version minor --tag --push首先,谢谢您的贡献!我们喜欢所有人的拉力要求。通过参与该项目,您特此授予Ribose授予或将无限数量的非独家许可证或子许可转让给第三方的权利,该版权涵盖了所有手段供款的贡献。
我们正在遵循Sandi Metz的此宝石规则,您可以在此处阅读规则的描述。所有新代码均应遵循这些规则。如果您在违反这些规则的预先存在的文件中进行更改,则应解决违规行为,作为您的贡献的一部分。
以下是一些技术指南:
打开一个讨论新功能的问题。
编写测试以支持您的新功能。
确保整个测试套件在本地和CI上通过。
打开拉动请求。
收到反馈后,您的提交挤压。
派对!
该宝石是由核糖开发,维护和资助的。