summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/text/qfontsubset.cpp179
-rw-r--r--src/gui/text/qfontsubset_agl.cpp285
2 files changed, 289 insertions, 175 deletions
diff --git a/src/gui/text/qfontsubset.cpp b/src/gui/text/qfontsubset.cpp
index ae54c6653e..874ef692bf 100644
--- a/src/gui/text/qfontsubset.cpp
+++ b/src/gui/text/qfontsubset.cpp
@@ -38,188 +38,17 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <qdebug.h>
+
#include "qfontsubset_p.h"
+#include <qdebug.h>
#include <qendian.h>
#include <qpainterpath.h>
#include "private/qpdf_p.h"
#include "private/qfunctions_p.h"
-QT_BEGIN_NAMESPACE
+#include "qfontsubset_agl.cpp"
-static const char glyph_names[] =
-".notdef\0space\0exclam\0quotedbl\0numbersign\0dollar\0percent\0ampersand\0"
-"quotesingle\0parenleft\0parenright\0asterisk\0plus\0comma\0hyphen\0period\0"
-"slash\0zero\0one\0two\0three\0four\0five\0six\0seven\0eight\0nine\0colon\0"
-"semicolon\0less\0equal\0greater\0question\0at\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0"
-"K\0L\0M\0N\0O\0P\0Q\0R\0S\0T\0U\0V\0W\0X\0Y\0Z\0bracketleft\0backslash\0"
-"bracketright\0asciicircum\0underscore\0grave\0a\0b\0c\0d\0e\0f\0g\0h\0i\0j\0"
-"k\0l\0m\0n\0o\0p\0q\0r\0s\0t\0u\0v\0w\0x\0y\0z\0braceleft\0bar\0braceright\0"
-"asciitilde\0space\0exclamdown\0cent\0sterling\0currency\0yen\0brokenbar\0"
-"section\0dieresis\0copyright\0ordfeminine\0guillemotleft\0logicalnot\0"
-"hyphen\0registered\0macron\0degree\0plusminus\0twosuperior\0threesuperior\0"
-"acute\0mu\0paragraph\0periodcentered\0cedilla\0onesuperior\0ordmasculine\0"
-"guillemotright\0onequarter\0onehalf\0threequarters\0questiondown\0Agrave\0"
-"Aacute\0Acircumflex\0Atilde\0Adieresis\0Aring\0AE\0Ccedilla\0Egrave\0Eacute\0"
-"Ecircumflex\0Edieresis\0Igrave\0Iacute\0Icircumflex\0Idieresis\0Eth\0Ntilde\0"
-"Ograve\0Oacute\0Ocircumflex\0Otilde\0Odieresis\0multiply\0Oslash\0Ugrave\0"
-"Uacute\0Ucircumflex\0Udieresis\0Yacute\0Thorn\0germandbls\0agrave\0aacute\0"
-"acircumflex\0atilde\0adieresis\0aring\0ae\0ccedilla\0egrave\0eacute\0"
-"ecircumflex\0edieresis\0igrave\0iacute\0icircumflex\0idieresis\0eth\0ntilde\0"
-"ograve\0oacute\0ocircumflex\0otilde\0odieresis\0divide\0oslash\0ugrave\0"
-"uacute\0ucircumflex\0udieresis\0yacute\0thorn\0ydieresis\0Amacron\0amacron\0"
-"Abreve\0abreve\0Aogonek\0aogonek\0Cacute\0cacute\0Ccircumflex\0ccircumflex\0"
-"Cdotaccent\0cdotaccent\0Ccaron\0ccaron\0Dcaron\0dcaron\0Dcroat\0dcroat\0"
-"Emacron\0emacron\0Ebreve\0ebreve\0Edotaccent\0edotaccent\0Eogonek\0eogonek\0"
-"Ecaron\0ecaron\0Gcircumflex\0gcircumflex\0Gbreve\0gbreve\0Gdotaccent\0"
-"gdotaccent\0Gcommaaccent\0gcommaaccent\0Hcircumflex\0hcircumflex\0Hbar\0"
-"hbar\0Itilde\0itilde\0Imacron\0imacron\0Ibreve\0ibreve\0Iogonek\0iogonek\0"
-"Idotaccent\0dotlessi\0IJ\0ij\0Jcircumflex\0jcircumflex\0Kcommaaccent\0"
-"kcommaaccent\0kgreenlandic\0Lacute\0lacute\0Lcommaaccent\0lcommaaccent\0"
-"Lcaron\0lcaron\0Ldot\0ldot\0Lslash\0lslash\0Nacute\0nacute\0Ncommaaccent\0"
-"ncommaaccent\0Ncaron\0ncaron\0napostrophe\0Eng\0eng\0Omacron\0omacron\0"
-"Obreve\0obreve\0Ohungarumlaut\0ohungarumlaut\0OE\0oe\0Racute\0racute\0"
-"Rcommaaccent\0rcommaaccent\0Rcaron\0rcaron\0Sacute\0sacute\0Scircumflex\0"
-"scircumflex\0Scedilla\0scedilla\0Scaron\0scaron\0Tcaron\0tcaron\0Tbar\0tbar\0"
-"Utilde\0utilde\0Umacron\0umacron\0Ubreve\0ubreve\0Uring\0uring\0"
-"Uhungarumlaut\0uhungarumlaut\0Uogonek\0uogonek\0Wcircumflex\0wcircumflex\0"
-"Ycircumflex\0ycircumflex\0Ydieresis\0Zacute\0zacute\0Zdotaccent\0zdotaccent\0"
-"Zcaron\0zcaron\0longs\0florin\0Ohorn\0ohorn\0Uhorn\0uhorn\0Gcaron\0gcaron\0"
-"Aringacute\0aringacute\0AEacute\0aeacute\0Oslashacute\0oslashacute\0"
-"Scommaaccent\0scommaaccent\0Tcommaaccent\0tcommaaccent\0afii57929\0"
-"afii64937\0circumflex\0caron\0breve\0dotaccent\0ring\0ogonek\0tilde\0"
-"hungarumlaut\0gravecomb\0acutecomb\0tildecomb\0hookabovecomb\0dotbelowcomb\0"
-"tonos\0dieresistonos\0Alphatonos\0anoteleia\0Epsilontonos\0Etatonos\0"
-"Iotatonos\0Omicrontonos\0Upsilontonos\0Omegatonos\0iotadieresistonos\0Alpha\0"
-"Beta\0Gamma\0Delta\0Epsilon\0Zeta\0Eta\0Theta\0Iota\0Kappa\0Lambda\0Mu\0Nu\0"
-"Xi\0Omicron\0Pi\0Rho\0Sigma\0Tau\0Upsilon\0Phi\0Chi\0Psi\0Omega\0"
-"Iotadieresis\0Upsilondieresis\0alphatonos\0epsilontonos\0etatonos\0"
-"iotatonos\0upsilondieresistonos\0alpha\0beta\0gamma\0delta\0epsilon\0zeta\0"
-"eta\0theta\0iota\0kappa\0lambda\0mu\0nu\0xi\0omicron\0pi\0rho\0sigma1\0"
-"sigma\0tau\0upsilon\0phi\0chi\0psi\0omega\0iotadieresis\0upsilondieresis\0"
-;
-
-struct AGLEntry {
- unsigned short uc;
- unsigned short index;
-};
-
-inline bool operator<(unsigned short uc, AGLEntry entry)
-{ return uc < entry.uc; }
-inline bool operator<(AGLEntry entry, unsigned short uc)
-{ return entry.uc < uc; }
-
-static const AGLEntry unicode_to_agl_map[] = {
- {0x0000, 0}, {0x0020, 8}, {0x0021, 14}, {0x0022, 21},
- {0x0023, 30}, {0x0024, 41}, {0x0025, 48}, {0x0026, 56},
- {0x0027, 66}, {0x0028, 78}, {0x0029, 88}, {0x002A, 99},
- {0x002B, 108}, {0x002C, 113}, {0x002D, 119}, {0x002E, 126},
- {0x002F, 133}, {0x0030, 139}, {0x0031, 144}, {0x0032, 148},
- {0x0033, 152}, {0x0034, 158}, {0x0035, 163}, {0x0036, 168},
- {0x0037, 172}, {0x0038, 178}, {0x0039, 184}, {0x003A, 189},
- {0x003B, 195}, {0x003C, 205}, {0x003D, 210}, {0x003E, 216},
- {0x003F, 224}, {0x0040, 233}, {0x0041, 236}, {0x0042, 238},
- {0x0043, 240}, {0x0044, 242}, {0x0045, 244}, {0x0046, 246},
- {0x0047, 248}, {0x0048, 250}, {0x0049, 252}, {0x004A, 254},
- {0x004B, 256}, {0x004C, 258}, {0x004D, 260}, {0x004E, 262},
- {0x004F, 264}, {0x0050, 266}, {0x0051, 268}, {0x0052, 270},
- {0x0053, 272}, {0x0054, 274}, {0x0055, 276}, {0x0056, 278},
- {0x0057, 280}, {0x0058, 282}, {0x0059, 284}, {0x005A, 286},
- {0x005B, 288}, {0x005C, 300}, {0x005D, 310}, {0x005E, 323},
- {0x005F, 335}, {0x0060, 346}, {0x0061, 352}, {0x0062, 354},
- {0x0063, 356}, {0x0064, 358}, {0x0065, 360}, {0x0066, 362},
- {0x0067, 364}, {0x0068, 366}, {0x0069, 368}, {0x006A, 370},
- {0x006B, 372}, {0x006C, 374}, {0x006D, 376}, {0x006E, 378},
- {0x006F, 380}, {0x0070, 382}, {0x0071, 384}, {0x0072, 386},
- {0x0073, 388}, {0x0074, 390}, {0x0075, 392}, {0x0076, 394},
- {0x0077, 396}, {0x0078, 398}, {0x0079, 400}, {0x007A, 402},
- {0x007B, 404}, {0x007C, 414}, {0x007D, 418}, {0x007E, 429},
- {0x00A0, 440}, {0x00A1, 446}, {0x00A2, 457}, {0x00A3, 462},
- {0x00A4, 471}, {0x00A5, 480}, {0x00A6, 484}, {0x00A7, 494},
- {0x00A8, 502}, {0x00A9, 511}, {0x00AA, 521}, {0x00AB, 533},
- {0x00AC, 547}, {0x00AD, 558}, {0x00AE, 565}, {0x00AF, 576},
- {0x00B0, 583}, {0x00B1, 590}, {0x00B2, 600}, {0x00B3, 612},
- {0x00B4, 626}, {0x00B5, 632}, {0x00B6, 635}, {0x00B7, 645},
- {0x00B8, 660}, {0x00B9, 668}, {0x00BA, 680}, {0x00BB, 693},
- {0x00BC, 708}, {0x00BD, 719}, {0x00BE, 727}, {0x00BF, 741},
- {0x00C0, 754}, {0x00C1, 761}, {0x00C2, 768}, {0x00C3, 780},
- {0x00C4, 787}, {0x00C5, 797}, {0x00C6, 803}, {0x00C7, 806},
- {0x00C8, 815}, {0x00C9, 822}, {0x00CA, 829}, {0x00CB, 841},
- {0x00CC, 851}, {0x00CD, 858}, {0x00CE, 865}, {0x00CF, 877},
- {0x00D0, 887}, {0x00D1, 891}, {0x00D2, 898}, {0x00D3, 905},
- {0x00D4, 912}, {0x00D5, 924}, {0x00D6, 931}, {0x00D7, 941},
- {0x00D8, 950}, {0x00D9, 957}, {0x00DA, 964}, {0x00DB, 971},
- {0x00DC, 983}, {0x00DD, 993}, {0x00DE, 1000}, {0x00DF, 1006},
- {0x00E0, 1017}, {0x00E1, 1024}, {0x00E2, 1031}, {0x00E3, 1043},
- {0x00E4, 1050}, {0x00E5, 1060}, {0x00E6, 1066}, {0x00E7, 1069},
- {0x00E8, 1078}, {0x00E9, 1085}, {0x00EA, 1092}, {0x00EB, 1104},
- {0x00EC, 1114}, {0x00ED, 1121}, {0x00EE, 1128}, {0x00EF, 1140},
- {0x00F0, 1150}, {0x00F1, 1154}, {0x00F2, 1161}, {0x00F3, 1168},
- {0x00F4, 1175}, {0x00F5, 1187}, {0x00F6, 1194}, {0x00F7, 1204},
- {0x00F8, 1211}, {0x00F9, 1218}, {0x00FA, 1225}, {0x00FB, 1232},
- {0x00FC, 1244}, {0x00FD, 1254}, {0x00FE, 1261}, {0x00FF, 1267},
- {0x0100, 1277}, {0x0101, 1285}, {0x0102, 1293}, {0x0103, 1300},
- {0x0104, 1307}, {0x0105, 1315}, {0x0106, 1323}, {0x0107, 1330},
- {0x0108, 1337}, {0x0109, 1349}, {0x010A, 1361}, {0x010B, 1372},
- {0x010C, 1383}, {0x010D, 1390}, {0x010E, 1397}, {0x010F, 1404},
- {0x0110, 1411}, {0x0111, 1418}, {0x0112, 1425}, {0x0113, 1433},
- {0x0114, 1441}, {0x0115, 1448}, {0x0116, 1455}, {0x0117, 1466},
- {0x0118, 1477}, {0x0119, 1485}, {0x011A, 1493}, {0x011B, 1500},
- {0x011C, 1507}, {0x011D, 1519}, {0x011E, 1531}, {0x011F, 1538},
- {0x0120, 1545}, {0x0121, 1556}, {0x0122, 1567}, {0x0123, 1580},
- {0x0124, 1593}, {0x0125, 1605}, {0x0126, 1617}, {0x0127, 1622},
- {0x0128, 1627}, {0x0129, 1634}, {0x012A, 1641}, {0x012B, 1649},
- {0x012C, 1657}, {0x012D, 1664}, {0x012E, 1671}, {0x012F, 1679},
- {0x0130, 1687}, {0x0131, 1698}, {0x0132, 1707}, {0x0133, 1710},
- {0x0134, 1713}, {0x0135, 1725}, {0x0136, 1737}, {0x0137, 1750},
- {0x0138, 1763}, {0x0139, 1776}, {0x013A, 1783}, {0x013B, 1790},
- {0x013C, 1803}, {0x013D, 1816}, {0x013E, 1823}, {0x013F, 1830},
- {0x0140, 1835}, {0x0141, 1840}, {0x0142, 1847}, {0x0143, 1854},
- {0x0144, 1861}, {0x0145, 1868}, {0x0146, 1881}, {0x0147, 1894},
- {0x0148, 1901}, {0x0149, 1908}, {0x014A, 1920}, {0x014B, 1924},
- {0x014C, 1928}, {0x014D, 1936}, {0x014E, 1944}, {0x014F, 1951},
- {0x0150, 1958}, {0x0151, 1972}, {0x0152, 1986}, {0x0153, 1989},
- {0x0154, 1992}, {0x0155, 1999}, {0x0156, 2006}, {0x0157, 2019},
- {0x0158, 2032}, {0x0159, 2039}, {0x015A, 2046}, {0x015B, 2053},
- {0x015C, 2060}, {0x015D, 2072}, {0x015E, 2084}, {0x015F, 2093},
- {0x0160, 2102}, {0x0161, 2109}, {0x0164, 2116}, {0x0165, 2123},
- {0x0166, 2130}, {0x0167, 2135}, {0x0168, 2140}, {0x0169, 2147},
- {0x016A, 2154}, {0x016B, 2162}, {0x016C, 2170}, {0x016D, 2177},
- {0x016E, 2184}, {0x016F, 2190}, {0x0170, 2196}, {0x0171, 2210},
- {0x0172, 2224}, {0x0173, 2232}, {0x0174, 2240}, {0x0175, 2252},
- {0x0176, 2264}, {0x0177, 2276}, {0x0178, 2288}, {0x0179, 2298},
- {0x017A, 2305}, {0x017B, 2312}, {0x017C, 2323}, {0x017D, 2334},
- {0x017E, 2341}, {0x017F, 2348}, {0x0192, 2354}, {0x01A0, 2361},
- {0x01A1, 2367}, {0x01AF, 2373}, {0x01B0, 2379}, {0x01E6, 2385},
- {0x01E7, 2392}, {0x01FA, 2399}, {0x01FB, 2410}, {0x01FC, 2421},
- {0x01FD, 2429}, {0x01FE, 2437}, {0x01FF, 2449}, {0x0218, 2461},
- {0x0219, 2474}, {0x021A, 2487}, {0x021B, 2500}, {0x02BC, 2513},
- {0x02BD, 2523}, {0x02C6, 2533}, {0x02C7, 2544}, {0x02D8, 2550},
- {0x02D9, 2556}, {0x02DA, 2566}, {0x02DB, 2571}, {0x02DC, 2578},
- {0x02DD, 2584}, {0x0300, 2597}, {0x0301, 2607}, {0x0303, 2617},
- {0x0309, 2627}, {0x0323, 2641}, {0x0384, 2654}, {0x0385, 2660},
- {0x0386, 2674}, {0x0387, 2685}, {0x0388, 2695}, {0x0389, 2708},
- {0x038A, 2717}, {0x038C, 2727}, {0x038E, 2740}, {0x038F, 2753},
- {0x0390, 2764}, {0x0391, 2782}, {0x0392, 2788}, {0x0393, 2793},
- {0x0394, 2799}, {0x0395, 2805}, {0x0396, 2813}, {0x0397, 2818},
- {0x0398, 2822}, {0x0399, 2828}, {0x039A, 2833}, {0x039B, 2839},
- {0x039C, 2846}, {0x039D, 2849}, {0x039E, 2852}, {0x039F, 2855},
- {0x03A0, 2863}, {0x03A1, 2866}, {0x03A3, 2870}, {0x03A4, 2876},
- {0x03A5, 2880}, {0x03A6, 2888}, {0x03A7, 2892}, {0x03A8, 2896},
- {0x03A9, 2900}, {0x03AA, 2906}, {0x03AB, 2919}, {0x03AC, 2935},
- {0x03AD, 2946}, {0x03AE, 2959}, {0x03AF, 2968}, {0x03B0, 2978},
- {0x03B1, 2999}, {0x03B2, 3005}, {0x03B3, 3010}, {0x03B4, 3016},
- {0x03B5, 3022}, {0x03B6, 3030}, {0x03B7, 3035}, {0x03B8, 3039},
- {0x03B9, 3045}, {0x03BA, 3050}, {0x03BB, 3056}, {0x03BC, 3063},
- {0x03BD, 3066}, {0x03BE, 3069}, {0x03BF, 3072}, {0x03C0, 3080},
- {0x03C1, 3083}, {0x03C2, 3087}, {0x03C3, 3094}, {0x03C4, 3100},
- {0x03C5, 3104}, {0x03C6, 3112}, {0x03C7, 3116}, {0x03C8, 3120},
- {0x03C9, 3124}, {0x03CA, 3130}, {0x03CB, 3143}, {0x03CC, 3159},
- {0x03CD, 3172}, {0x03CE, 3185}, {0x03D1, 3196}, {0x03D2, 3203},
- {0x03D5, 3212}, {0x03D6, 3217}
-};
-
-enum { unicode_to_agl_map_size = sizeof(unicode_to_agl_map) / sizeof(unicode_to_agl_map[0]) };
+QT_BEGIN_NAMESPACE
// This map is used for symbol fonts to get the correct glyph names for the latin range
static const unsigned short symbol_map[0x100] = {
diff --git a/src/gui/text/qfontsubset_agl.cpp b/src/gui/text/qfontsubset_agl.cpp
new file mode 100644
index 0000000000..dc2192b9c4
--- /dev/null
+++ b/src/gui/text/qfontsubset_agl.cpp
@@ -0,0 +1,285 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/* This file is autogenerated from the Adobe Glyph List database v1.7. Do not edit */
+
+namespace {
+
+static const char glyph_names[] =
+".notdef\0A\0AE\0AEacute\0Aacute\0Abreve\0Acircumflex\0Adieresis\0Agrave\0"
+"Alpha\0Alphatonos\0Amacron\0Aogonek\0Aring\0Aringacute\0Atilde\0B\0Beta\0C\0"
+"Cacute\0Ccaron\0Ccedilla\0Ccircumflex\0Cdotaccent\0Chi\0D\0Dcaron\0Dcroat\0"
+"Delta\0E\0Eacute\0Ebreve\0Ecaron\0Ecircumflex\0Edieresis\0Edotaccent\0"
+"Egrave\0Emacron\0Eng\0Eogonek\0Epsilon\0Epsilontonos\0Eta\0Etatonos\0Eth\0"
+"Euro\0F\0G\0Gamma\0Gbreve\0Gcaron\0Gcircumflex\0Gdotaccent\0H\0H18533\0"
+"H18543\0H18551\0H22073\0Hbar\0Hcircumflex\0I\0IJ\0Iacute\0Ibreve\0"
+"Icircumflex\0Idieresis\0Idotaccent\0Ifraktur\0Igrave\0Imacron\0Iogonek\0"
+"Iota\0Iotadieresis\0Iotatonos\0Itilde\0J\0Jcircumflex\0K\0Kappa\0L\0Lacute\0"
+"Lambda\0Lcaron\0Ldot\0Lslash\0M\0Mu\0N\0Nacute\0Ncaron\0Ntilde\0Nu\0O\0OE\0"
+"Oacute\0Obreve\0Ocircumflex\0Odieresis\0Ograve\0Ohorn\0Ohungarumlaut\0"
+"Omacron\0Omega\0Omegatonos\0Omicron\0Omicrontonos\0Oslash\0Oslashacute\0"
+"Otilde\0P\0Phi\0Pi\0Psi\0Q\0R\0Racute\0Rcaron\0Rfraktur\0Rho\0S\0SF010000\0"
+"SF020000\0SF030000\0SF040000\0SF050000\0SF060000\0SF070000\0SF080000\0"
+"SF090000\0SF100000\0SF110000\0SF190000\0SF200000\0SF210000\0SF220000\0"
+"SF230000\0SF240000\0SF250000\0SF260000\0SF270000\0SF280000\0SF360000\0"
+"SF370000\0SF380000\0SF390000\0SF400000\0SF410000\0SF420000\0SF430000\0"
+"SF440000\0SF450000\0SF460000\0SF470000\0SF480000\0SF490000\0SF500000\0"
+"SF510000\0SF520000\0SF530000\0SF540000\0Sacute\0Scaron\0Scedilla\0"
+"Scircumflex\0Sigma\0T\0Tau\0Tbar\0Tcaron\0Theta\0Thorn\0U\0Uacute\0Ubreve\0"
+"Ucircumflex\0Udieresis\0Ugrave\0Uhorn\0Uhungarumlaut\0Umacron\0Uogonek\0"
+"Upsilon\0Upsilon1\0Upsilondieresis\0Upsilontonos\0Uring\0Utilde\0V\0W\0"
+"Wacute\0Wcircumflex\0Wdieresis\0Wgrave\0X\0Xi\0Y\0Yacute\0Ycircumflex\0"
+"Ydieresis\0Ygrave\0Z\0Zacute\0Zcaron\0Zdotaccent\0Zeta\0a\0aacute\0abreve\0"
+"acircumflex\0acute\0acutecomb\0adieresis\0ae\0aeacute\0agrave\0aleph\0alpha\0"
+"alphatonos\0amacron\0ampersand\0angle\0angleleft\0angleright\0anoteleia\0"
+"aogonek\0approxequal\0aring\0aringacute\0arrowboth\0arrowdblboth\0"
+"arrowdbldown\0arrowdblleft\0arrowdblright\0arrowdblup\0arrowdown\0arrowleft\0"
+"arrowright\0arrowup\0arrowupdn\0arrowupdnbse\0asciicircum\0asciitilde\0"
+"asterisk\0asteriskmath\0at\0atilde\0b\0backslash\0bar\0beta\0block\0"
+"braceleft\0braceright\0bracketleft\0bracketright\0breve\0brokenbar\0bullet\0"
+"c\0cacute\0caron\0carriagereturn\0ccaron\0ccedilla\0ccircumflex\0cdotaccent\0"
+"cedilla\0cent\0chi\0circle\0circlemultiply\0circleplus\0circumflex\0club\0"
+"colon\0colonmonetary\0comma\0congruent\0copyright\0currency\0d\0dagger\0"
+"daggerdbl\0dcaron\0dcroat\0degree\0delta\0diamond\0dieresis\0dieresistonos\0"
+"divide\0dkshade\0dnblock\0dollar\0dong\0dotaccent\0dotbelowcomb\0dotlessi\0"
+"dotmath\0e\0eacute\0ebreve\0ecaron\0ecircumflex\0edieresis\0edotaccent\0"
+"egrave\0eight\0element\0ellipsis\0emacron\0emdash\0emptyset\0endash\0eng\0"
+"eogonek\0epsilon\0epsilontonos\0equal\0equivalence\0estimated\0eta\0"
+"etatonos\0eth\0exclam\0exclamdbl\0exclamdown\0existential\0f\0female\0"
+"figuredash\0filledbox\0filledrect\0five\0fiveeighths\0florin\0four\0"
+"fraction\0franc\0g\0gamma\0gbreve\0gcaron\0gcircumflex\0gdotaccent\0"
+"germandbls\0gradient\0grave\0gravecomb\0greater\0greaterequal\0"
+"guillemotleft\0guillemotright\0guilsinglleft\0guilsinglright\0h\0hbar\0"
+"hcircumflex\0heart\0hookabovecomb\0house\0hungarumlaut\0hyphen\0i\0iacute\0"
+"ibreve\0icircumflex\0idieresis\0igrave\0ij\0imacron\0infinity\0integral\0"
+"integralbt\0integraltp\0intersection\0invbullet\0invcircle\0invsmileface\0"
+"iogonek\0iota\0iotadieresis\0iotadieresistonos\0iotatonos\0itilde\0j\0"
+"jcircumflex\0k\0kappa\0kgreenlandic\0l\0lacute\0lambda\0lcaron\0ldot\0less\0"
+"lessequal\0lfblock\0lira\0logicaland\0logicalnot\0logicalor\0longs\0lozenge\0"
+"lslash\0ltshade\0m\0macron\0male\0minus\0minute\0mu\0multiply\0musicalnote\0"
+"musicalnotedbl\0n\0nacute\0napostrophe\0ncaron\0nine\0notelement\0notequal\0"
+"notsubset\0ntilde\0nu\0numbersign\0o\0oacute\0obreve\0ocircumflex\0"
+"odieresis\0oe\0ogonek\0ograve\0ohorn\0ohungarumlaut\0omacron\0omega\0omega1\0"
+"omegatonos\0omicron\0omicrontonos\0one\0onedotenleader\0oneeighth\0onehalf\0"
+"onequarter\0onethird\0openbullet\0ordfeminine\0ordmasculine\0orthogonal\0"
+"oslash\0oslashacute\0otilde\0p\0paragraph\0parenleft\0parenright\0"
+"partialdiff\0percent\0period\0periodcentered\0perpendicular\0perthousand\0"
+"peseta\0phi\0phi1\0pi\0plus\0plusminus\0prescription\0product\0propersubset\0"
+"propersuperset\0proportional\0psi\0q\0question\0questiondown\0quotedbl\0"
+"quotedblbase\0quotedblleft\0quotedblright\0quoteleft\0quotereversed\0"
+"quoteright\0quotesinglbase\0quotesingle\0r\0racute\0radical\0rcaron\0"
+"reflexsubset\0reflexsuperset\0registered\0revlogicalnot\0rho\0ring\0rtblock\0"
+"s\0sacute\0scaron\0scedilla\0scircumflex\0second\0section\0semicolon\0seven\0"
+"seveneighths\0shade\0sigma\0sigma1\0similar\0six\0slash\0smileface\0space\0"
+"spade\0sterling\0suchthat\0summation\0sun\0t\0tau\0tbar\0tcaron\0therefore\0"
+"theta\0theta1\0thorn\0three\0threeeighths\0threequarters\0tilde\0tildecomb\0"
+"tonos\0trademark\0triagdn\0triaglf\0triagrt\0triagup\0two\0twodotenleader\0"
+"twothirds\0u\0uacute\0ubreve\0ucircumflex\0udieresis\0ugrave\0uhorn\0"
+"uhungarumlaut\0umacron\0underscore\0underscoredbl\0union\0universal\0"
+"uogonek\0upblock\0upsilon\0upsilondieresis\0upsilondieresistonos\0"
+"upsilontonos\0uring\0utilde\0v\0w\0wacute\0wcircumflex\0wdieresis\0"
+"weierstrass\0wgrave\0x\0xi\0y\0yacute\0ycircumflex\0ydieresis\0yen\0ygrave\0"
+"z\0zacute\0zcaron\0zdotaccent\0zero\0zeta\0"
+;
+
+struct AGLEntry {
+ unsigned short uc;
+ unsigned short index;
+};
+
+inline bool operator<(unsigned short uc, AGLEntry entry)
+{ return uc < entry.uc; }
+inline bool operator<(AGLEntry entry, unsigned short uc)
+{ return entry.uc < uc; }
+
+static const AGLEntry unicode_to_agl_map[] = {
+ { 0x0000, 0 }, { 0x0020, 4183 }, { 0x0021, 2512 }, { 0x0022, 3850 },
+ { 0x0023, 3356 }, { 0x0024, 2265 }, { 0x0025, 3670 }, { 0x0026, 1604 },
+ { 0x0027, 3949 }, { 0x0028, 3637 }, { 0x0029, 3647 }, { 0x002a, 1847 },
+ { 0x002b, 3745 }, { 0x002c, 2130 }, { 0x002d, 2855 }, { 0x002e, 3678 },
+ { 0x002f, 4167 }, { 0x0030, 4727 }, { 0x0031, 3495 }, { 0x0032, 4371 },
+ { 0x0033, 4274 }, { 0x0034, 2617 }, { 0x0035, 2593 }, { 0x0036, 4163 },
+ { 0x0037, 4117 }, { 0x0038, 2380 }, { 0x0039, 3311 }, { 0x003a, 2110 },
+ { 0x003b, 4107 }, { 0x003c, 3128 }, { 0x003d, 2467 }, { 0x003e, 2718 },
+ { 0x003f, 3828 }, { 0x0040, 1869 }, { 0x0041, 8 }, { 0x0042, 121 },
+ { 0x0043, 128 }, { 0x0044, 180 }, { 0x0045, 202 }, { 0x0046, 328 },
+ { 0x0047, 330 }, { 0x0048, 375 }, { 0x0049, 422 }, { 0x004a, 541 },
+ { 0x004b, 555 }, { 0x004c, 563 }, { 0x004d, 598 }, { 0x004e, 603 },
+ { 0x004f, 629 }, { 0x0050, 769 }, { 0x0051, 782 }, { 0x0052, 784 },
+ { 0x0053, 813 }, { 0x0054, 1216 }, { 0x0055, 1246 }, { 0x0056, 1386 },
+ { 0x0057, 1388 }, { 0x0058, 1426 }, { 0x0059, 1431 }, { 0x005a, 1469 },
+ { 0x005b, 1927 }, { 0x005c, 1881 }, { 0x005d, 1939 }, { 0x005e, 1824 },
+ { 0x005f, 4473 }, { 0x0060, 2702 }, { 0x0061, 1501 }, { 0x0062, 1879 },
+ { 0x0063, 1975 }, { 0x0064, 2165 }, { 0x0065, 2317 }, { 0x0066, 2552 },
+ { 0x0067, 2637 }, { 0x0068, 2797 }, { 0x0069, 2862 }, { 0x006a, 3065 },
+ { 0x006b, 3079 }, { 0x006c, 3100 }, { 0x006d, 3217 }, { 0x006e, 3283 },
+ { 0x006f, 3367 }, { 0x0070, 3625 }, { 0x0071, 3826 }, { 0x0072, 3961 },
+ { 0x0073, 4055 }, { 0x0074, 4227 }, { 0x0075, 4400 }, { 0x0076, 4601 },
+ { 0x0077, 4603 }, { 0x0078, 4653 }, { 0x0079, 4658 }, { 0x007a, 4700 },
+ { 0x007b, 1906 }, { 0x007c, 1891 }, { 0x007d, 1916 }, { 0x007e, 1836 },
+ { 0x00a1, 2529 }, { 0x00a2, 2052 }, { 0x00a3, 4195 }, { 0x00a4, 2156 },
+ { 0x00a5, 4689 }, { 0x00a6, 1958 }, { 0x00a7, 4099 }, { 0x00a8, 2219 },
+ { 0x00a9, 2146 }, { 0x00aa, 3563 }, { 0x00ab, 2739 }, { 0x00ac, 3167 },
+ { 0x00ae, 4013 }, { 0x00af, 3219 }, { 0x00b0, 2198 }, { 0x00b1, 3750 },
+ { 0x00b4, 1529 }, { 0x00b5, 3244 }, { 0x00b6, 3627 }, { 0x00b7, 3685 },
+ { 0x00b8, 2044 }, { 0x00ba, 3575 }, { 0x00bb, 2753 }, { 0x00bc, 3532 },
+ { 0x00bd, 3524 }, { 0x00be, 4293 }, { 0x00bf, 3837 }, { 0x00c0, 57 },
+ { 0x00c1, 21 }, { 0x00c2, 35 }, { 0x00c3, 114 }, { 0x00c4, 47 },
+ { 0x00c5, 97 }, { 0x00c6, 10 }, { 0x00c7, 144 }, { 0x00c8, 258 },
+ { 0x00c9, 204 }, { 0x00ca, 225 }, { 0x00cb, 237 }, { 0x00cc, 483 },
+ { 0x00cd, 427 }, { 0x00ce, 441 }, { 0x00cf, 453 }, { 0x00d0, 319 },
+ { 0x00d1, 619 }, { 0x00d2, 670 }, { 0x00d3, 634 }, { 0x00d4, 648 },
+ { 0x00d5, 762 }, { 0x00d6, 660 }, { 0x00d7, 3247 }, { 0x00d8, 743 },
+ { 0x00d9, 1284 }, { 0x00da, 1248 }, { 0x00db, 1262 }, { 0x00dc, 1274 },
+ { 0x00dd, 1433 }, { 0x00de, 1240 }, { 0x00df, 2682 }, { 0x00e0, 1566 },
+ { 0x00e1, 1503 }, { 0x00e2, 1517 }, { 0x00e3, 1872 }, { 0x00e4, 1545 },
+ { 0x00e5, 1671 }, { 0x00e6, 1555 }, { 0x00e7, 2012 }, { 0x00e8, 2373 },
+ { 0x00e9, 2319 }, { 0x00ea, 2340 }, { 0x00eb, 2352 }, { 0x00ec, 2900 },
+ { 0x00ed, 2864 }, { 0x00ee, 2878 }, { 0x00ef, 2890 }, { 0x00f0, 2508 },
+ { 0x00f1, 3346 }, { 0x00f2, 3415 }, { 0x00f3, 3369 }, { 0x00f4, 3383 },
+ { 0x00f5, 3618 }, { 0x00f6, 3395 }, { 0x00f7, 2242 }, { 0x00f8, 3599 },
+ { 0x00f9, 4438 }, { 0x00fa, 4402 }, { 0x00fb, 4416 }, { 0x00fc, 4428 },
+ { 0x00fd, 4660 }, { 0x00fe, 4268 }, { 0x00ff, 4679 }, { 0x0100, 81 },
+ { 0x0101, 1596 }, { 0x0102, 28 }, { 0x0103, 1510 }, { 0x0104, 89 },
+ { 0x0105, 1651 }, { 0x0106, 130 }, { 0x0107, 1977 }, { 0x0108, 153 },
+ { 0x0109, 2021 }, { 0x010a, 165 }, { 0x010b, 2033 }, { 0x010c, 137 },
+ { 0x010d, 2005 }, { 0x010e, 182 }, { 0x010f, 2184 }, { 0x0110, 189 },
+ { 0x0111, 2191 }, { 0x0112, 265 }, { 0x0113, 2403 }, { 0x0114, 211 },
+ { 0x0115, 2326 }, { 0x0116, 247 }, { 0x0117, 2362 }, { 0x0118, 277 },
+ { 0x0119, 2438 }, { 0x011a, 218 }, { 0x011b, 2333 }, { 0x011c, 352 },
+ { 0x011d, 2659 }, { 0x011e, 338 }, { 0x011f, 2645 }, { 0x0120, 364 },
+ { 0x0121, 2671 }, { 0x0124, 410 }, { 0x0125, 2804 }, { 0x0126, 405 },
+ { 0x0127, 2799 }, { 0x0128, 534 }, { 0x0129, 3058 }, { 0x012a, 490 },
+ { 0x012b, 2910 }, { 0x012c, 434 }, { 0x012d, 2871 }, { 0x012e, 498 },
+ { 0x012f, 3004 }, { 0x0130, 463 }, { 0x0131, 2300 }, { 0x0132, 424 },
+ { 0x0133, 2907 }, { 0x0134, 543 }, { 0x0135, 3067 }, { 0x0138, 3087 },
+ { 0x0139, 565 }, { 0x013a, 3102 }, { 0x013d, 579 }, { 0x013e, 3116 },
+ { 0x013f, 586 }, { 0x0140, 3123 }, { 0x0141, 591 }, { 0x0142, 3202 },
+ { 0x0143, 605 }, { 0x0144, 3285 }, { 0x0147, 612 }, { 0x0148, 3304 },
+ { 0x0149, 3292 }, { 0x014a, 273 }, { 0x014b, 2434 }, { 0x014c, 697 },
+ { 0x014d, 3442 }, { 0x014e, 641 }, { 0x014f, 3376 }, { 0x0150, 683 },
+ { 0x0151, 3428 }, { 0x0152, 631 }, { 0x0153, 3405 }, { 0x0154, 786 },
+ { 0x0155, 3963 }, { 0x0158, 793 }, { 0x0159, 3978 }, { 0x015a, 1175 },
+ { 0x015b, 4057 }, { 0x015c, 1198 }, { 0x015d, 4080 }, { 0x015e, 1189 },
+ { 0x015f, 4071 }, { 0x0160, 1182 }, { 0x0161, 4064 }, { 0x0164, 1227 },
+ { 0x0165, 4238 }, { 0x0166, 1222 }, { 0x0167, 4233 }, { 0x0168, 1379 },
+ { 0x0169, 4594 }, { 0x016a, 1311 }, { 0x016b, 4465 }, { 0x016c, 1255 },
+ { 0x016d, 4409 }, { 0x016e, 1373 }, { 0x016f, 4588 }, { 0x0170, 1297 },
+ { 0x0171, 4451 }, { 0x0172, 1319 }, { 0x0173, 4514 }, { 0x0174, 1397 },
+ { 0x0175, 4612 }, { 0x0176, 1440 }, { 0x0177, 4667 }, { 0x0178, 1452 },
+ { 0x0179, 1471 }, { 0x017a, 4702 }, { 0x017b, 1485 }, { 0x017c, 4716 },
+ { 0x017d, 1478 }, { 0x017e, 4709 }, { 0x017f, 3188 }, { 0x0192, 2610 },
+ { 0x01a0, 677 }, { 0x01a1, 3422 }, { 0x01af, 1291 }, { 0x01b0, 4445 },
+ { 0x01e6, 345 }, { 0x01e7, 2652 }, { 0x01fa, 103 }, { 0x01fb, 1677 },
+ { 0x01fc, 13 }, { 0x01fd, 1558 }, { 0x01fe, 750 }, { 0x01ff, 3606 },
+ { 0x02c6, 2094 }, { 0x02c7, 1984 }, { 0x02d8, 1952 }, { 0x02d9, 2277 },
+ { 0x02da, 4042 }, { 0x02db, 3408 }, { 0x02dc, 4307 }, { 0x02dd, 2842 },
+ { 0x0300, 2708 }, { 0x0301, 1535 }, { 0x0303, 4313 }, { 0x0309, 2822 },
+ { 0x0323, 2287 }, { 0x0384, 4323 }, { 0x0385, 2228 }, { 0x0386, 70 },
+ { 0x0387, 1641 }, { 0x0388, 293 }, { 0x0389, 310 }, { 0x038a, 524 },
+ { 0x038c, 730 }, { 0x038e, 1360 }, { 0x038f, 711 }, { 0x0390, 3030 },
+ { 0x0391, 64 }, { 0x0392, 123 }, { 0x0393, 332 }, { 0x0395, 285 },
+ { 0x0396, 1496 }, { 0x0397, 306 }, { 0x0398, 1234 }, { 0x0399, 506 },
+ { 0x039a, 557 }, { 0x039b, 572 }, { 0x039c, 600 }, { 0x039d, 626 },
+ { 0x039e, 1428 }, { 0x039f, 722 }, { 0x03a0, 775 }, { 0x03a1, 809 },
+ { 0x03a3, 1210 }, { 0x03a4, 1218 }, { 0x03a5, 1327 }, { 0x03a6, 771 },
+ { 0x03a7, 176 }, { 0x03a8, 778 }, { 0x03aa, 511 }, { 0x03ab, 1344 },
+ { 0x03ac, 1585 }, { 0x03ad, 2454 }, { 0x03ae, 2499 }, { 0x03af, 3048 },
+ { 0x03b0, 4554 }, { 0x03b1, 1579 }, { 0x03b2, 1895 }, { 0x03b3, 2639 },
+ { 0x03b4, 2205 }, { 0x03b5, 2446 }, { 0x03b6, 4732 }, { 0x03b7, 2495 },
+ { 0x03b8, 4255 }, { 0x03b9, 3012 }, { 0x03ba, 3081 }, { 0x03bb, 3109 },
+ { 0x03bd, 3353 }, { 0x03be, 4655 }, { 0x03bf, 3474 }, { 0x03c0, 3742 },
+ { 0x03c1, 4038 }, { 0x03c2, 4148 }, { 0x03c3, 4142 }, { 0x03c4, 4229 },
+ { 0x03c5, 4530 }, { 0x03c6, 3733 }, { 0x03c7, 2057 }, { 0x03c8, 3822 },
+ { 0x03c9, 3450 }, { 0x03ca, 3017 }, { 0x03cb, 4538 }, { 0x03cc, 3482 },
+ { 0x03cd, 4575 }, { 0x03ce, 3463 }, { 0x03d1, 4261 }, { 0x03d2, 1335 },
+ { 0x03d5, 3737 }, { 0x03d6, 3456 }, { 0x1e80, 1419 }, { 0x1e81, 4646 },
+ { 0x1e82, 1390 }, { 0x1e83, 4605 }, { 0x1e84, 1409 }, { 0x1e85, 4624 },
+ { 0x1ef2, 1462 }, { 0x1ef3, 4693 }, { 0x2012, 2561 }, { 0x2013, 2427 },
+ { 0x2014, 2411 }, { 0x2017, 4484 }, { 0x2018, 3899 }, { 0x2019, 3923 },
+ { 0x201a, 3934 }, { 0x201b, 3909 }, { 0x201c, 3872 }, { 0x201d, 3885 },
+ { 0x201e, 3859 }, { 0x2020, 2167 }, { 0x2021, 2174 }, { 0x2022, 1968 },
+ { 0x2024, 3499 }, { 0x2025, 4375 }, { 0x2026, 2394 }, { 0x2030, 3714 },
+ { 0x2032, 3237 }, { 0x2033, 4092 }, { 0x2039, 2768 }, { 0x203a, 2782 },
+ { 0x203c, 2519 }, { 0x2044, 2622 }, { 0x20a1, 2116 }, { 0x20a3, 2631 },
+ { 0x20a4, 3151 }, { 0x20a7, 3726 }, { 0x20ab, 2272 }, { 0x20ac, 323 },
+ { 0x2111, 474 }, { 0x2118, 4634 }, { 0x211c, 800 }, { 0x211e, 3760 },
+ { 0x2122, 4329 }, { 0x2126, 705 }, { 0x212e, 2485 }, { 0x2135, 1573 },
+ { 0x2153, 3543 }, { 0x2154, 4390 }, { 0x215b, 3514 }, { 0x215c, 4280 },
+ { 0x215d, 2598 }, { 0x215e, 4123 }, { 0x2190, 1772 }, { 0x2191, 1793 },
+ { 0x2192, 1782 }, { 0x2193, 1762 }, { 0x2194, 1688 }, { 0x2195, 1801 },
+ { 0x21a8, 1811 }, { 0x21b5, 1990 }, { 0x21d0, 1724 }, { 0x21d1, 1751 },
+ { 0x21d2, 1737 }, { 0x21d3, 1711 }, { 0x21d4, 1698 }, { 0x2200, 4504 },
+ { 0x2202, 3658 }, { 0x2203, 2540 }, { 0x2205, 2418 }, { 0x2206, 196 },
+ { 0x2207, 2693 }, { 0x2208, 2386 }, { 0x2209, 3316 }, { 0x220b, 4204 },
+ { 0x220f, 3773 }, { 0x2211, 4213 }, { 0x2212, 3231 }, { 0x2217, 1856 },
+ { 0x221a, 3970 }, { 0x221d, 3809 }, { 0x221e, 2918 }, { 0x221f, 3588 },
+ { 0x2220, 1614 }, { 0x2227, 3156 }, { 0x2228, 3178 }, { 0x2229, 2958 },
+ { 0x222a, 4498 }, { 0x222b, 2927 }, { 0x2234, 4245 }, { 0x223c, 4155 },
+ { 0x2245, 2136 }, { 0x2248, 1659 }, { 0x2260, 3327 }, { 0x2261, 2473 },
+ { 0x2264, 3133 }, { 0x2265, 2726 }, { 0x2282, 3781 }, { 0x2283, 3794 },
+ { 0x2284, 3336 }, { 0x2286, 3985 }, { 0x2287, 3998 }, { 0x2295, 2083 },
+ { 0x2297, 2068 }, { 0x22a5, 3700 }, { 0x22c5, 2309 }, { 0x2302, 2836 },
+ { 0x2310, 4024 }, { 0x2320, 2947 }, { 0x2321, 2936 }, { 0x2329, 1620 },
+ { 0x232a, 1630 }, { 0x2500, 896 }, { 0x2502, 905 }, { 0x250c, 815 },
+ { 0x2510, 833 }, { 0x2514, 824 }, { 0x2518, 842 }, { 0x251c, 878 },
+ { 0x2524, 887 }, { 0x252c, 860 }, { 0x2534, 869 }, { 0x253c, 851 },
+ { 0x2550, 1067 }, { 0x2551, 959 }, { 0x2552, 1139 }, { 0x2553, 1148 },
+ { 0x2554, 1031 }, { 0x2555, 941 }, { 0x2556, 932 }, { 0x2557, 968 },
+ { 0x2558, 1130 }, { 0x2559, 1121 }, { 0x255a, 1022 }, { 0x255b, 995 },
+ { 0x255c, 986 }, { 0x255d, 977 }, { 0x255e, 1004 }, { 0x255f, 1013 },
+ { 0x2560, 1058 }, { 0x2561, 914 }, { 0x2562, 923 }, { 0x2563, 950 },
+ { 0x2564, 1103 }, { 0x2565, 1112 }, { 0x2566, 1049 }, { 0x2567, 1085 },
+ { 0x2568, 1094 }, { 0x2569, 1040 }, { 0x256a, 1166 }, { 0x256b, 1157 },
+ { 0x256c, 1076 }, { 0x2580, 4522 }, { 0x2584, 2257 }, { 0x2588, 1900 },
+ { 0x258c, 3143 }, { 0x2590, 4047 }, { 0x2591, 3209 }, { 0x2592, 4136 },
+ { 0x2593, 2249 }, { 0x25a0, 2572 }, { 0x25a1, 398 }, { 0x25aa, 384 },
+ { 0x25ab, 391 }, { 0x25ac, 2582 }, { 0x25b2, 4363 }, { 0x25ba, 4355 },
+ { 0x25bc, 4339 }, { 0x25c4, 4347 }, { 0x25ca, 3194 }, { 0x25cb, 2061 },
+ { 0x25cf, 377 }, { 0x25d8, 2971 }, { 0x25d9, 2981 }, { 0x25e6, 3552 },
+ { 0x263a, 4173 }, { 0x263b, 2991 }, { 0x263c, 4223 }, { 0x2640, 2554 },
+ { 0x2642, 3226 }, { 0x2660, 4189 }, { 0x2663, 2105 }, { 0x2665, 2816 },
+ { 0x2666, 2211 }, { 0x266a, 3256 }, { 0x266b, 3268 }
+};
+
+enum { unicode_to_agl_map_size = sizeof(unicode_to_agl_map) / sizeof(unicode_to_agl_map[0]) };
+
+}