mirror of
https://github.com/curioustorvald/Terrarum-sans-bitmap.git
synced 2026-06-14 09:34:05 +09:00
CLAUDE.md
This commit is contained in:
82
CLAUDE.md
Normal file
82
CLAUDE.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Building the JAR
|
||||
The project uses IntelliJ IDEA project files (`.iml`) for building. Build the main library:
|
||||
- Main library JAR: `lib/TerrarumSansBitmap.jar`
|
||||
- Font test application JAR: `FontDemoGDX.jar`
|
||||
|
||||
### Testing Font Rendering
|
||||
Run the font test application:
|
||||
```bash
|
||||
java -jar FontDemoGDX.jar
|
||||
```
|
||||
The test application demonstrates font rendering with text from `demotext_unaligned.txt` and outputs to `demo.PNG`.
|
||||
|
||||
### Key Development Files
|
||||
- **Source code**: `src/net/torvald/terrarumsansbitmap/`
|
||||
- **Font assets**: `assets/` directory (TGA format with alpha channel)
|
||||
- **Test text**: `demotext.txt`, `demotext_unaligned.txt`, `testtext.txt`
|
||||
- **Demo output**: Generated PNG files for visual verification
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
### Core Components
|
||||
|
||||
**TerrarumSansBitmap** (`src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt`)
|
||||
- Main font class extending LibGDX's BitmapFont
|
||||
- Handles font asset loading from TGA sprite sheets
|
||||
- Manages variable-width character rendering with complex glyph tagging system
|
||||
- Supports multiple writing systems (Latin, CJK, Cyrillic, etc.)
|
||||
|
||||
**MovableType** (`src/net/torvald/terrarumsansbitmap/MovableType.kt`)
|
||||
- Advanced typesetting engine with justified text layout
|
||||
- Implements line-breaking, hyphenation, and kerning
|
||||
- Supports multiple typesetting strategies (justified, ragged, centered)
|
||||
- Handles complex text shaping for international scripts
|
||||
|
||||
**GlyphProps** (`src/net/torvald/terrarumsansbitmap/GlyphProps.kt`)
|
||||
- Defines glyph properties including width, diacritics anchors, alignment
|
||||
- Manages kerning data and special rendering directives
|
||||
- Handles complex glyph tagging system for font behavior
|
||||
|
||||
### Font Asset System
|
||||
|
||||
**Glyph Encoding**
|
||||
- Font data stored in TGA sprite sheets with embedded metadata
|
||||
- Width encoded in binary dots on rightmost column
|
||||
- Complex tagging system for diacritics, kerning, and special behaviors
|
||||
- Variable-width sheets use `_variable` naming convention
|
||||
|
||||
**Character Support**
|
||||
- Latin scripts with full diacritics support
|
||||
- CJK ideographs (Chinese variant)
|
||||
- Korean Hangul with syllable composition
|
||||
- Cyrillic with Bulgarian/Serbian variants (requires control characters U+FFFC1, U+FFFC2)
|
||||
- Devanagari, Tamil with ligature support
|
||||
- Many other scripts (see assets directory)
|
||||
|
||||
**Typewriter Font**
|
||||
- Separate typewriter bitmap font in `src/net/torvald/terrarumtypewriterbitmap/`
|
||||
- Includes audio feedback system with typing sounds
|
||||
- Supports international QWERTY and Korean 3-set layouts
|
||||
|
||||
### Key Technical Details
|
||||
|
||||
**Color Coding System**
|
||||
- Uses Unicode private use area for color codes
|
||||
- Utility functions: `GameFontBase.toColorCode()` for ARGB4444 format
|
||||
- U+100000 disables color codes
|
||||
|
||||
**Korean Hangul Assembly**
|
||||
- Decomposes Unicode Hangul into jamo components
|
||||
- Assembles glyphs from initial/medial/final sprite pieces
|
||||
- Supports modern Hangul range (U+AC00-U+D7A3)
|
||||
|
||||
**Font Metrics**
|
||||
- Variable-width sheets parse glyph tags from sprite metadata
|
||||
- Fixed-width sheets: `cjkpunct` (10px), `kana`/`hangul_johab` (12px), `wenquanyi` (16px)
|
||||
- Diacritics positioning via anchor point system
|
||||
Reference in New Issue
Block a user