X-Plane Taxiway Sign Specification

In the beginning the taxiway sign specification was a joint effort between FlightGear and X-Plane. The products have since drifted apart; this specification may no longer be applicable to FlightGear. FlightGear users will want to consult their own source.

What is a Taxi Sign?

A taxi sign string is a string of instructions and glyphs that describe an airport sign, usually seen near the sign of a runway or taxiway. See appendix C for examples. We may refer to these throughout the document.

Taxi signs are case sensitive! Throughout the document is phrases like “A-Z”. This means the capital letters A through Z. “a-z” would refer to lower case letters.

Syntax of a Taxi Sign

This is the solid grammar of the spec. It explains what is allowed and not allowed for any reason and would not be logical. -rewrite

The basic rules of a taxi sign are:

  • No spaces, new lines, tabs (aka whitespace)
  • Only ASCII printable characters which are supported (see the appendix for quick table of non supported characters)
  • No incomplete or invalid curly brace pairs

Curly brace pairs

Curly braces, { and }, make up the structure and “clauses” of the string. The 3 rules for curly braces are:

  • Every curly brace must have one and only one partner
  • Every curly brace pair must not be empty
  • No curly brace pair may be in a nesting situation

These rules are not affected or changed by surrounding or containing glyphs, instructions, or semantics.

With this in mind let’s see some examples and why they will fail. (Content of taxi signs here chosen at random and is meaningless)

Example

Why it fails

Correction

{@Y,Q

No right brace

{@Y,Q}

@Y,Q}

No left brace

{@Y,Q}

{@Y,Q}{}{@R,K}

Every curly brace having a buddy, but the middle pair has nothing inside it

{@Y,Q}{@R,K}

{@Y,Q}{@R,K{@L,1}}

{@L,1} is inside of {@R,K}, causing nesting

{@Y,Q}{@R,K}{@L,1}

Glyphs:

A glyph is a symbol representing something, you’re looking at them right now. Letters, icons, symbols are all glyphs, hence why we say “glyphs” instead of “letters”. In the taxi sign string system we have two groups of glyphs, single glyphs and multi glyphs. They each have limitations on where and how they can be expressed. They are also not necessarily in a one to one relationship. To make a space one uses a “_” instead of a ” “. Despite taking up 1 character worth of space a single roman numeral must declared with two characters: “r1”.

The texture of all glyphs that X-Plane can produce (Found in X-Plane 10\Resources\bitmaps\runways\taxi.dds)

Single glyphs

All the single glyphs in X-Plane
All the single glyphs in X-Plane

Single glyphs (highlighted above) are glyphs that can generally represent themselves in a single character, for example A, -, 6, etc. Single glyphs can appear inside of a curly brace pair or outside of it. The following are single letter glyphs

  • A-Z
  • 0-9
  • – (produces a hyphen)
  • * (produces a dot)
  • . (produces a period)
  • ,
  • /
  • _ (produces a space)

Multi letter glyphs:

Note that the Roman Letter is repeated to achieve the Roman Numeral 2 and 3
Note that the Roman Letter is repeated to achieve the Roman Numeral 2 and 3

Multi glyphs are glyphs that can only be described using more than one character. Multi letter glyphs include arrows, roman numerals, and special signs such as hazard and no-entry. These must be inside curly braces. Here is the table for it

Multi Letter Glyph Names

Description

^u

Up Arrow

^d

Down Arrow

^l

Left Arrow

^r

Right Arrow

^lu

Left Up Arrow

^ru

Right Up Arrow

^ld

Left Down Arrow

^rd

Right Down Arrow

r1

Roman Numeral I

r2

Roman Numeral II

r3

Roman Numeral III

no-entry

no-entry sign (white circle with horizontal bar on red background)

critical

ILS Critical Area Boundary sign

safety

Runway Safety Area

hazard

Taxiway Ending Marker

comma

The multiglyph version of “,”. Allows to use commas inside curly braces.

Instructions:

Instructions are what tell X-Plane what to do next with the sign. Not all glyphs can be used with all sign instructions. The below table describes the relationship between instruction and glyph.

An instruction must be inside a curly brace and come after a separator. The left curly brace “{” and the comma “,” are these separators.

One can only declare Y, R, L, B, or @ instructions. Once a color instruction has been declared the parser will stick with it. There is no need for something like {@L}123{@L}ABC, however re-declaring a color instruction is harmless.

Instruction Id

Description

Glyphs Supported/Notes

Y

“Direction, Destination, Boundary” (black on yellow)

Supports all valid glyphs

R

“Mandatory Instruction”  (white on red with black outline)

Supports all valid glyphs

L

“Location” (yellow text and frame on black)

Supports only A-Z,0-9

B

“Runway Distance Remaining” (white on black)

Supports only 0-9

@

Changing drawing sides

Switches the sign drawing from the front to the back, only allowed once per sign

The “@” Instruction aka Frontside/Backside switching:

         Signs in X-Plane are single-sided by default, but there is a way to make a sign have content on the front and back of it. The switch side instruction “@” causes X-Plane’s taxi sign builder to start drawing on the opposite side. Look in Appendix C for an example of this.

The @ instruction only switches the side of the sign. The only restriction is that it can only be used once per taxi sign – simply, because a sign only has one front and back!

Here is how the sign “{@Y}FRONT{@@}BACK” would appear in WED with text indicating what side is which appears along which heading:

Front and Back

As stated above, once a color instruction has been declared there is no need to redeclare it. The @ instruction does not change the color. Something like {@Y}123{@@}{@Y}ABC is unnecessary, but harmless.

NOTE: The @ instruction is different from @ used as a declarer; for instance, to use the instruction @, you would need to write “@@”; the first @ declaring that you’re using an instruction and the second @ being the instruction.

Sign Framing

A sign “frame” refers to the separating lines that can appear between parts of a sign. Framing happens automatically when the sign color is changed.

For example, when the sign switches from @L to @R

It can also be induced manually using the “|” or “pipe bar” character, found underneath the backspace key on most keyboards. Observe “{@Y}BOOK|CASE” on the left and “{@Y}BOOKCASE”

Pipe Bar Example

The pipe bar has some conditions for its usage.

  • The pipe bar must have the same color glyph next to it on the left and right side. For example {@Y}{^l}|{@R}RIGHT fails because to the left of the pipe bar is a yellow left arrow and to the right is a red R.
  • The pipe bar can only be used with glyphs that are of colors @Y,@R, and @L. @B is not affected by the pipe bar and as such a sign like “{@B}123” and “{@B}1|2|3” will both appear as the same image on a sign.
  • Independently colored glyphs (see Appendix D) glyphs cannot be used with the pipe bar.
  • Pipe bars cannot be adjacent to another pipe bar or a non existent glyph, ex. the start or end of the string. For example the following all fail:
    • {@Y}123||A – Pipe bars adjacent
    • |{@Y}123 – Pipe bar at start of the string
    • {@Y}123| – Pipe bar at end

Separators in a Taxi Sign:

Taxi signs contain, as you know by now, glyphs and instructions. These can be thought of as “elements” of a sign. Each element must be separated from one another. This can be accomplished by using curly braces and commas. The comma, when used inside of a pair of curly braces, becomes a separator. In the sign {@Y,^lu} the comma separates the instruction @Y from the multi glyph ^lu.

Appendix A: Unsupported Characters

These characters are not supported for any reason

  • !
  • #
  • $
  • %
  • &
  • (
  • )
  • [
  • ]
  • +
  • :
  • ;
  • <
  • =
  • >
  • ?
  • ~
  • b
  • g
  • j
  • k
  • q
  • v
  • w
  • x

Appendix B: Special rules

  • ^ is a character which is only allowed to be part of a multi glyph, the string {@Y,^} is syntactically valid but it does not make sense because ^ is not a single letter glyph. An error

Appendix C: Table of Examples

Taxi Sign String

X-Plane Rendering

{@L}A

{@L}A

{@Y}{^l}C

{@Y}{^l}C

{@Y}17-35{^r}

{@Y}17-35{^r}

{@B}1

{@B}1

{@R}11-29

{@R}11-29

{@L}B7{@R}10CAT{r2}/{r3}

{@Y}{^lu}B{@L}C{@Y}C{^u}|F{^r}

image04

{@Y}WEST_APRON{^r}

 

image11

{@L}P2{@R}16-34CAT{r1}{@Y}{@@}{^lu}P2{@L}P2

Front:{@L}P2{@R}16-34CAT{r1}Rear:image12

 Appendix D: Independent glyphs

The following glyphs are of the color I. They will always produce one image and are not affected by the current color (in the way that {@Y}{^l} and {@R}{^r} produce a different image

  • critical
  • hazard
  • no-entry
  • safety

Appendix E: Hidden instructions and error reporting

The following table is a table of instructions that are only used for error reporting and internal usage. They cannot be used by hand.

I

Glyph specific

These are the signs “critical”, no-entry, safety, and hazard, cannot be declared by hand

P

Represents a pipebar, only for error reporting

Indicates the glyph is a pipe bar and should be checked if valid

X

Only for error reporting

Indicates that parsing stopped before any valid color has been found