bluey/laravel-adobe-fonts
Composer 安装命令:
composer require bluey/laravel-adobe-fonts
包简介
Manage self-hosted Adobe Fonts in Laravel apps
README 文档
README
This package makes self-hosting Adobe Fonts as frictionless as possible for Laravel users. To load fonts in your application, register a Adobe Fonts embed URL and load it with the @adobefonts Blade directive.
// config/adobe-fonts.php return [ 'fonts' => [ 'default' => 'https://use.typekit.net/duhsjsd.css', 'code' => 'https://use.typekit.net/2uhjdhd.css', ], ];
{{-- resources/views/layouts/app.blade.php --}} <head> {{-- Loads Inter --}} @adobefonts {{-- Loads IBM Plex Mono --}} @adobefonts('code') </head>
When fonts are requested the first time, this package will scrape the CSS, fetch the assets from Adobe's servers, store them locally, and render the CSS inline.
If anything goes wrong in this process, the package falls back to a <link> tag to load the fonts from Adobe.
Why we created this package
Adobe Fonts hosts an impressive catalog of fonts, but relying on it has its costs. By hosting fonts on an external domain, browsers need to perform an additional DNS lookup. This slows down the initial page load. In addition, you're directing your visitors to Adobe property, which privacy-minded users might not appreciate.
You can download fonts from Adobe Fonts and self-host them, but it's more work than embedding a code. Keeping up with the latest font version can also be a chore.
This package makes self-hosting Adobe Fonts as frictionless as possible for Laravel users.
Credits
Credits to Spatie for the Laravel Google Fonts package. We needed this for Adobe Fonts, so use the Google Fonts package as a starter.
Installation
You can install the package via composer:
composer require bluey-development/laravel-adobe-fonts
You may optionally publish the config file:
php artisan vendor:publish --provider="Bluey\AdobeFonts\AdobeFontsServiceProvider" --tag="adobe-fonts-config"
Here's what the config file looks like:
return [ /* * Here you can register fonts to call from the @adobefonts Blade directive. * The adobe-fonts:fetch command will prefetch these fonts. */ 'fonts' => [ 'default' => 'https://use.typekit.net/duhsjsd.css', ], /* * This disk will be used to store local Adobe Fonts. The public disk * is the default because it can be served over HTTP with storage:link. */ 'disk' => 'public', /* * Prepend all files that are written to the selected disk with this path. * This allows separating the fonts from other data in the public disk. */ 'path' => 'fonts', /* * By default, CSS will be inlined to reduce the amount of round trips * browsers need to make in order to load the requested font files. */ 'inline' => true, /* * When something goes wrong fonts are loaded directly from Adobe. * With fallback disabled, this package will throw an exception. */ 'fallback' => ! env('APP_DEBUG'), /* * This user agent will be used to request the stylesheet from Adobe Fonts. * This is the Safari 14 user agent that only targets modern browsers. If * you want to target older browsers, use different user agent string. */ 'user_agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15', ];
Usage
To add fonts to your application, grab an embed code from Adobe Fonts, register it in the config and use the @adobefonts Blade directive.
// config/adobe-fonts.php return [ 'fonts' => [ 'default' => 'https://use.typekit.net/duhsjsd.css', 'code' => 'https://use.typekit.net/2uhjdhd.css', ], ];
{{-- resources/views/layouts/app.blade.php --}} <head> {{-- Loads Inter --}} @adobefonts {{-- Loads IBM Plex Mono --}} @adobefonts('code') </head>
This will inline the CSS, so the browser needs to do one less round-trip. If you prefer an external CSS file, you may disable the inline option in the package configuration.
Fonts are stored in a fonts folder on the public disk. You'll need to run php artisan storage:link to ensure the files can be served over HTTP. If you wish to store fonts in the git repository, make sure storage/app/public is not ignored.
If you want to serve fonts from a CDN, you may set up a different disk configuration.
Prefetching fonts
If you want to make sure fonts are ready to go before anyone visits your site, you can prefetch them with this artisan command.
php artisan adobe-fonts:fetch
Caveats for legacy browsers
Adobe Fonts' servers sniff the visitor's user agent header to determine which font format to serve. This means fonts work in all modern and legacy browsers.
This package isn't able to tailor to different user agents. With the default configuration, only browsers that can handle WOFF 2.0 font files are supported. At the time of writing, this is >95% of all users according to caniuse. Most notably, IE doesn't support WOFF 2.0.
If you need to serve fonts to a legacy browser, you may specify a different user agent string in the configuration. Keep in mind that makes the page load heavier for all visitors, including modern browsers.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.
bluey/laravel-adobe-fonts 适用场景与选型建议
bluey/laravel-adobe-fonts 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 10 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「bluey」 「bluey development」 「laravel-adobe-fonts」 「Adobe Fonts」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 bluey/laravel-adobe-fonts 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bluey/laravel-adobe-fonts 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 bluey/laravel-adobe-fonts 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Debugging a problem and need to login as one of your customers? This allows you to authenticate as any of your customers.
Library with classes to help you do batch.
GHT D-Tools Bundle
nabu-3 SDK package to extend Framework with extensions for developers
Use a translation namespace vor mutliple translation files.
The query builder for WordPress
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-10-25