A machine readable medium storing a navigation application for execution by at least one processing unit of a device, the navigation application being configured to: receive route data and encoded juncture data from a network interface of the device, the encoded juncture data describing all junctures along the route from a first location to a second location, wherein the data for each juncture comprises geometry information identifying branches of the respective juncture and a set of angles at which the branches enter/exit the respective juncture; the navigation application comprising: a juncture decoder for synthesizing, for each juncture in the route from the route data and the encoded juncture data, instruction elements for performing a maneuver at a juncture of the junctures, each instruction element comprising a text string that describes a different aspect of the maneuver to be performed at the juncture; an instruction generator for generating a plurality of ranked text instruction variants for a same maneuver, each instruction variant comprising one or more of the instruction elements for the juncture at which the maneuver is to be performed, wherein some of the instruction variants have different lengths; a context analyzer for identifying a display context in which to display an instruction variant for a maneuver, wherein the display context corresponds to an amount of display space that is allocated for displaying an instruction variant; an instruction retriever for selecting an instruction variant of the plurality of instruction variants for the maneuver based on the identified display context; a sign generator for generating a sign using the instruction variant selected by the instruction retriever; and a drawing engine for incorporating the sign generated by the sign generator into a display to output to a device display of the device; characterized in that: the text instruction variants for each maneuver are ranked based on the amount of information conveyed in each text instruction variant, and selecting one of the plurality of instruction variants comprises determining a maximum length for the instruction variant and choosing the highest ranked of the instruction variants for the maneuver that fits within the amount of display space. a juncture decoder for synthesizing, for each juncture in the route from the route data and the encoded juncture data, instruction elements for performing a maneuver at a juncture of the junctures, each instruction element comprising a text string that describes a different aspect of the maneuver to be performed at the juncture; an instruction generator for generating a plurality of ranked text instruction variants for a same maneuver, each instruction variant comprising one or more of the instruction elements for the juncture at which the maneuver is to be performed, wherein some of the instruction variants have different lengths; a context analyzer for identifying a display context in which to display an instruction variant for a maneuver, wherein the display context corresponds to an amount of display space that is allocated for displaying an instruction variant; an instruction retriever for selecting an instruction variant of the plurality of instruction variants for the maneuver based on the identified display context; a sign generator for generating a sign using the instruction variant selected by the instruction retriever; and a drawing engine for incorporating the sign generated by the sign generator into a display to output to a device display of the device; the text instruction variants for each maneuver are ranked based on the amount of information conveyed in each text instruction variant, and selecting one of the plurality of instruction variants comprises determining a maximum length for the instruction variant and choosing the highest ranked of the instruction variants for the maneuver that fits within the amount of display space.