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:
parent
87347d5a43
commit
979d0bd374
2 changed files with 31 additions and 4 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue