-- Module ISO-STANDARD-9541-FONT-ATTRIBUTE-SET (ISO/IEC 9541-2:1991)
-- See also ITU-T formal description search tool
-- See also the index of all ASN.1 assignments needed in this Recommendation

--
-- Copyright © ISO/IEC 1991. This version of
-- this ASN.1 module is part of ISO/IEC 9541-2:1991;
-- see the ISO|IEC text itself for full legal notices.
-- 
ISO-STANDARD-9541-FONT-ATTRIBUTE-SET {1 0 9541 2 2} DEFINITIONS ::=
BEGIN

EXPORTS Font-Attribute-Set;

IMPORTS Structured-Name
          FROM ISO9541-SN {1 0 9541 2 3};

Font-Attribute-Set ::= SEQUENCE {
  name-prefixes                      [0] IMPLICIT SET OF Name-Prefix OPTIONAL,
  iso-standard-9541-fontname         [1] IMPLICIT Global-Name OPTIONAL,
  iso-standard-9541-fontdescription  [2] IMPLICIT Font-Description OPTIONAL,
  iso-standard-9541-wrmodes          [3] IMPLICIT Writing-Modes OPTIONAL,
  non-iso-properties                 [5] IMPLICIT Property-List OPTIONAL
}

Font-Description ::= SET {
  iso-standard-9541-dataversion      [0] IMPLICIT Data-Version OPTIONAL,
  iso-standard-9541-Standardversion  [1] IMPLICIT Cardinal OPTIONAL,
  iso-standard-9541-datasource       [2] IMPLICIT Global-Name OPTIONAL,
  iso-standard-9541-datacopyright    [3]  Message OPTIONAL,
  iso-standard-9541-dsnsource        [4] IMPLICIT Global-Name OPTIONAL,
  iso-standard-9541-dsncopyright     [5]  Message OPTIONAL,
  iso-standard-9541-relunits         [6] IMPLICIT Cardinal DEFAULT 1,
  iso-standard-9541-typeface         [7]  Message OPTIONAL,
  iso-standard-9541-fontfamily       [8]  Match-String OPTIONAL,
  iso-standard-9541-posture          [9] IMPLICIT Posture-Code OPTIONAL,
  iso-standard-9541-postureangle     [10] IMPLICIT Angle OPTIONAL,
  iso-standard-9541-weight           [11] IMPLICIT Weight-Code OPTIONAL,
  iso-standard-9541-propwidth        [12] IMPLICIT Width-Code OPTIONAL,
  iso-standard-9541-glyphcomp        [13] IMPLICIT Glyph-Complement OPTIONAL,
  iso-standard-9541-nomwrmode        [14] IMPLICIT Global-Name OPTIONAL,
  iso-standard-9541-dsnsize          [15] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-minsize          [16] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-maxsize          [17] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-capheight        [18] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-lcheight         [19] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-dsngroup         [20] IMPLICIT Design-Group OPTIONAL,
  iso-standard-9541-structure        [21] IMPLICIT Structure-Code OPTIONAL,
  iso-standard-9541-minfeatsz        [22] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-nomcapstemwidth  [23] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-nomlcstemwidth   [24] IMPLICIT Rel-Rational OPTIONAL,
  non-iso-properties                 [25] IMPLICIT Property-List OPTIONAL
}

Name-Prefix ::= SEQUENCE {
  --see NOTE 3 at the end of 6.1
  index   [0] IMPLICIT Code,
  prefix  [1] IMPLICIT Structured-Name
}

Data-Version ::= SEQUENCE {
  major      [0] IMPLICIT Cardinal OPTIONAL,
  minor      [1] IMPLICIT Cardinal OPTIONAL,
  timestamp  [2] IMPLICIT UTCTime OPTIONAL
}

Posture-Code ::= INTEGER {
  not-applicable(0), upright(1), oblique-forward(2), oblique-backward(3),
  italic-forward(4), italic-backward(5), other(6)}

Weight-Code ::= INTEGER {
  not-applicable(0), ultra-light(1), extra-light(2), light(3), semi-light(4),
  medium(5), semi-bold(6), bold(7), extra-bold(8), ultra-bold(9)}

Width-Code ::= INTEGER {
  not-applicable(0), ultra-condensed(1), extra-condensed(2), condensed(3),
  semi-condensed(4), medium(5), semi-expanded(6), expanded(7),
  extra-expanded(8), ultra-expanded(9)}

Glyph-Complement ::= SEQUENCE {
  -- at least one included glyph list or at least one
  -- included glyph collection list is mandatory
  iso-standard-9541-numglyphs     [0] IMPLICIT Cardinal OPTIONAL,
  iso-standard-9541-incglyphcols  [1] IMPLICIT SET OF Global-Name OPTIONAL,
  -- at least one is required
  iso-standard-9541-excglyphcols  [2] IMPLICIT SET OF Global-Name OPTIONAL,
  -- at least one is required
  iso-standard-9541-incglyphs     [3] IMPLICIT SET OF Global-Name OPTIONAL,
  -- at least one is required
  iso-standard-9541-excglyphs     [4] IMPLICIT SET OF Global-Name OPTIONAL,
  -- at least one is required
  non-iso-properties              [5] IMPLICIT Property-List OPTIONAL
}

Design-Group ::= SEQUENCE {
  -- see 9541-1 Annex-A for code values
  group-code           [0] IMPLICIT Code,
  subgroup-code        [1] IMPLICIT Code,
  specific-group-code  [2] IMPLICIT Code
}

Structure-Code ::= INTEGER {not-applicable(0), solid(1), outline(2)}

Writing-Modes ::= SET {
  iso-standard-9541-wrmode  [0] IMPLICIT SET OF Writing-Mode OPTIONAL,
  non-iso-properties        [1] IMPLICIT Property-List OPTIONAL
}

Writing-Mode ::= SEQUENCE {
  iso-standard-9541-wrmodename  [0] IMPLICIT Global-Name,
  wrmode-properties             [1] IMPLICIT Modal-Properties
}

Modal-Properties ::= SET {
  iso-standard-9541-nomescdir      [0] IMPLICIT Angle OPTIONAL,
  iso-standard-9541-escclass       [1] IMPLICIT Esc-Class-Code OPTIONAL,
  iso-standard-9541-avgescx        [2] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-avgescy        [3] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-avglcescx      [4] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-avglcescy      [5] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-avgcapescx     [6] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-avgcapescy     [7] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-tabescx        [8] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-tabescy        [9] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-maxfontext     [10] IMPLICIT Max-Extents OPTIONAL,
  iso-standard-9541-sectors        [11] IMPLICIT Sectors OPTIONAL,
  iso-standard-9541-escadjs        [12] IMPLICIT SET OF Adjusts OPTIONAL,
  iso-standard-9541-minescadjsze   [13] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-maxescadjsze   [14] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-scores         [15] IMPLICIT Scores OPTIONAL,
  iso-standard-9541-vscripts       [16] IMPLICIT Variant-Scripts OPTIONAL,
  iso-standard-9541-minlinesp      [17] IMPLICIT Alignment-Spacing OPTIONAL,
  iso-standard-9541-minanascale    [18] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-maxanascale    [19] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-nomalign       [20] IMPLICIT Global-Name OPTIONAL,
  iso-standard-9541-alignmodes     [21] IMPLICIT Alignment-Modes OPTIONAL,
  iso-standard-9541-copyfits       [22] IMPLICIT Copyfits OPTIONAL,
  iso-standard-9541-dsnwordadd     [23] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-dsnwordampl    [24] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-minwordadd     [25] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-minwordampl    [26] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-maxwordadd     [27] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-maxwordampl    [28] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-dsnletteradd   [29] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-dsnletterampl  [30] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-minletteradd   [31] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-minletterampl  [32] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-maxletteradd   [33] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-maxletterampl  [34] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-glyphmetrics   [35] IMPLICIT Glyph-Metrics OPTIONAL,
  non-iso-properties               [36] IMPLICIT Property-List OPTIONAL
}

Esc-Class-Code ::= INTEGER {not-applicable(0), monospace(1), proportional(2)}

Max-Extents ::= SEQUENCE {
  max-minx  [0] IMPLICIT Rel-Rational,
  max-miny  [1] IMPLICIT Rel-Rational,
  max-maxx  [2] IMPLICIT Rel-Rational,
  max-maxy  [3] IMPLICIT Rel-Rational
}

Sectors ::= SET {
  iso-standard-9541-sector  [0] IMPLICIT SEQUENCE OF Sector OPTIONAL,
  non-iso-properties        [1] IMPLICIT Property-List OPTIONAL
}

Sector ::= SEQUENCE {
  sector-left   [0] IMPLICIT Rel-Rational,
  sector-right  [1] IMPLICIT Rel-Rational
}

Adjusts ::= SET {
  iso-standard-9541-adjust  [0] IMPLICIT SET OF Adjust,
  non-iso-properties        [1] IMPLICIT Property-List OPTIONAL
}

Adjust ::= SET {
  iso-standard-9541-escadjname  [0] IMPLICIT Global-Name,
  adjust-properties             [1] IMPLICIT Adjust-Properties
}

Adjust-Properties ::= SET {
  iso-standard-9541-cpea  [0] IMPLICIT CPEA-Properties OPTIONAL,
  iso-standard-9541-sec   [1] IMPLICIT SEC-Properties OPTIONAL,
  non-iso-properties      [2] IMPLICIT Property-List OPTIONAL
}

CPEA-Properties ::= SET {
  iso-standard-9541-ncpeaforwd   [0] IMPLICIT Cardinal,
  iso-standard-9541-ncpeabackwd  [1] IMPLICIT Cardinal,
  iso-standard-9541-cpeax        [2]  SEQUENCE OF Rel-Rational OPTIONAL,
  -- at least one required
  iso-standard-9541-cpeay        [3]  SEQUENCE OF Rel-Rational OPTIONAL,
  non-iso-properties             [4] IMPLICIT Property-List OPTIONAL
}

SEC-Properties ::= SET {
  iso-standard-9541-secx
    [0]  SEQUENCE OF
           SEQUENCE {-- at least one required
                     rational      [0] IMPLICIT Rational,
                     rel-rational  [1] IMPLICIT Rel-Rational} OPTIONAL,
  iso-standard-9541-secy
    [1]  SEQUENCE OF
           SEQUENCE {-- at least one required
                     rational      [0] IMPLICIT Rational,
                     rel-rational  [1] IMPLICIT Rel-Rational} OPTIONAL,
  non-iso-properties      [2] IMPLICIT Property-List OPTIONAL
}

Scores ::= SET {
  iso-standard-9541-Score  [0] IMPLICIT SET OF Score OPTIONAL,
  non-iso-properties       [1] IMPLICIT Property-List OPTIONAL
}

Score ::= SEQUENCE {
  iso-standard-9541-scorename  [0] IMPLICIT Global-Name,
  score-property-list          [1] IMPLICIT Score-Properties
}

Score-Properties ::= SET {
  iso-standard-9541-scoreoffsetx  [0] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-scoreoffsety  [1] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-scorethick    [2] IMPLICIT Rel-Rational OPTIONAL,
  non-iso-properties              [3] IMPLICIT Property-List OPTIONAL
}

Variant-Scripts ::= SET {
  iso-standard-9541-vscript  [0] IMPLICIT SET OF Vscript OPTIONAL,
  non-iso-properties         [1] IMPLICIT Property-List OPTIONAL
}

Vscript ::= SEQUENCE {
  iso-standard-9541-vsname  [0] IMPLICIT Global-Name,
  vscript-property-list     [1] IMPLICIT Vscript-Properties
}

Vscript-Properties ::= SET {
  iso-standard-9541-vsoffsetx  [0] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-vsoffsety  [1] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-vsscalex   [2] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-vsscaley   [3] IMPLICIT Rational OPTIONAL,
  non-iso-properties           [4] IMPLICIT Property-List OPTIONAL
}

Alignment-Spacing ::= SEQUENCE {
  minlinesp-left   [0] IMPLICIT Rel-Rational,
  minlinesp-right  [1] IMPLICIT Rel-Rational
}

Alignment-Modes ::= SET {
  iso-standard-9541-align  [0] IMPLICIT SET OF Alignment OPTIONAL,
  non-iso-properties       [1] IMPLICIT Property-List OPTIONAL
}

Alignment ::= SEQUENCE {
  iso-standard-9541-alignname  [0] IMPLICIT Global-Name,
  alignment-property-list      [1] IMPLICIT Align-Properties
}

Align-Properties ::= SET {
  iso-standard-9541-alignoffsetx  [0] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-alignoffsety  [1] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-alignscalex   [2] IMPLICIT Rational OPTIONAL,
  iso-standard-9541-alignscaley   [3] IMPLICIT Rational OPTIONAL,
  non-iso-properties              [4] IMPLICIT Property-List OPTIONAL
}

Copyfits ::= SET {
  iso-standard-9541-copyfit  [0] IMPLICIT SET OF Copyfit OPTIONAL,
  non-iso-properties         [1] IMPLICIT Property-List OPTIONAL
}

Copyfit ::= SEQUENCE {
  iso-standard-9541-copyfitname  [0] IMPLICIT Global-Name,
  copyfit-properties             [1] IMPLICIT Copyfit-Properties
}

Copyfit-Properties ::= SET {
  iso-standard-9541-copyfitmeasure  [0] IMPLICIT Rational OPTIONAL,
  non-iso-properties                [1] IMPLICIT Property-List OPTIONAL
}

Glyph-Metrics ::= SET {
  iso-standard-9541-gmetric  [0] IMPLICIT SET OF Glyph-Property-List,
  non-iso-properties         [1] IMPLICIT Property-List OPTIONAL
}

Glyph-Property-List ::= SEQUENCE {
  iso-standard-9541-gname  [0] IMPLICIT Global-Name,
  glyph-properties         [1] IMPLICIT Glyph-Properties
}

Glyph-Properties ::= SET {
  iso-standard-9541-px     [0] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-py     [1] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-ex     [2] IMPLICIT Rel-Rational,
  iso-standard-9541-ey     [3] IMPLICIT Rel-Rational,
  iso-standard-9541-ext    [4] IMPLICIT Extents,
  iso-standard-9541-lgs    [5] IMPLICIT Ligatures OPTIONAL,
  iso-standard-9541-peas   [6] IMPLICIT P-Adjusts OPTIONAL,
  iso-standard-9541-cpeai  [7] IMPLICIT C-Indicator OPTIONAL,
  iso-standard-9541-eai    [8] IMPLICIT E-Code OPTIONAL,
  iso-standard-9541-minex  [9] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-miney  [10] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-maxex  [11] IMPLICIT Rel-Rational OPTIONAL,
  iso-standard-9541-maxey  [12] IMPLICIT Rel-Rational OPTIONAL,
  non-iso-properties       [13] IMPLICIT Property-List OPTIONAL
}

Extents ::= SET {
  minx  [0] IMPLICIT Rel-Rational OPTIONAL,
  miny  [1] IMPLICIT Rel-Rational OPTIONAL,
  maxx  [2] IMPLICIT Rel-Rational OPTIONAL,
  maxy  [3] IMPLICIT Rel-Rational OPTIONAL
}

Ligatures ::= SET {
  iso-standard-9541-lg  [0] IMPLICIT SET OF Ligature OPTIONAL,
  non-iso-properties    [1] IMPLICIT Property-List OPTIONAL
}

Ligature ::= SET {
  iso-standard-9541-lgn   [0] IMPLICIT Global-Name,
  iso-standard-9541-lgsn  [1]  SEQUENCE OF Global-Name
}

P-Adjusts ::= SET {
  iso-standard-9541-pea  [0] IMPLICIT SET OF P-Adjust OPTIONAL,
  non-iso-properties     [1] IMPLICIT Property-List OPTIONAL
}

P-Adjust ::= SEQUENCE {
  iso-standard-9541-pean  [0] IMPLICIT Global-Name,
  p-adjust-property-list  [1] IMPLICIT P-Adjust-Properties
}

P-Adjust-Properties ::= SET {
  iso-standard-9541-peax
    [0]  SEQUENCE OF
           SEQUENCE {-- at least one required
                     global-name   [0] IMPLICIT Global-Name,
                     rel-rational  [1] IMPLICIT Rel-Rational} OPTIONAL,
  iso-standard-9541-peay
    [1]  SEQUENCE OF
           SEQUENCE {-- at least one required
                     global-name   [0] IMPLICIT Global-Name,
                     rel-rational  [1] IMPLICIT Rel-Rational} OPTIONAL,
  iso-standard-9541-speaforwdx   [2]  SEQUENCE OF Rel-Rational OPTIONAL,
  iso-standard-9541-speaforwdy   [3]  SEQUENCE OF Rel-Rational OPTIONAL,
  iso-standard-9541-speabackwdx  [4]  SEQUENCE OF Rel-Rational OPTIONAL,
  iso-standard-9541-speabackwdy  [5]  SEQUENCE OF Rel-Rational OPTIONAL,
  non-iso-properties             [6] IMPLICIT Property-List OPTIONAL
}

C-Indicator ::= SEQUENCE {
  c-forward   [0] IMPLICIT Cardinal,
  c-backward  [1] IMPLICIT Cardinal
}

E-Code ::= INTEGER {
  not-applicable(0), letter-space(1), word-space(2), no-adjust(3)}

-- The following Data Types are used in the above structures
-- The following Data Types are used in the above structures
Property ::= SEQUENCE {
  property-name   [0]  Global-Name,
  property-value  [1]  Property-Value
}

Property-Value ::= CHOICE {
  value                  [0]  Value,
  value-list             [1]  Value-List,
  ordered-value-list     [2]  Ordered-Value-List,
  property-list          [3]  Property-List,
  ordered-property-list  [4]  Ordered-Property-List
}

Value-List ::= SET OF Value

Ordered-Value-List ::= SEQUENCE OF Value

Property-List ::= SET OF Property

Ordered-Property-List ::= SEQUENCE OF Property

Value ::= CHOICE {
  global-Name       [0]  Global-Name,
  match-String      [1]  Match-String,
  message           [2]  Message,
  octetString       [3]  OCTET STRING,
  boolean           [4]  BOOLEAN,
  integer           [5]  Integer,
  cardinal          [6]  Cardinal,
  code              [7]  Code,
  rational          [8]  Rational,
  rel-Rational      [9]  Rel-Rational,
  angle             [10]  Angle,
  proprietary-Data  [11]  Proprietary-Data
}

Global-Name ::= SEQUENCE {
  -- see global name note at the end of clause 6.1 
  prefix-index  [0] IMPLICIT Code OPTIONAL,
  name-value    [1] IMPLICIT Structured-Name
}

Match-String ::= CHOICE {
  numeric    [0]  NumericString,
  printable  [1]  PrintableString,
  teletex    [2]  TeletexString,
  videotex   [3]  VideotexString,
  visible    [4]  VisibleString,
  ia5        [5]  IA5String,
  graphic    [6]  GraphicString,
  general    [7]  GeneralString
}

Message ::= CHOICE {
  numeric    [0]  NumericString,
  printable  [1]  PrintableString,
  teletex    [2]  TeletexString,
  videotex   [3]  VideotexString,
  visible    [4]  VisibleString,
  ia5        [5]  IA5String,
  graphic    [6]  GraphicString,
  general    [7]  GeneralString
}

Integer ::= INTEGER {first(-2147483648), last(2147483647)}

Cardinal ::= INTEGER {first(0), last(4294967295)}

Code ::= INTEGER {first(0), last(255)}

Rational ::= SEQUENCE {
  numerator    [0] IMPLICIT INTEGER,
  denominator  [1] IMPLICIT INTEGER {first(1), last(2147483647)} OPTIONAL
}

-- denominator defaults to 1
Rel-Rational ::= Rational

-- expresses glyph coordinate units
-- denominator defaults to relunits 
Angle ::=
  Rational

-- expresses units of degrees, with a
-- value range of -360 to +360
-- denominator defaults to 1
Proprietary-Data ::= SEQUENCE {
  prop-data-message  [0]  Message OPTIONAL,
  prop-data-key      [1] IMPLICIT OCTET STRING OPTIONAL,
  prop-data          [2] IMPLICIT OCTET STRING
}

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D