104 lines
4.3 KiB
Markdown
104 lines
4.3 KiB
Markdown
---
|
|
id: PLN-0065
|
|
ticket: prometeu-hub-ui-direction
|
|
title: Pixel Operator Font Integration
|
|
status: done
|
|
created: 2026-05-15
|
|
ref_decisions: [DEC-0028]
|
|
tags: [hub, ui, shell, system-apps, lifecycle, design-system]
|
|
---
|
|
|
|
## Briefing
|
|
|
|
Integrate the already-available Pixel Operator font asset into the first Hub UI slice when the existing rendering path can support it without creating a new public font system.
|
|
|
|
Source decision: `DEC-0028`.
|
|
|
|
## Objective
|
|
|
|
Use pixel-style typography for the Hub/Home and fake Shell app labels while keeping font work scoped to the initial UI slice.
|
|
|
|
## Dependencies
|
|
|
|
- `DEC-0028` must remain accepted.
|
|
- `PLN-0064` can proceed without this plan if font integration exposes unrelated architecture work.
|
|
- The asset is expected to exist already under `assets/pixel_operator` or from `assets/pixel_operator.zip`.
|
|
|
|
## Scope
|
|
|
|
- Locate and verify the extracted Pixel Operator asset.
|
|
- Determine the current text rendering path available to Hub/System UI.
|
|
- Add a local font binding or asset loading path if one already fits the runtime.
|
|
- Use the font for Hub button labels and simple Shell app text.
|
|
- Document any reason this must be deferred.
|
|
|
|
## Non-Goals
|
|
|
|
- No general font manager unless one already exists and only needs registration.
|
|
- No text layout engine.
|
|
- No multilingual shaping.
|
|
- No public asset/font spec change unless implementation requires a durable contract.
|
|
- No dependency download.
|
|
|
|
## Execution Method
|
|
|
|
1. Verify the asset.
|
|
- What changes: confirm exact files and format under `assets/pixel_operator`.
|
|
- How: inspect asset directory and identify usable font/bitmap files.
|
|
- Files: `assets/pixel_operator*`.
|
|
|
|
2. Inspect current text rendering.
|
|
- What changes: determine whether Hub can draw text through existing HAL/GFX primitives or asset-backed glyph rendering.
|
|
- How: search current text/glyph/font rendering APIs and examples.
|
|
- Files: `crates/console/prometeu-hal`, `crates/console/prometeu-system`, current asset/glyph code.
|
|
|
|
3. Add the narrowest local integration.
|
|
- What changes: make Hub text use Pixel Operator if the path is straightforward.
|
|
- How: register/load the asset in the same style as existing assets; keep code local to Hub UI if there is no general font contract.
|
|
- Files: Hub module and asset-loading modules identified in step 2.
|
|
|
|
4. Add fallback behavior.
|
|
- What changes: if font rendering is not currently suitable, keep the visual slice working with existing text/primitive rendering and record a follow-up.
|
|
- How: do not block `PLN-0064` on broad font architecture.
|
|
- Files: Hub module and this plan's execution notes.
|
|
|
|
5. Validate typography use.
|
|
- What changes: button labels and simple Shell app labels render legibly in 270p.
|
|
- How: manual visual verification plus any available render tests.
|
|
- Files: Hub render path.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [x] Pixel Operator asset location and format are verified.
|
|
- [x] Hub text rendering uses Pixel Operator when the existing rendering path supports it.
|
|
- [x] If deferred, the reason is recorded and `PLN-0064` remains executable.
|
|
- [x] No broad font/text toolkit is introduced.
|
|
- [x] Text remains legible at 270p.
|
|
|
|
## Tests
|
|
|
|
- Compile tests for any asset/font binding.
|
|
- Unit tests only if new parsing/registration logic is added.
|
|
- Manual visual verification of button labels and Shell labels.
|
|
|
|
## Affected Artifacts
|
|
|
|
- `assets/pixel_operator*`
|
|
- `crates/console/prometeu-system/src/programs/prometeu_hub/`
|
|
- Existing HAL/GFX/asset modules if they already host font or glyph rendering
|
|
|
|
## Execution Notes
|
|
|
|
The asset is present under `assets/pixel-operator/` as TrueType files, including:
|
|
|
|
- `PixelOperator.ttf`
|
|
- `PixelOperator8.ttf`
|
|
- `PixelOperatorMono.ttf`
|
|
- `PixelOperatorMono8.ttf`
|
|
|
|
The included license is CC0 1.0 Universal.
|
|
|
|
The current runtime text path does not have a TTF loader, font manager, glyph rasterizer, or asset-backed font registration path. Hub/System UI currently reaches text through `GfxBridge::draw_text`, backed by the built-in 3x5 bitmap glyph path in `crates/console/prometeu-drivers/src/gfx.rs`.
|
|
|
|
Because `DEC-0028` explicitly forbids expanding this wave into a broad toolkit and this plan forbids introducing a general font manager/text engine, Pixel Operator rendering is deferred. `PLN-0064` remains executable and tested with the existing bitmap text path, which is already pixel-style and legible at 270p.
|