######################################################################
# Copyright (c) 2003-2010, International Business Machines
# Corporation and others.  All Rights Reserved.
######################################################################
# Author: Alan Liu
# Created: February 20 2003
# Since: ICU 2.6
######################################################################

# This file follows the format of PropertyAliases.txt
# It contains synthetic property aliases not present
# in the UCD.  Unlike PropertyAliases.txt, it should
# NOT contain a version number.
# ================================================

# ================================================
# Miscellaneous Properties
# ================================================
scx; Script_Extensions

# ================================================
# Enumerated Properties
# ================================================

# lccc(c)=ccc(NFD(c)[0])
# tccc(c)=ccc(NFD(c)[last])
lccc; Lead_Canonical_Combining_Class
tccc; Trail_Canonical_Combining_Class

# ================================================
# Bitmask Properties
# ================================================
gcm       ; General_Category_Mask

# ================================================
# Binary Properties
# ================================================
Sensitive ; Case_Sensitive

nfdinert; NFD_Inert
nfkdinert; NFKD_Inert
nfcinert; NFC_Inert
nfkcinert; NFKC_Inert

segstart; Segment_Starter

# C/POSIX character classes that do not have Unicode property [value] aliases
# see uchar.h
n/a; alnum
n/a; blank
n/a; graph
n/a; print
n/a; xdigit
