# π¨ Font Analyzer
Font Analyzer is a Python CLI and API for automated font discovery, analysis, and compliance validation from websites and local files. It provides a unified workflow for font metadata extraction, policy-based validation, and reporting, making it ideal for compliance, licensing, and security use cases.
[](https://docker.com)
[](LICENSE)
[](https://github.com/aykut-canturk/font-analyzer)
## π Project Highlights
- π Website font discovery and download
- π Extract font family, style, license, and more
- β
Validate fonts against custom regex-based policies (whitelist)
- π§ Supports TTF, OTF, WOFF, WOFF2, and other formats
- π Color-coded compliance reports
- π Structured logging and flexible configuration
- π³ Docker & Docker Compose support
## π οΈ The Font Analysis Pipeline
Font Analyzer follows a typical pipeline for font compliance:
1. π Discover fonts from websites or local files
2. π Extract and analyze font metadata
3. β
Validate fonts against whitelist policies
4. π Generate compliance reports
5. βοΈ Integrate with CI/CD or enterprise workflows
## π¦ Setup
Install the latest release from PyPI:
```sh
pip install font-analyzer
```
Or for development:
```sh
git clone https://github.com/aykut-canturk/font-analyzer.git
cd font-analyzer
pip install -e .
```
## π Quick Start
### π¦ Global Installation
```bash
# Clone and install
git clone https://github.com/aykut-canturk/font-analyzer.git
cd font-analyzer
pip install -r requirements.txt
# Run font-analyzer
font-analyzer --url "https://github.com"
font-analyzer --font_path "/path/to/font.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
font-analyzer --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### β‘ UV Development Environment
```bash
# Run with uvicorn
uv run python -m font_analyzer.main --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
uv run python -m font_analyzer.main --font_path "/path/to/font.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### π³ Docker Usage
```bash
# Basic usage
docker run --rm font-analyzer --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
# Mount local fonts directory
docker run --rm -v "/path/to/fonts:/app/fonts" font-analyzer --font_path "/app/fonts/Roboto-Regular.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### π Traditional Python
```bash
# Directly using Python
python -m font_analyzer.main --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
python -m font_analyzer.main --font_path "/path/to/font.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
---
## Usage Examples
### Website Font Analysis
```bash
font-analyzer --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
uv run python -m font_analyzer.main --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### Local Font File Analysis
```bash
font-analyzer --font_path "/path/to/font.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
uv run python -m font_analyzer.main --font_path "/path/to/font.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### Docker Usage
```bash
docker run --rm font-analyzer --url "https://github.com" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
docker run --rm -v "/path/to/fonts:/app/fonts" font-analyzer --font_path "/app/fonts/Roboto-Regular.ttf" --allowed_fonts "Roboto" "Open Sans" ".*Arial.*"
```
### Environment Variable Usage
```bash
# Windows
set ALLOWED_FONTS=Roboto,Open Sans,.*Arial.*
set FONT_PATH=fonts/my-font.ttf
font-analyzer
# Linux/macOS
export ALLOWED_FONTS=Roboto,Open Sans,.*Arial.*
export FONT_PATH=fonts/my-font.ttf
font-analyzer
```
---
## Configuration
### Environment Variables
| Variable | Description | Example |
|----------|-------------|---------|
| `URL` | Website URL to analyze | `https://github.com` |
| `FONT_PATH` | Path to font file | `./fonts/font.woff` |
| `WHITELIST_PATH` | Custom whitelist file | `/app/custom-whitelist.yaml` |
| `ALLOWED_FONTS` | Comma-separated list of allowed font patterns | `Roboto,Open Sans,.*Arial.*` |
## π¨βπ» Development
To release a new version:
1. βοΈ Update the version in `src/font_analyzer/__init__.py`
2. β¬οΈ Commit and push changes
3. π·οΈ Tag the release: `git tag v<version>`
4. π Push tags: `git push --tags`
5. β
Verify build and release on PyPI
## π License
MIT License
## π Links
- [GitHub](https://github.com/aykut-canturk/font-analyzer)
- [Bug Reports](https://github.com/aykut-canturk/font-analyzer/issues)
Raw data
{
"_id": null,
"home_page": null,
"name": "font-analyzer",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8.1",
"maintainer_email": null,
"keywords": "font, metadata, analysis, web-scraping, typography",
"author": null,
"author_email": "Aykut Cant\u00fcrk <canturk.aykut@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/a9/d9/34f9f9e69f727a12e8edf6b44bf44fb3b1084d252e731cd0cdac569804ff/font_analyzer-0.0.4.tar.gz",
"platform": null,
"description": "# \ud83c\udfa8 Font Analyzer\r\n\r\nFont Analyzer is a Python CLI and API for automated font discovery, analysis, and compliance validation from websites and local files. It provides a unified workflow for font metadata extraction, policy-based validation, and reporting, making it ideal for compliance, licensing, and security use cases.\r\n\r\n[](https://docker.com)\r\n[](LICENSE)\r\n[](https://github.com/aykut-canturk/font-analyzer)\r\n\r\n## \ud83d\ude80 Project Highlights\r\n\r\n- \ud83c\udf10 Website font discovery and download\r\n- \ud83d\udccb Extract font family, style, license, and more\r\n- \u2705 Validate fonts against custom regex-based policies (whitelist)\r\n- \ud83d\udd27 Supports TTF, OTF, WOFF, WOFF2, and other formats\r\n- \ud83d\udcca Color-coded compliance reports\r\n- \ud83d\udcdd Structured logging and flexible configuration\r\n- \ud83d\udc33 Docker & Docker Compose support\r\n\r\n## \ud83d\udee0\ufe0f The Font Analysis Pipeline\r\n\r\nFont Analyzer follows a typical pipeline for font compliance:\r\n\r\n1. \ud83c\udf10 Discover fonts from websites or local files\r\n2. \ud83d\udccb Extract and analyze font metadata\r\n3. \u2705 Validate fonts against whitelist policies\r\n4. \ud83d\udcca Generate compliance reports\r\n5. \u2699\ufe0f Integrate with CI/CD or enterprise workflows\r\n\r\n## \ud83d\udce6 Setup\r\n\r\nInstall the latest release from PyPI:\r\n\r\n```sh\r\npip install font-analyzer\r\n```\r\n\r\nOr for development:\r\n\r\n```sh\r\ngit clone https://github.com/aykut-canturk/font-analyzer.git\r\ncd font-analyzer\r\npip install -e .\r\n```\r\n\r\n## \ud83d\ude80 Quick Start\r\n\r\n### \ud83d\udce6 Global Installation\r\n\r\n```bash\r\n# Clone and install\r\ngit clone https://github.com/aykut-canturk/font-analyzer.git\r\ncd font-analyzer\r\npip install -r requirements.txt\r\n\r\n# Run font-analyzer\r\nfont-analyzer --url \"https://github.com\"\r\nfont-analyzer --font_path \"/path/to/font.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\nfont-analyzer --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### \u26a1 UV Development Environment\r\n\r\n```bash\r\n# Run with uvicorn\r\nuv run python -m font_analyzer.main --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\nuv run python -m font_analyzer.main --font_path \"/path/to/font.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### \ud83d\udc33 Docker Usage\r\n\r\n```bash\r\n# Basic usage\r\ndocker run --rm font-analyzer --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n\r\n# Mount local fonts directory\r\ndocker run --rm -v \"/path/to/fonts:/app/fonts\" font-analyzer --font_path \"/app/fonts/Roboto-Regular.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### \ud83d\udc0d Traditional Python\r\n\r\n```bash\r\n# Directly using Python\r\npython -m font_analyzer.main --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\npython -m font_analyzer.main --font_path \"/path/to/font.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n---\r\n\r\n## Usage Examples\r\n\r\n### Website Font Analysis\r\n\r\n```bash\r\nfont-analyzer --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\nuv run python -m font_analyzer.main --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### Local Font File Analysis\r\n\r\n```bash\r\nfont-analyzer --font_path \"/path/to/font.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\nuv run python -m font_analyzer.main --font_path \"/path/to/font.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### Docker Usage\r\n\r\n```bash\r\ndocker run --rm font-analyzer --url \"https://github.com\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\ndocker run --rm -v \"/path/to/fonts:/app/fonts\" font-analyzer --font_path \"/app/fonts/Roboto-Regular.ttf\" --allowed_fonts \"Roboto\" \"Open Sans\" \".*Arial.*\"\r\n```\r\n\r\n### Environment Variable Usage\r\n\r\n```bash\r\n# Windows\r\nset ALLOWED_FONTS=Roboto,Open Sans,.*Arial.*\r\nset FONT_PATH=fonts/my-font.ttf\r\nfont-analyzer\r\n\r\n# Linux/macOS\r\nexport ALLOWED_FONTS=Roboto,Open Sans,.*Arial.*\r\nexport FONT_PATH=fonts/my-font.ttf\r\nfont-analyzer\r\n```\r\n\r\n---\r\n\r\n## Configuration\r\n\r\n### Environment Variables\r\n\r\n| Variable | Description | Example |\r\n|----------|-------------|---------|\r\n| `URL` | Website URL to analyze | `https://github.com` |\r\n| `FONT_PATH` | Path to font file | `./fonts/font.woff` |\r\n| `WHITELIST_PATH` | Custom whitelist file | `/app/custom-whitelist.yaml` |\r\n| `ALLOWED_FONTS` | Comma-separated list of allowed font patterns | `Roboto,Open Sans,.*Arial.*` |\r\n\r\n## \ud83d\udc68\u200d\ud83d\udcbb Development\r\n\r\nTo release a new version:\r\n\r\n1. \u270f\ufe0f Update the version in `src/font_analyzer/__init__.py`\r\n2. \u2b06\ufe0f Commit and push changes\r\n3. \ud83c\udff7\ufe0f Tag the release: `git tag v<version>`\r\n4. \ud83d\ude80 Push tags: `git push --tags`\r\n5. \u2705 Verify build and release on PyPI\r\n\r\n## \ud83d\udcc4 License\r\n\r\nMIT License\r\n\r\n## \ud83d\udd17 Links\r\n\r\n- [GitHub](https://github.com/aykut-canturk/font-analyzer)\r\n- [Bug Reports](https://github.com/aykut-canturk/font-analyzer/issues)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A tool for detecting and analyzing font metadata from websites and files",
"version": "0.0.4",
"project_urls": {
"Homepage": "https://github.com/aykut-canturk/font-analyzer",
"Issues": "https://github.com/aykut-canturk/font-analyzer/issues",
"Repository": "https://github.com/aykut-canturk/font-analyzer"
},
"split_keywords": [
"font",
" metadata",
" analysis",
" web-scraping",
" typography"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a451792fd52d561b49dd74696c18c25fb9cbfc59c03068e5049c83a585c1ce5c",
"md5": "d50c0dc8b2cb88ca4991496996c64446",
"sha256": "a418045960e438420c5a367e1e60163555735dc52488549ffc793ba29c9ff12e"
},
"downloads": -1,
"filename": "font_analyzer-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d50c0dc8b2cb88ca4991496996c64446",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.1",
"size": 18892,
"upload_time": "2025-08-04T08:23:05",
"upload_time_iso_8601": "2025-08-04T08:23:05.284819Z",
"url": "https://files.pythonhosted.org/packages/a4/51/792fd52d561b49dd74696c18c25fb9cbfc59c03068e5049c83a585c1ce5c/font_analyzer-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a9d934f9f9e69f727a12e8edf6b44bf44fb3b1084d252e731cd0cdac569804ff",
"md5": "0c29fcc5dc315ddaa357703a35a0bbf2",
"sha256": "e707dfe8a5a4d92d05e3c6bacf7ed3c521cfffc0882c043f3d975a8d463293b6"
},
"downloads": -1,
"filename": "font_analyzer-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "0c29fcc5dc315ddaa357703a35a0bbf2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.1",
"size": 111986,
"upload_time": "2025-08-04T08:23:06",
"upload_time_iso_8601": "2025-08-04T08:23:06.724230Z",
"url": "https://files.pythonhosted.org/packages/a9/d9/34f9f9e69f727a12e8edf6b44bf44fb3b1084d252e731cd0cdac569804ff/font_analyzer-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 08:23:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aykut-canturk",
"github_project": "font-analyzer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "font-analyzer"
}