Sather Home Page

Section 4.3:
Culture Description File

The Culture Description file contains all of the cultural specification components defined in ISO/IEC 14652 except for the string ordering component. Despite the complexity of data structures specified in the following, in practice it is the smallest of the three binary file formats.

Header
Entity Octets Comment
code kind 1 class CODE_KINDS
<Char Groups>
<Cash Data>
<Time Data>
<Number Data>
<Answers>
paper size present 1 class BOOL
[<Paper Size>]
names present 1 class BOOL
[<Name Data>]
address present 1 class BOOL
[<Address Data>]
phone present 1 class BOOL
[<Phone Data>]
units present 1 class BOOL
[<Measurement Units>]
version present 1 class BOOL
[<Version Data>]
Char Groups
Entity Octets Name Comment
classes count 1 a
  >a times<
 
Entity Octets Comment
class kind 1 class CODE_KINDS
<One Class>
"0xffffffff" 4   a flag
map count 1 b
  >b times<
 
Entity Octets
map kind 1 class CHAR_MAPPINGS
<One Map>
"0xffffffff" 4   a flag
One Class
Entity Octets Name
code size (octets) 1 a
range count 1 b
  >b times<
 
Entity Octets
range low a
range high a
One Map
Entity Octets Name
code size (octets) 1 a
maplet count 1 b
  >b times<
 
Entity Octets
base code a
offset a
count a

Note that in the above structure the offset is a signed number formed from the given number of octets.

Cash Data
Entity Octets Comment
<Cash Format>   local
<Cash Format>   international
<Cash Format>   duo local
<Cash Format>   duo international
Sized(valid from date)
Sized(valid to date)
Sized(duo valid from date)
Sized(duo valid to date)
exchange rate numerator 4
exchange rate denominator 4
Cash Format
Entity Octets Name Comment
code kind 1   class CODE_KINDS
Sized(decimal mark)
Sized(thousands separator)
Sized(positive sign)
Sized(negative sign)
section count 1 a
  >a times<
 
Entity Octets
section digit count 1
Sized(currency symbol)
places precision 1
plus symbol precedes 1   class BOOL
plus separation spec 1   class MON_SPACING
plus sign position 1   class SIGN_POSITIONS
minus symbol precedes 1   class BOOL
minus separation spec 1   class MON_SPACING
minus sign position 1   class SIGN_POSITIONS

Note that there are a number of single octet logical values in the time and date structure which have the bit-pattern 0x1 if true - in which case the following entity is next. If the value is 0x0 (false) then the following entity is omitted from the file. The entity is written in square brackets to indicate this possibility.

Time Data
Entity Octets Comment
date format present 1
[<Date/Time Format>]   date
time format present 1
[<Date/Time Format>]   time
date/time format present 1
[<Date/Time Format>]   date and time
era date format present 1
[<Date/Time Format>]   era date
era format present 1
[<Date/Time Format>]   era
era year format present 1
[<Date/Time Format>]   era year
relative time format present 1
[<Date/Time Format>]   relative time
weekday count 1
first day in week 1
first week contains 1
first day display 1
first workday 1
calendar direction 1 class CAL_DISPLAY_ORDERS
time zones present 1
[<Time Zones>]
alt digits present 1
[<Alternate Digits>]
Date/Time Format
Entity Octets Name Comment
code kind 1   class CODE_KINDS
Sized(prefix)
element count 1 a
  >a times<
 
Entity Octets Comments
modifier 1 class DT_CODES
component 1 class DT_CODES
Sized(separator)
Time Zones
Entity Octets Name
time zone count 1 a
  >a times<
 
Entity
<Time Zone>
Time Zone
Entity Octets Comment
Sized(standard time name)
<Elapsed Time>   standard time offset
standard offset added 1 if West of UTC
Sized(daylight saving time name)
<Elapsed Time>   daylight saving time offset
daylight saving offset added 1 if West of UTC
rule count 1 a
  >a times<
 
Entity
<TZ Rule>
Elapsed Time
Entity Octets
days since 31 Dec 1899 4
milliseconds 4

Note that the days component of the elapsed time will inevitable be zero in the context of a time zone specification!

TZ Rule
Entity Octets Comment
range low 4
range high 4
<Rule Element>   start DST
<Rule Element>   stop DST
Rule Element
Entity Octets Comments
day number 2 in week
week number 1 in month
month 1 in year
time of day 4 in milliseconds
Alternate Digits
Entity Octets Name
digit count 1 a
  >a times<
 
Entity
Sized(digit code)

Alternate digits are given in sequence from the encoding for the numeric value zero upwards.

Number Format
Entity Octets Name Comments
code kind 1   class CODE_KINDS
Sized(decimal mark)
Sized(thousands separator)
number of sections 1 a
  >a times<
 
Entity Octets
section length (chars)
Answers
Reg Expression
Sized(Yes)
Sized(No)
Paper Size
Entity Octets Comments
height 4 in millimetres
width 4 in millimetres
Name Data
Entity Octets
format present 1
[<Name Format>]
cardinality 1
Sized(General)
Sized(Mr)
Sized(Mrs)
Sized(Miss)
Sized(Ms)
Name Format
Entity Octets Name Comments
code kind 1   class CODE_KINDS
Sized(prefix)
component count 1 a
  >a times<
 
Entity Octets Comments
modifier code 1 class NAME_CODES
component code 1 class NAME_CODES
Sized(separator)
Address Data
Entity Octets Name Comments
<Address Format>
code kind 1   class CODE_KINDS
component count 1 a
  >a times<
 
Entity Octets Comments
key 1 class ADDRESS_KEYS
Sized(data string)
Address Format
Entity Octets Name Comments
code kind 1   class CODE_KINDS
Sized(prefix)
component count 1 a
  >a times<
 
Entity Octets Comments
modifier code 1 class ADDR_CODES
component code 1 class ADDR_CODES
Sized(separator)
Phone Data
Entity Octets Comment
international format present 1 class BOOL
[<Phone Format>]   international
domestic format present 1 class BOOL
[<Phone Format>]   domestic
Sized(foreign access)
Sized(domestic access)
Phone Format
Entity Octets Name Comments
code kind 1   class CODE_KINDS
Sized(prefix)
component count 1 a
  >a times<
 
Entity Octets Comments
modifier code 1 class PHONE_CODES
component code 1 class PHONE_CODES
Sized(separator)
Version Data
Entity Octets Name Comment
code kind 1   class CODE_KIND
element count 1 a
  >a times<
 
Entity
Sized(element)
category count 1 b
  >b times<
 
Entity Octets Comment
category spec 1 class CATEGORIES
date 4   days since 31 Dec 1899

Specification Index Resources Index
Comments or enquiries should be made to Keith Hopper.
Page last modified: Tuesday, 24 October 2000.
Produced with Amaya