commit a8f93f2df2df70e9d19a962b40aeb481205989d7
Author: Thibaut Cuvelier <tcuvel...@lyx.org>
Date:   Wed Oct 30 04:26:08 2024 +0100

    Generate a list of Unicode alphanum characters and their font variants for 
use in MathML Core.
---
 .../tools/generate_unicode_alphanum_variants.py    | 199 +++++++++++++++++++++
 lib/unicode_alphanum_variants                      | 145 +++++++++++++++
 2 files changed, 344 insertions(+)

diff --git a/development/tools/generate_unicode_alphanum_variants.py 
b/development/tools/generate_unicode_alphanum_variants.py
new file mode 100644
index 0000000000..7019d3b7aa
--- /dev/null
+++ b/development/tools/generate_unicode_alphanum_variants.py
@@ -0,0 +1,199 @@
+"""Script used to generate unicode_alphanum_variants."""
+
+import unicodedata
+from typing import List
+
+
+# If True, prints the actual characters to the terminal (which thus requires
+# support for Unicode and an appropriate font). Otherwise, prints the value
+# that LyX can consume (hexadecimal codepoints).
+DEBUG = False
+
+
+def get_lower_latin_letter_variant_names(character_name: str) -> List[str]:
+    return [f'mathematical bold small {character_name}',
+            f'mathematical italic small {character_name}',
+            f'mathematical bold italic small {character_name}',
+            f'mathematical script small {character_name}',
+            f'mathematical bold script small {character_name}',
+            f'mathematical fraktur small {character_name}',
+            f'mathematical bold fraktur small {character_name}',
+            f'mathematical double-struck small {character_name}',
+            f'mathematical sans-serif small {character_name}',
+            f'mathematical sans-serif bold small {character_name}',
+            f'mathematical sans-serif italic small {character_name}',
+            f'mathematical sans-serif bold italic small {character_name}',
+            f'mathematical monospace small {character_name}']
+
+
+def get_upper_latin_letter_variant_names(character_name: str) -> List[str]:
+    return [n.replace('small', 'capital') for n in 
get_lower_latin_letter_variant_names(character_name)]
+
+
+def get_lower_greek_letter_variant_names(character_name: str) -> List[str]:
+    return [f'mathematical bold small {character_name}',
+            f'mathematical italic small {character_name}',
+            f'mathematical bold italic small {character_name}',
+            '',  # No script.
+            '',  # No bold script.
+            '',  # No fraktur.
+            '',  # No bold fraktur.
+            '',  # No double-struck.
+            '',  # No sans-serif.
+            f'mathematical sans-serif bold small {character_name}',
+            '',  # No sans-serif italic.
+            f'mathematical sans-serif bold italic small {character_name}',
+            ''  # No monospace.
+            ]
+
+
+def get_upper_greek_letter_variant_names(character_name: str) -> List[str]:
+    return [n.replace('small', 'capital') for n in 
get_lower_greek_letter_variant_names(character_name)]
+
+
+def get_number_variant_names(character_name: str) -> List[str]:
+    return [f'mathematical bold digit {character_name}',
+            '',  # No italic.
+            '',  # No bold italic.
+            '',  # No script.
+            '',  # No bold script.
+            '',  # No fraktur.
+            '',  # No bold fraktur.
+            f'mathematical double-struck digit {character_name}',
+            '',  # No sans-serif.
+            f'mathematical sans-serif digit {character_name}',
+            f'mathematical sans-serif bold digit {character_name}',
+            '',  # No sans-serif italic.
+            f'mathematical monospace digit {character_name}']
+
+
+# This table comes from https://en.wikipedia.org/wiki/Letterlike_Symbols.
+EXCEPTIONS_MAPPING = {
+    # get_lower_latin_letter_variant_names
+    'mathematical script small e': '212F',
+    'mathematical script small g': '210A',
+    'mathematical italic small h': '210E',
+    'mathematical script small o': '2134',
+    # get_upper_latin_letter_variant_names
+    'mathematical script capital b': '212C',
+    'mathematical fraktur capital c': '212D',
+    'mathematical double-struck capital c': '2102',
+    'mathematical script capital e': '2130',
+    'mathematical script capital f': '2131',
+    'mathematical script capital h': '210B',
+    'mathematical fraktur capital h': '210C',
+    'mathematical double-struck capital h': '210D',
+    'mathematical script capital i': '2110',
+    'mathematical fraktur capital i': '2111',
+    'mathematical script capital l': '2112',
+    'mathematical script capital m': '2133',
+    'mathematical double-struck capital n': '2115',
+    'mathematical double-struck capital p': '2119',
+    'mathematical double-struck capital q': '211A',
+    'mathematical script capital r': '211B',
+    'mathematical fraktur capital r': '211C',
+    'mathematical double-struck capital r': '211D',
+    'mathematical fraktur capital z': '2128',
+    'mathematical double-struck capital z': '2124'
+    # No other exception.
+}
+
+
+def lookup_with_exceptions(char_name: str) -> str:
+    # Maybe the character isn't supposed to exist.
+    if not char_name:
+        return ''
+
+    # Some characters don't exist in the usual, recent mathematical block, but
+    # existed in Unicode 1.x in the Letterlike Symbols block.
+    # Usual mapping: drop 'mathematical', replace 'fraktur' by 'black-letter'.
+    try:
+        return unicodedata.lookup(char_name)
+    except KeyError as e:
+        char_name = char_name.lower()
+        if char_name in EXCEPTIONS_MAPPING:
+            return chr(int(EXCEPTIONS_MAPPING[char_name], 16))
+
+        if DEBUG:
+            print(char_name)
+        else:
+            raise e
+
+
+def format_variants(variants: List[str]) -> str:
+    return ' '.join([hex(ord(v)) if v != '' else '""' for v in variants])
+
+
+print("# Lower-case Latin letters")
+for letter_index in range(26):
+    letter = chr(ord('a') + letter_index)  # 'a' to 'z'
+    variant_names = get_lower_latin_letter_variant_names(letter)
+    variants = [lookup_with_exceptions(char_name) for char_name in 
variant_names]
+
+    if DEBUG:
+        print(variants)
+    else:
+        print(f'{letter} {format_variants(variants)}')
+
+print("# Upper-case Latin letters")
+for letter_index in range(26):
+    letter = chr(ord('a') + letter_index)  # 'a' to 'z'
+    variant_names = get_upper_latin_letter_variant_names(letter)
+    variants = [lookup_with_exceptions(char_name) for char_name in 
variant_names]
+
+    if DEBUG:
+        print(variants)
+    else:
+        print(f'{letter} {format_variants(variants)}')
+
+# The Unicode Greek alphabet has 25 lower-case letters due to two sigmas
+# (middle or final).
+print("# Lower-case Greek letters")
+for letter_index in range(25):
+    # 'alpha' to 'omega', the actual character.
+    letter = chr(945 + letter_index)
+    # 'alpha' to 'omega' (including 'sigma' and 'final sigma').
+    letter_name = unicodedata.name(letter).lower().replace('greek small 
letter', '').strip()
+    variant_names = get_lower_greek_letter_variant_names(letter_name)
+    variants = [lookup_with_exceptions(char_name) for char_name in 
variant_names]
+
+    if DEBUG:
+        print(variants)
+    else:
+        print(f'{hex(ord(letter))} {format_variants(variants)}')
+
+print("# Upper-case Greek letters")
+for letter_index in range(25):
+    # For upper-case Greek letters, we need to filter out 'final sigma'.
+    # It's not sufficient to iterate over the upper-case Greek letters
+    # (with ALPHA being 913): there is a gap between RHO and SIGMA for, well,
+    # FINAL SIGMA (which, for obvious reasons, does not exist).
+
+    # 'alpha' to 'omega', the actual character.
+    letter = chr(945 + letter_index)
+    # 'alpha' to 'omega' (still a 'final sigma').
+    letter_name = unicodedata.name(letter).lower().replace('greek small 
letter', '').strip()
+    # 'alpha' to 'omega' (without 'final sigma').
+    if letter_name == 'final sigma':
+        continue
+    variant_names = get_upper_greek_letter_variant_names(letter_name)
+    variants = [lookup_with_exceptions(char_name) for char_name in 
variant_names]
+
+    if DEBUG:
+        print(variants)
+    else:
+        print(f'{hex(ord(letter))} {format_variants(variants)}')
+
+print("# Numbers")
+for number_index in range(10):
+    # '0' to '9', the actual character.
+    number = chr(ord('0') + number_index)
+    # 'zero' to 'nine'.
+    number_name = unicodedata.name(number).lower().replace('digit', '').strip()
+    variant_names = get_number_variant_names(number_name)
+    variants = [lookup_with_exceptions(char_name) for char_name in 
variant_names]
+
+    if DEBUG:
+        print(variants)
+    else:
+        print(f'{number} {format_variants(variants)}')
diff --git a/lib/unicode_alphanum_variants b/lib/unicode_alphanum_variants
new file mode 100644
index 0000000000..1ad7997cea
--- /dev/null
+++ b/lib/unicode_alphanum_variants
@@ -0,0 +1,145 @@
+# file unicode_letter_variants
+# This file is part of LyX, the document processor.
+# Licence details can be found in the file COPYING.
+
+# Full author contact details are available in file CREDITS.
+
+# This file is a database of Unicode variants for Unicode letters and digits.
+# They are used to map a letter to its variants in various fonts.
+# Characters are given by their UCS4 codepoint instead of a character (unless
+# the character is ASCII).
+# Empty mappings (if a character does not exist in a given font) are given by
+# empty quotation marks: "".
+
+# Syntax: each line corresponds to one character. Columns:
+# - Base character.
+# - Bold.
+# - Italic.
+# - Bold italic.
+# - Script.
+# - Bold script.
+# - Fraktur.
+# - Bold fraktur.
+# - Double-struck.
+# - Sans-serif.
+# - Bold sans-serif.
+# - Italic sans-serif.
+# - Bold italic sans-serif.
+# - Monospace.
+
+# Lower-case Latin letters
+a 0x1d41a 0x1d44e 0x1d482 0x1d4b6 0x1d4ea 0x1d51e 0x1d586 0x1d552 0x1d5ba 
0x1d5ee 0x1d622 0x1d656 0x1d68a
+b 0x1d41b 0x1d44f 0x1d483 0x1d4b7 0x1d4eb 0x1d51f 0x1d587 0x1d553 0x1d5bb 
0x1d5ef 0x1d623 0x1d657 0x1d68b
+c 0x1d41c 0x1d450 0x1d484 0x1d4b8 0x1d4ec 0x1d520 0x1d588 0x1d554 0x1d5bc 
0x1d5f0 0x1d624 0x1d658 0x1d68c
+d 0x1d41d 0x1d451 0x1d485 0x1d4b9 0x1d4ed 0x1d521 0x1d589 0x1d555 0x1d5bd 
0x1d5f1 0x1d625 0x1d659 0x1d68d
+e 0x1d41e 0x1d452 0x1d486 0x212f 0x1d4ee 0x1d522 0x1d58a 0x1d556 0x1d5be 
0x1d5f2 0x1d626 0x1d65a 0x1d68e
+f 0x1d41f 0x1d453 0x1d487 0x1d4bb 0x1d4ef 0x1d523 0x1d58b 0x1d557 0x1d5bf 
0x1d5f3 0x1d627 0x1d65b 0x1d68f
+g 0x1d420 0x1d454 0x1d488 0x210a 0x1d4f0 0x1d524 0x1d58c 0x1d558 0x1d5c0 
0x1d5f4 0x1d628 0x1d65c 0x1d690
+h 0x1d421 0x210e 0x1d489 0x1d4bd 0x1d4f1 0x1d525 0x1d58d 0x1d559 0x1d5c1 
0x1d5f5 0x1d629 0x1d65d 0x1d691
+i 0x1d422 0x1d456 0x1d48a 0x1d4be 0x1d4f2 0x1d526 0x1d58e 0x1d55a 0x1d5c2 
0x1d5f6 0x1d62a 0x1d65e 0x1d692
+j 0x1d423 0x1d457 0x1d48b 0x1d4bf 0x1d4f3 0x1d527 0x1d58f 0x1d55b 0x1d5c3 
0x1d5f7 0x1d62b 0x1d65f 0x1d693
+k 0x1d424 0x1d458 0x1d48c 0x1d4c0 0x1d4f4 0x1d528 0x1d590 0x1d55c 0x1d5c4 
0x1d5f8 0x1d62c 0x1d660 0x1d694
+l 0x1d425 0x1d459 0x1d48d 0x1d4c1 0x1d4f5 0x1d529 0x1d591 0x1d55d 0x1d5c5 
0x1d5f9 0x1d62d 0x1d661 0x1d695
+m 0x1d426 0x1d45a 0x1d48e 0x1d4c2 0x1d4f6 0x1d52a 0x1d592 0x1d55e 0x1d5c6 
0x1d5fa 0x1d62e 0x1d662 0x1d696
+n 0x1d427 0x1d45b 0x1d48f 0x1d4c3 0x1d4f7 0x1d52b 0x1d593 0x1d55f 0x1d5c7 
0x1d5fb 0x1d62f 0x1d663 0x1d697
+o 0x1d428 0x1d45c 0x1d490 0x2134 0x1d4f8 0x1d52c 0x1d594 0x1d560 0x1d5c8 
0x1d5fc 0x1d630 0x1d664 0x1d698
+p 0x1d429 0x1d45d 0x1d491 0x1d4c5 0x1d4f9 0x1d52d 0x1d595 0x1d561 0x1d5c9 
0x1d5fd 0x1d631 0x1d665 0x1d699
+q 0x1d42a 0x1d45e 0x1d492 0x1d4c6 0x1d4fa 0x1d52e 0x1d596 0x1d562 0x1d5ca 
0x1d5fe 0x1d632 0x1d666 0x1d69a
+r 0x1d42b 0x1d45f 0x1d493 0x1d4c7 0x1d4fb 0x1d52f 0x1d597 0x1d563 0x1d5cb 
0x1d5ff 0x1d633 0x1d667 0x1d69b
+s 0x1d42c 0x1d460 0x1d494 0x1d4c8 0x1d4fc 0x1d530 0x1d598 0x1d564 0x1d5cc 
0x1d600 0x1d634 0x1d668 0x1d69c
+t 0x1d42d 0x1d461 0x1d495 0x1d4c9 0x1d4fd 0x1d531 0x1d599 0x1d565 0x1d5cd 
0x1d601 0x1d635 0x1d669 0x1d69d
+u 0x1d42e 0x1d462 0x1d496 0x1d4ca 0x1d4fe 0x1d532 0x1d59a 0x1d566 0x1d5ce 
0x1d602 0x1d636 0x1d66a 0x1d69e
+v 0x1d42f 0x1d463 0x1d497 0x1d4cb 0x1d4ff 0x1d533 0x1d59b 0x1d567 0x1d5cf 
0x1d603 0x1d637 0x1d66b 0x1d69f
+w 0x1d430 0x1d464 0x1d498 0x1d4cc 0x1d500 0x1d534 0x1d59c 0x1d568 0x1d5d0 
0x1d604 0x1d638 0x1d66c 0x1d6a0
+x 0x1d431 0x1d465 0x1d499 0x1d4cd 0x1d501 0x1d535 0x1d59d 0x1d569 0x1d5d1 
0x1d605 0x1d639 0x1d66d 0x1d6a1
+y 0x1d432 0x1d466 0x1d49a 0x1d4ce 0x1d502 0x1d536 0x1d59e 0x1d56a 0x1d5d2 
0x1d606 0x1d63a 0x1d66e 0x1d6a2
+z 0x1d433 0x1d467 0x1d49b 0x1d4cf 0x1d503 0x1d537 0x1d59f 0x1d56b 0x1d5d3 
0x1d607 0x1d63b 0x1d66f 0x1d6a3
+# Upper-case Latin letters
+a 0x1d400 0x1d434 0x1d468 0x1d49c 0x1d4d0 0x1d504 0x1d56c 0x1d538 0x1d5a0 
0x1d5d4 0x1d608 0x1d63c 0x1d670
+b 0x1d401 0x1d435 0x1d469 0x212c 0x1d4d1 0x1d505 0x1d56d 0x1d539 0x1d5a1 
0x1d5d5 0x1d609 0x1d63d 0x1d671
+c 0x1d402 0x1d436 0x1d46a 0x1d49e 0x1d4d2 0x212d 0x1d56e 0x2102 0x1d5a2 
0x1d5d6 0x1d60a 0x1d63e 0x1d672
+d 0x1d403 0x1d437 0x1d46b 0x1d49f 0x1d4d3 0x1d507 0x1d56f 0x1d53b 0x1d5a3 
0x1d5d7 0x1d60b 0x1d63f 0x1d673
+e 0x1d404 0x1d438 0x1d46c 0x2130 0x1d4d4 0x1d508 0x1d570 0x1d53c 0x1d5a4 
0x1d5d8 0x1d60c 0x1d640 0x1d674
+f 0x1d405 0x1d439 0x1d46d 0x2131 0x1d4d5 0x1d509 0x1d571 0x1d53d 0x1d5a5 
0x1d5d9 0x1d60d 0x1d641 0x1d675
+g 0x1d406 0x1d43a 0x1d46e 0x1d4a2 0x1d4d6 0x1d50a 0x1d572 0x1d53e 0x1d5a6 
0x1d5da 0x1d60e 0x1d642 0x1d676
+h 0x1d407 0x1d43b 0x1d46f 0x210b 0x1d4d7 0x210c 0x1d573 0x210d 0x1d5a7 0x1d5db 
0x1d60f 0x1d643 0x1d677
+i 0x1d408 0x1d43c 0x1d470 0x2110 0x1d4d8 0x2111 0x1d574 0x1d540 0x1d5a8 
0x1d5dc 0x1d610 0x1d644 0x1d678
+j 0x1d409 0x1d43d 0x1d471 0x1d4a5 0x1d4d9 0x1d50d 0x1d575 0x1d541 0x1d5a9 
0x1d5dd 0x1d611 0x1d645 0x1d679
+k 0x1d40a 0x1d43e 0x1d472 0x1d4a6 0x1d4da 0x1d50e 0x1d576 0x1d542 0x1d5aa 
0x1d5de 0x1d612 0x1d646 0x1d67a
+l 0x1d40b 0x1d43f 0x1d473 0x2112 0x1d4db 0x1d50f 0x1d577 0x1d543 0x1d5ab 
0x1d5df 0x1d613 0x1d647 0x1d67b
+m 0x1d40c 0x1d440 0x1d474 0x2133 0x1d4dc 0x1d510 0x1d578 0x1d544 0x1d5ac 
0x1d5e0 0x1d614 0x1d648 0x1d67c
+n 0x1d40d 0x1d441 0x1d475 0x1d4a9 0x1d4dd 0x1d511 0x1d579 0x2115 0x1d5ad 
0x1d5e1 0x1d615 0x1d649 0x1d67d
+o 0x1d40e 0x1d442 0x1d476 0x1d4aa 0x1d4de 0x1d512 0x1d57a 0x1d546 0x1d5ae 
0x1d5e2 0x1d616 0x1d64a 0x1d67e
+p 0x1d40f 0x1d443 0x1d477 0x1d4ab 0x1d4df 0x1d513 0x1d57b 0x2119 0x1d5af 
0x1d5e3 0x1d617 0x1d64b 0x1d67f
+q 0x1d410 0x1d444 0x1d478 0x1d4ac 0x1d4e0 0x1d514 0x1d57c 0x211a 0x1d5b0 
0x1d5e4 0x1d618 0x1d64c 0x1d680
+r 0x1d411 0x1d445 0x1d479 0x211b 0x1d4e1 0x211c 0x1d57d 0x211d 0x1d5b1 0x1d5e5 
0x1d619 0x1d64d 0x1d681
+s 0x1d412 0x1d446 0x1d47a 0x1d4ae 0x1d4e2 0x1d516 0x1d57e 0x1d54a 0x1d5b2 
0x1d5e6 0x1d61a 0x1d64e 0x1d682
+t 0x1d413 0x1d447 0x1d47b 0x1d4af 0x1d4e3 0x1d517 0x1d57f 0x1d54b 0x1d5b3 
0x1d5e7 0x1d61b 0x1d64f 0x1d683
+u 0x1d414 0x1d448 0x1d47c 0x1d4b0 0x1d4e4 0x1d518 0x1d580 0x1d54c 0x1d5b4 
0x1d5e8 0x1d61c 0x1d650 0x1d684
+v 0x1d415 0x1d449 0x1d47d 0x1d4b1 0x1d4e5 0x1d519 0x1d581 0x1d54d 0x1d5b5 
0x1d5e9 0x1d61d 0x1d651 0x1d685
+w 0x1d416 0x1d44a 0x1d47e 0x1d4b2 0x1d4e6 0x1d51a 0x1d582 0x1d54e 0x1d5b6 
0x1d5ea 0x1d61e 0x1d652 0x1d686
+x 0x1d417 0x1d44b 0x1d47f 0x1d4b3 0x1d4e7 0x1d51b 0x1d583 0x1d54f 0x1d5b7 
0x1d5eb 0x1d61f 0x1d653 0x1d687
+y 0x1d418 0x1d44c 0x1d480 0x1d4b4 0x1d4e8 0x1d51c 0x1d584 0x1d550 0x1d5b8 
0x1d5ec 0x1d620 0x1d654 0x1d688
+z 0x1d419 0x1d44d 0x1d481 0x1d4b5 0x1d4e9 0x2128 0x1d585 0x2124 0x1d5b9 
0x1d5ed 0x1d621 0x1d655 0x1d689
+# Lower-case Greek letters
+0x3b1 0x1d6c2 0x1d6fc 0x1d736 "" "" "" "" "" "" 0x1d770 "" 0x1d7aa ""
+0x3b2 0x1d6c3 0x1d6fd 0x1d737 "" "" "" "" "" "" 0x1d771 "" 0x1d7ab ""
+0x3b3 0x1d6c4 0x1d6fe 0x1d738 "" "" "" "" "" "" 0x1d772 "" 0x1d7ac ""
+0x3b4 0x1d6c5 0x1d6ff 0x1d739 "" "" "" "" "" "" 0x1d773 "" 0x1d7ad ""
+0x3b5 0x1d6c6 0x1d700 0x1d73a "" "" "" "" "" "" 0x1d774 "" 0x1d7ae ""
+0x3b6 0x1d6c7 0x1d701 0x1d73b "" "" "" "" "" "" 0x1d775 "" 0x1d7af ""
+0x3b7 0x1d6c8 0x1d702 0x1d73c "" "" "" "" "" "" 0x1d776 "" 0x1d7b0 ""
+0x3b8 0x1d6c9 0x1d703 0x1d73d "" "" "" "" "" "" 0x1d777 "" 0x1d7b1 ""
+0x3b9 0x1d6ca 0x1d704 0x1d73e "" "" "" "" "" "" 0x1d778 "" 0x1d7b2 ""
+0x3ba 0x1d6cb 0x1d705 0x1d73f "" "" "" "" "" "" 0x1d779 "" 0x1d7b3 ""
+0x3bb 0x1d6cc 0x1d706 0x1d740 "" "" "" "" "" "" 0x1d77a "" 0x1d7b4 ""
+0x3bc 0x1d6cd 0x1d707 0x1d741 "" "" "" "" "" "" 0x1d77b "" 0x1d7b5 ""
+0x3bd 0x1d6ce 0x1d708 0x1d742 "" "" "" "" "" "" 0x1d77c "" 0x1d7b6 ""
+0x3be 0x1d6cf 0x1d709 0x1d743 "" "" "" "" "" "" 0x1d77d "" 0x1d7b7 ""
+0x3bf 0x1d6d0 0x1d70a 0x1d744 "" "" "" "" "" "" 0x1d77e "" 0x1d7b8 ""
+0x3c0 0x1d6d1 0x1d70b 0x1d745 "" "" "" "" "" "" 0x1d77f "" 0x1d7b9 ""
+0x3c1 0x1d6d2 0x1d70c 0x1d746 "" "" "" "" "" "" 0x1d780 "" 0x1d7ba ""
+0x3c2 0x1d6d3 0x1d70d 0x1d747 "" "" "" "" "" "" 0x1d781 "" 0x1d7bb ""
+0x3c3 0x1d6d4 0x1d70e 0x1d748 "" "" "" "" "" "" 0x1d782 "" 0x1d7bc ""
+0x3c4 0x1d6d5 0x1d70f 0x1d749 "" "" "" "" "" "" 0x1d783 "" 0x1d7bd ""
+0x3c5 0x1d6d6 0x1d710 0x1d74a "" "" "" "" "" "" 0x1d784 "" 0x1d7be ""
+0x3c6 0x1d6d7 0x1d711 0x1d74b "" "" "" "" "" "" 0x1d785 "" 0x1d7bf ""
+0x3c7 0x1d6d8 0x1d712 0x1d74c "" "" "" "" "" "" 0x1d786 "" 0x1d7c0 ""
+0x3c8 0x1d6d9 0x1d713 0x1d74d "" "" "" "" "" "" 0x1d787 "" 0x1d7c1 ""
+0x3c9 0x1d6da 0x1d714 0x1d74e "" "" "" "" "" "" 0x1d788 "" 0x1d7c2 ""
+# Upper-case Greek letters
+0x3b1 0x1d6a8 0x1d6e2 0x1d71c "" "" "" "" "" "" 0x1d756 "" 0x1d790 ""
+0x3b2 0x1d6a9 0x1d6e3 0x1d71d "" "" "" "" "" "" 0x1d757 "" 0x1d791 ""
+0x3b3 0x1d6aa 0x1d6e4 0x1d71e "" "" "" "" "" "" 0x1d758 "" 0x1d792 ""
+0x3b4 0x1d6ab 0x1d6e5 0x1d71f "" "" "" "" "" "" 0x1d759 "" 0x1d793 ""
+0x3b5 0x1d6ac 0x1d6e6 0x1d720 "" "" "" "" "" "" 0x1d75a "" 0x1d794 ""
+0x3b6 0x1d6ad 0x1d6e7 0x1d721 "" "" "" "" "" "" 0x1d75b "" 0x1d795 ""
+0x3b7 0x1d6ae 0x1d6e8 0x1d722 "" "" "" "" "" "" 0x1d75c "" 0x1d796 ""
+0x3b8 0x1d6af 0x1d6e9 0x1d723 "" "" "" "" "" "" 0x1d75d "" 0x1d797 ""
+0x3b9 0x1d6b0 0x1d6ea 0x1d724 "" "" "" "" "" "" 0x1d75e "" 0x1d798 ""
+0x3ba 0x1d6b1 0x1d6eb 0x1d725 "" "" "" "" "" "" 0x1d75f "" 0x1d799 ""
+0x3bb 0x1d6b2 0x1d6ec 0x1d726 "" "" "" "" "" "" 0x1d760 "" 0x1d79a ""
+0x3bc 0x1d6b3 0x1d6ed 0x1d727 "" "" "" "" "" "" 0x1d761 "" 0x1d79b ""
+0x3bd 0x1d6b4 0x1d6ee 0x1d728 "" "" "" "" "" "" 0x1d762 "" 0x1d79c ""
+0x3be 0x1d6b5 0x1d6ef 0x1d729 "" "" "" "" "" "" 0x1d763 "" 0x1d79d ""
+0x3bf 0x1d6b6 0x1d6f0 0x1d72a "" "" "" "" "" "" 0x1d764 "" 0x1d79e ""
+0x3c0 0x1d6b7 0x1d6f1 0x1d72b "" "" "" "" "" "" 0x1d765 "" 0x1d79f ""
+0x3c1 0x1d6b8 0x1d6f2 0x1d72c "" "" "" "" "" "" 0x1d766 "" 0x1d7a0 ""
+0x3c3 0x1d6ba 0x1d6f4 0x1d72e "" "" "" "" "" "" 0x1d768 "" 0x1d7a2 ""
+0x3c4 0x1d6bb 0x1d6f5 0x1d72f "" "" "" "" "" "" 0x1d769 "" 0x1d7a3 ""
+0x3c5 0x1d6bc 0x1d6f6 0x1d730 "" "" "" "" "" "" 0x1d76a "" 0x1d7a4 ""
+0x3c6 0x1d6bd 0x1d6f7 0x1d731 "" "" "" "" "" "" 0x1d76b "" 0x1d7a5 ""
+0x3c7 0x1d6be 0x1d6f8 0x1d732 "" "" "" "" "" "" 0x1d76c "" 0x1d7a6 ""
+0x3c8 0x1d6bf 0x1d6f9 0x1d733 "" "" "" "" "" "" 0x1d76d "" 0x1d7a7 ""
+0x3c9 0x1d6c0 0x1d6fa 0x1d734 "" "" "" "" "" "" 0x1d76e "" 0x1d7a8 ""
+# Numbers
+0 0x1d7ce "" "" "" "" "" "" 0x1d7d8 "" 0x1d7e2 0x1d7ec "" 0x1d7f6
+1 0x1d7cf "" "" "" "" "" "" 0x1d7d9 "" 0x1d7e3 0x1d7ed "" 0x1d7f7
+2 0x1d7d0 "" "" "" "" "" "" 0x1d7da "" 0x1d7e4 0x1d7ee "" 0x1d7f8
+3 0x1d7d1 "" "" "" "" "" "" 0x1d7db "" 0x1d7e5 0x1d7ef "" 0x1d7f9
+4 0x1d7d2 "" "" "" "" "" "" 0x1d7dc "" 0x1d7e6 0x1d7f0 "" 0x1d7fa
+5 0x1d7d3 "" "" "" "" "" "" 0x1d7dd "" 0x1d7e7 0x1d7f1 "" 0x1d7fb
+6 0x1d7d4 "" "" "" "" "" "" 0x1d7de "" 0x1d7e8 0x1d7f2 "" 0x1d7fc
+7 0x1d7d5 "" "" "" "" "" "" 0x1d7df "" 0x1d7e9 0x1d7f3 "" 0x1d7fd
+8 0x1d7d6 "" "" "" "" "" "" 0x1d7e0 "" 0x1d7ea 0x1d7f4 "" 0x1d7fe
+9 0x1d7d7 "" "" "" "" "" "" 0x1d7e1 "" 0x1d7eb 0x1d7f5 "" 0x1d7ff
\ No newline at end of file
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
https://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to