German GNU Chess translation review
==================================

Reviewed the complete application-owned surface:
- Two names: primary/application title and native file title.
- Four buttons: Neues Spiel; Computerzug; Zurück; Tiefe 1-4.
- Fifteen status/footer strings, including check, mate, all implemented draw
  results, thinking, illegal move, unavailable undo and initialization memory
  failure. Coverage is checked against all msg_* references in native.asm.
- Three fixed bridge failure messages.

The compiled German resources contain every translated string and no original
English normal-UI counterpart in their corresponding text resources. Proper
names (GNU Chess), international a..h/1..8 coordinates and q/r/b/n promotion
letters are deliberately unchanged. Engine-internal diagnostics and operating
system-provided window/menu controls are outside this application dictionary.

Encoding
The dictionary is UTF-8 source; generated native bytes use the verified GEOS
SBCS subset. This is not Latin-1 or CP437. Genuine ä ö ü Ä Ö Ü ß are supported;
no transliteration is needed. All seven bytes round-trip exactly; unaudited
Unicode punctuation/characters are rejected rather than silently replaced.

Layout
Widths and ink bounds come from the actual supplied Berkeley 10pt bitmap
face (font0x0202, file offset0x1142). It has no kerning pairs. The German draw
font is selected explicitly; English's existing font selection is unchanged.

The longest status is the Black-to-move instruction:269px, atx8 endingx277,
leaving23px in the300px view. White's status is246px and endsx254. All rarer
mate/draw/memory statuses also fit; the full measurements are in
translation-review.json.

Footer label/value gaps:
  Tiefe:   label endsx253; value startsx264; gap11px.
  Zug:     label endsx32;  value startsx38;  gap6px.
  Eingabe: label endsx55;  value startsx64;  gap9px.
Moving the German input value tox64 is necessary: the previous Englishx48
position would overlap the47px Eingabe: label. The lowest text ink reaches
y334, below the340px view height. A complete coordinate promotion move needs
at most35px in this face; both last-move and input value areas have room.

Button labels total239px of glyph advances in this face, before native UI
padding. Their actual row geometry, default UI font and effective display-DPI
scaling/substitution are verified by the separate native runtime checks.
Font-file measurements alone do not claim every DPI configuration was tested.

Reproduce the independent audit with:
  python3 port1/bilingual/audit/review_translation.py --font /path/to/BERKELEY.FNT
The script inspects the generated German includes and compiled dist/de geode.

Independent native visual check
The genuine 640x480 emulator captures were independently inspected after
the font-file audit. All four German native buttons and the title fit.
Weiß, Ungültiger and Zurück render the expected ß/ü glyphs. The longer
Schwarz instruction fits; Zug, Tiefe and Eingabe labels and their values
do not overlap. The reopened application has the same complete layout.
Evidence: bilingual-test/evidence/{01-initial-german.png,
03-invalid-keyboard-move.png,07-depth-four-computer-move.png,10-reopened.png}.
Frame hashes and per-frame observations: audit/native-visual-review.json.
The runtime was the supplied English Professional 1.2; this check does not
establish compatibility with a German-language GEOS runtime or every DPI.
