commit 25fff682b24f89f269508fa5def01fe090bd4b0f Author: Thibaut Cuvelier <tcuvel...@lyx.org> Date: Mon Mar 24 02:07:27 2025 +0100
Unicode alphanum variants: change the hexadecimal representation of characters. The previous one generated errors such as: ``` XML Parsing Error: not well-formed Location: file:///D:/LyX/lyx-unstable/lib/doc/Math.xhtml Line Number 6053, Column 11: <mi>�x1d73d;</mi> ----------^ ``` Also, fix errors when handling capital letters. These letters were missing, as they used the lower-case Unicode code point. --- .../tools/generate_unicode_alphanum_variants.py | 23 ++-- lib/unicode_alphanum_variants | 129 ++++++++------------- 2 files changed, 59 insertions(+), 93 deletions(-) diff --git a/development/tools/generate_unicode_alphanum_variants.py b/development/tools/generate_unicode_alphanum_variants.py index 7019d3b7aa..a3fbcff12c 100644 --- a/development/tools/generate_unicode_alphanum_variants.py +++ b/development/tools/generate_unicode_alphanum_variants.py @@ -121,7 +121,7 @@ def lookup_with_exceptions(char_name: str) -> str: def format_variants(variants: List[str]) -> str: - return ' '.join([hex(ord(v)) if v != '' else '""' for v in variants]) + return ' '.join([hex(ord(v))[1:] if v != '' else '""' for v in variants]) print("# Lower-case Latin letters") @@ -137,7 +137,7 @@ for letter_index in range(26): print("# Upper-case Latin letters") for letter_index in range(26): - letter = chr(ord('a') + letter_index) # 'a' to 'z' + 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] @@ -160,29 +160,24 @@ for letter_index in range(25): if DEBUG: print(variants) else: - print(f'{hex(ord(letter))} {format_variants(variants)}') + print(f'{hex(ord(letter))[1:]} {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). - + # Skip 'finalsigma'. + if letter_index == 17: + continue # '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() + letter = chr(913 + letter_index) # 'alpha' to 'omega' (without 'final sigma'). - if letter_name == 'final sigma': - continue + letter_name = unicodedata.name(letter).lower().replace('greek capital letter', '').strip() 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(f'{hex(ord(letter))[1:]} {format_variants(variants)}') print("# Numbers") for number_index in range(10): diff --git a/lib/unicode_alphanum_variants b/lib/unicode_alphanum_variants index ccd1c18330..0a980909cb 100644 --- a/lib/unicode_alphanum_variants +++ b/lib/unicode_alphanum_variants @@ -1,32 +1,3 @@ -# 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 x1d41a x1d44e x1d482 x1d4b6 x1d4ea x1d51e x1d586 x1d552 x1d5ba x1d5ee x1d622 x1d656 x1d68a b x1d41b x1d44f x1d483 x1d4b7 x1d4eb x1d51f x1d587 x1d553 x1d5bb x1d5ef x1d623 x1d657 x1d68b @@ -55,32 +26,32 @@ x x1d431 x1d465 x1d499 x1d4cd x1d501 x1d535 x1d59d x1d569 x1d5d1 x1d605 x1d639 x y x1d432 x1d466 x1d49a x1d4ce x1d502 x1d536 x1d59e x1d56a x1d5d2 x1d606 x1d63a x1d66e x1d6a2 z x1d433 x1d467 x1d49b x1d4cf x1d503 x1d537 x1d59f x1d56b x1d5d3 x1d607 x1d63b x1d66f x1d6a3 # Upper-case Latin letters -a x1d400 x1d434 x1d468 x1d49c x1d4d0 x1d504 x1d56c x1d538 x1d5a0 x1d5d4 x1d608 x1d63c x1d670 -b x1d401 x1d435 x1d469 x212c x1d4d1 x1d505 x1d56d x1d539 x1d5a1 x1d5d5 x1d609 x1d63d x1d671 -c x1d402 x1d436 x1d46a x1d49e x1d4d2 x212d x1d56e x2102 x1d5a2 x1d5d6 x1d60a x1d63e x1d672 -d x1d403 x1d437 x1d46b x1d49f x1d4d3 x1d507 x1d56f x1d53b x1d5a3 x1d5d7 x1d60b x1d63f x1d673 -e x1d404 x1d438 x1d46c x2130 x1d4d4 x1d508 x1d570 x1d53c x1d5a4 x1d5d8 x1d60c x1d640 x1d674 -f x1d405 x1d439 x1d46d x2131 x1d4d5 x1d509 x1d571 x1d53d x1d5a5 x1d5d9 x1d60d x1d641 x1d675 -g x1d406 x1d43a x1d46e x1d4a2 x1d4d6 x1d50a x1d572 x1d53e x1d5a6 x1d5da x1d60e x1d642 x1d676 -h x1d407 x1d43b x1d46f x210b x1d4d7 x210c x1d573 x210d x1d5a7 x1d5db x1d60f x1d643 x1d677 -i x1d408 x1d43c x1d470 x2110 x1d4d8 x2111 x1d574 x1d540 x1d5a8 x1d5dc x1d610 x1d644 x1d678 -j x1d409 x1d43d x1d471 x1d4a5 x1d4d9 x1d50d x1d575 x1d541 x1d5a9 x1d5dd x1d611 x1d645 x1d679 -k x1d40a x1d43e x1d472 x1d4a6 x1d4da x1d50e x1d576 x1d542 x1d5aa x1d5de x1d612 x1d646 x1d67a -l x1d40b x1d43f x1d473 x2112 x1d4db x1d50f x1d577 x1d543 x1d5ab x1d5df x1d613 x1d647 x1d67b -m x1d40c x1d440 x1d474 x2133 x1d4dc x1d510 x1d578 x1d544 x1d5ac x1d5e0 x1d614 x1d648 x1d67c -n x1d40d x1d441 x1d475 x1d4a9 x1d4dd x1d511 x1d579 x2115 x1d5ad x1d5e1 x1d615 x1d649 x1d67d -o x1d40e x1d442 x1d476 x1d4aa x1d4de x1d512 x1d57a x1d546 x1d5ae x1d5e2 x1d616 x1d64a x1d67e -p x1d40f x1d443 x1d477 x1d4ab x1d4df x1d513 x1d57b x2119 x1d5af x1d5e3 x1d617 x1d64b x1d67f -q x1d410 x1d444 x1d478 x1d4ac x1d4e0 x1d514 x1d57c x211a x1d5b0 x1d5e4 x1d618 x1d64c x1d680 -r x1d411 x1d445 x1d479 x211b x1d4e1 x211c x1d57d x211d x1d5b1 x1d5e5 x1d619 x1d64d x1d681 -s x1d412 x1d446 x1d47a x1d4ae x1d4e2 x1d516 x1d57e x1d54a x1d5b2 x1d5e6 x1d61a x1d64e x1d682 -t x1d413 x1d447 x1d47b x1d4af x1d4e3 x1d517 x1d57f x1d54b x1d5b3 x1d5e7 x1d61b x1d64f x1d683 -u x1d414 x1d448 x1d47c x1d4b0 x1d4e4 x1d518 x1d580 x1d54c x1d5b4 x1d5e8 x1d61c x1d650 x1d684 -v x1d415 x1d449 x1d47d x1d4b1 x1d4e5 x1d519 x1d581 x1d54d x1d5b5 x1d5e9 x1d61d x1d651 x1d685 -w x1d416 x1d44a x1d47e x1d4b2 x1d4e6 x1d51a x1d582 x1d54e x1d5b6 x1d5ea x1d61e x1d652 x1d686 -x x1d417 x1d44b x1d47f x1d4b3 x1d4e7 x1d51b x1d583 x1d54f x1d5b7 x1d5eb x1d61f x1d653 x1d687 -y x1d418 x1d44c x1d480 x1d4b4 x1d4e8 x1d51c x1d584 x1d550 x1d5b8 x1d5ec x1d620 x1d654 x1d688 -z x1d419 x1d44d x1d481 x1d4b5 x1d4e9 x2128 x1d585 x2124 x1d5b9 x1d5ed x1d621 x1d655 x1d689 +A x1d400 x1d434 x1d468 x1d49c x1d4d0 x1d504 x1d56c x1d538 x1d5a0 x1d5d4 x1d608 x1d63c x1d670 +B x1d401 x1d435 x1d469 x212c x1d4d1 x1d505 x1d56d x1d539 x1d5a1 x1d5d5 x1d609 x1d63d x1d671 +C x1d402 x1d436 x1d46a x1d49e x1d4d2 x212d x1d56e x2102 x1d5a2 x1d5d6 x1d60a x1d63e x1d672 +D x1d403 x1d437 x1d46b x1d49f x1d4d3 x1d507 x1d56f x1d53b x1d5a3 x1d5d7 x1d60b x1d63f x1d673 +E x1d404 x1d438 x1d46c x2130 x1d4d4 x1d508 x1d570 x1d53c x1d5a4 x1d5d8 x1d60c x1d640 x1d674 +F x1d405 x1d439 x1d46d x2131 x1d4d5 x1d509 x1d571 x1d53d x1d5a5 x1d5d9 x1d60d x1d641 x1d675 +G x1d406 x1d43a x1d46e x1d4a2 x1d4d6 x1d50a x1d572 x1d53e x1d5a6 x1d5da x1d60e x1d642 x1d676 +H x1d407 x1d43b x1d46f x210b x1d4d7 x210c x1d573 x210d x1d5a7 x1d5db x1d60f x1d643 x1d677 +I x1d408 x1d43c x1d470 x2110 x1d4d8 x2111 x1d574 x1d540 x1d5a8 x1d5dc x1d610 x1d644 x1d678 +J x1d409 x1d43d x1d471 x1d4a5 x1d4d9 x1d50d x1d575 x1d541 x1d5a9 x1d5dd x1d611 x1d645 x1d679 +K x1d40a x1d43e x1d472 x1d4a6 x1d4da x1d50e x1d576 x1d542 x1d5aa x1d5de x1d612 x1d646 x1d67a +L x1d40b x1d43f x1d473 x2112 x1d4db x1d50f x1d577 x1d543 x1d5ab x1d5df x1d613 x1d647 x1d67b +M x1d40c x1d440 x1d474 x2133 x1d4dc x1d510 x1d578 x1d544 x1d5ac x1d5e0 x1d614 x1d648 x1d67c +N x1d40d x1d441 x1d475 x1d4a9 x1d4dd x1d511 x1d579 x2115 x1d5ad x1d5e1 x1d615 x1d649 x1d67d +O x1d40e x1d442 x1d476 x1d4aa x1d4de x1d512 x1d57a x1d546 x1d5ae x1d5e2 x1d616 x1d64a x1d67e +P x1d40f x1d443 x1d477 x1d4ab x1d4df x1d513 x1d57b x2119 x1d5af x1d5e3 x1d617 x1d64b x1d67f +Q x1d410 x1d444 x1d478 x1d4ac x1d4e0 x1d514 x1d57c x211a x1d5b0 x1d5e4 x1d618 x1d64c x1d680 +R x1d411 x1d445 x1d479 x211b x1d4e1 x211c x1d57d x211d x1d5b1 x1d5e5 x1d619 x1d64d x1d681 +S x1d412 x1d446 x1d47a x1d4ae x1d4e2 x1d516 x1d57e x1d54a x1d5b2 x1d5e6 x1d61a x1d64e x1d682 +T x1d413 x1d447 x1d47b x1d4af x1d4e3 x1d517 x1d57f x1d54b x1d5b3 x1d5e7 x1d61b x1d64f x1d683 +U x1d414 x1d448 x1d47c x1d4b0 x1d4e4 x1d518 x1d580 x1d54c x1d5b4 x1d5e8 x1d61c x1d650 x1d684 +V x1d415 x1d449 x1d47d x1d4b1 x1d4e5 x1d519 x1d581 x1d54d x1d5b5 x1d5e9 x1d61d x1d651 x1d685 +W x1d416 x1d44a x1d47e x1d4b2 x1d4e6 x1d51a x1d582 x1d54e x1d5b6 x1d5ea x1d61e x1d652 x1d686 +X x1d417 x1d44b x1d47f x1d4b3 x1d4e7 x1d51b x1d583 x1d54f x1d5b7 x1d5eb x1d61f x1d653 x1d687 +Y x1d418 x1d44c x1d480 x1d4b4 x1d4e8 x1d51c x1d584 x1d550 x1d5b8 x1d5ec x1d620 x1d654 x1d688 +Z x1d419 x1d44d x1d481 x1d4b5 x1d4e9 x2128 x1d585 x2124 x1d5b9 x1d5ed x1d621 x1d655 x1d689 # Lower-case Greek letters x3b1 x1d6c2 x1d6fc x1d736 "" "" "" "" "" "" x1d770 "" x1d7aa "" x3b2 x1d6c3 x1d6fd x1d737 "" "" "" "" "" "" x1d771 "" x1d7ab "" @@ -108,30 +79,30 @@ x3c7 x1d6d8 x1d712 x1d74c "" "" "" "" "" "" x1d786 "" x1d7c0 "" x3c8 x1d6d9 x1d713 x1d74d "" "" "" "" "" "" x1d787 "" x1d7c1 "" x3c9 x1d6da x1d714 x1d74e "" "" "" "" "" "" x1d788 "" x1d7c2 "" # Upper-case Greek letters -x3b1 x1d6a8 x1d6e2 x1d71c "" "" "" "" "" "" x1d756 "" x1d790 "" -x3b2 x1d6a9 x1d6e3 x1d71d "" "" "" "" "" "" x1d757 "" x1d791 "" -x3b3 x1d6aa x1d6e4 x1d71e "" "" "" "" "" "" x1d758 "" x1d792 "" -x3b4 x1d6ab x1d6e5 x1d71f "" "" "" "" "" "" x1d759 "" x1d793 "" -x3b5 x1d6ac x1d6e6 x1d720 "" "" "" "" "" "" x1d75a "" x1d794 "" -x3b6 x1d6ad x1d6e7 x1d721 "" "" "" "" "" "" x1d75b "" x1d795 "" -x3b7 x1d6ae x1d6e8 x1d722 "" "" "" "" "" "" x1d75c "" x1d796 "" -x3b8 x1d6af x1d6e9 x1d723 "" "" "" "" "" "" x1d75d "" x1d797 "" -x3b9 x1d6b0 x1d6ea x1d724 "" "" "" "" "" "" x1d75e "" x1d798 "" -x3ba x1d6b1 x1d6eb x1d725 "" "" "" "" "" "" x1d75f "" x1d799 "" -x3bb x1d6b2 x1d6ec x1d726 "" "" "" "" "" "" x1d760 "" x1d79a "" -x3bc x1d6b3 x1d6ed x1d727 "" "" "" "" "" "" x1d761 "" x1d79b "" -x3bd x1d6b4 x1d6ee x1d728 "" "" "" "" "" "" x1d762 "" x1d79c "" -x3be x1d6b5 x1d6ef x1d729 "" "" "" "" "" "" x1d763 "" x1d79d "" -x3bf x1d6b6 x1d6f0 x1d72a "" "" "" "" "" "" x1d764 "" x1d79e "" -x3c0 x1d6b7 x1d6f1 x1d72b "" "" "" "" "" "" x1d765 "" x1d79f "" -x3c1 x1d6b8 x1d6f2 x1d72c "" "" "" "" "" "" x1d766 "" x1d7a0 "" -x3c3 x1d6ba x1d6f4 x1d72e "" "" "" "" "" "" x1d768 "" x1d7a2 "" -x3c4 x1d6bb x1d6f5 x1d72f "" "" "" "" "" "" x1d769 "" x1d7a3 "" -x3c5 x1d6bc x1d6f6 x1d730 "" "" "" "" "" "" x1d76a "" x1d7a4 "" -x3c6 x1d6bd x1d6f7 x1d731 "" "" "" "" "" "" x1d76b "" x1d7a5 "" -x3c7 x1d6be x1d6f8 x1d732 "" "" "" "" "" "" x1d76c "" x1d7a6 "" -x3c8 x1d6bf x1d6f9 x1d733 "" "" "" "" "" "" x1d76d "" x1d7a7 "" -x3c9 x1d6c0 x1d6fa x1d734 "" "" "" "" "" "" x1d76e "" x1d7a8 "" +x391 x1d6a8 x1d6e2 x1d71c "" "" "" "" "" "" x1d756 "" x1d790 "" +x392 x1d6a9 x1d6e3 x1d71d "" "" "" "" "" "" x1d757 "" x1d791 "" +x393 x1d6aa x1d6e4 x1d71e "" "" "" "" "" "" x1d758 "" x1d792 "" +x394 x1d6ab x1d6e5 x1d71f "" "" "" "" "" "" x1d759 "" x1d793 "" +x395 x1d6ac x1d6e6 x1d720 "" "" "" "" "" "" x1d75a "" x1d794 "" +x396 x1d6ad x1d6e7 x1d721 "" "" "" "" "" "" x1d75b "" x1d795 "" +x397 x1d6ae x1d6e8 x1d722 "" "" "" "" "" "" x1d75c "" x1d796 "" +x398 x1d6af x1d6e9 x1d723 "" "" "" "" "" "" x1d75d "" x1d797 "" +x399 x1d6b0 x1d6ea x1d724 "" "" "" "" "" "" x1d75e "" x1d798 "" +x39a x1d6b1 x1d6eb x1d725 "" "" "" "" "" "" x1d75f "" x1d799 "" +x39b x1d6b2 x1d6ec x1d726 "" "" "" "" "" "" x1d760 "" x1d79a "" +x39c x1d6b3 x1d6ed x1d727 "" "" "" "" "" "" x1d761 "" x1d79b "" +x39d x1d6b4 x1d6ee x1d728 "" "" "" "" "" "" x1d762 "" x1d79c "" +x39e x1d6b5 x1d6ef x1d729 "" "" "" "" "" "" x1d763 "" x1d79d "" +x39f x1d6b6 x1d6f0 x1d72a "" "" "" "" "" "" x1d764 "" x1d79e "" +x3a0 x1d6b7 x1d6f1 x1d72b "" "" "" "" "" "" x1d765 "" x1d79f "" +x3a1 x1d6b8 x1d6f2 x1d72c "" "" "" "" "" "" x1d766 "" x1d7a0 "" +x3a3 x1d6ba x1d6f4 x1d72e "" "" "" "" "" "" x1d768 "" x1d7a2 "" +x3a4 x1d6bb x1d6f5 x1d72f "" "" "" "" "" "" x1d769 "" x1d7a3 "" +x3a5 x1d6bc x1d6f6 x1d730 "" "" "" "" "" "" x1d76a "" x1d7a4 "" +x3a6 x1d6bd x1d6f7 x1d731 "" "" "" "" "" "" x1d76b "" x1d7a5 "" +x3a7 x1d6be x1d6f8 x1d732 "" "" "" "" "" "" x1d76c "" x1d7a6 "" +x3a8 x1d6bf x1d6f9 x1d733 "" "" "" "" "" "" x1d76d "" x1d7a7 "" +x3a9 x1d6c0 x1d6fa x1d734 "" "" "" "" "" "" x1d76e "" x1d7a8 "" # Numbers 0 x1d7ce "" "" "" "" "" "" x1d7d8 "" x1d7e2 x1d7ec "" x1d7f6 1 x1d7cf "" "" "" "" "" "" x1d7d9 "" x1d7e3 x1d7ed "" x1d7f7 -- lyx-cvs mailing list lyx-cvs@lists.lyx.org https://lists.lyx.org/mailman/listinfo/lyx-cvs