unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: 30539@debbugs.gnu.org
Subject: bug#30539: 26.0; `char-displayable-p' is much slower in Emacs 25 and 26
Date: Tue, 20 Feb 2018 10:08:36 -0800 (PST)	[thread overview]
Message-ID: <ec3497d7-9a7d-4be8-8712-19bb6bdd96e8@default> (raw)
In-Reply-To: <8c79c39f-7abb-4591-a676-17fb46af5a8f@default>

[-- Attachment #1: Type: text/plain, Size: 1116 bytes --]

Sorry, the recipe I sent before was not good.  The initial
alist of chars had already been purged of any chars that
are not `char-displayable-p'.

Please try attached file `throw-mule-bug-2.el' instead.
This time the alist of chars in variable `char-names'
includes some chars that are not `char-displayable-p'.
Evaluating `char-displayable-p' for those chars is, I
think, where the bottleneck is.

Evaluate the code in `throw-mule-bug-2.el' and then check
buffers *CPU Profiler Report* and *Memory Profiler Report*.

I've attached those reports as these files:

throw-mule-bug-cpu-report2-E24-Q - Emacs 24.5 from `emacs -Q'
throw-mule-bug-mem-report2-E24-Q - Emacs 24.5 from `emacs -Q'
throw-mule-bug-cpu-report2-E26-Q - Emacs 26P2 from `emacs -Q'
throw-mule-bug-mem-report2-E26-Q - Emacs 26P2 from `emacs -Q'

You can see these reports by using `M-x profiler-find-profile'
and entering the report file name at the prompt.

In Emacs 24.5 evaluating `(my-test)' takes only a few _seconds_.
In Emacs 26 (Pretest 2) it takes about 13 _minutes_.

Emacs 25.3.1 has the same problem as Emacs 26.

[-- Attachment #2: throw-mule-bug-cpu-report2-E24-Q --]
[-- Type: application/octet-stream, Size: 1160 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 17 [image-search-load-path find-image eval "#<compiled 0x4a017b>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) redisplay "#<compiled 0x5d2449>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively] 1 [car cond char-displayable-p my-char-displayable-p funcall not and while my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil] 8 [car cond char-displayable-p my-char-displayable-p funcall not if while let my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute] 400 [read-event "#<compiled 0xe9e3f7>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil nil nil nil] 1 ["#<compiled 0xe9e3f7>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil nil nil nil nil] 1 [Automatic\ GC] 7)) (23180 24689 277000 0) nil]

[-- Attachment #3: throw-mule-bug-mem-report2-E24-Q --]
[-- Type: application/octet-stream, Size: 5903 bytes --]


[profiler-profile "24.3" memory #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([cond profiler-start eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil] 869 [profiler-start eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 0 [eval-last-sexp-print-value eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 183208 [mouse-fixup-help-message nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 512 [image-search-load-path find-image eval "#<compiled 0x4a017b>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) redisplay "#<compiled 0x5d2449>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively] 656470 [redisplay "#<compiled 0x5d2449>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil nil nil nil] 1582 [image-search-load-path find-image redisplay_internal\ \(C\ function\) redisplay "#<compiled 0x5d2449>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil] 205156 ["#<compiled 0x5d2449>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil nil nil nil nil] 2800 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 772088 [image-search-load-path find-image redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil] 984480 [car cond char-displayable-p my-char-displayable-p funcall not and while my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil] 536870911 [my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil] 271 [my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 89838 [car cond char-displayable-p my-char-displayable-p funcall not if while let my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute] 536870911 [if while let my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil] 1370 [while let my-delete-if-not my-test eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil] 127635 [image-search-load-path find-image eval "#<compiled 0x4a017b>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil] 660084 [byte-code kill-this-buffer-enabled-p redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil] 512 [read-event "#<compiled 0xe9e3f7>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil nil nil nil] 1911 [image-search-load-path find-image redisplay_internal\ \(C\ function\) read-event "#<compiled 0xe9e3f7>" funcall track-mouse eval mouse-drag-track mouse-drag-region call-interactively command-execute nil nil nil nil] 196968 [looking-back preceding-sexp eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 512 [profiler-make-profile progn if profiler-cpu-profile let profiler-report-cpu profiler-report eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil] 943516 [format profiler-report-make-buffer-name let* profiler-report-setup-buffer-1 let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval eval-last-sexp-1 eval-last-sexp] 131104 [let* profiler-report-setup-buffer-1 let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute] 536 [let profiler-calltree-build-unified if let let* profiler-calltree-build let let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window] 4120 [replace-regexp-in-string let* profiler-report-header-line-format cond setq let let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn] 512 [next-single-property-change let profiler-report-move-to-entry let let let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if] 352 [byte-code split-window split-window-below split-window-sensibly funcall window--try-to-split-window display-buffer-pop-up-window display-buffer--maybe-pop-up-frame-or-window display-buffer pop-to-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu] 234521 [window--display-buffer display-buffer-pop-up-window display-buffer--maybe-pop-up-frame-or-window display-buffer pop-to-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval eval-last-sexp-1 eval-last-sexp call-interactively] 226113 [profiler-make-profile progn if profiler-memory-profile let profiler-report-memory profiler-report eval eval-last-sexp-1 eval-last-sexp call-interactively command-execute nil nil nil nil] 947636)) (23180 24689 286000 0) nil]

[-- Attachment #4: throw-mule-bug-cpu-report2-E26-Q --]
[-- Type: application/octet-stream, Size: 1022 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([cond profiler-start eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 1 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 20 [forward-sexp elisp--beginning-of-sexp elisp--fnsym-in-current-sexp elisp-eldoc-documentation-function apply "#<compiled 0x100280b99>" eldoc-print-current-symbol-info "#<compiled 0x1000e08b5>" apply timer-event-handler nil nil nil nil nil nil] 3 [let cond char-displayable-p my-char-displayable-p funcall not and while my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute] 8 [let cond char-displayable-p my-char-displayable-p funcall not if while let my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively] 47385 [Automatic\ GC] 356)) (23180 24302 678831 0) nil]

[-- Attachment #5: throw-mule-bug-mem-report2-E26-Q --]
[-- Type: application/octet-stream, Size: 5810 bytes --]


[profiler-profile "24.3" memory #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([cond profiler-start eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 1033 [profiler-start eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 0 [elisp--eval-last-sexp-print-value elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 191884 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 149521733 [image-search-load-path find-image eval "#<compiled 0x1000dabd5>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil] 5764 [image-search-load-path find-image redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil] 3066 [if eval redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil] 2112 [timer-until timer-event-handler nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 3168 [timer-relative-time timer-inc-time timer-event-handler nil nil nil nil nil nil nil nil nil nil nil nil nil] 2112 [redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 1056 [timer-event-handler nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 1064 [timer-inc-time timer-event-handler nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 2112 [let cond char-displayable-p my-char-displayable-p funcall not and while my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute] 3953931 [cond char-displayable-p my-char-displayable-p funcall not and while my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil] 219833 [let cond char-displayable-p my-char-displayable-p funcall not if while let my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively] 6214693867 [cond char-displayable-p my-char-displayable-p funcall not if while let my-delete-if-not my-test eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute] 705364383 [kill-this-buffer-enabled-p redisplay_internal\ \(C\ function\) nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 512 [mouse-fixup-help-message nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 512 [looking-back elisp--preceding-sexp elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 512 [elisp--preceding-sexp elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 512 [profiler-make-profile progn if profiler-cpu-profile let profiler-report-cpu profiler-report eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil] 1742916 [progn if profiler-cpu-profile let profiler-report-cpu profiler-report eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil] 0 [format profiler-report-make-buffer-name let* profiler-report-setup-buffer-1 let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval elisp--eval-last-sexp eval-last-sexp] 32 [let* profiler-report-setup-buffer-1 let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively] 1040 [let profiler-calltree-build-unified if let progn let* profiler-calltree-build let progn let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer] 4136 [and or progn profiler-format-percent aset let* progn "#<lambda 0x3c1ba4d9e57aa893>" funcall profiler-calltree-walk let while let profiler-calltree-walk let while] 10240 [replace-regexp-in-string let* profiler-report-header-line-format cond let* setq let progn let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer switch-to-buffer-other-window] 512 [next-single-property-change let profiler-report-move-to-entry let let progn let* profiler-report-render-calltree-1 profiler-report-rerender-calltree profiler-report-render-calltree save-current-buffer let profiler-report-setup-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn] 704 [split-window split-window-below split-window-sensibly window--try-to-split-window display-buffer-pop-up-window display-buffer--maybe-pop-up-frame-or-window display-buffer pop-to-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval] 336657 [window--display-buffer display-buffer-pop-up-window display-buffer--maybe-pop-up-frame-or-window display-buffer pop-to-buffer switch-to-buffer-other-window profiler-report-profile-other-window progn if let profiler-report-cpu profiler-report eval elisp--eval-last-sexp eval-last-sexp funcall-interactively] 323137 [profiler-make-profile progn if profiler-memory-profile let profiler-report-memory profiler-report eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil] 1895296)) (23180 24302 716835 0) nil]

[-- Attachment #6: throw-mule-bug-2.el --]
[-- Type: application/octet-stream, Size: 66452 bytes --]

(defvar char-names '(("TAG LATIN SMALL LETTER Z" . 917626)
                     ("TAG LATIN SMALL LETTER Y" . 917625)
                     ("TAG LATIN SMALL LETTER X" . 917624)
                     ("TAG LATIN SMALL LETTER W" . 917623)
                     ("TAG LATIN SMALL LETTER V" . 917622)
                     ("TAG LATIN SMALL LETTER U" . 917621)
                     ("TAG LATIN SMALL LETTER T" . 917620)
                     ("TAG LATIN SMALL LETTER S" . 917619)
                     ("TAG LATIN SMALL LETTER R" . 917618)
                     ("TAG LATIN SMALL LETTER Q" . 917617)
                     ("TAG LATIN SMALL LETTER P" . 917616)
                     ("TAG LATIN SMALL LETTER O" . 917615)
                     ("TAG LATIN SMALL LETTER N" . 917614)
                     ("TAG LATIN SMALL LETTER M" . 917613)
                     ("TAG LATIN SMALL LETTER L" . 917612)
                     ("TAG LATIN SMALL LETTER K" . 917611)
                     ("TAG LATIN SMALL LETTER J" . 917610)
                     ("TAG LATIN SMALL LETTER I" . 917609)
                     ("TAG LATIN SMALL LETTER H" . 917608)
                     ("TAG LATIN SMALL LETTER G" . 917607)
                     ("TAG LATIN SMALL LETTER F" . 917606)
                     ("TAG LATIN SMALL LETTER E" . 917605)
                     ("TAG LATIN SMALL LETTER D" . 917604)
                     ("TAG LATIN SMALL LETTER C" . 917603)
                     ("TAG LATIN SMALL LETTER B" . 917602)
                     ("TAG LATIN SMALL LETTER A" . 917601)
                     ("INPUT SYMBOL FOR LATIN SMALL LETTERS" . 128289)
                     ("SQUARED LATIN SMALL LETTER D" . 127397)
                     ("FULLWIDTH LATIN SMALL LETTER Z" . 65370)
                     ("FULLWIDTH LATIN SMALL LETTER Y" . 65369)
                     ("FULLWIDTH LATIN SMALL LETTER X" . 65368)
                     ("FULLWIDTH LATIN SMALL LETTER W" . 65367)
                     ("FULLWIDTH LATIN SMALL LETTER V" . 65366)
                     ("FULLWIDTH LATIN SMALL LETTER U" . 65365)
                     ("FULLWIDTH LATIN SMALL LETTER T" . 65364)
                     ("FULLWIDTH LATIN SMALL LETTER S" . 65363)
                     ("FULLWIDTH LATIN SMALL LETTER R" . 65362)
                     ("FULLWIDTH LATIN SMALL LETTER Q" . 65361)
                     ("FULLWIDTH LATIN SMALL LETTER P" . 65360)
                     ("FULLWIDTH LATIN SMALL LETTER O" . 65359)
                     ("FULLWIDTH LATIN SMALL LETTER N" . 65358)
                     ("FULLWIDTH LATIN SMALL LETTER M" . 65357)
                     ("FULLWIDTH LATIN SMALL LETTER L" . 65356)
                     ("FULLWIDTH LATIN SMALL LETTER K" . 65355)
                     ("FULLWIDTH LATIN SMALL LETTER J" . 65354)
                     ("FULLWIDTH LATIN SMALL LETTER I" . 65353)
                     ("FULLWIDTH LATIN SMALL LETTER H" . 65352)
                     ("FULLWIDTH LATIN SMALL LETTER G" . 65351)
                     ("FULLWIDTH LATIN SMALL LETTER F" . 65350)
                     ("FULLWIDTH LATIN SMALL LETTER E" . 65349)
                     ("FULLWIDTH LATIN SMALL LETTER D" . 65348)
                     ("FULLWIDTH LATIN SMALL LETTER C" . 65347)
                     ("FULLWIDTH LATIN SMALL LETTER B" . 65346)
                     ("FULLWIDTH LATIN SMALL LETTER A" . 65345)
                     ("LATIN SMALL LETTER INVERTED ALPHA" . 43876)
                     ("LATIN SMALL LETTER UO" . 43875)
                     ("LATIN SMALL LETTER OPEN OE" . 43874)
                     ("LATIN SMALL LETTER IOTIFIED E" . 43873)
                     ("LATIN SMALL LETTER SAKHA YAT" . 43872)
                     ("LATIN SMALL LETTER Y WITH SHORT RIGHT LEG" . 43866)
                     ("LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF" . 43865)
                     ("LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING" . 43864)
                     ("LATIN SMALL LETTER X WITH LONG LEFT LEG" . 43863)
                     ("LATIN SMALL LETTER X WITH LOW RIGHT RING" . 43862)
                     ("LATIN SMALL LETTER CHI WITH LOW LEFT SERIF" . 43861)
                     ("LATIN SMALL LETTER CHI WITH LOW RIGHT RING" . 43860)
                     ("LATIN SMALL LETTER CHI" . 43859)
                     ("LATIN SMALL LETTER U WITH LEFT HOOK" . 43858)
                     ("LATIN SMALL LETTER TURNED UI" . 43857)
                     ("LATIN SMALL LETTER UI" . 43856)
                     ("LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG" . 43855)
                     ("LATIN SMALL LETTER U WITH SHORT RIGHT LEG" . 43854)
                     ("LATIN SMALL LETTER BASELINE ESH" . 43853)
                     ("LATIN SMALL LETTER SCRIPT R WITH RING" . 43852)
                     ("LATIN SMALL LETTER SCRIPT R" . 43851)
                     ("LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL" . 43850)
                     ("LATIN SMALL LETTER R WITH CROSSED-TAIL" . 43849)
                     ("LATIN SMALL LETTER DOUBLE R" . 43848)
                     ("LATIN SMALL LETTER R WITHOUT HANDLE" . 43847)
                     ("LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG" . 43846)
                     ("LATIN SMALL LETTER STIRRUP R" . 43845)
                     ("LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE" . 43844)
                     ("LATIN SMALL LETTER TURNED O OPEN-O" . 43843)
                     ("LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE" . 43842)
                     ("LATIN SMALL LETTER TURNED OE WITH STROKE" . 43841)
                     ("LATIN SMALL LETTER INVERTED OE" . 43840)
                     ("LATIN SMALL LETTER OPEN O WITH STROKE" . 43839)
                     ("LATIN SMALL LETTER BLACKLETTER O WITH STROKE" . 43838)
                     ("LATIN SMALL LETTER BLACKLETTER O" . 43837)
                     ("LATIN SMALL LETTER ENG WITH CROSSED-TAIL" . 43836)
                     ("LATIN SMALL LETTER N WITH CROSSED-TAIL" . 43835)
                     ("LATIN SMALL LETTER M WITH CROSSED-TAIL" . 43834)
                     ("LATIN SMALL LETTER L WITH MIDDLE RING" . 43833)
                     ("LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE" . 43832)
                     ("LATIN SMALL LETTER L WITH INVERTED LAZY S" . 43831)
                     ("LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL" . 43830)
                     ("LATIN SMALL LETTER LENIS F" . 43829)
                     ("LATIN SMALL LETTER E WITH FLOURISH" . 43828)
                     ("LATIN SMALL LETTER BARRED E" . 43827)
                     ("LATIN SMALL LETTER BLACKLETTER E" . 43826)
                     ("LATIN SMALL LETTER A REVERSED-SCHWA" . 43825)
                     ("LATIN SMALL LETTER BARRED ALPHA" . 43824)
                     ("LATIN LETTER SMALL CAPITAL TURNED M" . 43002)
                     ("LATIN SMALL LETTER OMEGA" . 42935)
                     ("LATIN SMALL LETTER BETA" . 42933)
                     ("LATIN CAPITAL LETTER SMALL CAPITAL I" . 42926)
                     ("LATIN SMALL LETTER S WITH OBLIQUE STROKE" . 42921)
                     ("LATIN SMALL LETTER R WITH OBLIQUE STROKE" . 42919)
                     ("LATIN SMALL LETTER N WITH OBLIQUE STROKE" . 42917)
                     ("LATIN SMALL LETTER K WITH OBLIQUE STROKE" . 42915)
                     ("LATIN SMALL LETTER G WITH OBLIQUE STROKE" . 42913)
                     ("LATIN SMALL LETTER VOLAPUK UE" . 42911)
                     ("LATIN SMALL LETTER VOLAPUK OE" . 42909)
                     ("LATIN SMALL LETTER VOLAPUK AE" . 42907)
                     ("LATIN SMALL LETTER F WITH STROKE" . 42905)
                     ("LATIN SMALL LETTER B WITH FLOURISH" . 42903)
                     ("LATIN SMALL LETTER H WITH PALATAL HOOK" . 42901)
                     ("LATIN SMALL LETTER C WITH PALATAL HOOK" . 42900)
                     ("LATIN SMALL LETTER C WITH BAR" . 42899)
                     ("LATIN SMALL LETTER N WITH DESCENDER" . 42897)
                     ("LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT" . 42894)
                     ("LATIN SMALL LETTER SALTILLO" . 42892)
                     ("LATIN SMALL LETTER INSULAR T" . 42887)
                     ("LATIN SMALL LETTER INSULAR S" . 42885)
                     ("LATIN SMALL LETTER INSULAR R" . 42883)
                     ("LATIN SMALL LETTER TURNED L" . 42881)
                     ("LATIN SMALL LETTER TURNED INSULAR G" . 42879)
                     ("LATIN SMALL LETTER INSULAR F" . 42876)
                     ("LATIN SMALL LETTER INSULAR D" . 42874)
                     ("LATIN SMALL LETTER UM" . 42872)
                     ("LATIN SMALL LETTER TUM" . 42871)
                     ("LATIN LETTER SMALL CAPITAL RUM" . 42870)
                     ("LATIN SMALL LETTER RUM" . 42869)
                     ("LATIN SMALL LETTER NUM" . 42868)
                     ("LATIN SMALL LETTER MUM" . 42867)
                     ("LATIN SMALL LETTER LUM" . 42866)
                     ("LATIN SMALL LETTER DUM" . 42865)
                     ("LATIN SMALL LETTER CON" . 42863)
                     ("LATIN SMALL LETTER IS" . 42861)
                     ("LATIN SMALL LETTER ET" . 42859)
                     ("LATIN SMALL LETTER VEND" . 42857)
                     ("LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER" . 42855)
                     ("LATIN SMALL LETTER THORN WITH STROKE" . 42853)
                     ("LATIN SMALL LETTER VISIGOTHIC Z" . 42851)
                     ("LATIN SMALL LETTER VY" . 42849)
                     ("LATIN SMALL LETTER V WITH DIAGONAL STROKE" . 42847)
                     ("LATIN SMALL LETTER RUM ROTUNDA" . 42845)
                     ("LATIN SMALL LETTER R ROTUNDA" . 42843)
                     ("LATIN SMALL LETTER Q WITH DIAGONAL STROKE" . 42841)
                     ("LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER" . 42839)
                     ("LATIN SMALL LETTER P WITH SQUIRREL TAIL" . 42837)
                     ("LATIN SMALL LETTER P WITH FLOURISH" . 42835)
                     ("LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER" . 42833)
                     ("LATIN SMALL LETTER OO" . 42831)
                     ("LATIN SMALL LETTER O WITH LOOP" . 42829)
                     ("LATIN SMALL LETTER O WITH LONG STROKE OVERLAY" . 42827)
                     ("LATIN SMALL LETTER L WITH HIGH STROKE" . 42825)
                     ("LATIN SMALL LETTER BROKEN L" . 42823)
                     ("LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE" . 42821)
                     ("LATIN SMALL LETTER K WITH DIAGONAL STROKE" . 42819)
                     ("LATIN SMALL LETTER K WITH STROKE" . 42817)
                     ("LATIN SMALL LETTER REVERSED C WITH DOT" . 42815)
                     ("LATIN SMALL LETTER AY" . 42813)
                     ("LATIN SMALL LETTER AV WITH HORIZONTAL BAR" . 42811)
                     ("LATIN SMALL LETTER AV" . 42809)
                     ("LATIN SMALL LETTER AU" . 42807)
                     ("LATIN SMALL LETTER AO" . 42805)
                     ("LATIN SMALL LETTER AA" . 42803)
                     ("LATIN LETTER SMALL CAPITAL S" . 42801)
                     ("LATIN LETTER SMALL CAPITAL F" . 42800)
                     ("LATIN SMALL LETTER CUATRILLO WITH COMMA" . 42799)
                     ("LATIN SMALL LETTER CUATRILLO" . 42797)
                     ("LATIN SMALL LETTER TRESILLO" . 42795)
                     ("LATIN SMALL LETTER TZ" . 42793)
                     ("LATIN SMALL LETTER HENG" . 42791)
                     ("LATIN SMALL LETTER EGYPTOLOGICAL AIN" . 42789)
                     ("LATIN SMALL LETTER EGYPTOLOGICAL ALEF" . 42787)
                     ("LATIN SUBSCRIPT SMALL LETTER J" . 11388)
                     ("LATIN LETTER SMALL CAPITAL TURNED E" . 11387)
                     ("LATIN SMALL LETTER O WITH LOW RING INSIDE" . 11386)
                     ("LATIN SMALL LETTER TURNED R WITH TAIL" . 11385)
                     ("LATIN SMALL LETTER E WITH NOTCH" . 11384)
                     ("LATIN SMALL LETTER TAILLESS PHI" . 11383)
                     ("LATIN SMALL LETTER HALF H" . 11382)
                     ("LATIN SMALL LETTER V WITH CURL" . 11380)
                     ("LATIN SMALL LETTER W WITH HOOK" . 11379)
                     ("LATIN SMALL LETTER V WITH RIGHT HOOK" . 11377)
                     ("LATIN SMALL LETTER Z WITH DESCENDER" . 11372)
                     ("LATIN SMALL LETTER K WITH DESCENDER" . 11370)
                     ("LATIN SMALL LETTER H WITH DESCENDER" . 11368)
                     ("LATIN SMALL LETTER T WITH DIAGONAL STROKE" . 11366)
                     ("LATIN SMALL LETTER A WITH STROKE" . 11365)
                     ("LATIN SMALL LETTER L WITH DOUBLE BAR" . 11361)
                     ("GLAGOLITIC SMALL LETTER LATINATE MYSLITE" . 11358)
                     ("CIRCLED LATIN SMALL LETTER Z" . 9449)
                     ("CIRCLED LATIN SMALL LETTER Y" . 9448)
                     ("CIRCLED LATIN SMALL LETTER X" . 9447)
                     ("CIRCLED LATIN SMALL LETTER W" . 9446)
                     ("CIRCLED LATIN SMALL LETTER V" . 9445)
                     ("CIRCLED LATIN SMALL LETTER U" . 9444)
                     ("CIRCLED LATIN SMALL LETTER T" . 9443)
                     ("CIRCLED LATIN SMALL LETTER S" . 9442)
                     ("CIRCLED LATIN SMALL LETTER R" . 9441)
                     ("CIRCLED LATIN SMALL LETTER Q" . 9440)
                     ("CIRCLED LATIN SMALL LETTER P" . 9439)
                     ("CIRCLED LATIN SMALL LETTER O" . 9438)
                     ("CIRCLED LATIN SMALL LETTER N" . 9437)
                     ("CIRCLED LATIN SMALL LETTER M" . 9436)
                     ("CIRCLED LATIN SMALL LETTER L" . 9435)
                     ("CIRCLED LATIN SMALL LETTER K" . 9434)
                     ("CIRCLED LATIN SMALL LETTER J" . 9433)
                     ("CIRCLED LATIN SMALL LETTER I" . 9432)
                     ("CIRCLED LATIN SMALL LETTER H" . 9431)
                     ("CIRCLED LATIN SMALL LETTER G" . 9430)
                     ("CIRCLED LATIN SMALL LETTER F" . 9429)
                     ("CIRCLED LATIN SMALL LETTER E" . 9428)
                     ("CIRCLED LATIN SMALL LETTER D" . 9427)
                     ("CIRCLED LATIN SMALL LETTER C" . 9426)
                     ("CIRCLED LATIN SMALL LETTER B" . 9425)
                     ("CIRCLED LATIN SMALL LETTER A" . 9424)
                     ("PARENTHESIZED LATIN SMALL LETTER Z" . 9397)
                     ("PARENTHESIZED LATIN SMALL LETTER Y" . 9396)
                     ("PARENTHESIZED LATIN SMALL LETTER X" . 9395)
                     ("PARENTHESIZED LATIN SMALL LETTER W" . 9394)
                     ("PARENTHESIZED LATIN SMALL LETTER V" . 9393)
                     ("PARENTHESIZED LATIN SMALL LETTER U" . 9392)
                     ("PARENTHESIZED LATIN SMALL LETTER T" . 9391)
                     ("PARENTHESIZED LATIN SMALL LETTER S" . 9390)
                     ("PARENTHESIZED LATIN SMALL LETTER R" . 9389)
                     ("PARENTHESIZED LATIN SMALL LETTER Q" . 9388)
                     ("PARENTHESIZED LATIN SMALL LETTER P" . 9387)
                     ("PARENTHESIZED LATIN SMALL LETTER O" . 9386)
                     ("PARENTHESIZED LATIN SMALL LETTER N" . 9385)
                     ("PARENTHESIZED LATIN SMALL LETTER M" . 9384)
                     ("PARENTHESIZED LATIN SMALL LETTER L" . 9383)
                     ("PARENTHESIZED LATIN SMALL LETTER K" . 9382)
                     ("PARENTHESIZED LATIN SMALL LETTER J" . 9381)
                     ("PARENTHESIZED LATIN SMALL LETTER I" . 9380)
                     ("PARENTHESIZED LATIN SMALL LETTER H" . 9379)
                     ("PARENTHESIZED LATIN SMALL LETTER G" . 9378)
                     ("PARENTHESIZED LATIN SMALL LETTER F" . 9377)
                     ("PARENTHESIZED LATIN SMALL LETTER E" . 9376)
                     ("PARENTHESIZED LATIN SMALL LETTER D" . 9375)
                     ("PARENTHESIZED LATIN SMALL LETTER C" . 9374)
                     ("PARENTHESIZED LATIN SMALL LETTER B" . 9373)
                     ("PARENTHESIZED LATIN SMALL LETTER A" . 9372)
                     ("LATIN SMALL LETTER REVERSED C" . 8580)
                     ("LATIN SUBSCRIPT SMALL LETTER T" . 8348)
                     ("LATIN SUBSCRIPT SMALL LETTER S" . 8347)
                     ("LATIN SUBSCRIPT SMALL LETTER P" . 8346)
                     ("LATIN SUBSCRIPT SMALL LETTER N" . 8345)
                     ("LATIN SUBSCRIPT SMALL LETTER M" . 8344)
                     ("LATIN SUBSCRIPT SMALL LETTER L" . 8343)
                     ("LATIN SUBSCRIPT SMALL LETTER K" . 8342)
                     ("LATIN SUBSCRIPT SMALL LETTER H" . 8341)
                     ("LATIN SUBSCRIPT SMALL LETTER SCHWA" . 8340)
                     ("LATIN SUBSCRIPT SMALL LETTER X" . 8339)
                     ("LATIN SUBSCRIPT SMALL LETTER O" . 8338)
                     ("LATIN SUBSCRIPT SMALL LETTER E" . 8337)
                     ("LATIN SUBSCRIPT SMALL LETTER A" . 8336)
                     ("SUPERSCRIPT LATIN SMALL LETTER N" . 8319)
                     ("SUPERSCRIPT LATIN SMALL LETTER I" . 8305)
                     ("LATIN SMALL LETTER Y WITH LOOP" . 7935)
                     ("LATIN SMALL LETTER MIDDLE-WELSH V" . 7933)
                     ("LATIN SMALL LETTER MIDDLE-WELSH LL" . 7931)
                     ("LATIN SMALL LETTER Y WITH TILDE" . 7929)
                     ("LATIN SMALL LETTER Y WITH HOOK ABOVE" . 7927)
                     ("LATIN SMALL LETTER Y WITH DOT BELOW" . 7925)
                     ("LATIN SMALL LETTER Y WITH GRAVE" . 7923)
                     ("LATIN SMALL LETTER U WITH HORN AND DOT BELOW" . 7921)
                     ("LATIN SMALL LETTER U WITH HORN AND TILDE" . 7919)
                     ("LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE" . 7917)
                     ("LATIN SMALL LETTER U WITH HORN AND GRAVE" . 7915)
                     ("LATIN SMALL LETTER U WITH HORN AND ACUTE" . 7913)
                     ("LATIN SMALL LETTER U WITH HOOK ABOVE" . 7911)
                     ("LATIN SMALL LETTER U WITH DOT BELOW" . 7909)
                     ("LATIN SMALL LETTER O WITH HORN AND DOT BELOW" . 7907)
                     ("LATIN SMALL LETTER O WITH HORN AND TILDE" . 7905)
                     ("LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE" . 7903)
                     ("LATIN SMALL LETTER O WITH HORN AND GRAVE" . 7901)
                     ("LATIN SMALL LETTER O WITH HORN AND ACUTE" . 7899)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW" . 7897)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE" . 7895)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE" . 7893)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE" . 7891)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE" . 7889)
                     ("LATIN SMALL LETTER O WITH HOOK ABOVE" . 7887)
                     ("LATIN SMALL LETTER O WITH DOT BELOW" . 7885)
                     ("LATIN SMALL LETTER I WITH DOT BELOW" . 7883)
                     ("LATIN SMALL LETTER I WITH HOOK ABOVE" . 7881)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW" . 7879)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE" . 7877)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE" . 7875)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE" . 7873)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE" . 7871)
                     ("LATIN SMALL LETTER E WITH TILDE" . 7869)
                     ("LATIN SMALL LETTER E WITH HOOK ABOVE" . 7867)
                     ("LATIN SMALL LETTER E WITH DOT BELOW" . 7865)
                     ("LATIN SMALL LETTER A WITH BREVE AND DOT BELOW" . 7863)
                     ("LATIN SMALL LETTER A WITH BREVE AND TILDE" . 7861)
                     ("LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE" . 7859)
                     ("LATIN SMALL LETTER A WITH BREVE AND GRAVE" . 7857)
                     ("LATIN SMALL LETTER A WITH BREVE AND ACUTE" . 7855)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW" . 7853)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE" . 7851)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE" . 7849)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE" . 7847)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE" . 7845)
                     ("LATIN SMALL LETTER A WITH HOOK ABOVE" . 7843)
                     ("LATIN SMALL LETTER A WITH DOT BELOW" . 7841)
                     ("LATIN SMALL LETTER DELTA" . 7839)
                     ("LATIN SMALL LETTER LONG S WITH HIGH STROKE" . 7837)
                     ("LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE" . 7836)
                     ("LATIN SMALL LETTER LONG S WITH DOT ABOVE" . 7835)
                     ("LATIN SMALL LETTER A WITH RIGHT HALF RING" . 7834)
                     ("LATIN SMALL LETTER Y WITH RING ABOVE" . 7833)
                     ("LATIN SMALL LETTER W WITH RING ABOVE" . 7832)
                     ("LATIN SMALL LETTER T WITH DIAERESIS" . 7831)
                     ("LATIN SMALL LETTER H WITH LINE BELOW" . 7830)
                     ("LATIN SMALL LETTER Z WITH LINE BELOW" . 7829)
                     ("LATIN SMALL LETTER Z WITH DOT BELOW" . 7827)
                     ("LATIN SMALL LETTER Z WITH CIRCUMFLEX" . 7825)
                     ("LATIN SMALL LETTER Y WITH DOT ABOVE" . 7823)
                     ("LATIN SMALL LETTER X WITH DIAERESIS" . 7821)
                     ("LATIN SMALL LETTER X WITH DOT ABOVE" . 7819)
                     ("LATIN SMALL LETTER W WITH DOT BELOW" . 7817)
                     ("LATIN SMALL LETTER W WITH DOT ABOVE" . 7815)
                     ("LATIN SMALL LETTER W WITH DIAERESIS" . 7813)
                     ("LATIN SMALL LETTER W WITH ACUTE" . 7811)
                     ("LATIN SMALL LETTER W WITH GRAVE" . 7809)
                     ("LATIN SMALL LETTER V WITH DOT BELOW" . 7807)
                     ("LATIN SMALL LETTER V WITH TILDE" . 7805)
                     ("LATIN SMALL LETTER U WITH MACRON AND DIAERESIS" . 7803)
                     ("LATIN SMALL LETTER U WITH TILDE AND ACUTE" . 7801)
                     ("LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW" . 7799)
                     ("LATIN SMALL LETTER U WITH TILDE BELOW" . 7797)
                     ("LATIN SMALL LETTER U WITH DIAERESIS BELOW" . 7795)
                     ("LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW" . 7793)
                     ("LATIN SMALL LETTER T WITH LINE BELOW" . 7791)
                     ("LATIN SMALL LETTER T WITH DOT BELOW" . 7789)
                     ("LATIN SMALL LETTER T WITH DOT ABOVE" . 7787)
                     ("LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE" . 7785)
                     ("LATIN SMALL LETTER S WITH CARON AND DOT ABOVE" . 7783)
                     ("LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE" . 7781)
                     ("LATIN SMALL LETTER S WITH DOT BELOW" . 7779)
                     ("LATIN SMALL LETTER S WITH DOT ABOVE" . 7777)
                     ("LATIN SMALL LETTER R WITH LINE BELOW" . 7775)
                     ("LATIN SMALL LETTER R WITH DOT BELOW AND MACRON" . 7773)
                     ("LATIN SMALL LETTER R WITH DOT BELOW" . 7771)
                     ("LATIN SMALL LETTER R WITH DOT ABOVE" . 7769)
                     ("LATIN SMALL LETTER P WITH DOT ABOVE" . 7767)
                     ("LATIN SMALL LETTER P WITH ACUTE" . 7765)
                     ("LATIN SMALL LETTER O WITH MACRON AND ACUTE" . 7763)
                     ("LATIN SMALL LETTER O WITH MACRON AND GRAVE" . 7761)
                     ("LATIN SMALL LETTER O WITH TILDE AND DIAERESIS" . 7759)
                     ("LATIN SMALL LETTER O WITH TILDE AND ACUTE" . 7757)
                     ("LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW" . 7755)
                     ("LATIN SMALL LETTER N WITH LINE BELOW" . 7753)
                     ("LATIN SMALL LETTER N WITH DOT BELOW" . 7751)
                     ("LATIN SMALL LETTER N WITH DOT ABOVE" . 7749)
                     ("LATIN SMALL LETTER M WITH DOT BELOW" . 7747)
                     ("LATIN SMALL LETTER M WITH DOT ABOVE" . 7745)
                     ("LATIN SMALL LETTER M WITH ACUTE" . 7743)
                     ("LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW" . 7741)
                     ("LATIN SMALL LETTER L WITH LINE BELOW" . 7739)
                     ("LATIN SMALL LETTER L WITH DOT BELOW AND MACRON" . 7737)
                     ("LATIN SMALL LETTER L WITH DOT BELOW" . 7735)
                     ("LATIN SMALL LETTER K WITH LINE BELOW" . 7733)
                     ("LATIN SMALL LETTER K WITH DOT BELOW" . 7731)
                     ("LATIN SMALL LETTER K WITH ACUTE" . 7729)
                     ("LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE" . 7727)
                     ("LATIN SMALL LETTER I WITH TILDE BELOW" . 7725)
                     ("LATIN SMALL LETTER H WITH BREVE BELOW" . 7723)
                     ("LATIN SMALL LETTER H WITH CEDILLA" . 7721)
                     ("LATIN SMALL LETTER H WITH DIAERESIS" . 7719)
                     ("LATIN SMALL LETTER H WITH DOT BELOW" . 7717)
                     ("LATIN SMALL LETTER H WITH DOT ABOVE" . 7715)
                     ("LATIN SMALL LETTER G WITH MACRON" . 7713)
                     ("LATIN SMALL LETTER F WITH DOT ABOVE" . 7711)
                     ("LATIN SMALL LETTER E WITH CEDILLA AND BREVE" . 7709)
                     ("LATIN SMALL LETTER E WITH TILDE BELOW" . 7707)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW" . 7705)
                     ("LATIN SMALL LETTER E WITH MACRON AND ACUTE" . 7703)
                     ("LATIN SMALL LETTER E WITH MACRON AND GRAVE" . 7701)
                     ("LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW" . 7699)
                     ("LATIN SMALL LETTER D WITH CEDILLA" . 7697)
                     ("LATIN SMALL LETTER D WITH LINE BELOW" . 7695)
                     ("LATIN SMALL LETTER D WITH DOT BELOW" . 7693)
                     ("LATIN SMALL LETTER D WITH DOT ABOVE" . 7691)
                     ("LATIN SMALL LETTER C WITH CEDILLA AND ACUTE" . 7689)
                     ("LATIN SMALL LETTER B WITH LINE BELOW" . 7687)
                     ("LATIN SMALL LETTER B WITH DOT BELOW" . 7685)
                     ("LATIN SMALL LETTER B WITH DOT ABOVE" . 7683)
                     ("LATIN SMALL LETTER A WITH RING BELOW" . 7681)
                     ("COMBINING LATIN SMALL LETTER U WITH DIAERESIS" . 7668)
                     ("COMBINING LATIN SMALL LETTER O WITH DIAERESIS" . 7667)
                     ("COMBINING LATIN SMALL LETTER A WITH DIAERESIS" . 7666)
                     ("COMBINING LATIN SMALL LETTER W" . 7665)
                     ("COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE" . 7664)
                     ("COMBINING LATIN SMALL LETTER ESH" . 7663)
                     ("COMBINING LATIN SMALL LETTER P" . 7662)
                     ("COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE" . 7661)
                     ("COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE" . 7660)
                     ("COMBINING LATIN SMALL LETTER F" . 7659)
                     ("COMBINING LATIN SMALL LETTER SCHWA" . 7658)
                     ("COMBINING LATIN SMALL LETTER BETA" . 7657)
                     ("COMBINING LATIN SMALL LETTER B" . 7656)
                     ("COMBINING LATIN SMALL LETTER ALPHA" . 7655)
                     ("COMBINING LATIN SMALL LETTER Z" . 7654)
                     ("COMBINING LATIN SMALL LETTER LONG S" . 7653)
                     ("COMBINING LATIN SMALL LETTER S" . 7652)
                     ("COMBINING LATIN SMALL LETTER R ROTUNDA" . 7651)
                     ("COMBINING LATIN LETTER SMALL CAPITAL R" . 7650)
                     ("COMBINING LATIN LETTER SMALL CAPITAL N" . 7649)
                     ("COMBINING LATIN SMALL LETTER N" . 7648)
                     ("COMBINING LATIN LETTER SMALL CAPITAL M" . 7647)
                     ("COMBINING LATIN LETTER SMALL CAPITAL L" . 7646)
                     ("COMBINING LATIN SMALL LETTER L" . 7645)
                     ("COMBINING LATIN SMALL LETTER K" . 7644)
                     ("COMBINING LATIN LETTER SMALL CAPITAL G" . 7643)
                     ("COMBINING LATIN SMALL LETTER G" . 7642)
                     ("COMBINING LATIN SMALL LETTER ETH" . 7641)
                     ("COMBINING LATIN SMALL LETTER INSULAR D" . 7640)
                     ("COMBINING LATIN SMALL LETTER C CEDILLA" . 7639)
                     ("COMBINING LATIN SMALL LETTER AV" . 7638)
                     ("COMBINING LATIN SMALL LETTER AO" . 7637)
                     ("COMBINING LATIN SMALL LETTER AE" . 7636)
                     ("COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE" . 7635)
                     ("COMBINING LATIN SMALL LETTER R BELOW" . 7626)
                     ("LATIN SMALL LETTER EZH WITH RETROFLEX HOOK" . 7578)
                     ("LATIN SMALL LETTER U WITH RETROFLEX HOOK" . 7577)
                     ("LATIN SMALL LETTER ESH WITH RETROFLEX HOOK" . 7576)
                     ("LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK" . 7575)
                     ("LATIN SMALL LETTER I WITH RETROFLEX HOOK" . 7574)
                     ("LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK" . 7573)
                     ("LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK" . 7572)
                     ("LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK" . 7571)
                     ("LATIN SMALL LETTER E WITH RETROFLEX HOOK" . 7570)
                     ("LATIN SMALL LETTER D WITH HOOK AND TAIL" . 7569)
                     ("LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK" . 7568)
                     ("LATIN SMALL LETTER A WITH RETROFLEX HOOK" . 7567)
                     ("LATIN SMALL LETTER Z WITH PALATAL HOOK" . 7566)
                     ("LATIN SMALL LETTER X WITH PALATAL HOOK" . 7565)
                     ("LATIN SMALL LETTER V WITH PALATAL HOOK" . 7564)
                     ("LATIN SMALL LETTER ESH WITH PALATAL HOOK" . 7563)
                     ("LATIN SMALL LETTER S WITH PALATAL HOOK" . 7562)
                     ("LATIN SMALL LETTER R WITH PALATAL HOOK" . 7561)
                     ("LATIN SMALL LETTER P WITH PALATAL HOOK" . 7560)
                     ("LATIN SMALL LETTER N WITH PALATAL HOOK" . 7559)
                     ("LATIN SMALL LETTER M WITH PALATAL HOOK" . 7558)
                     ("LATIN SMALL LETTER L WITH PALATAL HOOK" . 7557)
                     ("LATIN SMALL LETTER K WITH PALATAL HOOK" . 7556)
                     ("LATIN SMALL LETTER G WITH PALATAL HOOK" . 7555)
                     ("LATIN SMALL LETTER F WITH PALATAL HOOK" . 7554)
                     ("LATIN SMALL LETTER D WITH PALATAL HOOK" . 7553)
                     ("LATIN SMALL LETTER B WITH PALATAL HOOK" . 7552)
                     ("LATIN SMALL LETTER UPSILON WITH STROKE" . 7551)
                     ("LATIN SMALL CAPITAL LETTER U WITH STROKE" . 7550)
                     ("LATIN SMALL LETTER P WITH STROKE" . 7549)
                     ("LATIN SMALL LETTER IOTA WITH STROKE" . 7548)
                     ("LATIN SMALL CAPITAL LETTER I WITH STROKE" . 7547)
                     ("LATIN SMALL LETTER TH WITH STRIKETHROUGH" . 7546)
                     ("LATIN SMALL LETTER INSULAR G" . 7545)
                     ("LATIN SMALL LETTER TURNED G" . 7543)
                     ("LATIN SMALL LETTER Z WITH MIDDLE TILDE" . 7542)
                     ("LATIN SMALL LETTER T WITH MIDDLE TILDE" . 7541)
                     ("LATIN SMALL LETTER S WITH MIDDLE TILDE" . 7540)
                     ("LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE" . 7539)
                     ("LATIN SMALL LETTER R WITH MIDDLE TILDE" . 7538)
                     ("LATIN SMALL LETTER P WITH MIDDLE TILDE" . 7537)
                     ("LATIN SMALL LETTER N WITH MIDDLE TILDE" . 7536)
                     ("LATIN SMALL LETTER M WITH MIDDLE TILDE" . 7535)
                     ("LATIN SMALL LETTER F WITH MIDDLE TILDE" . 7534)
                     ("LATIN SMALL LETTER D WITH MIDDLE TILDE" . 7533)
                     ("LATIN SMALL LETTER B WITH MIDDLE TILDE" . 7532)
                     ("LATIN SMALL LETTER UE" . 7531)
                     ("LATIN SUBSCRIPT SMALL LETTER V" . 7525)
                     ("LATIN SUBSCRIPT SMALL LETTER U" . 7524)
                     ("LATIN SUBSCRIPT SMALL LETTER R" . 7523)
                     ("LATIN SUBSCRIPT SMALL LETTER I" . 7522)
                     ("LATIN LETTER SMALL CAPITAL EZH" . 7459)
                     ("LATIN LETTER SMALL CAPITAL Z" . 7458)
                     ("LATIN LETTER SMALL CAPITAL W" . 7457)
                     ("LATIN LETTER SMALL CAPITAL V" . 7456)
                     ("LATIN SMALL LETTER SIDEWAYS TURNED M" . 7455)
                     ("LATIN SMALL LETTER SIDEWAYS DIAERESIZED U" . 7454)
                     ("LATIN SMALL LETTER SIDEWAYS U" . 7453)
                     ("LATIN LETTER SMALL CAPITAL U" . 7452)
                     ("LATIN LETTER SMALL CAPITAL T" . 7451)
                     ("LATIN LETTER SMALL CAPITAL TURNED R" . 7450)
                     ("LATIN LETTER SMALL CAPITAL REVERSED R" . 7449)
                     ("LATIN LETTER SMALL CAPITAL P" . 7448)
                     ("LATIN SMALL LETTER BOTTOM HALF O" . 7447)
                     ("LATIN SMALL LETTER TOP HALF O" . 7446)
                     ("LATIN LETTER SMALL CAPITAL OU" . 7445)
                     ("LATIN SMALL LETTER TURNED OE" . 7444)
                     ("LATIN SMALL LETTER SIDEWAYS O WITH STROKE" . 7443)
                     ("LATIN SMALL LETTER SIDEWAYS OPEN O" . 7442)
                     ("LATIN SMALL LETTER SIDEWAYS O" . 7441)
                     ("LATIN LETTER SMALL CAPITAL OPEN O" . 7440)
                     ("LATIN LETTER SMALL CAPITAL O" . 7439)
                     ("LATIN LETTER SMALL CAPITAL REVERSED N" . 7438)
                     ("LATIN LETTER SMALL CAPITAL M" . 7437)
                     ("LATIN LETTER SMALL CAPITAL L WITH STROKE" . 7436)
                     ("LATIN LETTER SMALL CAPITAL K" . 7435)
                     ("LATIN LETTER SMALL CAPITAL J" . 7434)
                     ("LATIN SMALL LETTER TURNED I" . 7433)
                     ("LATIN SMALL LETTER TURNED OPEN E" . 7432)
                     ("LATIN LETTER SMALL CAPITAL E" . 7431)
                     ("LATIN LETTER SMALL CAPITAL ETH" . 7430)
                     ("LATIN LETTER SMALL CAPITAL D" . 7429)
                     ("LATIN LETTER SMALL CAPITAL C" . 7428)
                     ("LATIN LETTER SMALL CAPITAL BARRED B" . 7427)
                     ("LATIN SMALL LETTER TURNED AE" . 7426)
                     ("LATIN LETTER SMALL CAPITAL AE" . 7425)
                     ("LATIN LETTER SMALL CAPITAL A" . 7424)
                     ("COMBINING LATIN SMALL LETTER X" . 879)
                     ("COMBINING LATIN SMALL LETTER V" . 878)
                     ("COMBINING LATIN SMALL LETTER T" . 877)
                     ("COMBINING LATIN SMALL LETTER R" . 876)
                     ("COMBINING LATIN SMALL LETTER M" . 875)
                     ("COMBINING LATIN SMALL LETTER H" . 874)
                     ("COMBINING LATIN SMALL LETTER D" . 873)
                     ("COMBINING LATIN SMALL LETTER C" . 872)
                     ("COMBINING LATIN SMALL LETTER U" . 871)
                     ("COMBINING LATIN SMALL LETTER O" . 870)
                     ("COMBINING LATIN SMALL LETTER I" . 869)
                     ("COMBINING LATIN SMALL LETTER E" . 868)
                     ("COMBINING LATIN SMALL LETTER A" . 867)
                     ("LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL" . 687)
                     ("LATIN SMALL LETTER TURNED H WITH FISHHOOK" . 686)
                     ("LATIN SMALL LETTER LZ DIGRAPH" . 683)
                     ("LATIN SMALL LETTER LS DIGRAPH" . 682)
                     ("LATIN SMALL LETTER FENG DIGRAPH" . 681)
                     ("LATIN SMALL LETTER T C CURL" . 680)
                     ("LATIN SMALL LETTER TC DIGRAPH WITH CURL" . 680)
                     ("LATIN SMALL LETTER T ESH" . 679)
                     ("LATIN SMALL LETTER TESH DIGRAPH" . 679)
                     ("LATIN SMALL LETTER T S" . 678)
                     ("LATIN SMALL LETTER TS DIGRAPH" . 678)
                     ("LATIN SMALL LETTER D Z CURL" . 677)
                     ("LATIN SMALL LETTER DZ DIGRAPH WITH CURL" . 677)
                     ("LATIN SMALL LETTER D YOGH" . 676)
                     ("LATIN SMALL LETTER DEZH DIGRAPH" . 676)
                     ("LATIN SMALL LETTER D Z" . 675)
                     ("LATIN SMALL LETTER DZ DIGRAPH" . 675)
                     ("LATIN SMALL LETTER Q HOOK" . 672)
                     ("LATIN SMALL LETTER Q WITH HOOK" . 672)
                     ("LATIN LETTER SMALL CAPITAL L" . 671)
                     ("LATIN SMALL LETTER TURNED K" . 670)
                     ("LATIN SMALL LETTER CROSSED-TAIL J" . 669)
                     ("LATIN SMALL LETTER J WITH CROSSED-TAIL" . 669)
                     ("LATIN LETTER SMALL CAPITAL H" . 668)
                     ("LATIN LETTER SMALL CAPITAL G HOOK" . 667)
                     ("LATIN LETTER SMALL CAPITAL G WITH HOOK" . 667)
                     ("LATIN SMALL LETTER CLOSED EPSILON" . 666)
                     ("LATIN SMALL LETTER CLOSED OPEN E" . 666)
                     ("LATIN LETTER SMALL CAPITAL B" . 665)
                     ("LATIN SMALL LETTER YOGH CURL" . 659)
                     ("LATIN SMALL LETTER EZH WITH CURL" . 659)
                     ("LATIN SMALL LETTER EZH" . 658)
                     ("LATIN SMALL LETTER Z CURL" . 657)
                     ("LATIN SMALL LETTER Z WITH CURL" . 657)
                     ("LATIN SMALL LETTER Z RETROFLEX HOOK" . 656)
                     ("LATIN SMALL LETTER Z WITH RETROFLEX HOOK" . 656)
                     ("LATIN LETTER SMALL CAPITAL Y" . 655)
                     ("LATIN SMALL LETTER TURNED Y" . 654)
                     ("LATIN SMALL LETTER TURNED W" . 653)
                     ("LATIN SMALL LETTER TURNED V" . 652)
                     ("LATIN SMALL LETTER SCRIPT V" . 651)
                     ("LATIN SMALL LETTER V WITH HOOK" . 651)
                     ("LATIN SMALL LETTER UPSILON" . 650)
                     ("LATIN SMALL LETTER U BAR" . 649)
                     ("LATIN SMALL LETTER T RETROFLEX HOOK" . 648)
                     ("LATIN SMALL LETTER T WITH RETROFLEX HOOK" . 648)
                     ("LATIN SMALL LETTER TURNED T" . 647)
                     ("LATIN SMALL LETTER ESH CURL" . 646)
                     ("LATIN SMALL LETTER ESH WITH CURL" . 646)
                     ("LATIN SMALL LETTER SQUAT REVERSED ESH" . 645)
                     ("LATIN SMALL LETTER DOTLESS J BAR HOOK" . 644)
                     ("LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK" . 644)
                     ("LATIN SMALL LETTER ESH" . 643)
                     ("LATIN SMALL LETTER S HOOK" . 642)
                     ("LATIN SMALL LETTER S WITH HOOK" . 642)
                     ("LATIN LETTER SMALL CAPITAL INVERTED R" . 641)
                     ("LATIN LETTER SMALL CAPITAL R" . 640)
                     ("LATIN SMALL LETTER REVERSED FISHHOOK R" . 639)
                     ("LATIN SMALL LETTER REVERSED R WITH FISHHOOK" . 639)
                     ("LATIN SMALL LETTER FISHHOOK R" . 638)
                     ("LATIN SMALL LETTER R WITH FISHHOOK" . 638)
                     ("LATIN SMALL LETTER R HOOK" . 637)
                     ("LATIN SMALL LETTER R WITH TAIL" . 637)
                     ("LATIN SMALL LETTER R WITH LONG LEG" . 636)
                     ("LATIN SMALL LETTER TURNED R HOOK" . 635)
                     ("LATIN SMALL LETTER TURNED R WITH HOOK" . 635)
                     ("LATIN SMALL LETTER TURNED R WITH LONG LEG" . 634)
                     ("LATIN SMALL LETTER TURNED R" . 633)
                     ("LATIN SMALL LETTER PHI" . 632)
                     ("LATIN SMALL LETTER CLOSED OMEGA" . 631)
                     ("LATIN LETTER SMALL CAPITAL O E" . 630)
                     ("LATIN LETTER SMALL CAPITAL OE" . 630)
                     ("LATIN SMALL LETTER BARRED O" . 629)
                     ("LATIN LETTER SMALL CAPITAL N" . 628)
                     ("LATIN SMALL LETTER N RETROFLEX HOOK" . 627)
                     ("LATIN SMALL LETTER N WITH RETROFLEX HOOK" . 627)
                     ("LATIN SMALL LETTER N HOOK" . 626)
                     ("LATIN SMALL LETTER N WITH LEFT HOOK" . 626)
                     ("LATIN SMALL LETTER M HOOK" . 625)
                     ("LATIN SMALL LETTER M WITH HOOK" . 625)
                     ("LATIN SMALL LETTER TURNED M WITH LONG LEG" . 624)
                     ("LATIN SMALL LETTER TURNED M" . 623)
                     ("LATIN SMALL LETTER L YOGH" . 622)
                     ("LATIN SMALL LETTER LEZH" . 622)
                     ("LATIN SMALL LETTER L RETROFLEX HOOK" . 621)
                     ("LATIN SMALL LETTER L WITH RETROFLEX HOOK" . 621)
                     ("LATIN SMALL LETTER L BELT" . 620)
                     ("LATIN SMALL LETTER L WITH BELT" . 620)
                     ("LATIN SMALL LETTER L WITH MIDDLE TILDE" . 619)
                     ("LATIN LETTER SMALL CAPITAL I" . 618)
                     ("LATIN SMALL LETTER IOTA" . 617)
                     ("LATIN SMALL LETTER BARRED I" . 616)
                     ("LATIN SMALL LETTER I WITH STROKE" . 616)
                     ("LATIN SMALL LETTER HENG HOOK" . 615)
                     ("LATIN SMALL LETTER HENG WITH HOOK" . 615)
                     ("LATIN SMALL LETTER H HOOK" . 614)
                     ("LATIN SMALL LETTER H WITH HOOK" . 614)
                     ("LATIN SMALL LETTER TURNED H" . 613)
                     ("LATIN SMALL LETTER BABY GAMMA" . 612)
                     ("LATIN SMALL LETTER RAMS HORN" . 612)
                     ("LATIN SMALL LETTER GAMMA" . 611)
                     ("LATIN LETTER SMALL CAPITAL G" . 610)
                     ("LATIN SMALL LETTER SCRIPT G" . 609)
                     ("LATIN SMALL LETTER G HOOK" . 608)
                     ("LATIN SMALL LETTER G WITH HOOK" . 608)
                     ("LATIN SMALL LETTER DOTLESS J BAR" . 607)
                     ("LATIN SMALL LETTER DOTLESS J WITH STROKE" . 607)
                     ("LATIN SMALL LETTER CLOSED REVERSED EPSILON" . 606)
                     ("LATIN SMALL LETTER CLOSED REVERSED OPEN E" . 606)
                     ("LATIN SMALL LETTER REVERSED EPSILON HOOK" . 605)
                     ("LATIN SMALL LETTER REVERSED OPEN E WITH HOOK" . 605)
                     ("LATIN SMALL LETTER REVERSED EPSILON" . 604)
                     ("LATIN SMALL LETTER REVERSED OPEN E" . 604)
                     ("LATIN SMALL LETTER EPSILON" . 603)
                     ("LATIN SMALL LETTER OPEN E" . 603)
                     ("LATIN SMALL LETTER SCHWA HOOK" . 602)
                     ("LATIN SMALL LETTER SCHWA WITH HOOK" . 602)
                     ("LATIN SMALL LETTER SCHWA" . 601)
                     ("LATIN SMALL LETTER REVERSED E" . 600)
                     ("LATIN SMALL LETTER D HOOK" . 599)
                     ("LATIN SMALL LETTER D WITH HOOK" . 599)
                     ("LATIN SMALL LETTER D RETROFLEX HOOK" . 598)
                     ("LATIN SMALL LETTER D WITH TAIL" . 598)
                     ("LATIN SMALL LETTER C CURL" . 597)
                     ("LATIN SMALL LETTER C WITH CURL" . 597)
                     ("LATIN SMALL LETTER OPEN O" . 596)
                     ("LATIN SMALL LETTER B HOOK" . 595)
                     ("LATIN SMALL LETTER B WITH HOOK" . 595)
                     ("LATIN SMALL LETTER TURNED SCRIPT A" . 594)
                     ("LATIN SMALL LETTER TURNED ALPHA" . 594)
                     ("LATIN SMALL LETTER SCRIPT A" . 593)
                     ("LATIN SMALL LETTER ALPHA" . 593)
                     ("LATIN SMALL LETTER TURNED A" . 592)
                     ("LATIN SMALL LETTER Y WITH STROKE" . 591)
                     ("LATIN SMALL LETTER R WITH STROKE" . 589)
                     ("LATIN SMALL LETTER Q WITH HOOK TAIL" . 587)
                     ("LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL" . 586)
                     ("LATIN SMALL LETTER J WITH STROKE" . 585)
                     ("LATIN SMALL LETTER E WITH STROKE" . 583)
                     ("LATIN SMALL LETTER GLOTTAL STOP" . 578)
                     ("LATIN SMALL LETTER Z WITH SWASH TAIL" . 576)
                     ("LATIN SMALL LETTER S WITH SWASH TAIL" . 575)
                     ("LATIN SMALL LETTER C WITH STROKE" . 572)
                     ("LATIN SMALL LETTER QP DIGRAPH" . 569)
                     ("LATIN SMALL LETTER DB DIGRAPH" . 568)
                     ("LATIN SMALL LETTER DOTLESS J" . 567)
                     ("LATIN SMALL LETTER T WITH CURL" . 566)
                     ("LATIN SMALL LETTER N WITH CURL" . 565)
                     ("LATIN SMALL LETTER L WITH CURL" . 564)
                     ("LATIN SMALL LETTER Y WITH MACRON" . 563)
                     ("LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON" . 561)
                     ("LATIN SMALL LETTER O WITH DOT ABOVE" . 559)
                     ("LATIN SMALL LETTER O WITH TILDE AND MACRON" . 557)
                     ("LATIN SMALL LETTER O WITH DIAERESIS AND MACRON" . 555)
                     ("LATIN SMALL LETTER E WITH CEDILLA" . 553)
                     ("LATIN SMALL LETTER A WITH DOT ABOVE" . 551)
                     ("LATIN SMALL LETTER Z WITH HOOK" . 549)
                     ("LATIN SMALL LETTER OU" . 547)
                     ("LATIN SMALL LETTER D WITH CURL" . 545)
                     ("LATIN SMALL LETTER H WITH CARON" . 543)
                     ("LATIN SMALL LETTER YOGH" . 658)
                     ("LATIN SMALL LETTER T WITH COMMA BELOW" . 539)
                     ("LATIN SMALL LETTER S WITH COMMA BELOW" . 537)
                     ("LATIN SMALL LETTER U WITH INVERTED BREVE" . 535)
                     ("LATIN SMALL LETTER U WITH DOUBLE GRAVE" . 533)
                     ("LATIN SMALL LETTER R WITH INVERTED BREVE" . 531)
                     ("LATIN SMALL LETTER R WITH DOUBLE GRAVE" . 529)
                     ("LATIN SMALL LETTER O WITH INVERTED BREVE" . 527)
                     ("LATIN SMALL LETTER O WITH DOUBLE GRAVE" . 525)
                     ("LATIN SMALL LETTER I WITH INVERTED BREVE" . 523)
                     ("LATIN SMALL LETTER I WITH DOUBLE GRAVE" . 521)
                     ("LATIN SMALL LETTER E WITH INVERTED BREVE" . 519)
                     ("LATIN SMALL LETTER E WITH DOUBLE GRAVE" . 517)
                     ("LATIN SMALL LETTER A WITH INVERTED BREVE" . 515)
                     ("LATIN SMALL LETTER A WITH DOUBLE GRAVE" . 513)
                     ("LATIN SMALL LETTER O WITH STROKE AND ACUTE" . 511)
                     ("LATIN SMALL LETTER AE WITH ACUTE" . 509)
                     ("LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE" . 507)
                     ("LATIN SMALL LETTER N WITH GRAVE" . 505)
                     ("LATIN SMALL LETTER G WITH ACUTE" . 501)
                     ("LATIN SMALL LETTER DZ" . 499)
                     ("LATIN CAPITAL LETTER D WITH SMALL LETTER Z" . 498)
                     ("LATIN SMALL LETTER J HACEK" . 496)
                     ("LATIN SMALL LETTER J WITH CARON" . 496)
                     ("LATIN SMALL LETTER YOGH HACEK" . 495)
                     ("LATIN SMALL LETTER EZH WITH CARON" . 495)
                     ("LATIN SMALL LETTER O OGONEK MACRON" . 493)
                     ("LATIN SMALL LETTER O WITH OGONEK AND MACRON" . 493)
                     ("LATIN SMALL LETTER O OGONEK" . 491)
                     ("LATIN SMALL LETTER O WITH OGONEK" . 491)
                     ("LATIN SMALL LETTER K HACEK" . 489)
                     ("LATIN SMALL LETTER K WITH CARON" . 489)
                     ("LATIN SMALL LETTER G HACEK" . 487)
                     ("LATIN SMALL LETTER G WITH CARON" . 487)
                     ("LATIN SMALL LETTER G BAR" . 485)
                     ("LATIN SMALL LETTER G WITH STROKE" . 485)
                     ("LATIN SMALL LETTER A E MACRON" . 483)
                     ("LATIN SMALL LETTER AE WITH MACRON" . 483)
                     ("LATIN SMALL LETTER A DOT MACRON" . 481)
                     ("LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON" . 481)
                     ("LATIN SMALL LETTER A DIAERESIS MACRON" . 479)
                     ("LATIN SMALL LETTER A WITH DIAERESIS AND MACRON" . 479)
                     ("LATIN SMALL LETTER TURNED E" . 477)
                     ("LATIN SMALL LETTER U DIAERESIS GRAVE" . 476)
                     ("LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE" . 476)
                     ("LATIN SMALL LETTER U DIAERESIS HACEK" . 474)
                     ("LATIN SMALL LETTER U WITH DIAERESIS AND CARON" . 474)
                     ("LATIN SMALL LETTER U DIAERESIS ACUTE" . 472)
                     ("LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE" . 472)
                     ("LATIN SMALL LETTER U DIAERESIS MACRON" . 470)
                     ("LATIN SMALL LETTER U WITH DIAERESIS AND MACRON" . 470)
                     ("LATIN SMALL LETTER U HACEK" . 468)
                     ("LATIN SMALL LETTER U WITH CARON" . 468)
                     ("LATIN SMALL LETTER O HACEK" . 466)
                     ("LATIN SMALL LETTER O WITH CARON" . 466)
                     ("LATIN SMALL LETTER I HACEK" . 464)
                     ("LATIN SMALL LETTER I WITH CARON" . 464)
                     ("LATIN SMALL LETTER A HACEK" . 462)
                     ("LATIN SMALL LETTER A WITH CARON" . 462)
                     ("LATIN SMALL LETTER N J" . 460)
                     ("LATIN SMALL LETTER NJ" . 460)
                     ("LATIN LETTER CAPITAL N SMALL J" . 459)
                     ("LATIN CAPITAL LETTER N WITH SMALL LETTER J" . 459)
                     ("LATIN SMALL LETTER L J" . 457)
                     ("LATIN SMALL LETTER LJ" . 457)
                     ("LATIN LETTER CAPITAL L SMALL J" . 456)
                     ("LATIN CAPITAL LETTER L WITH SMALL LETTER J" . 456)
                     ("LATIN SMALL LETTER D Z HACEK" . 454)
                     ("LATIN SMALL LETTER DZ WITH CARON" . 454)
                     ("LATIN LETTER CAPITAL D SMALL Z HACEK" . 453)
                     ("LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON" . 453)
                     ("LATIN SMALL LETTER TONE FIVE" . 445)
                     ("LATIN SMALL LETTER YOGH WITH TAIL" . 442)
                     ("LATIN SMALL LETTER EZH WITH TAIL" . 442)
                     ("LATIN SMALL LETTER REVERSED YOGH" . 441)
                     ("LATIN SMALL LETTER EZH REVERSED" . 441)
                     ("LATIN SMALL LETTER Z BAR" . 438)
                     ("LATIN SMALL LETTER Z WITH STROKE" . 438)
                     ("LATIN SMALL LETTER Y HOOK" . 436)
                     ("LATIN SMALL LETTER Y WITH HOOK" . 436)
                     ("LATIN SMALL LETTER U HORN" . 432)
                     ("LATIN SMALL LETTER U WITH HORN" . 432)
                     ("LATIN SMALL LETTER T HOOK" . 429)
                     ("LATIN SMALL LETTER T WITH HOOK" . 429)
                     ("LATIN SMALL LETTER T PALATAL HOOK" . 427)
                     ("LATIN SMALL LETTER T WITH PALATAL HOOK" . 427)
                     ("LATIN SMALL LETTER TONE TWO" . 424)
                     ("LATIN SMALL LETTER P HOOK" . 421)
                     ("LATIN SMALL LETTER P WITH HOOK" . 421)
                     ("LATIN SMALL LETTER O I" . 419)
                     ("LATIN SMALL LETTER OI" . 419)
                     ("LATIN SMALL LETTER O HORN" . 417)
                     ("LATIN SMALL LETTER O WITH HORN" . 417)
                     ("LATIN SMALL LETTER N WITH LONG RIGHT LEG" . 414)
                     ("LATIN SMALL LETTER BARRED LAMBDA" . 411)
                     ("LATIN SMALL LETTER LAMBDA WITH STROKE" . 411)
                     ("LATIN SMALL LETTER BARRED L" . 410)
                     ("LATIN SMALL LETTER L WITH BAR" . 410)
                     ("LATIN SMALL LETTER K HOOK" . 409)
                     ("LATIN SMALL LETTER K WITH HOOK" . 409)
                     ("LATIN SMALL LETTER H V" . 405)
                     ("LATIN SMALL LETTER HV" . 405)
                     ("LATIN SMALL LETTER SCRIPT F" . 402)
                     ("LATIN SMALL LETTER F WITH HOOK" . 402)
                     ("LATIN SMALL LETTER TURNED DELTA" . 397)
                     ("LATIN SMALL LETTER D TOPBAR" . 396)
                     ("LATIN SMALL LETTER D WITH TOPBAR" . 396)
                     ("LATIN SMALL LETTER C HOOK" . 392)
                     ("LATIN SMALL LETTER C WITH HOOK" . 392)
                     ("LATIN SMALL LETTER TONE SIX" . 389)
                     ("LATIN SMALL LETTER B TOPBAR" . 387)
                     ("LATIN SMALL LETTER B WITH TOPBAR" . 387)
                     ("LATIN SMALL LETTER B BAR" . 384)
                     ("LATIN SMALL LETTER B WITH STROKE" . 384)
                     ("LATIN SMALL LETTER LONG S" . 383)
                     ("LATIN SMALL LETTER Z HACEK" . 382)
                     ("LATIN SMALL LETTER Z WITH CARON" . 382)
                     ("LATIN SMALL LETTER Z DOT" . 380)
                     ("LATIN SMALL LETTER Z WITH DOT ABOVE" . 380)
                     ("LATIN SMALL LETTER Z ACUTE" . 378)
                     ("LATIN SMALL LETTER Z WITH ACUTE" . 378)
                     ("LATIN SMALL LETTER Y CIRCUMFLEX" . 375)
                     ("LATIN SMALL LETTER Y WITH CIRCUMFLEX" . 375)
                     ("LATIN SMALL LETTER W CIRCUMFLEX" . 373)
                     ("LATIN SMALL LETTER W WITH CIRCUMFLEX" . 373)
                     ("LATIN SMALL LETTER U OGONEK" . 371)
                     ("LATIN SMALL LETTER U WITH OGONEK" . 371)
                     ("LATIN SMALL LETTER U DOUBLE ACUTE" . 369)
                     ("LATIN SMALL LETTER U WITH DOUBLE ACUTE" . 369)
                     ("LATIN SMALL LETTER U RING" . 367)
                     ("LATIN SMALL LETTER U WITH RING ABOVE" . 367)
                     ("LATIN SMALL LETTER U BREVE" . 365)
                     ("LATIN SMALL LETTER U WITH BREVE" . 365)
                     ("LATIN SMALL LETTER U MACRON" . 363)
                     ("LATIN SMALL LETTER U WITH MACRON" . 363)
                     ("LATIN SMALL LETTER U TILDE" . 361)
                     ("LATIN SMALL LETTER U WITH TILDE" . 361)
                     ("LATIN SMALL LETTER T BAR" . 359)
                     ("LATIN SMALL LETTER T WITH STROKE" . 359)
                     ("LATIN SMALL LETTER T HACEK" . 357)
                     ("LATIN SMALL LETTER T WITH CARON" . 357)
                     ("LATIN SMALL LETTER T CEDILLA" . 355)
                     ("LATIN SMALL LETTER T WITH CEDILLA" . 355)
                     ("LATIN SMALL LETTER S HACEK" . 353)
                     ("LATIN SMALL LETTER S WITH CARON" . 353)
                     ("LATIN SMALL LETTER S CEDILLA" . 351)
                     ("LATIN SMALL LETTER S WITH CEDILLA" . 351)
                     ("LATIN SMALL LETTER S CIRCUMFLEX" . 349)
                     ("LATIN SMALL LETTER S WITH CIRCUMFLEX" . 349)
                     ("LATIN SMALL LETTER S ACUTE" . 347)
                     ("LATIN SMALL LETTER S WITH ACUTE" . 347)
                     ("LATIN SMALL LETTER R HACEK" . 345)
                     ("LATIN SMALL LETTER R WITH CARON" . 345)
                     ("LATIN SMALL LETTER R CEDILLA" . 343)
                     ("LATIN SMALL LETTER R WITH CEDILLA" . 343)
                     ("LATIN SMALL LETTER R ACUTE" . 341)
                     ("LATIN SMALL LETTER R WITH ACUTE" . 341)
                     ("LATIN SMALL LETTER O E" . 339)
                     ("LATIN SMALL LETTER O DOUBLE ACUTE" . 337)
                     ("LATIN SMALL LETTER O WITH DOUBLE ACUTE" . 337)
                     ("LATIN SMALL LETTER O BREVE" . 335)
                     ("LATIN SMALL LETTER O WITH BREVE" . 335)
                     ("LATIN SMALL LETTER O MACRON" . 333)
                     ("LATIN SMALL LETTER O WITH MACRON" . 333)
                     ("LATIN SMALL LETTER ENG" . 331)
                     ("LATIN SMALL LETTER APOSTROPHE N" . 329)
                     ("LATIN SMALL LETTER N PRECEDED BY APOSTROPHE" . 329)
                     ("LATIN SMALL LETTER N HACEK" . 328)
                     ("LATIN SMALL LETTER N WITH CARON" . 328)
                     ("LATIN SMALL LETTER N CEDILLA" . 326)
                     ("LATIN SMALL LETTER N WITH CEDILLA" . 326)
                     ("LATIN SMALL LETTER N ACUTE" . 324)
                     ("LATIN SMALL LETTER N WITH ACUTE" . 324)
                     ("LATIN SMALL LETTER L SLASH" . 322)
                     ("LATIN SMALL LETTER L WITH STROKE" . 322)
                     ("LATIN SMALL LETTER L WITH MIDDLE DOT" . 320)
                     ("LATIN SMALL LETTER L HACEK" . 318)
                     ("LATIN SMALL LETTER L WITH CARON" . 318)
                     ("LATIN SMALL LETTER L CEDILLA" . 316)
                     ("LATIN SMALL LETTER L WITH CEDILLA" . 316)
                     ("LATIN SMALL LETTER L ACUTE" . 314)
                     ("LATIN SMALL LETTER L WITH ACUTE" . 314)
                     ("LATIN SMALL LETTER KRA" . 312)
                     ("LATIN SMALL LETTER K CEDILLA" . 311)
                     ("LATIN SMALL LETTER K WITH CEDILLA" . 311)
                     ("LATIN SMALL LETTER J CIRCUMFLEX" . 309)
                     ("LATIN SMALL LETTER J WITH CIRCUMFLEX" . 309)
                     ("LATIN SMALL LETTER I J" . 307)
                     ("LATIN SMALL LETTER DOTLESS I" . 305)
                     ("LATIN SMALL LETTER I OGONEK" . 303)
                     ("LATIN SMALL LETTER I WITH OGONEK" . 303)
                     ("LATIN SMALL LETTER I BREVE" . 301)
                     ("LATIN SMALL LETTER I WITH BREVE" . 301)
                     ("LATIN SMALL LETTER I MACRON" . 299)
                     ("LATIN SMALL LETTER I WITH MACRON" . 299)
                     ("LATIN SMALL LETTER I TILDE" . 297)
                     ("LATIN SMALL LETTER I WITH TILDE" . 297)
                     ("LATIN SMALL LETTER H BAR" . 295)
                     ("LATIN SMALL LETTER H WITH STROKE" . 295)
                     ("LATIN SMALL LETTER H CIRCUMFLEX" . 293)
                     ("LATIN SMALL LETTER H WITH CIRCUMFLEX" . 293)
                     ("LATIN SMALL LETTER G CEDILLA" . 291)
                     ("LATIN SMALL LETTER G WITH CEDILLA" . 291)
                     ("LATIN SMALL LETTER G DOT" . 289)
                     ("LATIN SMALL LETTER G WITH DOT ABOVE" . 289)
                     ("LATIN SMALL LETTER G BREVE" . 287)
                     ("LATIN SMALL LETTER G WITH BREVE" . 287)
                     ("LATIN SMALL LETTER G CIRCUMFLEX" . 285)
                     ("LATIN SMALL LETTER G WITH CIRCUMFLEX" . 285)
                     ("LATIN SMALL LETTER E HACEK" . 283)
                     ("LATIN SMALL LETTER E WITH CARON" . 283)
                     ("LATIN SMALL LETTER E OGONEK" . 281)
                     ("LATIN SMALL LETTER E WITH OGONEK" . 281)
                     ("LATIN SMALL LETTER E DOT" . 279)
                     ("LATIN SMALL LETTER E WITH DOT ABOVE" . 279)
                     ("LATIN SMALL LETTER E BREVE" . 277)
                     ("LATIN SMALL LETTER E WITH BREVE" . 277)
                     ("LATIN SMALL LETTER E MACRON" . 275)
                     ("LATIN SMALL LETTER E WITH MACRON" . 275)
                     ("LATIN SMALL LETTER D BAR" . 273)
                     ("LATIN SMALL LETTER D WITH STROKE" . 273)
                     ("LATIN SMALL LETTER D HACEK" . 271)
                     ("LATIN SMALL LETTER D WITH CARON" . 271)
                     ("LATIN SMALL LETTER C HACEK" . 269)
                     ("LATIN SMALL LETTER C WITH CARON" . 269)
                     ("LATIN SMALL LETTER C DOT" . 267)
                     ("LATIN SMALL LETTER C WITH DOT ABOVE" . 267)
                     ("LATIN SMALL LETTER C CIRCUMFLEX" . 265)
                     ("LATIN SMALL LETTER C WITH CIRCUMFLEX" . 265)
                     ("LATIN SMALL LETTER C ACUTE" . 263)
                     ("LATIN SMALL LETTER C WITH ACUTE" . 263)
                     ("LATIN SMALL LETTER A OGONEK" . 261)
                     ("LATIN SMALL LETTER A WITH OGONEK" . 261)
                     ("LATIN SMALL LETTER A BREVE" . 259)
                     ("LATIN SMALL LETTER A WITH BREVE" . 259)
                     ("LATIN SMALL LETTER A MACRON" . 257)
                     ("LATIN SMALL LETTER A WITH MACRON" . 257)
                     ("LATIN SMALL LETTER Y DIAERESIS" . 255)
                     ("LATIN SMALL LETTER Y WITH DIAERESIS" . 255)
                     ("LATIN SMALL LETTER THORN" . 254)
                     ("LATIN SMALL LETTER Y ACUTE" . 253)
                     ("LATIN SMALL LETTER Y WITH ACUTE" . 253)
                     ("LATIN SMALL LETTER U DIAERESIS" . 252)
                     ("LATIN SMALL LETTER U WITH DIAERESIS" . 252)
                     ("LATIN SMALL LETTER U CIRCUMFLEX" . 251)
                     ("LATIN SMALL LETTER U WITH CIRCUMFLEX" . 251)
                     ("LATIN SMALL LETTER U ACUTE" . 250)
                     ("LATIN SMALL LETTER U WITH ACUTE" . 250)
                     ("LATIN SMALL LETTER U GRAVE" . 249)
                     ("LATIN SMALL LETTER U WITH GRAVE" . 249)
                     ("LATIN SMALL LETTER O SLASH" . 248)
                     ("LATIN SMALL LETTER O WITH STROKE" . 248)
                     ("LATIN SMALL LETTER O DIAERESIS" . 246)
                     ("LATIN SMALL LETTER O WITH DIAERESIS" . 246)
                     ("LATIN SMALL LETTER O TILDE" . 245)
                     ("LATIN SMALL LETTER O WITH TILDE" . 245)
                     ("LATIN SMALL LETTER O CIRCUMFLEX" . 244)
                     ("LATIN SMALL LETTER O WITH CIRCUMFLEX" . 244)
                     ("LATIN SMALL LETTER O ACUTE" . 243)
                     ("LATIN SMALL LETTER O WITH ACUTE" . 243)
                     ("LATIN SMALL LETTER O GRAVE" . 242)
                     ("LATIN SMALL LETTER O WITH GRAVE" . 242)
                     ("LATIN SMALL LETTER N TILDE" . 241)
                     ("LATIN SMALL LETTER N WITH TILDE" . 241)
                     ("LATIN SMALL LETTER ETH" . 240)
                     ("LATIN SMALL LETTER I DIAERESIS" . 239)
                     ("LATIN SMALL LETTER I WITH DIAERESIS" . 239)
                     ("LATIN SMALL LETTER I CIRCUMFLEX" . 238)
                     ("LATIN SMALL LETTER I WITH CIRCUMFLEX" . 238)
                     ("LATIN SMALL LETTER I ACUTE" . 237)
                     ("LATIN SMALL LETTER I WITH ACUTE" . 237)
                     ("LATIN SMALL LETTER I GRAVE" . 236)
                     ("LATIN SMALL LETTER I WITH GRAVE" . 236)
                     ("LATIN SMALL LETTER E DIAERESIS" . 235)
                     ("LATIN SMALL LETTER E WITH DIAERESIS" . 235)
                     ("LATIN SMALL LETTER E CIRCUMFLEX" . 234)
                     ("LATIN SMALL LETTER E WITH CIRCUMFLEX" . 234)
                     ("LATIN SMALL LETTER E ACUTE" . 233)
                     ("LATIN SMALL LETTER E WITH ACUTE" . 233)
                     ("LATIN SMALL LETTER E GRAVE" . 232)
                     ("LATIN SMALL LETTER E WITH GRAVE" . 232)
                     ("LATIN SMALL LETTER C CEDILLA" . 231)
                     ("LATIN SMALL LETTER C WITH CEDILLA" . 231)
                     ("LATIN SMALL LETTER A E" . 230)
                     ("LATIN SMALL LETTER AE" . 230)
                     ("LATIN SMALL LETTER A RING" . 229)
                     ("LATIN SMALL LETTER A WITH RING ABOVE" . 229)
                     ("LATIN SMALL LETTER A DIAERESIS" . 228)
                     ("LATIN SMALL LETTER A WITH DIAERESIS" . 228)
                     ("LATIN SMALL LETTER A TILDE" . 227)
                     ("LATIN SMALL LETTER A WITH TILDE" . 227)
                     ("LATIN SMALL LETTER A CIRCUMFLEX" . 226)
                     ("LATIN SMALL LETTER A WITH CIRCUMFLEX" . 226)
                     ("LATIN SMALL LETTER A ACUTE" . 225)
                     ("LATIN SMALL LETTER A WITH ACUTE" . 225)
                     ("LATIN SMALL LETTER A GRAVE" . 224)
                     ("LATIN SMALL LETTER A WITH GRAVE" . 224)
                     ("LATIN SMALL LETTER SHARP S" . 223)
                     ("LATIN SMALL LETTER Z" . 122)
                     ("LATIN SMALL LETTER Y" . 121)
                     ("LATIN SMALL LETTER X" . 120)
                     ("LATIN SMALL LETTER W" . 119)
                     ("LATIN SMALL LETTER V" . 118)
                     ("LATIN SMALL LETTER U" . 117)
                     ("LATIN SMALL LETTER T" . 116)
                     ("LATIN SMALL LETTER S" . 115)
                     ("LATIN SMALL LETTER R" . 114)
                     ("LATIN SMALL LETTER Q" . 113)
                     ("LATIN SMALL LETTER P" . 112)
                     ("LATIN SMALL LETTER O" . 111)
                     ("LATIN SMALL LETTER N" . 110)
                     ("LATIN SMALL LETTER M" . 109)
                     ("LATIN SMALL LETTER L" . 108)
                     ("LATIN SMALL LETTER K" . 107)
                     ("LATIN SMALL LETTER J" . 106)
                     ("LATIN SMALL LETTER I" . 105)
                     ("LATIN SMALL LETTER H" . 104)
                     ("LATIN SMALL LETTER G" . 103)
                     ("LATIN SMALL LETTER F" . 102)
                     ("LATIN SMALL LETTER E" . 101)
                     ("LATIN SMALL LETTER D" . 100)
                     ("LATIN SMALL LETTER C" . 99)
                     ("LATIN SMALL LETTER B" . 98)
                     ("LATIN SMALL LETTER A" . 97))
  "...")

;;------------------

(defun my-test ()
  (my-delete-if-not #'my-char-displayable-p char-names))

(defun my-char-displayable-p (char+code) (char-displayable-p (cdr char+code)))

(defun my-delete-if-not (predicate xs)
  (while (and xs  (not (funcall predicate (car xs)))) (setq xs  (cdr xs)))
  (let ((cl-p  xs))
    (while (cdr cl-p)
      (if (not (funcall predicate (cadr cl-p)))
          (setcdr cl-p (cddr cl-p))
        (setq cl-p  (cdr cl-p)))))
  xs)

(load-library "mule-util.el")
(load-library "profiler.el")
(profiler-start 'cpu+mem)
(my-test)
(profiler-report)
(profiler-stop)


  reply	other threads:[~2018-02-20 18:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-19 22:07 bug#30539: 26.0; `char-displayable-p' is much slower in Emacs 25 and 26 Drew Adams
2018-02-20 18:08 ` Drew Adams [this message]
2018-02-22 14:50   ` Drew Adams
2018-02-23  1:49     ` Noam Postavsky
2018-02-23  2:43       ` Drew Adams
2018-02-23  3:32         ` Noam Postavsky
2018-02-23  4:07           ` Drew Adams
2018-02-23  7:14             ` Eli Zaretskii
2020-06-27 21:34           ` Drew Adams
2020-11-18 15:35       ` Stefan Kangas
2020-11-18 17:21         ` Eli Zaretskii
2020-11-18 18:30           ` Stefan Kangas
2018-02-28 19:21   ` Charles A. Roelli
     [not found] <<8c79c39f-7abb-4591-a676-17fb46af5a8f@default>
     [not found] ` <<ec3497d7-9a7d-4be8-8712-19bb6bdd96e8@default>
     [not found]   ` <<m2d10oj4xj.fsf@aurox.ch>
2018-02-28 19:53     ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ec3497d7-9a7d-4be8-8712-19bb6bdd96e8@default \
    --to=drew.adams@oracle.com \
    --cc=30539@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).