fix(rpgmaker): preserve visual styling in image translations

- Require translated text to retain source glows, gradients, and effects
- Reject generic panels behind originally freestanding text
- Add regression coverage for image-style preservation instructions
This commit is contained in:
DazedAnon 2026-07-26 09:12:39 -05:00
parent 87347d5a43
commit 979d0bd374
2 changed files with 31 additions and 4 deletions

View file

@ -39,6 +39,7 @@ Produce localized images that:
- Leave portraits and protected artwork pixel-identical when feasible.
- Preserve empty spaces used for runtime-drawn values.
- Fit translated text without clipping or collisions.
- Preserve the distinct visual language and emphasis of every text role.
- Retain recoverable originals.
- Include a concise validation report.
@ -76,9 +77,14 @@ Record:
- Visible source-language text.
- Repeated panel geometry.
- Character art and other protected regions.
- The visual treatment of each text role: font character, weight, fill or gradient, outline,
shadow, inner or outer glow, bloom, blur, opacity, offset, and antialiasing.
- Whether each label is freestanding over the artwork or contained by an existing panel.
Create a contact sheet when multiple variants share a layout. View each target at original
resolution before choosing coordinates.
resolution before choosing coordinates. Treat distinctive effects as required design constraints,
not optional decoration. A luminous pink title, for example, must remain luminous and pink; flat
white text or a newly invented dark pill is not an equivalent treatment.
### 4. Inspect runtime drawing logic
@ -138,7 +144,9 @@ For each reconstructed panel, record its bounds, corner radius, fill color, opac
border, and shadow.
For each translated string, record its text, anchor or baseline, maximum permitted bounds,
font file and size, fill, outline, shadow, alignment, and minimum padding.
font file and size, fill or gradient, outline, shadow, inner and outer glow layers, blur radius,
spread, opacity, offset, blend behavior, alignment, and minimum padding. Sample effect colors
from the source and reproduce multi-layer effects in separate deterministic passes.
For each protected region, record its bounds and required policy: pixel-identical, no text, or
no overlap.
@ -159,6 +167,11 @@ Replace enough of the panel to remove every source glyph. Avoid semi-transparent
leave source text visible beneath them. Do not cover frame borders, portraits, or unrelated
decoration.
Preserve the original relationship between text and background. Do not add a backing rectangle,
pill, card, or heavy shadow when the source text was freestanding. Reconstruct the background
behind the old glyphs, then render the translation with an equivalent outline, glow, bloom, and
layering. Only rebuild a panel when that panel was already part of the source design.
### 9. Fit typography
Use real font metrics. Fit text in this order:
@ -171,8 +184,10 @@ Use real font metrics. Fit text in this order:
6. Shorten wording only when meaning remains accurate.
7. Skip or request review if no safe fit exists.
Use outlines or shadows consistent with the original asset. Preserve character-name colors and
other meaningful visual distinctions.
Reproduce outlines, shadows, glows, gradients, and translucency consistent with the original
asset. Preserve character-name colors and other meaningful visual distinctions. When the exact
font is unavailable, choose the closest font by shape and weight, but still match the original
effect stack and visual prominence.
### 10. Protect dynamic values
@ -200,6 +215,11 @@ Perform all applicable checks:
- Inspect important images at original resolution.
- Simulate dynamic values at their runtime coordinates.
- Check for clipping, ghosted source glyphs, bad baselines, and collisions.
- Compare source and candidate side by side at original resolution and at the intended runtime
scale. Confirm that glow color, halo footprint, contrast, translucency, and hierarchy retain
the same visual role and emphasis.
- Reject generic replacement styling that makes a distinctive title or label look flatter,
darker, brighter, heavier, or more panel-bound than the source.
- Verify the candidate came from the original, not another modified output.
Do not install a candidate that fails a hard check.
@ -233,6 +253,9 @@ Do not paste full image files, large encoded data, or unrelated source code.
- Never use a translucent cover that leaves readable source glyphs beneath it.
- Never assume blank space is unused when project source can be inspected.
- Never substitute a font silently when exact layout depends on it.
- Never discard a distinctive glow, gradient, outline, shadow, or transparency merely because
plain text is easier to render.
- Never introduce a generic pill, panel, or badge behind freestanding source text.
- Never install before reviewing the actual rendered candidate.
- Never overwrite the only original.
- Never claim pixel preservation without running a pixel comparison.
@ -263,4 +286,5 @@ Consider the task complete only when:
- Protected regions pass their required pixel checks.
- Dynamic values have adequate space.
- Visual inspection finds no clipping or source-text ghosts.
- Every translated text role retains the source asset's visual identity and relative emphasis.
- Originals remain recoverable.

View file

@ -281,6 +281,9 @@ class RPGMakerImageManagerSelectionTests(unittest.TestCase):
self.assertIn("authoritative glossary for every translation", prompt)
self.assertIn("deterministic raster backend", prompt)
self.assertIn("runtime value locations as protected keepout regions", prompt)
self.assertIn("inner and outer glow layers", prompt)
self.assertIn("Do not add a backing rectangle", prompt)
self.assertIn("same visual role and emphasis", prompt)
self.assertNotIn("{{GAME_ROOT}}", prompt)
self.assertNotIn("{{EDITABLE_IMAGES_FOLDER}}", prompt)
self.assertNotIn("{{VOCAB_FILE}}", prompt)