font-analyzer


Namefont-analyzer JSON
Version 0.0.4 PyPI version JSON
download
home_pageNone
SummaryA tool for detecting and analyzing font metadata from websites and files
upload_time2025-08-04 08:23:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8.1
licenseNone
keywords font metadata analysis web-scraping typography
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🎨 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.

[![Docker](https://img.shields.io/badge/docker-supported-blue.svg)](https://docker.com)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Status](https://img.shields.io/badge/status-production--ready-brightgreen.svg)](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[![Docker](https://img.shields.io/badge/docker-supported-blue.svg)](https://docker.com)\r\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\r\n[![Status](https://img.shields.io/badge/status-production--ready-brightgreen.svg)](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"
}
        
Elapsed time: 1.76298s