1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758

/// An enum to represent all characters in the LatinExtendedD block.
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum LatinExtendedD {
    /// \u{a720}: '꜠'
    ModifierLetterStressAndHighTone,
    /// \u{a721}: '꜡'
    ModifierLetterStressAndLowTone,
    /// \u{a722}: 'Ꜣ'
    LatinCapitalLetterEgyptologicalAlef,
    /// \u{a723}: 'ꜣ'
    LatinSmallLetterEgyptologicalAlef,
    /// \u{a724}: 'Ꜥ'
    LatinCapitalLetterEgyptologicalAin,
    /// \u{a725}: 'ꜥ'
    LatinSmallLetterEgyptologicalAin,
    /// \u{a726}: 'Ꜧ'
    LatinCapitalLetterHeng,
    /// \u{a727}: 'ꜧ'
    LatinSmallLetterHeng,
    /// \u{a728}: 'Ꜩ'
    LatinCapitalLetterTz,
    /// \u{a729}: 'ꜩ'
    LatinSmallLetterTz,
    /// \u{a72a}: 'Ꜫ'
    LatinCapitalLetterTresillo,
    /// \u{a72b}: 'ꜫ'
    LatinSmallLetterTresillo,
    /// \u{a72c}: 'Ꜭ'
    LatinCapitalLetterCuatrillo,
    /// \u{a72d}: 'ꜭ'
    LatinSmallLetterCuatrillo,
    /// \u{a72e}: 'Ꜯ'
    LatinCapitalLetterCuatrilloWithComma,
    /// \u{a72f}: 'ꜯ'
    LatinSmallLetterCuatrilloWithComma,
    /// \u{a730}: 'ꜰ'
    LatinLetterSmallCapitalF,
    /// \u{a731}: 'ꜱ'
    LatinLetterSmallCapitalS,
    /// \u{a732}: 'Ꜳ'
    LatinCapitalLetterAa,
    /// \u{a733}: 'ꜳ'
    LatinSmallLetterAa,
    /// \u{a734}: 'Ꜵ'
    LatinCapitalLetterAo,
    /// \u{a735}: 'ꜵ'
    LatinSmallLetterAo,
    /// \u{a736}: 'Ꜷ'
    LatinCapitalLetterAu,
    /// \u{a737}: 'ꜷ'
    LatinSmallLetterAu,
    /// \u{a738}: 'Ꜹ'
    LatinCapitalLetterAv,
    /// \u{a739}: 'ꜹ'
    LatinSmallLetterAv,
    /// \u{a73a}: 'Ꜻ'
    LatinCapitalLetterAvWithHorizontalBar,
    /// \u{a73b}: 'ꜻ'
    LatinSmallLetterAvWithHorizontalBar,
    /// \u{a73c}: 'Ꜽ'
    LatinCapitalLetterAy,
    /// \u{a73d}: 'ꜽ'
    LatinSmallLetterAy,
    /// \u{a73e}: 'Ꜿ'
    LatinCapitalLetterReversedCWithDot,
    /// \u{a73f}: 'ꜿ'
    LatinSmallLetterReversedCWithDot,
    /// \u{a740}: 'Ꝁ'
    LatinCapitalLetterKWithStroke,
    /// \u{a741}: 'ꝁ'
    LatinSmallLetterKWithStroke,
    /// \u{a742}: 'Ꝃ'
    LatinCapitalLetterKWithDiagonalStroke,
    /// \u{a743}: 'ꝃ'
    LatinSmallLetterKWithDiagonalStroke,
    /// \u{a744}: 'Ꝅ'
    LatinCapitalLetterKWithStrokeAndDiagonalStroke,
    /// \u{a745}: 'ꝅ'
    LatinSmallLetterKWithStrokeAndDiagonalStroke,
    /// \u{a746}: 'Ꝇ'
    LatinCapitalLetterBrokenL,
    /// \u{a747}: 'ꝇ'
    LatinSmallLetterBrokenL,
    /// \u{a748}: 'Ꝉ'
    LatinCapitalLetterLWithHighStroke,
    /// \u{a749}: 'ꝉ'
    LatinSmallLetterLWithHighStroke,
    /// \u{a74a}: 'Ꝋ'
    LatinCapitalLetterOWithLongStrokeOverlay,
    /// \u{a74b}: 'ꝋ'
    LatinSmallLetterOWithLongStrokeOverlay,
    /// \u{a74c}: 'Ꝍ'
    LatinCapitalLetterOWithLoop,
    /// \u{a74d}: 'ꝍ'
    LatinSmallLetterOWithLoop,
    /// \u{a74e}: 'Ꝏ'
    LatinCapitalLetterOo,
    /// \u{a74f}: 'ꝏ'
    LatinSmallLetterOo,
    /// \u{a750}: 'Ꝑ'
    LatinCapitalLetterPWithStrokeThroughDescender,
    /// \u{a751}: 'ꝑ'
    LatinSmallLetterPWithStrokeThroughDescender,
    /// \u{a752}: 'Ꝓ'
    LatinCapitalLetterPWithFlourish,
    /// \u{a753}: 'ꝓ'
    LatinSmallLetterPWithFlourish,
    /// \u{a754}: 'Ꝕ'
    LatinCapitalLetterPWithSquirrelTail,
    /// \u{a755}: 'ꝕ'
    LatinSmallLetterPWithSquirrelTail,
    /// \u{a756}: 'Ꝗ'
    LatinCapitalLetterQWithStrokeThroughDescender,
    /// \u{a757}: 'ꝗ'
    LatinSmallLetterQWithStrokeThroughDescender,
    /// \u{a758}: 'Ꝙ'
    LatinCapitalLetterQWithDiagonalStroke,
    /// \u{a759}: 'ꝙ'
    LatinSmallLetterQWithDiagonalStroke,
    /// \u{a75a}: 'Ꝛ'
    LatinCapitalLetterRRotunda,
    /// \u{a75b}: 'ꝛ'
    LatinSmallLetterRRotunda,
    /// \u{a75c}: 'Ꝝ'
    LatinCapitalLetterRumRotunda,
    /// \u{a75d}: 'ꝝ'
    LatinSmallLetterRumRotunda,
    /// \u{a75e}: 'Ꝟ'
    LatinCapitalLetterVWithDiagonalStroke,
    /// \u{a75f}: 'ꝟ'
    LatinSmallLetterVWithDiagonalStroke,
    /// \u{a760}: 'Ꝡ'
    LatinCapitalLetterVy,
    /// \u{a761}: 'ꝡ'
    LatinSmallLetterVy,
    /// \u{a762}: 'Ꝣ'
    LatinCapitalLetterVisigothicZ,
    /// \u{a763}: 'ꝣ'
    LatinSmallLetterVisigothicZ,
    /// \u{a764}: 'Ꝥ'
    LatinCapitalLetterThornWithStroke,
    /// \u{a765}: 'ꝥ'
    LatinSmallLetterThornWithStroke,
    /// \u{a766}: 'Ꝧ'
    LatinCapitalLetterThornWithStrokeThroughDescender,
    /// \u{a767}: 'ꝧ'
    LatinSmallLetterThornWithStrokeThroughDescender,
    /// \u{a768}: 'Ꝩ'
    LatinCapitalLetterVend,
    /// \u{a769}: 'ꝩ'
    LatinSmallLetterVend,
    /// \u{a76a}: 'Ꝫ'
    LatinCapitalLetterEt,
    /// \u{a76b}: 'ꝫ'
    LatinSmallLetterEt,
    /// \u{a76c}: 'Ꝭ'
    LatinCapitalLetterIs,
    /// \u{a76d}: 'ꝭ'
    LatinSmallLetterIs,
    /// \u{a76e}: 'Ꝯ'
    LatinCapitalLetterCon,
    /// \u{a76f}: 'ꝯ'
    LatinSmallLetterCon,
    /// \u{a770}: 'ꝰ'
    ModifierLetterUs,
    /// \u{a771}: 'ꝱ'
    LatinSmallLetterDum,
    /// \u{a772}: 'ꝲ'
    LatinSmallLetterLum,
    /// \u{a773}: 'ꝳ'
    LatinSmallLetterMum,
    /// \u{a774}: 'ꝴ'
    LatinSmallLetterNum,
    /// \u{a775}: 'ꝵ'
    LatinSmallLetterRum,
    /// \u{a776}: 'ꝶ'
    LatinLetterSmallCapitalRum,
    /// \u{a777}: 'ꝷ'
    LatinSmallLetterTum,
    /// \u{a778}: 'ꝸ'
    LatinSmallLetterUm,
    /// \u{a779}: 'Ꝺ'
    LatinCapitalLetterInsularD,
    /// \u{a77a}: 'ꝺ'
    LatinSmallLetterInsularD,
    /// \u{a77b}: 'Ꝼ'
    LatinCapitalLetterInsularF,
    /// \u{a77c}: 'ꝼ'
    LatinSmallLetterInsularF,
    /// \u{a77d}: 'Ᵹ'
    LatinCapitalLetterInsularG,
    /// \u{a77e}: 'Ꝿ'
    LatinCapitalLetterTurnedInsularG,
    /// \u{a77f}: 'ꝿ'
    LatinSmallLetterTurnedInsularG,
    /// \u{a780}: 'Ꞁ'
    LatinCapitalLetterTurnedL,
    /// \u{a781}: 'ꞁ'
    LatinSmallLetterTurnedL,
    /// \u{a782}: 'Ꞃ'
    LatinCapitalLetterInsularR,
    /// \u{a783}: 'ꞃ'
    LatinSmallLetterInsularR,
    /// \u{a784}: 'Ꞅ'
    LatinCapitalLetterInsularS,
    /// \u{a785}: 'ꞅ'
    LatinSmallLetterInsularS,
    /// \u{a786}: 'Ꞇ'
    LatinCapitalLetterInsularT,
    /// \u{a787}: 'ꞇ'
    LatinSmallLetterInsularT,
    /// \u{a788}: 'ꞈ'
    ModifierLetterLowCircumflexAccent,
    /// \u{a789}: '꞉'
    ModifierLetterColon,
    /// \u{a78a}: '꞊'
    ModifierLetterShortEqualsSign,
    /// \u{a78b}: 'Ꞌ'
    LatinCapitalLetterSaltillo,
    /// \u{a78c}: 'ꞌ'
    LatinSmallLetterSaltillo,
    /// \u{a78d}: 'Ɥ'
    LatinCapitalLetterTurnedH,
    /// \u{a78e}: 'ꞎ'
    LatinSmallLetterLWithRetroflexHookAndBelt,
    /// \u{a78f}: 'ꞏ'
    LatinLetterSinologicalDot,
    /// \u{a790}: 'Ꞑ'
    LatinCapitalLetterNWithDescender,
    /// \u{a791}: 'ꞑ'
    LatinSmallLetterNWithDescender,
    /// \u{a792}: 'Ꞓ'
    LatinCapitalLetterCWithBar,
    /// \u{a793}: 'ꞓ'
    LatinSmallLetterCWithBar,
    /// \u{a794}: 'ꞔ'
    LatinSmallLetterCWithPalatalHook,
    /// \u{a795}: 'ꞕ'
    LatinSmallLetterHWithPalatalHook,
    /// \u{a796}: 'Ꞗ'
    LatinCapitalLetterBWithFlourish,
    /// \u{a797}: 'ꞗ'
    LatinSmallLetterBWithFlourish,
    /// \u{a798}: 'Ꞙ'
    LatinCapitalLetterFWithStroke,
    /// \u{a799}: 'ꞙ'
    LatinSmallLetterFWithStroke,
    /// \u{a79a}: 'Ꞛ'
    LatinCapitalLetterVolapukAe,
    /// \u{a79b}: 'ꞛ'
    LatinSmallLetterVolapukAe,
    /// \u{a79c}: 'Ꞝ'
    LatinCapitalLetterVolapukOe,
    /// \u{a79d}: 'ꞝ'
    LatinSmallLetterVolapukOe,
    /// \u{a79e}: 'Ꞟ'
    LatinCapitalLetterVolapukUe,
    /// \u{a79f}: 'ꞟ'
    LatinSmallLetterVolapukUe,
    /// \u{a7a0}: 'Ꞡ'
    LatinCapitalLetterGWithObliqueStroke,
    /// \u{a7a1}: 'ꞡ'
    LatinSmallLetterGWithObliqueStroke,
    /// \u{a7a2}: 'Ꞣ'
    LatinCapitalLetterKWithObliqueStroke,
    /// \u{a7a3}: 'ꞣ'
    LatinSmallLetterKWithObliqueStroke,
    /// \u{a7a4}: 'Ꞥ'
    LatinCapitalLetterNWithObliqueStroke,
    /// \u{a7a5}: 'ꞥ'
    LatinSmallLetterNWithObliqueStroke,
    /// \u{a7a6}: 'Ꞧ'
    LatinCapitalLetterRWithObliqueStroke,
    /// \u{a7a7}: 'ꞧ'
    LatinSmallLetterRWithObliqueStroke,
    /// \u{a7a8}: 'Ꞩ'
    LatinCapitalLetterSWithObliqueStroke,
    /// \u{a7a9}: 'ꞩ'
    LatinSmallLetterSWithObliqueStroke,
    /// \u{a7aa}: 'Ɦ'
    LatinCapitalLetterHWithHook,
    /// \u{a7ab}: 'Ɜ'
    LatinCapitalLetterReversedOpenE,
    /// \u{a7ac}: 'Ɡ'
    LatinCapitalLetterScriptG,
    /// \u{a7ad}: 'Ɬ'
    LatinCapitalLetterLWithBelt,
    /// \u{a7ae}: 'Ɪ'
    LatinCapitalLetterSmallCapitalI,
    /// \u{a7af}: 'ꞯ'
    LatinLetterSmallCapitalQ,
    /// \u{a7b0}: 'Ʞ'
    LatinCapitalLetterTurnedK,
    /// \u{a7b1}: 'Ʇ'
    LatinCapitalLetterTurnedT,
    /// \u{a7b2}: 'Ʝ'
    LatinCapitalLetterJWithCrossedDashTail,
    /// \u{a7b3}: 'Ꭓ'
    LatinCapitalLetterChi,
    /// \u{a7b4}: 'Ꞵ'
    LatinCapitalLetterBeta,
    /// \u{a7b5}: 'ꞵ'
    LatinSmallLetterBeta,
    /// \u{a7b6}: 'Ꞷ'
    LatinCapitalLetterOmega,
    /// \u{a7b7}: 'ꞷ'
    LatinSmallLetterOmega,
    /// \u{a7b8}: 'Ꞹ'
    LatinCapitalLetterUWithStroke,
    /// \u{a7b9}: 'ꞹ'
    LatinSmallLetterUWithStroke,
    /// \u{a7ba}: 'Ꞻ'
    LatinCapitalLetterGlottalA,
    /// \u{a7bb}: 'ꞻ'
    LatinSmallLetterGlottalA,
    /// \u{a7bc}: 'Ꞽ'
    LatinCapitalLetterGlottalI,
    /// \u{a7bd}: 'ꞽ'
    LatinSmallLetterGlottalI,
    /// \u{a7be}: 'Ꞿ'
    LatinCapitalLetterGlottalU,
    /// \u{a7bf}: 'ꞿ'
    LatinSmallLetterGlottalU,
    /// \u{a7c2}: 'Ꟃ'
    LatinCapitalLetterAnglicanaW,
    /// \u{a7c3}: 'ꟃ'
    LatinSmallLetterAnglicanaW,
    /// \u{a7c4}: 'Ꞔ'
    LatinCapitalLetterCWithPalatalHook,
    /// \u{a7c5}: 'Ʂ'
    LatinCapitalLetterSWithHook,
    /// \u{a7c6}: 'Ᶎ'
    LatinCapitalLetterZWithPalatalHook,
    /// \u{a7f7}: 'ꟷ'
    LatinEpigraphicLetterSidewaysI,
    /// \u{a7f8}: 'ꟸ'
    ModifierLetterCapitalHWithStroke,
    /// \u{a7f9}: 'ꟹ'
    ModifierLetterSmallLigatureOe,
    /// \u{a7fa}: 'ꟺ'
    LatinLetterSmallCapitalTurnedM,
    /// \u{a7fb}: 'ꟻ'
    LatinEpigraphicLetterReversedF,
    /// \u{a7fc}: 'ꟼ'
    LatinEpigraphicLetterReversedP,
    /// \u{a7fd}: 'ꟽ'
    LatinEpigraphicLetterInvertedM,
    /// \u{a7fe}: 'ꟾ'
    LatinEpigraphicLetterILonga,
}

impl Into<char> for LatinExtendedD {
    fn into(self) -> char {
        match self {
            LatinExtendedD::ModifierLetterStressAndHighTone => '꜠',
            LatinExtendedD::ModifierLetterStressAndLowTone => '꜡',
            LatinExtendedD::LatinCapitalLetterEgyptologicalAlef => 'Ꜣ',
            LatinExtendedD::LatinSmallLetterEgyptologicalAlef => 'ꜣ',
            LatinExtendedD::LatinCapitalLetterEgyptologicalAin => 'Ꜥ',
            LatinExtendedD::LatinSmallLetterEgyptologicalAin => 'ꜥ',
            LatinExtendedD::LatinCapitalLetterHeng => 'Ꜧ',
            LatinExtendedD::LatinSmallLetterHeng => 'ꜧ',
            LatinExtendedD::LatinCapitalLetterTz => 'Ꜩ',
            LatinExtendedD::LatinSmallLetterTz => 'ꜩ',
            LatinExtendedD::LatinCapitalLetterTresillo => 'Ꜫ',
            LatinExtendedD::LatinSmallLetterTresillo => 'ꜫ',
            LatinExtendedD::LatinCapitalLetterCuatrillo => 'Ꜭ',
            LatinExtendedD::LatinSmallLetterCuatrillo => 'ꜭ',
            LatinExtendedD::LatinCapitalLetterCuatrilloWithComma => 'Ꜯ',
            LatinExtendedD::LatinSmallLetterCuatrilloWithComma => 'ꜯ',
            LatinExtendedD::LatinLetterSmallCapitalF => 'ꜰ',
            LatinExtendedD::LatinLetterSmallCapitalS => 'ꜱ',
            LatinExtendedD::LatinCapitalLetterAa => 'Ꜳ',
            LatinExtendedD::LatinSmallLetterAa => 'ꜳ',
            LatinExtendedD::LatinCapitalLetterAo => 'Ꜵ',
            LatinExtendedD::LatinSmallLetterAo => 'ꜵ',
            LatinExtendedD::LatinCapitalLetterAu => 'Ꜷ',
            LatinExtendedD::LatinSmallLetterAu => 'ꜷ',
            LatinExtendedD::LatinCapitalLetterAv => 'Ꜹ',
            LatinExtendedD::LatinSmallLetterAv => 'ꜹ',
            LatinExtendedD::LatinCapitalLetterAvWithHorizontalBar => 'Ꜻ',
            LatinExtendedD::LatinSmallLetterAvWithHorizontalBar => 'ꜻ',
            LatinExtendedD::LatinCapitalLetterAy => 'Ꜽ',
            LatinExtendedD::LatinSmallLetterAy => 'ꜽ',
            LatinExtendedD::LatinCapitalLetterReversedCWithDot => 'Ꜿ',
            LatinExtendedD::LatinSmallLetterReversedCWithDot => 'ꜿ',
            LatinExtendedD::LatinCapitalLetterKWithStroke => 'Ꝁ',
            LatinExtendedD::LatinSmallLetterKWithStroke => 'ꝁ',
            LatinExtendedD::LatinCapitalLetterKWithDiagonalStroke => 'Ꝃ',
            LatinExtendedD::LatinSmallLetterKWithDiagonalStroke => 'ꝃ',
            LatinExtendedD::LatinCapitalLetterKWithStrokeAndDiagonalStroke => 'Ꝅ',
            LatinExtendedD::LatinSmallLetterKWithStrokeAndDiagonalStroke => 'ꝅ',
            LatinExtendedD::LatinCapitalLetterBrokenL => 'Ꝇ',
            LatinExtendedD::LatinSmallLetterBrokenL => 'ꝇ',
            LatinExtendedD::LatinCapitalLetterLWithHighStroke => 'Ꝉ',
            LatinExtendedD::LatinSmallLetterLWithHighStroke => 'ꝉ',
            LatinExtendedD::LatinCapitalLetterOWithLongStrokeOverlay => 'Ꝋ',
            LatinExtendedD::LatinSmallLetterOWithLongStrokeOverlay => 'ꝋ',
            LatinExtendedD::LatinCapitalLetterOWithLoop => 'Ꝍ',
            LatinExtendedD::LatinSmallLetterOWithLoop => 'ꝍ',
            LatinExtendedD::LatinCapitalLetterOo => 'Ꝏ',
            LatinExtendedD::LatinSmallLetterOo => 'ꝏ',
            LatinExtendedD::LatinCapitalLetterPWithStrokeThroughDescender => 'Ꝑ',
            LatinExtendedD::LatinSmallLetterPWithStrokeThroughDescender => 'ꝑ',
            LatinExtendedD::LatinCapitalLetterPWithFlourish => 'Ꝓ',
            LatinExtendedD::LatinSmallLetterPWithFlourish => 'ꝓ',
            LatinExtendedD::LatinCapitalLetterPWithSquirrelTail => 'Ꝕ',
            LatinExtendedD::LatinSmallLetterPWithSquirrelTail => 'ꝕ',
            LatinExtendedD::LatinCapitalLetterQWithStrokeThroughDescender => 'Ꝗ',
            LatinExtendedD::LatinSmallLetterQWithStrokeThroughDescender => 'ꝗ',
            LatinExtendedD::LatinCapitalLetterQWithDiagonalStroke => 'Ꝙ',
            LatinExtendedD::LatinSmallLetterQWithDiagonalStroke => 'ꝙ',
            LatinExtendedD::LatinCapitalLetterRRotunda => 'Ꝛ',
            LatinExtendedD::LatinSmallLetterRRotunda => 'ꝛ',
            LatinExtendedD::LatinCapitalLetterRumRotunda => 'Ꝝ',
            LatinExtendedD::LatinSmallLetterRumRotunda => 'ꝝ',
            LatinExtendedD::LatinCapitalLetterVWithDiagonalStroke => 'Ꝟ',
            LatinExtendedD::LatinSmallLetterVWithDiagonalStroke => 'ꝟ',
            LatinExtendedD::LatinCapitalLetterVy => 'Ꝡ',
            LatinExtendedD::LatinSmallLetterVy => 'ꝡ',
            LatinExtendedD::LatinCapitalLetterVisigothicZ => 'Ꝣ',
            LatinExtendedD::LatinSmallLetterVisigothicZ => 'ꝣ',
            LatinExtendedD::LatinCapitalLetterThornWithStroke => 'Ꝥ',
            LatinExtendedD::LatinSmallLetterThornWithStroke => 'ꝥ',
            LatinExtendedD::LatinCapitalLetterThornWithStrokeThroughDescender => 'Ꝧ',
            LatinExtendedD::LatinSmallLetterThornWithStrokeThroughDescender => 'ꝧ',
            LatinExtendedD::LatinCapitalLetterVend => 'Ꝩ',
            LatinExtendedD::LatinSmallLetterVend => 'ꝩ',
            LatinExtendedD::LatinCapitalLetterEt => 'Ꝫ',
            LatinExtendedD::LatinSmallLetterEt => 'ꝫ',
            LatinExtendedD::LatinCapitalLetterIs => 'Ꝭ',
            LatinExtendedD::LatinSmallLetterIs => 'ꝭ',
            LatinExtendedD::LatinCapitalLetterCon => 'Ꝯ',
            LatinExtendedD::LatinSmallLetterCon => 'ꝯ',
            LatinExtendedD::ModifierLetterUs => 'ꝰ',
            LatinExtendedD::LatinSmallLetterDum => 'ꝱ',
            LatinExtendedD::LatinSmallLetterLum => 'ꝲ',
            LatinExtendedD::LatinSmallLetterMum => 'ꝳ',
            LatinExtendedD::LatinSmallLetterNum => 'ꝴ',
            LatinExtendedD::LatinSmallLetterRum => 'ꝵ',
            LatinExtendedD::LatinLetterSmallCapitalRum => 'ꝶ',
            LatinExtendedD::LatinSmallLetterTum => 'ꝷ',
            LatinExtendedD::LatinSmallLetterUm => 'ꝸ',
            LatinExtendedD::LatinCapitalLetterInsularD => 'Ꝺ',
            LatinExtendedD::LatinSmallLetterInsularD => 'ꝺ',
            LatinExtendedD::LatinCapitalLetterInsularF => 'Ꝼ',
            LatinExtendedD::LatinSmallLetterInsularF => 'ꝼ',
            LatinExtendedD::LatinCapitalLetterInsularG => 'Ᵹ',
            LatinExtendedD::LatinCapitalLetterTurnedInsularG => 'Ꝿ',
            LatinExtendedD::LatinSmallLetterTurnedInsularG => 'ꝿ',
            LatinExtendedD::LatinCapitalLetterTurnedL => 'Ꞁ',
            LatinExtendedD::LatinSmallLetterTurnedL => 'ꞁ',
            LatinExtendedD::LatinCapitalLetterInsularR => 'Ꞃ',
            LatinExtendedD::LatinSmallLetterInsularR => 'ꞃ',
            LatinExtendedD::LatinCapitalLetterInsularS => 'Ꞅ',
            LatinExtendedD::LatinSmallLetterInsularS => 'ꞅ',
            LatinExtendedD::LatinCapitalLetterInsularT => 'Ꞇ',
            LatinExtendedD::LatinSmallLetterInsularT => 'ꞇ',
            LatinExtendedD::ModifierLetterLowCircumflexAccent => 'ꞈ',
            LatinExtendedD::ModifierLetterColon => '꞉',
            LatinExtendedD::ModifierLetterShortEqualsSign => '꞊',
            LatinExtendedD::LatinCapitalLetterSaltillo => 'Ꞌ',
            LatinExtendedD::LatinSmallLetterSaltillo => 'ꞌ',
            LatinExtendedD::LatinCapitalLetterTurnedH => 'Ɥ',
            LatinExtendedD::LatinSmallLetterLWithRetroflexHookAndBelt => 'ꞎ',
            LatinExtendedD::LatinLetterSinologicalDot => 'ꞏ',
            LatinExtendedD::LatinCapitalLetterNWithDescender => 'Ꞑ',
            LatinExtendedD::LatinSmallLetterNWithDescender => 'ꞑ',
            LatinExtendedD::LatinCapitalLetterCWithBar => 'Ꞓ',
            LatinExtendedD::LatinSmallLetterCWithBar => 'ꞓ',
            LatinExtendedD::LatinSmallLetterCWithPalatalHook => 'ꞔ',
            LatinExtendedD::LatinSmallLetterHWithPalatalHook => 'ꞕ',
            LatinExtendedD::LatinCapitalLetterBWithFlourish => 'Ꞗ',
            LatinExtendedD::LatinSmallLetterBWithFlourish => 'ꞗ',
            LatinExtendedD::LatinCapitalLetterFWithStroke => 'Ꞙ',
            LatinExtendedD::LatinSmallLetterFWithStroke => 'ꞙ',
            LatinExtendedD::LatinCapitalLetterVolapukAe => 'Ꞛ',
            LatinExtendedD::LatinSmallLetterVolapukAe => 'ꞛ',
            LatinExtendedD::LatinCapitalLetterVolapukOe => 'Ꞝ',
            LatinExtendedD::LatinSmallLetterVolapukOe => 'ꞝ',
            LatinExtendedD::LatinCapitalLetterVolapukUe => 'Ꞟ',
            LatinExtendedD::LatinSmallLetterVolapukUe => 'ꞟ',
            LatinExtendedD::LatinCapitalLetterGWithObliqueStroke => 'Ꞡ',
            LatinExtendedD::LatinSmallLetterGWithObliqueStroke => 'ꞡ',
            LatinExtendedD::LatinCapitalLetterKWithObliqueStroke => 'Ꞣ',
            LatinExtendedD::LatinSmallLetterKWithObliqueStroke => 'ꞣ',
            LatinExtendedD::LatinCapitalLetterNWithObliqueStroke => 'Ꞥ',
            LatinExtendedD::LatinSmallLetterNWithObliqueStroke => 'ꞥ',
            LatinExtendedD::LatinCapitalLetterRWithObliqueStroke => 'Ꞧ',
            LatinExtendedD::LatinSmallLetterRWithObliqueStroke => 'ꞧ',
            LatinExtendedD::LatinCapitalLetterSWithObliqueStroke => 'Ꞩ',
            LatinExtendedD::LatinSmallLetterSWithObliqueStroke => 'ꞩ',
            LatinExtendedD::LatinCapitalLetterHWithHook => 'Ɦ',
            LatinExtendedD::LatinCapitalLetterReversedOpenE => 'Ɜ',
            LatinExtendedD::LatinCapitalLetterScriptG => 'Ɡ',
            LatinExtendedD::LatinCapitalLetterLWithBelt => 'Ɬ',
            LatinExtendedD::LatinCapitalLetterSmallCapitalI => 'Ɪ',
            LatinExtendedD::LatinLetterSmallCapitalQ => 'ꞯ',
            LatinExtendedD::LatinCapitalLetterTurnedK => 'Ʞ',
            LatinExtendedD::LatinCapitalLetterTurnedT => 'Ʇ',
            LatinExtendedD::LatinCapitalLetterJWithCrossedDashTail => 'Ʝ',
            LatinExtendedD::LatinCapitalLetterChi => 'Ꭓ',
            LatinExtendedD::LatinCapitalLetterBeta => 'Ꞵ',
            LatinExtendedD::LatinSmallLetterBeta => 'ꞵ',
            LatinExtendedD::LatinCapitalLetterOmega => 'Ꞷ',
            LatinExtendedD::LatinSmallLetterOmega => 'ꞷ',
            LatinExtendedD::LatinCapitalLetterUWithStroke => 'Ꞹ',
            LatinExtendedD::LatinSmallLetterUWithStroke => 'ꞹ',
            LatinExtendedD::LatinCapitalLetterGlottalA => 'Ꞻ',
            LatinExtendedD::LatinSmallLetterGlottalA => 'ꞻ',
            LatinExtendedD::LatinCapitalLetterGlottalI => 'Ꞽ',
            LatinExtendedD::LatinSmallLetterGlottalI => 'ꞽ',
            LatinExtendedD::LatinCapitalLetterGlottalU => 'Ꞿ',
            LatinExtendedD::LatinSmallLetterGlottalU => 'ꞿ',
            LatinExtendedD::LatinCapitalLetterAnglicanaW => 'Ꟃ',
            LatinExtendedD::LatinSmallLetterAnglicanaW => 'ꟃ',
            LatinExtendedD::LatinCapitalLetterCWithPalatalHook => 'Ꞔ',
            LatinExtendedD::LatinCapitalLetterSWithHook => 'Ʂ',
            LatinExtendedD::LatinCapitalLetterZWithPalatalHook => 'Ᶎ',
            LatinExtendedD::LatinEpigraphicLetterSidewaysI => 'ꟷ',
            LatinExtendedD::ModifierLetterCapitalHWithStroke => 'ꟸ',
            LatinExtendedD::ModifierLetterSmallLigatureOe => 'ꟹ',
            LatinExtendedD::LatinLetterSmallCapitalTurnedM => 'ꟺ',
            LatinExtendedD::LatinEpigraphicLetterReversedF => 'ꟻ',
            LatinExtendedD::LatinEpigraphicLetterReversedP => 'ꟼ',
            LatinExtendedD::LatinEpigraphicLetterInvertedM => 'ꟽ',
            LatinExtendedD::LatinEpigraphicLetterILonga => 'ꟾ',
        }
    }
}

impl std::convert::TryFrom<char> for LatinExtendedD {
    type Error = ();
    fn try_from(c: char) -> Result<Self, Self::Error> {
        match c {
            '꜠' => Ok(LatinExtendedD::ModifierLetterStressAndHighTone),
            '꜡' => Ok(LatinExtendedD::ModifierLetterStressAndLowTone),
            'Ꜣ' => Ok(LatinExtendedD::LatinCapitalLetterEgyptologicalAlef),
            'ꜣ' => Ok(LatinExtendedD::LatinSmallLetterEgyptologicalAlef),
            'Ꜥ' => Ok(LatinExtendedD::LatinCapitalLetterEgyptologicalAin),
            'ꜥ' => Ok(LatinExtendedD::LatinSmallLetterEgyptologicalAin),
            'Ꜧ' => Ok(LatinExtendedD::LatinCapitalLetterHeng),
            'ꜧ' => Ok(LatinExtendedD::LatinSmallLetterHeng),
            'Ꜩ' => Ok(LatinExtendedD::LatinCapitalLetterTz),
            'ꜩ' => Ok(LatinExtendedD::LatinSmallLetterTz),
            'Ꜫ' => Ok(LatinExtendedD::LatinCapitalLetterTresillo),
            'ꜫ' => Ok(LatinExtendedD::LatinSmallLetterTresillo),
            'Ꜭ' => Ok(LatinExtendedD::LatinCapitalLetterCuatrillo),
            'ꜭ' => Ok(LatinExtendedD::LatinSmallLetterCuatrillo),
            'Ꜯ' => Ok(LatinExtendedD::LatinCapitalLetterCuatrilloWithComma),
            'ꜯ' => Ok(LatinExtendedD::LatinSmallLetterCuatrilloWithComma),
            'ꜰ' => Ok(LatinExtendedD::LatinLetterSmallCapitalF),
            'ꜱ' => Ok(LatinExtendedD::LatinLetterSmallCapitalS),
            'Ꜳ' => Ok(LatinExtendedD::LatinCapitalLetterAa),
            'ꜳ' => Ok(LatinExtendedD::LatinSmallLetterAa),
            'Ꜵ' => Ok(LatinExtendedD::LatinCapitalLetterAo),
            'ꜵ' => Ok(LatinExtendedD::LatinSmallLetterAo),
            'Ꜷ' => Ok(LatinExtendedD::LatinCapitalLetterAu),
            'ꜷ' => Ok(LatinExtendedD::LatinSmallLetterAu),
            'Ꜹ' => Ok(LatinExtendedD::LatinCapitalLetterAv),
            'ꜹ' => Ok(LatinExtendedD::LatinSmallLetterAv),
            'Ꜻ' => Ok(LatinExtendedD::LatinCapitalLetterAvWithHorizontalBar),
            'ꜻ' => Ok(LatinExtendedD::LatinSmallLetterAvWithHorizontalBar),
            'Ꜽ' => Ok(LatinExtendedD::LatinCapitalLetterAy),
            'ꜽ' => Ok(LatinExtendedD::LatinSmallLetterAy),
            'Ꜿ' => Ok(LatinExtendedD::LatinCapitalLetterReversedCWithDot),
            'ꜿ' => Ok(LatinExtendedD::LatinSmallLetterReversedCWithDot),
            'Ꝁ' => Ok(LatinExtendedD::LatinCapitalLetterKWithStroke),
            'ꝁ' => Ok(LatinExtendedD::LatinSmallLetterKWithStroke),
            'Ꝃ' => Ok(LatinExtendedD::LatinCapitalLetterKWithDiagonalStroke),
            'ꝃ' => Ok(LatinExtendedD::LatinSmallLetterKWithDiagonalStroke),
            'Ꝅ' => Ok(LatinExtendedD::LatinCapitalLetterKWithStrokeAndDiagonalStroke),
            'ꝅ' => Ok(LatinExtendedD::LatinSmallLetterKWithStrokeAndDiagonalStroke),
            'Ꝇ' => Ok(LatinExtendedD::LatinCapitalLetterBrokenL),
            'ꝇ' => Ok(LatinExtendedD::LatinSmallLetterBrokenL),
            'Ꝉ' => Ok(LatinExtendedD::LatinCapitalLetterLWithHighStroke),
            'ꝉ' => Ok(LatinExtendedD::LatinSmallLetterLWithHighStroke),
            'Ꝋ' => Ok(LatinExtendedD::LatinCapitalLetterOWithLongStrokeOverlay),
            'ꝋ' => Ok(LatinExtendedD::LatinSmallLetterOWithLongStrokeOverlay),
            'Ꝍ' => Ok(LatinExtendedD::LatinCapitalLetterOWithLoop),
            'ꝍ' => Ok(LatinExtendedD::LatinSmallLetterOWithLoop),
            'Ꝏ' => Ok(LatinExtendedD::LatinCapitalLetterOo),
            'ꝏ' => Ok(LatinExtendedD::LatinSmallLetterOo),
            'Ꝑ' => Ok(LatinExtendedD::LatinCapitalLetterPWithStrokeThroughDescender),
            'ꝑ' => Ok(LatinExtendedD::LatinSmallLetterPWithStrokeThroughDescender),
            'Ꝓ' => Ok(LatinExtendedD::LatinCapitalLetterPWithFlourish),
            'ꝓ' => Ok(LatinExtendedD::LatinSmallLetterPWithFlourish),
            'Ꝕ' => Ok(LatinExtendedD::LatinCapitalLetterPWithSquirrelTail),
            'ꝕ' => Ok(LatinExtendedD::LatinSmallLetterPWithSquirrelTail),
            'Ꝗ' => Ok(LatinExtendedD::LatinCapitalLetterQWithStrokeThroughDescender),
            'ꝗ' => Ok(LatinExtendedD::LatinSmallLetterQWithStrokeThroughDescender),
            'Ꝙ' => Ok(LatinExtendedD::LatinCapitalLetterQWithDiagonalStroke),
            'ꝙ' => Ok(LatinExtendedD::LatinSmallLetterQWithDiagonalStroke),
            'Ꝛ' => Ok(LatinExtendedD::LatinCapitalLetterRRotunda),
            'ꝛ' => Ok(LatinExtendedD::LatinSmallLetterRRotunda),
            'Ꝝ' => Ok(LatinExtendedD::LatinCapitalLetterRumRotunda),
            'ꝝ' => Ok(LatinExtendedD::LatinSmallLetterRumRotunda),
            'Ꝟ' => Ok(LatinExtendedD::LatinCapitalLetterVWithDiagonalStroke),
            'ꝟ' => Ok(LatinExtendedD::LatinSmallLetterVWithDiagonalStroke),
            'Ꝡ' => Ok(LatinExtendedD::LatinCapitalLetterVy),
            'ꝡ' => Ok(LatinExtendedD::LatinSmallLetterVy),
            'Ꝣ' => Ok(LatinExtendedD::LatinCapitalLetterVisigothicZ),
            'ꝣ' => Ok(LatinExtendedD::LatinSmallLetterVisigothicZ),
            'Ꝥ' => Ok(LatinExtendedD::LatinCapitalLetterThornWithStroke),
            'ꝥ' => Ok(LatinExtendedD::LatinSmallLetterThornWithStroke),
            'Ꝧ' => Ok(LatinExtendedD::LatinCapitalLetterThornWithStrokeThroughDescender),
            'ꝧ' => Ok(LatinExtendedD::LatinSmallLetterThornWithStrokeThroughDescender),
            'Ꝩ' => Ok(LatinExtendedD::LatinCapitalLetterVend),
            'ꝩ' => Ok(LatinExtendedD::LatinSmallLetterVend),
            'Ꝫ' => Ok(LatinExtendedD::LatinCapitalLetterEt),
            'ꝫ' => Ok(LatinExtendedD::LatinSmallLetterEt),
            'Ꝭ' => Ok(LatinExtendedD::LatinCapitalLetterIs),
            'ꝭ' => Ok(LatinExtendedD::LatinSmallLetterIs),
            'Ꝯ' => Ok(LatinExtendedD::LatinCapitalLetterCon),
            'ꝯ' => Ok(LatinExtendedD::LatinSmallLetterCon),
            'ꝰ' => Ok(LatinExtendedD::ModifierLetterUs),
            'ꝱ' => Ok(LatinExtendedD::LatinSmallLetterDum),
            'ꝲ' => Ok(LatinExtendedD::LatinSmallLetterLum),
            'ꝳ' => Ok(LatinExtendedD::LatinSmallLetterMum),
            'ꝴ' => Ok(LatinExtendedD::LatinSmallLetterNum),
            'ꝵ' => Ok(LatinExtendedD::LatinSmallLetterRum),
            'ꝶ' => Ok(LatinExtendedD::LatinLetterSmallCapitalRum),
            'ꝷ' => Ok(LatinExtendedD::LatinSmallLetterTum),
            'ꝸ' => Ok(LatinExtendedD::LatinSmallLetterUm),
            'Ꝺ' => Ok(LatinExtendedD::LatinCapitalLetterInsularD),
            'ꝺ' => Ok(LatinExtendedD::LatinSmallLetterInsularD),
            'Ꝼ' => Ok(LatinExtendedD::LatinCapitalLetterInsularF),
            'ꝼ' => Ok(LatinExtendedD::LatinSmallLetterInsularF),
            'Ᵹ' => Ok(LatinExtendedD::LatinCapitalLetterInsularG),
            'Ꝿ' => Ok(LatinExtendedD::LatinCapitalLetterTurnedInsularG),
            'ꝿ' => Ok(LatinExtendedD::LatinSmallLetterTurnedInsularG),
            'Ꞁ' => Ok(LatinExtendedD::LatinCapitalLetterTurnedL),
            'ꞁ' => Ok(LatinExtendedD::LatinSmallLetterTurnedL),
            'Ꞃ' => Ok(LatinExtendedD::LatinCapitalLetterInsularR),
            'ꞃ' => Ok(LatinExtendedD::LatinSmallLetterInsularR),
            'Ꞅ' => Ok(LatinExtendedD::LatinCapitalLetterInsularS),
            'ꞅ' => Ok(LatinExtendedD::LatinSmallLetterInsularS),
            'Ꞇ' => Ok(LatinExtendedD::LatinCapitalLetterInsularT),
            'ꞇ' => Ok(LatinExtendedD::LatinSmallLetterInsularT),
            'ꞈ' => Ok(LatinExtendedD::ModifierLetterLowCircumflexAccent),
            '꞉' => Ok(LatinExtendedD::ModifierLetterColon),
            '꞊' => Ok(LatinExtendedD::ModifierLetterShortEqualsSign),
            'Ꞌ' => Ok(LatinExtendedD::LatinCapitalLetterSaltillo),
            'ꞌ' => Ok(LatinExtendedD::LatinSmallLetterSaltillo),
            'Ɥ' => Ok(LatinExtendedD::LatinCapitalLetterTurnedH),
            'ꞎ' => Ok(LatinExtendedD::LatinSmallLetterLWithRetroflexHookAndBelt),
            'ꞏ' => Ok(LatinExtendedD::LatinLetterSinologicalDot),
            'Ꞑ' => Ok(LatinExtendedD::LatinCapitalLetterNWithDescender),
            'ꞑ' => Ok(LatinExtendedD::LatinSmallLetterNWithDescender),
            'Ꞓ' => Ok(LatinExtendedD::LatinCapitalLetterCWithBar),
            'ꞓ' => Ok(LatinExtendedD::LatinSmallLetterCWithBar),
            'ꞔ' => Ok(LatinExtendedD::LatinSmallLetterCWithPalatalHook),
            'ꞕ' => Ok(LatinExtendedD::LatinSmallLetterHWithPalatalHook),
            'Ꞗ' => Ok(LatinExtendedD::LatinCapitalLetterBWithFlourish),
            'ꞗ' => Ok(LatinExtendedD::LatinSmallLetterBWithFlourish),
            'Ꞙ' => Ok(LatinExtendedD::LatinCapitalLetterFWithStroke),
            'ꞙ' => Ok(LatinExtendedD::LatinSmallLetterFWithStroke),
            'Ꞛ' => Ok(LatinExtendedD::LatinCapitalLetterVolapukAe),
            'ꞛ' => Ok(LatinExtendedD::LatinSmallLetterVolapukAe),
            'Ꞝ' => Ok(LatinExtendedD::LatinCapitalLetterVolapukOe),
            'ꞝ' => Ok(LatinExtendedD::LatinSmallLetterVolapukOe),
            'Ꞟ' => Ok(LatinExtendedD::LatinCapitalLetterVolapukUe),
            'ꞟ' => Ok(LatinExtendedD::LatinSmallLetterVolapukUe),
            'Ꞡ' => Ok(LatinExtendedD::LatinCapitalLetterGWithObliqueStroke),
            'ꞡ' => Ok(LatinExtendedD::LatinSmallLetterGWithObliqueStroke),
            'Ꞣ' => Ok(LatinExtendedD::LatinCapitalLetterKWithObliqueStroke),
            'ꞣ' => Ok(LatinExtendedD::LatinSmallLetterKWithObliqueStroke),
            'Ꞥ' => Ok(LatinExtendedD::LatinCapitalLetterNWithObliqueStroke),
            'ꞥ' => Ok(LatinExtendedD::LatinSmallLetterNWithObliqueStroke),
            'Ꞧ' => Ok(LatinExtendedD::LatinCapitalLetterRWithObliqueStroke),
            'ꞧ' => Ok(LatinExtendedD::LatinSmallLetterRWithObliqueStroke),
            'Ꞩ' => Ok(LatinExtendedD::LatinCapitalLetterSWithObliqueStroke),
            'ꞩ' => Ok(LatinExtendedD::LatinSmallLetterSWithObliqueStroke),
            'Ɦ' => Ok(LatinExtendedD::LatinCapitalLetterHWithHook),
            'Ɜ' => Ok(LatinExtendedD::LatinCapitalLetterReversedOpenE),
            'Ɡ' => Ok(LatinExtendedD::LatinCapitalLetterScriptG),
            'Ɬ' => Ok(LatinExtendedD::LatinCapitalLetterLWithBelt),
            'Ɪ' => Ok(LatinExtendedD::LatinCapitalLetterSmallCapitalI),
            'ꞯ' => Ok(LatinExtendedD::LatinLetterSmallCapitalQ),
            'Ʞ' => Ok(LatinExtendedD::LatinCapitalLetterTurnedK),
            'Ʇ' => Ok(LatinExtendedD::LatinCapitalLetterTurnedT),
            'Ʝ' => Ok(LatinExtendedD::LatinCapitalLetterJWithCrossedDashTail),
            'Ꭓ' => Ok(LatinExtendedD::LatinCapitalLetterChi),
            'Ꞵ' => Ok(LatinExtendedD::LatinCapitalLetterBeta),
            'ꞵ' => Ok(LatinExtendedD::LatinSmallLetterBeta),
            'Ꞷ' => Ok(LatinExtendedD::LatinCapitalLetterOmega),
            'ꞷ' => Ok(LatinExtendedD::LatinSmallLetterOmega),
            'Ꞹ' => Ok(LatinExtendedD::LatinCapitalLetterUWithStroke),
            'ꞹ' => Ok(LatinExtendedD::LatinSmallLetterUWithStroke),
            'Ꞻ' => Ok(LatinExtendedD::LatinCapitalLetterGlottalA),
            'ꞻ' => Ok(LatinExtendedD::LatinSmallLetterGlottalA),
            'Ꞽ' => Ok(LatinExtendedD::LatinCapitalLetterGlottalI),
            'ꞽ' => Ok(LatinExtendedD::LatinSmallLetterGlottalI),
            'Ꞿ' => Ok(LatinExtendedD::LatinCapitalLetterGlottalU),
            'ꞿ' => Ok(LatinExtendedD::LatinSmallLetterGlottalU),
            'Ꟃ' => Ok(LatinExtendedD::LatinCapitalLetterAnglicanaW),
            'ꟃ' => Ok(LatinExtendedD::LatinSmallLetterAnglicanaW),
            'Ꞔ' => Ok(LatinExtendedD::LatinCapitalLetterCWithPalatalHook),
            'Ʂ' => Ok(LatinExtendedD::LatinCapitalLetterSWithHook),
            'Ᶎ' => Ok(LatinExtendedD::LatinCapitalLetterZWithPalatalHook),
            'ꟷ' => Ok(LatinExtendedD::LatinEpigraphicLetterSidewaysI),
            'ꟸ' => Ok(LatinExtendedD::ModifierLetterCapitalHWithStroke),
            'ꟹ' => Ok(LatinExtendedD::ModifierLetterSmallLigatureOe),
            'ꟺ' => Ok(LatinExtendedD::LatinLetterSmallCapitalTurnedM),
            'ꟻ' => Ok(LatinExtendedD::LatinEpigraphicLetterReversedF),
            'ꟼ' => Ok(LatinExtendedD::LatinEpigraphicLetterReversedP),
            'ꟽ' => Ok(LatinExtendedD::LatinEpigraphicLetterInvertedM),
            'ꟾ' => Ok(LatinExtendedD::LatinEpigraphicLetterILonga),
            _ => Err(()),
        }
    }
}

impl Into<u32> for LatinExtendedD {
    fn into(self) -> u32 {
        let c: char = self.into();
        let hex = c
            .escape_unicode()
            .to_string()
            .replace("\\u{", "")
            .replace("}", "");
        u32::from_str_radix(&hex, 16).unwrap()
    }
}

impl std::convert::TryFrom<u32> for LatinExtendedD {
    type Error = ();
    fn try_from(u: u32) -> Result<Self, Self::Error> {
        if let Ok(c) = char::try_from(u) {
            Self::try_from(c)
        } else {
            Err(())
        }
    }
}

impl Iterator for LatinExtendedD {
    type Item = Self;
    fn next(&mut self) -> Option<Self> {
        let index: u32 = (*self).into();
        use std::convert::TryFrom;
        Self::try_from(index + 1).ok()
    }
}

impl LatinExtendedD {
    /// The character with the lowest index in this unicode block
    pub fn new() -> Self {
        LatinExtendedD::ModifierLetterStressAndHighTone
    }

    /// The character's name, in sentence case
    pub fn name(&self) -> String {
        let s = std::format!("LatinExtendedD{:#?}", self);
        string_morph::to_sentence_case(&s)
    }
}