MCPcopy Index your code
hub / github.com/7sDream/fontfor

github.com/7sDream/fontfor @v0.4.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.3 ↗ · + Follow
152 symbols 259 edges 24 files 1 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FontFor

license-badge version-badge ci-badge

Find fonts which can show a specified character and preview them in browser.

This is port from my early python script called which_fonts_support, but with some improvements:

  • 🛡️ Write in Rust, without unsafe. Safety
  • 🚀️ Mmap to load font file. Fast
  • 🚀️ Only parse font table we need, not all bytes of font file. Faster
  • 🖥 Support preview in terminal and browser. Friendly

Install or Update

cargo install -f fontfor

Or download binary from release page.

Usage

Basic

$ fontfor א
Font(s) support the character "א"(U+05D0, 1488, 0xD7 0x90):
Arial                       with 4 styles
Arial Hebrew                with 3 styles
Arial Hebrew Desk Interface with 3 styles
Arial Hebrew Scholar        with 3 styles
Arial Unicode MS            with 1 style
Corsiva Hebrew              with 2 styles
Courier New                 with 4 styles
DejaVu Sans                 with 8 styles
FreeMono                    with 4 styles
FreeSans                    with 4 styles
FreeSerif                   with 4 styles
HanaMinA                    with 1 style
LastResort                  with 1 style
Lucida Grande               with 2 styles
Microsoft Sans Serif        with 1 style
New Peninim MT              with 4 styles
Raanana                     with 2 styles
TW-Kai                      with 1 style
TW-Sung                     with 1 style
Tahoma                      with 2 styles
Times New Roman             with 4 styles

Character Input Format

You can use the following formats for the character:

  • Character: א
  • Unicode scalar value
  • U+XXXXXX: U+5d0, U+05d0, U+0005d0
  • Direct input
    • Dec format: 1488
    • Oct format: 0o2720
    • Binary format: 0b010111010000
  • UTF8 bytes: 0xd790

Show All Font Styles

add -v flag to show all font style.

We don't show screenshot picture here because it's a bit long.

add more -v, or -vv to show font file and face index.

Preview in Browser

Add -p flag to enable browser preview:

browser-preview-screenshot

Preview in Shell

Add -t flag to enter tui mode for preview in shell:

tui-mono-mode

And you can change render mode to ASCII(10 Level):

tui-ascii-10-mode

ASCII(70 Level):

tui-ascii-70-mode

Or moon-render mode:

tui-moon-mode

LICENSE

GPLv3 or later.

See COPYING.

Extension points exported contracts — how you extend this code

Render (Interface)
(no doc) [3 implementers]
src/preview/terminal/render/mod.rs

Core symbols most depended-on inside this repo

len
called by 13
src/preview/terminal/ui/state.rs
next
called by 6
src/family.rs
draw
called by 6
src/preview/terminal/ui/mod.rs
is_empty
called by 5
src/family.rs
pixel
called by 5
src/rasterizer/bitmap.rs
matched
called by 3
src/family.rs
filter
called by 3
src/family.rs
database
called by 3
src/loader/mod.rs

Shape

Method 103
Class 23
Function 14
Enum 11
Interface 1

Languages

Rust98%
TypeScript2%

Modules by API surface

src/preview/terminal/ui/state.rs24 symbols
src/preview/terminal/ui/mod.rs20 symbols
src/family.rs20 symbols
src/preview/browser/server.rs14 symbols
src/preview/terminal/ui/cache.rs11 symbols
src/one_char.rs11 symbols
src/rasterizer/mod.rs5 symbols
src/rasterizer/bitmap.rs5 symbols
src/preview/terminal/ui/event.rs5 symbols
src/preview/browser/builder.rs5 symbols
src/preview/terminal/render/ascii.rs4 symbols
src/main.rs4 symbols

For agents

$ claude mcp add fontfor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact