#
# fontconfig/fc-lang/emoji.orth
#
# Copyright © 2002 Keith Packard
# Copyright © 2017 Red Hat, Inc.
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of the author(s) not be used in
# advertising or publicity pertaining to distribution of the software without
# specific, written prior permission.  The authors make no
# representations about the suitability of this software for any purpose.  It
# is provided "as is" without express or implied warranty.
#
# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
# EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# Emoji
#
# http://unicode.org/Public/emoji/5.0/emoji-data.txt
# with anything after Unicode 6.0 commented out.
#
## Emoji Presentation
231A..231B    	#  1.1  [2] (⌚..⌛)    watch..hourglass
23E9..23EC    	#  6.0  [4] (⏩..⏬)    fast-forward button..fast down button
23F0          	#  6.0  [1] (⏰)       alarm clock
23F3          	#  6.0  [1] (⏳)       hourglass with flowing sand
25FD..25FE    	#  3.2  [2] (◽..◾)    white medium-small square..black medium-small square
2614..2615    	#  4.0  [2] (☔..☕)    umbrella with rain drops..hot beverage
2648..2653    	#  1.1 [12] (♈..♓)    Aries..Pisces
267F          	#  4.1  [1] (♿)       wheelchair symbol
2693          	#  4.1  [1] (⚓)       anchor
26A1          	#  4.0  [1] (⚡)       high voltage
26AA..26AB    	#  4.1  [2] (⚪..⚫)    white circle..black circle
26BD..26BE    	#  5.2  [2] (⚽..⚾)    soccer ball..baseball
26C4..26C5    	#  5.2  [2] (⛄..⛅)    snowman without snow..sun behind cloud
26CE          	#  6.0  [1] (⛎)       Ophiuchus
26D4          	#  5.2  [1] (⛔)       no entry
26EA          	#  5.2  [1] (⛪)       church
26F2..26F3    	#  5.2  [2] (⛲..⛳)    fountain..flag in hole
26F5          	#  5.2  [1] (⛵)       sailboat
26FA          	#  5.2  [1] (⛺)       tent
26FD          	#  5.2  [1] (⛽)       fuel pump
2705          	#  6.0  [1] (✅)       white heavy check mark
270A..270B    	#  6.0  [2] (✊..✋)    raised fist..raised hand
2728          	#  6.0  [1] (✨)       sparkles
274C          	#  6.0  [1] (❌)       cross mark
274E          	#  6.0  [1] (❎)       cross mark button
2753..2755    	#  6.0  [3] (❓..❕)    question mark..white exclamation mark
2757          	#  5.2  [1] (❗)       exclamation mark
2795..2797    	#  6.0  [3] (➕..➗)    heavy plus sign..heavy division sign
27B0          	#  6.0  [1] (➰)       curly loop
27BF          	#  6.0  [1] (➿)       double curly loop
2B1B..2B1C    	#  5.1  [2] (⬛..⬜)    black large square..white large square
2B50          	#  5.1  [1] (⭐)       white medium star
2B55          	#  5.2  [1] (⭕)       heavy large circle
1F004         	#  5.1  [1] (🀄)       mahjong red dragon
1F0CF         	#  6.0  [1] (🃏)       joker
1F18E         	#  6.0  [1] (🆎)       AB button (blood type)
1F191..1F19A  	#  6.0 [10] (🆑..🆚)    CL button..VS button
1F1E6..1F1FF  	#  6.0 [26] (🇦..🇿)    regional indicator symbol letter a..regional indicator symbol letter z
1F201         	#  6.0  [1] (🈁)       Japanese “here” button
1F21A         	#  5.2  [1] (🈚)       Japanese “free of charge” button
1F22F         	#  5.2  [1] (🈯)       Japanese “reserved” button
1F232..1F236  	#  6.0  [5] (🈲..🈶)    Japanese “prohibited” button..Japanese “not free of charge” button
1F238..1F23A  	#  6.0  [3] (🈸..🈺)    Japanese “application” button..Japanese “open for business” button
1F250..1F251  	#  6.0  [2] (🉐..🉑)    Japanese “bargain” button..Japanese “acceptable” button
1F300..1F320  	#  6.0 [33] (🌀..🌠)    cyclone..shooting star
# 1F32D..1F32F  	#  8.0  [3] (🌭..🌯)    hot dog..burrito
1F330..1F335  	#  6.0  [6] (🌰..🌵)    chestnut..cactus
1F337..1F37C  	#  6.0 [70] (🌷..🍼)    tulip..baby bottle
# 1F37E..1F37F  	#  8.0  [2] (🍾..🍿)    bottle with popping cork..popcorn
1F380..1F393  	#  6.0 [20] (🎀..🎓)    ribbon..graduation cap
1F3A0..1F3C4  	#  6.0 [37] (🎠..🏄)    carousel horse..person surfing
# 1F3C5         	#  7.0  [1] (🏅)       sports medal
1F3C6..1F3CA  	#  6.0  [5] (🏆..🏊)    trophy..person swimming
# 1F3CF..1F3D3  	#  8.0  [5] (🏏..🏓)    cricket..ping pong
1F3E0..1F3F0  	#  6.0 [17] (🏠..🏰)    house..castle
# 1F3F4         	#  7.0  [1] (🏴)       black flag
# 1F3F8..1F3FF  	#  8.0  [8] (🏸..🏿)    badminton..dark skin tone
1F400..1F43E  	#  6.0 [63] (🐀..🐾)    rat..paw prints
1F440         	#  6.0  [1] (👀)       eyes
1F442..1F4F7  	#  6.0[182] (👂..📷)    ear..camera
# 1F4F8         	#  7.0  [1] (📸)       camera with flash
1F4F9..1F4FC  	#  6.0  [4] (📹..📼)    video camera..videocassette
# 1F4FF         	#  8.0  [1] (📿)       prayer beads
1F500..1F53D  	#  6.0 [62] (🔀..🔽)    shuffle tracks button..down button
# 1F54B..1F54E  	#  8.0  [4] (🕋..🕎)    kaaba..menorah
1F550..1F567  	#  6.0 [24] (🕐..🕧)    one o’clock..twelve-thirty
# 1F57A         	#  9.0  [1] (🕺)       man dancing
# 1F595..1F596  	#  7.0  [2] (🖕..🖖)    middle finger..vulcan salute
# 1F5A4         	#  9.0  [1] (🖤)       black heart
1F5FB..1F5FF  	#  6.0  [5] (🗻..🗿)    mount fuji..moai
# 1F600         	#  6.1  [1] (😀)       grinning face
1F601..1F610  	#  6.0 [16] (😁..😐)    grinning face with smiling eyes..neutral face
# 1F611         	#  6.1  [1] (😑)       expressionless face
1F612..1F614  	#  6.0  [3] (😒..😔)    unamused face..pensive face
# 1F615         	#  6.1  [1] (😕)       confused face
1F616         	#  6.0  [1] (😖)       confounded face
# 1F617         	#  6.1  [1] (😗)       kissing face
1F618         	#  6.0  [1] (😘)       face blowing a kiss
# 1F619         	#  6.1  [1] (😙)       kissing face with smiling eyes
1F61A         	#  6.0  [1] (😚)       kissing face with closed eyes
# 1F61B         	#  6.1  [1] (😛)       face with stuck-out tongue
1F61C..1F61E  	#  6.0  [3] (😜..😞)    face with stuck-out tongue & winking eye..disappointed face
# 1F61F         	#  6.1  [1] (😟)       worried face
1F620..1F625  	#  6.0  [6] (😠..😥)    angry face..disappointed but relieved face
# 1F626..1F627  	#  6.1  [2] (😦..😧)    frowning face with open mouth..anguished face
1F628..1F62B  	#  6.0  [4] (😨..😫)    fearful face..tired face
# 1F62C         	#  6.1  [1] (😬)       grimacing face
1F62D         	#  6.0  [1] (😭)       loudly crying face
# 1F62E..1F62F  	#  6.1  [2] (😮..😯)    face with open mouth..hushed face
1F630..1F633  	#  6.0  [4] (😰..😳)    face with open mouth & cold sweat..flushed face
# 1F634         	#  6.1  [1] (😴)       sleeping face
1F635..1F640  	#  6.0 [12] (😵..🙀)    dizzy face..weary cat face
# 1F641..1F642  	#  7.0  [2] (🙁..🙂)    slightly frowning face..slightly smiling face
# 1F643..1F644  	#  8.0  [2] (🙃..🙄)    upside-down face..face with rolling eyes
1F645..1F64F  	#  6.0 [11] (🙅..🙏)    person gesturing NO..folded hands
1F680..1F6C5  	#  6.0 [70] (🚀..🛅)    rocket..left luggage
# 1F6CC         	#  7.0  [1] (🛌)       person in bed
# 1F6D0         	#  8.0  [1] (🛐)       place of worship
# 1F6D1..1F6D2  	#  9.0  [2] (🛑..🛒)    stop sign..shopping cart
# 1F6EB..1F6EC  	#  7.0  [2] (🛫..🛬)    airplane departure..airplane arrival
# 1F6F4..1F6F6  	#  9.0  [3] (🛴..🛶)    kick scooter..canoe
# 1F6F7..1F6F8  	# 10.0  [2] (🛷..🛸)    sled..flying saucer
# 1F910..1F918  	#  8.0  [9] (🤐..🤘)    zipper-mouth face..sign of the horns
# 1F919..1F91E  	#  9.0  [6] (🤙..🤞)    call me hand..crossed fingers
# 1F91F         	# 10.0  [1] (🤟)       love-you gesture
# 1F920..1F927  	#  9.0  [8] (🤠..🤧)    cowboy hat face..sneezing face
# 1F928..1F92F  	# 10.0  [8] (🤨..🤯)    face with raised eyebrow..exploding head
# 1F930         	#  9.0  [1] (🤰)       pregnant woman
# 1F931..1F932  	# 10.0  [2] (🤱..🤲)    breast-feeding..palms up together
# 1F933..1F93A  	#  9.0  [8] (🤳..🤺)    selfie..person fencing
# 1F93C..1F93E  	#  9.0  [3] (🤼..🤾)    people wrestling..person playing handball
# 1F940..1F945  	#  9.0  [6] (🥀..🥅)    wilted flower..goal net
# 1F947..1F94B  	#  9.0  [5] (🥇..🥋)    1st place medal..martial arts uniform
# 1F94C         	# 10.0  [1] (🥌)       curling stone
# 1F950..1F95E  	#  9.0 [15] (🥐..🥞)    croissant..pancakes
# 1F95F..1F96B  	# 10.0 [13] (🥟..🥫)    dumpling..canned food
# 1F980..1F984  	#  8.0  [5] (🦀..🦄)    crab..unicorn face
# 1F985..1F991  	#  9.0 [13] (🦅..🦑)    eagle..squid
# 1F992..1F997  	# 10.0  [6] (🦒..🦗)    giraffe..cricket
# 1F9C0         	#  8.0  [1] (🧀)       cheese wedge
# 1F9D0..1F9E6  	# 10.0 [23] (🧐..🧦)    face with monocle..socks
