/*
* Copyright © 2018 Google , Inc .
*
* This is part of HarfBuzz , a text shaping library .
*
* Permission is hereby granted , without written agreement and without
* license or royalty fees , to use , copy , modify , and distribute this
* software and its documentation for any purpose , provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software .
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT , INDIRECT , SPECIAL , INCIDENTAL , OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION , EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE .
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES , INCLUDING ,
* BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE . THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN " AS IS " BASIS , AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE , SUPPORT , UPDATES , ENHANCEMENTS , OR MODIFICATIONS .
*
* Google Author ( s ) : Garret Rieger
*/
#ifndef HB_OT_OS2_UNICODE_RANGES_HH
#define HB_OT_OS2_UNICODE_RANGES_HH
#include "hb.hh"
namespace OT {
struct OS2Range
{
int cmp (hb_codepoint_t key) const
{ return (key < first) ? -1 : key <= last ? 0 : +1 ; }
hb_codepoint_t first;
hb_codepoint_t last;
unsigned int bit;
};
/* Note: The contents of this array was generated using gen-os2-unicode-ranges.py. */
static const OS2Range _hb_os2_unicode_ranges[] =
{
{ 0 x0, 0 x7F, 0 }, // Basic Latin
{ 0 x80, 0 xFF, 1 }, // Latin-1 Supplement
{ 0 x100, 0 x17F, 2 }, // Latin Extended-A
{ 0 x180, 0 x24F, 3 }, // Latin Extended-B
{ 0 x250, 0 x2AF, 4 }, // IPA Extensions
{ 0 x2B0, 0 x2FF, 5 }, // Spacing Modifier Letters
{ 0 x300, 0 x36F, 6 }, // Combining Diacritical Marks
{ 0 x370, 0 x3FF, 7 }, // Greek and Coptic
{ 0 x400, 0 x4FF, 9 }, // Cyrillic
{ 0 x500, 0 x52F, 9 }, // Cyrillic Supplement
{ 0 x530, 0 x58F, 10 }, // Armenian
{ 0 x590, 0 x5FF, 11 }, // Hebrew
{ 0 x600, 0 x6FF, 13 }, // Arabic
{ 0 x700, 0 x74F, 71 }, // Syriac
{ 0 x750, 0 x77F, 13 }, // Arabic Supplement
{ 0 x780, 0 x7BF, 72 }, // Thaana
{ 0 x7C0, 0 x7FF, 14 }, // NKo
{ 0 x900, 0 x97F, 15 }, // Devanagari
{ 0 x980, 0 x9FF, 16 }, // Bengali
{ 0 xA00, 0 xA7F, 17 }, // Gurmukhi
{ 0 xA80, 0 xAFF, 18 }, // Gujarati
{ 0 xB00, 0 xB7F, 19 }, // Oriya
{ 0 xB80, 0 xBFF, 20 }, // Tamil
{ 0 xC00, 0 xC7F, 21 }, // Telugu
{ 0 xC80, 0 xCFF, 22 }, // Kannada
{ 0 xD00, 0 xD7F, 23 }, // Malayalam
{ 0 xD80, 0 xDFF, 73 }, // Sinhala
{ 0 xE00, 0 xE7F, 24 }, // Thai
{ 0 xE80, 0 xEFF, 25 }, // Lao
{ 0 xF00, 0 xFFF, 70 }, // Tibetan
{ 0 x1000, 0 x109F, 74 }, // Myanmar
{ 0 x10A0, 0 x10FF, 26 }, // Georgian
{ 0 x1100, 0 x11FF, 28 }, // Hangul Jamo
{ 0 x1200, 0 x137F, 75 }, // Ethiopic
{ 0 x1380, 0 x139F, 75 }, // Ethiopic Supplement
{ 0 x13A0, 0 x13FF, 76 }, // Cherokee
{ 0 x1400, 0 x167F, 77 }, // Unified Canadian Aboriginal Syllabics
{ 0 x1680, 0 x169F, 78 }, // Ogham
{ 0 x16A0, 0 x16FF, 79 }, // Runic
{ 0 x1700, 0 x171F, 84 }, // Tagalog
{ 0 x1720, 0 x173F, 84 }, // Hanunoo
{ 0 x1740, 0 x175F, 84 }, // Buhid
{ 0 x1760, 0 x177F, 84 }, // Tagbanwa
{ 0 x1780, 0 x17FF, 80 }, // Khmer
{ 0 x1800, 0 x18AF, 81 }, // Mongolian
{ 0 x1900, 0 x194F, 93 }, // Limbu
{ 0 x1950, 0 x197F, 94 }, // Tai Le
{ 0 x1980, 0 x19DF, 95 }, // New Tai Lue
{ 0 x19E0, 0 x19FF, 80 }, // Khmer Symbols
{ 0 x1A00, 0 x1A1F, 96 }, // Buginese
{ 0 x1B00, 0 x1B7F, 27 }, // Balinese
{ 0 x1B80, 0 x1BBF, 112 }, // Sundanese
{ 0 x1C00, 0 x1C4F, 113 }, // Lepcha
{ 0 x1C50, 0 x1C7F, 114 }, // Ol Chiki
{ 0 x1D00, 0 x1D7F, 4 }, // Phonetic Extensions
{ 0 x1D80, 0 x1DBF, 4 }, // Phonetic Extensions Supplement
{ 0 x1DC0, 0 x1DFF, 6 }, // Combining Diacritical Marks Supplement
{ 0 x1E00, 0 x1EFF, 29 }, // Latin Extended Additional
{ 0 x1F00, 0 x1FFF, 30 }, // Greek Extended
{ 0 x2000, 0 x206F, 31 }, // General Punctuation
{ 0 x2070, 0 x209F, 32 }, // Superscripts And Subscripts
{ 0 x20A0, 0 x20CF, 33 }, // Currency Symbols
{ 0 x20D0, 0 x20FF, 34 }, // Combining Diacritical Marks For Symbols
{ 0 x2100, 0 x214F, 35 }, // Letterlike Symbols
{ 0 x2150, 0 x218F, 36 }, // Number Forms
{ 0 x2190, 0 x21FF, 37 }, // Arrows
{ 0 x2200, 0 x22FF, 38 }, // Mathematical Operators
{ 0 x2300, 0 x23FF, 39 }, // Miscellaneous Technical
{ 0 x2400, 0 x243F, 40 }, // Control Pictures
{ 0 x2440, 0 x245F, 41 }, // Optical Character Recognition
{ 0 x2460, 0 x24FF, 42 }, // Enclosed Alphanumerics
{ 0 x2500, 0 x257F, 43 }, // Box Drawing
{ 0 x2580, 0 x259F, 44 }, // Block Elements
{ 0 x25A0, 0 x25FF, 45 }, // Geometric Shapes
{ 0 x2600, 0 x26FF, 46 }, // Miscellaneous Symbols
{ 0 x2700, 0 x27BF, 47 }, // Dingbats
{ 0 x27C0, 0 x27EF, 38 }, // Miscellaneous Mathematical Symbols-A
{ 0 x27F0, 0 x27FF, 37 }, // Supplemental Arrows-A
{ 0 x2800, 0 x28FF, 82 }, // Braille Patterns
{ 0 x2900, 0 x297F, 37 }, // Supplemental Arrows-B
{ 0 x2980, 0 x29FF, 38 }, // Miscellaneous Mathematical Symbols-B
{ 0 x2A00, 0 x2AFF, 38 }, // Supplemental Mathematical Operators
{ 0 x2B00, 0 x2BFF, 37 }, // Miscellaneous Symbols and Arrows
{ 0 x2C00, 0 x2C5F, 97 }, // Glagolitic
{ 0 x2C60, 0 x2C7F, 29 }, // Latin Extended-C
{ 0 x2C80, 0 x2CFF, 8 }, // Coptic
{ 0 x2D00, 0 x2D2F, 26 }, // Georgian Supplement
{ 0 x2D30, 0 x2D7F, 98 }, // Tifinagh
{ 0 x2D80, 0 x2DDF, 75 }, // Ethiopic Extended
{ 0 x2DE0, 0 x2DFF, 9 }, // Cyrillic Extended-A
{ 0 x2E00, 0 x2E7F, 31 }, // Supplemental Punctuation
{ 0 x2E80, 0 x2EFF, 59 }, // CJK Radicals Supplement
{ 0 x2F00, 0 x2FDF, 59 }, // Kangxi Radicals
{ 0 x2FF0, 0 x2FFF, 59 }, // Ideographic Description Characters
{ 0 x3000, 0 x303F, 48 }, // CJK Symbols And Punctuation
{ 0 x3040, 0 x309F, 49 }, // Hiragana
{ 0 x30A0, 0 x30FF, 50 }, // Katakana
{ 0 x3100, 0 x312F, 51 }, // Bopomofo
{ 0 x3130, 0 x318F, 52 }, // Hangul Compatibility Jamo
{ 0 x3190, 0 x319F, 59 }, // Kanbun
{ 0 x31A0, 0 x31BF, 51 }, // Bopomofo Extended
{ 0 x31C0, 0 x31EF, 61 }, // CJK Strokes
{ 0 x31F0, 0 x31FF, 50 }, // Katakana Phonetic Extensions
{ 0 x3200, 0 x32FF, 54 }, // Enclosed CJK Letters And Months
{ 0 x3300, 0 x33FF, 55 }, // CJK Compatibility
{ 0 x3400, 0 x4DBF, 59 }, // CJK Unified Ideographs Extension A
{ 0 x4DC0, 0 x4DFF, 99 }, // Yijing Hexagram Symbols
{ 0 x4E00, 0 x9FFF, 59 }, // CJK Unified Ideographs
{ 0 xA000, 0 xA48F, 83 }, // Yi Syllables
{ 0 xA490, 0 xA4CF, 83 }, // Yi Radicals
{ 0 xA500, 0 xA63F, 12 }, // Vai
{ 0 xA640, 0 xA69F, 9 }, // Cyrillic Extended-B
{ 0 xA700, 0 xA71F, 5 }, // Modifier Tone Letters
{ 0 xA720, 0 xA7FF, 29 }, // Latin Extended-D
{ 0 xA800, 0 xA82F, 100 }, // Syloti Nagri
{ 0 xA840, 0 xA87F, 53 }, // Phags-pa
{ 0 xA880, 0 xA8DF, 115 }, // Saurashtra
{ 0 xA900, 0 xA92F, 116 }, // Kayah Li
{ 0 xA930, 0 xA95F, 117 }, // Rejang
{ 0 xAA00, 0 xAA5F, 118 }, // Cham
{ 0 xAC00, 0 xD7AF, 56 }, // Hangul Syllables
{ 0 xD800, 0 xDFFF, 57 }, // Non-Plane 0 *
{ 0 xE000, 0 xF8FF, 60 }, // Private Use Area (plane 0)
{ 0 xF900, 0 xFAFF, 61 }, // CJK Compatibility Ideographs
{ 0 xFB00, 0 xFB4F, 62 }, // Alphabetic Presentation Forms
{ 0 xFB50, 0 xFDFF, 63 }, // Arabic Presentation Forms-A
{ 0 xFE00, 0 xFE0F, 91 }, // Variation Selectors
{ 0 xFE10, 0 xFE1F, 65 }, // Vertical Forms
{ 0 xFE20, 0 xFE2F, 64 }, // Combining Half Marks
{ 0 xFE30, 0 xFE4F, 65 }, // CJK Compatibility Forms
{ 0 xFE50, 0 xFE6F, 66 }, // Small Form Variants
{ 0 xFE70, 0 xFEFF, 67 }, // Arabic Presentation Forms-B
{ 0 xFF00, 0 xFFEF, 68 }, // Halfwidth And Fullwidth Forms
{ 0 xFFF0, 0 xFFFF, 69 }, // Specials
{ 0 x10000, 0 x1007F, 101 }, // Linear B Syllabary
{ 0 x10080, 0 x100FF, 101 }, // Linear B Ideograms
{ 0 x10100, 0 x1013F, 101 }, // Aegean Numbers
{ 0 x10140, 0 x1018F, 102 }, // Ancient Greek Numbers
{ 0 x10190, 0 x101CF, 119 }, // Ancient Symbols
{ 0 x101D0, 0 x101FF, 120 }, // Phaistos Disc
{ 0 x10280, 0 x1029F, 121 }, // Lycian
{ 0 x102A0, 0 x102DF, 121 }, // Carian
{ 0 x10300, 0 x1032F, 85 }, // Old Italic
{ 0 x10330, 0 x1034F, 86 }, // Gothic
{ 0 x10380, 0 x1039F, 103 }, // Ugaritic
{ 0 x103A0, 0 x103DF, 104 }, // Old Persian
{ 0 x10400, 0 x1044F, 87 }, // Deseret
{ 0 x10450, 0 x1047F, 105 }, // Shavian
{ 0 x10480, 0 x104AF, 106 }, // Osmanya
{ 0 x10800, 0 x1083F, 107 }, // Cypriot Syllabary
{ 0 x10900, 0 x1091F, 58 }, // Phoenician
{ 0 x10920, 0 x1093F, 121 }, // Lydian
{ 0 x10A00, 0 x10A5F, 108 }, // Kharoshthi
{ 0 x12000, 0 x123FF, 110 }, // Cuneiform
{ 0 x12400, 0 x1247F, 110 }, // Cuneiform Numbers and Punctuation
{ 0 x1D000, 0 x1D0FF, 88 }, // Byzantine Musical Symbols
{ 0 x1D100, 0 x1D1FF, 88 }, // Musical Symbols
{ 0 x1D200, 0 x1D24F, 88 }, // Ancient Greek Musical Notation
{ 0 x1D300, 0 x1D35F, 109 }, // Tai Xuan Jing Symbols
{ 0 x1D360, 0 x1D37F, 111 }, // Counting Rod Numerals
{ 0 x1D400, 0 x1D7FF, 89 }, // Mathematical Alphanumeric Symbols
{ 0 x1F000, 0 x1F02F, 122 }, // Mahjong Tiles
{ 0 x1F030, 0 x1F09F, 122 }, // Domino Tiles
{ 0 x20000, 0 x2A6DF, 59 }, // CJK Unified Ideographs Extension B
{ 0 x2F800, 0 x2FA1F, 61 }, // CJK Compatibility Ideographs Supplement
{ 0 xE0000, 0 xE007F, 92 }, // Tags
{ 0 xE0100, 0 xE01EF, 91 }, // Variation Selectors Supplement
{ 0 xF0000, 0 xFFFFD, 90 }, // Private Use (plane 15)
{0 x100000, 0 x10FFFD, 90 }, // Private Use (plane 16)
};
/**
* _ hb_ot_os2_get_unicode_range_bit :
* Returns the bit to be set in os / 2 ulUnicodeOS2Range for a given codepoint .
**/
static unsigned int
_hb_ot_os2_get_unicode_range_bit (hb_codepoint_t cp)
{
auto *range = hb_sorted_array (_hb_os2_unicode_ranges).bsearch (cp);
return range ? range->bit : (unsigned ) -1 ;
}
} /* namespace OT */
#endif /* HB_OT_OS2_UNICODE_RANGES_HH */
Messung V0.5 in Prozent C=82 H=99 G=90
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland