Up-case Table

Up-case table contains data used forconversion from lower-case to upper-case characters. File Name Directory Entry uses Unicode characters and preserves case when storing file name.

exFAT itself is case insensitive, so it needs to compare file names converted to the upper-case during search operations. Normally Up-case table is located right after Bitmap Allocation table but can be placed anywhere is the cluster heap. It has a corresponding primary critical directory entry in the root directory.

Up-case Table is an array of Unicode characters, an index of which represents the Unicode characters to be up-cased and the value is the target up-cased character. The Up-case Table shall contain at least 128 mandatory Unicode mappings.

If implementation supports only mandatory 128 characters it may ignore the rest of Up-case Table.

When up-casing file names such implementation shall up-case only characters from the mandatory 128 characters set and leave other characters intact.

When comparing file names which are different only by characters in non-mandatory set, those file names shall be treated as equal.

Index

Value

Comments

0x0000

0x0000

 

0x0001

0x0001

 

0x0002

0x0002

 

...

...

 

0x0041

0x0041

'A' is mapped into itself (identity mapping)

0x0042

0x0042

'B' is mapped into itself

...

...

...

0x061

0x041

'a' is mapped into 'A' (non-identity mapping)

0x062

0x042

'b' is mapped into 'B'

0x061

0x041

'a' is mapped into 'A' (non-identity mapping)

Up-case Table can be written in compressed format where the series of identity mappings is represented with 0xFFFF followed by the number of identity mappings.

Mandatory First 128 Up-case Table Entries

Index

Table Entries

0000

0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F

0010

0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E 001F

0020

0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 002A 002B 002C 002D 002E 002F

0030

0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003A 003B 003C 003D 003E 003F

0040

0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F

0050

0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F

0060

0060 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F

0070

0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 007B 007C 007D 007E 007F

Non-identity mappings are highlighted.

Mandatory First 128 Up-case Table Entries in compressed format

Index

Table Entries

0000

FFFF 0061 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F

0010

0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A FFFF 0005

The first highlighted group describes that first 0x0061 characters (0x0000-0x0060) have identity mappings.
The next character after it (0x0061) maps to 0x0041 etc. until the next compressed group is encountered.

previous < content > next