Ed Davies
EW Avionics
1998-December-21
When EWView exports a trace in the IGC format certain fields from the EWT file are copied directly to the output file. Unfortunately, the character set allowed in these fields in the IGC format is a subset of the set of characters which are possible in the EWT file.
Some fields in the EWT file are stored using a large subset of the standard IBM character set (code page 850 - Multilingual (Latin 1)). This subset includes the whole of the printable ASCII character set.
Fields in the IGC file format are a restricted to a subset of the printable ASCII characters. This is therefore a subset of the characters possible in the EWT file.
Characters in the relevant EWT fields which are not contained in IGC subset are mapped to characters which are in order to ensure that a valid IGC file is produced.
The field which is most affected by this mapping is the EWT comment text which is included in the IGC file as a (possibly empty) sequence of logbook records. This can contain any of the printable characters allowed in an EWT file.
Other fields which potentially could be affected include the glider, pilot and GPS receiver fields ("pilot info" fields in the EW FR Model D) and turn point names in a declaration and datum names from the GPS receiver. Currently EWView/DOS checks the contents of the declaration fields prior to download (applying the mapping documented here as the characters are typed in by the user) and all characters which appear in datum names produced by approved GPS receivers fall within the IGC character set so mapping of these fields is not currently essential.
In future, a more robust version of EWView/DOS might check these fields while preparing for export and warn if the there are unsupported characters present. This would only be useful if there was any software in existence which allowed the download of characters outside the IGC subset. Applying any mapping to these fields prior to export is of questionable value as it would prevent VALI-EWA calculating the correct checksum. Before deciding whether to perform such a mapping it would be necessary to weigh up the consequences of causing the security code to not match making the file insecure for IGC purposes against the consequences for analysis software of reading files which do not comply strictly with the standard.
In the absence of such non-conforming declaration download software the addition of this check is not urgent.
(The comment text is not included in the checksum so these considerations does not apply to it).
The general principle followed is that EWT characters which are in the allowed IGC character set are preserved, the remainder are either mapped to sensible alternatives or to '#' (hash/pound/number sign/sharp).
Note - the character names used in the following table are purly for descriptive purposes. They are not in anyway definitive names.
| EWT Char | IGC Char | ||||
|---|---|---|---|---|---|
| Hex | Char | Name | Hex | Char | Name |
| 00-19 | Control Chars | 23 | # | Hash | |
| 20 | Space | 20 | Space | ||
| 21 | ! | Exclamation mark | 23 | # | Hash |
| 22 | " | Double Quote | 22 | " | Double Quote |
| 23 | # | Hash | 23 | # | Hash |
| 24 | $ | Dollar | 23 | # | Hash |
| 25 | % | Percent | 25 | % | Percent |
| 26 | & | Ampersand | 26 | & | Ampersand |
| 27 | ' | Single Quote | 27 | ' | Single Quote |
| 28 | ( | Open Parenthesis | 28 | ( | Open Parenthesis |
| 29 | ) | Close Parenthesis | 29 | ) | Close Parenthesis |
| 2A | * | Asterisk | 23 | # | Hash |
| 2B | + | Plus | 2B | + | Plus |
| 2C | , | Comma | 3B | ; | Semicolon |
| 2D | - | Minus | 2D | - | Minus |
| 2E | . | Point | 2E | . | Point |
| 2F | / | Slash | 2F | / | Slash |
| 30-39 | 0..9 | Digits | 30-39 | 0..9 | Digits |
| 3A | : | Colon | 3A | : | Colon |
| 3B | ; | Semicolon | 3B | ; | Semicolon |
| 3C | < | Less Than | 3C | < | Less Than |
| 3D | = | Equal | 3D | = | Equal |
| 3E | > | Greater Than | 3E | > | Greater Than |
| 3F | ? | Question Mark | 3F | ? | Question Mark |
| 40 | @ | At | 40 | @ | At |
| 41-5A | A..Z | Upper Case Letters | 41-5A | A..Z | Upper Case Letters |
| 5B | [ | Open Bracket | 5B | [ | Open Bracket |
| 5C | \ | Backslash | 23 | # | Hash |
| 5D | ] | Close Bracket | 5D | ] | Close Bracket |
| 5E | ^ | Circumflex | 23 | # | Hash |
| 5F | _ | Underscore | 5F | _ | Underscore |
| 60 | ` | Open Single Quote | 60 | ` | Open Single Quote |
| 61..7A | a..z | Lower Case Letters | 61..7A | a..z | Lower Case Letters |
| 7B | { | Open Braces | 7B | { | Open Braces |
| 7C | | | Vertical Bar | 7C | | | Vertical Bar |
| 7D | } | Close Braces | 7D | } | Close Braces |
| 7E | ~ | Tilde | 23 | # | Hash |
| 7F | Del | 23 | # | Hash | |
| 80 | Ç | Upper Case C Cedilla | 43 | C | Upper Case C |
| 81 | ü | Lower Case U Umlaut | 75 | u | Lower Case U |
| 82 | é | Lower Case E Acute | 65 | e | Lower Case E |
| 83 | â | Lower Case A Circumflex | 61 | a | Lower Case A |
| 84 | ä | Lower Case A Umlaut | 61 | a | Lower Case A |
| 85 | à | Lower Case A Grave | 61 | a | Lower Case A |
| 86 | å | Lower Case A Ring | 61 | a | Lower Case A |
| 87 | ç | Lower Case C Cedilla | 63 | c | Lower Case C |
| 88 | ê | Lower Case E Circumflex | 65 | e | Lower Case E |
| 89 | ë | Lower Case E Umlaut | 65 | e | Lower Case E |
| 8A | è | Lower Case E Grave | 65 | e | Lower Case E |
| 8B | ï | Lower Case I Umlaut | 69 | i | Lower Case I |
| 8C | î | Lower Case I Circumflex | 69 | i | Lower Case I |
| 8D | ì | Lower Case I Grave | 69 | i | Lower Case I |
| 8E | Ä | Upper Case A Umlaut | 41 | A | Upper Case A |
| 8F | Å | Upper Case A Ring | 41 | A | Upper Case A |
| 90 | É | Upper Case E Acute | 45 | E | Upper Case E |
| 91 | æ | Lower Case AE Dipthong | 23 | # | Hash |
| 92 | Æ | Upper Case AE Dipthong | 23 | # | Hash |
| 93 | ô | Lower Case O Circumflex | 6F | o | Lower Case O |
| 94 | ö | Lower Case O Umlaut | 6F | o | Lower Case O |
| 95 | ó | Lower Case O Grave | 6F | o | Lower Case O |
| 96 | û | Lower Case U Circumflex | 75 | u | Lower Case U |
| 97 | ù | Lower Case U Grave | 75 | u | Lower Case U |
| 98 | ÿ | Lower Case Y Umlaut | 79 | y | Lower Case Y |
| 99 | Ö | Upper Case O Umlaut | 4F | O | Upper Case O |
| 9A | Ü | Upper Case U Umlaut | 55 | U | Upper Case U |
| 9B | ø | Lower Case O Slash | 23 | # | Hash |
| 9C | £ | Pound | 23 | # | Hash |
| 9D | Ø | Upper Case O Slash | 23 | # | Hash |
| 9E | × | Multiply | 23 | # | Hash |
| 9F | ƒ | Eff Thingy | 23 | # | Hash |
| A0 | á | Lower Case A Acute | 61 | a | Lower Case A |
| A1 | í | Lower Case I Acute | 69 | i | Lower Case I |
| A2 | ó | Lower Case O Acute | 6F | o | Lower Case O |
| A3 | ú | Lower Case U Acute | 75 | u | Lower Case U |
| A4 | ñ | Lower Case N Tilde | 6E | n | Lower Case N |
| A5 | Ñ | Upper Case N Tilde | 4E | N | Upper Case N |
| A6 | Superscript Lower Case A Underscore |
23 | # | Hash | |
| A7 | Superscript Lower Case O Underscore |
23 | # | Hash | |
| A8 | ¿ | Inverted Question Mark | 23 | # | Hash |
| A9 | ® | Registered Symbol | 23 | # | Hash |
| AA | ¬ | Not/Bar | 23 | # | Hash |
| AB | ½ | Half | 23 | # | Hash |
| AC | ¼ | Quarter | 23 | # | Hash |
| AD | ¡ | Inverted Exclamation | 23 | # | Hash |
| AE | « | Open Angle Quotes | 23 | # | Hash |
| AF | » | Close Angle Quotes | 23 | # | Hash |
| B0-B4 | Line Drawing Characters | 23 | # | Hash | |
| B5 | Á | Upper Case A Acute | 41 | A | Upper Case A |
| B6 | Â | Upper Case A Circumflex | 41 | A | Upper Case A |
| B7 | À | Upper Case A Grave | 41 | A | Upper Case A |
| B8 | © | Copyright | 23 | # | Hash |
| B9-BC | Line Drawing Characters | 23 | # | Hash | |
| BD | ¢ | Cent | 63 | c | Lower Case C |
| BE | ¥ | Yen | 23 | # | Hash |
| BF-C5 | Line Drawing Characters | 23 | # | Hash | |
| C6 | ã | Lower Case A Tilde | 61 | a | Lower Case A |
| C7 | Ã | Upper Case A Tilde | 41 | A | Upper Case A |
| C8-CE | Line Drawing Characters | 23 | # | Hash | |
| CF | ¤ | Currency Symbol | 23 | # | Hash |
| D0 | Lower Case Delta | 64 | d | Lower Case D | |
| D1 | Ð | Upper Case D Bar | 44 | D | Upper Case D |
| D2 | Ê | Upper Case E Circumflex | 45 | E | Upper Case E |
| D3 | Ë | Upper Case E Umlaut | 45 | E | Upper Case E |
| D4 | È | Upper Case E Grave | 45 | E | Upper Case E |
| D5 | Line Drawing Character | 23 | # | Hash | |
| D6 | Ì | Upper Case I Grave | 49 | I | Upper Case I |
| D7 | Î | Upper Case I Circumflex | 49 | I | Upper Case I |
| D8 | Ï | Upper Case I Umlaut | 49 | I | Upper Case I |
| D9-DD | Line Drawing Characters | 23 | # | Hash | |
| DE | Ì | Upper Case I Grave | 49 | I | Upper Case I |
| DF | Line Drawing Character | 23 | # | Hash | |
| E0 | Ó | Upper Case O Acute | 4F | O | Upper Case O |
| E1 | ß | Double S | 53 | S | Upper Case S |
| E2 | Ô | Upper Case O Circumflex | 4F | O | Upper Case O |
| E3 | Ò | Upper Case O Grave | 4F | O | Upper Case O |
| E4 | õ | Lower Case O Tilde | 6F | o | Lower Case O |
| E5 | Õ | Upper Case O Tilde | 4F | O | Upper Case O |
| E6 | µ | Micro | 23 | # | Hash |
| E7 | Þ | Lower Case Eth/Thorn? | 23 | # | Hash |
| E8 | þ | Upper Case Eth/Thorn? | 23 | # | Hash |
| E9 | Ú | Upper Case U Acute | 55 | U | Upper Case U |
| EA | Û | Upper Case U Tilde | 55 | U | Upper Case U |
| EB | Ù | Upper Case U Grave | 55 | U | Upper Case U |
| EC | ý | Lower Case Y Acute | 79 | y | Lower Case Y |
| ED | Ý | Upper Case Y Acute | 59 | Y | Upper Case Y |
| EE | Overbar | 23 | # | Hash | |
| EF | Acute | 23 | # | Hash | |
| F0 | Bar | 23 | # | Hash | |
| F1 | ± | Plus or Minus | 23 | # | Hash |
| F2 | Equal | 23 | # | Hash | |
| F3 | ¾ | Three Quarters | 23 | # | Hash |
| F4 | ¶ | Paragraph | 23 | # | Hash |
| F5 | § | Section | 23 | # | Hash |
| F6 | ÷ | Divide | 23 | # | Hash |
| F7 | Tadpole | 23 | # | Hash | |
| F8 | ° | Degree | 64 | d | Lower Case D |
| F9 | Minute | 23 | # | Hash | |
| FA | Second | 23 | # | Hash | |
| FB | ¹ | Superscript 1 | 23 | # | Hash |
| FC | ² | Superscript 2 | 23 | # | Hash |
| FD | ³ | Superscript 3 | 23 | # | Hash |
| FE | Block | 23 | # | Hash | |
| FF | 23 | # | Hash | ||