For manipulation of these components Icon abstracts a complex set of internal structures into a single set of fifty six attributes and associated values. In any case, the basic simplicity of the attribute-value model provides a conceptual framework that is independent of the window system and is easily learned. The most important advantage of distinguishing canvas from context is to allow multiple contexts, each with varying attribute values, to be used on a given window without the necessity to save and restore relevant attributes. Color and Font Naming Colors and fonts pose some of the most serious portability issues in the Icon graphics facilities, because the variation in color capabilities and font support among platforms is large. The problem of variation in color naming is addressed by a standard set of color names defined by the language.
Fonts pose an even greater problem than colors for portable applications.
Icon can use whatever fonts are available on a given system, but the application writer must determine what fonts to use on the systems the program will run on, or write code that works with user-selected fonts. The portable names are typewriter, mono, serif, and sans and application programmers can expect them to be available in many type sizes. Some simple examples illustrate various capabilities and the underlying philosopy adopted for graphics in Icon. It is beyond the scope of this paper to describe the Icon language itself, so the examples here rely on the reader's familiarity with C or Pascal. The major contentions supported by the examples are that a broad class of windowing applications need not be event-driven or based on callback procedures, and that interactive applications based on keystroke input need not be rewritten in order to incorporate mouse input.